From 30a1af9fe5f6e90a58f481a7f55b0559b357080d Mon Sep 17 00:00:00 2001 From: Cory Hall <43035978+corymhall@users.noreply.github.com> Date: Sun, 5 May 2024 20:13:44 -0400 Subject: [PATCH] chore(deps): upgrade dependencies (#59) Upgrades project dependencies. See details in [workflow run]. [Workflow Run]: https://github.com/corymhall/cdk-diff-action/actions/runs/8962113004 ------ *Automatically created by projen via the "upgrade-main" workflow* --------- Signed-off-by: github-actions Co-authored-by: github-actions --- db.json.gz | Bin 1733987 -> 1752821 bytes dist/index.js | 721 ++++++++++++++++++++++++++++++++++++---------- dist/index.js.map | 2 +- package.json | 12 +- yarn.lock | 705 +++++++++++++++++++++++---------------------- 5 files changed, 927 insertions(+), 513 deletions(-) diff --git a/db.json.gz b/db.json.gz index 5d94e9aa713c5dea02931f7f37503009fdb8b850..0485340232c55f619b0cb535caacc1de6137f1c7 100644 GIT binary patch delta 1742560 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

AD@kgeP=&U+ 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

OdRPgcaFfch;fe?~2 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

CCBaS2e3v9&lUe>==BYnQ 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

B~lXDVltIIVbR8_sG2wXBF7+QS4s;T{l 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 z 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%0ALv_^Z) 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 z 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�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πws(so=84$FRKyz8 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%0DXP##Lx$?m8J<>zSUE;qzAzu8<;>;v%kmG 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�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

$_fL5pPUv^hH3+S#q#-X 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

&|%#?3FZndfg7%ehC`*;@<^zp_zIO`@k~}} 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

a;?)EINfCc@Z+I3y!-Q&Enq_CM$Y&6L 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%0Au7czkPlnQWP5c97oE1Ts$K?=R8 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�k2s9vZHpLqc;k* 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%0AgcgCpP&!!#)<>=fkkU76>nGPVU&qnY|UIv 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� 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%0D0RI@05t%=pBIFZpfyV5n1pF(a4m2W1j6qa4g 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

~lT_a4NGZc(WhIAb6-=$#NJMGNc; zGPMZCl^`R~k0!6QafmIZlw3H1=4T*MaXuxNk^$>tVp9dJ!$!�yX83K#kpGr-|Nq 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 b8P^WD?ro`=J$fzafC;RETw))GVt)7&?606o diff --git a/dist/index.js b/dist/index.js index d924f79..664bfe5 100644 --- a/dist/index.js +++ b/dist/index.js @@ -2892,7 +2892,7 @@ exports.loadAwsServiceSpecSync = exports.loadAwsServiceSpec = void 0; const node_fs_1 = __nccwpck_require__(87561); const path = __importStar(__nccwpck_require__(49411)); const node_zlib_1 = __nccwpck_require__(65628); -const service_spec_types_1 = __nccwpck_require__(504); +const service_spec_types_1 = __nccwpck_require__(24002); const DB_COMPRESSED = 'db.json.gz'; const DB_PATH = path.join(__dirname, '..', DB_COMPRESSED); /** @@ -2918,6 +2918,506 @@ function loadBufferIntoDatabase(spec) { /***/ }), +/***/ 24002: +/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { + +"use strict"; + +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { return m[k]; } }; + } + Object.defineProperty(o, k2, desc); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __exportStar = (this && this.__exportStar) || function(m, exports) { + for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p); +}; +Object.defineProperty(exports, "__esModule", ({ value: true })); +__exportStar(__nccwpck_require__(60166), exports); +__exportStar(__nccwpck_require__(3524), exports); +__exportStar(__nccwpck_require__(90000), exports); +__exportStar(__nccwpck_require__(57947), exports); +__exportStar(__nccwpck_require__(73892), exports); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFpQztBQUNqQyxtREFBaUM7QUFDakMsd0RBQXNDO0FBQ3RDLGtEQUFnQztBQUNoQywrQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3R5cGVzL2RhdGFiYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvcmVzb3VyY2UnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy9hdWdtZW50YXRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvbWV0cmljcyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL2RpZmYnO1xuIl19 + +/***/ }), + +/***/ 90000: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVnbWVudGF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9hdWdtZW50YXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlbGF0aW9uc2hpcCB9IGZyb20gJ0BjZGtsYWJzL3Rza2InO1xuaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tICcuL3Jlc291cmNlJztcblxuLyoqXG4gKiBBdWdtZW50YXRpb25zIGZvciBhIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGVcbiAqXG4gKiBBdWdtZW50YXRpb25zIGFyZSBhIGRlcHJlY2F0ZWQgbWVjaGFuaXNtIGZvciBhdXRvbWF0aWNhbGx5IGdlbmVyYXRpbmcgbWV0cmljc1xuICogZnVuY3Rpb25zIGZvciBjZXJ0YWluIHJlc291cmNlcywgdXRpbGl6aW5nIFR5cGVTY3JpcHQgbWl4aW5zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlQXVnbWVudGF0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgLyoqXG4gICAqIE1ldHJpYyBhdWdtZW50YXRpb25zIGZvciB0aGlzIHJlc291cmNlIHR5cGVcbiAgICovXG4gIG1ldHJpY3M/OiBSZXNvdXJjZU1ldHJpY0F1Z21lbnRhdGlvbnM7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGNsYXNzIHRvIGJlIFwiYXVnbWVudGVkXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGtlYmFiIGNhc2VkIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIG5hbWUgKyAnLWJhc2UnXG4gICAqL1xuICBiYXNlQ2xhc3NGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY2xhc3MgdG8gYmUgXCJhdWdtZW50ZWRcIi5cbiAgICpcbiAgICogQGRlZmF1bHQgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgbmFtZSArICdCYXNlJ1xuICAgKi9cbiAgYmFzZUNsYXNzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBpbnRlcmZhY2UgdG8gYmUgXCJhdWdtZW50ZWRcIi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBzYW1lIGFzIGBgY2xhc3NGaWxlYGAuXG4gICAqL1xuICBpbnRlcmZhY2VGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW50ZXJmYWNlIHRvIGJlIFwiYXVnbWVudGVkXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdJJyArIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIG5hbWVcbiAgICovXG4gIGludGVyZmFjZT86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSXNBdWdtZW50ZWRSZXNvdXJjZSA9IFJlbGF0aW9uc2hpcDxSZXNvdXJjZSwgUmVzb3VyY2VBdWdtZW50YXRpb24+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlTWV0cmljQXVnbWVudGF0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIG9mIG1ldHJpY3MgZm9yIHRoaXMgc2VydmljZVxuICAgKi9cbiAgbmFtZXNwYWNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9wZXJ0aWVzIG9mIHRoZSByZXNvdXJjZSBjbGFzcyB0aGF0IHByb3ZpZGUgdmFsdWVzIGZvciB0aGUgZGltZW5zaW9uc1xuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgYHsgUXVldWVOYW1lOiAncXVldWVOYW1lJyB9YCBzYXlzIHRoYXQgdGhlIG1ldHJpYyBoYXMgYSBgUXVldWVOYW1lYFxuICAgKiBkaW1lbnNpb24sIGZvciB3aGljaCB0aGUgdmFsdWUgY2FuIGJlIG9idGFpbmVkIGJ5IHJlYWRpbmcgYHRoaXMucXVldWVOYW1lYC5cbiAgICovXG4gIGRpbWVuc2lvbnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRyaWNzIGZvciB0aGlzIHJlc291cmNlXG4gICAqL1xuICBtZXRyaWNzOiBSZXNvdXJjZU1ldHJpY1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlTWV0cmljIHtcbiAgLyoqXG4gICAqIFVwcGVyY2FzZS1maXJzdCBtZXRyaWMgbmFtZVxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEb2N1bWVudGF0aW9uIGxpbmVcbiAgICovXG4gIGRvY3VtZW50YXRpb246IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGlzIGFuIGV2ZW4gY291bnQgKDEgZ2V0cyBlbWl0dGVkIGV2ZXJ5IHRpbWUgc29tZXRoaW5nIG9jY3VycylcbiAgICpcbiAgICogQGRlZmF1bHQgTWV0cmljVHlwZS5BdHRyaWJcbiAgICovXG4gIHR5cGU/OiBNZXRyaWNUeXBlO1xufVxuXG5leHBvcnQgdHlwZSBNZXRyaWNUeXBlID1cbiAgLyoqXG4gICAqIFRoaXMgbWV0cmljIGlzIGVtaXR0ZWQgZm9yIGV2ZW50cywgbWVhc3VyaW5nIGEgYXR0cmlidXRlIG9mIHRoZSBldmVudC5cbiAgICpcbiAgICogVHlwaWNhbCBleGFtcGxlcyBvZiB0aGlzIHdvdWxkIGJlIGR1cmF0aW9uLCBvciByZXF1ZXN0IHNpemUsIG9yIHNpbWlsYXIuXG4gICAqXG4gICAqIFRoZSBkZWZhdWx0IGFnZ3JlZ2F0ZSBmb3IgdGhpcyB0eXBlIG9mIGV2ZW50IGlzIFwiQXZnXCIuXG4gICAqL1xuICB8ICdhdHRyaWInXG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0cmljIGlzIGVtaXR0ZWQgZm9yIGV2ZW50cywgYW5kIHRoZSB2YWx1ZSBpcyBhbHdheXMgYDFgLlxuICAgKlxuICAgKiBPbmx5IFwiU3VtXCIgaXMgYSBtZWFuaW5nZnVsIGFnZ3JlZ2F0ZSBvZiB0aGlzIHR5cGUgb2YgbWV0cmljOyBhbGwgb3RoZXJcbiAgICogYWdncmVnYXRpb25zIHdpbGwgb25seSBldmVyIHByb2R1Y2UgdGhlIHZhbHVlIGAxYC5cbiAgICovXG4gIHwgJ2NvdW50J1xuXG4gIC8qKlxuICAgKiBUaGlzIG1ldHJpYyBpcyBlbWl0dGVkIHBlcmlvZGljYWxseSwgcmVwcmVzZW50aW5nIGEgc3lzdGVtIHByb3BlcnR5LlxuICAgKlxuICAgKiBUaGUgbWV0cmljIG1lYXN1cmVzIHNvbWUgZ2xvYmFsIGV2ZXItY2hhbmdpbmcgcHJvcGVydHksIGFuZCBkb2VzIG5vdFxuICAgKiBtZWFzdXJlIGV2ZW50cy4gVGhlIG1vc3QgdXNlZnVsIGFnZ3JlZ2F0ZSBvZiB0aGlzIHR5cGUgb2YgbWV0cmljIGlzIFwiTWF4XCIuXG4gICAqL1xuICB8ICdnYXVnZSc7XG4iXX0= + +/***/ }), + +/***/ 60166: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.RichSpecDatabase = exports.loadDatabase = exports.emptyDatabase = void 0; +const fs_1 = __nccwpck_require__(57147); +const zlib_1 = __nccwpck_require__(59796); +const tskb_1 = __nccwpck_require__(63194); +function emptyDatabase() { + return new tskb_1.Database({ + resource: (0, tskb_1.entityCollection)().index({ + cloudFormationType: (0, tskb_1.fieldIndex)('cloudFormationType', tskb_1.stringCmp), + }), + region: (0, tskb_1.entityCollection)().index({ + name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp), + }), + service: (0, tskb_1.entityCollection)().index({ + name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp), + cloudFormationNamespace: (0, tskb_1.fieldIndex)('cloudFormationNamespace', tskb_1.stringCmp), + }), + typeDefinition: (0, tskb_1.entityCollection)(), + augmentations: (0, tskb_1.entityCollection)(), + metric: (0, tskb_1.entityCollection)().index({ + name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp), + namespace: (0, tskb_1.fieldIndex)('namespace', tskb_1.stringCmp), + dedupKey: (0, tskb_1.fieldIndex)('dedupKey', tskb_1.stringCmp), + }), + dimensionSet: (0, tskb_1.entityCollection)().index({ + dedupKey: (0, tskb_1.fieldIndex)('dedupKey', tskb_1.stringCmp), + }), + }, (r) => ({ + hasResource: r.relationship('service', 'resource'), + regionHasResource: r.relationship('region', 'resource'), + regionHasService: r.relationship('region', 'service'), + usesType: r.relationship('resource', 'typeDefinition'), + isAugmented: r.relationship('resource', 'augmentations'), + usesDimensionSet: r.relationship('metric', 'dimensionSet'), + resourceHasMetric: r.relationship('resource', 'metric'), + serviceHasMetric: r.relationship('service', 'metric'), + resourceHasDimensionSet: r.relationship('resource', 'dimensionSet'), + serviceHasDimensionSet: r.relationship('service', 'dimensionSet'), + })); +} +exports.emptyDatabase = emptyDatabase; +async function loadDatabase(pathToDb) { + const db = emptyDatabase(); + const contents = await fs_1.promises.readFile(pathToDb); + const json = pathToDb.endsWith('.gz') ? (0, zlib_1.gunzipSync)(contents).toString('utf-8') : contents.toString('utf-8'); + db.load(JSON.parse(json)); + return db; +} +exports.loadDatabase = loadDatabase; +/** + * Helpers for working with a SpecDatabase + */ +class RichSpecDatabase { + constructor(db) { + this.db = db; + } + /** + * Find all resources of a given type + */ + resourceByType(cfnType, operation = 'resourceByType') { + const res = this.db.lookup('resource', 'cloudFormationType', 'equals', cfnType); + if (res.length === 0) { + throw new Error(`${operation}: no such resource: ${cfnType}`); + } + return res[0]; + } + /** + * All type definitions used by a certain resource + */ + resourceTypeDefs(cfnType) { + const resource = this.db.lookup('resource', 'cloudFormationType', 'equals', cfnType).only(); + return this.db.follow('usesType', resource).map((x) => x.entity); + } + /** + * Find a type definition from a given property type + */ + tryFindDef(type) { + return type.type === 'ref' ? this.db.get('typeDefinition', type.reference.$ref) : undefined; + } +} +exports.RichSpecDatabase = RichSpecDatabase; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkJBQW9DO0FBQ3BDLCtCQUFrQztBQUNsQyx3Q0FBa0Y7QUF1QmxGLFNBQWdCLGFBQWE7SUFDM0IsT0FBTyxJQUFJLGVBQVEsQ0FDakI7UUFDRSxRQUFRLEVBQUUsSUFBQSx1QkFBZ0IsR0FBWSxDQUFDLEtBQUssQ0FBQztZQUMzQyxrQkFBa0IsRUFBRSxJQUFBLGlCQUFVLEVBQUMsb0JBQW9CLEVBQUUsZ0JBQVMsQ0FBQztTQUNoRSxDQUFDO1FBQ0YsTUFBTSxFQUFFLElBQUEsdUJBQWdCLEdBQVUsQ0FBQyxLQUFLLENBQUM7WUFDdkMsSUFBSSxFQUFFLElBQUEsaUJBQVUsRUFBQyxNQUFNLEVBQUUsZ0JBQVMsQ0FBQztTQUNwQyxDQUFDO1FBQ0YsT0FBTyxFQUFFLElBQUEsdUJBQWdCLEdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDekMsSUFBSSxFQUFFLElBQUEsaUJBQVUsRUFBQyxNQUFNLEVBQUUsZ0JBQVMsQ0FBQztZQUNuQyx1QkFBdUIsRUFBRSxJQUFBLGlCQUFVLEVBQUMseUJBQXlCLEVBQUUsZ0JBQVMsQ0FBQztTQUMxRSxDQUFDO1FBQ0YsY0FBYyxFQUFFLElBQUEsdUJBQWdCLEdBQWtCO1FBQ2xELGFBQWEsRUFBRSxJQUFBLHVCQUFnQixHQUF3QjtRQUN2RCxNQUFNLEVBQUUsSUFBQSx1QkFBZ0IsR0FBVSxDQUFDLEtBQUssQ0FBQztZQUN2QyxJQUFJLEVBQUUsSUFBQSxpQkFBVSxFQUFDLE1BQU0sRUFBRSxnQkFBUyxDQUFDO1lBQ25DLFNBQVMsRUFBRSxJQUFBLGlCQUFVLEVBQUMsV0FBVyxFQUFFLGdCQUFTLENBQUM7WUFDN0MsUUFBUSxFQUFFLElBQUEsaUJBQVUsRUFBQyxVQUFVLEVBQUUsZ0JBQVMsQ0FBQztTQUM1QyxDQUFDO1FBQ0YsWUFBWSxFQUFFLElBQUEs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QUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksVUFBVSxDQUFDLElBQWtCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUM5RixDQUFDO0NBQ0Y7QUE1QkQsNENBNEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBndW56aXBTeW5jIH0gZnJvbSAnemxpYic7XG5pbXBvcnQgeyBEYXRhYmFzZSwgZW50aXR5Q29sbGVjdGlvbiwgZmllbGRJbmRleCwgc3RyaW5nQ21wIH0gZnJvbSAnQGNka2xhYnMvdHNrYic7XG5pbXBvcnQgeyBJc0F1Z21lbnRlZFJlc291cmNlLCBSZXNvdXJjZUF1Z21lbnRhdGlvbiB9IGZyb20gJy4vYXVnbWVudGF0aW9ucyc7XG5pbXBvcnQge1xuICBEaW1lbnNpb25TZXQsXG4gIE1ldHJpYyxcbiAgUmVzb3VyY2VIYXNEaW1lbnNpb25TZXQsXG4gIFNlcnZpY2VIYXNEaW1lbnNpb25TZXQsXG4gIFVzZXNEaW1lbnNpb25TZXQsXG4gIFJlc291cmNlSGFzTWV0cmljLFxuICBTZXJ2aWNlSGFzTWV0cmljLFxufSBmcm9tICcuL21ldHJpY3MnO1xuaW1wb3J0IHtcbiAgUmVzb3VyY2UsXG4gIFNlcnZpY2UsXG4gIFR5cGVEZWZpbml0aW9uLFxuICBQcm9wZXJ0eVR5cGUsXG4gIFJlZ2lvbixcbiAgSGFzUmVzb3VyY2UsXG4gIFJlZ2lvbkhhc1Jlc291cmNlLFxuICBSZWdpb25IYXNTZXJ2aWNlLFxuICBVc2VzVHlwZSxcbn0gZnJvbSAnLi9yZXNvdXJjZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbXB0eURhdGFiYXNlKCkge1xuICByZXR1cm4gbmV3IERhdGFiYXNlKFxuICAgIHtcbiAgICAgIHJlc291cmNlOiBlbnRpdHlDb2xsZWN0aW9uPFJlc291cmNlPigpLmluZGV4KHtcbiAgICAgICAgY2xvdWRGb3JtYXRpb25UeXBlOiBmaWVsZEluZGV4KCdjbG91ZEZvcm1hdGlvblR5cGUnLCBzdHJpbmdDbXApLFxuICAgICAgfSksXG4gICAgICByZWdpb246IGVudGl0eUNvbGxlY3Rpb248UmVnaW9uPigpLmluZGV4KHtcbiAgICAgICAgbmFtZTogZmllbGRJbmRleCgnbmFtZScsIHN0cmluZ0NtcCksXG4gICAgICB9KSxcbiAgICAgIHNlcnZpY2U6IGVudGl0eUNvbGxlY3Rpb248U2VydmljZT4oKS5pbmRleCh7XG4gICAgICAgIG5hbWU6IGZpZWxkSW5kZXgoJ25hbWUnLCBzdHJpbmdDbXApLFxuICAgICAgICBjbG91ZEZvcm1hdGlvbk5hbWVzcGFjZTogZmllbGRJbmRleCgnY2xvdWRGb3JtYXRpb25OYW1lc3BhY2UnLCBzdHJpbmdDbXApLFxuICAgICAgfSksXG4gICAgICB0eXBlRGVmaW5pdGlvbjogZW50aXR5Q29sbGVjdGlvbjxUeXBlRGVmaW5pdGlvbj4oKSxcbiAgICAgIGF1Z21lbnRhdGlvbnM6IGVudGl0eUNvbGxlY3Rpb248UmVzb3VyY2VBdWdtZW50YXRpb24+KCksXG4gICAgICBtZXRyaWM6IGVudGl0eUNvbGxlY3Rpb248TWV0cmljPigpLmluZGV4KHtcbiAgICAgICAgbmFtZTogZmllbGRJbmRleCgnbmFtZScsIHN0cmluZ0NtcCksXG4gICAgICAgIG5hbWVzcGFjZTogZmllbGRJbmRleCgnbmFtZXNwYWNlJywgc3RyaW5nQ21wKSxcbiAgICAgICAgZGVkdXBLZXk6IGZpZWxkSW5kZXgoJ2RlZHVwS2V5Jywgc3RyaW5nQ21wKSxcbiAgICAgIH0pLFxuICAgICAgZGltZW5zaW9uU2V0OiBlbnRpdHlDb2xsZWN0aW9uPERpbWVuc2lvblNldD4oKS5pbmRleCh7XG4gICAgICAgIGRlZHVwS2V5OiBmaWVsZEluZGV4KCdkZWR1cEtleScsIHN0cmluZ0NtcCksXG4gICAgICB9KSxcbiAgICB9LFxuICAgIChyKSA9PiAoe1xuICAgICAgaGFzUmVzb3VyY2U6IHIucmVsYXRpb25zaGlwPEhhc1Jlc291cmNlPignc2VydmljZScsICdyZXNvdXJjZScpLFxuICAgICAgcmVnaW9uSGFzUmVzb3VyY2U6IHIucmVsYXRpb25zaGlwPFJlZ2lvbkhhc1Jlc291cmNlPigncmVnaW9uJywgJ3Jlc291cmNlJyksXG4gICAgICByZWdpb25IYXNTZXJ2aWNlOiByLnJlbGF0aW9uc2hpcDxSZWdpb25IYXNTZXJ2aWNlPigncmVnaW9uJywgJ3NlcnZpY2UnKSxcbiAgICAgIHVzZXNUeXBlOiByLnJlbGF0aW9uc2hpcDxVc2VzVHlwZT4oJ3Jlc291cmNlJywgJ3R5cGVEZWZpbml0aW9uJyksXG4gICAgICBpc0F1Z21lbnRlZDogci5yZWxhdGlvbnNoaXA8SXNBdWdtZW50ZWRSZXNvdXJjZT4oJ3Jlc291cmNlJywgJ2F1Z21lbnRhdGlvbnMnKSxcbiAgICAgIHVzZXNEaW1lbnNpb25TZXQ6IHIucmVsYXRpb25zaGlwPFVzZXNEaW1lbnNpb25TZXQ+KCdtZXRyaWMnLCAnZGltZW5zaW9uU2V0JyksXG4gICAgICByZXNvdXJjZUhhc01ldHJpYzogci5yZWxhdGlvbnNoaXA8UmVzb3VyY2VIYXNNZXRyaWM+KCdyZXNvdXJjZScsICdtZXRyaWMnKSxcbiAgICAgIHNlcnZpY2VIYXNNZXRyaWM6IHIucmVsYXRpb25zaGlwPFNlcnZpY2VIYXNNZXRyaWM+KCdzZXJ2aWNlJywgJ21ldHJpYycpLFxuICAgICAgcmVzb3VyY2VIYXNEaW1lbnNpb25TZXQ6IHIucmVsYXRpb25zaGlwPFJlc291cmNlSGFzRGltZW5zaW9uU2V0PigncmVzb3VyY2UnLCAnZGltZW5zaW9uU2V0JyksXG4gICAgICBzZXJ2aWNlSGFzRGltZW5zaW9uU2V0OiByLnJlbGF0aW9uc2hpcDxTZXJ2aWNlSGFzRGltZW5zaW9uU2V0Pignc2VydmljZScsICdkaW1lbnNpb25TZXQnKSxcbiAgICB9KSxcbiAgKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWREYXRhYmFzZShwYXRoVG9EYjogc3RyaW5nKSB7XG4gIGNvbnN0IGRiID0gZW1wdHlEYXRhYmFzZSgpO1xuICBjb25zdCBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKHBhdGhUb0RiKTtcbiAgY29uc3QganNvbiA9IHBhdGhUb0RiLmVuZHNXaXRoKCcuZ3onKSA/IGd1bnppcFN5bmMoY29udGVudHMpLnRvU3RyaW5nKCd1dGYtOCcpIDogY29udGVudHMudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gIGRiLmxvYWQoSlNPTi5wYXJzZShqc29uKSk7XG4gIHJldHVybiBkYjtcbn1cblxuZXhwb3J0IHR5cGUgU3BlY0RhdGFiYXNlID0gUmV0dXJuVHlwZTx0eXBlb2YgZW1wdHlEYXRhYmFzZT47XG5cbi8qKlxuICogSGVscGVycyBmb3Igd29ya2luZyB3aXRoIGEgU3BlY0RhdGFiYXNlXG4gKi9cbmV4cG9ydCBjbGFzcyBSaWNoU3BlY0RhdGFiYXNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkYjogU3BlY0RhdGFiYXNlKSB7fVxuXG4gIC8qKlxuICAgKiBGaW5kIGFsbCByZXNvdXJjZXMgb2YgYSBnaXZlbiB0eXBlXG4gICAqL1xuICBwdWJsaWMgcmVzb3VyY2VCeVR5cGUoY2ZuVHlwZTogc3RyaW5nLCBvcGVyYXRpb24gPSAncmVzb3VyY2VCeVR5cGUnKTogUmVzb3VyY2Uge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuZGIubG9va3VwKCdyZXNvdXJjZScsICdjbG91ZEZvcm1hdGlvblR5cGUnLCAnZXF1YWxzJywgY2ZuVHlwZSk7XG4gICAgaWYgKHJlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtvcGVyYXRpb259OiBubyBzdWNoIHJlc291cmNlOiAke2NmblR5cGV9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXNbMF07XG4gIH1cblxuICAvKipcbiAgICogQWxsIHR5cGUgZGVmaW5pdGlvbnMgdXNlZCBieSBhIGNlcnRhaW4gcmVzb3VyY2VcbiAgICovXG4gIHB1YmxpYyByZXNvdXJjZVR5cGVEZWZzKGNmblR5cGU6IHN0cmluZyk6IHJlYWRvbmx5IFR5cGVEZWZpbml0aW9uW10ge1xuICAgIGNvbnN0IHJlc291cmNlID0gdGhpcy5kYi5sb29rdXAoJ3Jlc291cmNlJywgJ2Nsb3VkRm9ybWF0aW9uVHlwZScsICdlcXVhbHMnLCBjZm5UeXBlKS5vbmx5KCk7XG4gICAgcmV0dXJuIHRoaXMuZGIuZm9sbG93KCd1c2VzVHlwZScsIHJlc291cmNlKS5tYXAoKHgpID0+IHguZW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIGEgdHlwZSBkZWZpbml0aW9uIGZyb20gYSBnaXZlbiBwcm9wZXJ0eSB0eXBlXG4gICAqL1xuICBwdWJsaWMgdHJ5RmluZERlZih0eXBlOiBQcm9wZXJ0eVR5cGUpOiBUeXBlRGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHR5cGUudHlwZSA9PT0gJ3JlZicgPyB0aGlzLmRiLmdldCgndHlwZURlZmluaXRpb24nLCB0eXBlLnJlZmVyZW5jZS4kcmVmKSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19 + +/***/ }), + +/***/ 73892: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGUsIFByb3BlcnR5LCBSZXNvdXJjZSwgU2VydmljZSwgVHlwZURlZmluaXRpb24gfSBmcm9tICcuL3Jlc291cmNlJztcblxuZXhwb3J0IGludGVyZmFjZSBTcGVjRGF0YWJhc2VEaWZmIHtcbiAgc2VydmljZXM6IE1hcERpZmY8U2VydmljZSwgVXBkYXRlZFNlcnZpY2U+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3REaWZmPEUsIEVEPiB7XG4gIHJlYWRvbmx5IGFkZGVkPzogRVtdO1xuICByZWFkb25seSByZW1vdmVkPzogRVtdO1xuICByZWFkb25seSB1cGRhdGVkPzogRURbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBEaWZmPEUsIEVEPiB7XG4gIHJlYWRvbmx5IGFkZGVkPzogUmVjb3JkPHN0cmluZywgRT47XG4gIHJlYWRvbmx5IHJlbW92ZWQ/OiBSZWNvcmQ8c3RyaW5nLCBFPjtcbiAgcmVhZG9ubHkgdXBkYXRlZD86IFJlY29yZDxzdHJpbmcsIEVEPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkU2VydmljZSB7XG4gIHJlYWRvbmx5IG5hbWU/OiBTY2FsYXJEaWZmPFNlcnZpY2VbJ25hbWUnXT47XG4gIHJlYWRvbmx5IHNob3J0TmFtZT86IFNjYWxhckRpZmY8U2VydmljZVsnc2hvcnROYW1lJ10+O1xuICByZWFkb25seSBjYXBpdGFsaXplZD86IFNjYWxhckRpZmY8U2VydmljZVsnY2FwaXRhbGl6ZWQnXT47XG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uTmFtZXNwYWNlPzogU2NhbGFyRGlmZjxTZXJ2aWNlWydjbG91ZEZvcm1hdGlvbk5hbWVzcGFjZSddPjtcbiAgcmVhZG9ubHkgcmVzb3VyY2VEaWZmPzogTWFwRGlmZjxSZXNvdXJjZSwgVXBkYXRlZFJlc291cmNlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkUmVzb3VyY2Uge1xuICByZWFkb25seSBuYW1lPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvblR5cGU/OiBTY2FsYXJEaWZmPHN0cmluZz47XG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uVHJhbnNmb3JtPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBkb2N1bWVudGF0aW9uPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogTWFwRGlmZjxQcm9wZXJ0eSwgVXBkYXRlZFByb3BlcnR5PjtcbiAgcmVhZG9ubHkgYXR0cmlidXRlcz86IE1hcERpZmY8QXR0cmlidXRlLCBVcGRhdGVkQXR0cmlidXRlPjtcbiAgcmVhZG9ubHkgaWRlbnRpZmllcj86IFNjYWxhckRpZmY8UmVzb3VyY2VbJ2lkZW50aWZpZXInXT47XG4gIHJlYWRvbmx5IGlzU3RhdGVmdWw/OiBTY2FsYXJEaWZmPGJvb2xlYW4+O1xuICByZWFkb25seSB0YWdJbmZvcm1hdGlvbj86IFNjYWxhckRpZmY8UmVzb3VyY2VbJ3RhZ0luZm9ybWF0aW9uJ10+O1xuICByZWFkb25seSBzY3J1dGluaXphYmxlPzogU2NhbGFyRGlmZjxSZXNvdXJjZVsnc2NydXRpbml6YWJsZSddPjtcbiAgcmVhZG9ubHkgdHlwZURlZmluaXRpb25EaWZmPzogTWFwRGlmZjxUeXBlRGVmaW5pdGlvbiwgVXBkYXRlZFR5cGVEZWZpbml0aW9uPjtcbiAgcmVhZG9ubHkgcHJpbWFyeUlkZW50aWZpZXI/OiBMaXN0RGlmZjxzdHJpbmcsIHZvaWQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZWRQcm9wZXJ0eSB7XG4gIHJlYWRvbmx5IG9sZDogUHJvcGVydHk7XG4gIHJlYWRvbmx5IG5ldzogUHJvcGVydHk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlZEF0dHJpYnV0ZSB7XG4gIHJlYWRvbmx5IG9sZDogQXR0cmlidXRlO1xuICByZWFkb25seSBuZXc6IEF0dHJpYnV0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkVHlwZURlZmluaXRpb24ge1xuICByZWFkb25seSBuYW1lPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBkb2N1bWVudGF0aW9uPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogTWFwRGlmZjxQcm9wZXJ0eSwgVXBkYXRlZFByb3BlcnR5PjtcbiAgcmVhZG9ubHkgbXVzdFJlbmRlckZvckJ3Q29tcGF0PzogU2NhbGFyRGlmZjxib29sZWFuPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2FsYXJEaWZmPEE+IHtcbiAgcmVhZG9ubHkgb2xkPzogQTtcbiAgcmVhZG9ubHkgbmV3PzogQTtcbn1cbiJdfQ== + +/***/ }), + +/***/ 57947: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlbGF0aW9uc2hpcCB9IGZyb20gJ0BjZGtsYWJzL3Rza2InO1xuaW1wb3J0IHsgUmVzb3VyY2UsIFNlcnZpY2UgfSBmcm9tICcuL3Jlc291cmNlJztcblxuLyoqXG4gKiBBIE1ldHJpYyBEaW1lbnNpb24gKG5vdCBhbiBlbnRpdHkpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGltZW5zaW9uIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGRpbWVuc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQSBwb3RlbnRpYWwgdmFsdWUgZm9yIHRoaXMgZGltZW5zaW9uXG4gICAqL1xuICByZWFkb25seSB2YWx1ZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHNldCBvZiBNZXRyaWMgRGltZW5zaW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGltZW5zaW9uU2V0IGV4dGVuZHMgRW50aXR5IHtcbiAgLyoqXG4gICAqIEEgdW5pcXVlIHZhbHVlIHVzZWQgdG8gZGVkdXBsaWNhdGUgdGhlIGVudGl0eVxuICAgKi9cbiAgZGVkdXBLZXk6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBkaW1lbnNpb25zIGluIHRoaXMgc2V0XG4gICAqL1xuICBkaW1lbnNpb25zOiBEaW1lbnNpb25bXTtcbn1cbmV4cG9ydCB0eXBlIFJlc291cmNlSGFzRGltZW5zaW9uU2V0ID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBEaW1lbnNpb25TZXQ+O1xuZXhwb3J0IHR5cGUgU2VydmljZUhhc0RpbWVuc2lvblNldCA9IFJlbGF0aW9uc2hpcDxTZXJ2aWNlLCBEaW1lbnNpb25TZXQ+O1xuXG4vKipcbiAqIEEgQ2xvdWRXYXRjaCBNZXRyaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRyaWMgZXh0ZW5kcyBFbnRpdHkge1xuICAvKipcbiAgICogTWV0cmljIG5hbWVzcGFjZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBtZXRyaWNcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIERlZmF1bHQgKHN1Z2dlc3RlZCkgc3RhdGlzdGljIGZvciB0aGlzIG1ldHJpY1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGlzdGljOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIHVuaXF1ZSB2YWx1ZSB1c2VkIHRvIGRlZHVwbGljYXRlIHRoZSBlbnRpdHlcbiAgICovXG4gIHJlYWRvbmx5IGRlZHVwS2V5OiBzdHJpbmc7XG59XG5leHBvcnQgdHlwZSBVc2VzRGltZW5zaW9uU2V0ID0gUmVsYXRpb25zaGlwPE1ldHJpYywgRGltZW5zaW9uU2V0PjtcbmV4cG9ydCB0eXBlIFJlc291cmNlSGFzTWV0cmljID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBNZXRyaWM+O1xuZXhwb3J0IHR5cGUgU2VydmljZUhhc01ldHJpYyA9IFJlbGF0aW9uc2hpcDxTZXJ2aWNlLCBNZXRyaWM+O1xuIl19 + +/***/ }), + +/***/ 3524: +/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.RichPropertyType = exports.PropertyScrutinyType = exports.ResourceScrutinyType = exports.isCollectionType = exports.Deprecation = exports.RichAttribute = exports.RichProperty = exports.RichTypedField = void 0; +const sorting_1 = __nccwpck_require__(52577); +class RichTypedField { + constructor(field) { + this.field = field; + if (field === undefined) { + throw new Error('Field is undefined'); + } + } + types() { + var _a; + return [...((_a = this.field.previousTypes) !== null && _a !== void 0 ? _a : []), this.field.type]; + } + /** + * Update the type of this property with a new type + * + * Only if it's not in the set of types already. + */ + updateType(type) { + const richType = new RichPropertyType(type); + // Only add this type if we don't already have it. We are only doing comparisons where 'integer' and 'number' + // are treated the same, for all other types we need strict equality. We used to use 'assignableTo' as a + // condition, but these types will be rendered in both co- and contravariant positions, and so we really can't + // do much better than full equality. + if (this.types().some((t) => richType.equals(t))) { + // Nothing to do, type is already in there. + return false; + } + // Special case: if the new type is `string` and the old type is `date-time`, we assume this is + // the same type but we dropped some formatting information. No need to make this a separate type. + if (type.type === 'string' && this.types().some((t) => t.type === 'date-time')) { + return false; + } + if (!this.field.previousTypes) { + this.field.previousTypes = []; + } + this.field.previousTypes.push(this.field.type); + this.field.type = type; + return true; + } +} +exports.RichTypedField = RichTypedField; +class RichProperty extends RichTypedField { + constructor(property) { + super(property); + } +} +exports.RichProperty = RichProperty; +class RichAttribute extends RichTypedField { + constructor(attr) { + super(attr); + } +} +exports.RichAttribute = RichAttribute; +var Deprecation; +(function (Deprecation) { + /** + * Not deprecated + */ + Deprecation["NONE"] = "NONE"; + /** + * Warn about use + */ + Deprecation["WARN"] = "WARN"; + /** + * Do not emit the value at all + * + * (Handle properties that were incorrectly added to the spec) + */ + Deprecation["IGNORE"] = "IGNORE"; +})(Deprecation = exports.Deprecation || (exports.Deprecation = {})); +function isCollectionType(x) { + return x.type === 'array' || x.type === 'map'; +} +exports.isCollectionType = isCollectionType; +/** + * Mark a resource as a resource that needs additional scrutiy when added, removed or changed + * + * Used to mark resources that represent security policies. + */ +var ResourceScrutinyType; +(function (ResourceScrutinyType) { + /** + * No additional scrutiny + */ + ResourceScrutinyType["None"] = "None"; + /** + * An externally attached policy document to a resource + * + * (Common for SQS, SNS, S3, ...) + */ + ResourceScrutinyType["ResourcePolicyResource"] = "ResourcePolicyResource"; + /** + * This is an IAM policy on an identity resource + * + * (Basically saying: this is AWS::IAM::Policy) + */ + ResourceScrutinyType["IdentityPolicyResource"] = "IdentityPolicyResource"; + /** + * This is a Lambda Permission policy + */ + ResourceScrutinyType["LambdaPermission"] = "LambdaPermission"; + /** + * An ingress rule object + */ + ResourceScrutinyType["IngressRuleResource"] = "IngressRuleResource"; + /** + * A set of egress rules + */ + ResourceScrutinyType["EgressRuleResource"] = "EgressRuleResource"; + /** + * AWS::SSO::Assignment + * + * IAM Identity Center (formerly known as SSO) + */ + ResourceScrutinyType["SsoAssignmentResource"] = "SsoAssignmentResource"; + /** + * AWS::SSO::InstanceAccessControlAttributeConfiguration + * + * IAM Identity Center (formerly known as SSO) + */ + ResourceScrutinyType["SsoInstanceACAConfigResource"] = "SsoInstanceACAConfigResource"; + /** + * AWS::SSO::PermissionSet + * + * IAM Identity Center (formerly known as SSO) + */ + ResourceScrutinyType["SsoPermissionSet"] = "SsoPermissionSet"; +})(ResourceScrutinyType = exports.ResourceScrutinyType || (exports.ResourceScrutinyType = {})); +/** + * Mark a property as a property that needs additional scrutiny when it changes + * + * Used to mark sensitive properties that have security-related implications. + */ +var PropertyScrutinyType; +(function (PropertyScrutinyType) { + /** + * No additional scrutiny + */ + PropertyScrutinyType["None"] = "None"; + /** + * This is an IAM policy directly on a resource + */ + PropertyScrutinyType["InlineResourcePolicy"] = "InlineResourcePolicy"; + /** + * Either an AssumeRolePolicyDocument or a dictionary of policy documents + */ + PropertyScrutinyType["InlineIdentityPolicies"] = "InlineIdentityPolicies"; + /** + * A list of managed policies (on an identity resource) + */ + PropertyScrutinyType["ManagedPolicies"] = "ManagedPolicies"; + /** + * A set of ingress rules (on a security group) + */ + PropertyScrutinyType["IngressRules"] = "IngressRules"; + /** + * A set of egress rules (on a security group) + */ + PropertyScrutinyType["EgressRules"] = "EgressRules"; +})(PropertyScrutinyType = exports.PropertyScrutinyType || (exports.PropertyScrutinyType = {})); +class RichPropertyType { + constructor(type) { + this.type = type; + } + equals(rhs) { + switch (this.type.type) { + case 'integer': + case 'boolean': + case 'date-time': + case 'json': + case 'null': + case 'number': + case 'string': + case 'tag': + return rhs.type === this.type.type; + case 'array': + case 'map': + return rhs.type === this.type.type && new RichPropertyType(this.type.element).equals(rhs.element); + case 'ref': + return rhs.type === 'ref' && this.type.reference.$ref === rhs.reference.$ref; + case 'union': + const lhsKey = this.sortKey(); + const rhsKey = new RichPropertyType(rhs).sortKey(); + return lhsKey.length === rhsKey.length && lhsKey.every((l, i) => l === rhsKey[i]); + } + } + /** + * Whether the current type is JavaScript-equal to the RHS type + * + * Same as normal equality, but consider `integer` and `number` the same types. + */ + javascriptEquals(rhs) { + switch (this.type.type) { + case 'number': + case 'integer': + // Widening + return rhs.type === 'integer' || rhs.type === 'number'; + case 'array': + case 'map': + return rhs.type === this.type.type && new RichPropertyType(this.type.element).javascriptEquals(rhs.element); + case 'union': + if (rhs.type !== 'union') { + return false; + } + // Every type in this union needs to be equal one type in RHS + return this.type.types.every((t1) => rhs.types.some((t2) => new RichPropertyType(t1).javascriptEquals(t2))); + default: + // For anything else, need strict equality + return this.equals(rhs); + } + } + /** + * Whether the current type is assignable to the RHS type. + * + * This is means every type member of the LHS must be present in the RHS type + */ + assignableTo(rhs) { + const extractMembers = (type) => (type.type == 'union' ? type.types : [type]); + const asRichType = (type) => new RichPropertyType(type); + const rhsMembers = extractMembers(rhs); + for (const lhsMember of extractMembers(this.type).map(asRichType)) { + if (!rhsMembers.some((type) => lhsMember.equals(type))) { + return false; + } + } + return true; + } + /** + * Return a version of this type, but with all type unions in a regularized order + */ + normalize(db) { + switch (this.type.type) { + case 'array': + case 'map': + return new RichPropertyType({ + type: this.type.type, + element: new RichPropertyType(this.type.element).normalize(db).type, + }); + case 'union': + const types = this.type.types + .map((t) => new RichPropertyType(t).normalize(db)) + .map((t) => [t, t.sortKey(db)]); + types.sort((0, sorting_1.sortKeyComparator)(([_, sortKey]) => sortKey)); + return new RichPropertyType({ + type: 'union', + types: types.map(([t, _]) => t.type), + }); + default: + return this; + } + } + stringify(db, withId = true) { + switch (this.type.type) { + case 'integer': + case 'boolean': + case 'date-time': + case 'json': + case 'null': + case 'number': + case 'string': + case 'tag': + return this.type.type; + case 'array': + return `Array<${new RichPropertyType(this.type.element).stringify(db, withId)}>`; + case 'map': + return `Map`; + case 'ref': + const type = db.get('typeDefinition', this.type.reference); + return withId ? `${type.name}(${this.type.reference.$ref})` : type.name; + case 'union': + return this.type.types.map((t) => new RichPropertyType(t).stringify(db, withId)).join(' | '); + } + } + /** + * Return a sortable key based on this type + * + * If a database is given, type definitions will be sorted based on type name, + * otherwise on identifier + */ + sortKey(db) { + var _a, _b; + switch (this.type.type) { + case 'integer': + case 'boolean': + case 'date-time': + case 'json': + case 'null': + case 'number': + case 'string': + case 'tag': + return ['0', this.type.type]; + case 'array': + case 'map': + return ['1', this.type.type, ...new RichPropertyType(this.type.element).sortKey(db)]; + case 'ref': + return ['2', this.type.type, (_b = (_a = db === null || db === void 0 ? void 0 : db.get('typeDefinition', this.type.reference)) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : this.type.reference.$ref]; + case 'union': + const typeKeys = this.type.types.map((t) => new RichPropertyType(t).sortKey(db)); + typeKeys.sort((0, sorting_1.sortKeyComparator)((x) => x)); + return ['3', this.type.type, ...typeKeys.flatMap((x) => x)]; + } + } +} +exports.RichPropertyType = RichPropertyType; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvcmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsNkNBQW9EO0FBdUtwRCxNQUFhLGNBQWM7SUFDekIsWUFBNkIsS0FBK0M7UUFBL0MsVUFBSyxHQUFMLEtBQUssQ0FBMEM7UUFDMUUsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFTSxLQUFLOztRQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsbUNBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFVBQVUsQ0FBQyxJQUFrQjtRQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVDLDZHQUE2RztRQUM3Ryx3R0FBd0c7UUFDeEcsOEdBQThHO1FBQzlHLHFDQUFxQztRQUNyQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNoRCwyQ0FBMkM7WUFDM0MsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELCtGQUErRjtRQUMvRixrR0FBa0c7UUFDbEcsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxFQUFFO1lBQzlFLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJ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QyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDakYsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFBLDJCQUFpQixFQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvRDtJQUNILENBQUM7Q0FDRjtBQXRKRCw0Q0FzSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlZmVyZW5jZSwgUmVsYXRpb25zaGlwIH0gZnJvbSAnQGNka2xhYnMvdHNrYic7XG5pbXBvcnQgeyBTcGVjRGF0YWJhc2UgfSBmcm9tICcuL2RhdGFiYXNlJztcbmltcG9ydCB7IHNvcnRLZXlDb21wYXJhdG9yIH0gZnJvbSAnLi4vdXRpbC9zb3J0aW5nJztcblxuZXhwb3J0IGludGVyZmFjZSBQYXJ0aXRpb24gZXh0ZW5kcyBFbnRpdHkge1xuICByZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSGFzUmVnaW9uID0gUmVsYXRpb25zaGlwPFBhcnRpdGlvbiwgUmVnaW9uLCB7IGlzUHJpbWFyeT86IGJvb2xlYW4gfT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZSBleHRlbmRzIEVudGl0eSB7XG4gIC8qKlxuICAgKiBUaGUgZnVsbCBuYW1lIG9mIHRoZSBzZXJ2aWNlIGluY2x1ZGluZyB0aGUgZ3JvdXAgcHJlZml4LCBsb3dlcmNhc2VkIGFuZCBoeXBoZW5hdGVkLlxuICAgKlxuICAgKiBFLmcuIGBBV1M6OkR5bmFtb0RCYCAtPiBgYXdzLWR5bmFtb2RiYFxuICAgKlxuICAgKiBAZXhhbXBsZSBhd3MtZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIE9ubHkgdGhlIHNlcnZpY2UgcGFydCBvZiB0aGUgbmFtZSwgbG93ZXJjYXNlZC5cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYGR5bmFtb2RiYFxuICAgKlxuICAgKiBAZXhhbXBsZSBkeW5hbW9kYlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvcnROYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc2hvcnRuYW1lIG9mIHRoZSBzZXJ2aWNlIGluIGNhcGl0YWxpemVkIGZvcm1cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYER5bmFtb0RCYFxuICAgKlxuICAgKiBAZXhhbXBsZSBkeW5hbW9kYlxuICAgKi9cbiAgcmVhZG9ubHkgY2FwaXRhbGl6ZWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjb21wbGV0ZSBjbG91ZGZvcm1hdGlvbiBzdHlsZSBuYW1lc3BhY2Ugb2YgdGhlIHNlcnZpY2VcbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmBcbiAgICpcbiAgICogQGV4YW1wbGUgZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uTmFtZXNwYWNlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudGF0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbWFya2Rvd246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZSBleHRlbmRzIEVudGl0eSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25UeXBlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJZiBzZXQsIHRoaXMgQ2xvdWRGb3JtYXRpb24gVHJhbnNmb3JtIGlzIHJlcXVpcmVkIGJ5IHRoZSByZXNvdXJjZVxuICAgKi9cbiAgY2xvdWRGb3JtYXRpb25UcmFuc2Zvcm0/OiBzdHJpbmc7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IHByb3BlcnRpZXM6IFJlc291cmNlUHJvcGVydGllcztcbiAgcmVhZG9ubHkgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgQXR0cmlidXRlPjtcbiAgcmVhZG9ubHkgdmFsaWRhdGlvbnM/OiB1bmtub3duO1xuICBpZGVudGlmaWVyPzogUmVzb3VyY2VJZGVudGlmaWVyO1xuICBpc1N0YXRlZnVsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5mb3JtYXRpb24gYWJvdXQgdGhlIHRhZ2dhYmlsaXR5IG9mIHRoaXMgcmVzb3VyY2VcbiAgICpcbiAgICogVW5kZWZpbmVkIGlmIHRoZSByZXNvdXJjZSBpcyBub3QgdGFnZ2FibGUuXG4gICAqL1xuICB0YWdJbmZvcm1hdGlvbj86IFRhZ0luZm9ybWF0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGNoYW5nZXMgdG8gdGhpcyByZXNvdXJjZSBuZWVkIHRvIGJlIHNjcnV0aW5pemVkXG4gICAqXG4gICAqIEBkZWZhdWx0IFJlc291cmNlU2NydXRpbnlUeXBlLk5PTkVcbiAgICovXG4gIHNjcnV0aW5pemFibGU/OiBSZXNvdXJjZVNjcnV0aW55VHlwZTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBwYXRocyB0byBwcm9wZXJ0aWVzIHRoYXQgYWxzbyBjYXVzZSByZXBsYWNlbWVudC5cbiAgICpcbiAgICogVGhpcyBpcyB0byBpbmRpY2F0ZSB0aGF0IGNlcnRhaW4gcHJvcGVydHkgcGF0aHMgaW50byB0aGlzIHJlc291cmNlXG4gICAqIHdpbGwgY2F1c2UgcmVwbGFjZW1lbnQ7IG9ubHkgcmVwbGFjZW1lbnRzIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkXG4gICAqIGJ5IHRhZ2dpbmcgdGhlIHByb3BlcnR5IGluIGEgdHlwZSBkZWZpbml0aW9uIHdpbGwgYmUgaW5jbHVkZWQgaGVyZVxuICAgKiAoZm9yIGV4YW1wbGUsIGJlY2F1c2UgdGhlIHRhZ2dlZCBwcm9wZXJ0eSB3b3VsZCBiZSBpbiBhIHByZWRlZmluZWRcbiAgICogdHlwZSBsaWtlIGB0YWdgKS5cbiAgICpcbiAgICogQWxsIHByb3BlcnRpZXMgaW4gdGhpcyBsaXN0IHNob3VsZCBiZSB0cmVhdGVkIGFzIGBjYXVzZXNSZXBsYWNlbWVudDogJ3llcydgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtXG4gICAqL1xuICBhZGRpdGlvbmFsUmVwbGFjZW1lbnRQcm9wZXJ0aWVzPzogc3RyaW5nW11bXTtcbn1cblxuZXhwb3J0IHR5cGUgUmVzb3VyY2VQcm9wZXJ0aWVzID0gUmVjb3JkPHN0cmluZywgUHJvcGVydHk+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVEZWZpbml0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xuICByZWFkb25seSBwcm9wZXJ0aWVzOiBSZXNvdXJjZVByb3BlcnRpZXM7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHJlbmRlciB0aGlzIHR5cGUgZXZlbiBpZiBpdCBpcyB1bnVzZWQuXG4gICAqL1xuICBtdXN0UmVuZGVyRm9yQndDb21wYXQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5IHtcbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIG9mIHRoZSBwcm9wZXJ0eVxuICAgKi9cbiAgZG9jdW1lbnRhdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogSXMgdGhpcyBwcm9wZXJ0eSByZXF1aXJlZFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCB0eXBlIG9mIHRoaXMgcHJvcGVydHlcbiAgICovXG4gIHR5cGU6IFByb3BlcnR5VHlwZTtcblxuICAvKipcbiAgICogQW4gb3JkZXJlZCBsaXN0IG9mIHByZXZpb3VzIHR5cGVzIG9mIHRoaXMgcHJvcGVydHkgaW4gYXNjZW5kaW5nIG9yZGVyXG4gICAqXG4gICAqIERvZXMgbm90IGluY2x1ZGUgdGhlIGN1cnJlbnQgdHlwZSwgdXNlIGB0eXBlYCBmb3IgdGhpcy5cbiAgICovXG4gIHByZXZpb3VzVHlwZXM/OiBQcm9wZXJ0eVR5cGVbXTtcblxuICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0eVxuICAgKlxuICAgKiBUaGlzIHZhbHVlIGlzIG5vdCBkaXJlY3RseSBmdW5jdGlvbmFsOyBpdCBkZXNjcmliZXMgaG93IHRoZSB1bmRlcmx5aW5nIHJlc291cmNlXG4gICAqIHdpbGwgYmVoYXZlIGlmIHRoZSB2YWx1ZSBpcyBub3Qgc3BlY2lmaWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgdW5rbm93blxuICAgKi9cbiAgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcHJvcGVydHkgaXMgZGVwcmVjYXRlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vdCBkZXByZWNhdGVkXG4gICAqL1xuICBkZXByZWNhdGVkPzogRGVwcmVjYXRpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgY2hhbmdlcyB0byB0aGlzIHByb3BlcnR5IG5lZWRzIHRvIGJlIHNjcnV0aW5pemVkIHNwZWNpYWxseVxuICAgKlxuICAgKiBAZGVmYXVsdCBQcm9wZXJ0eVNjcnV0aW55VHlwZS5OT05FXG4gICAqL1xuICBzY3J1dGluaXphYmxlPzogUHJvcGVydHlTY3J1dGlueVR5cGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNvbnRhaW5pbmcgcmVzb3VyY2Ugd2lsbCBiZSByZXBsYWNlZCBpZiB0aGlzIHByb3BlcnR5IGlzIGNoYW5nZWRcbiAgICpcbiAgICogQGRlZmF1bHQgJ25vJ1xuICAgKi9cbiAgY2F1c2VzUmVwbGFjZW1lbnQ/OiAneWVzJyB8ICdubycgfCAnbWF5YmUnO1xufVxuXG5leHBvcnQgY2xhc3MgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpZWxkOiBQaWNrPFByb3BlcnR5LCAndHlwZScgfCAncHJldmlvdXNUeXBlcyc+KSB7XG4gICAgaWYgKGZpZWxkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmllbGQgaXMgdW5kZWZpbmVkJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHR5cGVzKCk6IFByb3BlcnR5VHlwZVtdIHtcbiAgICByZXR1cm4gWy4uLih0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMgPz8gW10pLCB0aGlzLmZpZWxkLnR5cGVdO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgdHlwZSBvZiB0aGlzIHByb3BlcnR5IHdpdGggYSBuZXcgdHlwZVxuICAgKlxuICAgKiBPbmx5IGlmIGl0J3Mgbm90IGluIHRoZSBzZXQgb2YgdHlwZXMgYWxyZWFkeS5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVUeXBlKHR5cGU6IFByb3BlcnR5VHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJpY2hUeXBlID0gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodHlwZSk7XG5cbiAgICAvLyBPbmx5IGFkZCB0aGlzIHR5cGUgaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIGl0LiBXZSBhcmUgb25seSBkb2luZyBjb21wYXJpc29ucyB3aGVyZSAnaW50ZWdlcicgYW5kICdudW1iZXInXG4gICAgLy8gYXJlIHRyZWF0ZWQgdGhlIHNhbWUsIGZvciBhbGwgb3RoZXIgdHlwZXMgd2UgbmVlZCBzdHJpY3QgZXF1YWxpdHkuIFdlIHVzZWQgdG8gdXNlICdhc3NpZ25hYmxlVG8nIGFzIGFcbiAgICAvLyBjb25kaXRpb24sIGJ1dCB0aGVzZSB0eXBlcyB3aWxsIGJlIHJlbmRlcmVkIGluIGJvdGggY28tIGFuZCBjb250cmF2YXJpYW50IHBvc2l0aW9ucywgYW5kIHNvIHdlIHJlYWxseSBjYW4ndFxuICAgIC8vIGRvIG11Y2ggYmV0dGVyIHRoYW4gZnVsbCBlcXVhbGl0eS5cbiAgICBpZiAodGhpcy50eXBlcygpLnNvbWUoKHQpID0+IHJpY2hUeXBlLmVxdWFscyh0KSkpIHtcbiAgICAgIC8vIE5vdGhpbmcgdG8gZG8sIHR5cGUgaXMgYWxyZWFkeSBpbiB0aGVyZS5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTcGVjaWFsIGNhc2U6IGlmIHRoZSBuZXcgdHlwZSBpcyBgc3RyaW5nYCBhbmQgdGhlIG9sZCB0eXBlIGlzIGBkYXRlLXRpbWVgLCB3ZSBhc3N1bWUgdGhpcyBpc1xuICAgIC8vIHRoZSBzYW1lIHR5cGUgYnV0IHdlIGRyb3BwZWQgc29tZSBmb3JtYXR0aW5nIGluZm9ybWF0aW9uLiBObyBuZWVkIHRvIG1ha2UgdGhpcyBhIHNlcGFyYXRlIHR5cGUuXG4gICAgaWYgKHR5cGUudHlwZSA9PT0gJ3N0cmluZycgJiYgdGhpcy50eXBlcygpLnNvbWUoKHQpID0+IHQudHlwZSA9PT0gJ2RhdGUtdGltZScpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMpIHtcbiAgICAgIHRoaXMuZmllbGQucHJldmlvdXNUeXBlcyA9IFtdO1xuICAgIH1cbiAgICB0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMucHVzaCh0aGlzLmZpZWxkLnR5cGUpO1xuICAgIHRoaXMuZmllbGQudHlwZSA9IHR5cGU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJpY2hQcm9wZXJ0eSBleHRlbmRzIFJpY2hUeXBlZEZpZWxkIHtcbiAgY29uc3RydWN0b3IocHJvcGVydHk6IFByb3BlcnR5KSB7XG4gICAgc3VwZXIocHJvcGVydHkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSaWNoQXR0cmlidXRlIGV4dGVuZHMgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3RvcihhdHRyOiBBdHRyaWJ1dGUpIHtcbiAgICBzdXBlcihhdHRyKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZSB7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHR5cGU6IFByb3BlcnR5VHlwZTtcbiAgLyoqXG4gICAqIEFuIG9yZGVyZWQgbGlzdCBvZiBwcmV2aW91cyB0eXBlcyBvZiB0aGlzIHByb3BlcnR5IGluIGFzY2VuZGluZyBvcmRlclxuICAgKlxuICAgKiBEb2VzIG5vdCBpbmNsdWRlIHRoZSBjdXJyZW50IHR5cGUsIHVzZSBgdHlwZWAgZm9yIHRoaXMuXG4gICAqL1xuICBwcmV2aW91c1R5cGVzPzogUHJvcGVydHlUeXBlW107XG59XG5cbmV4cG9ydCBlbnVtIERlcHJlY2F0aW9uIHtcbiAgLyoqXG4gICAqIE5vdCBkZXByZWNhdGVkXG4gICAqL1xuICBOT05FID0gJ05PTkUnLFxuXG4gIC8qKlxuICAgKiBXYXJuIGFib3V0IHVzZVxuICAgKi9cbiAgV0FSTiA9ICdXQVJOJyxcblxuICAvKipcbiAgICogRG8gbm90IGVtaXQgdGhlIHZhbHVlIGF0IGFsbFxuICAgKlxuICAgKiAoSGFuZGxlIHByb3BlcnRpZXMgdGhhdCB3ZXJlIGluY29ycmVjdGx5IGFkZGVkIHRvIHRoZSBzcGVjKVxuICAgKi9cbiAgSUdOT1JFID0gJ0lHTk9SRScsXG59XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5VHlwZSA9XG4gIHwgUHJpbWl0aXZlVHlwZVxuICB8IERlZmluaXRpb25SZWZlcmVuY2VcbiAgfCBCdWlsdGluVGFnVHlwZVxuICB8IEFycmF5VHlwZTxQcm9wZXJ0eVR5cGU+XG4gIHwgTWFwVHlwZTxQcm9wZXJ0eVR5cGU+XG4gIHwgVHlwZVVuaW9uPFByb3BlcnR5VHlwZT47XG5cbmV4cG9ydCB0eXBlIFByaW1pdGl2ZVR5cGUgPVxuICB8IFN0cmluZ1R5cGVcbiAgfCBOdW1iZXJUeXBlXG4gIHwgSW50ZWdlclR5cGVcbiAgfCBCb29sZWFuVHlwZVxuICB8IEpzb25UeXBlXG4gIHwgRGF0ZVRpbWVUeXBlXG4gIHwgTnVsbFR5cGVcbiAgfCBCdWlsdGluVGFnVHlwZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29sbGVjdGlvblR5cGUoeDogUHJvcGVydHlUeXBlKTogeCBpcyBBcnJheVR5cGU8YW55PiB8IE1hcFR5cGU8YW55PiB7XG4gIHJldHVybiB4LnR5cGUgPT09ICdhcnJheScgfHwgeC50eXBlID09PSAnbWFwJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWdJbmZvcm1hdGlvbiB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBwcm9wZXJ0eSB0aGF0IGhvbGRzIHRoZSB0YWdzXG4gICAqL1xuICByZWFkb25seSB0YWdQcm9wZXJ0eU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVXNlZCB0byBpbnN0cnVjdCBjZGsuVGFnTWFuYWdlciBob3cgdG8gaGFuZGxlIHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHZhcmlhbnQ6IFRhZ1ZhcmlhbnQ7XG59XG5cbmV4cG9ydCB0eXBlIFRhZ1ZhcmlhbnQgPSAnc3RhbmRhcmQnIHwgJ2FzZycgfCAnbWFwJztcblxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3N0cmluZyc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEJ1aWx0aW5UYWdUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3RhZyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVtYmVyVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdudW1iZXInO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVnZXJUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2ludGVnZXInO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5UeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2Jvb2xlYW4nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25UeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2pzb24nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE51bGxUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ251bGwnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVUaW1lVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdkYXRlLXRpbWUnO1xufVxuXG4vKipcbiAqIFRoZSBcImxlZ2FjeVwiIHRhZyB0eXBlICh1c2VkIGluIHRoZSBvbGQgcmVzb3VyY2Ugc3BlYylcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsdGluVGFnVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICd0YWcnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlZmluaXRpb25SZWZlcmVuY2Uge1xuICByZWFkb25seSB0eXBlOiAncmVmJztcbiAgcmVhZG9ubHkgcmVmZXJlbmNlOiBSZWZlcmVuY2U8VHlwZURlZmluaXRpb24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFycmF5VHlwZTxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdhcnJheSc7XG4gIHJlYWRvbmx5IGVsZW1lbnQ6IEU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwVHlwZTxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdtYXAnO1xuICByZWFkb25seSBlbGVtZW50OiBFO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVVbmlvbjxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICd1bmlvbic7XG4gIHJlYWRvbmx5IHR5cGVzOiBFW107XG59XG5cbmV4cG9ydCB0eXBlIEhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFNlcnZpY2UsIFJlc291cmNlPjtcbmV4cG9ydCB0eXBlIFJlZ2lvbkhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFJlZ2lvbiwgUmVzb3VyY2U+O1xuZXhwb3J0IHR5cGUgUmVnaW9uSGFzU2VydmljZSA9IFJlbGF0aW9uc2hpcDxSZWdpb24sIFNlcnZpY2U+O1xuZXhwb3J0IHR5cGUgUmVzb3VyY2VEb2MgPSBSZWxhdGlvbnNoaXA8UmVzb3VyY2UsIERvY3VtZW50YXRpb24+O1xuXG5leHBvcnQgdHlwZSBTZXJ2aWNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBTZXJ2aWNlPjtcbmV4cG9ydCB0eXBlIFJlc291cmNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBSZXNvdXJjZT47XG5cbmV4cG9ydCB0eXBlIFVzZXNUeXBlID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBUeXBlRGVmaW5pdGlvbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VJZGVudGlmaWVyIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgYXJuVGVtcGxhdGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogTWFyayBhIHJlc291cmNlIGFzIGEgcmVzb3VyY2UgdGhhdCBuZWVkcyBhZGRpdGlvbmFsIHNjcnV0aXkgd2hlbiBhZGRlZCwgcmVtb3ZlZCBvciBjaGFuZ2VkXG4gKlxuICogVXNlZCB0byBtYXJrIHJlc291cmNlcyB0aGF0IHJlcHJlc2VudCBzZWN1cml0eSBwb2xpY2llcy5cbiAqL1xuZXhwb3J0IGVudW0gUmVzb3VyY2VTY3J1dGlueVR5cGUge1xuICAvKipcbiAgICogTm8gYWRkaXRpb25hbCBzY3J1dGlueVxuICAgKi9cbiAgTm9uZSA9ICdOb25lJyxcblxuICAvKipcbiAgICogQW4gZXh0ZXJuYWxseSBhdHRhY2hlZCBwb2xpY3kgZG9jdW1lbnQgdG8gYSByZXNvdXJjZVxuICAgKlxuICAgKiAoQ29tbW9uIGZvciBTUVMsIFNOUywgUzMsIC4uLilcbiAgICovXG4gIFJlc291cmNlUG9saWN5UmVzb3VyY2UgPSAnUmVzb3VyY2VQb2xpY3lSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gSUFNIHBvbGljeSBvbiBhbiBpZGVudGl0eSByZXNvdXJjZVxuICAgKlxuICAgKiAoQmFzaWNhbGx5IHNheWluZzogdGhpcyBpcyBBV1M6OklBTTo6UG9saWN5KVxuICAgKi9cbiAgSWRlbnRpdHlQb2xpY3lSZXNvdXJjZSA9ICdJZGVudGl0eVBvbGljeVJlc291cmNlJyxcblxuICAvKipcbiAgICogVGhpcyBpcyBhIExhbWJkYSBQZXJtaXNzaW9uIHBvbGljeVxuICAgKi9cbiAgTGFtYmRhUGVybWlzc2lvbiA9ICdMYW1iZGFQZXJtaXNzaW9uJyxcblxuICAvKipcbiAgICogQW4gaW5ncmVzcyBydWxlIG9iamVjdFxuICAgKi9cbiAgSW5ncmVzc1J1bGVSZXNvdXJjZSA9ICdJbmdyZXNzUnVsZVJlc291cmNlJyxcblxuICAvKipcbiAgICogQSBzZXQgb2YgZWdyZXNzIHJ1bGVzXG4gICAqL1xuICBFZ3Jlc3NSdWxlUmVzb3VyY2UgPSAnRWdyZXNzUnVsZVJlc291cmNlJyxcblxuICAvKipcbiAgICogQVdTOjpTU086OkFzc2lnbm1lbnRcbiAgICpcbiAgICogSUFNIElkZW50aXR5IENlbnRlciAoZm9ybWVybHkga25vd24gYXMgU1NPKVxuICAgKi9cbiAgU3NvQXNzaWdubWVudFJlc291cmNlID0gJ1Nzb0Fzc2lnbm1lbnRSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIEFXUzo6U1NPOjpJbnN0YW5jZUFjY2Vzc0NvbnRyb2xBdHRyaWJ1dGVDb25maWd1cmF0aW9uXG4gICAqXG4gICAqIElBTSBJZGVudGl0eSBDZW50ZXIgKGZvcm1lcmx5IGtub3duIGFzIFNTTylcbiAgICovXG4gIFNzb0luc3RhbmNlQUNBQ29uZmlnUmVzb3VyY2UgPSAnU3NvSW5zdGFuY2VBQ0FDb25maWdSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIEFXUzo6U1NPOjpQZXJtaXNzaW9uU2V0XG4gICAqXG4gICAqIElBTSBJZGVudGl0eSBDZW50ZXIgKGZvcm1lcmx5IGtub3duIGFzIFNTTylcbiAgICovXG4gIFNzb1Blcm1pc3Npb25TZXQgPSAnU3NvUGVybWlzc2lvblNldCcsXG59XG5cbi8qKlxuICogTWFyayBhIHByb3BlcnR5IGFzIGEgcHJvcGVydHkgdGhhdCBuZWVkcyBhZGRpdGlvbmFsIHNjcnV0aW55IHdoZW4gaXQgY2hhbmdlc1xuICpcbiAqIFVzZWQgdG8gbWFyayBzZW5zaXRpdmUgcHJvcGVydGllcyB0aGF0IGhhdmUgc2VjdXJpdHktcmVsYXRlZCBpbXBsaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCBlbnVtIFByb3BlcnR5U2NydXRpbnlUeXBlIHtcbiAgLyoqXG4gICAqIE5vIGFkZGl0aW9uYWwgc2NydXRpbnlcbiAgICovXG4gIE5vbmUgPSAnTm9uZScsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gSUFNIHBvbGljeSBkaXJlY3RseSBvbiBhIHJlc291cmNlXG4gICAqL1xuICBJbmxpbmVSZXNvdXJjZVBvbGljeSA9ICdJbmxpbmVSZXNvdXJjZVBvbGljeScsXG5cbiAgLyoqXG4gICAqIEVpdGhlciBhbiBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQgb3IgYSBkaWN0aW9uYXJ5IG9mIHBvbGljeSBkb2N1bWVudHNcbiAgICovXG4gIElubGluZUlkZW50aXR5UG9saWNpZXMgPSAnSW5saW5lSWRlbnRpdHlQb2xpY2llcycsXG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBtYW5hZ2VkIHBvbGljaWVzIChvbiBhbiBpZGVudGl0eSByZXNvdXJjZSlcbiAgICovXG4gIE1hbmFnZWRQb2xpY2llcyA9ICdNYW5hZ2VkUG9saWNpZXMnLFxuXG4gIC8qKlxuICAgKiBBIHNldCBvZiBpbmdyZXNzIHJ1bGVzIChvbiBhIHNlY3VyaXR5IGdyb3VwKVxuICAgKi9cbiAgSW5ncmVzc1J1bGVzID0gJ0luZ3Jlc3NSdWxlcycsXG5cbiAgLyoqXG4gICAqIEEgc2V0IG9mIGVncmVzcyBydWxlcyAob24gYSBzZWN1cml0eSBncm91cClcbiAgICovXG4gIEVncmVzc1J1bGVzID0gJ0VncmVzc1J1bGVzJyxcbn1cblxuZXhwb3J0IGNsYXNzIFJpY2hQcm9wZXJ0eVR5cGUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHR5cGU6IFByb3BlcnR5VHlwZSkge31cblxuICBwdWJsaWMgZXF1YWxzKHJoczogUHJvcGVydHlUeXBlKTogYm9vbGVhbiB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICByZXR1cm4gcmhzLnR5cGUgPT09IHRoaXMudHlwZS50eXBlO1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSB0aGlzLnR5cGUudHlwZSAmJiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuZXF1YWxzKHJocy5lbGVtZW50KTtcbiAgICAgIGNhc2UgJ3JlZic6XG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gJ3JlZicgJiYgdGhpcy50eXBlLnJlZmVyZW5jZS4kcmVmID09PSByaHMucmVmZXJlbmNlLiRyZWY7XG4gICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgIGNvbnN0IGxoc0tleSA9IHRoaXMuc29ydEtleSgpO1xuICAgICAgICBjb25zdCByaHNLZXkgPSBuZXcgUmljaFByb3BlcnR5VHlwZShyaHMpLnNvcnRLZXkoKTtcbiAgICAgICAgcmV0dXJuIGxoc0tleS5sZW5ndGggPT09IHJoc0tleS5sZW5ndGggJiYgbGhzS2V5LmV2ZXJ5KChsLCBpKSA9PiBsID09PSByaHNLZXlbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjdXJyZW50IHR5cGUgaXMgSmF2YVNjcmlwdC1lcXVhbCB0byB0aGUgUkhTIHR5cGVcbiAgICpcbiAgICogU2FtZSBhcyBub3JtYWwgZXF1YWxpdHksIGJ1dCBjb25zaWRlciBgaW50ZWdlcmAgYW5kIGBudW1iZXJgIHRoZSBzYW1lIHR5cGVzLlxuICAgKi9cbiAgcHVibGljIGphdmFzY3JpcHRFcXVhbHMocmhzOiBQcm9wZXJ0eVR5cGUpOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICAgIC8vIFdpZGVuaW5nXG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gJ2ludGVnZXInIHx8IHJocy50eXBlID09PSAnbnVtYmVyJztcblxuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSB0aGlzLnR5cGUudHlwZSAmJiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuamF2YXNjcmlwdEVxdWFscyhyaHMuZWxlbWVudCk7XG5cbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgaWYgKHJocy50eXBlICE9PSAndW5pb24nKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5IHR5cGUgaW4gdGhpcyB1bmlvbiBuZWVkcyB0byBiZSBlcXVhbCBvbmUgdHlwZSBpbiBSSFNcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50eXBlcy5ldmVyeSgodDEpID0+IHJocy50eXBlcy5zb21lKCh0MikgPT4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodDEpLmphdmFzY3JpcHRFcXVhbHModDIpKSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIEZvciBhbnl0aGluZyBlbHNlLCBuZWVkIHN0cmljdCBlcXVhbGl0eVxuICAgICAgICByZXR1cm4gdGhpcy5lcXVhbHMocmhzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY3VycmVudCB0eXBlIGlzIGFzc2lnbmFibGUgdG8gdGhlIFJIUyB0eXBlLlxuICAgKlxuICAgKiBUaGlzIGlzIG1lYW5zIGV2ZXJ5IHR5cGUgbWVtYmVyIG9mIHRoZSBMSFMgbXVzdCBiZSBwcmVzZW50IGluIHRoZSBSSFMgdHlwZVxuICAgKi9cbiAgcHVibGljIGFzc2lnbmFibGVUbyhyaHM6IFByb3BlcnR5VHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGV4dHJhY3RNZW1iZXJzID0gKHR5cGU6IFByb3BlcnR5VHlwZSk6IFByb3BlcnR5VHlwZVtdID0+ICh0eXBlLnR5cGUgPT0gJ3VuaW9uJyA/IHR5cGUudHlwZXMgOiBbdHlwZV0pO1xuICAgIGNvbnN0IGFzUmljaFR5cGUgPSAodHlwZTogUHJvcGVydHlUeXBlKTogUmljaFByb3BlcnR5VHlwZSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0eXBlKTtcblxuICAgIGNvbnN0IHJoc01lbWJlcnMgPSBleHRyYWN0TWVtYmVycyhyaHMpO1xuICAgIGZvciAoY29uc3QgbGhzTWVtYmVyIG9mIGV4dHJhY3RNZW1iZXJzKHRoaXMudHlwZSkubWFwKGFzUmljaFR5cGUpKSB7XG4gICAgICBpZiAoIXJoc01lbWJlcnMuc29tZSgodHlwZSkgPT4gbGhzTWVtYmVyLmVxdWFscyh0eXBlKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHZlcnNpb24gb2YgdGhpcyB0eXBlLCBidXQgd2l0aCBhbGwgdHlwZSB1bmlvbnMgaW4gYSByZWd1bGFyaXplZCBvcmRlclxuICAgKi9cbiAgcHVibGljIG5vcm1hbGl6ZShkYjogU3BlY0RhdGFiYXNlKTogUmljaFByb3BlcnR5VHlwZSB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIG5ldyBSaWNoUHJvcGVydHlUeXBlKHtcbiAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUudHlwZSxcbiAgICAgICAgICBlbGVtZW50OiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkubm9ybWFsaXplKGRiKS50eXBlLFxuICAgICAgICB9KTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgY29uc3QgdHlwZXMgPSB0aGlzLnR5cGUudHlwZXNcbiAgICAgICAgICAubWFwKCh0KSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0KS5ub3JtYWxpemUoZGIpKVxuICAgICAgICAgIC5tYXAoKHQpID0+IFt0LCB0LnNvcnRLZXkoZGIpXSBhcyBjb25zdCk7XG4gICAgICAgIHR5cGVzLnNvcnQoc29ydEtleUNvbXBhcmF0b3IoKFtfLCBzb3J0S2V5XSkgPT4gc29ydEtleSkpO1xuICAgICAgICByZXR1cm4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUoe1xuICAgICAgICAgIHR5cGU6ICd1bmlvbicsXG4gICAgICAgICAgdHlwZXM6IHR5cGVzLm1hcCgoW3QsIF9dKSA9PiB0LnR5cGUpLFxuICAgICAgICB9KTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdHJpbmdpZnkoZGI6IFNwZWNEYXRhYmFzZSwgd2l0aElkID0gdHJ1ZSk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICByZXR1cm4gdGhpcy50eXBlLnR5cGU7XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICAgIHJldHVybiBgQXJyYXk8JHtuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuc3RyaW5naWZ5KGRiLCB3aXRoSWQpfT5gO1xuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIGBNYXA8c3RyaW5nLCAke25ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5zdHJpbmdpZnkoZGIsIHdpdGhJZCl9PmA7XG4gICAgICBjYXNlICdyZWYnOlxuICAgICAgICBjb25zdCB0eXBlID0gZGIuZ2V0KCd0eXBlRGVmaW5pdGlvbicsIHRoaXMudHlwZS5yZWZlcmVuY2UpO1xuICAgICAgICByZXR1cm4gd2l0aElkID8gYCR7dHlwZS5uYW1lfSgke3RoaXMudHlwZS5yZWZlcmVuY2UuJHJlZn0pYCA6IHR5cGUubmFtZTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50eXBlcy5tYXAoKHQpID0+IG5ldyBSaWNoUHJvcGVydHlUeXBlKHQpLnN0cmluZ2lmeShkYiwgd2l0aElkKSkuam9pbignIHwgJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHNvcnRhYmxlIGtleSBiYXNlZCBvbiB0aGlzIHR5cGVcbiAgICpcbiAgICogSWYgYSBkYXRhYmFzZSBpcyBnaXZlbiwgdHlwZSBkZWZpbml0aW9ucyB3aWxsIGJlIHNvcnRlZCBiYXNlZCBvbiB0eXBlIG5hbWUsXG4gICAqIG90aGVyd2lzZSBvbiBpZGVudGlmaWVyXG4gICAqL1xuICBwdWJsaWMgc29ydEtleShkYj86IFNwZWNEYXRhYmFzZSk6IHN0cmluZ1tdIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnZGF0ZS10aW1lJzpcbiAgICAgIGNhc2UgJ2pzb24nOlxuICAgICAgY2FzZSAnbnVsbCc6XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3RhZyc6XG4gICAgICAgIHJldHVybiBbJzAnLCB0aGlzLnR5cGUudHlwZV07XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICBjYXNlICdtYXAnOlxuICAgICAgICByZXR1cm4gWycxJywgdGhpcy50eXBlLnR5cGUsIC4uLm5ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5zb3J0S2V5KGRiKV07XG4gICAgICBjYXNlICdyZWYnOlxuICAgICAgICByZXR1cm4gWycyJywgdGhpcy50eXBlLnR5cGUsIGRiPy5nZXQoJ3R5cGVEZWZpbml0aW9uJywgdGhpcy50eXBlLnJlZmVyZW5jZSk/Lm5hbWUgPz8gdGhpcy50eXBlLnJlZmVyZW5jZS4kcmVmXTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgY29uc3QgdHlwZUtleXMgPSB0aGlzLnR5cGUudHlwZXMubWFwKCh0KSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0KS5zb3J0S2V5KGRiKSk7XG4gICAgICAgIHR5cGVLZXlzLnNvcnQoc29ydEtleUNvbXBhcmF0b3IoKHgpID0+IHgpKTtcbiAgICAgICAgcmV0dXJuIFsnMycsIHRoaXMudHlwZS50eXBlLCAuLi50eXBlS2V5cy5mbGF0TWFwKCh4KSA9PiB4KV07XG4gICAgfVxuICB9XG59XG4iXX0= + +/***/ }), + +/***/ 52577: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + +Object.defineProperty(exports, "__esModule", ({ value: true })); +exports.sortKeyComparator = void 0; +/** + * Make a sorting comparator that will sort by a given sort key + */ +function sortKeyComparator(keyFn) { + return (a, b) => { + const ak = keyFn(a); + const bk = keyFn(b); + for (let i = 0; i < ak.length && i < bk.length; i++) { + const av = ak[i]; + const bv = bk[i]; + let diff = 0; + if (typeof av === 'number' && typeof bv === 'number') { + diff = av - bv; + } + else if (typeof av === 'string' && typeof bv === 'string') { + diff = av.localeCompare(bv); + } + if (diff !== 0) { + return diff; + } + } + return bk.length - ak.length; + }; +} +exports.sortKeyComparator = sortKeyComparator; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3NvcnRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxTQUFnQixpQkFBaUIsQ0FBSSxLQUF1QztJQUMxRSxPQUFPLENBQUMsQ0FBSSxFQUFFLENBQUksRUFBVSxFQUFFO1FBQzVCLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbkQsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVqQixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7WUFDYixJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQUU7Z0JBQ3BELElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQ2hCO2lCQUFNLElBQUksT0FBTyxFQUFFLEtBQUssUUFBUSxJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRTtnQkFDM0QsSUFBSSxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDN0I7WUFFRCxJQUFJLElBQUksS0FBSyxDQUFDLEVBQUU7Z0JBQ2QsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBRUQsT0FBTyxFQUFFLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDL0IsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQXZCRCw4Q0F1QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1ha2UgYSBzb3J0aW5nIGNvbXBhcmF0b3IgdGhhdCB3aWxsIHNvcnQgYnkgYSBnaXZlbiBzb3J0IGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydEtleUNvbXBhcmF0b3I8QT4oa2V5Rm46ICh4OiBBKSA9PiBBcnJheTxzdHJpbmcgfCBudW1iZXI+KSB7XG4gIHJldHVybiAoYTogQSwgYjogQSk6IG51bWJlciA9PiB7XG4gICAgY29uc3QgYWsgPSBrZXlGbihhKTtcbiAgICBjb25zdCBiayA9IGtleUZuKGIpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhay5sZW5ndGggJiYgaSA8IGJrLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBhdiA9IGFrW2ldO1xuICAgICAgY29uc3QgYnYgPSBia1tpXTtcblxuICAgICAgbGV0IGRpZmYgPSAwO1xuICAgICAgaWYgKHR5cGVvZiBhdiA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGJ2ID09PSAnbnVtYmVyJykge1xuICAgICAgICBkaWZmID0gYXYgLSBidjtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGF2ID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgYnYgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGRpZmYgPSBhdi5sb2NhbGVDb21wYXJlKGJ2KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpZmYgIT09IDApIHtcbiAgICAgICAgcmV0dXJuIGRpZmY7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGJrLmxlbmd0aCAtIGFrLmxlbmd0aDtcbiAgfTtcbn1cbiJdfQ== + +/***/ }), + /***/ 34146: /***/ ((module) => { @@ -3821,7 +4321,7 @@ class Manifest { } exports.Manifest = Manifest; _a = JSII_RTTI_SYMBOL_1; -Manifest[_a] = { fqn: "@aws-cdk/cloud-assembly-schema.Manifest", version: "2.139.0" }; +Manifest[_a] = { fqn: "@aws-cdk/cloud-assembly-schema.Manifest", version: "2.140.0" }; function mapValues(xs, fn) { if (!xs) { return undefined; @@ -9266,7 +9766,7 @@ function normalize(template) { } } } -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi10ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmYtdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSwrQkFBK0I7QUFDL0Isc0NBQXNDO0FBQ3RDLHNDQUFvRTtBQUVwRSwrQ0FBNkI7QUFPN0IsTUFBTSxhQUFhLEdBQW9CO0lBQ3JDLHdCQUF3QixFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUNyRCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO0lBQ3hFLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUM7SUFDM0QsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUEsd0JBQWlCLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUcsVUFBVSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUEsd0JBQWlCLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0csUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLElB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QUMsS0FBSyxRQUFRLEVBQUU7Z0JBQzdELFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN6QyxTQUFTO2FBQ1Y7aUJBQU0sSUFBSSxHQUFHLEtBQUssV0FBVyxFQUFFO2dCQUM5QixJQUFJLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsRUFBRTtvQkFDckMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQ2pDO3FCQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtvQkFDdkMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztpQkFDdEM7Z0JBQ0QsU0FBUzthQUNWO1lBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNoQyxLQUFLLE1BQU0sT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7b0JBQ3JDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDcEI7YUFDRjtpQkFBTTtnQkFDTCxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDMUI7U0FDRjtLQUNGO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZSBTREsgaXMgb25seSB1c2VkIHRvIHJlZmVyZW5jZSBgRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXRgLCBzbyB0aGUgU0RLIGlzIGFkZGVkIGFzIGEgZGV2RGVwZW5kZW5jeS5cbi8vIFRoZSBTREsgc2hvdWxkIG5vdCBtYWtlIG5ldHdvcmsgY2FsbHMgaGVyZVxuaW1wb3J0IHR5cGUgeyBEZXNjcmliZUNoYW5nZVNldE91dHB1dCBhcyBEZXNjcmliZUNoYW5nZVNldCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgKiBhcyBpbXBsIGZyb20gJy4vZGlmZic7XG5pbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuL2RpZmYvdHlwZXMnO1xuaW1wb3J0IHsgZGVlcEVxdWFsLCBkaWZmS2V5ZWRFbnRpdGllcywgdW5pb25PZiB9IGZyb20gJy4vZGlmZi91dGlsJztcblxuZXhwb3J0ICogZnJvbSAnLi9kaWZmL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXQgPSBEZXNjcmliZUNoYW5nZVNldDtcblxudHlwZSBEaWZmSGFuZGxlciA9IChkaWZmOiB0eXBlcy5JVGVtcGxhdGVEaWZmLCBvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB2b2lkO1xudHlwZSBIYW5kbGVyUmVnaXN0cnkgPSB7IFtzZWN0aW9uOiBzdHJpbmddOiBEaWZmSGFuZGxlciB9O1xuXG5jb25zdCBESUZGX0hBTkRMRVJTOiBIYW5kbGVyUmVnaXN0cnkgPSB7XG4gIEFXU1RlbXBsYXRlRm9ybWF0VmVyc2lvbjogKGRpZmYsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT5cbiAgICBkaWZmLmF3c1RlbXBsYXRlRm9ybWF0VmVyc2lvbiA9IGltcGwuZGlmZkF0dHJpYnV0ZShvbGRWYWx1ZSwgbmV3VmFsdWUpLFxuICBEZXNjcmlwdGlvbjogKGRpZmYsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT5cbiAgICBkaWZmLmRlc2NyaXB0aW9uID0gaW1wbC5kaWZmQXR0cmlidXRlKG9sZFZhbHVlLCBuZXdWYWx1ZSksXG4gIE1ldGFkYXRhOiAoZGlmZiwgb2xkVmFsdWUsIG5ld1ZhbHVlKSA9PlxuICAgIGRpZmYubWV0YWRhdGEgPSBuZXcgdHlwZXMuRGlmZmVyZW5jZUNvbGxlY3Rpb24oZGlmZktleWVkRW50aXRpZXMob2xkVmFsdWUsIG5ld1ZhbHVlLCBpbXBsLmRpZmZNZXRhZGF0YSkpLFxuICBQYXJhbWV0ZXJzOiAoZGlmZiwgb2xkVmFsdWUsIG5ld1ZhbHVlKSA9PlxuICAgIGRpZmYucGFyYW1ldGVycyA9IG5ldyB0eXBlcy5EaWZmZXJlbmNlQ29sbGVjdGlvbihkaWZmS2V5ZWRFbnRpdGllcyhvbGRWYWx1ZSwgbmV3VmFsdWUsIGltcGwuZGlmZlBhcmFtZXRlcikpLFxuICBNYXBwaW5nczogKGRpZmYsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT5cbiAgICBkaWZmLm1hcHBpbmdzID0gbmV3IHR5cGVzLkRpZmZlcmVuY2VDb2xsZWN0aW9uKGRpZmZLZXllZEVudGl0aWVzKG9sZFZhbHVlLCBuZXdWYWx1ZSwgaW1wbC5kaWZmTWFwcGluZykpLFxuICBDb25kaXRpb25zOiAoZGlmZiwgb2xkVmFsdWUsIG5ld1ZhbHVlKSA9PlxuICAgIGRpZmYuY29uZGl0aW9ucyA9IG5ldyB0eXBlcy5EaWZmZXJlbmNlQ29sbGVjdGlvbihkaWZmS2V5ZWRFbnRpdGllcyhvbGRWYWx1ZSwgbmV3VmFsdWUsIGltcGwuZGlmZkNvbmRpdGlvbikpLFxuICBUcmFuc2Zvcm06IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi50cmFuc2Zvcm0gPSBpbXBsLmRpZmZBdHRyaWJ1dGUob2xkVmFsdWUsIG5ld1ZhbHVlKSxcbiAgUmVzb3VyY2VzOiAoZGlmZiwgb2xkVmFsdWUsIG5ld1ZhbHVlKSA9PlxuICAgIGRpZmYucmVzb3VyY2VzID0gbmV3IHR5cGVzLkRpZmZlcmVuY2VDb2xsZWN0aW9uKGRpZmZLZXllZEVudGl0aWVzKG9sZFZhbHVlLCBuZXdWYWx1ZSwgaW1wbC5kaWZmUmVzb3VyY2UpKSxcbiAgT3V0cHV0czogKGRpZmYsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT5cbiAgICBkaWZmLm91dHB1dHMgPSBuZXcgdHlwZXMuRGlmZmVyZW5jZUNvbGxlY3Rpb24oZGlmZktleWVkRW50aXRpZXMob2xkVmFsdWUsIG5ld1ZhbHVlLCBpbXBsLmRpZmZPdXRwdXQpKSxcbn07XG5cbi8qKlxuICogQ29tcGFyZSB0d28gQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGVzIGFuZCByZXR1cm4gc2VtYW50aWMgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGVtLlxuICpcbiAqIEBwYXJhbSBjdXJyZW50VGVtcGxhdGUgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHN0YWNrLlxuICogQHBhcmFtIG5ld1RlbXBsYXRlICAgICB0aGUgdGFyZ2V0IHN0YXRlIG9mIHRoZSBzdGFjay5cbiAqIEBwYXJhbSBjaGFuZ2VTZXQgICAgICAgdGhlIGNoYW5nZSBzZXQgZm9yIHRoaXMgc3RhY2suXG4gKlxuICogQHJldHVybnMgYSArdHlwZXMuVGVtcGxhdGVEaWZmKyBvYmplY3QgdGhhdCByZXByZXNlbnRzIHRoZSBjaGFuZ2VzIHRoYXQgd2lsbCBoYXBwZW4gaWZcbiAqICAgICAgYSBzdGFjayB3aGljaCBjdXJyZW50IHN0YXRlIGlzIGRlc2NyaWJlZCBieSArY3VycmVudFRlbXBsYXRlKyBpcyB1cGRhdGVkIHdpdGhcbiAqICAgICAgdGhlIHRlbXBsYXRlICtuZXdUZW1wbGF0ZSsuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmdWxsRGlmZihcbiAgY3VycmVudFRlbXBsYXRlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICBuZXdUZW1wbGF0ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgY2hhbmdlU2V0PzogRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXQsXG4gIGlzSW1wb3J0PzogYm9vbGVhbixcbik6IHR5cGVzLlRlbXBsYXRlRGlmZiB7XG5cbiAgbm9ybWFsaXplKGN1cnJlbnRUZW1wbGF0ZSk7XG4gIG5vcm1hbGl6ZShuZXdUZW1wbGF0ZSk7XG4gIGNvbnN0IHRoZURpZmYgPSBkaWZmVGVtcGxhdGUoY3VycmVudFRlbXBsYXRlLCBuZXdUZW1wbGF0ZSk7XG4gIGlmIChjaGFuZ2VTZXQpIHtcbiAgICBmaWx0ZXJGYWxzZVBvc2l0aXZlcyh0aGVEaWZmLCBjaGFuZ2VTZXQpO1xuICAgIGFkZEltcG9ydEluZm9ybWF0aW9uKHRoZURpZmYsIGNoYW5nZVNldCk7XG4gIH0gZWxzZSBpZiAoaXNJbXBvcnQpIHtcbiAgICBtYWtlQWxsUmVzb3VyY2VDaGFuZ2VzSW1wb3J0cyh0aGVEaWZmKTtcbiAgfVxuXG4gIHJldHVybiB0aGVEaWZmO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlRlbXBsYXRlKFxuICBjdXJyZW50VGVtcGxhdGU6IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gIG5ld1RlbXBsYXRlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuKTogdHlwZXMuVGVtcGxhdGVEaWZmIHtcblxuICAvLyBCYXNlIGRpZmZcbiAgY29uc3QgdGhlRGlmZiA9IGNhbGN1bGF0ZVRlbXBsYXRlRGlmZihjdXJyZW50VGVtcGxhdGUsIG5ld1RlbXBsYXRlKTtcblxuICAvLyBXZSdyZSBnb2luZyB0byBtb2RpZnkgdGhpcyBpbi1wbGFjZVxuICBjb25zdCBuZXdUZW1wbGF0ZUNvcHkgPSBkZWVwQ29weShuZXdUZW1wbGF0ZSk7XG5cbiAgbGV0IGRpZFByb3BhZ2F0ZVJlZmVyZW5jZUNoYW5nZXM7XG4gIGxldCBkaWZmV2l0aFJlcGxhY2VtZW50cztcbiAgZG8ge1xuICAgIGRpZmZXaXRoUmVwbGFjZW1lbnRzID0gY2FsY3VsYXRlVGVtcGxhdGVEaWZmKGN1cnJlbnRUZW1wbGF0ZSwgbmV3VGVtcGxhdGVDb3B5KTtcblxuICAgIC8vIFByb3BhZ2F0ZSByZXBsYWNlbWVudHMgZm9yIHJlcGxhY2VkIHJlc291cmNlc1xuICAgIGRpZFByb3BhZ2F0ZVJlZmVyZW5jZUNoYW5nZXMgPSBmYWxzZTtcbiAgICBpZiAoZGlmZldpdGhSZXBsYWNlbWVudHMucmVzb3VyY2VzKSB7XG4gICAgICBkaWZmV2l0aFJlcGxhY2VtZW50cy5yZXNvdXJjZXMuZm9yRWFjaERpZmZlcmVuY2UoKGxvZ2ljYWxJZCwgY2hhbmdlKSA9PiB7XG4gICAgICAgIGlmIChjaGFuZ2UuY2hhbmdlSW1wYWN0ID09PSB0eXBlcy5SZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0UpIHtcbiAgICAgICAgICBpZiAocHJvcGFnYXRlUmVwbGFjZWRSZWZlcmVuY2VzKG5ld1RlbXBsYXRlQ29weSwgbG9naWNhbElkKSkge1xuICAgICAgICAgICAgZGlkUHJvcGFnYXRlUmVmZXJlbmNlQ2hhbmdlcyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0gd2hpbGUgKGRpZFByb3BhZ2F0ZVJlZmVyZW5jZUNoYW5nZXMpO1xuXG4gIC8vIENvcHkgXCJyZXBsYWNlZFwiIHN0YXRlcyBmcm9tIGBkaWZmV2l0aFJlcGxhY2VtZW50c2AgdG8gYHRoZURpZmZgLlxuICBkaWZmV2l0aFJlcGxhY2VtZW50cy5yZXNvdXJjZXNcbiAgICAuZmlsdGVyKHIgPT4gaXNSZXBsYWNlbWVudChyIS5jaGFuZ2VJbXBhY3QpKVxuICAgIC5mb3JFYWNoRGlmZmVyZW5jZSgobG9naWNhbElkLCBkb3duc3RyZWFtUmVwbGFjZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IHJlc291cmNlID0gdGhlRGlmZi5yZXNvdXJjZXMuZ2V0KGxvZ2ljYWxJZCk7XG5cbiAgICAgIGlmIChyZXNvdXJjZS5jaGFuZ2VJbXBhY3QgIT09IGRvd25zdHJlYW1SZXBsYWNlbWVudC5jaGFuZ2VJbXBhY3QpIHtcbiAgICAgICAgcHJvcGFnYXRlUHJvcGVydHlSZXBsYWNlbWVudChkb3duc3RyZWFtUmVwbGFjZW1lbnQsIHJlc291cmNlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICByZXR1cm4gdGhlRGlmZjtcbn1cblxuZnVuY3Rpb24gaXNSZXBsYWNlbWVudChpbXBhY3Q6IHR5cGVzLlJlc291cmNlSW1wYWN0KSB7XG4gIHJldHVybiBpbXBhY3QgPT09IHR5cGVzLlJlc291cmNlSW1wYWN0Lk1BWV9SRVBMQUNFIHx8IGltcGFjdCA9PT0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuV0lMTF9SRVBMQUNFO1xufVxuXG4vKipcbiAqIEZvciBhbGwgcHJvcGVydGllcyBpbiAnc291cmNlJyB0aGF0IGhhdmUgYSBcInJlcGxhY2VtZW50XCIgaW1wYWN0LCBwcm9wYWdhdGUgdGhhdCBpbXBhY3QgdG8gXCJkZXN0XCJcbiAqL1xuZnVuY3Rpb24gcHJvcGFnYXRlUHJvcGVydHlSZXBsYWNlbWVudChzb3VyY2U6IHR5cGVzLlJlc291cmNlRGlmZmVyZW5jZSwgZGVzdDogdHlwZXMuUmVzb3VyY2VEaWZmZXJlbmNlKSB7XG4gIGZvciAoY29uc3QgW3Byb3BlcnR5TmFtZSwgZGlmZl0gb2YgT2JqZWN0LmVudHJpZXMoc291cmNlLnByb3BlcnR5VXBkYXRlcykpIHtcbiAgICBpZiAoZGlmZi5jaGFuZ2VJbXBhY3QgJiYgaXNSZXBsYWNlbWVudChkaWZmLmNoYW5nZUltcGFjdCkpIHtcbiAgICAgIC8vIFVzZSB0aGUgcHJvcGVydHlkaWZmIG9mIHNvdXJjZSBpbiB0YXJnZXQuIFRoZSByZXN1bHQgb2YgdGhpcyBoYXBwZW5zIHRvIGJlIGNsZWFyIGVub3VnaC5cbiAgICAgIGRlc3Quc2V0UHJvcGVydHlDaGFuZ2UocHJvcGVydHlOYW1lLCBkaWZmKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlVGVtcGxhdGVEaWZmKGN1cnJlbnRUZW1wbGF0ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgbmV3VGVtcGxhdGU6IHsgW2tleTogc3RyaW5nXTogYW55IH0pOiB0eXBlcy5UZW1wbGF0ZURpZmYge1xuICBjb25zdCBkaWZmZXJlbmNlczogdHlwZXMuSVRlbXBsYXRlRGlmZiA9IHt9O1xuICBjb25zdCB1bmtub3duOiB7IFtrZXk6IHN0cmluZ106IHR5cGVzLkRpZmZlcmVuY2U8YW55PiB9ID0ge307XG4gIGZvciAoY29uc3Qga2V5IG9mIHVuaW9uT2YoT2JqZWN0LmtleXMoY3VycmVudFRlbXBsYXRlKSwgT2JqZWN0LmtleXMobmV3VGVtcGxhdGUpKS5zb3J0KCkpIHtcbiAgICBjb25zdCBvbGRWYWx1ZSA9IGN1cnJlbnRUZW1wbGF0ZVtrZXldO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gbmV3VGVtcGxhdGVba2V5XTtcbiAgICBpZiAoZGVlcEVxdWFsKG9sZFZhbHVlLCBuZXdWYWx1ZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBoYW5kbGVyOiBEaWZmSGFuZGxlciA9IERJRkZfSEFORExFUlNba2V5XVxuICAgICAgICAgICAgICAgICAgfHwgKChfZGlmZiwgb2xkViwgbmV3VikgPT4gdW5rbm93bltrZXldID0gaW1wbC5kaWZmVW5rbm93bihvbGRWLCBuZXdWKSk7XG4gICAgaGFuZGxlcihkaWZmZXJlbmNlcywgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgfVxuICBpZiAoT2JqZWN0LmtleXModW5rbm93bikubGVuZ3RoID4gMCkge1xuICAgIGRpZmZlcmVuY2VzLnVua25vd24gPSBuZXcgdHlwZXMuRGlmZmVyZW5jZUNvbGxlY3Rpb24odW5rbm93bik7XG4gIH1cblxuICByZXR1cm4gbmV3IHR5cGVzLlRlbXBsYXRlRGlmZihkaWZmZXJlbmNlcyk7XG59XG5cbi8qKlxuICogQ29tcGFyZSB0d28gQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2VzIGFuZCByZXR1cm4gc2VtYW50aWMgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGVtXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmUmVzb3VyY2Uob2xkVmFsdWU6IHR5cGVzLlJlc291cmNlLCBuZXdWYWx1ZTogdHlwZXMuUmVzb3VyY2UpOiB0eXBlcy5SZXNvdXJjZURpZmZlcmVuY2Uge1xuICByZXR1cm4gaW1wbC5kaWZmUmVzb3VyY2Uob2xkVmFsdWUsIG5ld1ZhbHVlKTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBnaXZlbiBsb2dpY2FsSUQgb24gdGhlIGdpdmVuIHRlbXBsYXRlLCBpbi1wbGFjZVxuICpcbiAqIFJldHVybnMgdHJ1ZSBpZmYgYW55IHJlZmVyZW5jZXMgd2VyZSByZXBsYWNlZC5cbiAqL1xuZnVuY3Rpb24gcHJvcGFnYXRlUmVwbGFjZWRSZWZlcmVuY2VzKHRlbXBsYXRlOiBvYmplY3QsIGxvZ2ljYWxJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGxldCByZXQgPSBmYWxzZTtcblxuICBmdW5jdGlvbiByZWN1cnNlKG9iajogYW55KSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgb2JqLmZvckVhY2gocmVjdXJzZSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbCkge1xuICAgICAgaWYgKCFyZXBsYWNlUmVmZXJlbmNlKG9iaikpIHtcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhvYmopLmZvckVhY2gocmVjdXJzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVwbGFjZVJlZmVyZW5jZShvYmo6IGFueSkge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgIGlmIChrZXlzLmxlbmd0aCAhPT0gMSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBjb25zdCBrZXkgPSBrZXlzWzBdO1xuXG4gICAgaWYgKGtleSA9PT0gJ1JlZicpIHtcbiAgICAgIGlmIChvYmouUmVmID09PSBsb2dpY2FsSWQpIHtcbiAgICAgICAgb2JqLlJlZiA9IGxvZ2ljYWxJZCArICcgKHJlcGxhY2VkKSc7XG4gICAgICAgIHJldCA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoJ0ZuOjonKSkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqW2tleV0pICYmIG9ialtrZXldLmxlbmd0aCA+IDAgJiYgb2JqW2tleV1bMF0gPT09IGxvZ2ljYWxJZCkge1xuICAgICAgICBvYmpba2V5XVswXSA9IGxvZ2ljYWxJZCArICcocmVwbGFjZWQpJztcbiAgICAgICAgcmV0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJlY3Vyc2UodGVtcGxhdGUpO1xuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBkZWVwQ29weSh4OiBhbnkpOiBhbnkge1xuICBpZiAoQXJyYXkuaXNBcnJheSh4KSkge1xuICAgIHJldHVybiB4Lm1hcChkZWVwQ29weSk7XG4gIH1cblxuICBpZiAodHlwZW9mIHggPT09ICdvYmplY3QnICYmIHggIT09IG51bGwpIHtcbiAgICBjb25zdCByZXQ6IGFueSA9IHt9O1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHgpKSB7XG4gICAgICByZXRba2V5XSA9IGRlZXBDb3B5KHhba2V5XSk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICByZXR1cm4geDtcbn1cblxuZnVuY3Rpb24gYWRkSW1wb3J0SW5mb3JtYXRpb24oZGlmZjogdHlwZXMuVGVtcGxhdGVEaWZmLCBjaGFuZ2VTZXQ6IERlc2NyaWJlQ2hhbmdlU2V0T3V0cHV0KSB7XG4gIGNvbnN0IGltcG9ydHMgPSBmaW5kUmVzb3VyY2VJbXBvcnRzKGNoYW5nZVNldCk7XG4gIGRpZmYucmVzb3VyY2VzLmZvckVhY2hEaWZmZXJlbmNlKChsb2dpY2FsSWQ6IHN0cmluZywgY2hhbmdlOiB0eXBlcy5SZXNvdXJjZURpZmZlcmVuY2UpID0+IHtcbiAgICBpZiAoaW1wb3J0cy5pbmNsdWRlcyhsb2dpY2FsSWQpKSB7XG4gICAgICBjaGFuZ2UuaXNJbXBvcnQgPSB0cnVlO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1ha2VBbGxSZXNvdXJjZUNoYW5nZXNJbXBvcnRzKGRpZmY6IHR5cGVzLlRlbXBsYXRlRGlmZikge1xuICBkaWZmLnJlc291cmNlcy5mb3JFYWNoRGlmZmVyZW5jZSgoX2xvZ2ljYWxJZDogc3RyaW5nLCBjaGFuZ2U6IHR5cGVzLlJlc291cmNlRGlmZmVyZW5jZSkgPT4ge1xuICAgIGNoYW5nZS5pc0ltcG9ydCA9IHRydWU7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBmaWx0ZXJGYWxzZVBvc2l0aXZlcyhkaWZmOiB0eXBlcy5UZW1wbGF0ZURpZmYsIGNoYW5nZVNldDogRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXQpIHtcbiAgY29uc3QgcmVwbGFjZW1lbnRzID0gZmluZFJlc291cmNlUmVwbGFjZW1lbnRzKGNoYW5nZVNldCk7XG4gIGRpZmYucmVzb3VyY2VzLmZvckVhY2hEaWZmZXJlbmNlKChsb2dpY2FsSWQ6IHN0cmluZywgY2hhbmdlOiB0eXBlcy5SZXNvdXJjZURpZmZlcmVuY2UpID0+IHtcbiAgICBpZiAoY2hhbmdlLnJlc291cmNlVHlwZS5pbmNsdWRlcygnQVdTOjpTZXJ2ZXJsZXNzJykpIHtcbiAgICAgIC8vIENGTiBhcHBsaWVzIHRoZSBTQU0gdHJhbnNmb3JtIGJlZm9yZSBjcmVhdGluZyB0aGUgY2hhbmdlc2V0LCBzbyB0aGUgY2hhbmdlc2V0IGNvbnRhaW5zIG5vIGluZm9ybWF0aW9uIGFib3V0IFNBTSByZXNvdXJjZXNcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2hhbmdlLmZvckVhY2hEaWZmZXJlbmNlKCh0eXBlOiAnUHJvcGVydHknIHwgJ090aGVyJywgbmFtZTogc3RyaW5nLCB2YWx1ZTogdHlwZXMuRGlmZmVyZW5jZTxhbnk+IHwgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pID0+IHtcbiAgICAgIGlmICh0eXBlID09PSAnUHJvcGVydHknKSB7XG4gICAgICAgIGlmICghcmVwbGFjZW1lbnRzW2xvZ2ljYWxJZF0pIHtcbiAgICAgICAgICAodmFsdWUgYXMgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pLmNoYW5nZUltcGFjdCA9IHR5cGVzLlJlc291cmNlSW1wYWN0Lk5PX0NIQU5HRTtcbiAgICAgICAgICAodmFsdWUgYXMgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pLmlzRGlmZmVyZW50ID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAocmVwbGFjZW1lbnRzW2xvZ2ljYWxJZF0ucHJvcGVydGllc1JlcGxhY2VkW25hbWVdKSB7XG4gICAgICAgICAgY2FzZSAnQWx3YXlzJzpcbiAgICAgICAgICAgICh2YWx1ZSBhcyB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikuY2hhbmdlSW1wYWN0ID0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuV0lMTF9SRVBMQUNFO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnTmV2ZXInOlxuICAgICAgICAgICAgKHZhbHVlIGFzIHR5cGVzLlByb3BlcnR5RGlmZmVyZW5jZTxhbnk+KS5jaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5XSUxMX1VQREFURTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ0NvbmRpdGlvbmFsbHknOlxuICAgICAgICAgICAgKHZhbHVlIGFzIHR5cGVzLlByb3BlcnR5RGlmZmVyZW5jZTxhbnk+KS5jaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5NQVlfUkVQTEFDRTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgICAgKHZhbHVlIGFzIHR5cGVzLlByb3BlcnR5RGlmZmVyZW5jZTxhbnk+KS5jaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5OT19DSEFOR0U7XG4gICAgICAgICAgICAodmFsdWUgYXMgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pLmlzRGlmZmVyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAvLyBvdGhlcndpc2UsIGRlZmVyIHRvIHRoZSBjaGFuZ2VJbXBhY3QgZnJvbSBgZGlmZlRlbXBsYXRlYFxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdPdGhlcicpIHtcbiAgICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgICAgY2FzZSAnTWV0YWRhdGEnOlxuICAgICAgICAgICAgY2hhbmdlLnNldE90aGVyQ2hhbmdlKCdNZXRhZGF0YScsIG5ldyB0eXBlcy5EaWZmZXJlbmNlPHN0cmluZz4odmFsdWUubmV3VmFsdWUsIHZhbHVlLm5ld1ZhbHVlKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZmluZFJlc291cmNlSW1wb3J0cyhjaGFuZ2VTZXQ6IERlc2NyaWJlQ2hhbmdlU2V0T3V0cHV0KTogc3RyaW5nW10ge1xuICBjb25zdCBpbXBvcnRlZFJlc291cmNlTG9naWNhbElkcyA9IFtdO1xuICBmb3IgKGNvbnN0IHJlc291cmNlQ2hhbmdlIG9mIGNoYW5nZVNldC5DaGFuZ2VzID8/IFtdKSB7XG4gICAgaWYgKHJlc291cmNlQ2hhbmdlLlJlc291cmNlQ2hhbmdlPy5BY3Rpb24gPT09ICdJbXBvcnQnKSB7XG4gICAgICBpbXBvcnRlZFJlc291cmNlTG9naWNhbElkcy5wdXNoKHJlc291cmNlQ2hhbmdlLlJlc291cmNlQ2hhbmdlLkxvZ2ljYWxSZXNvdXJjZUlkISk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGltcG9ydGVkUmVzb3VyY2VMb2dpY2FsSWRzO1xufVxuXG5mdW5jdGlvbiBmaW5kUmVzb3VyY2VSZXBsYWNlbWVudHMoY2hhbmdlU2V0OiBEZXNjcmliZUNoYW5nZVNldE91dHB1dCk6IHR5cGVzLlJlc291cmNlUmVwbGFjZW1lbnRzIHtcbiAgY29uc3QgcmVwbGFjZW1lbnRzOiB0eXBlcy5SZXNvdXJjZVJlcGxhY2VtZW50cyA9IHt9O1xuICBmb3IgKGNvbnN0IHJlc291cmNlQ2hhbmdlIG9mIGNoYW5nZVNldC5DaGFuZ2VzID8/IFtdKSB7XG4gICAgY29uc3QgcHJvcGVydGllc1JlcGxhY2VkOiB7IFtwcm9wTmFtZTogc3RyaW5nXTogdHlwZXMuQ2hhbmdlU2V0UmVwbGFjZW1lbnQgfSA9IHt9O1xuICAgIGZvciAoY29uc3QgcHJvcGVydHlDaGFuZ2Ugb2YgcmVzb3VyY2VDaGFuZ2UuUmVzb3VyY2VDaGFuZ2U/LkRldGFpbHMgPz8gW10pIHtcbiAgICAgIGlmIChwcm9wZXJ0eUNoYW5nZS5UYXJnZXQ/LkF0dHJpYnV0ZSA9PT0gJ1Byb3BlcnRpZXMnKSB7XG4gICAgICAgIGNvbnN0IHJlcXVpcmVzUmVwbGFjZW1lbnQgPSBwcm9wZXJ0eUNoYW5nZS5UYXJnZXQuUmVxdWlyZXNSZWNyZWF0aW9uID09PSAnQWx3YXlzJztcbiAgICAgICAgaWYgKHJlcXVpcmVzUmVwbGFjZW1lbnQgJiYgcHJvcGVydHlDaGFuZ2UuRXZhbHVhdGlvbiA9PT0gJ1N0YXRpYycpIHtcbiAgICAgICAgICBwcm9wZXJ0aWVzUmVwbGFjZWRbcHJvcGVydHlDaGFuZ2UuVGFyZ2V0Lk5hbWUhXSA9ICdBbHdheXMnO1xuICAgICAgICB9IGVsc2UgaWYgKHJlcXVpcmVzUmVwbGFjZW1lbnQgJiYgcHJvcGVydHlDaGFuZ2UuRXZhbHVhdGlvbiA9PT0gJ0R5bmFtaWMnKSB7XG4gICAgICAgICAgLy8gSWYgRXZhbHVhdGlvbiBpcyAnRHluYW1pYycsIHRoZW4gdGhpcyBtYXkgY2F1c2UgcmVwbGFjZW1lbnQsIG9yIGl0IG1heSBub3QuXG4gICAgICAgICAgLy8gc2VlICdSZXBsYWNlbWVudCc6IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9SZXNvdXJjZUNoYW5nZS5odG1sXG4gICAgICAgICAgcHJvcGVydGllc1JlcGxhY2VkW3Byb3BlcnR5Q2hhbmdlLlRhcmdldC5OYW1lIV0gPSAnQ29uZGl0aW9uYWxseSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJvcGVydGllc1JlcGxhY2VkW3Byb3BlcnR5Q2hhbmdlLlRhcmdldC5OYW1lIV0gPSBwcm9wZXJ0eUNoYW5nZS5UYXJnZXQuUmVxdWlyZXNSZWNyZWF0aW9uIGFzIHR5cGVzLkNoYW5nZVNldFJlcGxhY2VtZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJlcGxhY2VtZW50c1tyZXNvdXJjZUNoYW5nZS5SZXNvdXJjZUNoYW5nZT8uTG9naWNhbFJlc291cmNlSWQhXSA9IHtcbiAgICAgIHJlc291cmNlUmVwbGFjZWQ6IHJlc291cmNlQ2hhbmdlLlJlc291cmNlQ2hhbmdlPy5SZXBsYWNlbWVudCA9PT0gJ1RydWUnLFxuICAgICAgcHJvcGVydGllc1JlcGxhY2VkLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZW1lbnRzO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemUodGVtcGxhdGU6IGFueSkge1xuICBpZiAodHlwZW9mIHRlbXBsYXRlID09PSAnb2JqZWN0Jykge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIChPYmplY3Qua2V5cyh0ZW1wbGF0ZSA/PyB7fSkpKSB7XG4gICAgICBpZiAoa2V5ID09PSAnRm46OkdldEF0dCcgJiYgdHlwZW9mIHRlbXBsYXRlW2tleV0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRlbXBsYXRlW2tleV0gPSB0ZW1wbGF0ZVtrZXldLnNwbGl0KCcuJyk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdEZXBlbmRzT24nKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGVtcGxhdGVba2V5XSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0ZW1wbGF0ZVtrZXldID0gW3RlbXBsYXRlW2tleV1dO1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodGVtcGxhdGVba2V5XSkpIHtcbiAgICAgICAgICB0ZW1wbGF0ZVtrZXldID0gdGVtcGxhdGVba2V5XS5zb3J0KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRlbXBsYXRlW2tleV0pKSB7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiAodGVtcGxhdGVba2V5XSkpIHtcbiAgICAgICAgICBub3JtYWxpemUoZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vcm1hbGl6ZSh0ZW1wbGF0ZVtrZXldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi10ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmYtdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSwrQkFBK0I7QUFDL0Isc0NBQXNDO0FBQ3RDLHNDQUFvRTtBQUVwRSwrQ0FBNkI7QUFPN0IsTUFBTSxhQUFhLEdBQW9CO0lBQ3JDLHdCQUF3QixFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUNyRCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO0lBQ3hFLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUM7SUFDM0QsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUEsd0JBQWlCLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUcsVUFBVSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUEsd0JBQWlCLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0csUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLElB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R0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNqQyxLQUFLLE1BQU0sT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDdEMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNyQixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhlIFNESyBpcyBvbmx5IHVzZWQgdG8gcmVmZXJlbmNlIGBEZXNjcmliZUNoYW5nZVNldE91dHB1dGAsIHNvIHRoZSBTREsgaXMgYWRkZWQgYXMgYSBkZXZEZXBlbmRlbmN5LlxuLy8gVGhlIFNESyBzaG91bGQgbm90IG1ha2UgbmV0d29yayBjYWxscyBoZXJlXG5pbXBvcnQgdHlwZSB7IERlc2NyaWJlQ2hhbmdlU2V0T3V0cHV0IGFzIERlc2NyaWJlQ2hhbmdlU2V0IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcbmltcG9ydCAqIGFzIGltcGwgZnJvbSAnLi9kaWZmJztcbmltcG9ydCAqIGFzIHR5cGVzIGZyb20gJy4vZGlmZi90eXBlcyc7XG5pbXBvcnQgeyBkZWVwRXF1YWwsIGRpZmZLZXllZEVudGl0aWVzLCB1bmlvbk9mIH0gZnJvbSAnLi9kaWZmL3V0aWwnO1xuXG5leHBvcnQgKiBmcm9tICcuL2RpZmYvdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBEZXNjcmliZUNoYW5nZVNldE91dHB1dCA9IERlc2NyaWJlQ2hhbmdlU2V0O1xuXG50eXBlIERpZmZIYW5kbGVyID0gKGRpZmY6IHR5cGVzLklUZW1wbGF0ZURpZmYsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpID0+IHZvaWQ7XG50eXBlIEhhbmRsZXJSZWdpc3RyeSA9IHsgW3NlY3Rpb246IHN0cmluZ106IERpZmZIYW5kbGVyIH07XG5cbmNvbnN0IERJRkZfSEFORExFUlM6IEhhbmRsZXJSZWdpc3RyeSA9IHtcbiAgQVdTVGVtcGxhdGVGb3JtYXRWZXJzaW9uOiAoZGlmZiwgb2xkVmFsdWUsIG5ld1ZhbHVlKSA9PlxuICAgIGRpZmYuYXdzVGVtcGxhdGVGb3JtYXRWZXJzaW9uID0gaW1wbC5kaWZmQXR0cmlidXRlKG9sZFZhbHVlLCBuZXdWYWx1ZSksXG4gIERlc2NyaXB0aW9uOiAoZGlmZiwgb2xkVmFsdWUsIG5ld1ZhbHVlKSA9PlxuICAgIGRpZmYuZGVzY3JpcHRpb24gPSBpbXBsLmRpZmZBdHRyaWJ1dGUob2xkVmFsdWUsIG5ld1ZhbHVlKSxcbiAgTWV0YWRhdGE6IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi5tZXRhZGF0YSA9IG5ldyB0eXBlcy5EaWZmZXJlbmNlQ29sbGVjdGlvbihkaWZmS2V5ZWRFbnRpdGllcyhvbGRWYWx1ZSwgbmV3VmFsdWUsIGltcGwuZGlmZk1ldGFkYXRhKSksXG4gIFBhcmFtZXRlcnM6IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi5wYXJhbWV0ZXJzID0gbmV3IHR5cGVzLkRpZmZlcmVuY2VDb2xsZWN0aW9uKGRpZmZLZXllZEVudGl0aWVzKG9sZFZhbHVlLCBuZXdWYWx1ZSwgaW1wbC5kaWZmUGFyYW1ldGVyKSksXG4gIE1hcHBpbmdzOiAoZGlmZiwgb2xkVmFsdWUsIG5ld1ZhbHVlKSA9PlxuICAgIGRpZmYubWFwcGluZ3MgPSBuZXcgdHlwZXMuRGlmZmVyZW5jZUNvbGxlY3Rpb24oZGlmZktleWVkRW50aXRpZXMob2xkVmFsdWUsIG5ld1ZhbHVlLCBpbXBsLmRpZmZNYXBwaW5nKSksXG4gIENvbmRpdGlvbnM6IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi5jb25kaXRpb25zID0gbmV3IHR5cGVzLkRpZmZlcmVuY2VDb2xsZWN0aW9uKGRpZmZLZXllZEVudGl0aWVzKG9sZFZhbHVlLCBuZXdWYWx1ZSwgaW1wbC5kaWZmQ29uZGl0aW9uKSksXG4gIFRyYW5zZm9ybTogKGRpZmYsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT5cbiAgICBkaWZmLnRyYW5zZm9ybSA9IGltcGwuZGlmZkF0dHJpYnV0ZShvbGRWYWx1ZSwgbmV3VmFsdWUpLFxuICBSZXNvdXJjZXM6IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi5yZXNvdXJjZXMgPSBuZXcgdHlwZXMuRGlmZmVyZW5jZUNvbGxlY3Rpb24oZGlmZktleWVkRW50aXRpZXMob2xkVmFsdWUsIG5ld1ZhbHVlLCBpbXBsLmRpZmZSZXNvdXJjZSkpLFxuICBPdXRwdXRzOiAoZGlmZiwgb2xkVmFsdWUsIG5ld1ZhbHVlKSA9PlxuICAgIGRpZmYub3V0cHV0cyA9IG5ldyB0eXBlcy5EaWZmZXJlbmNlQ29sbGVjdGlvbihkaWZmS2V5ZWRFbnRpdGllcyhvbGRWYWx1ZSwgbmV3VmFsdWUsIGltcGwuZGlmZk91dHB1dCkpLFxufTtcblxuLyoqXG4gKiBDb21wYXJlIHR3byBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZXMgYW5kIHJldHVybiBzZW1hbnRpYyBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZW0uXG4gKlxuICogQHBhcmFtIGN1cnJlbnRUZW1wbGF0ZSB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgc3RhY2suXG4gKiBAcGFyYW0gbmV3VGVtcGxhdGUgICAgIHRoZSB0YXJnZXQgc3RhdGUgb2YgdGhlIHN0YWNrLlxuICogQHBhcmFtIGNoYW5nZVNldCAgICAgICB0aGUgY2hhbmdlIHNldCBmb3IgdGhpcyBzdGFjay5cbiAqXG4gKiBAcmV0dXJucyBhICt0eXBlcy5UZW1wbGF0ZURpZmYrIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIGNoYW5nZXMgdGhhdCB3aWxsIGhhcHBlbiBpZlxuICogICAgICBhIHN0YWNrIHdoaWNoIGN1cnJlbnQgc3RhdGUgaXMgZGVzY3JpYmVkIGJ5ICtjdXJyZW50VGVtcGxhdGUrIGlzIHVwZGF0ZWQgd2l0aFxuICogICAgICB0aGUgdGVtcGxhdGUgK25ld1RlbXBsYXRlKy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZ1bGxEaWZmKFxuICBjdXJyZW50VGVtcGxhdGU6IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gIG5ld1RlbXBsYXRlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICBjaGFuZ2VTZXQ/OiBEZXNjcmliZUNoYW5nZVNldE91dHB1dCxcbiAgaXNJbXBvcnQ/OiBib29sZWFuLFxuKTogdHlwZXMuVGVtcGxhdGVEaWZmIHtcblxuICBub3JtYWxpemUoY3VycmVudFRlbXBsYXRlKTtcbiAgbm9ybWFsaXplKG5ld1RlbXBsYXRlKTtcbiAgY29uc3QgdGhlRGlmZiA9IGRpZmZUZW1wbGF0ZShjdXJyZW50VGVtcGxhdGUsIG5ld1RlbXBsYXRlKTtcbiAgaWYgKGNoYW5nZVNldCkge1xuICAgIGZpbHRlckZhbHNlUG9zaXRpdmVzKHRoZURpZmYsIGNoYW5nZVNldCk7XG4gICAgYWRkSW1wb3J0SW5mb3JtYXRpb24odGhlRGlmZiwgY2hhbmdlU2V0KTtcbiAgfSBlbHNlIGlmIChpc0ltcG9ydCkge1xuICAgIG1ha2VBbGxSZXNvdXJjZUNoYW5nZXNJbXBvcnRzKHRoZURpZmYpO1xuICB9XG5cbiAgcmV0dXJuIHRoZURpZmY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmVGVtcGxhdGUoXG4gIGN1cnJlbnRUZW1wbGF0ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgbmV3VGVtcGxhdGU6IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4pOiB0eXBlcy5UZW1wbGF0ZURpZmYge1xuXG4gIC8vIEJhc2UgZGlmZlxuICBjb25zdCB0aGVEaWZmID0gY2FsY3VsYXRlVGVtcGxhdGVEaWZmKGN1cnJlbnRUZW1wbGF0ZSwgbmV3VGVtcGxhdGUpO1xuXG4gIC8vIFdlJ3JlIGdvaW5nIHRvIG1vZGlmeSB0aGlzIGluLXBsYWNlXG4gIGNvbnN0IG5ld1RlbXBsYXRlQ29weSA9IGRlZXBDb3B5KG5ld1RlbXBsYXRlKTtcblxuICBsZXQgZGlkUHJvcGFnYXRlUmVmZXJlbmNlQ2hhbmdlcztcbiAgbGV0IGRpZmZXaXRoUmVwbGFjZW1lbnRzO1xuICBkbyB7XG4gICAgZGlmZldpdGhSZXBsYWNlbWVudHMgPSBjYWxjdWxhdGVUZW1wbGF0ZURpZmYoY3VycmVudFRlbXBsYXRlLCBuZXdUZW1wbGF0ZUNvcHkpO1xuXG4gICAgLy8gUHJvcGFnYXRlIHJlcGxhY2VtZW50cyBmb3IgcmVwbGFjZWQgcmVzb3VyY2VzXG4gICAgZGlkUHJvcGFnYXRlUmVmZXJlbmNlQ2hhbmdlcyA9IGZhbHNlO1xuICAgIGlmIChkaWZmV2l0aFJlcGxhY2VtZW50cy5yZXNvdXJjZXMpIHtcbiAgICAgIGRpZmZXaXRoUmVwbGFjZW1lbnRzLnJlc291cmNlcy5mb3JFYWNoRGlmZmVyZW5jZSgobG9naWNhbElkLCBjaGFuZ2UpID0+IHtcbiAgICAgICAgaWYgKGNoYW5nZS5jaGFuZ2VJbXBhY3QgPT09IHR5cGVzLlJlc291cmNlSW1wYWN0LldJTExfUkVQTEFDRSkge1xuICAgICAgICAgIGlmIChwcm9wYWdhdGVSZXBsYWNlZFJlZmVyZW5jZXMobmV3VGVtcGxhdGVDb3B5LCBsb2dpY2FsSWQpKSB7XG4gICAgICAgICAgICBkaWRQcm9wYWdhdGVSZWZlcmVuY2VDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSB3aGlsZSAoZGlkUHJvcGFnYXRlUmVmZXJlbmNlQ2hhbmdlcyk7XG5cbiAgLy8gQ29weSBcInJlcGxhY2VkXCIgc3RhdGVzIGZyb20gYGRpZmZXaXRoUmVwbGFjZW1lbnRzYCB0byBgdGhlRGlmZmAuXG4gIGRpZmZXaXRoUmVwbGFjZW1lbnRzLnJlc291cmNlc1xuICAgIC5maWx0ZXIociA9PiBpc1JlcGxhY2VtZW50KHIhLmNoYW5nZUltcGFjdCkpXG4gICAgLmZvckVhY2hEaWZmZXJlbmNlKChsb2dpY2FsSWQsIGRvd25zdHJlYW1SZXBsYWNlbWVudCkgPT4ge1xuICAgICAgY29uc3QgcmVzb3VyY2UgPSB0aGVEaWZmLnJlc291cmNlcy5nZXQobG9naWNhbElkKTtcblxuICAgICAgaWYgKHJlc291cmNlLmNoYW5nZUltcGFjdCAhPT0gZG93bnN0cmVhbVJlcGxhY2VtZW50LmNoYW5nZUltcGFjdCkge1xuICAgICAgICBwcm9wYWdhdGVQcm9wZXJ0eVJlcGxhY2VtZW50KGRvd25zdHJlYW1SZXBsYWNlbWVudCwgcmVzb3VyY2UpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIHJldHVybiB0aGVEaWZmO1xufVxuXG5mdW5jdGlvbiBpc1JlcGxhY2VtZW50KGltcGFjdDogdHlwZXMuUmVzb3VyY2VJbXBhY3QpIHtcbiAgcmV0dXJuIGltcGFjdCA9PT0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuTUFZX1JFUExBQ0UgfHwgaW1wYWN0ID09PSB0eXBlcy5SZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0U7XG59XG5cbi8qKlxuICogRm9yIGFsbCBwcm9wZXJ0aWVzIGluICdzb3VyY2UnIHRoYXQgaGF2ZSBhIFwicmVwbGFjZW1lbnRcIiBpbXBhY3QsIHByb3BhZ2F0ZSB0aGF0IGltcGFjdCB0byBcImRlc3RcIlxuICovXG5mdW5jdGlvbiBwcm9wYWdhdGVQcm9wZXJ0eVJlcGxhY2VtZW50KHNvdXJjZTogdHlwZXMuUmVzb3VyY2VEaWZmZXJlbmNlLCBkZXN0OiB0eXBlcy5SZXNvdXJjZURpZmZlcmVuY2UpIHtcbiAgZm9yIChjb25zdCBbcHJvcGVydHlOYW1lLCBkaWZmXSBvZiBPYmplY3QuZW50cmllcyhzb3VyY2UucHJvcGVydHlVcGRhdGVzKSkge1xuICAgIGlmIChkaWZmLmNoYW5nZUltcGFjdCAmJiBpc1JlcGxhY2VtZW50KGRpZmYuY2hhbmdlSW1wYWN0KSkge1xuICAgICAgLy8gVXNlIHRoZSBwcm9wZXJ0eWRpZmYgb2Ygc291cmNlIGluIHRhcmdldC4gVGhlIHJlc3VsdCBvZiB0aGlzIGhhcHBlbnMgdG8gYmUgY2xlYXIgZW5vdWdoLlxuICAgICAgZGVzdC5zZXRQcm9wZXJ0eUNoYW5nZShwcm9wZXJ0eU5hbWUsIGRpZmYpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVUZW1wbGF0ZURpZmYoY3VycmVudFRlbXBsYXRlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBuZXdUZW1wbGF0ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IHR5cGVzLlRlbXBsYXRlRGlmZiB7XG4gIGNvbnN0IGRpZmZlcmVuY2VzOiB0eXBlcy5JVGVtcGxhdGVEaWZmID0ge307XG4gIGNvbnN0IHVua25vd246IHsgW2tleTogc3RyaW5nXTogdHlwZXMuRGlmZmVyZW5jZTxhbnk+IH0gPSB7fTtcbiAgZm9yIChjb25zdCBrZXkgb2YgdW5pb25PZihPYmplY3Qua2V5cyhjdXJyZW50VGVtcGxhdGUpLCBPYmplY3Qua2V5cyhuZXdUZW1wbGF0ZSkpLnNvcnQoKSkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gY3VycmVudFRlbXBsYXRlW2tleV07XG4gICAgY29uc3QgbmV3VmFsdWUgPSBuZXdUZW1wbGF0ZVtrZXldO1xuICAgIGlmIChkZWVwRXF1YWwob2xkVmFsdWUsIG5ld1ZhbHVlKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IGhhbmRsZXI6IERpZmZIYW5kbGVyID0gRElGRl9IQU5ETEVSU1trZXldXG4gICAgICAgICAgICAgICAgICB8fCAoKF9kaWZmLCBvbGRWLCBuZXdWKSA9PiB1bmtub3duW2tleV0gPSBpbXBsLmRpZmZVbmtub3duKG9sZFYsIG5ld1YpKTtcbiAgICBoYW5kbGVyKGRpZmZlcmVuY2VzLCBvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICB9XG4gIGlmIChPYmplY3Qua2V5cyh1bmtub3duKS5sZW5ndGggPiAwKSB7XG4gICAgZGlmZmVyZW5jZXMudW5rbm93biA9IG5ldyB0eXBlcy5EaWZmZXJlbmNlQ29sbGVjdGlvbih1bmtub3duKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgdHlwZXMuVGVtcGxhdGVEaWZmKGRpZmZlcmVuY2VzKTtcbn1cblxuLyoqXG4gKiBDb21wYXJlIHR3byBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZXMgYW5kIHJldHVybiBzZW1hbnRpYyBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZW1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZSZXNvdXJjZShvbGRWYWx1ZTogdHlwZXMuUmVzb3VyY2UsIG5ld1ZhbHVlOiB0eXBlcy5SZXNvdXJjZSk6IHR5cGVzLlJlc291cmNlRGlmZmVyZW5jZSB7XG4gIHJldHVybiBpbXBsLmRpZmZSZXNvdXJjZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG4vKipcbiAqIFJlcGxhY2UgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIGdpdmVuIGxvZ2ljYWxJRCBvbiB0aGUgZ2l2ZW4gdGVtcGxhdGUsIGluLXBsYWNlXG4gKlxuICogUmV0dXJucyB0cnVlIGlmZiBhbnkgcmVmZXJlbmNlcyB3ZXJlIHJlcGxhY2VkLlxuICovXG5mdW5jdGlvbiBwcm9wYWdhdGVSZXBsYWNlZFJlZmVyZW5jZXModGVtcGxhdGU6IG9iamVjdCwgbG9naWNhbElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgbGV0IHJldCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIHJlY3Vyc2Uob2JqOiBhbnkpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICBvYmouZm9yRWFjaChyZWN1cnNlKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgb2JqICE9PSBudWxsKSB7XG4gICAgICBpZiAoIXJlcGxhY2VSZWZlcmVuY2Uob2JqKSkge1xuICAgICAgICBPYmplY3QudmFsdWVzKG9iaikuZm9yRWFjaChyZWN1cnNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZXBsYWNlUmVmZXJlbmNlKG9iajogYW55KSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gICAgaWYgKGtleXMubGVuZ3RoICE9PSAxKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIGNvbnN0IGtleSA9IGtleXNbMF07XG5cbiAgICBpZiAoa2V5ID09PSAnUmVmJykge1xuICAgICAgaWYgKG9iai5SZWYgPT09IGxvZ2ljYWxJZCkge1xuICAgICAgICBvYmouUmVmID0gbG9naWNhbElkICsgJyAocmVwbGFjZWQpJztcbiAgICAgICAgcmV0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChrZXkuc3RhcnRzV2l0aCgnRm46OicpKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmpba2V5XSkgJiYgb2JqW2tleV0ubGVuZ3RoID4gMCAmJiBvYmpba2V5XVswXSA9PT0gbG9naWNhbElkKSB7XG4gICAgICAgIG9ialtrZXldWzBdID0gbG9naWNhbElkICsgJyhyZXBsYWNlZCknO1xuICAgICAgICByZXQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmVjdXJzZSh0ZW1wbGF0ZSk7XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGRlZXBDb3B5KHg6IGFueSk6IGFueSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHgpKSB7XG4gICAgcmV0dXJuIHgubWFwKGRlZXBDb3B5KTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgeCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHJldDogYW55ID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoeCkpIHtcbiAgICAgIHJldFtrZXldID0gZGVlcENvcHkoeFtrZXldKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIHJldHVybiB4O1xufVxuXG5mdW5jdGlvbiBhZGRJbXBvcnRJbmZvcm1hdGlvbihkaWZmOiB0eXBlcy5UZW1wbGF0ZURpZmYsIGNoYW5nZVNldDogRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXQpIHtcbiAgY29uc3QgaW1wb3J0cyA9IGZpbmRSZXNvdXJjZUltcG9ydHMoY2hhbmdlU2V0KTtcbiAgZGlmZi5yZXNvdXJjZXMuZm9yRWFjaERpZmZlcmVuY2UoKGxvZ2ljYWxJZDogc3RyaW5nLCBjaGFuZ2U6IHR5cGVzLlJlc291cmNlRGlmZmVyZW5jZSkgPT4ge1xuICAgIGlmIChpbXBvcnRzLmluY2x1ZGVzKGxvZ2ljYWxJZCkpIHtcbiAgICAgIGNoYW5nZS5pc0ltcG9ydCA9IHRydWU7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gbWFrZUFsbFJlc291cmNlQ2hhbmdlc0ltcG9ydHMoZGlmZjogdHlwZXMuVGVtcGxhdGVEaWZmKSB7XG4gIGRpZmYucmVzb3VyY2VzLmZvckVhY2hEaWZmZXJlbmNlKChfbG9naWNhbElkOiBzdHJpbmcsIGNoYW5nZTogdHlwZXMuUmVzb3VyY2VEaWZmZXJlbmNlKSA9PiB7XG4gICAgY2hhbmdlLmlzSW1wb3J0ID0gdHJ1ZTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGZpbHRlckZhbHNlUG9zaXRpdmVzKGRpZmY6IHR5cGVzLlRlbXBsYXRlRGlmZiwgY2hhbmdlU2V0OiBEZXNjcmliZUNoYW5nZVNldE91dHB1dCkge1xuICBjb25zdCByZXBsYWNlbWVudHMgPSBmaW5kUmVzb3VyY2VSZXBsYWNlbWVudHMoY2hhbmdlU2V0KTtcbiAgZGlmZi5yZXNvdXJjZXMuZm9yRWFjaERpZmZlcmVuY2UoKGxvZ2ljYWxJZDogc3RyaW5nLCBjaGFuZ2U6IHR5cGVzLlJlc291cmNlRGlmZmVyZW5jZSkgPT4ge1xuICAgIGlmIChjaGFuZ2UucmVzb3VyY2VUeXBlLmluY2x1ZGVzKCdBV1M6OlNlcnZlcmxlc3MnKSkge1xuICAgICAgLy8gQ0ZOIGFwcGxpZXMgdGhlIFNBTSB0cmFuc2Zvcm0gYmVmb3JlIGNyZWF0aW5nIHRoZSBjaGFuZ2VzZXQsIHNvIHRoZSBjaGFuZ2VzZXQgY29udGFpbnMgbm8gaW5mb3JtYXRpb24gYWJvdXQgU0FNIHJlc291cmNlc1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjaGFuZ2UuZm9yRWFjaERpZmZlcmVuY2UoKHR5cGU6ICdQcm9wZXJ0eScgfCAnT3RoZXInLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiB0eXBlcy5EaWZmZXJlbmNlPGFueT4gfCB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikgPT4ge1xuICAgICAgaWYgKHR5cGUgPT09ICdQcm9wZXJ0eScpIHtcbiAgICAgICAgaWYgKCFyZXBsYWNlbWVudHNbbG9naWNhbElkXSkge1xuICAgICAgICAgICh2YWx1ZSBhcyB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikuY2hhbmdlSW1wYWN0ID0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuTk9fQ0hBTkdFO1xuICAgICAgICAgICh2YWx1ZSBhcyB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikuaXNEaWZmZXJlbnQgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChyZXBsYWNlbWVudHNbbG9naWNhbElkXS5wcm9wZXJ0aWVzUmVwbGFjZWRbbmFtZV0pIHtcbiAgICAgICAgICBjYXNlICdBbHdheXMnOlxuICAgICAgICAgICAgKHZhbHVlIGFzIHR5cGVzLlByb3BlcnR5RGlmZmVyZW5jZTxhbnk+KS5jaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdOZXZlcic6XG4gICAgICAgICAgICAodmFsdWUgYXMgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pLmNoYW5nZUltcGFjdCA9IHR5cGVzLlJlc291cmNlSW1wYWN0LldJTExfVVBEQVRFO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnQ29uZGl0aW9uYWxseSc6XG4gICAgICAgICAgICAodmFsdWUgYXMgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pLmNoYW5nZUltcGFjdCA9IHR5cGVzLlJlc291cmNlSW1wYWN0Lk1BWV9SRVBMQUNFO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgICAgICAodmFsdWUgYXMgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pLmNoYW5nZUltcGFjdCA9IHR5cGVzLlJlc291cmNlSW1wYWN0Lk5PX0NIQU5HRTtcbiAgICAgICAgICAgICh2YWx1ZSBhcyB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikuaXNEaWZmZXJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIC8vIG90aGVyd2lzZSwgZGVmZXIgdG8gdGhlIGNoYW5nZUltcGFjdCBmcm9tIGBkaWZmVGVtcGxhdGVgXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ090aGVyJykge1xuICAgICAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgICBjYXNlICdNZXRhZGF0YSc6XG4gICAgICAgICAgICBjaGFuZ2Uuc2V0T3RoZXJDaGFuZ2UoJ01ldGFkYXRhJywgbmV3IHR5cGVzLkRpZmZlcmVuY2U8c3RyaW5nPih2YWx1ZS5uZXdWYWx1ZSwgdmFsdWUubmV3VmFsdWUpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBmaW5kUmVzb3VyY2VJbXBvcnRzKGNoYW5nZVNldDogRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXQpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGltcG9ydGVkUmVzb3VyY2VMb2dpY2FsSWRzID0gW107XG4gIGZvciAoY29uc3QgcmVzb3VyY2VDaGFuZ2Ugb2YgY2hhbmdlU2V0LkNoYW5nZXMgPz8gW10pIHtcbiAgICBpZiAocmVzb3VyY2VDaGFuZ2UuUmVzb3VyY2VDaGFuZ2U/LkFjdGlvbiA9PT0gJ0ltcG9ydCcpIHtcbiAgICAgIGltcG9ydGVkUmVzb3VyY2VMb2dpY2FsSWRzLnB1c2gocmVzb3VyY2VDaGFuZ2UuUmVzb3VyY2VDaGFuZ2UuTG9naWNhbFJlc291cmNlSWQhKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaW1wb3J0ZWRSZXNvdXJjZUxvZ2ljYWxJZHM7XG59XG5cbmZ1bmN0aW9uIGZpbmRSZXNvdXJjZVJlcGxhY2VtZW50cyhjaGFuZ2VTZXQ6IERlc2NyaWJlQ2hhbmdlU2V0T3V0cHV0KTogdHlwZXMuUmVzb3VyY2VSZXBsYWNlbWVudHMge1xuICBjb25zdCByZXBsYWNlbWVudHM6IHR5cGVzLlJlc291cmNlUmVwbGFjZW1lbnRzID0ge307XG4gIGZvciAoY29uc3QgcmVzb3VyY2VDaGFuZ2Ugb2YgY2hhbmdlU2V0LkNoYW5nZXMgPz8gW10pIHtcbiAgICBjb25zdCBwcm9wZXJ0aWVzUmVwbGFjZWQ6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiB0eXBlcy5DaGFuZ2VTZXRSZXBsYWNlbWVudCB9ID0ge307XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eUNoYW5nZSBvZiByZXNvdXJjZUNoYW5nZS5SZXNvdXJjZUNoYW5nZT8uRGV0YWlscyA/PyBbXSkge1xuICAgICAgaWYgKHByb3BlcnR5Q2hhbmdlLlRhcmdldD8uQXR0cmlidXRlID09PSAnUHJvcGVydGllcycpIHtcbiAgICAgICAgY29uc3QgcmVxdWlyZXNSZXBsYWNlbWVudCA9IHByb3BlcnR5Q2hhbmdlLlRhcmdldC5SZXF1aXJlc1JlY3JlYXRpb24gPT09ICdBbHdheXMnO1xuICAgICAgICBpZiAocmVxdWlyZXNSZXBsYWNlbWVudCAmJiBwcm9wZXJ0eUNoYW5nZS5FdmFsdWF0aW9uID09PSAnU3RhdGljJykge1xuICAgICAgICAgIHByb3BlcnRpZXNSZXBsYWNlZFtwcm9wZXJ0eUNoYW5nZS5UYXJnZXQuTmFtZSFdID0gJ0Fsd2F5cyc7XG4gICAgICAgIH0gZWxzZSBpZiAocmVxdWlyZXNSZXBsYWNlbWVudCAmJiBwcm9wZXJ0eUNoYW5nZS5FdmFsdWF0aW9uID09PSAnRHluYW1pYycpIHtcbiAgICAgICAgICAvLyBJZiBFdmFsdWF0aW9uIGlzICdEeW5hbWljJywgdGhlbiB0aGlzIG1heSBjYXVzZSByZXBsYWNlbWVudCwgb3IgaXQgbWF5IG5vdC5cbiAgICAgICAgICAvLyBzZWUgJ1JlcGxhY2VtZW50JzogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1Jlc291cmNlQ2hhbmdlLmh0bWxcbiAgICAgICAgICBwcm9wZXJ0aWVzUmVwbGFjZWRbcHJvcGVydHlDaGFuZ2UuVGFyZ2V0Lk5hbWUhXSA9ICdDb25kaXRpb25hbGx5JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcm9wZXJ0aWVzUmVwbGFjZWRbcHJvcGVydHlDaGFuZ2UuVGFyZ2V0Lk5hbWUhXSA9IHByb3BlcnR5Q2hhbmdlLlRhcmdldC5SZXF1aXJlc1JlY3JlYXRpb24gYXMgdHlwZXMuQ2hhbmdlU2V0UmVwbGFjZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmVwbGFjZW1lbnRzW3Jlc291cmNlQ2hhbmdlLlJlc291cmNlQ2hhbmdlPy5Mb2dpY2FsUmVzb3VyY2VJZCFdID0ge1xuICAgICAgcmVzb3VyY2VSZXBsYWNlZDogcmVzb3VyY2VDaGFuZ2UuUmVzb3VyY2VDaGFuZ2U/LlJlcGxhY2VtZW50ID09PSAnVHJ1ZScsXG4gICAgICBwcm9wZXJ0aWVzUmVwbGFjZWQsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiByZXBsYWNlbWVudHM7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZSh0ZW1wbGF0ZTogYW55KSB7XG4gIGlmICh0eXBlb2YgdGVtcGxhdGUgPT09ICdvYmplY3QnKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgKE9iamVjdC5rZXlzKHRlbXBsYXRlID8/IHt9KSkpIHtcbiAgICAgIGlmIChrZXkgPT09ICdGbjo6R2V0QXR0JyAmJiB0eXBlb2YgdGVtcGxhdGVba2V5XSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGVtcGxhdGVba2V5XSA9IHRlbXBsYXRlW2tleV0uc3BsaXQoJy4nKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ0RlcGVuZHNPbicpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0ZW1wbGF0ZVtrZXldID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRlbXBsYXRlW2tleV0gPSBbdGVtcGxhdGVba2V5XV07XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0ZW1wbGF0ZVtrZXldKSkge1xuICAgICAgICAgIHRlbXBsYXRlW2tleV0gPSB0ZW1wbGF0ZVtrZXldLnNvcnQoKTtcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGVtcGxhdGVba2V5XSkpIHtcbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mICh0ZW1wbGF0ZVtrZXldKSkge1xuICAgICAgICAgIG5vcm1hbGl6ZShlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9ybWFsaXplKHRlbXBsYXRlW2tleV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19 /***/ }), @@ -9365,7 +9865,7 @@ function _asString(value) { } return JSON.stringify(value); } -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxpQ0FBaUM7QUFDakMsaUNBQXlFO0FBRXpFLFNBQWdCLGFBQWEsQ0FBQyxRQUFhLEVBQUUsUUFBYTtJQUN4RCxPQUFPLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBUyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUZELHNDQUVDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLFFBQXlCLEVBQUUsUUFBeUI7SUFDaEYsT0FBTyxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUZELHNDQUVDO0FBRUQsU0FBZ0IsV0FBVyxDQUFDLFFBQXVCLEVBQUUsUUFBdUI7SUFDMUUsT0FBTyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDekQsQ0FBQztBQUZELGtDQUVDO0FBRUQsU0FBZ0IsWUFBWSxDQUFDLFFBQXdCLEVBQUUsUUFBd0I7SUFDN0UsT0FBTyxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUZELG9DQUVDO0FBRUQsU0FBZ0IsVUFBVSxDQUFDLFFBQXNCLEVBQUUsUUFBc0I7SUFDdkUsT0FBTyxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUZELGdDQUVDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLFFBQXlCLEVBQUUsUUFBeUI7SUFDaEYsT0FBTyxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUZELHNDQUVDO0FBRUQsU0FBZ0IsWUFB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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tICdAYXdzLWNkay9zZXJ2aWNlLXNwZWMtdHlwZXMnO1xuaW1wb3J0ICogYXMgdHlwZXMgZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBkZWVwRXF1YWwsIGRpZmZLZXllZEVudGl0aWVzLCBsb2FkUmVzb3VyY2VNb2RlbCB9IGZyb20gJy4vdXRpbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmQXR0cmlidXRlKG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpOiB0eXBlcy5EaWZmZXJlbmNlPHN0cmluZz4ge1xuICByZXR1cm4gbmV3IHR5cGVzLkRpZmZlcmVuY2U8c3RyaW5nPihfYXNTdHJpbmcob2xkVmFsdWUpLCBfYXNTdHJpbmcobmV3VmFsdWUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZDb25kaXRpb24ob2xkVmFsdWU6IHR5cGVzLkNvbmRpdGlvbiwgbmV3VmFsdWU6IHR5cGVzLkNvbmRpdGlvbik6IHR5cGVzLkNvbmRpdGlvbkRpZmZlcmVuY2Uge1xuICByZXR1cm4gbmV3IHR5cGVzLkNvbmRpdGlvbkRpZmZlcmVuY2Uob2xkVmFsdWUsIG5ld1ZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZNYXBwaW5nKG9sZFZhbHVlOiB0eXBlcy5NYXBwaW5nLCBuZXdWYWx1ZTogdHlwZXMuTWFwcGluZyk6IHR5cGVzLk1hcHBpbmdEaWZmZXJlbmNlIHtcbiAgcmV0dXJuIG5ldyB0eXBlcy5NYXBwaW5nRGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZk1ldGFkYXRhKG9sZFZhbHVlOiB0eXBlcy5NZXRhZGF0YSwgbmV3VmFsdWU6IHR5cGVzLk1ldGFkYXRhKTogdHlwZXMuTWV0YWRhdGFEaWZmZXJlbmNlIHtcbiAgcmV0dXJuIG5ldyB0eXBlcy5NZXRhZGF0YURpZmZlcmVuY2Uob2xkVmFsdWUsIG5ld1ZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZPdXRwdXQob2xkVmFsdWU6IHR5cGVzLk91dHB1dCwgbmV3VmFsdWU6IHR5cGVzLk91dHB1dCk6IHR5cGVzLk91dHB1dERpZmZlcmVuY2Uge1xuICByZXR1cm4gbmV3IHR5cGVzLk91dHB1dERpZmZlcmVuY2Uob2xkVmFsdWUsIG5ld1ZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZQYXJhbWV0ZXIob2xkVmFsdWU6IHR5cGVzLlBhcmFtZXRlciwgbmV3VmFsdWU6IHR5cGVzLlBhcmFtZXRlcik6IHR5cGVzLlBhcmFtZXRlckRpZmZlcmVuY2Uge1xuICByZXR1cm4gbmV3IHR5cGVzLlBhcmFtZXRlckRpZmZlcmVuY2Uob2xkVmFsdWUsIG5ld1ZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZSZXNvdXJjZShvbGRWYWx1ZT86IHR5cGVzLlJlc291cmNlLCBuZXdWYWx1ZT86IHR5cGVzLlJlc291cmNlKTogdHlwZXMuUmVzb3VyY2VEaWZmZXJlbmNlIHtcbiAgY29uc3QgcmVzb3VyY2VUeXBlID0ge1xuICAgIG9sZFR5cGU6IG9sZFZhbHVlICYmIG9sZFZhbHVlLlR5cGUsXG4gICAgbmV3VHlwZTogbmV3VmFsdWUgJiYgbmV3VmFsdWUuVHlwZSxcbiAgfTtcbiAgbGV0IHByb3BlcnR5RGlmZnM6IHsgW2tleTogc3RyaW5nXTogdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4gfSA9IHt9O1xuICBsZXQgb3RoZXJEaWZmczogeyBba2V5OiBzdHJpbmddOiB0eXBlcy5EaWZmZXJlbmNlPGFueT4gfSA9IHt9O1xuXG4gIGlmIChyZXNvdXJjZVR5cGUub2xkVHlwZSAhPT0gdW5kZWZpbmVkICYmIHJlc291cmNlVHlwZS5vbGRUeXBlID09PSByZXNvdXJjZVR5cGUubmV3VHlwZSkge1xuICAgIC8vIE9ubHkgbWFrZXMgc2Vuc2UgdG8gaW5zcGVjdCBkZWVwZXIgaWYgdGhlIHR5cGVzIHN0YXllZCB0aGUgc2FtZVxuICAgIGNvbnN0IGltcGwgPSBsb2FkUmVzb3VyY2VNb2RlbChyZXNvdXJjZVR5cGUub2xkVHlwZSk7XG4gICAgcHJvcGVydHlEaWZmcyA9IGRpZmZLZXllZEVudGl0aWVzKG9sZFZhbHVlIS5Qcm9wZXJ0aWVzLFxuICAgICAgbmV3VmFsdWUhLlByb3BlcnRpZXMsXG4gICAgICAob2xkVmFsLCBuZXdWYWwsIGtleSkgPT4gX2RpZmZQcm9wZXJ0eShvbGRWYWwsIG5ld1ZhbCwga2V5LCBpbXBsKSk7XG5cbiAgICBvdGhlckRpZmZzID0gZGlmZktleWVkRW50aXRpZXMob2xkVmFsdWUsIG5ld1ZhbHVlLCBfZGlmZk90aGVyKTtcbiAgICBkZWxldGUgb3RoZXJEaWZmcy5Qcm9wZXJ0aWVzO1xuICB9XG5cbiAgcmV0dXJuIG5ldyB0eXBlcy5SZXNvdXJjZURpZmZlcmVuY2Uob2xkVmFsdWUsIG5ld1ZhbHVlLCB7XG4gICAgcmVzb3VyY2VUeXBlLCBwcm9wZXJ0eURpZmZzLCBvdGhlckRpZmZzLFxuICB9KTtcblxuICBmdW5jdGlvbiBfZGlmZlByb3BlcnR5KG9sZFY6IGFueSwgbmV3VjogYW55LCBrZXk6IHN0cmluZywgcmVzb3VyY2VTcGVjPzogUmVzb3VyY2UpIHtcbiAgICBsZXQgY2hhbmdlSW1wYWN0ID0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuTk9fQ0hBTkdFO1xuXG4gICAgY29uc3Qgc3BlYyA9IHJlc291cmNlU3BlYz8ucHJvcGVydGllcz8uW2tleV07XG4gICAgaWYgKHNwZWMgJiYgIWRlZXBFcXVhbChvbGRWLCBuZXdWKSkge1xuICAgICAgc3dpdGNoIChzcGVjLmNhdXNlc1JlcGxhY2VtZW50KSB7XG4gICAgICAgIGNhc2UgJ3llcyc6XG4gICAgICAgICAgY2hhbmdlSW1wYWN0ID0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuV0lMTF9SRVBMQUNFO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdtYXliZSc6XG4gICAgICAgICAgY2hhbmdlSW1wYWN0ID0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuTUFZX1JFUExBQ0U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgLy8gSW4gdGhvc2UgY2FzZXMsIHdoYXRldmVyIGlzIHRoZSBjdXJyZW50IHZhbHVlIGlzIHdoYXQgd2Ugc2hvdWxkIGtlZXBcbiAgICAgICAgICBjaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5XSUxMX1VQREFURTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IHR5cGVzLlByb3BlcnR5RGlmZmVyZW5jZShvbGRWLCBuZXdWLCB7IGNoYW5nZUltcGFjdCB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIF9kaWZmT3RoZXIob2xkVjogYW55LCBuZXdWOiBhbnkpIHtcbiAgICByZXR1cm4gbmV3IHR5cGVzLkRpZmZlcmVuY2Uob2xkViwgbmV3Vik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZVbmtub3duKG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpOiB0eXBlcy5EaWZmZXJlbmNlPGFueT4ge1xuICByZXR1cm4gbmV3IHR5cGVzLkRpZmZlcmVuY2Uob2xkVmFsdWUsIG5ld1ZhbHVlKTtcbn1cblxuLyoqXG4gKiBDb2VyY2VzIGEgZ2l2ZW4gdmFsdWUgdG8gK3N0cmluZyB8IHVuZGVmaW5lZCsuXG4gKlxuICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0byBiZSBjb2VyY2VkLlxuICpcbiAqIEByZXR1cm5zICt1bmRlZmluZWQrIGlmICt2YWx1ZSsgaXMgK251bGwrIG9yICt1bmRlZmluZWQrLFxuICogICAgICArdmFsdWUrIGlmIGl0IGlzIGEgK3N0cmluZyssXG4gKiAgICAgIGEgY29tcGFjdCBKU09OIHJlcHJlc2VudGF0aW9uIG9mICt2YWx1ZSsgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBfYXNTdHJpbmcodmFsdWU6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZSBhcyBzdHJpbmc7XG4gIH1cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxpQ0FBaUM7QUFDakMsaUNBQXlFO0FBRXpFLFNBQWdCLGFBQWEsQ0FBQyxRQUFhLEVBQUUsUUFBYTtJQUN4RCxPQUFPLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBUyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUZELHNDQUVDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLFFBQXlCLEVBQUUsUUFBeUI7SUFDaEYsT0FBTyxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUZELHNDQUVDO0FBRUQsU0FBZ0IsV0FBVyxDQUFDLFFBQXVCLEVBQUUsUUFBdUI7SUFDMUUsT0FBTyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDekQsQ0FBQztBQUZELGtDQUVDO0FBRUQsU0FBZ0IsWUFBWSxDQUFDLFFBQXdCLEVBQUUsUUFBd0I7SUFDN0UsT0FBTyxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUZELG9DQUVDO0FBRUQsU0FBZ0IsVUFBVSxDQUFDLFFBQXNCLEVBQUUsUUFBc0I7SUFDdkUsT0FBTyxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUZELGdDQUVDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLFFBQXlCLEVBQUUsUUFBeUI7SUFDaEYsT0FBTyxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUZELHNDQUVDO0FBRUQsU0FBZ0IsWUFB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T0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gJ0Bhd3MtY2RrL3NlcnZpY2Utc3BlYy10eXBlcyc7XG5pbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGRlZXBFcXVhbCwgZGlmZktleWVkRW50aXRpZXMsIGxvYWRSZXNvdXJjZU1vZGVsIH0gZnJvbSAnLi91dGlsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZBdHRyaWJ1dGUob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSk6IHR5cGVzLkRpZmZlcmVuY2U8c3RyaW5nPiB7XG4gIHJldHVybiBuZXcgdHlwZXMuRGlmZmVyZW5jZTxzdHJpbmc+KF9hc1N0cmluZyhvbGRWYWx1ZSksIF9hc1N0cmluZyhuZXdWYWx1ZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZkNvbmRpdGlvbihvbGRWYWx1ZTogdHlwZXMuQ29uZGl0aW9uLCBuZXdWYWx1ZTogdHlwZXMuQ29uZGl0aW9uKTogdHlwZXMuQ29uZGl0aW9uRGlmZmVyZW5jZSB7XG4gIHJldHVybiBuZXcgdHlwZXMuQ29uZGl0aW9uRGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZk1hcHBpbmcob2xkVmFsdWU6IHR5cGVzLk1hcHBpbmcsIG5ld1ZhbHVlOiB0eXBlcy5NYXBwaW5nKTogdHlwZXMuTWFwcGluZ0RpZmZlcmVuY2Uge1xuICByZXR1cm4gbmV3IHR5cGVzLk1hcHBpbmdEaWZmZXJlbmNlKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmTWV0YWRhdGEob2xkVmFsdWU6IHR5cGVzLk1ldGFkYXRhLCBuZXdWYWx1ZTogdHlwZXMuTWV0YWRhdGEpOiB0eXBlcy5NZXRhZGF0YURpZmZlcmVuY2Uge1xuICByZXR1cm4gbmV3IHR5cGVzLk1ldGFkYXRhRGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZk91dHB1dChvbGRWYWx1ZTogdHlwZXMuT3V0cHV0LCBuZXdWYWx1ZTogdHlwZXMuT3V0cHV0KTogdHlwZXMuT3V0cHV0RGlmZmVyZW5jZSB7XG4gIHJldHVybiBuZXcgdHlwZXMuT3V0cHV0RGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlBhcmFtZXRlcihvbGRWYWx1ZTogdHlwZXMuUGFyYW1ldGVyLCBuZXdWYWx1ZTogdHlwZXMuUGFyYW1ldGVyKTogdHlwZXMuUGFyYW1ldGVyRGlmZmVyZW5jZSB7XG4gIHJldHVybiBuZXcgdHlwZXMuUGFyYW1ldGVyRGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlJlc291cmNlKG9sZFZhbHVlPzogdHlwZXMuUmVzb3VyY2UsIG5ld1ZhbHVlPzogdHlwZXMuUmVzb3VyY2UpOiB0eXBlcy5SZXNvdXJjZURpZmZlcmVuY2Uge1xuICBjb25zdCByZXNvdXJjZVR5cGUgPSB7XG4gICAgb2xkVHlwZTogb2xkVmFsdWUgJiYgb2xkVmFsdWUuVHlwZSxcbiAgICBuZXdUeXBlOiBuZXdWYWx1ZSAmJiBuZXdWYWx1ZS5UeXBlLFxuICB9O1xuICBsZXQgcHJvcGVydHlEaWZmczogeyBba2V5OiBzdHJpbmddOiB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PiB9ID0ge307XG4gIGxldCBvdGhlckRpZmZzOiB7IFtrZXk6IHN0cmluZ106IHR5cGVzLkRpZmZlcmVuY2U8YW55PiB9ID0ge307XG5cbiAgaWYgKHJlc291cmNlVHlwZS5vbGRUeXBlICE9PSB1bmRlZmluZWQgJiYgcmVzb3VyY2VUeXBlLm9sZFR5cGUgPT09IHJlc291cmNlVHlwZS5uZXdUeXBlKSB7XG4gICAgLy8gT25seSBtYWtlcyBzZW5zZSB0byBpbnNwZWN0IGRlZXBlciBpZiB0aGUgdHlwZXMgc3RheWVkIHRoZSBzYW1lXG4gICAgY29uc3QgaW1wbCA9IGxvYWRSZXNvdXJjZU1vZGVsKHJlc291cmNlVHlwZS5vbGRUeXBlKTtcbiAgICBwcm9wZXJ0eURpZmZzID0gZGlmZktleWVkRW50aXRpZXMob2xkVmFsdWUhLlByb3BlcnRpZXMsXG4gICAgICBuZXdWYWx1ZSEuUHJvcGVydGllcyxcbiAgICAgIChvbGRWYWwsIG5ld1ZhbCwga2V5KSA9PiBfZGlmZlByb3BlcnR5KG9sZFZhbCwgbmV3VmFsLCBrZXksIGltcGwpKTtcblxuICAgIG90aGVyRGlmZnMgPSBkaWZmS2V5ZWRFbnRpdGllcyhvbGRWYWx1ZSwgbmV3VmFsdWUsIF9kaWZmT3RoZXIpO1xuICAgIGRlbGV0ZSBvdGhlckRpZmZzLlByb3BlcnRpZXM7XG4gIH1cblxuICByZXR1cm4gbmV3IHR5cGVzLlJlc291cmNlRGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUsIHtcbiAgICByZXNvdXJjZVR5cGUsIHByb3BlcnR5RGlmZnMsIG90aGVyRGlmZnMsXG4gIH0pO1xuXG4gIGZ1bmN0aW9uIF9kaWZmUHJvcGVydHkob2xkVjogYW55LCBuZXdWOiBhbnksIGtleTogc3RyaW5nLCByZXNvdXJjZVNwZWM/OiBSZXNvdXJjZSkge1xuICAgIGxldCBjaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5OT19DSEFOR0U7XG5cbiAgICBjb25zdCBzcGVjID0gcmVzb3VyY2VTcGVjPy5wcm9wZXJ0aWVzPy5ba2V5XTtcbiAgICBpZiAoc3BlYyAmJiAhZGVlcEVxdWFsKG9sZFYsIG5ld1YpKSB7XG4gICAgICBzd2l0Y2ggKHNwZWMuY2F1c2VzUmVwbGFjZW1lbnQpIHtcbiAgICAgICAgY2FzZSAneWVzJzpcbiAgICAgICAgICBjaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ21heWJlJzpcbiAgICAgICAgICBjaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5NQVlfUkVQTEFDRTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAvLyBJbiB0aG9zZSBjYXNlcywgd2hhdGV2ZXIgaXMgdGhlIGN1cnJlbnQgdmFsdWUgaXMgd2hhdCB3ZSBzaG91bGQga2VlcFxuICAgICAgICAgIGNoYW5nZUltcGFjdCA9IHR5cGVzLlJlc291cmNlSW1wYWN0LldJTExfVVBEQVRFO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlKG9sZFYsIG5ld1YsIHsgY2hhbmdlSW1wYWN0IH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gX2RpZmZPdGhlcihvbGRWOiBhbnksIG5ld1Y6IGFueSkge1xuICAgIHJldHVybiBuZXcgdHlwZXMuRGlmZmVyZW5jZShvbGRWLCBuZXdWKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlVua25vd24ob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSk6IHR5cGVzLkRpZmZlcmVuY2U8YW55PiB7XG4gIHJldHVybiBuZXcgdHlwZXMuRGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG4vKipcbiAqIENvZXJjZXMgYSBnaXZlbiB2YWx1ZSB0byArc3RyaW5nIHwgdW5kZWZpbmVkKy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIGJlIGNvZXJjZWQuXG4gKlxuICogQHJldHVybnMgK3VuZGVmaW5lZCsgaWYgK3ZhbHVlKyBpcyArbnVsbCsgb3IgK3VuZGVmaW5lZCssXG4gKiAgICAgICt2YWx1ZSsgaWYgaXQgaXMgYSArc3RyaW5nKyxcbiAqICAgICAgYSBjb21wYWN0IEpTT04gcmVwcmVzZW50YXRpb24gb2YgK3ZhbHVlKyBvdGhlcndpc2UuXG4gKi9cbmZ1bmN0aW9uIF9hc1N0cmluZyh2YWx1ZTogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlIGFzIHN0cmluZztcbiAgfVxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xufVxuIl19 /***/ }), @@ -9887,7 +10387,7 @@ function onlyChanges(xs) { } return ret; } -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBd0M7QUFDeEMsb0VBQW9IO0FBQ3BILGlDQUFzRDtBQUN0RCxvREFBZ0Q7QUFDaEQsOEVBQXlFO0FBYXpFLGlFQUFpRTtBQUNqRSxNQUFhLFlBQVk7SUF1QnZCLFlBQVksSUFBbUI7UUFDN0IsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEtBQUssU0FBUyxFQUFFO1lBQy9DLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUM7U0FDL0Q7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssU0FBUyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUNyQztRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ2pDO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFNBQVMs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QUFHLENBQUMsQ0FBQyxDQUFDO1NBQ2hEO1FBQ0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN2RCxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0NBQ0Y7QUFsTEQsZ0RBa0xDO0FBRUQsU0FBZ0Isb0JBQW9CLENBQUksSUFBbUI7SUFDekQsT0FBUSxJQUE4QixDQUFDLFlBQVksS0FBSyxTQUFTLENBQUM7QUFDcEUsQ0FBQztBQUZELG9EQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFdBQVcsQ0FBOEIsRUFBc0I7SUFDdEUsTUFBTSxHQUFHLEdBQXlCLEVBQUUsQ0FBQztJQUNyQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUM1QyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztTQUNqQjtLQUNGO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXNzZXJ0aW9uRXJyb3IgfSBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgUHJvcGVydHlTY3J1dGlueVR5cGUsIFJlc291cmNlU2NydXRpbnlUeXBlLCBSZXNvdXJjZSBhcyBSZXNvdXJjZU1vZGVsIH0gZnJvbSAnQGF3cy1jZGsvc2VydmljZS1zcGVjLXR5cGVzJztcbmltcG9ydCB7IGRlZXBFcXVhbCwgbG9hZFJlc291cmNlTW9kZWwgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgSWFtQ2hhbmdlcyB9IGZyb20gJy4uL2lhbS9pYW0tY2hhbmdlcyc7XG5pbXBvcnQgeyBTZWN1cml0eUdyb3VwQ2hhbmdlcyB9IGZyb20gJy4uL25ldHdvcmsvc2VjdXJpdHktZ3JvdXAtY2hhbmdlcyc7XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5TWFwID0ge1trZXk6IHN0cmluZ106IGFueSB9O1xuXG5leHBvcnQgdHlwZSBSZXNvdXJjZVJlcGxhY2VtZW50cyA9IHsgW2xvZ2ljYWxJZDogc3RyaW5nXTogUmVzb3VyY2VSZXBsYWNlbWVudCB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlUmVwbGFjZW1lbnQge1xuICByZXNvdXJjZVJlcGxhY2VkOiBib29sZWFuO1xuICBwcm9wZXJ0aWVzUmVwbGFjZWQ6IHsgW3Byb3BlcnR5TmFtZTogc3RyaW5nXTogQ2hhbmdlU2V0UmVwbGFjZW1lbnQgfTtcbn1cblxuZXhwb3J0IHR5cGUgQ2hhbmdlU2V0UmVwbGFjZW1lbnQgPSAnQWx3YXlzJyB8ICdOZXZlcicgfCAnQ29uZGl0aW9uYWxseSc7XG5cbi8qKiBTZW1hbnRpYyBkaWZmZXJlbmNlcyBiZXR3ZWVuIHR3byBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZXMuICovXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVEaWZmIGltcGxlbWVudHMgSVRlbXBsYXRlRGlmZiB7XG4gIHB1YmxpYyBhd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24/OiBEaWZmZXJlbmNlPHN0cmluZz47XG4gIHB1YmxpYyBkZXNjcmlwdGlvbj86IERpZmZlcmVuY2U8c3RyaW5nPjtcbiAgcHVibGljIHRyYW5zZm9ybT86IERpZmZlcmVuY2U8c3RyaW5nPjtcbiAgcHVibGljIGNvbmRpdGlvbnM6IERpZmZlcmVuY2VDb2xsZWN0aW9uPENvbmRpdGlvbiwgQ29uZGl0aW9uRGlmZmVyZW5jZT47XG4gIHB1YmxpYyBtYXBwaW5nczogRGlmZmVyZW5jZUNvbGxlY3Rpb248TWFwcGluZywgTWFwcGluZ0RpZmZlcmVuY2U+O1xuICBwdWJsaWMgbWV0YWRhdGE6IERpZmZlcmVuY2VDb2xsZWN0aW9uPE1ldGFkYXRhLCBNZXRhZGF0YURpZmZlcmVuY2U+O1xuICBwdWJsaWMgb3V0cHV0czogRGlmZmVyZW5jZUNvbGxlY3Rpb248T3V0cHV0LCBPdXRwdXREaWZmZXJlbmNlPjtcbiAgcHVibGljIHBhcmFtZXRlcnM6IERpZmZlcmVuY2VDb2xsZWN0aW9uPFBhcmFtZXRlciwgUGFyYW1ldGVyRGlmZmVyZW5jZT47XG4gIHB1YmxpYyByZXNvdXJjZXM6IERpZmZlcmVuY2VDb2xsZWN0aW9uPFJlc291cmNlLCBSZXNvdXJjZURpZmZlcmVuY2U+O1xuICAvKiogVGhlIGRpZmZlcmVuY2VzIGluIHVua25vd24vdW5leHBlY3RlZCBwYXJ0cyBvZiB0aGUgdGVtcGxhdGUgKi9cbiAgcHVibGljIHVua25vd246IERpZmZlcmVuY2VDb2xsZWN0aW9uPGFueSwgRGlmZmVyZW5jZTxhbnk+PjtcblxuICAvKipcbiAgICogQ2hhbmdlcyB0byBJQU0gcG9saWNpZXNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpYW1DaGFuZ2VzOiBJYW1DaGFuZ2VzO1xuXG4gIC8qKlxuICAgKiBDaGFuZ2VzIHRvIFNlY3VyaXR5IEdyb3VwIGluZ3Jlc3MgYW5kIGVncmVzcyBydWxlc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBDaGFuZ2VzOiBTZWN1cml0eUdyb3VwQ2hhbmdlcztcblxuICBjb25zdHJ1Y3RvcihhcmdzOiBJVGVtcGxhdGVEaWZmKSB7XG4gICAgaWYgKGFyZ3MuYXdzVGVtcGxhdGVGb3JtYXRWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuYXdzVGVtcGxhdGVGb3JtYXRWZXJzaW9uID0gYXJncy5hd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb247XG4gICAgfVxuICAgIGlmIChhcmdzLmRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSBhcmdzLmRlc2NyaXB0aW9uO1xuICAgIH1cbiAgICBpZiAoYXJncy50cmFuc2Zvcm0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy50cmFuc2Zvcm0gPSBhcmdzLnRyYW5zZm9ybTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmRpdGlvbnMgPSBhcmdzLmNvbmRpdGlvbnMgfHwgbmV3IERpZmZlcmVuY2VDb2xsZWN0aW9uKHt9KTtcbiAgICB0aGlzLm1hcHBpbmdzID0gYXJncy5tYXBwaW5ncyB8fCBuZXcgRGlmZmVyZW5jZUNvbGxlY3Rpb24oe30pO1xuICAgIHRoaXMubWV0YWRhdGEgPSBhcmdzLm1ldGFkYXRhIHx8IG5ldyBEaWZmZXJlbmNlQ29sbGVjdGlvbih7fSk7XG4gICAgdGhpcy5vdXRwdXRzID0gYXJncy5vdXRwdXRzIHx8IG5ldyBEaWZmZXJlbmNlQ29sbGVjdGlvbih7fSk7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gYXJncy5wYXJhbWV0ZXJzIHx8IG5ldyBEaWZmZXJlbmNlQ29sbGVjdGlvbih7fSk7XG4gICAgdGhpcy5yZXNvdXJjZXMgPSBhcmdzLnJlc291cmNlcyB8fCBuZXcgRGlmZmVyZW5jZUNvbGxlY3Rpb24oe30pO1xuICAgIHRoaXMudW5rbm93biA9IGFyZ3MudW5rbm93biB8fCBuZXcgRGlmZmVyZW5jZUNvbGxlY3Rpb24oe30pO1xuXG4gICAgdGhpcy5pYW1DaGFuZ2VzID0gbmV3IElhbUNoYW5nZXMoe1xuICAgICAgcHJvcGVydHlDaGFuZ2VzOiB0aGlzLnNjcnV0aW5pemFibGVQcm9wZXJ0eUNoYW5nZXMoSWFtQ2hhbmdlcy5JYW1Qcm9wZXJ0eVNjcnV0aW5pZXMpLFxuICAgICAgcmVzb3VyY2VDaGFuZ2VzOiB0aGlzLnNjcnV0aW5pemFibGVSZXNvdXJjZUNoYW5nZXMoSWFtQ2hhbmdlcy5JYW1SZXNvdXJjZVNjcnV0aW5pZXMpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zZWN1cml0eUdyb3VwQ2hhbmdlcyA9IG5ldyBTZWN1cml0eUdyb3VwQ2hhbmdlcyh7XG4gICAgICBlZ3Jlc3NSdWxlUHJvcGVydHlDaGFuZ2VzOiB0aGlzLnNjcnV0aW5pemFibGVQcm9wZXJ0eUNoYW5nZXMoW1Byb3BlcnR5U2NydXRpbnlUeXBlLkVncmVzc1J1bGVzXSksXG4gICAgICBpbmdyZXNzUnVsZVByb3BlcnR5Q2hhbmdlczogdGhpcy5zY3J1dGluaXphYmxlUHJvcGVydHlDaGFuZ2VzKFtQcm9wZXJ0eVNjcnV0aW55VHlwZS5JbmdyZXNzUnVsZXNdKSxcbiAgICAgIGVncmVzc1J1bGVSZXNvdXJjZUNoYW5nZXM6IHRoaXMuc2NydXRpbml6YWJsZVJlc291cmNlQ2hhbmdlcyhbUmVzb3VyY2VTY3J1dGlueVR5cGUuRWdyZXNzUnVsZVJlc291cmNlXSksXG4gICAgICBpbmdyZXNzUnVsZVJlc291cmNlQ2hhbmdlczogdGhpcy5zY3J1dGluaXphYmxlUmVzb3VyY2VDaGFuZ2VzKFtSZXNvdXJjZVNjcnV0aW55VHlwZS5JbmdyZXNzUnVsZVJlc291cmNlXSksXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpZmZlcmVuY2VDb3VudCgpIHtcbiAgICBsZXQgY291bnQgPSAwO1xuXG4gICAgaWYgKHRoaXMuYXdzVGVtcGxhdGVGb3JtYXRWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvdW50ICs9IDE7XG4gICAgfVxuICAgIGlmICh0aGlzLmRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvdW50ICs9IDE7XG4gICAgfVxuICAgIGlmICh0aGlzLnRyYW5zZm9ybSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb3VudCArPSAxO1xuICAgIH1cblxuICAgIGNvdW50ICs9IHRoaXMuY29uZGl0aW9ucy5kaWZmZXJlbmNlQ291bnQ7XG4gICAgY291bnQgKz0gdGhpcy5tYXBwaW5ncy5kaWZmZXJlbmNlQ291bnQ7XG4gICAgY291bnQgKz0gdGhpcy5tZXRhZGF0YS5kaWZmZXJlbmNlQ291bnQ7XG4gICAgY291bnQgKz0gdGhpcy5vdXRwdXRzLmRpZmZlcmVuY2VDb3VudDtcbiAgICBjb3VudCArPSB0aGlzLnBhcmFtZXRlcnMuZGlmZmVyZW5jZUNvdW50O1xuICAgIGNvdW50ICs9IHRoaXMucmVzb3VyY2VzLmRpZmZlcmVuY2VDb3VudDtcbiAgICBjb3VudCArPSB0aGlzLnVua25vd24uZGlmZmVyZW5jZUNvdW50O1xuXG4gICAgcmV0dXJuIGNvdW50O1xuICB9XG5cbiAgcHVibGljIGdldCBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpZmZlcmVuY2VDb3VudCA9PT0gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdHJ1ZSBpZiBhbnkgb2YgdGhlIHBlcm1pc3Npb25zIG9iamVjdHMgaW52b2x2ZSBhIGJyb2FkZW5pbmcgb2YgcGVybWlzc2lvbnNcbiAgICovXG4gIHB1YmxpYyBnZXQgcGVybWlzc2lvbnNCcm9hZGVuZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaWFtQ2hhbmdlcy5wZXJtaXNzaW9uc0Jyb2FkZW5lZCB8fCB0aGlzLnNlY3VyaXR5R3JvdXBDaGFuZ2VzLnJ1bGVzQWRkZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRydWUgaWYgYW55IG9mIHRoZSBwZXJtaXNzaW9ucyBvYmplY3RzIGhhdmUgY2hhbmdlZFxuICAgKi9cbiAgcHVibGljIGdldCBwZXJtaXNzaW9uc0FueUNoYW5nZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaWFtQ2hhbmdlcy5oYXNDaGFuZ2VzIHx8IHRoaXMuc2VjdXJpdHlHcm91cENoYW5nZXMuaGFzQ2hhbmdlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYWxsIHByb3BlcnR5IGNoYW5nZXMgb2YgYSBnaXZlbiBzY3J1dGlueSB0eXBlXG4gICAqXG4gICAqIFdlIGRvbid0IGp1c3QgbG9vayBhdCBwcm9wZXJ0eSB1cGRhdGVzOyB3ZSBhbHNvIGxvb2sgYXQgcmVzb3VyY2UgYWRkaXRpb25zIGFuZCBkZWxldGlvbnMgKGluIHdoaWNoXG4gICAqIGNhc2UgdGhlcmUgaXMgbm8gZnVydGhlciBkZXRhaWwgb24gcHJvcGVydHkgdmFsdWVzKSwgYW5kIHJlc291cmNlIHR5cGUgY2hhbmdlcy5cbiAgICovXG4gIHByaXZhdGUgc2NydXRpbml6YWJsZVByb3BlcnR5Q2hhbmdlcyhzY3J1dGlueVR5cGVzOiBQcm9wZXJ0eVNjcnV0aW55VHlwZVtdKTogUHJvcGVydHlDaGFuZ2VbXSB7XG4gICAgY29uc3QgcmV0ID0gbmV3IEFycmF5PFByb3BlcnR5Q2hhbmdlPigpO1xuXG4gICAgZm9yIChjb25zdCBbcmVzb3VyY2VMb2dpY2FsSWQsIHJlc291cmNlQ2hhbmdlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnJlc291cmNlcy5jaGFuZ2VzKSkge1xuICAgICAgaWYgKHJlc291cmNlQ2hhbmdlLnJlc291cmNlVHlwZUNoYW5nZWQpIHtcbiAgICAgICAgLy8gd2UgaWdub3JlIHJlc291cmNlIHR5cGUgY2hhbmdlcyBoZXJlLCBhbmQgaGFuZGxlIHRoZW0gaW4gc2NydXRpbml6YWJsZVJlc291cmNlQ2hhbmdlcygpXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXJlc291cmNlQ2hhbmdlLm5ld1Jlc291cmNlVHlwZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3VHlwZVByb3BzID0gbG9hZFJlc291cmNlTW9kZWwocmVzb3VyY2VDaGFuZ2UubmV3UmVzb3VyY2VUeXBlKT8ucHJvcGVydGllcyB8fCB7fTtcbiAgICAgIGZvciAoY29uc3QgW3Byb3BlcnR5TmFtZSwgcHJvcF0gb2YgT2JqZWN0LmVudHJpZXMobmV3VHlwZVByb3BzKSkge1xuICAgICAgICBjb25zdCBwcm9wU2NydXRpbnlUeXBlID0gcHJvcC5zY3J1dGluaXphYmxlIHx8IFByb3BlcnR5U2NydXRpbnlUeXBlLk5vbmU7XG4gICAgICAgIGlmIChzY3J1dGlueVR5cGVzLmluY2x1ZGVzKHByb3BTY3J1dGlueVR5cGUpKSB7XG4gICAgICAgICAgcmV0LnB1c2goe1xuICAgICAgICAgICAgcmVzb3VyY2VMb2dpY2FsSWQsXG4gICAgICAgICAgICBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICByZXNvdXJjZVR5cGU6IHJlc291cmNlQ2hhbmdlLnJlc291cmNlVHlwZSxcbiAgICAgICAgICAgIHNjcnV0aW55VHlwZTogcHJvcFNjcnV0aW55VHlwZSxcbiAgICAgICAgICAgIG9sZFZhbHVlOiByZXNvdXJjZUNoYW5nZS5vbGRQcm9wZXJ0aWVzPy5bcHJvcGVydHlOYW1lXSxcbiAgICAgICAgICAgIG5ld1ZhbHVlOiByZXNvdXJjZUNoYW5nZS5uZXdQcm9wZXJ0aWVzPy5bcHJvcGVydHlOYW1lXSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFsbCByZXNvdXJjZSBjaGFuZ2VzIG9mIGEgZ2l2ZW4gc2NydXRpbnkgdHlwZVxuICAgKlxuICAgKiBXZSBkb24ndCBqdXN0IGxvb2sgYXQgcmVzb3VyY2UgdXBkYXRlczsgd2UgYWxzbyBsb29rIGF0IHJlc291cmNlIGFkZGl0aW9ucyBhbmQgZGVsZXRpb25zIChpbiB3aGljaFxuICAgKiBjYXNlIHRoZXJlIGlzIG5vIGZ1cnRoZXIgZGV0YWlsIG9uIHByb3BlcnR5IHZhbHVlcyksIGFuZCByZXNvdXJjZSB0eXBlIGNoYW5nZXMuXG4gICAqL1xuICBwcml2YXRlIHNjcnV0aW5pemFibGVSZXNvdXJjZUNoYW5nZXMoc2NydXRpbnlUeXBlczogUmVzb3VyY2VTY3J1dGlueVR5cGVbXSk6IFJlc291cmNlQ2hhbmdlW10ge1xuICAgIGNvbnN0IHJldCA9IG5ldyBBcnJheTxSZXNvdXJjZUNoYW5nZT4oKTtcblxuICAgIGZvciAoY29uc3QgW3Jlc291cmNlTG9naWNhbElkLCByZXNvdXJjZUNoYW5nZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5yZXNvdXJjZXMuY2hhbmdlcykpIHtcbiAgICAgIGlmICghcmVzb3VyY2VDaGFuZ2UpIHsgY29udGludWU7IH1cblxuICAgICAgY29uc3QgY29tbW9uUHJvcHMgPSB7XG4gICAgICAgIG9sZFByb3BlcnRpZXM6IHJlc291cmNlQ2hhbmdlLm9sZFByb3BlcnRpZXMsXG4gICAgICAgIG5ld1Byb3BlcnRpZXM6IHJlc291cmNlQ2hhbmdlLm5ld1Byb3BlcnRpZXMsXG4gICAgICAgIHJlc291cmNlTG9naWNhbElkLFxuICAgICAgfTtcblxuICAgICAgLy8gY2hhbmdlcyB0byB0aGUgVHlwZSBvZiByZXNvdXJjZXMgY2FuIGhhcHBlbiB3aGVuIG1pZ3JhdGluZyBmcm9tIENGTiB0ZW1wbGF0ZXMgdGhhdCB1c2UgVHJhbnNmb3Jtc1xuICAgICAgaWYgKHJlc291cmNlQ2hhbmdlLnJlc291cmNlVHlwZUNoYW5nZWQpIHtcbiAgICAgICAgLy8gVHJlYXQgYXMgREVMRVRFK0FERFxuICAgICAgICBpZiAocmVzb3VyY2VDaGFuZ2Uub2xkUmVzb3VyY2VUeXBlKSB7XG4gICAgICAgICAgY29uc3Qgb2xkUmVzb3VyY2VNb2RlbCA9IGxvYWRSZXNvdXJjZU1vZGVsKHJlc291cmNlQ2hhbmdlLm9sZFJlc291cmNlVHlwZSk7XG4gICAgICAgICAgaWYgKG9sZFJlc291cmNlTW9kZWwgJiYgdGhpcy5yZXNvdXJjZUlzU2NydXRpbml6YWJsZShvbGRSZXNvdXJjZU1vZGVsLCBzY3J1dGlueVR5cGVzKSkge1xuICAgICAgICAgICAgcmV0LnB1c2goe1xuICAgICAgICAgICAgICAuLi5jb21tb25Qcm9wcyxcbiAgICAgICAgICAgICAgbmV3UHJvcGVydGllczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IHJlc291cmNlQ2hhbmdlLm9sZFJlc291cmNlVHlwZSEsXG4gICAgICAgICAgICAgIHNjcnV0aW55VHlwZTogb2xkUmVzb3VyY2VNb2RlbC5zY3J1dGluaXphYmxlISxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXNvdXJjZUNoYW5nZS5uZXdSZXNvdXJjZVR5cGUpIHtcbiAgICAgICAgICBjb25zdCBuZXdSZXNvdXJjZU1vZGVsID0gbG9hZFJlc291cmNlTW9kZWwocmVzb3VyY2VDaGFuZ2UubmV3UmVzb3VyY2VUeXBlKTtcbiAgICAgICAgICBpZiAobmV3UmVzb3VyY2VNb2RlbCAmJiB0aGlzLnJlc291cmNlSXNTY3J1dGluaXphYmxlKG5ld1Jlc291cmNlTW9kZWwsIHNjcnV0aW55VHlwZXMpKSB7XG4gICAgICAgICAgICByZXQucHVzaCh7XG4gICAgICAgICAgICAgIC4uLmNvbW1vblByb3BzLFxuICAgICAgICAgICAgICBvbGRQcm9wZXJ0aWVzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIHJlc291cmNlVHlwZTogcmVzb3VyY2VDaGFuZ2UubmV3UmVzb3VyY2VUeXBlISxcbiAgICAgICAgICAgICAgc2NydXRpbnlUeXBlOiBuZXdSZXNvdXJjZU1vZGVsLnNjcnV0aW5pemFibGUhLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZXNvdXJjZU1vZGVsID0gbG9hZFJlc291cmNlTW9kZWwocmVzb3VyY2VDaGFuZ2UucmVzb3VyY2VUeXBlKTtcbiAgICAgICAgaWYgKHJlc291cmNlTW9kZWwgJiYgdGhpcy5yZXNvdXJjZUlzU2NydXRpbml6YWJsZShyZXNvdXJjZU1vZGVsLCBzY3J1dGlueVR5cGVzKSkge1xuICAgICAgICAgIHJldC5wdXNoKHtcbiAgICAgICAgICAgIC4uLmNvbW1vblByb3BzLFxuICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiByZXNvdXJjZUNoYW5nZS5yZXNvdXJjZVR5cGUsXG4gICAgICAgICAgICBzY3J1dGlueVR5cGU6IHJlc291cmNlTW9kZWwuc2NydXRpbml6YWJsZSEsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvdXJjZUlzU2NydXRpbml6YWJsZShyZXM6IFJlc291cmNlTW9kZWwsIHNjcnV0aW55VHlwZXM6IEFycmF5PFJlc291cmNlU2NydXRpbnlUeXBlPik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzY3J1dGlueVR5cGVzLmluY2x1ZGVzKHJlcy5zY3J1dGluaXphYmxlIHx8IFJlc291cmNlU2NydXRpbnlUeXBlLk5vbmUpO1xuICB9XG59XG5cbi8qKlxuICogQSBjaGFuZ2UgaW4gcHJvcGVydHkgdmFsdWVzXG4gKlxuICogTm90IG5lY2Vzc2FyaWx5IGFuIHVwZGF0ZSwgaXQgY291bGQgYmUgdGhhdCB0aGVyZSB1c2VkIHRvIGJlIG5vIHZhbHVlIHRoZXJlXG4gKiBiZWNhdXNlIHRoZXJlIHdhcyBubyByZXNvdXJjZSwgYW5kIG5vdyB0aGVyZSBpcyAob3IgdmljZSB2ZXJzYSkuXG4gKlxuICogVGhlcmVmb3JlLCB3ZSBqdXN0IGNvbnRhaW4gcGxhaW4gdmFsdWVzIGFuZCBub3QgYSBQcm9wZXJ0eURpZmZlcmVuY2U8YW55Pi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9wZXJ0eUNoYW5nZSB7XG4gIC8qKlxuICAgKiBMb2dpY2FsIElEIG9mIHRoZSByZXNvdXJjZSB3aGVyZSB0aGlzIHByb3BlcnR5IGNoYW5nZSB3YXMgZm91bmRcbiAgICovXG4gIHJlc291cmNlTG9naWNhbElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFR5cGUgb2YgdGhlIHJlc291cmNlXG4gICAqL1xuICByZXNvdXJjZVR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogU2NydXRpbnkgdHlwZSBmb3IgdGhpcyBwcm9wZXJ0eSBjaGFuZ2VcbiAgICovXG4gIHNjcnV0aW55VHlwZTogUHJvcGVydHlTY3J1dGlueVR5cGU7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHByb3BlcnR5IHRoYXQgaXMgY2hhbmdpbmdcbiAgICovXG4gIHByb3BlcnR5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgb2xkIHByb3BlcnR5IHZhbHVlXG4gICAqL1xuICBvbGRWYWx1ZT86IGFueTtcblxuICAvKipcbiAgICogVGhlIG5ldyBwcm9wZXJ0eSB2YWx1ZVxuICAgKi9cbiAgbmV3VmFsdWU/OiBhbnk7XG59XG5cbi8qKlxuICogQSByZXNvdXJjZSBjaGFuZ2VcbiAqXG4gKiBFaXRoZXIgYSBjcmVhdGlvbiwgZGVsZXRpb24gb3IgdXBkYXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlQ2hhbmdlIHtcbiAgLyoqXG4gICAqIExvZ2ljYWwgSUQgb2YgdGhlIHJlc291cmNlIHdoZXJlIHRoaXMgcHJvcGVydHkgY2hhbmdlIHdhcyBmb3VuZFxuICAgKi9cbiAgcmVzb3VyY2VMb2dpY2FsSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogU2NydXRpbnkgdHlwZSBmb3IgdGhpcyByZXNvdXJjZSBjaGFuZ2VcbiAgICovXG4gIHNjcnV0aW55VHlwZTogUmVzb3VyY2VTY3J1dGlueVR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSByZXNvdXJjZVxuICAgKi9cbiAgcmVzb3VyY2VUeXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvbGQgcHJvcGVydGllcyB2YWx1ZSAobWlnaHQgYmUgdW5kZWZpbmVkIGluIGNhc2Ugb2YgY3JlYXRpb24pXG4gICAqL1xuICBvbGRQcm9wZXJ0aWVzPzogUHJvcGVydHlNYXA7XG5cbiAgLyoqXG4gICAqIFRoZSBuZXcgcHJvcGVydGllcyB2YWx1ZSAobWlnaHQgYmUgdW5kZWZpbmVkIGluIGNhc2Ugb2YgZGVsZXRpb24pXG4gICAqL1xuICBuZXdQcm9wZXJ0aWVzPzogUHJvcGVydHlNYXA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURpZmZlcmVuY2U8VmFsdWVUeXBlPiB7XG4gIHJlYWRvbmx5IG9sZFZhbHVlOiBWYWx1ZVR5cGUgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IG5ld1ZhbHVlOiBWYWx1ZVR5cGUgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGlzRGlmZmVyZW50OiBib29sZWFuO1xuICByZWFkb25seSBpc0FkZGl0aW9uOiBib29sZWFuO1xuICByZWFkb25seSBpc1JlbW92YWw6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGlzVXBkYXRlOiBib29sZWFuO1xufVxuXG4vKipcbiAqIE1vZGVscyBhbiBlbnRpdHkgdGhhdCBjaGFuZ2VkIGJldHdlZW4gdHdvIHZlcnNpb25zIG9mIGEgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBEaWZmZXJlbmNlPFZhbHVlVHlwZT4gaW1wbGVtZW50cyBJRGlmZmVyZW5jZTxWYWx1ZVR5cGU+IHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBpcyBhbiBhY3R1YWwgZGlmZmVyZW50IG9yIHRoZSB2YWx1ZXMgYXJlIGFjdHVhbGx5IHRoZSBzYW1lXG4gICAqXG4gICAqIGlzRGlmZmVyZW50ID0+IChpc1VwZGF0ZSB8IGlzUmVtb3ZlZCB8IGlzVXBkYXRlKVxuICAgKi9cbiAgcHVibGljIGlzRGlmZmVyZW50OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gb2xkVmFsdWUgdGhlIG9sZCB2YWx1ZSwgY2Fubm90IGJlIGVxdWFsICh0byB0aGUgc2Vuc2Ugb2YgK2RlZXBFcXVhbCspIHRvICtuZXdWYWx1ZSsuXG4gICAqIEBwYXJhbSBuZXdWYWx1ZSB0aGUgbmV3IHZhbHVlLCBjYW5ub3QgYmUgZXF1YWwgKHRvIHRoZSBzZW5zZSBvZiArZGVlcEVxdWFsKykgdG8gK29sZFZhbHVlKy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBvbGRWYWx1ZTogVmFsdWVUeXBlIHwgdW5kZWZpbmVkLCBwdWJsaWMgcmVhZG9ubHkgbmV3VmFsdWU6IFZhbHVlVHlwZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmIChvbGRWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcih7IG1lc3NhZ2U6ICdvbGRWYWx1ZSBhbmQgbmV3VmFsdWUgYXJlIGJvdGggdW5kZWZpbmVkIScgfSk7XG4gICAgfVxuICAgIHRoaXMuaXNEaWZmZXJlbnQgPSAhZGVlcEVxdWFsKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICAvKiogQHJldHVybnMgK3RydWUrIGlmIHRoZSBlbGVtZW50IGlzIG5ldyB0byB0aGUgdGVtcGxhdGUuICovXG4gIHB1YmxpYyBnZXQgaXNBZGRpdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vbGRWYWx1ZSA9PT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqIEByZXR1cm5zICt0cnVlKyBpZiB0aGUgZWxlbWVudCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSB0ZW1wbGF0ZS4gKi9cbiAgcHVibGljIGdldCBpc1JlbW92YWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmV3VmFsdWUgPT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyArdHJ1ZSsgaWYgdGhlIGVsZW1lbnQgd2FzIGFscmVhZHkgaW4gdGhlIHRlbXBsYXRlIGFuZCBpcyB1cGRhdGVkLiAqL1xuICBwdWJsaWMgZ2V0IGlzVXBkYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9sZFZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgICYmIHRoaXMubmV3VmFsdWUgIT09IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvcGVydHlEaWZmZXJlbmNlPFZhbHVlVHlwZT4gZXh0ZW5kcyBEaWZmZXJlbmNlPFZhbHVlVHlwZT4ge1xuICBwdWJsaWMgY2hhbmdlSW1wYWN0PzogUmVzb3VyY2VJbXBhY3Q7XG5cbiAgY29uc3RydWN0b3Iob2xkVmFsdWU6IFZhbHVlVHlwZSB8IHVuZGVmaW5lZCwgbmV3VmFsdWU6IFZhbHVlVHlwZSB8IHVuZGVmaW5lZCwgYXJnczogeyBjaGFuZ2VJbXBhY3Q/OiBSZXNvdXJjZUltcGFjdCB9KSB7XG4gICAgc3VwZXIob2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICB0aGlzLmNoYW5nZUltcGFjdCA9IGFyZ3MuY2hhbmdlSW1wYWN0O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEaWZmZXJlbmNlQ29sbGVjdGlvbjxWLCBUIGV4dGVuZHMgSURpZmZlcmVuY2U8Vj4+IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkaWZmczogeyBbbG9naWNhbElkOiBzdHJpbmddOiBUIH0pIHt9XG5cbiAgcHVibGljIGdldCBjaGFuZ2VzKCk6IHsgW2xvZ2ljYWxJZDogc3RyaW5nXTogVCB9IHtcbiAgICByZXR1cm4gb25seUNoYW5nZXModGhpcy5kaWZmcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpZmZlcmVuY2VDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMuY2hhbmdlcykubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIGdldChsb2dpY2FsSWQ6IHN0cmluZyk6IFQge1xuICAgIGNvbnN0IHJldCA9IHRoaXMuZGlmZnNbbG9naWNhbElkXTtcbiAgICBpZiAoIXJldCkgeyB0aHJvdyBuZXcgRXJyb3IoYE5vIG9iamVjdCB3aXRoIGxvZ2ljYWwgSUQgJyR7bG9naWNhbElkfSdgKTsgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlKGxvZ2ljYWxJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgZGVsZXRlIHRoaXMuZGlmZnNbbG9naWNhbElkXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG9naWNhbElkcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY2hhbmdlcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIG5ldyBUZW1wbGF0ZURpZmYgd2hpY2ggb25seSBjb250YWlucyBjaGFuZ2VzIGZvciB3aGljaCBgcHJlZGljYXRlYFxuICAgKiByZXR1cm5zIGB0cnVlYC5cbiAgICovXG4gIHB1YmxpYyBmaWx0ZXIocHJlZGljYXRlOiAoZGlmZjogVCB8IHVuZGVmaW5lZCkgPT4gYm9vbGVhbik6IERpZmZlcmVuY2VDb2xsZWN0aW9uPFYsIFQ+IHtcbiAgICBjb25zdCBuZXdDaGFuZ2VzOiB7IFtsb2dpY2FsSWQ6IHN0cmluZ106IFQgfSA9IHsgfTtcbiAgICBmb3IgKGNvbnN0IGlkIG9mIE9iamVjdC5rZXlzKHRoaXMuY2hhbmdlcykpIHtcbiAgICAgIGNvbnN0IGRpZmYgPSB0aGlzLmNoYW5nZXNbaWRdO1xuXG4gICAgICBpZiAocHJlZGljYXRlKGRpZmYpKSB7XG4gICAgICAgIG5ld0NoYW5nZXNbaWRdID0gZGlmZjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERpZmZlcmVuY2VDb2xsZWN0aW9uPFYsIFQ+KG5ld0NoYW5nZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEludm9rZXMgYGNiYCBmb3IgYWxsIGNoYW5nZXMgaW4gdGhpcyBjb2xsZWN0aW9uLlxuICAgKlxuICAgKiBDaGFuZ2VzIHdpbGwgYmUgc29ydGVkIGFzIGZvbGxvd3M6XG4gICAqICAtIFJlbW92ZWRcbiAgICogIC0gQWRkZWRcbiAgICogIC0gVXBkYXRlZFxuICAgKiAgLSBPdGhlcnNcbiAgICpcbiAgICogQHBhcmFtIGNiXG4gICAqL1xuICBwdWJsaWMgZm9yRWFjaERpZmZlcmVuY2UoY2I6IChsb2dpY2FsSWQ6IHN0cmluZywgY2hhbmdlOiBUKSA9PiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCByZW1vdmVkID0gbmV3IEFycmF5PHsgbG9naWNhbElkOiBzdHJpbmc7IGNoYW5nZTogVCB9PigpO1xuICAgIGNvbnN0IGFkZGVkID0gbmV3IEFycmF5PHsgbG9naWNhbElkOiBzdHJpbmc7IGNoYW5nZTogVCB9PigpO1xuICAgIGNvbnN0IHVwZGF0ZWQgPSBuZXcgQXJyYXk8eyBsb2dpY2FsSWQ6IHN0cmluZzsgY2hhbmdlOiBUIH0+KCk7XG4gICAgY29uc3Qgb3RoZXJzID0gbmV3IEFycmF5PHsgbG9naWNhbElkOiBzdHJpbmc7IGNoYW5nZTogVCB9PigpO1xuXG4gICAgZm9yIChjb25zdCBsb2dpY2FsSWQgb2YgdGhpcy5sb2dpY2FsSWRzKSB7XG4gICAgICBjb25zdCBjaGFuZ2U6IFQgPSB0aGlzLmNoYW5nZXNbbG9naWNhbElkXSE7XG4gICAgICBpZiAoY2hhbmdlLmlzQWRkaXRpb24pIHtcbiAgICAgICAgYWRkZWQucHVzaCh7IGxvZ2ljYWxJZCwgY2hhbmdlIH0pO1xuICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuaXNSZW1vdmFsKSB7XG4gICAgICAgIHJlbW92ZWQucHVzaCh7IGxvZ2ljYWxJZCwgY2hhbmdlIH0pO1xuICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuaXNVcGRhdGUpIHtcbiAgICAgICAgdXBkYXRlZC5wdXNoKHsgbG9naWNhbElkLCBjaGFuZ2UgfSk7XG4gICAgICB9IGVsc2UgaWYgKGNoYW5nZS5pc0RpZmZlcmVudCkge1xuICAgICAgICBvdGhlcnMucHVzaCh7IGxvZ2ljYWxJZCwgY2hhbmdlIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJlbW92ZWQuZm9yRWFjaCh2ID0+IGNiKHYubG9naWNhbElkLCB2LmNoYW5nZSkpO1xuICAgIGFkZGVkLmZvckVhY2godiA9PiBjYih2LmxvZ2ljYWxJZCwgdi5jaGFuZ2UpKTtcbiAgICB1cGRhdGVkLmZvckVhY2godiA9PiBjYih2LmxvZ2ljYWxJZCwgdi5jaGFuZ2UpKTtcbiAgICBvdGhlcnMuZm9yRWFjaCh2ID0+IGNiKHYubG9naWNhbElkLCB2LmNoYW5nZSkpO1xuICB9XG59XG5cbi8qKlxuICogQXJndW1lbnRzIGV4cGVjdGVkIGJ5IHRoZSBjb25zdHJ1Y3RvciBvZiArVGVtcGxhdGVEaWZmKywgZXh0cmFjdGVkIGFzIGFuIGludGVyZmFjZSBmb3IgdGhlIHNha2VcbiAqIG9mIChyZWxhdGl2ZSkgY29uY2lzZW5lc3Mgb2YgdGhlIGNvbnN0cnVjdG9yJ3Mgc2lnbmF0dXJlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElUZW1wbGF0ZURpZmYge1xuICBhd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24/OiBJRGlmZmVyZW5jZTxzdHJpbmc+O1xuICBkZXNjcmlwdGlvbj86IElEaWZmZXJlbmNlPHN0cmluZz47XG4gIHRyYW5zZm9ybT86IElEaWZmZXJlbmNlPHN0cmluZz47XG5cbiAgY29uZGl0aW9ucz86IERpZmZlcmVuY2VDb2xsZWN0aW9uPENvbmRpdGlvbiwgQ29uZGl0aW9uRGlmZmVyZW5jZT47XG4gIG1hcHBpbmdzPzogRGlmZmVyZW5jZUNvbGxlY3Rpb248TWFwcGluZywgTWFwcGluZ0RpZmZlcmVuY2U+O1xuICBtZXRhZGF0YT86IERpZmZlcmVuY2VDb2xsZWN0aW9uPE1ldGFkYXRhLCBNZXRhZGF0YURpZmZlcmVuY2U+O1xuICBvdXRwdXRzPzogRGlmZmVyZW5jZUNvbGxlY3Rpb248T3V0cHV0LCBPdXRwdXREaWZmZXJlbmNlPjtcbiAgcGFyYW1ldGVycz86IERpZmZlcmVuY2VDb2xsZWN0aW9uPFBhcmFtZXRlciwgUGFyYW1ldGVyRGlmZmVyZW5jZT47XG4gIHJlc291cmNlcz86IERpZmZlcmVuY2VDb2xsZWN0aW9uPFJlc291cmNlLCBSZXNvdXJjZURpZmZlcmVuY2U+O1xuXG4gIHVua25vd24/OiBEaWZmZXJlbmNlQ29sbGVjdGlvbjxhbnksIElEaWZmZXJlbmNlPGFueT4+O1xufVxuXG5leHBvcnQgdHlwZSBDb25kaXRpb24gPSBhbnk7XG5leHBvcnQgY2xhc3MgQ29uZGl0aW9uRGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8Q29uZGl0aW9uPiB7XG4gIC8vIFRPRE86IGRlZmluZSBzcGVjaWZpYyBkaWZmZXJlbmNlIGF0dHJpYnV0ZXNcbn1cblxuZXhwb3J0IHR5cGUgTWFwcGluZyA9IGFueTtcbmV4cG9ydCBjbGFzcyBNYXBwaW5nRGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8TWFwcGluZz4ge1xuICAvLyBUT0RPOiBkZWZpbmUgc3BlY2lmaWMgZGlmZmVyZW5jZSBhdHRyaWJ1dGVzXG59XG5cbmV4cG9ydCB0eXBlIE1ldGFkYXRhID0gYW55O1xuZXhwb3J0IGNsYXNzIE1ldGFkYXRhRGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8TWV0YWRhdGE+IHtcbiAgLy8gVE9ETzogZGVmaW5lIHNwZWNpZmljIGRpZmZlcmVuY2UgYXR0cmlidXRlc1xufVxuXG5leHBvcnQgdHlwZSBPdXRwdXQgPSBhbnk7XG5leHBvcnQgY2xhc3MgT3V0cHV0RGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8T3V0cHV0PiB7XG4gIC8vIFRPRE86IGRlZmluZSBzcGVjaWZpYyBkaWZmZXJlbmNlIGF0dHJpYnV0ZXNcbn1cblxuZXhwb3J0IHR5cGUgUGFyYW1ldGVyID0gYW55O1xuZXhwb3J0IGNsYXNzIFBhcmFtZXRlckRpZmZlcmVuY2UgZXh0ZW5kcyBEaWZmZXJlbmNlPFBhcmFtZXRlcj4ge1xuICAvLyBUT0RPOiBkZWZpbmUgc3BlY2lmaWMgZGlmZmVyZW5jZSBhdHRyaWJ1dGVzXG59XG5cbmV4cG9ydCBlbnVtIFJlc291cmNlSW1wYWN0IHtcbiAgLyoqIFRoZSBleGlzdGluZyBwaHlzaWNhbCByZXNvdXJjZSB3aWxsIGJlIHVwZGF0ZWQgKi9cbiAgV0lMTF9VUERBVEUgPSAnV0lMTF9VUERBVEUnLFxuICAvKiogQSBuZXcgcGh5c2ljYWwgcmVzb3VyY2Ugd2lsbCBiZSBjcmVhdGVkICovXG4gIFdJTExfQ1JFQVRFID0gJ1dJTExfQ1JFQVRFJyxcbiAgLyoqIFRoZSBleGlzdGluZyBwaHlzaWNhbCByZXNvdXJjZSB3aWxsIGJlIHJlcGxhY2VkICovXG4gIFdJTExfUkVQTEFDRSA9ICdXSUxMX1JFUExBQ0UnLFxuICAvKiogVGhlIGV4aXN0aW5nIHBoeXNpY2FsIHJlc291cmNlIG1heSBiZSByZXBsYWNlZCAqL1xuICBNQVlfUkVQTEFDRSA9ICdNQVlfUkVQTEFDRScsXG4gIC8qKiBUaGUgZXhpc3RpbmcgcGh5c2ljYWwgcmVzb3VyY2Ugd2lsbCBiZSBkZXN0cm95ZWQgKi9cbiAgV0lMTF9ERVNUUk9ZID0gJ1dJTExfREVTVFJPWScsXG4gIC8qKiBUaGUgZXhpc3RpbmcgcGh5c2ljYWwgcmVzb3VyY2Ugd2lsbCBiZSByZW1vdmVkIGZyb20gQ2xvdWRGb3JtYXRpb24gc3VwZXJ2aXNpb24gKi9cbiAgV0lMTF9PUlBIQU4gPSAnV0lMTF9PUlBIQU4nLFxuICAvKiogVGhlIGV4aXN0aW5nIHBoeXNpY2FsIHJlc291cmNlIHdpbGwgYmUgYWRkZWQgdG8gQ2xvdWRGb3JtYXRpb24gc3VwZXJ2aXNpb24gKi9cbiAgV0lMTF9JTVBPUlQgPSAnV0lMTF9JTVBPUlQnLFxuICAvKiogVGhlcmUgaXMgbm8gY2hhbmdlIGluIHRoaXMgcmVzb3VyY2UgKi9cbiAgTk9fQ0hBTkdFID0gJ05PX0NIQU5HRScsXG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBhcyBhIHJlZHVjZXIgdG8gb2J0YWluIHRoZSByZXNvdXJjZS1sZXZlbCBpbXBhY3Qgb2YgYSBsaXN0XG4gKiBvZiBwcm9wZXJ0eS1sZXZlbCBpbXBhY3RzLlxuICogQHBhcmFtIG9uZSB0aGUgY3VycmVudCB3b3JzdCBpbXBhY3Qgc28gZmFyLlxuICogQHBhcmFtIHR3byB0aGUgbmV3IGltcGFjdCBiZWluZyBjb25zaWRlcmVkIChjYW4gYmUgdW5kZWZpbmVkLCBhcyB3ZSBtYXkgbm90IGFsd2F5cyBiZVxuICogICAgICBhYmxlIHRvIGRldGVybWluZSBzb21lIHBlcm9wZXJ0eSdzIGltcGFjdCkuXG4gKi9cbmZ1bmN0aW9uIHdvcnN0SW1wYWN0KG9uZTogUmVzb3VyY2VJbXBhY3QsIHR3bz86IFJlc291cmNlSW1wYWN0KTogUmVzb3VyY2VJbXBhY3Qge1xuICBpZiAoIXR3bykgeyByZXR1cm4gb25lOyB9XG4gIGNvbnN0IGJhZG5lc3MgPSB7XG4gICAgW1Jlc291cmNlSW1wYWN0Lk5PX0NIQU5HRV06IDAsXG4gICAgW1Jlc291cmNlSW1wYWN0LldJTExfSU1QT1JUXTogMCxcbiAgICBbUmVzb3VyY2VJbXBhY3QuV0lMTF9VUERBVEVdOiAxLFxuICAgIFtSZXNvdXJjZUltcGFjdC5XSUxMX0NSRUFURV06IDIsXG4gICAgW1Jlc291cmNlSW1wYWN0LldJTExfT1JQSEFOXTogMyxcbiAgICBbUmVzb3VyY2VJbXBhY3QuTUFZX1JFUExBQ0VdOiA0LFxuICAgIFtSZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0VdOiA1LFxuICAgIFtSZXNvdXJjZUltcGFjdC5XSUxMX0RFU1RST1ldOiA2LFxuICB9O1xuICByZXR1cm4gYmFkbmVzc1tvbmVdID4gYmFkbmVzc1t0d29dID8gb25lIDogdHdvO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlIHtcbiAgVHlwZTogc3RyaW5nO1xuICBQcm9wZXJ0aWVzPzogeyBbbmFtZTogc3RyaW5nXTogYW55IH07XG5cbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG4vKipcbiAqIENoYW5nZSB0byBhIHNpbmdsZSByZXNvdXJjZSBiZXR3ZWVuIHR3byBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZXNcbiAqXG4gKiBUaGlzIGNsYXNzIGNhbiBiZSBtdXRhdGVkIGFmdGVyIGNvbnN0cnVjdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlc291cmNlRGlmZmVyZW5jZSBpbXBsZW1lbnRzIElEaWZmZXJlbmNlPFJlc291cmNlPiB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcmVzb3VyY2Ugd2FzIGFkZGVkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXNBZGRpdGlvbjogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHJlc291cmNlIHdhcyByZW1vdmVkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXNSZW1vdmFsOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcmVzb3VyY2Ugd2FzIGltcG9ydGVkXG4gICAqL1xuICBwdWJsaWMgaXNJbXBvcnQ/OiBib29sZWFuO1xuXG4gIC8qKiBQcm9wZXJ0eS1sZXZlbCBjaGFuZ2VzIG9uIHRoZSByZXNvdXJjZSAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3BlcnR5RGlmZnM6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4gfTtcblxuICAvKiogQ2hhbmdlcyB0byBub24tcHJvcGVydHkgbGV2ZWwgYXR0cmlidXRlcyBvZiB0aGUgcmVzb3VyY2UgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBvdGhlckRpZmZzOiB7IFtrZXk6IHN0cmluZ106IERpZmZlcmVuY2U8YW55PiB9O1xuXG4gIC8qKiBUaGUgcmVzb3VyY2UgdHlwZSAob3Igb2xkIGFuZCBuZXcgdHlwZSBpZiBpdCBoYXMgY2hhbmdlZCkgKi9cbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZVR5cGVzOiB7IHJlYWRvbmx5IG9sZFR5cGU/OiBzdHJpbmc7IHJlYWRvbmx5IG5ld1R5cGU/OiBzdHJpbmcgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgb2xkVmFsdWU6IFJlc291cmNlIHwgdW5kZWZpbmVkLFxuICAgIHB1YmxpYyByZWFkb25seSBuZXdWYWx1ZTogUmVzb3VyY2UgfCB1bmRlZmluZWQsXG4gICAgYXJnczoge1xuICAgICAgcmVzb3VyY2VUeXBlOiB7IG9sZFR5cGU/OiBzdHJpbmc7IG5ld1R5cGU/OiBzdHJpbmcgfTtcbiAgICAgIHByb3BlcnR5RGlmZnM6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4gfTtcbiAgICAgIG90aGVyRGlmZnM6IHsgW2tleTogc3RyaW5nXTogRGlmZmVyZW5jZTxhbnk+IH07XG4gICAgfSxcbiAgKSB7XG4gICAgdGhpcy5yZXNvdXJjZVR5cGVzID0gYXJncy5yZXNvdXJjZVR5cGU7XG4gICAgdGhpcy5wcm9wZXJ0eURpZmZzID0gYXJncy5wcm9wZXJ0eURpZmZzO1xuICAgIHRoaXMub3RoZXJEaWZmcyA9IGFyZ3Mub3RoZXJEaWZmcztcblxuICAgIHRoaXMuaXNBZGRpdGlvbiA9IG9sZFZhbHVlID09PSB1bmRlZmluZWQ7XG4gICAgdGhpcy5pc1JlbW92YWwgPSBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkO1xuICAgIHRoaXMuaXNJbXBvcnQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9sZFByb3BlcnRpZXMoKTogUHJvcGVydHlNYXAgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm9sZFZhbHVlICYmIHRoaXMub2xkVmFsdWUuUHJvcGVydGllcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmV3UHJvcGVydGllcygpOiBQcm9wZXJ0eU1hcCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubmV3VmFsdWUgJiYgdGhpcy5uZXdWYWx1ZS5Qcm9wZXJ0aWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyByZXNvdXJjZSB3YXMgbW9kaWZpZWQgYXQgYWxsXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzRGlmZmVyZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpZmZlcmVuY2VDb3VudCA+IDAgfHwgdGhpcy5vbGRSZXNvdXJjZVR5cGUgIT09IHRoaXMubmV3UmVzb3VyY2VUeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJlc291cmNlIHdhcyB1cGRhdGVkIGluLXBsYWNlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzVXBkYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRGlmZmVyZW50ICYmICF0aGlzLmlzQWRkaXRpb24gJiYgIXRoaXMuaXNSZW1vdmFsO1xuICB9XG5cbiAgcHVibGljIGdldCBvbGRSZXNvdXJjZVR5cGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5ld1Jlc291cmNlVHlwZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGwgYWN0dWFsIHByb3BlcnR5IHVwZGF0ZXNcbiAgICovXG4gIHB1YmxpYyBnZXQgcHJvcGVydHlVcGRhdGVzKCk6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4gfSB7XG4gICAgcmV0dXJuIG9ubHlDaGFuZ2VzKHRoaXMucHJvcGVydHlEaWZmcyk7XG4gIH1cblxuICAvKipcbiAgICogQWxsIGFjdHVhbCBcIm90aGVyXCIgdXBkYXRlc1xuICAgKi9cbiAgcHVibGljIGdldCBvdGhlckNoYW5nZXMoKTogeyBba2V5OiBzdHJpbmddOiBEaWZmZXJlbmNlPGFueT4gfSB7XG4gICAgcmV0dXJuIG9ubHlDaGFuZ2VzKHRoaXMub3RoZXJEaWZmcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIHJlc291cmNlIHR5cGUgd2FzIGNoYW5nZWQgaW4gdGhpcyBkaWZmXG4gICAqXG4gICAqIFRoaXMgaXMgbm90IGEgdmFsaWQgb3BlcmF0aW9uIGluIENsb3VkRm9ybWF0aW9uIGJ1dCB0byBiZSBkZWZlbnNpdmUgd2UncmUgZ29pbmdcbiAgICogdG8gYmUgYXdhcmUgb2YgaXQgYW55d2F5LlxuICAgKi9cbiAgcHVibGljIGdldCByZXNvdXJjZVR5cGVDaGFuZ2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGUgIT09IHVuZGVmaW5lZFxuICAgICAgICAmJiB0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICYmIHRoaXMucmVzb3VyY2VUeXBlcy5vbGRUeXBlICE9PSB0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSByZXNvdXJjZSB0eXBlIGlmIGl0IHdhcyB1bmNoYW5nZWRcbiAgICpcbiAgICogSWYgdGhlIHJlc291cmNlIHR5cGUgd2FzIGNoYW5nZWQsIGl0J3MgYW4gZXJyb3IgdG8gY2FsbCB0aGlzLlxuICAgKi9cbiAgcHVibGljIGdldCByZXNvdXJjZVR5cGUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5yZXNvdXJjZVR5cGVDaGFuZ2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBnZXQgLnJlc291cmNlVHlwZSwgYmVjYXVzZSB0aGUgdHlwZSB3YXMgY2hhbmdlZCcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGUgfHwgdGhpcy5yZXNvdXJjZVR5cGVzLm5ld1R5cGUhO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgYSBQcm9wZXJ0eUNoYW5nZSBpbiB0aGlzIG9iamVjdFxuICAgKlxuICAgKiBUaGlzIGFmZmVjdHMgdGhlIHByb3BlcnR5IGRpZmYgYXMgaXQgaXMgc3VtbWFyaXplZCB0byB1c2VycywgYnV0IGl0IERPRVNcbiAgICogTk9UIGFmZmVjdCBlaXRoZXIgdGhlIFwib2xkVmFsdWVcIiBvciBcIm5ld1ZhbHVlXCIgdmFsdWVzOyB0aG9zZSBzdGlsbCBjb250YWluXG4gICAqIHRoZSBhY3R1YWwgdGVtcGxhdGUgdmFsdWVzIGFzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyICh0aGV5IG1pZ2h0IHN0aWxsIGJlXG4gICAqIHVzZWQgZm9yIGRvd25zdHJlYW0gcHJvY2Vzc2luZykuXG4gICAqL1xuICBwdWJsaWMgc2V0UHJvcGVydHlDaGFuZ2UocHJvcGVydHlOYW1lOiBzdHJpbmcsIGNoYW5nZTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pIHtcbiAgICB0aGlzLnByb3BlcnR5RGlmZnNbcHJvcGVydHlOYW1lXSA9IGNoYW5nZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlIGEgT3RoZXJDaGFuZ2UgaW4gdGhpcyBvYmplY3RcbiAgICpcbiAgICogVGhpcyBhZmZlY3RzIHRoZSBwcm9wZXJ0eSBkaWZmIGFzIGl0IGlzIHN1bW1hcml6ZWQgdG8gdXNlcnMsIGJ1dCBpdCBET0VTXG4gICAqIE5PVCBhZmZlY3QgZWl0aGVyIHRoZSBcIm9sZFZhbHVlXCIgb3IgXCJuZXdWYWx1ZVwiIHZhbHVlczsgdGhvc2Ugc3RpbGwgY29udGFpblxuICAgKiB0aGUgYWN0dWFsIHRlbXBsYXRlIHZhbHVlcyBhcyBwcm92aWRlZCBieSB0aGUgdXNlciAodGhleSBtaWdodCBzdGlsbCBiZVxuICAgKiB1c2VkIGZvciBkb3duc3RyZWFtIHByb2Nlc3NpbmcpLlxuICAgKi9cbiAgcHVibGljIHNldE90aGVyQ2hhbmdlKG90aGVyTmFtZTogc3RyaW5nLCBjaGFuZ2U6IFByb3BlcnR5RGlmZmVyZW5jZTxhbnk+KSB7XG4gICAgdGhpcy5vdGhlckRpZmZzW290aGVyTmFtZV0gPSBjaGFuZ2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNoYW5nZUltcGFjdCgpOiBSZXNvdXJjZUltcGFjdCB7XG4gICAgaWYgKHRoaXMuaXNJbXBvcnQpIHtcbiAgICAgIHJldHVybiBSZXNvdXJjZUltcGFjdC5XSUxMX0lNUE9SVDtcbiAgICB9XG4gICAgLy8gQ2hlY2sgdGhlIFR5cGUgZmlyc3RcbiAgICBpZiAodGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGUgIT09IHRoaXMucmVzb3VyY2VUeXBlcy5uZXdUeXBlKSB7XG4gICAgICBpZiAodGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGUgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gUmVzb3VyY2VJbXBhY3QuV0lMTF9DUkVBVEU7IH1cbiAgICAgIGlmICh0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9sZFZhbHVlIS5EZWxldGlvblBvbGljeSA9PT0gJ1JldGFpbidcbiAgICAgICAgICA/IFJlc291cmNlSW1wYWN0LldJTExfT1JQSEFOXG4gICAgICAgICAgOiBSZXNvdXJjZUltcGFjdC5XSUxMX0RFU1RST1k7XG4gICAgICB9XG4gICAgICByZXR1cm4gUmVzb3VyY2VJbXBhY3QuV0lMTF9SRVBMQUNFO1xuICAgIH1cblxuICAgIC8vIEJhc2UgaW1wYWN0IChiZWZvcmUgd2UgbWl4IGluIHRoZSB3b3JzdCBvZiB0aGUgcHJvcGVydHkgaW1wYWN0cyk7XG4gICAgLy8gV0lMTF9VUERBVEUgaWYgd2UgaGF2ZSBcIm90aGVyXCIgY2hhbmdlcywgTk9fQ0hBTkdFIGlmIHRoZXJlIGFyZSBubyBcIm90aGVyXCIgY2hhbmdlcy5cbiAgICBjb25zdCBiYXNlSW1wYWN0ID0gT2JqZWN0LmtleXModGhpcy5vdGhlckNoYW5nZXMpLmxlbmd0aCA+IDAgPyBSZXNvdXJjZUltcGFjdC5XSUxMX1VQREFURSA6IFJlc291cmNlSW1wYWN0Lk5PX0NIQU5HRTtcblxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMucHJvcGVydHlEaWZmcylcbiAgICAgIC5tYXAoZWx0ID0+IGVsdC5jaGFuZ2VJbXBhY3QpXG4gICAgICAucmVkdWNlKHdvcnN0SW1wYWN0LCBiYXNlSW1wYWN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb3VudCBvZiBhY3R1YWwgZGlmZmVyZW5jZXMgKG5vdCBvZiBlbGVtZW50cylcbiAgICovXG4gIHB1YmxpYyBnZXQgZGlmZmVyZW5jZUNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5wcm9wZXJ0eVVwZGF0ZXMpLmxlbmd0aFxuICAgICAgKyBPYmplY3QudmFsdWVzKHRoaXMub3RoZXJDaGFuZ2VzKS5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogSW52b2tlIGEgY2FsbGJhY2sgZm9yIGVhY2ggYWN0dWFsIGRpZmZlcmVuY2VcbiAgICovXG4gIHB1YmxpYyBmb3JFYWNoRGlmZmVyZW5jZShjYjogKHR5cGU6ICdQcm9wZXJ0eScgfCAnT3RoZXInLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBEaWZmZXJlbmNlPGFueT4gfCBQcm9wZXJ0eURpZmZlcmVuY2U8YW55PikgPT4gYW55KSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5wcm9wZXJ0eVVwZGF0ZXMpLnNvcnQoKSkge1xuICAgICAgY2IoJ1Byb3BlcnR5Jywga2V5LCB0aGlzLnByb3BlcnR5VXBkYXRlc1trZXldKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5vdGhlckNoYW5nZXMpLnNvcnQoKSkge1xuICAgICAgY2IoJ090aGVyJywga2V5LCB0aGlzLm90aGVyRGlmZnNba2V5XSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb3BlcnR5RGlmZmVyZW5jZTxUPihkaWZmOiBEaWZmZXJlbmNlPFQ+KTogZGlmZiBpcyBQcm9wZXJ0eURpZmZlcmVuY2U8VD4ge1xuICByZXR1cm4gKGRpZmYgYXMgUHJvcGVydHlEaWZmZXJlbmNlPFQ+KS5jaGFuZ2VJbXBhY3QgIT09IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBGaWx0ZXIgYSBtYXAgb2YgSURpZmZlcmVuY2VzIGRvd24gdG8gb25seSByZXRhaW4gdGhlIGFjdHVhbCBjaGFuZ2VzXG4gKi9cbmZ1bmN0aW9uIG9ubHlDaGFuZ2VzPFYsIFQgZXh0ZW5kcyBJRGlmZmVyZW5jZTxWPj4oeHM6IHtba2V5OiBzdHJpbmddOiBUfSk6IHtba2V5OiBzdHJpbmddOiBUfSB7XG4gIGNvbnN0IHJldDogeyBba2V5OiBzdHJpbmddOiBUIH0gPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCBkaWZmXSBvZiBPYmplY3QuZW50cmllcyh4cykpIHtcbiAgICBpZiAoZGlmZi5pc0RpZmZlcmVudCkge1xuICAgICAgcmV0W2tleV0gPSBkaWZmO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmV0O1xufVxuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBd0M7QUFDeEMsb0VBQW9IO0FBQ3BILGlDQUFzRDtBQUN0RCxvREFBZ0Q7QUFDaEQsOEVBQXlFO0FBYXpFLGlFQUFpRTtBQUNqRSxNQUFhLFlBQVk7SUF1QnZCLFlBQVksSUFBbUI7UUFDN0IsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNsQyxDQUFDO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxD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LEdBQUcsSUFBSSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXNzZXJ0aW9uRXJyb3IgfSBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgUHJvcGVydHlTY3J1dGlueVR5cGUsIFJlc291cmNlU2NydXRpbnlUeXBlLCBSZXNvdXJjZSBhcyBSZXNvdXJjZU1vZGVsIH0gZnJvbSAnQGF3cy1jZGsvc2VydmljZS1zcGVjLXR5cGVzJztcbmltcG9ydCB7IGRlZXBFcXVhbCwgbG9hZFJlc291cmNlTW9kZWwgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgSWFtQ2hhbmdlcyB9IGZyb20gJy4uL2lhbS9pYW0tY2hhbmdlcyc7XG5pbXBvcnQgeyBTZWN1cml0eUdyb3VwQ2hhbmdlcyB9IGZyb20gJy4uL25ldHdvcmsvc2VjdXJpdHktZ3JvdXAtY2hhbmdlcyc7XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5TWFwID0ge1trZXk6IHN0cmluZ106IGFueSB9O1xuXG5leHBvcnQgdHlwZSBSZXNvdXJjZVJlcGxhY2VtZW50cyA9IHsgW2xvZ2ljYWxJZDogc3RyaW5nXTogUmVzb3VyY2VSZXBsYWNlbWVudCB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlUmVwbGFjZW1lbnQge1xuICByZXNvdXJjZVJlcGxhY2VkOiBib29sZWFuO1xuICBwcm9wZXJ0aWVzUmVwbGFjZWQ6IHsgW3Byb3BlcnR5TmFtZTogc3RyaW5nXTogQ2hhbmdlU2V0UmVwbGFjZW1lbnQgfTtcbn1cblxuZXhwb3J0IHR5cGUgQ2hhbmdlU2V0UmVwbGFjZW1lbnQgPSAnQWx3YXlzJyB8ICdOZXZlcicgfCAnQ29uZGl0aW9uYWxseSc7XG5cbi8qKiBTZW1hbnRpYyBkaWZmZXJlbmNlcyBiZXR3ZWVuIHR3byBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZXMuICovXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVEaWZmIGltcGxlbWVudHMgSVRlbXBsYXRlRGlmZiB7XG4gIHB1YmxpYyBhd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24/OiBEaWZmZXJlbmNlPHN0cmluZz47XG4gIHB1YmxpYyBkZXNjcmlwdGlvbj86IERpZmZlcmVuY2U8c3RyaW5nPjtcbiAgcHVibGljIHRyYW5zZm9ybT86IERpZmZlcmVuY2U8c3RyaW5nPjtcbiAgcHVibGljIGNvbmRpdGlvbnM6IERpZmZlcmVuY2VDb2xsZWN0aW9uPENvbmRpdGlvbiwgQ29uZGl0aW9uRGlmZmVyZW5jZT47XG4gIHB1YmxpYyBtYXBwaW5nczogRGlmZmVyZW5jZUNvbGxlY3Rpb248TWFwcGluZywgTWFwcGluZ0RpZmZlcmVuY2U+O1xuICBwdWJsaWMgbWV0YWRhdGE6IERpZmZlcmVuY2VDb2xsZWN0aW9uPE1ldGFkYXRhLCBNZXRhZGF0YURpZmZlcmVuY2U+O1xuICBwdWJsaWMgb3V0cHV0czogRGlmZmVyZW5jZUNvbGxlY3Rpb248T3V0cHV0LCBPdXRwdXREaWZmZXJlbmNlPjtcbiAgcHVibGljIHBhcmFtZXRlcnM6IERpZmZlcmVuY2VDb2xsZWN0aW9uPFBhcmFtZXRlciwgUGFyYW1ldGVyRGlmZmVyZW5jZT47XG4gIHB1YmxpYyByZXNvdXJjZXM6IERpZmZlcmVuY2VDb2xsZWN0aW9uPFJlc291cmNlLCBSZXNvdXJjZURpZmZlcmVuY2U+O1xuICAvKiogVGhlIGRpZmZlcmVuY2VzIGluIHVua25vd24vdW5leHBlY3RlZCBwYXJ0cyBvZiB0aGUgdGVtcGxhdGUgKi9cbiAgcHVibGljIHVua25vd246IERpZmZlcmVuY2VDb2xsZWN0aW9uPGFueSwgRGlmZmVyZW5jZTxhbnk+PjtcblxuICAvKipcbiAgICogQ2hhbmdlcyB0byBJQU0gcG9saWNpZXNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpYW1DaGFuZ2VzOiBJYW1DaGFuZ2VzO1xuXG4gIC8qKlxuICAgKiBDaGFuZ2VzIHRvIFNlY3VyaXR5IEdyb3VwIGluZ3Jlc3MgYW5kIGVncmVzcyBydWxlc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBDaGFuZ2VzOiBTZWN1cml0eUdyb3VwQ2hhbmdlcztcblxuICBjb25zdHJ1Y3RvcihhcmdzOiBJVGVtcGxhdGVEaWZmKSB7XG4gICAgaWYgKGFyZ3MuYXdzVGVtcGxhdGVGb3JtYXRWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuYXdzVGVtcGxhdGVGb3JtYXRWZXJzaW9uID0gYXJncy5hd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb247XG4gICAgfVxuICAgIGlmIChhcmdzLmRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSBhcmdzLmRlc2NyaXB0aW9uO1xuICAgIH1cbiAgICBpZiAoYXJncy50cmFuc2Zvcm0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy50cmFuc2Zvcm0gPSBhcmdzLnRyYW5zZm9ybTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmRpdGlvbnMgPSBhcmdzLmNvbmRpdGlvbnMgfHwgbmV3IERpZmZlcmVuY2VDb2xsZWN0aW9uKHt9KTtcbiAgICB0aGlzLm1hcHBpbmdzID0gYXJncy5tYXBwaW5ncyB8fCBuZXcgRGlmZmVyZW5jZUNvbGxlY3Rpb24oe30pO1xuICAgIHRoaXMubWV0YWRhdGEgPSBhcmdzLm1ldGFkYXRhIHx8IG5ldyBEaWZmZXJlbmNlQ29sbGVjdGlvbih7fSk7XG4gICAgdGhpcy5vdXRwdXRzID0gYXJncy5vdXRwdXRzIHx8IG5ldyBEaWZmZXJlbmNlQ29sbGVjdGlvbih7fSk7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gYXJncy5wYXJhbWV0ZXJzIHx8IG5ldyBEaWZmZXJlbmNlQ29sbGVjdGlvbih7fSk7XG4gICAgdGhpcy5yZXNvdXJjZXMgPSBhcmdzLnJlc291cmNlcyB8fCBuZXcgRGlmZmVyZW5jZUNvbGxlY3Rpb24oe30pO1xuICAgIHRoaXMudW5rbm93biA9IGFyZ3MudW5rbm93biB8fCBuZXcgRGlmZmVyZW5jZUNvbGxlY3Rpb24oe30pO1xuXG4gICAgdGhpcy5pYW1DaGFuZ2VzID0gbmV3IElhbUNoYW5nZXMoe1xuICAgICAgcHJvcGVydHlDaGFuZ2VzOiB0aGlzLnNjcnV0aW5pemFibGVQcm9wZXJ0eUNoYW5nZXMoSWFtQ2hhbmdlcy5JYW1Qcm9wZXJ0eVNjcnV0aW5pZXMpLFxuICAgICAgcmVzb3VyY2VDaGFuZ2VzOiB0aGlzLnNjcnV0aW5pemFibGVSZXNvdXJjZUNoYW5nZXMoSWFtQ2hhbmdlcy5JYW1SZXNvdXJjZVNjcnV0aW5pZXMpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zZWN1cml0eUdyb3VwQ2hhbmdlcyA9IG5ldyBTZWN1cml0eUdyb3VwQ2hhbmdlcyh7XG4gICAgICBlZ3Jlc3NSdWxlUHJvcGVydHlDaGFuZ2VzOiB0aGlzLnNjcnV0aW5pemFibGVQcm9wZXJ0eUNoYW5nZXMoW1Byb3BlcnR5U2NydXRpbnlUeXBlLkVncmVzc1J1bGVzXSksXG4gICAgICBpbmdyZXNzUnVsZVByb3BlcnR5Q2hhbmdlczogdGhpcy5zY3J1dGluaXphYmxlUHJvcGVydHlDaGFuZ2VzKFtQcm9wZXJ0eVNjcnV0aW55VHlwZS5JbmdyZXNzUnVsZXNdKSxcbiAgICAgIGVncmVzc1J1bGVSZXNvdXJjZUNoYW5nZXM6IHRoaXMuc2NydXRpbml6YWJsZVJlc291cmNlQ2hhbmdlcyhbUmVzb3VyY2VTY3J1dGlueVR5cGUuRWdyZXNzUnVsZVJlc291cmNlXSksXG4gICAgICBpbmdyZXNzUnVsZVJlc291cmNlQ2hhbmdlczogdGhpcy5zY3J1dGluaXphYmxlUmVzb3VyY2VDaGFuZ2VzKFtSZXNvdXJjZVNjcnV0aW55VHlwZS5JbmdyZXNzUnVsZVJlc291cmNlXSksXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpZmZlcmVuY2VDb3VudCgpIHtcbiAgICBsZXQgY291bnQgPSAwO1xuXG4gICAgaWYgKHRoaXMuYXdzVGVtcGxhdGVGb3JtYXRWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvdW50ICs9IDE7XG4gICAgfVxuICAgIGlmICh0aGlzLmRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvdW50ICs9IDE7XG4gICAgfVxuICAgIGlmICh0aGlzLnRyYW5zZm9ybSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb3VudCArPSAxO1xuICAgIH1cblxuICAgIGNvdW50ICs9IHRoaXMuY29uZGl0aW9ucy5kaWZmZXJlbmNlQ291bnQ7XG4gICAgY291bnQgKz0gdGhpcy5tYXBwaW5ncy5kaWZmZXJlbmNlQ291bnQ7XG4gICAgY291bnQgKz0gdGhpcy5tZXRhZGF0YS5kaWZmZXJlbmNlQ291bnQ7XG4gICAgY291bnQgKz0gdGhpcy5vdXRwdXRzLmRpZmZlcmVuY2VDb3VudDtcbiAgICBjb3VudCArPSB0aGlzLnBhcmFtZXRlcnMuZGlmZmVyZW5jZUNvdW50O1xuICAgIGNvdW50ICs9IHRoaXMucmVzb3VyY2VzLmRpZmZlcmVuY2VDb3VudDtcbiAgICBjb3VudCArPSB0aGlzLnVua25vd24uZGlmZmVyZW5jZUNvdW50O1xuXG4gICAgcmV0dXJuIGNvdW50O1xuICB9XG5cbiAgcHVibGljIGdldCBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpZmZlcmVuY2VDb3VudCA9PT0gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdHJ1ZSBpZiBhbnkgb2YgdGhlIHBlcm1pc3Npb25zIG9iamVjdHMgaW52b2x2ZSBhIGJyb2FkZW5pbmcgb2YgcGVybWlzc2lvbnNcbiAgICovXG4gIHB1YmxpYyBnZXQgcGVybWlzc2lvbnNCcm9hZGVuZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaWFtQ2hhbmdlcy5wZXJtaXNzaW9uc0Jyb2FkZW5lZCB8fCB0aGlzLnNlY3VyaXR5R3JvdXBDaGFuZ2VzLnJ1bGVzQWRkZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRydWUgaWYgYW55IG9mIHRoZSBwZXJtaXNzaW9ucyBvYmplY3RzIGhhdmUgY2hhbmdlZFxuICAgKi9cbiAgcHVibGljIGdldCBwZXJtaXNzaW9uc0FueUNoYW5nZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaWFtQ2hhbmdlcy5oYXNDaGFuZ2VzIHx8IHRoaXMuc2VjdXJpdHlHcm91cENoYW5nZXMuaGFzQ2hhbmdlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYWxsIHByb3BlcnR5IGNoYW5nZXMgb2YgYSBnaXZlbiBzY3J1dGlueSB0eXBlXG4gICAqXG4gICAqIFdlIGRvbid0IGp1c3QgbG9vayBhdCBwcm9wZXJ0eSB1cGRhdGVzOyB3ZSBhbHNvIGxvb2sgYXQgcmVzb3VyY2UgYWRkaXRpb25zIGFuZCBkZWxldGlvbnMgKGluIHdoaWNoXG4gICAqIGNhc2UgdGhlcmUgaXMgbm8gZnVydGhlciBkZXRhaWwgb24gcHJvcGVydHkgdmFsdWVzKSwgYW5kIHJlc291cmNlIHR5cGUgY2hhbmdlcy5cbiAgICovXG4gIHByaXZhdGUgc2NydXRpbml6YWJsZVByb3BlcnR5Q2hhbmdlcyhzY3J1dGlueVR5cGVzOiBQcm9wZXJ0eVNjcnV0aW55VHlwZVtdKTogUHJvcGVydHlDaGFuZ2VbXSB7XG4gICAgY29uc3QgcmV0ID0gbmV3IEFycmF5PFByb3BlcnR5Q2hhbmdlPigpO1xuXG4gICAgZm9yIChjb25zdCBbcmVzb3VyY2VMb2dpY2FsSWQsIHJlc291cmNlQ2hhbmdlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnJlc291cmNlcy5jaGFuZ2VzKSkge1xuICAgICAgaWYgKHJlc291cmNlQ2hhbmdlLnJlc291cmNlVHlwZUNoYW5nZWQpIHtcbiAgICAgICAgLy8gd2UgaWdub3JlIHJlc291cmNlIHR5cGUgY2hhbmdlcyBoZXJlLCBhbmQgaGFuZGxlIHRoZW0gaW4gc2NydXRpbml6YWJsZVJlc291cmNlQ2hhbmdlcygpXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXJlc291cmNlQ2hhbmdlLm5ld1Jlc291cmNlVHlwZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3VHlwZVByb3BzID0gbG9hZFJlc291cmNlTW9kZWwocmVzb3VyY2VDaGFuZ2UubmV3UmVzb3VyY2VUeXBlKT8ucHJvcGVydGllcyB8fCB7fTtcbiAgICAgIGZvciAoY29uc3QgW3Byb3BlcnR5TmFtZSwgcHJvcF0gb2YgT2JqZWN0LmVudHJpZXMobmV3VHlwZVByb3BzKSkge1xuICAgICAgICBjb25zdCBwcm9wU2NydXRpbnlUeXBlID0gcHJvcC5zY3J1dGluaXphYmxlIHx8IFByb3BlcnR5U2NydXRpbnlUeXBlLk5vbmU7XG4gICAgICAgIGlmIChzY3J1dGlueVR5cGVzLmluY2x1ZGVzKHByb3BTY3J1dGlueVR5cGUpKSB7XG4gICAgICAgICAgcmV0LnB1c2goe1xuICAgICAgICAgICAgcmVzb3VyY2VMb2dpY2FsSWQsXG4gICAgICAgICAgICBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICByZXNvdXJjZVR5cGU6IHJlc291cmNlQ2hhbmdlLnJlc291cmNlVHlwZSxcbiAgICAgICAgICAgIHNjcnV0aW55VHlwZTogcHJvcFNjcnV0aW55VHlwZSxcbiAgICAgICAgICAgIG9sZFZhbHVlOiByZXNvdXJjZUNoYW5nZS5vbGRQcm9wZXJ0aWVzPy5bcHJvcGVydHlOYW1lXSxcbiAgICAgICAgICAgIG5ld1ZhbHVlOiByZXNvdXJjZUNoYW5nZS5uZXdQcm9wZXJ0aWVzPy5bcHJvcGVydHlOYW1lXSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFsbCByZXNvdXJjZSBjaGFuZ2VzIG9mIGEgZ2l2ZW4gc2NydXRpbnkgdHlwZVxuICAgKlxuICAgKiBXZSBkb24ndCBqdXN0IGxvb2sgYXQgcmVzb3VyY2UgdXBkYXRlczsgd2UgYWxzbyBsb29rIGF0IHJlc291cmNlIGFkZGl0aW9ucyBhbmQgZGVsZXRpb25zIChpbiB3aGljaFxuICAgKiBjYXNlIHRoZXJlIGlzIG5vIGZ1cnRoZXIgZGV0YWlsIG9uIHByb3BlcnR5IHZhbHVlcyksIGFuZCByZXNvdXJjZSB0eXBlIGNoYW5nZXMuXG4gICAqL1xuICBwcml2YXRlIHNjcnV0aW5pemFibGVSZXNvdXJjZUNoYW5nZXMoc2NydXRpbnlUeXBlczogUmVzb3VyY2VTY3J1dGlueVR5cGVbXSk6IFJlc291cmNlQ2hhbmdlW10ge1xuICAgIGNvbnN0IHJldCA9IG5ldyBBcnJheTxSZXNvdXJjZUNoYW5nZT4oKTtcblxuICAgIGZvciAoY29uc3QgW3Jlc291cmNlTG9naWNhbElkLCByZXNvdXJjZUNoYW5nZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5yZXNvdXJjZXMuY2hhbmdlcykpIHtcbiAgICAgIGlmICghcmVzb3VyY2VDaGFuZ2UpIHsgY29udGludWU7IH1cblxuICAgICAgY29uc3QgY29tbW9uUHJvcHMgPSB7XG4gICAgICAgIG9sZFByb3BlcnRpZXM6IHJlc291cmNlQ2hhbmdlLm9sZFByb3BlcnRpZXMsXG4gICAgICAgIG5ld1Byb3BlcnRpZXM6IHJlc291cmNlQ2hhbmdlLm5ld1Byb3BlcnRpZXMsXG4gICAgICAgIHJlc291cmNlTG9naWNhbElkLFxuICAgICAgfTtcblxuICAgICAgLy8gY2hhbmdlcyB0byB0aGUgVHlwZSBvZiByZXNvdXJjZXMgY2FuIGhhcHBlbiB3aGVuIG1pZ3JhdGluZyBmcm9tIENGTiB0ZW1wbGF0ZXMgdGhhdCB1c2UgVHJhbnNmb3Jtc1xuICAgICAgaWYgKHJlc291cmNlQ2hhbmdlLnJlc291cmNlVHlwZUNoYW5nZWQpIHtcbiAgICAgICAgLy8gVHJlYXQgYXMgREVMRVRFK0FERFxuICAgICAgICBpZiAocmVzb3VyY2VDaGFuZ2Uub2xkUmVzb3VyY2VUeXBlKSB7XG4gICAgICAgICAgY29uc3Qgb2xkUmVzb3VyY2VNb2RlbCA9IGxvYWRSZXNvdXJjZU1vZGVsKHJlc291cmNlQ2hhbmdlLm9sZFJlc291cmNlVHlwZSk7XG4gICAgICAgICAgaWYgKG9sZFJlc291cmNlTW9kZWwgJiYgdGhpcy5yZXNvdXJjZUlzU2NydXRpbml6YWJsZShvbGRSZXNvdXJjZU1vZGVsLCBzY3J1dGlueVR5cGVzKSkge1xuICAgICAgICAgICAgcmV0LnB1c2goe1xuICAgICAgICAgICAgICAuLi5jb21tb25Qcm9wcyxcbiAgICAgICAgICAgICAgbmV3UHJvcGVydGllczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IHJlc291cmNlQ2hhbmdlLm9sZFJlc291cmNlVHlwZSEsXG4gICAgICAgICAgICAgIHNjcnV0aW55VHlwZTogb2xkUmVzb3VyY2VNb2RlbC5zY3J1dGluaXphYmxlISxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXNvdXJjZUNoYW5nZS5uZXdSZXNvdXJjZVR5cGUpIHtcbiAgICAgICAgICBjb25zdCBuZXdSZXNvdXJjZU1vZGVsID0gbG9hZFJlc291cmNlTW9kZWwocmVzb3VyY2VDaGFuZ2UubmV3UmVzb3VyY2VUeXBlKTtcbiAgICAgICAgICBpZiAobmV3UmVzb3VyY2VNb2RlbCAmJiB0aGlzLnJlc291cmNlSXNTY3J1dGluaXphYmxlKG5ld1Jlc291cmNlTW9kZWwsIHNjcnV0aW55VHlwZXMpKSB7XG4gICAgICAgICAgICByZXQucHVzaCh7XG4gICAgICAgICAgICAgIC4uLmNvbW1vblByb3BzLFxuICAgICAgICAgICAgICBvbGRQcm9wZXJ0aWVzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIHJlc291cmNlVHlwZTogcmVzb3VyY2VDaGFuZ2UubmV3UmVzb3VyY2VUeXBlISxcbiAgICAgICAgICAgICAgc2NydXRpbnlUeXBlOiBuZXdSZXNvdXJjZU1vZGVsLnNjcnV0aW5pemFibGUhLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZXNvdXJjZU1vZGVsID0gbG9hZFJlc291cmNlTW9kZWwocmVzb3VyY2VDaGFuZ2UucmVzb3VyY2VUeXBlKTtcbiAgICAgICAgaWYgKHJlc291cmNlTW9kZWwgJiYgdGhpcy5yZXNvdXJjZUlzU2NydXRpbml6YWJsZShyZXNvdXJjZU1vZGVsLCBzY3J1dGlueVR5cGVzKSkge1xuICAgICAgICAgIHJldC5wdXNoKHtcbiAgICAgICAgICAgIC4uLmNvbW1vblByb3BzLFxuICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiByZXNvdXJjZUNoYW5nZS5yZXNvdXJjZVR5cGUsXG4gICAgICAgICAgICBzY3J1dGlueVR5cGU6IHJlc291cmNlTW9kZWwuc2NydXRpbml6YWJsZSEsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvdXJjZUlzU2NydXRpbml6YWJsZShyZXM6IFJlc291cmNlTW9kZWwsIHNjcnV0aW55VHlwZXM6IEFycmF5PFJlc291cmNlU2NydXRpbnlUeXBlPik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzY3J1dGlueVR5cGVzLmluY2x1ZGVzKHJlcy5zY3J1dGluaXphYmxlIHx8IFJlc291cmNlU2NydXRpbnlUeXBlLk5vbmUpO1xuICB9XG59XG5cbi8qKlxuICogQSBjaGFuZ2UgaW4gcHJvcGVydHkgdmFsdWVzXG4gKlxuICogTm90IG5lY2Vzc2FyaWx5IGFuIHVwZGF0ZSwgaXQgY291bGQgYmUgdGhhdCB0aGVyZSB1c2VkIHRvIGJlIG5vIHZhbHVlIHRoZXJlXG4gKiBiZWNhdXNlIHRoZXJlIHdhcyBubyByZXNvdXJjZSwgYW5kIG5vdyB0aGVyZSBpcyAob3IgdmljZSB2ZXJzYSkuXG4gKlxuICogVGhlcmVmb3JlLCB3ZSBqdXN0IGNvbnRhaW4gcGxhaW4gdmFsdWVzIGFuZCBub3QgYSBQcm9wZXJ0eURpZmZlcmVuY2U8YW55Pi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9wZXJ0eUNoYW5nZSB7XG4gIC8qKlxuICAgKiBMb2dpY2FsIElEIG9mIHRoZSByZXNvdXJjZSB3aGVyZSB0aGlzIHByb3BlcnR5IGNoYW5nZSB3YXMgZm91bmRcbiAgICovXG4gIHJlc291cmNlTG9naWNhbElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFR5cGUgb2YgdGhlIHJlc291cmNlXG4gICAqL1xuICByZXNvdXJjZVR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogU2NydXRpbnkgdHlwZSBmb3IgdGhpcyBwcm9wZXJ0eSBjaGFuZ2VcbiAgICovXG4gIHNjcnV0aW55VHlwZTogUHJvcGVydHlTY3J1dGlueVR5cGU7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHByb3BlcnR5IHRoYXQgaXMgY2hhbmdpbmdcbiAgICovXG4gIHByb3BlcnR5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgb2xkIHByb3BlcnR5IHZhbHVlXG4gICAqL1xuICBvbGRWYWx1ZT86IGFueTtcblxuICAvKipcbiAgICogVGhlIG5ldyBwcm9wZXJ0eSB2YWx1ZVxuICAgKi9cbiAgbmV3VmFsdWU/OiBhbnk7XG59XG5cbi8qKlxuICogQSByZXNvdXJjZSBjaGFuZ2VcbiAqXG4gKiBFaXRoZXIgYSBjcmVhdGlvbiwgZGVsZXRpb24gb3IgdXBkYXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlQ2hhbmdlIHtcbiAgLyoqXG4gICAqIExvZ2ljYWwgSUQgb2YgdGhlIHJlc291cmNlIHdoZXJlIHRoaXMgcHJvcGVydHkgY2hhbmdlIHdhcyBmb3VuZFxuICAgKi9cbiAgcmVzb3VyY2VMb2dpY2FsSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogU2NydXRpbnkgdHlwZSBmb3IgdGhpcyByZXNvdXJjZSBjaGFuZ2VcbiAgICovXG4gIHNjcnV0aW55VHlwZTogUmVzb3VyY2VTY3J1dGlueVR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSByZXNvdXJjZVxuICAgKi9cbiAgcmVzb3VyY2VUeXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvbGQgcHJvcGVydGllcyB2YWx1ZSAobWlnaHQgYmUgdW5kZWZpbmVkIGluIGNhc2Ugb2YgY3JlYXRpb24pXG4gICAqL1xuICBvbGRQcm9wZXJ0aWVzPzogUHJvcGVydHlNYXA7XG5cbiAgLyoqXG4gICAqIFRoZSBuZXcgcHJvcGVydGllcyB2YWx1ZSAobWlnaHQgYmUgdW5kZWZpbmVkIGluIGNhc2Ugb2YgZGVsZXRpb24pXG4gICAqL1xuICBuZXdQcm9wZXJ0aWVzPzogUHJvcGVydHlNYXA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURpZmZlcmVuY2U8VmFsdWVUeXBlPiB7XG4gIHJlYWRvbmx5IG9sZFZhbHVlOiBWYWx1ZVR5cGUgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IG5ld1ZhbHVlOiBWYWx1ZVR5cGUgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGlzRGlmZmVyZW50OiBib29sZWFuO1xuICByZWFkb25seSBpc0FkZGl0aW9uOiBib29sZWFuO1xuICByZWFkb25seSBpc1JlbW92YWw6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGlzVXBkYXRlOiBib29sZWFuO1xufVxuXG4vKipcbiAqIE1vZGVscyBhbiBlbnRpdHkgdGhhdCBjaGFuZ2VkIGJldHdlZW4gdHdvIHZlcnNpb25zIG9mIGEgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBEaWZmZXJlbmNlPFZhbHVlVHlwZT4gaW1wbGVtZW50cyBJRGlmZmVyZW5jZTxWYWx1ZVR5cGU+IHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBpcyBhbiBhY3R1YWwgZGlmZmVyZW50IG9yIHRoZSB2YWx1ZXMgYXJlIGFjdHVhbGx5IHRoZSBzYW1lXG4gICAqXG4gICAqIGlzRGlmZmVyZW50ID0+IChpc1VwZGF0ZSB8IGlzUmVtb3ZlZCB8IGlzVXBkYXRlKVxuICAgKi9cbiAgcHVibGljIGlzRGlmZmVyZW50OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gb2xkVmFsdWUgdGhlIG9sZCB2YWx1ZSwgY2Fubm90IGJlIGVxdWFsICh0byB0aGUgc2Vuc2Ugb2YgK2RlZXBFcXVhbCspIHRvICtuZXdWYWx1ZSsuXG4gICAqIEBwYXJhbSBuZXdWYWx1ZSB0aGUgbmV3IHZhbHVlLCBjYW5ub3QgYmUgZXF1YWwgKHRvIHRoZSBzZW5zZSBvZiArZGVlcEVxdWFsKykgdG8gK29sZFZhbHVlKy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBvbGRWYWx1ZTogVmFsdWVUeXBlIHwgdW5kZWZpbmVkLCBwdWJsaWMgcmVhZG9ubHkgbmV3VmFsdWU6IFZhbHVlVHlwZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmIChvbGRWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcih7IG1lc3NhZ2U6ICdvbGRWYWx1ZSBhbmQgbmV3VmFsdWUgYXJlIGJvdGggdW5kZWZpbmVkIScgfSk7XG4gICAgfVxuICAgIHRoaXMuaXNEaWZmZXJlbnQgPSAhZGVlcEVxdWFsKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICAvKiogQHJldHVybnMgK3RydWUrIGlmIHRoZSBlbGVtZW50IGlzIG5ldyB0byB0aGUgdGVtcGxhdGUuICovXG4gIHB1YmxpYyBnZXQgaXNBZGRpdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vbGRWYWx1ZSA9PT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqIEByZXR1cm5zICt0cnVlKyBpZiB0aGUgZWxlbWVudCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSB0ZW1wbGF0ZS4gKi9cbiAgcHVibGljIGdldCBpc1JlbW92YWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmV3VmFsdWUgPT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyArdHJ1ZSsgaWYgdGhlIGVsZW1lbnQgd2FzIGFscmVhZHkgaW4gdGhlIHRlbXBsYXRlIGFuZCBpcyB1cGRhdGVkLiAqL1xuICBwdWJsaWMgZ2V0IGlzVXBkYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9sZFZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgICYmIHRoaXMubmV3VmFsdWUgIT09IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvcGVydHlEaWZmZXJlbmNlPFZhbHVlVHlwZT4gZXh0ZW5kcyBEaWZmZXJlbmNlPFZhbHVlVHlwZT4ge1xuICBwdWJsaWMgY2hhbmdlSW1wYWN0PzogUmVzb3VyY2VJbXBhY3Q7XG5cbiAgY29uc3RydWN0b3Iob2xkVmFsdWU6IFZhbHVlVHlwZSB8IHVuZGVmaW5lZCwgbmV3VmFsdWU6IFZhbHVlVHlwZSB8IHVuZGVmaW5lZCwgYXJnczogeyBjaGFuZ2VJbXBhY3Q/OiBSZXNvdXJjZUltcGFjdCB9KSB7XG4gICAgc3VwZXIob2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICB0aGlzLmNoYW5nZUltcGFjdCA9IGFyZ3MuY2hhbmdlSW1wYWN0O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEaWZmZXJlbmNlQ29sbGVjdGlvbjxWLCBUIGV4dGVuZHMgSURpZmZlcmVuY2U8Vj4+IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkaWZmczogeyBbbG9naWNhbElkOiBzdHJpbmddOiBUIH0pIHt9XG5cbiAgcHVibGljIGdldCBjaGFuZ2VzKCk6IHsgW2xvZ2ljYWxJZDogc3RyaW5nXTogVCB9IHtcbiAgICByZXR1cm4gb25seUNoYW5nZXModGhpcy5kaWZmcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpZmZlcmVuY2VDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMuY2hhbmdlcykubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIGdldChsb2dpY2FsSWQ6IHN0cmluZyk6IFQge1xuICAgIGNvbnN0IHJldCA9IHRoaXMuZGlmZnNbbG9naWNhbElkXTtcbiAgICBpZiAoIXJldCkgeyB0aHJvdyBuZXcgRXJyb3IoYE5vIG9iamVjdCB3aXRoIGxvZ2ljYWwgSUQgJyR7bG9naWNhbElkfSdgKTsgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlKGxvZ2ljYWxJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgZGVsZXRlIHRoaXMuZGlmZnNbbG9naWNhbElkXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG9naWNhbElkcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY2hhbmdlcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIG5ldyBUZW1wbGF0ZURpZmYgd2hpY2ggb25seSBjb250YWlucyBjaGFuZ2VzIGZvciB3aGljaCBgcHJlZGljYXRlYFxuICAgKiByZXR1cm5zIGB0cnVlYC5cbiAgICovXG4gIHB1YmxpYyBmaWx0ZXIocHJlZGljYXRlOiAoZGlmZjogVCB8IHVuZGVmaW5lZCkgPT4gYm9vbGVhbik6IERpZmZlcmVuY2VDb2xsZWN0aW9uPFYsIFQ+IHtcbiAgICBjb25zdCBuZXdDaGFuZ2VzOiB7IFtsb2dpY2FsSWQ6IHN0cmluZ106IFQgfSA9IHsgfTtcbiAgICBmb3IgKGNvbnN0IGlkIG9mIE9iamVjdC5rZXlzKHRoaXMuY2hhbmdlcykpIHtcbiAgICAgIGNvbnN0IGRpZmYgPSB0aGlzLmNoYW5nZXNbaWRdO1xuXG4gICAgICBpZiAocHJlZGljYXRlKGRpZmYpKSB7XG4gICAgICAgIG5ld0NoYW5nZXNbaWRdID0gZGlmZjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERpZmZlcmVuY2VDb2xsZWN0aW9uPFYsIFQ+KG5ld0NoYW5nZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEludm9rZXMgYGNiYCBmb3IgYWxsIGNoYW5nZXMgaW4gdGhpcyBjb2xsZWN0aW9uLlxuICAgKlxuICAgKiBDaGFuZ2VzIHdpbGwgYmUgc29ydGVkIGFzIGZvbGxvd3M6XG4gICAqICAtIFJlbW92ZWRcbiAgICogIC0gQWRkZWRcbiAgICogIC0gVXBkYXRlZFxuICAgKiAgLSBPdGhlcnNcbiAgICpcbiAgICogQHBhcmFtIGNiXG4gICAqL1xuICBwdWJsaWMgZm9yRWFjaERpZmZlcmVuY2UoY2I6IChsb2dpY2FsSWQ6IHN0cmluZywgY2hhbmdlOiBUKSA9PiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCByZW1vdmVkID0gbmV3IEFycmF5PHsgbG9naWNhbElkOiBzdHJpbmc7IGNoYW5nZTogVCB9PigpO1xuICAgIGNvbnN0IGFkZGVkID0gbmV3IEFycmF5PHsgbG9naWNhbElkOiBzdHJpbmc7IGNoYW5nZTogVCB9PigpO1xuICAgIGNvbnN0IHVwZGF0ZWQgPSBuZXcgQXJyYXk8eyBsb2dpY2FsSWQ6IHN0cmluZzsgY2hhbmdlOiBUIH0+KCk7XG4gICAgY29uc3Qgb3RoZXJzID0gbmV3IEFycmF5PHsgbG9naWNhbElkOiBzdHJpbmc7IGNoYW5nZTogVCB9PigpO1xuXG4gICAgZm9yIChjb25zdCBsb2dpY2FsSWQgb2YgdGhpcy5sb2dpY2FsSWRzKSB7XG4gICAgICBjb25zdCBjaGFuZ2U6IFQgPSB0aGlzLmNoYW5nZXNbbG9naWNhbElkXSE7XG4gICAgICBpZiAoY2hhbmdlLmlzQWRkaXRpb24pIHtcbiAgICAgICAgYWRkZWQucHVzaCh7IGxvZ2ljYWxJZCwgY2hhbmdlIH0pO1xuICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuaXNSZW1vdmFsKSB7XG4gICAgICAgIHJlbW92ZWQucHVzaCh7IGxvZ2ljYWxJZCwgY2hhbmdlIH0pO1xuICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuaXNVcGRhdGUpIHtcbiAgICAgICAgdXBkYXRlZC5wdXNoKHsgbG9naWNhbElkLCBjaGFuZ2UgfSk7XG4gICAgICB9IGVsc2UgaWYgKGNoYW5nZS5pc0RpZmZlcmVudCkge1xuICAgICAgICBvdGhlcnMucHVzaCh7IGxvZ2ljYWxJZCwgY2hhbmdlIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJlbW92ZWQuZm9yRWFjaCh2ID0+IGNiKHYubG9naWNhbElkLCB2LmNoYW5nZSkpO1xuICAgIGFkZGVkLmZvckVhY2godiA9PiBjYih2LmxvZ2ljYWxJZCwgdi5jaGFuZ2UpKTtcbiAgICB1cGRhdGVkLmZvckVhY2godiA9PiBjYih2LmxvZ2ljYWxJZCwgdi5jaGFuZ2UpKTtcbiAgICBvdGhlcnMuZm9yRWFjaCh2ID0+IGNiKHYubG9naWNhbElkLCB2LmNoYW5nZSkpO1xuICB9XG59XG5cbi8qKlxuICogQXJndW1lbnRzIGV4cGVjdGVkIGJ5IHRoZSBjb25zdHJ1Y3RvciBvZiArVGVtcGxhdGVEaWZmKywgZXh0cmFjdGVkIGFzIGFuIGludGVyZmFjZSBmb3IgdGhlIHNha2VcbiAqIG9mIChyZWxhdGl2ZSkgY29uY2lzZW5lc3Mgb2YgdGhlIGNvbnN0cnVjdG9yJ3Mgc2lnbmF0dXJlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElUZW1wbGF0ZURpZmYge1xuICBhd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24/OiBJRGlmZmVyZW5jZTxzdHJpbmc+O1xuICBkZXNjcmlwdGlvbj86IElEaWZmZXJlbmNlPHN0cmluZz47XG4gIHRyYW5zZm9ybT86IElEaWZmZXJlbmNlPHN0cmluZz47XG5cbiAgY29uZGl0aW9ucz86IERpZmZlcmVuY2VDb2xsZWN0aW9uPENvbmRpdGlvbiwgQ29uZGl0aW9uRGlmZmVyZW5jZT47XG4gIG1hcHBpbmdzPzogRGlmZmVyZW5jZUNvbGxlY3Rpb248TWFwcGluZywgTWFwcGluZ0RpZmZlcmVuY2U+O1xuICBtZXRhZGF0YT86IERpZmZlcmVuY2VDb2xsZWN0aW9uPE1ldGFkYXRhLCBNZXRhZGF0YURpZmZlcmVuY2U+O1xuICBvdXRwdXRzPzogRGlmZmVyZW5jZUNvbGxlY3Rpb248T3V0cHV0LCBPdXRwdXREaWZmZXJlbmNlPjtcbiAgcGFyYW1ldGVycz86IERpZmZlcmVuY2VDb2xsZWN0aW9uPFBhcmFtZXRlciwgUGFyYW1ldGVyRGlmZmVyZW5jZT47XG4gIHJlc291cmNlcz86IERpZmZlcmVuY2VDb2xsZWN0aW9uPFJlc291cmNlLCBSZXNvdXJjZURpZmZlcmVuY2U+O1xuXG4gIHVua25vd24/OiBEaWZmZXJlbmNlQ29sbGVjdGlvbjxhbnksIElEaWZmZXJlbmNlPGFueT4+O1xufVxuXG5leHBvcnQgdHlwZSBDb25kaXRpb24gPSBhbnk7XG5leHBvcnQgY2xhc3MgQ29uZGl0aW9uRGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8Q29uZGl0aW9uPiB7XG4gIC8vIFRPRE86IGRlZmluZSBzcGVjaWZpYyBkaWZmZXJlbmNlIGF0dHJpYnV0ZXNcbn1cblxuZXhwb3J0IHR5cGUgTWFwcGluZyA9IGFueTtcbmV4cG9ydCBjbGFzcyBNYXBwaW5nRGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8TWFwcGluZz4ge1xuICAvLyBUT0RPOiBkZWZpbmUgc3BlY2lmaWMgZGlmZmVyZW5jZSBhdHRyaWJ1dGVzXG59XG5cbmV4cG9ydCB0eXBlIE1ldGFkYXRhID0gYW55O1xuZXhwb3J0IGNsYXNzIE1ldGFkYXRhRGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8TWV0YWRhdGE+IHtcbiAgLy8gVE9ETzogZGVmaW5lIHNwZWNpZmljIGRpZmZlcmVuY2UgYXR0cmlidXRlc1xufVxuXG5leHBvcnQgdHlwZSBPdXRwdXQgPSBhbnk7XG5leHBvcnQgY2xhc3MgT3V0cHV0RGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8T3V0cHV0PiB7XG4gIC8vIFRPRE86IGRlZmluZSBzcGVjaWZpYyBkaWZmZXJlbmNlIGF0dHJpYnV0ZXNcbn1cblxuZXhwb3J0IHR5cGUgUGFyYW1ldGVyID0gYW55O1xuZXhwb3J0IGNsYXNzIFBhcmFtZXRlckRpZmZlcmVuY2UgZXh0ZW5kcyBEaWZmZXJlbmNlPFBhcmFtZXRlcj4ge1xuICAvLyBUT0RPOiBkZWZpbmUgc3BlY2lmaWMgZGlmZmVyZW5jZSBhdHRyaWJ1dGVzXG59XG5cbmV4cG9ydCBlbnVtIFJlc291cmNlSW1wYWN0IHtcbiAgLyoqIFRoZSBleGlzdGluZyBwaHlzaWNhbCByZXNvdXJjZSB3aWxsIGJlIHVwZGF0ZWQgKi9cbiAgV0lMTF9VUERBVEUgPSAnV0lMTF9VUERBVEUnLFxuICAvKiogQSBuZXcgcGh5c2ljYWwgcmVzb3VyY2Ugd2lsbCBiZSBjcmVhdGVkICovXG4gIFdJTExfQ1JFQVRFID0gJ1dJTExfQ1JFQVRFJyxcbiAgLyoqIFRoZSBleGlzdGluZyBwaHlzaWNhbCByZXNvdXJjZSB3aWxsIGJlIHJlcGxhY2VkICovXG4gIFdJTExfUkVQTEFDRSA9ICdXSUxMX1JFUExBQ0UnLFxuICAvKiogVGhlIGV4aXN0aW5nIHBoeXNpY2FsIHJlc291cmNlIG1heSBiZSByZXBsYWNlZCAqL1xuICBNQVlfUkVQTEFDRSA9ICdNQVlfUkVQTEFDRScsXG4gIC8qKiBUaGUgZXhpc3RpbmcgcGh5c2ljYWwgcmVzb3VyY2Ugd2lsbCBiZSBkZXN0cm95ZWQgKi9cbiAgV0lMTF9ERVNUUk9ZID0gJ1dJTExfREVTVFJPWScsXG4gIC8qKiBUaGUgZXhpc3RpbmcgcGh5c2ljYWwgcmVzb3VyY2Ugd2lsbCBiZSByZW1vdmVkIGZyb20gQ2xvdWRGb3JtYXRpb24gc3VwZXJ2aXNpb24gKi9cbiAgV0lMTF9PUlBIQU4gPSAnV0lMTF9PUlBIQU4nLFxuICAvKiogVGhlIGV4aXN0aW5nIHBoeXNpY2FsIHJlc291cmNlIHdpbGwgYmUgYWRkZWQgdG8gQ2xvdWRGb3JtYXRpb24gc3VwZXJ2aXNpb24gKi9cbiAgV0lMTF9JTVBPUlQgPSAnV0lMTF9JTVBPUlQnLFxuICAvKiogVGhlcmUgaXMgbm8gY2hhbmdlIGluIHRoaXMgcmVzb3VyY2UgKi9cbiAgTk9fQ0hBTkdFID0gJ05PX0NIQU5HRScsXG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBhcyBhIHJlZHVjZXIgdG8gb2J0YWluIHRoZSByZXNvdXJjZS1sZXZlbCBpbXBhY3Qgb2YgYSBsaXN0XG4gKiBvZiBwcm9wZXJ0eS1sZXZlbCBpbXBhY3RzLlxuICogQHBhcmFtIG9uZSB0aGUgY3VycmVudCB3b3JzdCBpbXBhY3Qgc28gZmFyLlxuICogQHBhcmFtIHR3byB0aGUgbmV3IGltcGFjdCBiZWluZyBjb25zaWRlcmVkIChjYW4gYmUgdW5kZWZpbmVkLCBhcyB3ZSBtYXkgbm90IGFsd2F5cyBiZVxuICogICAgICBhYmxlIHRvIGRldGVybWluZSBzb21lIHBlcm9wZXJ0eSdzIGltcGFjdCkuXG4gKi9cbmZ1bmN0aW9uIHdvcnN0SW1wYWN0KG9uZTogUmVzb3VyY2VJbXBhY3QsIHR3bz86IFJlc291cmNlSW1wYWN0KTogUmVzb3VyY2VJbXBhY3Qge1xuICBpZiAoIXR3bykgeyByZXR1cm4gb25lOyB9XG4gIGNvbnN0IGJhZG5lc3MgPSB7XG4gICAgW1Jlc291cmNlSW1wYWN0Lk5PX0NIQU5HRV06IDAsXG4gICAgW1Jlc291cmNlSW1wYWN0LldJTExfSU1QT1JUXTogMCxcbiAgICBbUmVzb3VyY2VJbXBhY3QuV0lMTF9VUERBVEVdOiAxLFxuICAgIFtSZXNvdXJjZUltcGFjdC5XSUxMX0NSRUFURV06IDIsXG4gICAgW1Jlc291cmNlSW1wYWN0LldJTExfT1JQSEFOXTogMyxcbiAgICBbUmVzb3VyY2VJbXBhY3QuTUFZX1JFUExBQ0VdOiA0LFxuICAgIFtSZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0VdOiA1LFxuICAgIFtSZXNvdXJjZUltcGFjdC5XSUxMX0RFU1RST1ldOiA2LFxuICB9O1xuICByZXR1cm4gYmFkbmVzc1tvbmVdID4gYmFkbmVzc1t0d29dID8gb25lIDogdHdvO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlIHtcbiAgVHlwZTogc3RyaW5nO1xuICBQcm9wZXJ0aWVzPzogeyBbbmFtZTogc3RyaW5nXTogYW55IH07XG5cbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG4vKipcbiAqIENoYW5nZSB0byBhIHNpbmdsZSByZXNvdXJjZSBiZXR3ZWVuIHR3byBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZXNcbiAqXG4gKiBUaGlzIGNsYXNzIGNhbiBiZSBtdXRhdGVkIGFmdGVyIGNvbnN0cnVjdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlc291cmNlRGlmZmVyZW5jZSBpbXBsZW1lbnRzIElEaWZmZXJlbmNlPFJlc291cmNlPiB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcmVzb3VyY2Ugd2FzIGFkZGVkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXNBZGRpdGlvbjogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHJlc291cmNlIHdhcyByZW1vdmVkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXNSZW1vdmFsOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcmVzb3VyY2Ugd2FzIGltcG9ydGVkXG4gICAqL1xuICBwdWJsaWMgaXNJbXBvcnQ/OiBib29sZWFuO1xuXG4gIC8qKiBQcm9wZXJ0eS1sZXZlbCBjaGFuZ2VzIG9uIHRoZSByZXNvdXJjZSAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3BlcnR5RGlmZnM6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4gfTtcblxuICAvKiogQ2hhbmdlcyB0byBub24tcHJvcGVydHkgbGV2ZWwgYXR0cmlidXRlcyBvZiB0aGUgcmVzb3VyY2UgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBvdGhlckRpZmZzOiB7IFtrZXk6IHN0cmluZ106IERpZmZlcmVuY2U8YW55PiB9O1xuXG4gIC8qKiBUaGUgcmVzb3VyY2UgdHlwZSAob3Igb2xkIGFuZCBuZXcgdHlwZSBpZiBpdCBoYXMgY2hhbmdlZCkgKi9cbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZVR5cGVzOiB7IHJlYWRvbmx5IG9sZFR5cGU/OiBzdHJpbmc7IHJlYWRvbmx5IG5ld1R5cGU/OiBzdHJpbmcgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgb2xkVmFsdWU6IFJlc291cmNlIHwgdW5kZWZpbmVkLFxuICAgIHB1YmxpYyByZWFkb25seSBuZXdWYWx1ZTogUmVzb3VyY2UgfCB1bmRlZmluZWQsXG4gICAgYXJnczoge1xuICAgICAgcmVzb3VyY2VUeXBlOiB7IG9sZFR5cGU/OiBzdHJpbmc7IG5ld1R5cGU/OiBzdHJpbmcgfTtcbiAgICAgIHByb3BlcnR5RGlmZnM6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4gfTtcbiAgICAgIG90aGVyRGlmZnM6IHsgW2tleTogc3RyaW5nXTogRGlmZmVyZW5jZTxhbnk+IH07XG4gICAgfSxcbiAgKSB7XG4gICAgdGhpcy5yZXNvdXJjZVR5cGVzID0gYXJncy5yZXNvdXJjZVR5cGU7XG4gICAgdGhpcy5wcm9wZXJ0eURpZmZzID0gYXJncy5wcm9wZXJ0eURpZmZzO1xuICAgIHRoaXMub3RoZXJEaWZmcyA9IGFyZ3Mub3RoZXJEaWZmcztcblxuICAgIHRoaXMuaXNBZGRpdGlvbiA9IG9sZFZhbHVlID09PSB1bmRlZmluZWQ7XG4gICAgdGhpcy5pc1JlbW92YWwgPSBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkO1xuICAgIHRoaXMuaXNJbXBvcnQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9sZFByb3BlcnRpZXMoKTogUHJvcGVydHlNYXAgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm9sZFZhbHVlICYmIHRoaXMub2xkVmFsdWUuUHJvcGVydGllcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmV3UHJvcGVydGllcygpOiBQcm9wZXJ0eU1hcCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubmV3VmFsdWUgJiYgdGhpcy5uZXdWYWx1ZS5Qcm9wZXJ0aWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyByZXNvdXJjZSB3YXMgbW9kaWZpZWQgYXQgYWxsXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzRGlmZmVyZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpZmZlcmVuY2VDb3VudCA+IDAgfHwgdGhpcy5vbGRSZXNvdXJjZVR5cGUgIT09IHRoaXMubmV3UmVzb3VyY2VUeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJlc291cmNlIHdhcyB1cGRhdGVkIGluLXBsYWNlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzVXBkYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRGlmZmVyZW50ICYmICF0aGlzLmlzQWRkaXRpb24gJiYgIXRoaXMuaXNSZW1vdmFsO1xuICB9XG5cbiAgcHVibGljIGdldCBvbGRSZXNvdXJjZVR5cGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5ld1Jlc291cmNlVHlwZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGwgYWN0dWFsIHByb3BlcnR5IHVwZGF0ZXNcbiAgICovXG4gIHB1YmxpYyBnZXQgcHJvcGVydHlVcGRhdGVzKCk6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4gfSB7XG4gICAgcmV0dXJuIG9ubHlDaGFuZ2VzKHRoaXMucHJvcGVydHlEaWZmcyk7XG4gIH1cblxuICAvKipcbiAgICogQWxsIGFjdHVhbCBcIm90aGVyXCIgdXBkYXRlc1xuICAgKi9cbiAgcHVibGljIGdldCBvdGhlckNoYW5nZXMoKTogeyBba2V5OiBzdHJpbmddOiBEaWZmZXJlbmNlPGFueT4gfSB7XG4gICAgcmV0dXJuIG9ubHlDaGFuZ2VzKHRoaXMub3RoZXJEaWZmcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIHJlc291cmNlIHR5cGUgd2FzIGNoYW5nZWQgaW4gdGhpcyBkaWZmXG4gICAqXG4gICAqIFRoaXMgaXMgbm90IGEgdmFsaWQgb3BlcmF0aW9uIGluIENsb3VkRm9ybWF0aW9uIGJ1dCB0byBiZSBkZWZlbnNpdmUgd2UncmUgZ29pbmdcbiAgICogdG8gYmUgYXdhcmUgb2YgaXQgYW55d2F5LlxuICAgKi9cbiAgcHVibGljIGdldCByZXNvdXJjZVR5cGVDaGFuZ2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGUgIT09IHVuZGVmaW5lZFxuICAgICAgICAmJiB0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICYmIHRoaXMucmVzb3VyY2VUeXBlcy5vbGRUeXBlICE9PSB0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSByZXNvdXJjZSB0eXBlIGlmIGl0IHdhcyB1bmNoYW5nZWRcbiAgICpcbiAgICogSWYgdGhlIHJlc291cmNlIHR5cGUgd2FzIGNoYW5nZWQsIGl0J3MgYW4gZXJyb3IgdG8gY2FsbCB0aGlzLlxuICAgKi9cbiAgcHVibGljIGdldCByZXNvdXJjZVR5cGUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5yZXNvdXJjZVR5cGVDaGFuZ2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBnZXQgLnJlc291cmNlVHlwZSwgYmVjYXVzZSB0aGUgdHlwZSB3YXMgY2hhbmdlZCcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGUgfHwgdGhpcy5yZXNvdXJjZVR5cGVzLm5ld1R5cGUhO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgYSBQcm9wZXJ0eUNoYW5nZSBpbiB0aGlzIG9iamVjdFxuICAgKlxuICAgKiBUaGlzIGFmZmVjdHMgdGhlIHByb3BlcnR5IGRpZmYgYXMgaXQgaXMgc3VtbWFyaXplZCB0byB1c2VycywgYnV0IGl0IERPRVNcbiAgICogTk9UIGFmZmVjdCBlaXRoZXIgdGhlIFwib2xkVmFsdWVcIiBvciBcIm5ld1ZhbHVlXCIgdmFsdWVzOyB0aG9zZSBzdGlsbCBjb250YWluXG4gICAqIHRoZSBhY3R1YWwgdGVtcGxhdGUgdmFsdWVzIGFzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyICh0aGV5IG1pZ2h0IHN0aWxsIGJlXG4gICAqIHVzZWQgZm9yIGRvd25zdHJlYW0gcHJvY2Vzc2luZykuXG4gICAqL1xuICBwdWJsaWMgc2V0UHJvcGVydHlDaGFuZ2UocHJvcGVydHlOYW1lOiBzdHJpbmcsIGNoYW5nZTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pIHtcbiAgICB0aGlzLnByb3BlcnR5RGlmZnNbcHJvcGVydHlOYW1lXSA9IGNoYW5nZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlIGEgT3RoZXJDaGFuZ2UgaW4gdGhpcyBvYmplY3RcbiAgICpcbiAgICogVGhpcyBhZmZlY3RzIHRoZSBwcm9wZXJ0eSBkaWZmIGFzIGl0IGlzIHN1bW1hcml6ZWQgdG8gdXNlcnMsIGJ1dCBpdCBET0VTXG4gICAqIE5PVCBhZmZlY3QgZWl0aGVyIHRoZSBcIm9sZFZhbHVlXCIgb3IgXCJuZXdWYWx1ZVwiIHZhbHVlczsgdGhvc2Ugc3RpbGwgY29udGFpblxuICAgKiB0aGUgYWN0dWFsIHRlbXBsYXRlIHZhbHVlcyBhcyBwcm92aWRlZCBieSB0aGUgdXNlciAodGhleSBtaWdodCBzdGlsbCBiZVxuICAgKiB1c2VkIGZvciBkb3duc3RyZWFtIHByb2Nlc3NpbmcpLlxuICAgKi9cbiAgcHVibGljIHNldE90aGVyQ2hhbmdlKG90aGVyTmFtZTogc3RyaW5nLCBjaGFuZ2U6IFByb3BlcnR5RGlmZmVyZW5jZTxhbnk+KSB7XG4gICAgdGhpcy5vdGhlckRpZmZzW290aGVyTmFtZV0gPSBjaGFuZ2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNoYW5nZUltcGFjdCgpOiBSZXNvdXJjZUltcGFjdCB7XG4gICAgaWYgKHRoaXMuaXNJbXBvcnQpIHtcbiAgICAgIHJldHVybiBSZXNvdXJjZUltcGFjdC5XSUxMX0lNUE9SVDtcbiAgICB9XG4gICAgLy8gQ2hlY2sgdGhlIFR5cGUgZmlyc3RcbiAgICBpZiAodGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGUgIT09IHRoaXMucmVzb3VyY2VUeXBlcy5uZXdUeXBlKSB7XG4gICAgICBpZiAodGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGUgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gUmVzb3VyY2VJbXBhY3QuV0lMTF9DUkVBVEU7IH1cbiAgICAgIGlmICh0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9sZFZhbHVlIS5EZWxldGlvblBvbGljeSA9PT0gJ1JldGFpbidcbiAgICAgICAgICA/IFJlc291cmNlSW1wYWN0LldJTExfT1JQSEFOXG4gICAgICAgICAgOiBSZXNvdXJjZUltcGFjdC5XSUxMX0RFU1RST1k7XG4gICAgICB9XG4gICAgICByZXR1cm4gUmVzb3VyY2VJbXBhY3QuV0lMTF9SRVBMQUNFO1xuICAgIH1cblxuICAgIC8vIEJhc2UgaW1wYWN0IChiZWZvcmUgd2UgbWl4IGluIHRoZSB3b3JzdCBvZiB0aGUgcHJvcGVydHkgaW1wYWN0cyk7XG4gICAgLy8gV0lMTF9VUERBVEUgaWYgd2UgaGF2ZSBcIm90aGVyXCIgY2hhbmdlcywgTk9fQ0hBTkdFIGlmIHRoZXJlIGFyZSBubyBcIm90aGVyXCIgY2hhbmdlcy5cbiAgICBjb25zdCBiYXNlSW1wYWN0ID0gT2JqZWN0LmtleXModGhpcy5vdGhlckNoYW5nZXMpLmxlbmd0aCA+IDAgPyBSZXNvdXJjZUltcGFjdC5XSUxMX1VQREFURSA6IFJlc291cmNlSW1wYWN0Lk5PX0NIQU5HRTtcblxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMucHJvcGVydHlEaWZmcylcbiAgICAgIC5tYXAoZWx0ID0+IGVsdC5jaGFuZ2VJbXBhY3QpXG4gICAgICAucmVkdWNlKHdvcnN0SW1wYWN0LCBiYXNlSW1wYWN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb3VudCBvZiBhY3R1YWwgZGlmZmVyZW5jZXMgKG5vdCBvZiBlbGVtZW50cylcbiAgICovXG4gIHB1YmxpYyBnZXQgZGlmZmVyZW5jZUNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5wcm9wZXJ0eVVwZGF0ZXMpLmxlbmd0aFxuICAgICAgKyBPYmplY3QudmFsdWVzKHRoaXMub3RoZXJDaGFuZ2VzKS5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogSW52b2tlIGEgY2FsbGJhY2sgZm9yIGVhY2ggYWN0dWFsIGRpZmZlcmVuY2VcbiAgICovXG4gIHB1YmxpYyBmb3JFYWNoRGlmZmVyZW5jZShjYjogKHR5cGU6ICdQcm9wZXJ0eScgfCAnT3RoZXInLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBEaWZmZXJlbmNlPGFueT4gfCBQcm9wZXJ0eURpZmZlcmVuY2U8YW55PikgPT4gYW55KSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5wcm9wZXJ0eVVwZGF0ZXMpLnNvcnQoKSkge1xuICAgICAgY2IoJ1Byb3BlcnR5Jywga2V5LCB0aGlzLnByb3BlcnR5VXBkYXRlc1trZXldKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5vdGhlckNoYW5nZXMpLnNvcnQoKSkge1xuICAgICAgY2IoJ090aGVyJywga2V5LCB0aGlzLm90aGVyRGlmZnNba2V5XSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb3BlcnR5RGlmZmVyZW5jZTxUPihkaWZmOiBEaWZmZXJlbmNlPFQ+KTogZGlmZiBpcyBQcm9wZXJ0eURpZmZlcmVuY2U8VD4ge1xuICByZXR1cm4gKGRpZmYgYXMgUHJvcGVydHlEaWZmZXJlbmNlPFQ+KS5jaGFuZ2VJbXBhY3QgIT09IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBGaWx0ZXIgYSBtYXAgb2YgSURpZmZlcmVuY2VzIGRvd24gdG8gb25seSByZXRhaW4gdGhlIGFjdHVhbCBjaGFuZ2VzXG4gKi9cbmZ1bmN0aW9uIG9ubHlDaGFuZ2VzPFYsIFQgZXh0ZW5kcyBJRGlmZmVyZW5jZTxWPj4oeHM6IHtba2V5OiBzdHJpbmddOiBUfSk6IHtba2V5OiBzdHJpbmddOiBUfSB7XG4gIGNvbnN0IHJldDogeyBba2V5OiBzdHJpbmddOiBUIH0gPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCBkaWZmXSBvZiBPYmplY3QuZW50cmllcyh4cykpIHtcbiAgICBpZiAoZGlmZi5pc0RpZmZlcmVudCkge1xuICAgICAgcmV0W2tleV0gPSBkaWZmO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmV0O1xufVxuIl19 /***/ }), @@ -10095,7 +10595,7 @@ function loadResourceModel(type) { return database().lookup('resource', 'cloudFormationType', 'equals', type)[0]; } exports.loadResourceModel = loadResourceModel; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0VBQW1FO0FBR25FOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsU0FBZ0IsU0FBUyxDQUFDLE1BQVcsRUFBRSxNQUFXO0lBQ2hELElBQUksTUFBTSxLQUFLLE1BQU0sRUFBRTtRQUFFLE9BQU8sSUFBSSxDQUFDO0tBQUU7SUFDdkMsa0VBQWtFO0lBQ2xFLElBQUksQ0FBQyxDQUFDLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxPQUFPLE1BQU0sS0FBSyxTQUFTLENBQUM7UUFDNUQsQ0FBQyxPQUFPLE1BQU0sS0FBSyxTQUFTLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUM7UUFDNUQsTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUMzQyxPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsMkRBQTJEO0lBQzNELDBDQUEwQztJQUMxQyxJQUFJLENBQUMsT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQztRQUMxRCxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3JELE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCxJQUFJLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxFQUFFO1FBQUUsT0FBTyxLQUFLLENBQUM7S0FBRTtJQUN0RCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUFFLE9BQU8sS0FBSyxDQUFDO0tBQUU7SUFDdEUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLDhCQUE4QixFQUFFO1FBQ3hELElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsTUFB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RUFBMEI7SUFDNUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDbEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNmO0lBQ0QsT0FBTyxJQUFJLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFORCwwQkFNQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQix3QkFBd0IsQ0FBQyxPQUFlO0lBQ3RELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRkQsNERBRUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxjQUFjLENBQUMsR0FBVztJQUNqQyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyQixDQUFDO0FBRUQ7O0VBRUU7QUFDRixJQUFJLFFBQWtDLENBQUM7QUFDdkMsU0FBUyxRQUFRO0lBQ2YsSUFBSSxDQUFDLFFBQVEsRUFBRTtRQUNiLFFBQVEsR0FBRyxJQUFBLHlDQUFzQixHQUFFLENBQUM7S0FDckM7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLElBQVk7SUFDNUMsT0FBTyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRixDQUFDO0FBRkQsOENBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsb2FkQXdzU2VydmljZVNwZWNTeW5jIH0gZnJvbSAnQGF3cy1jZGsvYXdzLXNlcnZpY2Utc3BlYyc7XG5pbXBvcnQgeyBSZXNvdXJjZSwgU3BlY0RhdGFiYXNlIH0gZnJvbSAnQGF3cy1jZGsvc2VydmljZS1zcGVjLXR5cGVzJztcblxuLyoqXG4gKiBDb21wYXJlcyB0d28gb2JqZWN0cyBmb3IgZXF1YWxpdHksIGRlZXBseS4gVGhlIGZ1bmN0aW9uIGhhbmRsZXMgYXJndW1lbnRzIHRoYXQgYXJlXG4gKiArbnVsbCssICt1bmRlZmluZWQrLCBhcnJheXMgYW5kIG9iamVjdHMuIEZvciBvYmplY3RzLCB0aGUgZnVuY3Rpb24gd2lsbCBub3QgdGFrZSB0aGVcbiAqIG9iamVjdCBwcm90b3R5cGUgaW50byBhY2NvdW50IGZvciB0aGUgcHVycG9zZSBvZiB0aGUgY29tcGFyaXNvbiwgb25seSB0aGUgdmFsdWVzIG9mXG4gKiBwcm9wZXJ0aWVzIHJlcG9ydGVkIGJ5ICtPYmplY3Qua2V5cysuXG4gKlxuICogSWYgYm90aCBvcGVyYW5kcyBjYW4gYmUgcGFyc2VkIHRvIGVxdWl2YWxlbnQgbnVtYmVycywgd2lsbCByZXR1cm4gdHJ1ZS5cbiAqIFRoaXMgbWFrZXMgZGlmZiBjb25zaXN0ZW50IHdpdGggQ2xvdWRGb3JtYXRpb24sIHdoZXJlIGEgbnVtZXJpYyAxMCBhbmQgYSBsaXRlcmFsIFwiMTBcIlxuICogYXJlIGNvbnNpZGVyZWQgZXF1aXZhbGVudC5cbiAqXG4gKiBAcGFyYW0gbHZhbHVlIHRoZSBsZWZ0IG9wZXJhbmQgb2YgdGhlIGVxdWFsaXR5IGNvbXBhcmlzb24uXG4gKiBAcGFyYW0gcnZhbHVlIHRoZSByaWdodCBvcGVyYW5kIG9mIHRoZSBlcXVhbGl0eSBjb21wYXJpc29uLlxuICpcbiAqIEByZXR1cm5zICt0cnVlKyBpZiBib3RoICtsdmFsdWUrIGFuZCArcnZhbHVlKyBhcmUgZXF1aXZhbGVudCB0byBlYWNoIG90aGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVlcEVxdWFsKGx2YWx1ZTogYW55LCBydmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICBpZiAobHZhbHVlID09PSBydmFsdWUpIHsgcmV0dXJuIHRydWU7IH1cbiAgLy8gQ2xvdWRGb3JtYXRpb24gYWxsb3dzIHBhc3Npbmcgc3RyaW5ncyBpbnRvIGJvb2xlYW4tdHlwZWQgZmllbGRzXG4gIGlmICgoKHR5cGVvZiBsdmFsdWUgPT09ICdzdHJpbmcnICYmIHR5cGVvZiBydmFsdWUgPT09ICdib29sZWFuJykgfHxcbiAgICAgICh0eXBlb2YgbHZhbHVlID09PSAnYm9vbGVhbicgJiYgdHlwZW9mIHJ2YWx1ZSA9PT0gJ3N0cmluZycpKSAmJlxuICAgICAgbHZhbHVlLnRvU3RyaW5nKCkgPT09IHJ2YWx1ZS50b1N0cmluZygpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy8gYWxsb3dzIGEgbnVtZXJpYyAxMCBhbmQgYSBsaXRlcmFsIFwiMTBcIiB0byBiZSBlcXVpdmFsZW50O1xuICAvLyB0aGlzIGlzIGNvbnNpc3RlbnQgd2l0aCBDbG91ZEZvcm1hdGlvbi5cbiAgaWYgKCh0eXBlb2YgbHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgcnZhbHVlID09PSAnc3RyaW5nJykgJiZcbiAgICAgIHNhZmVQYXJzZUZsb2F0KGx2YWx1ZSkgPT09IHNhZmVQYXJzZUZsb2F0KHJ2YWx1ZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodHlwZW9mIGx2YWx1ZSAhPT0gdHlwZW9mIHJ2YWx1ZSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgaWYgKEFycmF5LmlzQXJyYXkobHZhbHVlKSAhPT0gQXJyYXkuaXNBcnJheShydmFsdWUpKSB7IHJldHVybiBmYWxzZTsgfVxuICBpZiAoQXJyYXkuaXNBcnJheShsdmFsdWUpIC8qICYmIEFycmF5LmlzQXJyYXkocnZhbHVlKSAqLykge1xuICAgIGlmIChsdmFsdWUubGVuZ3RoICE9PSBydmFsdWUubGVuZ3RoKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIGZvciAobGV0IGkgPSAwIDsgaSA8IGx2YWx1ZS5sZW5ndGggOyBpKyspIHtcbiAgICAgIGlmICghZGVlcEVxdWFsKGx2YWx1ZVtpXSwgcnZhbHVlW2ldKSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHR5cGVvZiBsdmFsdWUgPT09ICdvYmplY3QnIC8qICYmIHR5cGVvZiBydmFsdWUgPT09ICdvYmplY3QnICovKSB7XG4gICAgaWYgKGx2YWx1ZSA9PT0gbnVsbCB8fCBydmFsdWUgPT09IG51bGwpIHtcbiAgICAgIC8vIElmIGJvdGggd2VyZSBudWxsLCB0aGV5J2QgaGF2ZSBiZWVuID09PVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobHZhbHVlKTtcbiAgICBpZiAoa2V5cy5sZW5ndGggIT09IE9iamVjdC5rZXlzKHJ2YWx1ZSkubGVuZ3RoKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIGlmICghcnZhbHVlLmhhc093blByb3BlcnR5KGtleSkpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgICBpZiAoa2V5ID09PSAnRGVwZW5kc09uJykge1xuICAgICAgICBpZiAoIWRlcGVuZHNPbkVxdWFsKGx2YWx1ZVtrZXldLCBydmFsdWVba2V5XSkpIHsgcmV0dXJuIGZhbHNlOyB9O1xuICAgICAgICAvLyBjaGVjayBkaWZmZXJlbmNlcyBvdGhlciB0aGFuIGBEZXBlbmRzT25gXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFkZWVwRXF1YWwobHZhbHVlW2tleV0sIHJ2YWx1ZVtrZXldKSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy8gTmVpdGhlciBvYmplY3QsIG5vciBhcnJheTogSSBkZWR1Y2UgdGhpcyBpcyBwcmltaXRpdmUgdHlwZVxuICAvLyBQcmltaXRpdmUgdHlwZSBhbmQgbm90ID09PSwgc28gSSBkZWR1Y2Ugbm90IGRlZXBFcXVhbFxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQ29tcGFyZXMgdHdvIGFyZ3VtZW50cyB0byBEZXBlbmRzT24gZm9yIGVxdWFsaXR5LlxuICpcbiAqIEBwYXJhbSBsdmFsdWUgdGhlIGxlZnQgb3BlcmFuZCBvZiB0aGUgZXF1YWxpdHkgY29tcGFyaXNvbi5cbiAqIEBwYXJhbSBydmFsdWUgdGhlIHJpZ2h0IG9wZXJhbmQgb2YgdGhlIGVxdWFsaXR5IGNvbXBhcmlzb24uXG4gKlxuICogQHJldHVybnMgK3RydWUrIGlmIGJvdGggK2x2YWx1ZSsgYW5kICtydmFsdWUrIGFyZSBlcXVpdmFsZW50IHRvIGVhY2ggb3RoZXIuXG4gKi9cbmZ1bmN0aW9uIGRlcGVuZHNPbkVxdWFsKGx2YWx1ZTogYW55LCBydmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAvLyBhbGxvd3MgWydWYWx1ZSddIGFuZCAnVmFsdWUnIHRvIGJlIGVxdWFsXG4gIGlmIChBcnJheS5pc0FycmF5KGx2YWx1ZSkgIT09IEFycmF5LmlzQXJyYXkocnZhbHVlKSkge1xuICAgIGNvbnN0IGFycmF5ID0gQXJyYXkuaXNBcnJheShsdmFsdWUpID8gbHZhbHVlIDogcnZhbHVlO1xuICAgIGNvbnN0IG5vbkFycmF5ID0gQXJyYXkuaXNBcnJheShsdmFsdWUpID8gcnZhbHVlIDogbHZhbHVlO1xuXG4gICAgaWYgKGFycmF5Lmxlbmd0aCA9PT0gMSAmJiBkZWVwRXF1YWwoYXJyYXlbMF0sIG5vbkFycmF5KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIGFsbG93cyBhcnJheXMgcGFzc2VkIHRvIERlcGVuZHNPbiB0byBiZSBlcXVpdmFsZW50IGlycmVzcGVjdGl2ZSBvZiBlbGVtZW50IG9yZGVyXG4gIGlmIChBcnJheS5pc0FycmF5KGx2YWx1ZSkgJiYgQXJyYXkuaXNBcnJheShydmFsdWUpKSB7XG4gICAgaWYgKGx2YWx1ZS5sZW5ndGggIT09IHJ2YWx1ZS5sZW5ndGgpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgZm9yIChsZXQgaSA9IDAgOyBpIDwgbHZhbHVlLmxlbmd0aCA7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDAgOyBqIDwgbHZhbHVlLmxlbmd0aCA7IGorKykge1xuICAgICAgICBpZiAoKCFkZWVwRXF1YWwobHZhbHVlW2ldLCBydmFsdWVbal0pKSAmJiAoaiA9PT0gbHZhbHVlLmxlbmd0aCAtIDEpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBQcm9kdWNlIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHR3byBtYXBzLCBhcyBhIG1hcCwgdXNpbmcgYSBzcGVjaWZpZWQgZGlmZiBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gb2xkVmFsdWUgIHRoZSBvbGQgbWFwLlxuICogQHBhcmFtIG5ld1ZhbHVlICB0aGUgbmV3IG1hcC5cbiAqIEBwYXJhbSBlbGVtZW50RGlmZiB0aGUgZGlmZiBmdW5jdGlvbi5cbiAqXG4gKiBAcmV0dXJucyBhIG1hcCByZXByZXNlbnRpbmcgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gK29sZFZhbHVlKyBhbmQgK25ld1ZhbHVlKy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZLZXllZEVudGl0aWVzPFQ+KFxuICBvbGRWYWx1ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IHVuZGVmaW5lZCxcbiAgbmV3VmFsdWU6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCB1bmRlZmluZWQsXG4gIGVsZW1lbnREaWZmOiAob2xkRWxlbWVudDogYW55LCBuZXdFbGVtZW50OiBhbnksIGtleTogc3RyaW5nKSA9PiBUKTogeyBbbmFtZTogc3RyaW5nXTogVCB9IHtcbiAgY29uc3QgcmVzdWx0OiB7IFtuYW1lOiBzdHJpbmddOiBUIH0gPSB7fTtcbiAgZm9yIChjb25zdCBsb2dpY2FsSWQgb2YgdW5pb25PZihPYmplY3Qua2V5cyhvbGRWYWx1ZSB8fCB7fSksIE9iamVjdC5rZXlzKG5ld1ZhbHVlIHx8IHt9KSkpIHtcbiAgICBjb25zdCBvbGRFbGVtZW50ID0gb2xkVmFsdWUgJiYgb2xkVmFsdWVbbG9naWNhbElkXTtcbiAgICBjb25zdCBuZXdFbGVtZW50ID0gbmV3VmFsdWUgJiYgbmV3VmFsdWVbbG9naWNhbElkXTtcblxuICAgIGlmIChvbGRFbGVtZW50ID09PSB1bmRlZmluZWQgJiYgbmV3RWxlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBTaG91bGRuJ3QgaGFwcGVuIGluIHJlYWxpdHksIGJ1dCBtYXkgaGFwcGVuIGluIHRlc3RzLiBTa2lwLlxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgcmVzdWx0W2xvZ2ljYWxJZF0gPSBlbGVtZW50RGlmZihvbGRFbGVtZW50LCBuZXdFbGVtZW50LCBsb2dpY2FsSWQpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIHVuaW9uIG9mIHR3byBzZXRzIG9mIHN0cmluZ3MuXG4gKlxuICogQHBhcmFtIGx2IHRoZSBsZWZ0IHNldCBvZiBzdHJpbmdzLlxuICogQHBhcmFtIHJ2IHRoZSByaWdodCBzZXQgb2Ygc3RyaW5ncy5cbiAqXG4gKiBAcmV0dXJucyBhIG5ldyBhcnJheSBjb250YWluaW5nIGFsbCBlbGVtZWJ0cyBmcm9tICtsdisgYW5kICtydissIHdpdGggbm8gZHVwbGljYXRlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuaW9uT2YobHY6IHN0cmluZ1tdIHwgU2V0PHN0cmluZz4sIHJ2OiBzdHJpbmdbXSB8IFNldDxzdHJpbmc+KTogc3RyaW5nW10ge1xuICBjb25zdCByZXN1bHQgPSBuZXcgU2V0KGx2KTtcbiAgZm9yIChjb25zdCB2IG9mIHJ2KSB7XG4gICAgcmVzdWx0LmFkZCh2KTtcbiAgfVxuICByZXR1cm4gbmV3IEFycmF5KC4uLnJlc3VsdCk7XG59XG5cbi8qKlxuICogR2V0U3RhY2tUZW1wbGF0ZSBmbGF0dGVucyBhbnkgY29kZXBvaW50IGdyZWF0ZXIgdGhhbiBcIlxcdTdmXCIgdG8gXCI/XCIuIFRoaXMgaXNcbiAqIHRydWUgZXZlbiBmb3IgY29kZXBvaW50cyBpbiB0aGUgc3VwcGxlbWVudGFsIHBsYW5lcyB3aGljaCBhcmUgcmVwcmVzZW50ZWRcbiAqIGluIEpTIGFzIHN1cnJvZ2F0ZSBwYWlycywgYWxsIHRoZSB3YXkgdXAgdG8gXCJcXHV7MTBmZmZmfVwiLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgc2FtZSBtYW5nbGluZyBpbiBvcmRlciB0byBwcm92aWRlIGRpYWdub3N0aWNcbiAqIGluZm9ybWF0aW9uIGluIGBjZGsgZGlmZmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYW5nbGVMaWtlQ2xvdWRGb3JtYXRpb24ocGF5bG9hZDogc3RyaW5nKSB7XG4gIHJldHVybiBwYXlsb2FkLnJlcGxhY2UoL1tcXHV7ODB9LVxcdXsxMGZmZmZ9XS9ndSwgJz8nKTtcbn1cblxuLyoqXG4gKiBBIHBhcnNlRmxvYXQgaW1wbGVtZW50YXRpb24gdGhhdCBkb2VzIHRoZSByaWdodCB0aGluZyBmb3JcbiAqIHN0cmluZ3MgbGlrZSAnMC4wLjAnXG4gKiAoZm9yIHdoaWNoIEphdmFTY3JpcHQncyBwYXJzZUZsb2F0KCkgcmV0dXJucyAwKS5cbiAqIFdlIHJldHVybiBOYU4gZm9yIGFsbCBvZiB0aGVzZSBzdHJpbmdzIHRoYXQgZG8gbm90IHJlcHJlc2VudCBudW1iZXJzLFxuICogYW5kIHNvIGNvbXBhcmluZyB0aGVtIGZhaWxzLFxuICogYW5kIGRvZXNuJ3Qgc2hvcnQtY2lyY3VpdCB0aGUgZGlmZiBsb2dpYy5cbiAqL1xuZnVuY3Rpb24gc2FmZVBhcnNlRmxvYXQoc3RyOiBzdHJpbmcpOiBudW1iZXIge1xuICByZXR1cm4gTnVtYmVyKHN0cik7XG59XG5cbi8qKlxuICogTGF6aWx5IGxvYWQgdGhlIHNlcnZpY2Ugc3BlYyBkYXRhYmFzZSBhbmQgY2FjaGUgdGhlIGxvYWRlZCBkYlxuKi9cbmxldCBEQVRBQkFTRTogU3BlY0RhdGFiYXNlIHwgdW5kZWZpbmVkO1xuZnVuY3Rpb24gZGF0YWJhc2UoKTogU3BlY0RhdGFiYXNlIHtcbiAgaWYgKCFEQVRBQkFTRSkge1xuICAgIERBVEFCQVNFID0gbG9hZEF3c1NlcnZpY2VTcGVjU3luYygpO1xuICB9XG4gIHJldHVybiBEQVRBQkFTRTtcbn1cblxuLyoqXG4gKiBMb2FkIGEgUmVzb3VyY2UgbW9kZWwgZnJvbSB0aGUgU2VydmljZSBTcGVjIERhdGFiYXNlXG4gKlxuICogVGhlIGRhdGFiYXNlIGlzIGxvYWRlZCBsYXppbHkgYW5kIGNhY2hlZCBhY3Jvc3MgbXVsdGlwbGUgY2FsbHMgdG8gYGxvYWRSZXNvdXJjZU1vZGVsYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRSZXNvdXJjZU1vZGVsKHR5cGU6IHN0cmluZyk6IFJlc291cmNlIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGRhdGFiYXNlKCkubG9va3VwKCdyZXNvdXJjZScsICdjbG91ZEZvcm1hdGlvblR5cGUnLCAnZXF1YWxzJywgdHlwZSlbMF07XG59XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0VBQW1FO0FBR25FOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsU0FBZ0IsU0FBUyxDQUFDLE1BQVcsRUFBRSxNQUFXO0lBQ2hELElBQUksTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQUMsT0FBTyxJQUFJLENBQUM7SUFBQyxDQUFDO0lBQ3ZDLGtFQUFrRTtJQUNsRSxJQUFJLENBQUMsQ0FBQyxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksT0FBTyxNQUFNLEtBQUssU0FBUyxDQUFDO1FBQzVELENBQUMsT0FBTyxNQUFNLEtBQUssU0FBUyxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1FBQzVELE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztRQUM1QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCwyREFBMkQ7SUFDM0QsMENBQTBDO0lBQzFDLElBQUksQ0FBQyxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDO1FBQzFELGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN0RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxFQUFFLENBQUM7UUFBQyxPQUFPLEtBQUssQ0FBQztJQUFDLENBQUM7SUFDdEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sS0FBSyxDQUFDO0lBQUMsQ0FBQztJQUN0RSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsOEJBQThC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QVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFGRCw4Q0FFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvYWRBd3NTZXJ2aWNlU3BlY1N5bmMgfSBmcm9tICdAYXdzLWNkay9hd3Mtc2VydmljZS1zcGVjJztcbmltcG9ydCB7IFJlc291cmNlLCBTcGVjRGF0YWJhc2UgfSBmcm9tICdAYXdzLWNkay9zZXJ2aWNlLXNwZWMtdHlwZXMnO1xuXG4vKipcbiAqIENvbXBhcmVzIHR3byBvYmplY3RzIGZvciBlcXVhbGl0eSwgZGVlcGx5LiBUaGUgZnVuY3Rpb24gaGFuZGxlcyBhcmd1bWVudHMgdGhhdCBhcmVcbiAqICtudWxsKywgK3VuZGVmaW5lZCssIGFycmF5cyBhbmQgb2JqZWN0cy4gRm9yIG9iamVjdHMsIHRoZSBmdW5jdGlvbiB3aWxsIG5vdCB0YWtlIHRoZVxuICogb2JqZWN0IHByb3RvdHlwZSBpbnRvIGFjY291bnQgZm9yIHRoZSBwdXJwb3NlIG9mIHRoZSBjb21wYXJpc29uLCBvbmx5IHRoZSB2YWx1ZXMgb2ZcbiAqIHByb3BlcnRpZXMgcmVwb3J0ZWQgYnkgK09iamVjdC5rZXlzKy5cbiAqXG4gKiBJZiBib3RoIG9wZXJhbmRzIGNhbiBiZSBwYXJzZWQgdG8gZXF1aXZhbGVudCBudW1iZXJzLCB3aWxsIHJldHVybiB0cnVlLlxuICogVGhpcyBtYWtlcyBkaWZmIGNvbnNpc3RlbnQgd2l0aCBDbG91ZEZvcm1hdGlvbiwgd2hlcmUgYSBudW1lcmljIDEwIGFuZCBhIGxpdGVyYWwgXCIxMFwiXG4gKiBhcmUgY29uc2lkZXJlZCBlcXVpdmFsZW50LlxuICpcbiAqIEBwYXJhbSBsdmFsdWUgdGhlIGxlZnQgb3BlcmFuZCBvZiB0aGUgZXF1YWxpdHkgY29tcGFyaXNvbi5cbiAqIEBwYXJhbSBydmFsdWUgdGhlIHJpZ2h0IG9wZXJhbmQgb2YgdGhlIGVxdWFsaXR5IGNvbXBhcmlzb24uXG4gKlxuICogQHJldHVybnMgK3RydWUrIGlmIGJvdGggK2x2YWx1ZSsgYW5kICtydmFsdWUrIGFyZSBlcXVpdmFsZW50IHRvIGVhY2ggb3RoZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWVwRXF1YWwobHZhbHVlOiBhbnksIHJ2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIGlmIChsdmFsdWUgPT09IHJ2YWx1ZSkgeyByZXR1cm4gdHJ1ZTsgfVxuICAvLyBDbG91ZEZvcm1hdGlvbiBhbGxvd3MgcGFzc2luZyBzdHJpbmdzIGludG8gYm9vbGVhbi10eXBlZCBmaWVsZHNcbiAgaWYgKCgodHlwZW9mIGx2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIHJ2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB8fFxuICAgICAgKHR5cGVvZiBsdmFsdWUgPT09ICdib29sZWFuJyAmJiB0eXBlb2YgcnZhbHVlID09PSAnc3RyaW5nJykpICYmXG4gICAgICBsdmFsdWUudG9TdHJpbmcoKSA9PT0gcnZhbHVlLnRvU3RyaW5nKCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICAvLyBhbGxvd3MgYSBudW1lcmljIDEwIGFuZCBhIGxpdGVyYWwgXCIxMFwiIHRvIGJlIGVxdWl2YWxlbnQ7XG4gIC8vIHRoaXMgaXMgY29uc2lzdGVudCB3aXRoIENsb3VkRm9ybWF0aW9uLlxuICBpZiAoKHR5cGVvZiBsdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBydmFsdWUgPT09ICdzdHJpbmcnKSAmJlxuICAgICAgc2FmZVBhcnNlRmxvYXQobHZhbHVlKSA9PT0gc2FmZVBhcnNlRmxvYXQocnZhbHVlKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICh0eXBlb2YgbHZhbHVlICE9PSB0eXBlb2YgcnZhbHVlKSB7IHJldHVybiBmYWxzZTsgfVxuICBpZiAoQXJyYXkuaXNBcnJheShsdmFsdWUpICE9PSBBcnJheS5pc0FycmF5KHJ2YWx1ZSkpIHsgcmV0dXJuIGZhbHNlOyB9XG4gIGlmIChBcnJheS5pc0FycmF5KGx2YWx1ZSkgLyogJiYgQXJyYXkuaXNBcnJheShydmFsdWUpICovKSB7XG4gICAgaWYgKGx2YWx1ZS5sZW5ndGggIT09IHJ2YWx1ZS5sZW5ndGgpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgZm9yIChsZXQgaSA9IDAgOyBpIDwgbHZhbHVlLmxlbmd0aCA7IGkrKykge1xuICAgICAgaWYgKCFkZWVwRXF1YWwobHZhbHVlW2ldLCBydmFsdWVbaV0pKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodHlwZW9mIGx2YWx1ZSA9PT0gJ29iamVjdCcgLyogJiYgdHlwZW9mIHJ2YWx1ZSA9PT0gJ29iamVjdCcgKi8pIHtcbiAgICBpZiAobHZhbHVlID09PSBudWxsIHx8IHJ2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgLy8gSWYgYm90aCB3ZXJlIG51bGwsIHRoZXknZCBoYXZlIGJlZW4gPT09XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhsdmFsdWUpO1xuICAgIGlmIChrZXlzLmxlbmd0aCAhPT0gT2JqZWN0LmtleXMocnZhbHVlKS5sZW5ndGgpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgaWYgKCFydmFsdWUuaGFzT3duUHJvcGVydHkoa2V5KSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICAgIGlmIChrZXkgPT09ICdEZXBlbmRzT24nKSB7XG4gICAgICAgIGlmICghZGVwZW5kc09uRXF1YWwobHZhbHVlW2tleV0sIHJ2YWx1ZVtrZXldKSkgeyByZXR1cm4gZmFsc2U7IH07XG4gICAgICAgIC8vIGNoZWNrIGRpZmZlcmVuY2VzIG90aGVyIHRoYW4gYERlcGVuZHNPbmBcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIWRlZXBFcXVhbChsdmFsdWVba2V5XSwgcnZhbHVlW2tleV0pKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICAvLyBOZWl0aGVyIG9iamVjdCwgbm9yIGFycmF5OiBJIGRlZHVjZSB0aGlzIGlzIHByaW1pdGl2ZSB0eXBlXG4gIC8vIFByaW1pdGl2ZSB0eXBlIGFuZCBub3QgPT09LCBzbyBJIGRlZHVjZSBub3QgZGVlcEVxdWFsXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBDb21wYXJlcyB0d28gYXJndW1lbnRzIHRvIERlcGVuZHNPbiBmb3IgZXF1YWxpdHkuXG4gKlxuICogQHBhcmFtIGx2YWx1ZSB0aGUgbGVmdCBvcGVyYW5kIG9mIHRoZSBlcXVhbGl0eSBjb21wYXJpc29uLlxuICogQHBhcmFtIHJ2YWx1ZSB0aGUgcmlnaHQgb3BlcmFuZCBvZiB0aGUgZXF1YWxpdHkgY29tcGFyaXNvbi5cbiAqXG4gKiBAcmV0dXJucyArdHJ1ZSsgaWYgYm90aCArbHZhbHVlKyBhbmQgK3J2YWx1ZSsgYXJlIGVxdWl2YWxlbnQgdG8gZWFjaCBvdGhlci5cbiAqL1xuZnVuY3Rpb24gZGVwZW5kc09uRXF1YWwobHZhbHVlOiBhbnksIHJ2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIC8vIGFsbG93cyBbJ1ZhbHVlJ10gYW5kICdWYWx1ZScgdG8gYmUgZXF1YWxcbiAgaWYgKEFycmF5LmlzQXJyYXkobHZhbHVlKSAhPT0gQXJyYXkuaXNBcnJheShydmFsdWUpKSB7XG4gICAgY29uc3QgYXJyYXkgPSBBcnJheS5pc0FycmF5KGx2YWx1ZSkgPyBsdmFsdWUgOiBydmFsdWU7XG4gICAgY29uc3Qgbm9uQXJyYXkgPSBBcnJheS5pc0FycmF5KGx2YWx1ZSkgPyBydmFsdWUgOiBsdmFsdWU7XG5cbiAgICBpZiAoYXJyYXkubGVuZ3RoID09PSAxICYmIGRlZXBFcXVhbChhcnJheVswXSwgbm9uQXJyYXkpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gYWxsb3dzIGFycmF5cyBwYXNzZWQgdG8gRGVwZW5kc09uIHRvIGJlIGVxdWl2YWxlbnQgaXJyZXNwZWN0aXZlIG9mIGVsZW1lbnQgb3JkZXJcbiAgaWYgKEFycmF5LmlzQXJyYXkobHZhbHVlKSAmJiBBcnJheS5pc0FycmF5KHJ2YWx1ZSkpIHtcbiAgICBpZiAobHZhbHVlLmxlbmd0aCAhPT0gcnZhbHVlLmxlbmd0aCkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBmb3IgKGxldCBpID0gMCA7IGkgPCBsdmFsdWUubGVuZ3RoIDsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMCA7IGogPCBsdmFsdWUubGVuZ3RoIDsgaisrKSB7XG4gICAgICAgIGlmICgoIWRlZXBFcXVhbChsdmFsdWVbaV0sIHJ2YWx1ZVtqXSkpICYmIChqID09PSBsdmFsdWUubGVuZ3RoIC0gMSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFByb2R1Y2UgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdHdvIG1hcHMsIGFzIGEgbWFwLCB1c2luZyBhIHNwZWNpZmllZCBkaWZmIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSBvbGRWYWx1ZSAgdGhlIG9sZCBtYXAuXG4gKiBAcGFyYW0gbmV3VmFsdWUgIHRoZSBuZXcgbWFwLlxuICogQHBhcmFtIGVsZW1lbnREaWZmIHRoZSBkaWZmIGZ1bmN0aW9uLlxuICpcbiAqIEByZXR1cm5zIGEgbWFwIHJlcHJlc2VudGluZyB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiArb2xkVmFsdWUrIGFuZCArbmV3VmFsdWUrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZktleWVkRW50aXRpZXM8VD4oXG4gIG9sZFZhbHVlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgdW5kZWZpbmVkLFxuICBuZXdWYWx1ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IHVuZGVmaW5lZCxcbiAgZWxlbWVudERpZmY6IChvbGRFbGVtZW50OiBhbnksIG5ld0VsZW1lbnQ6IGFueSwga2V5OiBzdHJpbmcpID0+IFQpOiB7IFtuYW1lOiBzdHJpbmddOiBUIH0ge1xuICBjb25zdCByZXN1bHQ6IHsgW25hbWU6IHN0cmluZ106IFQgfSA9IHt9O1xuICBmb3IgKGNvbnN0IGxvZ2ljYWxJZCBvZiB1bmlvbk9mKE9iamVjdC5rZXlzKG9sZFZhbHVlIHx8IHt9KSwgT2JqZWN0LmtleXMobmV3VmFsdWUgfHwge30pKSkge1xuICAgIGNvbnN0IG9sZEVsZW1lbnQgPSBvbGRWYWx1ZSAmJiBvbGRWYWx1ZVtsb2dpY2FsSWRdO1xuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSBuZXdWYWx1ZSAmJiBuZXdWYWx1ZVtsb2dpY2FsSWRdO1xuXG4gICAgaWYgKG9sZEVsZW1lbnQgPT09IHVuZGVmaW5lZCAmJiBuZXdFbGVtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFNob3VsZG4ndCBoYXBwZW4gaW4gcmVhbGl0eSwgYnV0IG1heSBoYXBwZW4gaW4gdGVzdHMuIFNraXAuXG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICByZXN1bHRbbG9naWNhbElkXSA9IGVsZW1lbnREaWZmKG9sZEVsZW1lbnQsIG5ld0VsZW1lbnQsIGxvZ2ljYWxJZCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgdW5pb24gb2YgdHdvIHNldHMgb2Ygc3RyaW5ncy5cbiAqXG4gKiBAcGFyYW0gbHYgdGhlIGxlZnQgc2V0IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gcnYgdGhlIHJpZ2h0IHNldCBvZiBzdHJpbmdzLlxuICpcbiAqIEByZXR1cm5zIGEgbmV3IGFycmF5IGNvbnRhaW5pbmcgYWxsIGVsZW1lYnRzIGZyb20gK2x2KyBhbmQgK3J2Kywgd2l0aCBubyBkdXBsaWNhdGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pb25PZihsdjogc3RyaW5nW10gfCBTZXQ8c3RyaW5nPiwgcnY6IHN0cmluZ1tdIHwgU2V0PHN0cmluZz4pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBTZXQobHYpO1xuICBmb3IgKGNvbnN0IHYgb2YgcnYpIHtcbiAgICByZXN1bHQuYWRkKHYpO1xuICB9XG4gIHJldHVybiBuZXcgQXJyYXkoLi4ucmVzdWx0KTtcbn1cblxuLyoqXG4gKiBHZXRTdGFja1RlbXBsYXRlIGZsYXR0ZW5zIGFueSBjb2RlcG9pbnQgZ3JlYXRlciB0aGFuIFwiXFx1N2ZcIiB0byBcIj9cIi4gVGhpcyBpc1xuICogdHJ1ZSBldmVuIGZvciBjb2RlcG9pbnRzIGluIHRoZSBzdXBwbGVtZW50YWwgcGxhbmVzIHdoaWNoIGFyZSByZXByZXNlbnRlZFxuICogaW4gSlMgYXMgc3Vycm9nYXRlIHBhaXJzLCBhbGwgdGhlIHdheSB1cCB0byBcIlxcdXsxMGZmZmZ9XCIuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBzYW1lIG1hbmdsaW5nIGluIG9yZGVyIHRvIHByb3ZpZGUgZGlhZ25vc3RpY1xuICogaW5mb3JtYXRpb24gaW4gYGNkayBkaWZmYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hbmdsZUxpa2VDbG91ZEZvcm1hdGlvbihwYXlsb2FkOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHBheWxvYWQucmVwbGFjZSgvW1xcdXs4MH0tXFx1ezEwZmZmZn1dL2d1LCAnPycpO1xufVxuXG4vKipcbiAqIEEgcGFyc2VGbG9hdCBpbXBsZW1lbnRhdGlvbiB0aGF0IGRvZXMgdGhlIHJpZ2h0IHRoaW5nIGZvclxuICogc3RyaW5ncyBsaWtlICcwLjAuMCdcbiAqIChmb3Igd2hpY2ggSmF2YVNjcmlwdCdzIHBhcnNlRmxvYXQoKSByZXR1cm5zIDApLlxuICogV2UgcmV0dXJuIE5hTiBmb3IgYWxsIG9mIHRoZXNlIHN0cmluZ3MgdGhhdCBkbyBub3QgcmVwcmVzZW50IG51bWJlcnMsXG4gKiBhbmQgc28gY29tcGFyaW5nIHRoZW0gZmFpbHMsXG4gKiBhbmQgZG9lc24ndCBzaG9ydC1jaXJjdWl0IHRoZSBkaWZmIGxvZ2ljLlxuICovXG5mdW5jdGlvbiBzYWZlUGFyc2VGbG9hdChzdHI6IHN0cmluZyk6IG51bWJlciB7XG4gIHJldHVybiBOdW1iZXIoc3RyKTtcbn1cblxuLyoqXG4gKiBMYXppbHkgbG9hZCB0aGUgc2VydmljZSBzcGVjIGRhdGFiYXNlIGFuZCBjYWNoZSB0aGUgbG9hZGVkIGRiXG4qL1xubGV0IERBVEFCQVNFOiBTcGVjRGF0YWJhc2UgfCB1bmRlZmluZWQ7XG5mdW5jdGlvbiBkYXRhYmFzZSgpOiBTcGVjRGF0YWJhc2Uge1xuICBpZiAoIURBVEFCQVNFKSB7XG4gICAgREFUQUJBU0UgPSBsb2FkQXdzU2VydmljZVNwZWNTeW5jKCk7XG4gIH1cbiAgcmV0dXJuIERBVEFCQVNFO1xufVxuXG4vKipcbiAqIExvYWQgYSBSZXNvdXJjZSBtb2RlbCBmcm9tIHRoZSBTZXJ2aWNlIFNwZWMgRGF0YWJhc2VcbiAqXG4gKiBUaGUgZGF0YWJhc2UgaXMgbG9hZGVkIGxhemlseSBhbmQgY2FjaGVkIGFjcm9zcyBtdWx0aXBsZSBjYWxscyB0byBgbG9hZFJlc291cmNlTW9kZWxgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZFJlc291cmNlTW9kZWwodHlwZTogc3RyaW5nKTogUmVzb3VyY2UgfCB1bmRlZmluZWQge1xuICByZXR1cm4gZGF0YWJhc2UoKS5sb29rdXAoJ3Jlc291cmNlJywgJ2Nsb3VkRm9ybWF0aW9uVHlwZScsICdlcXVhbHMnLCB0eXBlKVswXTtcbn1cbiJdfQ== /***/ }), @@ -10265,7 +10765,7 @@ const TABLE_BORDER_CHARACTERS = { joinRight: tableColor('┤'), joinJoin: tableColor('┼'), }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZm9ybWF0LXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUMvQiwrQ0FBdUM7QUFDdkMsK0JBQStCO0FBRS9COzs7O0dBSUc7QUFDSCxTQUFnQixXQUFXLENBQUMsS0FBaUIsRUFBRSxPQUEyQjtJQUN4RSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFO1FBQ3hCLE1BQU0sRUFBRSx1QkFBdUI7UUFDL0IsT0FBTyxFQUFFLGlCQUFpQixDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3JHLGtCQUFrQixFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDM0IsaUdBQWlHO1lBQ2pHLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksS0FBSyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDMUYsQ0FBQztLQUNGLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUNqQixDQUFDO0FBVEQsa0NBU0M7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxXQUFXLENBQUMsSUFBYyxFQUFFLElBQWM7SUFDakQsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLE1BQTRCO0lBQ3JELElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtRQUFFLE9BQU8sU0FBUyxDQUFDO0tBQUU7SUFFL0MsTUFBTSxHQUFHLEdBQWdELEVBQUUsQ0FBQztJQUM1RCxNQUFNLENBQUMsT0FBTyxDQUFD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LENBQUM7SUFDeEIsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDekIsVUFBVSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDM0IsVUFBVSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDM0IsVUFBVSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDNUIsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDekIsU0FBUyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDMUIsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDekIsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDekIsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDekIsU0FBUyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDMUIsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7Q0FDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCBzdHJpbmdXaWR0aCBmcm9tICdzdHJpbmctd2lkdGgnO1xuaW1wb3J0ICogYXMgdGFibGUgZnJvbSAndGFibGUnO1xuXG4vKipcbiAqIFJlbmRlciBhIHR3by1kaW1lbnNpb25hbCBhcnJheSB0byBhIHZpc3VhbGx5IGF0dHJhY3RpdmUgdGFibGVcbiAqXG4gKiBGaXJzdCByb3cgaXMgY29uc2lkZXJlZCB0aGUgdGFibGUgaGVhZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VGFibGUoY2VsbHM6IHN0cmluZ1tdW10sIGNvbHVtbnM6IG51bWJlciB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gIHJldHVybiB0YWJsZS50YWJsZShjZWxscywge1xuICAgIGJvcmRlcjogVEFCTEVfQk9SREVSX0NIQVJBQ1RFUlMsXG4gICAgY29sdW1uczogYnVpbGRDb2x1bW5Db25maWcoY29sdW1ucyAhPT0gdW5kZWZpbmVkID8gY2FsY3VsYXRlQ29sdW1uV2lkdGhzKGNlbGxzLCBjb2x1bW5zKSA6IHVuZGVmaW5lZCksXG4gICAgZHJhd0hvcml6b250YWxMaW5lOiAobGluZSkgPT4ge1xuICAgICAgLy8gTnVtYmVyaW5nIGxpa2UgdGhpczogW2xpbmUgMF0gW2hlYWRlciA9IHJvd1swXV0gW2xpbmUgMV0gW3JvdyAxXSBbbGluZSAyXSBbY29udGVudCAyXSBbbGluZSAzXVxuICAgICAgcmV0dXJuIChsaW5lIDwgMiB8fCBsaW5lID09PSBjZWxscy5sZW5ndGgpIHx8IGxpbmVCZXR3ZWVuKGNlbGxzW2xpbmUgLSAxXSwgY2VsbHNbbGluZV0pO1xuICAgIH0sXG4gIH0pLnRyaW1SaWdodCgpO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgd2Ugc2hvdWxkIGRyYXcgYSBsaW5lIGJldHdlZW4gdHdvIHJvd3NcbiAqXG4gKiBEcmF3IGhvcml6b250YWwgbGluZSBpZiAybmQgY29sdW1uIHZhbHVlcyBhcmUgZGlmZmVyZW50LlxuICovXG5mdW5jdGlvbiBsaW5lQmV0d2Vlbihyb3dBOiBzdHJpbmdbXSwgcm93Qjogc3RyaW5nW10pIHtcbiAgcmV0dXJuIHJvd0FbMV0gIT09IHJvd0JbMV07XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQ29sdW1uQ29uZmlnKHdpZHRoczogbnVtYmVyW10gfCB1bmRlZmluZWQpOiB7IFtpbmRleDogbnVtYmVyXTogdGFibGUuQ29sdW1uVXNlckNvbmZpZyB9IHwgdW5kZWZpbmVkIHtcbiAgaWYgKHdpZHRocyA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cblxuICBjb25zdCByZXQ6IHsgW2luZGV4OiBudW1iZXJdOiB0YWJsZS5Db2x1bW5Vc2VyQ29uZmlnIH0gPSB7fTtcbiAgd2lkdGhzLmZvckVhY2goKHdpZHRoLCBpKSA9PiB7XG4gICAgaWYgKHdpZHRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmV0W2ldID0geyB3aWR0aCB9O1xuICB9KTtcblxuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBjb2x1bW4gd2lkdGhzIGdpdmVuIGEgdGVybWluYWwgd2lkdGhcbiAqXG4gKiBXZSBkbyB0aGlzIGJ5IGNhbGN1bGF0aW5nIGEgZmFpciBzaGFyZSBmb3IgZXZlcnkgY29sdW1uLiBFeHRyYSB3aWR0aCBzbWFsbGVyXG4gKiB0aGFuIHRoZSBmYWlyIHNoYXJlIGlzIGV2ZW5seSBkaXN0cmlidXRlZCBvdmVyIGFsbCBjb2x1bW5zIHRoYXQgZXhjZWVkIHRoZWlyXG4gKiBmYWlyIHNoYXJlLlxuICovXG5mdW5jdGlvbiBjYWxjdWxhdGVDb2x1bW5XaWR0aHMocm93czogc3RyaW5nW11bXSwgdGVybWluYWxXaWR0aDogbnVtYmVyKTogbnVtYmVyW10ge1xuICAvLyBUaGUgdGVybWluYWwgaXMgc29tZXRpbWVzIHJlcG9ydGVkIHRvIGJlIDAuIEFsc28gaWYgdGhlIHRlcm1pbmFsIGlzIFZFUlkgbmFycm93LFxuICAvLyBqdXN0IGFzc3VtZSBhIHJlYXNvbmFibGUgbWluaW11bSBzaXplLlxuICB0ZXJtaW5hbFdpZHRoID0gTWF0aC5tYXgodGVybWluYWxXaWR0aCwgNDApO1xuXG4gIC8vIHVzZSAnc3RyaW5nLXdpZHRoJyB0byBub3QgY291bnQgQU5TSSBjaGFycyBhcyBhY3R1YWwgY2hhcmFjdGVyIHdpZHRoXG4gIGNvbnN0IGNvbHVtbnMgPSByb3dzWzBdLm1hcCgoXywgaSkgPT4gTWF0aC5tYXgoLi4ucm93cy5tYXAocm93ID0+IHN0cmluZ1dpZHRoKFN0cmluZyhyb3dbaV0pKSkpKTtcblxuICAvLyBJZiB3ZSBoYXZlIG5vIHRlcm1pbmFsIHdpZHRoLCBkbyBub3RoaW5nXG4gIGNvbnN0IGNvbnRlbnRXaWR0aCA9IHRlcm1pbmFsV2lkdGggLSAyIC0gY29sdW1ucy5sZW5ndGggKiAzO1xuXG4gIC8vIElmIHdlIGRvbid0IGV4Y2VlZCB0aGUgdGVybWluYWwgd2lkdGgsIGRvIG5vdGhpbmdcbiAgaWYgKHN1bShjb2x1bW5zKSA8PSBjb250ZW50V2lkdGgpIHsgcmV0dXJuIGNvbHVtbnM7IH1cblxuICBjb25zdCBmYWlyU2hhcmUgPSBNYXRoLm1pbihjb250ZW50V2lkdGggLyBjb2x1bW5zLmxlbmd0aCk7XG4gIGNvbnN0IHNtYWxsQ29sdW1ucyA9IGNvbHVtbnMuZmlsdGVyKHcgPT4gdyA8IGZhaXJTaGFyZSk7XG5cbiAgbGV0IGRpc3RyaWJ1dGFibGVXaWR0aCA9IGNvbnRlbnRXaWR0aCAtIHN1bShzbWFsbENvbHVtbnMpO1xuICBjb25zdCBmYWlyRGlzdHJpYnV0YWJsZSA9IE1hdGguZmxvb3IoZGlzdHJpYnV0YWJsZVdpZHRoIC8gKGNvbHVtbnMubGVuZ3RoIC0gc21hbGxDb2x1bW5zLmxlbmd0aCkpO1xuXG4gIGNvbnN0IHJldCA9IG5ldyBBcnJheTxudW1iZXI+KCk7XG4gIGZvciAoY29uc3QgcmVxdWVzdGVkV2lkdGggb2YgY29sdW1ucykge1xuICAgIGlmIChyZXF1ZXN0ZWRXaWR0aCA8IGZhaXJTaGFyZSkge1xuICAgICAgLy8gU21hbGwgY29sdW1uIGdldHMgd2hhdCB0aGV5IHdhbnRcbiAgICAgIHJldC5wdXNoKHJlcXVlc3RlZFdpZHRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTGFzdCBjb2x1bW4gZ2V0cyBhbGwgcmVtYWluaW5nLCBvdGhlcndpc2UgZ2V0IGZhaXIgcmVkaXN0IHNoYXJlXG4gICAgICBjb25zdCB3aWR0aCA9IGRpc3RyaWJ1dGFibGVXaWR0aCA8IDIgKiBmYWlyRGlzdHJpYnV0YWJsZSA/IGRpc3RyaWJ1dGFibGVXaWR0aCA6IGZhaXJEaXN0cmlidXRhYmxlO1xuICAgICAgcmV0LnB1c2god2lkdGgpO1xuICAgICAgZGlzdHJpYnV0YWJsZVdpZHRoIC09IHdpZHRoO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIHN1bSh4czogbnVtYmVyW10pOiBudW1iZXIge1xuICBsZXQgdG90YWwgPSAwO1xuICBmb3IgKGNvbnN0IHggb2YgeHMpIHtcbiAgICB0b3RhbCArPSB4O1xuICB9XG4gIHJldHVybiB0b3RhbDtcbn1cblxuLy8gV2hhdCBjb2xvciB0aGUgdGFibGUgaXMgZ29pbmcgdG8gYmVcbmNvbnN0IHRhYmxlQ29sb3IgPSBjaGFsay5ncmF5O1xuXG4vLyBVbmljb2RlIHRhYmxlIGNoYXJhY3RlcnMgd2l0aCBhIGNvbG9yXG5jb25zdCBUQUJMRV9CT1JERVJfQ0hBUkFDVEVSUyA9IHtcbiAgdG9wQm9keTogdGFibGVDb2xvcign4pSAJyksXG4gIHRvcEpvaW46IHRhYmxlQ29sb3IoJ+KUrCcpLFxuICB0b3BMZWZ0OiB0YWJsZUNvbG9yKCfilIwnKSxcbiAgdG9wUmlnaHQ6IHRhYmxlQ29sb3IoJ+KUkCcpLFxuICBib3R0b21Cb2R5OiB0YWJsZUNvbG9yKCfilIAnKSxcbiAgYm90dG9tSm9pbjogdGFibGVDb2xvcign4pS0JyksXG4gIGJvdHRvbUxlZnQ6IHRhYmxlQ29sb3IoJ+KUlCcpLFxuICBib3R0b21SaWdodDogdGFibGVDb2xvcign4pSYJyksXG4gIGJvZHlMZWZ0OiB0YWJsZUNvbG9yKCfilIInKSxcbiAgYm9keVJpZ2h0OiB0YWJsZUNvbG9yKCfilIInKSxcbiAgYm9keUpvaW46IHRhYmxlQ29sb3IoJ+KUgicpLFxuICBqb2luQm9keTogdGFibGVDb2xvcign4pSAJyksXG4gIGpvaW5MZWZ0OiB0YWJsZUNvbG9yKCfilJwnKSxcbiAgam9pblJpZ2h0OiB0YWJsZUNvbG9yKCfilKQnKSxcbiAgam9pbkpvaW46IHRhYmxlQ29sb3IoJ+KUvCcpLFxufTtcbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZm9ybWF0LXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUMvQiwrQ0FBdUM7QUFDdkMsK0JBQStCO0FBRS9COzs7O0dBSUc7QUFDSCxTQUFnQixXQUFXLENBQUMsS0FBaUIsRUFBRSxPQUEyQjtJQUN4RSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFO1FBQ3hCLE1BQU0sRUFBRSx1QkFBdUI7UUFDL0IsT0FBTyxFQUFFLGlCQUFpQixDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3JHLGtCQUFrQixFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDM0IsaUdBQWlHO1lBQ2pHLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksS0FBSyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDMUYsQ0FBQztLQUNGLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUNqQixDQUFDO0FBVEQsa0NBU0M7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxXQUFXLENBQUMsSUFBYyxFQUFFLElBQWM7SUFDakQsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLE1BQTRCO0lBQ3JELElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQUMsT0FBTyxTQUFTLENBQUM7SUFBQyxDQUFDO0lBRS9DLE1BQU0sR0FBRyxHQUFnRCxFQUFFLENBQUM7SUFDNUQsTUFBTSxDQUFD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QUFDO0lBQ3hCLE9BQU8sRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3hCLE9BQU8sRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3hCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3pCLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzNCLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzNCLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzVCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3pCLFNBQVMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzFCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3pCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3pCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3pCLFNBQVMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzFCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0NBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgc3RyaW5nV2lkdGggZnJvbSAnc3RyaW5nLXdpZHRoJztcbmltcG9ydCAqIGFzIHRhYmxlIGZyb20gJ3RhYmxlJztcblxuLyoqXG4gKiBSZW5kZXIgYSB0d28tZGltZW5zaW9uYWwgYXJyYXkgdG8gYSB2aXN1YWxseSBhdHRyYWN0aXZlIHRhYmxlXG4gKlxuICogRmlyc3Qgcm93IGlzIGNvbnNpZGVyZWQgdGhlIHRhYmxlIGhlYWRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFRhYmxlKGNlbGxzOiBzdHJpbmdbXVtdLCBjb2x1bW5zOiBudW1iZXIgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICByZXR1cm4gdGFibGUudGFibGUoY2VsbHMsIHtcbiAgICBib3JkZXI6IFRBQkxFX0JPUkRFUl9DSEFSQUNURVJTLFxuICAgIGNvbHVtbnM6IGJ1aWxkQ29sdW1uQ29uZmlnKGNvbHVtbnMgIT09IHVuZGVmaW5lZCA/IGNhbGN1bGF0ZUNvbHVtbldpZHRocyhjZWxscywgY29sdW1ucykgOiB1bmRlZmluZWQpLFxuICAgIGRyYXdIb3Jpem9udGFsTGluZTogKGxpbmUpID0+IHtcbiAgICAgIC8vIE51bWJlcmluZyBsaWtlIHRoaXM6IFtsaW5lIDBdIFtoZWFkZXIgPSByb3dbMF1dIFtsaW5lIDFdIFtyb3cgMV0gW2xpbmUgMl0gW2NvbnRlbnQgMl0gW2xpbmUgM11cbiAgICAgIHJldHVybiAobGluZSA8IDIgfHwgbGluZSA9PT0gY2VsbHMubGVuZ3RoKSB8fCBsaW5lQmV0d2VlbihjZWxsc1tsaW5lIC0gMV0sIGNlbGxzW2xpbmVdKTtcbiAgICB9LFxuICB9KS50cmltUmlnaHQoKTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHdlIHNob3VsZCBkcmF3IGEgbGluZSBiZXR3ZWVuIHR3byByb3dzXG4gKlxuICogRHJhdyBob3Jpem9udGFsIGxpbmUgaWYgMm5kIGNvbHVtbiB2YWx1ZXMgYXJlIGRpZmZlcmVudC5cbiAqL1xuZnVuY3Rpb24gbGluZUJldHdlZW4ocm93QTogc3RyaW5nW10sIHJvd0I6IHN0cmluZ1tdKSB7XG4gIHJldHVybiByb3dBWzFdICE9PSByb3dCWzFdO1xufVxuXG5mdW5jdGlvbiBidWlsZENvbHVtbkNvbmZpZyh3aWR0aHM6IG51bWJlcltdIHwgdW5kZWZpbmVkKTogeyBbaW5kZXg6IG51bWJlcl06IHRhYmxlLkNvbHVtblVzZXJDb25maWcgfSB8IHVuZGVmaW5lZCB7XG4gIGlmICh3aWR0aHMgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG5cbiAgY29uc3QgcmV0OiB7IFtpbmRleDogbnVtYmVyXTogdGFibGUuQ29sdW1uVXNlckNvbmZpZyB9ID0ge307XG4gIHdpZHRocy5mb3JFYWNoKCh3aWR0aCwgaSkgPT4ge1xuICAgIGlmICh3aWR0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldFtpXSA9IHsgd2lkdGggfTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgY29sdW1uIHdpZHRocyBnaXZlbiBhIHRlcm1pbmFsIHdpZHRoXG4gKlxuICogV2UgZG8gdGhpcyBieSBjYWxjdWxhdGluZyBhIGZhaXIgc2hhcmUgZm9yIGV2ZXJ5IGNvbHVtbi4gRXh0cmEgd2lkdGggc21hbGxlclxuICogdGhhbiB0aGUgZmFpciBzaGFyZSBpcyBldmVubHkgZGlzdHJpYnV0ZWQgb3ZlciBhbGwgY29sdW1ucyB0aGF0IGV4Y2VlZCB0aGVpclxuICogZmFpciBzaGFyZS5cbiAqL1xuZnVuY3Rpb24gY2FsY3VsYXRlQ29sdW1uV2lkdGhzKHJvd3M6IHN0cmluZ1tdW10sIHRlcm1pbmFsV2lkdGg6IG51bWJlcik6IG51bWJlcltdIHtcbiAgLy8gVGhlIHRlcm1pbmFsIGlzIHNvbWV0aW1lcyByZXBvcnRlZCB0byBiZSAwLiBBbHNvIGlmIHRoZSB0ZXJtaW5hbCBpcyBWRVJZIG5hcnJvdyxcbiAgLy8ganVzdCBhc3N1bWUgYSByZWFzb25hYmxlIG1pbmltdW0gc2l6ZS5cbiAgdGVybWluYWxXaWR0aCA9IE1hdGgubWF4KHRlcm1pbmFsV2lkdGgsIDQwKTtcblxuICAvLyB1c2UgJ3N0cmluZy13aWR0aCcgdG8gbm90IGNvdW50IEFOU0kgY2hhcnMgYXMgYWN0dWFsIGNoYXJhY3RlciB3aWR0aFxuICBjb25zdCBjb2x1bW5zID0gcm93c1swXS5tYXAoKF8sIGkpID0+IE1hdGgubWF4KC4uLnJvd3MubWFwKHJvdyA9PiBzdHJpbmdXaWR0aChTdHJpbmcocm93W2ldKSkpKSk7XG5cbiAgLy8gSWYgd2UgaGF2ZSBubyB0ZXJtaW5hbCB3aWR0aCwgZG8gbm90aGluZ1xuICBjb25zdCBjb250ZW50V2lkdGggPSB0ZXJtaW5hbFdpZHRoIC0gMiAtIGNvbHVtbnMubGVuZ3RoICogMztcblxuICAvLyBJZiB3ZSBkb24ndCBleGNlZWQgdGhlIHRlcm1pbmFsIHdpZHRoLCBkbyBub3RoaW5nXG4gIGlmIChzdW0oY29sdW1ucykgPD0gY29udGVudFdpZHRoKSB7IHJldHVybiBjb2x1bW5zOyB9XG5cbiAgY29uc3QgZmFpclNoYXJlID0gTWF0aC5taW4oY29udGVudFdpZHRoIC8gY29sdW1ucy5sZW5ndGgpO1xuICBjb25zdCBzbWFsbENvbHVtbnMgPSBjb2x1bW5zLmZpbHRlcih3ID0+IHcgPCBmYWlyU2hhcmUpO1xuXG4gIGxldCBkaXN0cmlidXRhYmxlV2lkdGggPSBjb250ZW50V2lkdGggLSBzdW0oc21hbGxDb2x1bW5zKTtcbiAgY29uc3QgZmFpckRpc3RyaWJ1dGFibGUgPSBNYXRoLmZsb29yKGRpc3RyaWJ1dGFibGVXaWR0aCAvIChjb2x1bW5zLmxlbmd0aCAtIHNtYWxsQ29sdW1ucy5sZW5ndGgpKTtcblxuICBjb25zdCByZXQgPSBuZXcgQXJyYXk8bnVtYmVyPigpO1xuICBmb3IgKGNvbnN0IHJlcXVlc3RlZFdpZHRoIG9mIGNvbHVtbnMpIHtcbiAgICBpZiAocmVxdWVzdGVkV2lkdGggPCBmYWlyU2hhcmUpIHtcbiAgICAgIC8vIFNtYWxsIGNvbHVtbiBnZXRzIHdoYXQgdGhleSB3YW50XG4gICAgICByZXQucHVzaChyZXF1ZXN0ZWRXaWR0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIExhc3QgY29sdW1uIGdldHMgYWxsIHJlbWFpbmluZywgb3RoZXJ3aXNlIGdldCBmYWlyIHJlZGlzdCBzaGFyZVxuICAgICAgY29uc3Qgd2lkdGggPSBkaXN0cmlidXRhYmxlV2lkdGggPCAyICogZmFpckRpc3RyaWJ1dGFibGUgPyBkaXN0cmlidXRhYmxlV2lkdGggOiBmYWlyRGlzdHJpYnV0YWJsZTtcbiAgICAgIHJldC5wdXNoKHdpZHRoKTtcbiAgICAgIGRpc3RyaWJ1dGFibGVXaWR0aCAtPSB3aWR0aDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBzdW0oeHM6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgbGV0IHRvdGFsID0gMDtcbiAgZm9yIChjb25zdCB4IG9mIHhzKSB7XG4gICAgdG90YWwgKz0geDtcbiAgfVxuICByZXR1cm4gdG90YWw7XG59XG5cbi8vIFdoYXQgY29sb3IgdGhlIHRhYmxlIGlzIGdvaW5nIHRvIGJlXG5jb25zdCB0YWJsZUNvbG9yID0gY2hhbGsuZ3JheTtcblxuLy8gVW5pY29kZSB0YWJsZSBjaGFyYWN0ZXJzIHdpdGggYSBjb2xvclxuY29uc3QgVEFCTEVfQk9SREVSX0NIQVJBQ1RFUlMgPSB7XG4gIHRvcEJvZHk6IHRhYmxlQ29sb3IoJ+KUgCcpLFxuICB0b3BKb2luOiB0YWJsZUNvbG9yKCfilKwnKSxcbiAgdG9wTGVmdDogdGFibGVDb2xvcign4pSMJyksXG4gIHRvcFJpZ2h0OiB0YWJsZUNvbG9yKCfilJAnKSxcbiAgYm90dG9tQm9keTogdGFibGVDb2xvcign4pSAJyksXG4gIGJvdHRvbUpvaW46IHRhYmxlQ29sb3IoJ+KUtCcpLFxuICBib3R0b21MZWZ0OiB0YWJsZUNvbG9yKCfilJQnKSxcbiAgYm90dG9tUmlnaHQ6IHRhYmxlQ29sb3IoJ+KUmCcpLFxuICBib2R5TGVmdDogdGFibGVDb2xvcign4pSCJyksXG4gIGJvZHlSaWdodDogdGFibGVDb2xvcign4pSCJyksXG4gIGJvZHlKb2luOiB0YWJsZUNvbG9yKCfilIInKSxcbiAgam9pbkJvZHk6IHRhYmxlQ29sb3IoJ+KUgCcpLFxuICBqb2luTGVmdDogdGFibGVDb2xvcign4pScJyksXG4gIGpvaW5SaWdodDogdGFibGVDb2xvcign4pSkJyksXG4gIGpvaW5Kb2luOiB0YWJsZUNvbG9yKCfilLwnKSxcbn07XG4iXX0= /***/ }), @@ -10695,7 +11195,7 @@ function _diffStrings(oldStr, newStr, context) { return indent; } } -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZm9ybWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUE4QjtBQUM5QiwrQkFBK0I7QUFFL0Isc0NBQXdDO0FBQ3hDLG1EQUF1RztBQUN2RyxpREFBNkM7QUFJN0MsY0FBYztBQUNkLE1BQU0saUJBQWlCLEdBQUcsY0FBYyxDQUFDO0FBRXpDLDBEQUEwRDtBQUMxRCxNQUFNLEVBQUUsZUFBZSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBTzVDOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQy9CLE1BQW9CLEVBQ3BCLFlBQTBCLEVBQzFCLG1CQUFvRCxFQUFFLEVBQ3RELFVBQWtCLENBQUM7SUFDbkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVqRixJQUFJLFlBQVksQ0FBQyx3QkFBd0IsSUFBSSxZQUFZLENBQUMsU0FBUyxJQUFJLFlBQVksQ0FBQyxXQUFXLEVBQUU7UUFDL0YsU0FBUyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsRUFBRSwwQkFBMEIsRUFBRSxZQUFZLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUMxSCxTQUFTLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0UsU0FBUyxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25GLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0tBQ2hDO0lBRUQsK0JBQStCLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBRXpELFNBQVMsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUN2RSxTQUFTLENBQUMsYUFBYSxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3RFLFNBQVMsQ0FBQyxhQUFhLENBQUMsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxXQUFXLEVBQUUsVUFBVSxFQUFFLFlBQVksQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLHdCQUF3QixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzdILFNBQVMsQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbkUsU0FBUyxDQUFDLGFBQWEsQ0FBQyxlQUFlLEVBQUUsU0FBUyxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM1RSxDQUFDO0FBeEJELDhDQXdCQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IscUJBQXFCLENBQ25DLE1BQTZCLEVBQzdCLFlBQTBCLEVBQzFCLG1CQUFvRCxFQUFFLEVBQ3RELE9BQWdCO0lBQ2hCLE1BQU0sU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFFakYsK0JBQStCLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFSRCxzREFRQztBQUVELFNBQVMsK0JBQStCLENBQUMsU0FBb0IsRUFBRSxZQUEwQjtJQUN2RixJQUFJLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxVQUFVLElBQUksQ0FBQyxZQUFZLENBQUMsb0JBQW9CLENBQUMsVUFBVSxFQUFFO1FBQUUsT0FBTztLQUFFO0lBQ3JHLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDcEQsU0FBUyxDQUFDLDBCQUEwQixDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0lBRXhFLFNBQVMsQ0FBQyxPQUFPLENBQUMsZ0hBQWdILENBQUMsQ0FBQztJQUNwSSxTQUFTLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztBQUNqQyxDQUFDO0FBRUQsTUFBTSxRQUFRLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNwQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xDLE1BQU0sTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkMsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNqQyxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBRWpDLE1BQU0sU0FBUztJQUNiLFlBQ21CLE1BQW9CLEVBQ3BCLGdCQUFpRCxFQUNsRSxJQUFtQixFQUNGLFVBQWtCLENBQUM7UUFIbkIsV0FBTSxHQUFOLE1BQU0sQ0FBYztRQUNwQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQWlDO1FBRWpELFlBQU8sR0FBUCxPQUFPLENBQVk7UUFDcEMsa0VBQWtFO1FBQ2xFLElBQUksSUFBSSxFQUFFO1lBQ1IsSUFBSSxDQUFDLHNCQUFzQixDQUFDLElBQUksQ0FBQyxDQUFDO1NBQ25DO0lBQ0gsQ0FBQztJQUVNLEtBQUssQ0FBQyxHQUFXLEVBQUUsR0FBRyxJQUFXO1FBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBQSxhQUFNLEVBQUMsR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRU0sT0FBTyxDQUFDLEdBQVcsRUFBRSxHQUFHLElBQVc7UUFDeEMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFBLGFBQU0sRUFBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO0lBQy9ELENBQUM7SUFFTSxhQUFhLENBQ2xCLEtBQWEsRUFDYixTQUFpQixFQUNqQixVQUFzQyxFQUN0QyxZQUF5RCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUV6RixJQUFJLFVBQVUsQ0FBQyxlQUFlLEtBQUssQ0FBQyxFQUFFO1lBQ3BDLE9BQU87U0FDUjtRQUVELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQixVQUFVLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzNFLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFFTSxrQkFBa0IsQ0FBQyxLQUFhO1FBQ3JDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDakIsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksZ0JBQWdCLENBQUMsSUFBWSxFQUFFLFNBQWlCLEVBQUUsSUFBaUM7UUFDeEYsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFBRSxPQUFPO1NBQUU7UUFFM0MsSUFBSSxLQUFLLENBQUM7UUFFVixNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzVELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUQsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQ25CLEtBQUssR0FBRyxRQUFRLENBQUM7U0FDbEI7YUFBTSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDeEIsS0FBSyxHQUFHLEdBQUcsUUFBUSxPQUFPLFFBQVEsRUFBRSxDQUFDO1NBQ3RDO2FBQU0sSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFO1lBQ3pCLEtBQUssR0FBRyxRQUFRLENBQUM7U0FDbEI7UUFFRCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLEtBQUssS0FBSyxFQUFFLENBQUMsQ0FBQztJQUM1RyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSx3QkFBd0IsQ0FBQyxLQUFhLEVBQUUsU0FBaUIsRUFBRSxJQUF3QjtRQUN4RixJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsRUFBRTtZQUFFLE9BQU87U0FBRTtRQUVsQyxNQUFNLFlBQVksR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBRWxGLG1DQUFtQztRQUNuQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUUxSyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDakIsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQztZQUM3QyxJQUFJLGNBQWMsR0FBRyxDQUFDLENBQUM7WUFDdkIsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRTtnQkFDekMsY0FBYyxJQUFJLENBQUMsQ0FBQztnQkFDcEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLGNBQWMsS0FBSyxlQUFlLENBQUMsQ0FBQztZQUN4RSxDQUFDLENBQUMsQ0FBQztTQUNKO0lBQ0gsQ0FBQztJQUVNLG9CQUFvQixDQUFDLElBQXdCO1FBQ2xELElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUFFLE9BQU8sTUFBTSxDQUFDO1NBQUU7UUFFckMsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTSxZQUFZLENBQUksSUFBbUI7UUFDeEMsSUFBSSxJQUFJLENBQUMsVUFBVSxFQUFFO1lBQUUsT0FBTyxRQUFRLENBQUM7U0FBRTtRQUN6QyxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFBRSxPQUFPLE1BQU0sQ0FBQztTQUFFO1FBQ3JDLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRTtZQUFFLE9BQU8sT0FBTyxDQUFDO1NBQUU7UUFDdkMsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFdBQVcsQ0FBQyxLQUFVLEVBQUUsS0FBOEI7UUFDM0QsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFO1lBQUUsT0FBTyxTQUFTLENBQUM7U0FBRTtRQUN4QyxJQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtZQUFFLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQUU7UUFDdkQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7O09BR0c7SUFDSSxZQUFZLENBQUMsTUFBc0I7UUFDeEMsUUFBUSxNQUFNLEVBQUU7WUFDZCxLQUFLLDhCQUFjLENBQUMsV0FBVztnQkFDN0IsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELEtBQUssOEJBQWMsQ0FBQyxZQUFZO2dCQUM5QixPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN4RCxLQUFLLDhCQUFjLENBQUMsWUFBWTtnQkFDOUIsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDeEQsS0FBSyw4QkFBYyxDQUFDLFdBQVc7Z0JBQzdCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDOUMsS0FBSyw4QkFBYyxDQUFDLFdBQVc7Z0JBQzdCLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7WUFDNUMsS0FBSyw4QkFBYyxDQUFDLFdBQVcsQ0FBQztZQUNoQyxLQUFLLDhCQUFjLENBQUMsV0FBVyxDQUFDO1lBQ2hDLEtBQUssOEJBQWMsQ0FBQyxTQUFTO2dCQUMzQixPQUFPLEVBQUUsQ0FBQyxDQUFDLCtCQUErQjtTQUM3QztJQUNILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLGNBQWMsQ0FBQyxJQUFZLEVBQUUsSUFBcUIsRUFBRSxJQUFhO1FBQ3RFLElBQUksY0FBYyxHQUFHLEVBQUUsQ0FBQztRQUN4QixJQUFJLElBQUEsb0NBQW9CLEVBQUMsSUFBSSxDQUFDLEVBQUU7WUFDOUIsSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLDhCQUFjLENBQUMsV0FBVyxFQUFFO2dCQUNwRCxjQUFjLEdBQUcsMEJBQTBCLENBQUM7YUFDN0M7aUJBQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxLQUFLLDhCQUFjLENBQUMsWUFBWSxFQUFFO2dCQUM1RCxjQUFjLEdBQUcseUJBQXlCLENBQUM7YUFDNUM7U0FDRjtRQUNELElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsY0FBYyxDQUFDLENBQUM7UUFDakgsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDckYsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxnQkFBZ0IsQ0FBQyxTQUFjLEVBQUUsU0FBYyxFQUFFLFVBQWtCO1FBQ3hFLElBQUksQ0FBQyxPQUFPLFNBQVMsS0FBSyxPQUFPLFNBQVMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxJQUFJLE9BQU8sU0FBUyxLQUFLLFFBQVEsRUFBRTtZQUN6SSxJQUFJLFNBQVMsS0FBSyxTQUFTLElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRTtnQkFDdEQsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxFQUFFO29CQUNsRSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ2xELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDbEQsTUFBTSxJQUFJLEdBQUcsWUFBWSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO29CQUN4RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTt3QkFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO3FCQUN0RTtpQkFDRjtxQkFBTTtvQkFDTCxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxVQUFVLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO29CQUN6RixJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO2lCQUM3RjthQUNGO2lCQUFNLElBQUksU0FBUyxLQUFLLFNBQVMsQ0FBQyxnQ0FBZ0MsRUFBRTtnQkFDbkUsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQzlFO2lCQUFNLDZEQUE2RCxDQUFDO2dCQUNuRSxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7YUFDaEY7WUFDRCxPQUFPO1NBQ1I7UUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDL0MsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkQsTUFBTSxJQUFJLEdBQUcsSUFBSSxLQUFLLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUEsZ0JBQVMsRUFBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUM3RixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztRQUN0QyxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRTtZQUN0QixNQUFNLFFBQVEsR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDaEMsTUFBTSxRQUFRLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2hDLE1BQU0sVUFBVSxHQUFHLEdBQUcsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO1lBQy9DLElBQUksUUFBUSxLQUFLLFNBQVMsSUFBSSxRQUFRLEtBQUssU0FBUyxFQUFFO2dCQUNwRCxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDakgsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsR0FBRyxVQUFVLE1BQU0sR0FBRyxLQUFLLE9BQU8sQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDO2FBQzdGO2lCQUFNLElBQUksUUFBUSxLQUFLLFNBQVMsQ0FBQywrQkFBK0IsRUFBRTtnQkFDakUsSUFBSSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO2FBQy9GO2lCQUFNLDBEQUEwRCxDQUFDO2dCQUNoRSxJQUFJLENBQUMsS0FBSyxDQUFDLHVCQUF1QixFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7YUFDOUY7U0FDRjtJQUNILENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxTQUFTLENBQUMsUUFBeUIsRUFBRSxRQUF5QjtRQUNuRSxJQUFJLFFBQVEsS0FBSyxTQUFTLElBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtZQUNwRCxPQUFPLE1BQU0sQ0FBQztTQUNmO2FBQU0sSUFBSSxRQUFRLEtBQUssU0FBUyxDQUFDLDhCQUE4QixFQUFFO1lBQ2hFLE9BQU8sT0FBTyxDQUFDO1NBQ2hCO2FBQU0sMkRBQTJELENBQUM7WUFDakUsT0FBTyxRQUFRLENBQUM7U0FDakI7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxzQkFBc0IsQ0FBQyxZQUEwQjtRQUN0RCxLQUFLLE1BQU0sQ0FBQyxTQUFTLEVBQUUsWUFBWSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEVBQUU7WUFDOUUsSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFBRSxTQUFTO2FBQUU7WUFFaEMsTUFBTSxlQUFlLEdBQUcsWUFBWSxDQUFDLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzdFLElBQUksZUFBZSxJQUFJLENBQUMsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLGdCQUFnQixDQUFDLEVBQUU7Z0JBQzVELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsR0FBRyxlQUFlLENBQUM7YUFDcEQ7WUFFRCxNQUFNLGVBQWUsR0FBRyxZQUFZLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDN0UsSUFBSSxlQUFlLElBQUksQ0FBQyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsRUFBRTtnQkFDNUQsSUFBSSxDQUFDLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxHQUFHLGVBQWUsQ0FBQzthQUNwRDtTQUNGO0lBQ0gsQ0FBQztJQUVNLGVBQWUsQ0FBQyxTQUFpQjtRQUN0QywwQ0FBMEM7UUFDMUMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLHVCQUF1QixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRTNELElBQUksVUFBVSxFQUFFO1lBQ2QsT0FBTyxHQUFHLFVBQVUsSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7U0FDakQ7UUFFRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRU0sdUJBQXVCLENBQUMsU0FBaUI7UUFDOUMsMENBQTBDO1FBQzFDLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM5QyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFOUM7Ozs7V0FJRztRQUNILFNBQVMsYUFBYSxDQUFDLENBQVM7WUFDOUIsSUFBSSxDQUFDLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNyQixDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNoQjtZQUVELElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekIsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDcEIsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBRXZCLHNHQUFzRztnQkFDdEcsSUFBSSxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtvQkFDcEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQ3JDLElBQUksSUFBSSxLQUFLLFVBQVUsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFO3dCQUM3QyxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztxQkFDMUM7aUJBQ0Y7Z0JBRUQsQ0FBQyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7YUFDckI7WUFDRCxPQUFPLENBQUMsQ0FBQztRQUNYLENBQUM7SUFDSCxDQUFDO0lBRU0sZ0JBQWdCLENBQUMsT0FBbUI7UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFBRSxPQUFPO1NBQUU7UUFFcEMsSUFBSSxPQUFPLENBQUMsVUFBVSxDQUFDLFVBQVUsRUFBRTtZQUNqQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsdUJBQXVCLENBQUMsQ0FBQztZQUNqRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUEsMEJBQVcsRUFBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUMsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7U0FDbEg7UUFFRCxJQUFJLE9BQU8sQ0FBQyxlQUFlLENBQUMsVUFBVSxFQUFFO1lBQ3RDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1lBQzlDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBQSwwQkFBVyxFQUFDLElBQUksQ0FBQyw4QkFBOEIsQ0FBQyxPQUFPLENBQUMsd0JBQXdCLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztTQUN2SDtJQUNILENBQUM7SUFFTSwwQkFBMEIsQ0FBQyxPQUE2QjtRQUM3RCxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRTtZQUFFLE9BQU87U0FBRTtRQUVwQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUEsMEJBQVcsRUFBQyxJQUFJLENBQUMsOEJBQThCLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQ3pHLENBQUM7SUFFTSw4QkFBOEIsQ0FBQyxJQUFnQjtRQUNwRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzlFLENBQUM7SUFFRDs7T0FFRztJQUNJLDBCQUEwQixDQUFDLE1BQWM7UUFDOUMsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLDJCQUEyQixFQUFFLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMzRSxPQUFPLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUM7UUFDdEYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUF1QkQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLFlBQVksQ0FBQyxNQUFjLEVBQUUsTUFBYyxFQUFFLE9BQWU7SUFDbkUsTUFBTSxLQUFLLEdBQVUsZUFBZSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztJQUMxRixNQUFNLE1BQU0sR0FBRyxJQUFJLEtBQUssRUFBVSxDQUFDO0lBQ25DLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRTtRQUM5QixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzFHLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDM0MsS0FBSyxNQUFNLElBQUksSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQzdCLHdDQUF3QztZQUN4QyxJQUFJLElBQUksS0FBSyw4QkFBOEIsRUFBRTtnQkFBRSxTQUFTO2FBQUU7WUFDMUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUM5QixNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxVQUFVLENBQUMsQ0FBQztZQUN4QyxRQUFRLE1BQU0sRUFBRTtnQkFDZCxLQUFLLEdBQUc7b0JBQ04sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDO29CQUNsQyxNQUFNO2dCQUNSLEtBQUssR0FBRztvQkFDTixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDNUQsTUFBTTtnQkFDUixLQUFLLEdBQUc7b0JBQ04sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ3pELE1BQU07Z0JBQ1I7b0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsTUFBTSxnQkFBZ0IsSUFBSSxHQUFHLENBQUMsQ0FBQzthQUM3RTtTQUNGO0tBQ0Y7SUFDRCxPQUFPLE1BQU0sQ0FBQztJQUVkLFNBQVMsV0FBVyxDQUFDLEtBQWU7UUFDbEMsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1FBQ3JDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1lBQ3hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNwQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFO29CQUMxQixNQUFNLEdBQUcsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztvQkFDekMsTUFBTTtpQkFDUDthQUNGO1NBQ0Y7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHsgRGlmZmVyZW5jZUNvbGxlY3Rpb24sIFRlbXBsYXRlRGlmZiB9IGZyb20gJy4vZGlmZi90eXBlcyc7XG5pbXBvcnQgeyBkZWVwRXF1YWwgfSBmcm9tICcuL2RpZmYvdXRpbCc7XG5pbXBvcnQgeyBEaWZmZXJlbmNlLCBpc1Byb3BlcnR5RGlmZmVyZW5jZSwgUmVzb3VyY2VEaWZmZXJlbmNlLCBSZXNvdXJjZUltcGFjdCB9IGZyb20gJy4vZGlmZi10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBmb3JtYXRUYWJsZSB9IGZyb20gJy4vZm9ybWF0LXRhYmxlJztcbmltcG9ydCB7IElhbUNoYW5nZXMgfSBmcm9tICcuL2lhbS9pYW0tY2hhbmdlcyc7XG5pbXBvcnQgeyBTZWN1cml0eUdyb3VwQ2hhbmdlcyB9IGZyb20gJy4vbmV0d29yay9zZWN1cml0eS1ncm91cC1jaGFuZ2VzJztcblxuLy8gZnJvbSBjeC1hcGlcbmNvbnN0IFBBVEhfTUVUQURBVEFfS0VZID0gJ2F3czpjZGs6cGF0aCc7XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHMgKi9cbmNvbnN0IHsgc3RydWN0dXJlZFBhdGNoIH0gPSByZXF1aXJlKCdkaWZmJyk7XG4vKiBlc2xpbnQtZW5hYmxlICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0U3RyZWFtIGV4dGVuZHMgTm9kZUpTLldyaXRhYmxlU3RyZWFtIHtcbiAgY29sdW1ucz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIHRlbXBsYXRlIGRpZmZlcmVuY2VzIHRvIHRoZSBwcm9jZXNzJyBjb25zb2xlLlxuICpcbiAqIEBwYXJhbSBzdHJlYW0gICAgICAgICAgIFRoZSBJTyBzdHJlYW0gd2hlcmUgdG8gb3V0cHV0IHRoZSByZW5kZXJlZCBkaWZmLlxuICogQHBhcmFtIHRlbXBsYXRlRGlmZiAgICAgVGVtcGxhdGVEaWZmIHRvIGJlIHJlbmRlcmVkIHRvIHRoZSBjb25zb2xlLlxuICogQHBhcmFtIGxvZ2ljYWxUb1BhdGhNYXAgQSBtYXAgZnJvbSBsb2dpY2FsIElEIHRvIGNvbnN0cnVjdCBwYXRoLiBVc2VmdWwgaW5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgdGhlcmUgaXMgbm8gYXdzOmNkazpwYXRoIG1ldGFkYXRhIGluIHRoZSB0ZW1wbGF0ZS5cbiAqIEBwYXJhbSBjb250ZXh0ICAgICAgICAgIHRoZSBudW1iZXIgb2YgY29udGV4dCBsaW5lcyB0byB1c2UgaW4gYXJiaXRyYXJ5IEpTT04gZGlmZiAoZGVmYXVsdHMgdG8gMykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREaWZmZXJlbmNlcyhcbiAgc3RyZWFtOiBGb3JtYXRTdHJlYW0sXG4gIHRlbXBsYXRlRGlmZjogVGVtcGxhdGVEaWZmLFxuICBsb2dpY2FsVG9QYXRoTWFwOiB7IFtsb2dpY2FsSWQ6IHN0cmluZ106IHN0cmluZyB9ID0ge30sXG4gIGNvbnRleHQ6IG51bWJlciA9IDMpIHtcbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEZvcm1hdHRlcihzdHJlYW0sIGxvZ2ljYWxUb1BhdGhNYXAsIHRlbXBsYXRlRGlmZiwgY29udGV4dCk7XG5cbiAgaWYgKHRlbXBsYXRlRGlmZi5hd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24gfHwgdGVtcGxhdGVEaWZmLnRyYW5zZm9ybSB8fCB0ZW1wbGF0ZURpZmYuZGVzY3JpcHRpb24pIHtcbiAgICBmb3JtYXR0ZXIucHJpbnRTZWN0aW9uSGVhZGVyKCdUZW1wbGF0ZScpO1xuICAgIGZvcm1hdHRlci5mb3JtYXREaWZmZXJlbmNlKCdBV1NUZW1wbGF0ZUZvcm1hdFZlcnNpb24nLCAnQVdTVGVtcGxhdGVGb3JtYXRWZXJzaW9uJywgdGVtcGxhdGVEaWZmLmF3c1RlbXBsYXRlRm9ybWF0VmVyc2lvbik7XG4gICAgZm9ybWF0dGVyLmZvcm1hdERpZmZlcmVuY2UoJ1RyYW5zZm9ybScsICdUcmFuc2Zvcm0nLCB0ZW1wbGF0ZURpZmYudHJhbnNmb3JtKTtcbiAgICBmb3JtYXR0ZXIuZm9ybWF0RGlmZmVyZW5jZSgnRGVzY3JpcHRpb24nLCAnRGVzY3JpcHRpb24nLCB0ZW1wbGF0ZURpZmYuZGVzY3JpcHRpb24pO1xuICAgIGZvcm1hdHRlci5wcmludFNlY3Rpb25Gb290ZXIoKTtcbiAgfVxuXG4gIGZvcm1hdFNlY3VyaXR5Q2hhbmdlc1dpdGhCYW5uZXIoZm9ybWF0dGVyLCB0ZW1wbGF0ZURpZmYpO1xuXG4gIGZvcm1hdHRlci5mb3JtYXRTZWN0aW9uKCdQYXJhbWV0ZXJzJywgJ1BhcmFtZXRlcicsIHRlbXBsYXRlRGlmZi5wYXJhbWV0ZXJzKTtcbiAgZm9ybWF0dGVyLmZvcm1hdFNlY3Rpb24oJ01ldGFkYXRhJywgJ01ldGFkYXRhJywgdGVtcGxhdGVEaWZmLm1ldGFkYXRhKTtcbiAgZm9ybWF0dGVyLmZvcm1hdFNlY3Rpb24oJ01hcHBpbmdzJywgJ01hcHBpbmcnLCB0ZW1wbGF0ZURpZmYubWFwcGluZ3MpO1xuICBmb3JtYXR0ZXIuZm9ybWF0U2VjdGlvbignQ29uZGl0aW9ucycsICdDb25kaXRpb24nLCB0ZW1wbGF0ZURpZmYuY29uZGl0aW9ucyk7XG4gIGZvcm1hdHRlci5mb3JtYXRTZWN0aW9uKCdSZXNvdXJjZXMnLCAnUmVzb3VyY2UnLCB0ZW1wbGF0ZURpZmYucmVzb3VyY2VzLCBmb3JtYXR0ZXIuZm9ybWF0UmVzb3VyY2VEaWZmZXJlbmNlLmJpbmQoZm9ybWF0dGVyKSk7XG4gIGZvcm1hdHRlci5mb3JtYXRTZWN0aW9uKCdPdXRwdXRzJywgJ091dHB1dCcsIHRlbXBsYXRlRGlmZi5vdXRwdXRzKTtcbiAgZm9ybWF0dGVyLmZvcm1hdFNlY3Rpb24oJ090aGVyIENoYW5nZXMnLCAnVW5rbm93bicsIHRlbXBsYXRlRGlmZi51bmtub3duKTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGEgZGlmZiBvZiBzZWN1cml0eSBjaGFuZ2VzIHRvIHRoZSBnaXZlbiBzdHJlYW1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFNlY3VyaXR5Q2hhbmdlcyhcbiAgc3RyZWFtOiBOb2RlSlMuV3JpdGFibGVTdHJlYW0sXG4gIHRlbXBsYXRlRGlmZjogVGVtcGxhdGVEaWZmLFxuICBsb2dpY2FsVG9QYXRoTWFwOiB7IFtsb2dpY2FsSWQ6IHN0cmluZ106IHN0cmluZyB9ID0ge30sXG4gIGNvbnRleHQ/OiBudW1iZXIpIHtcbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEZvcm1hdHRlcihzdHJlYW0sIGxvZ2ljYWxUb1BhdGhNYXAsIHRlbXBsYXRlRGlmZiwgY29udGV4dCk7XG5cbiAgZm9ybWF0U2VjdXJpdHlDaGFuZ2VzV2l0aEJhbm5lcihmb3JtYXR0ZXIsIHRlbXBsYXRlRGlmZik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFNlY3VyaXR5Q2hhbmdlc1dpdGhCYW5uZXIoZm9ybWF0dGVyOiBGb3JtYXR0ZXIsIHRlbXBsYXRlRGlmZjogVGVtcGxhdGVEaWZmKSB7XG4gIGlmICghdGVtcGxhdGVEaWZmLmlhbUNoYW5nZXMuaGFzQ2hhbmdlcyAmJiAhdGVtcGxhdGVEaWZmLnNlY3VyaXR5R3JvdXBDaGFuZ2VzLmhhc0NoYW5nZXMpIHsgcmV0dXJuOyB9XG4gIGZvcm1hdHRlci5mb3JtYXRJYW1DaGFuZ2VzKHRlbXBsYXRlRGlmZi5pYW1DaGFuZ2VzKTtcbiAgZm9ybWF0dGVyLmZvcm1hdFNlY3VyaXR5R3JvdXBDaGFuZ2VzKHRlbXBsYXRlRGlmZi5zZWN1cml0eUdyb3VwQ2hhbmdlcyk7XG5cbiAgZm9ybWF0dGVyLndhcm5pbmcoJyhOT1RFOiBUaGVyZSBtYXkgYmUgc2VjdXJpdHktcmVsYXRlZCBjaGFuZ2VzIG5vdCBpbiB0aGlzIGxpc3QuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzEyOTkpJyk7XG4gIGZvcm1hdHRlci5wcmludFNlY3Rpb25Gb290ZXIoKTtcbn1cblxuY29uc3QgQURESVRJT04gPSBjaGFsay5ncmVlbignWytdJyk7XG5jb25zdCBDT05URVhUID0gY2hhbGsuZ3JleSgnWyBdJyk7XG5jb25zdCBVUERBVEUgPSBjaGFsay55ZWxsb3coJ1t+XScpO1xuY29uc3QgUkVNT1ZBTCA9IGNoYWxrLnJlZCgnWy1dJyk7XG5jb25zdCBJTVBPUlQgPSBjaGFsay5ibHVlKCdb4oaQXScpO1xuXG5jbGFzcyBGb3JtYXR0ZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0cmVhbTogRm9ybWF0U3RyZWFtLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9naWNhbFRvUGF0aE1hcDogeyBbbG9naWNhbElkOiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICBkaWZmPzogVGVtcGxhdGVEaWZmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udGV4dDogbnVtYmVyID0gMykge1xuICAgIC8vIFJlYWQgYWRkaXRpb25hbCBjb25zdHJ1Y3QgcGF0aHMgZnJvbSB0aGUgZGlmZiBpZiBpdCBpcyBzdXBwbGllZFxuICAgIGlmIChkaWZmKSB7XG4gICAgICB0aGlzLnJlYWRDb25zdHJ1Y3RQYXRoc0Zyb20oZGlmZik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHByaW50KGZtdDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHRoaXMuc3RyZWFtLndyaXRlKGNoYWxrLndoaXRlKGZvcm1hdChmbXQsIC4uLmFyZ3MpKSArICdcXG4nKTtcbiAgfVxuXG4gIHB1YmxpYyB3YXJuaW5nKGZtdDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHRoaXMuc3RyZWFtLndyaXRlKGNoYWxrLnllbGxvdyhmb3JtYXQoZm10LCAuLi5hcmdzKSkgKyAnXFxuJyk7XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0U2VjdGlvbjxWLCBUIGV4dGVuZHMgRGlmZmVyZW5jZTxWPj4oXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBlbnRyeVR5cGU6IHN0cmluZyxcbiAgICBjb2xsZWN0aW9uOiBEaWZmZXJlbmNlQ29sbGVjdGlvbjxWLCBUPixcbiAgICBmb3JtYXR0ZXI6ICh0eXBlOiBzdHJpbmcsIGlkOiBzdHJpbmcsIGRpZmY6IFQpID0+IHZvaWQgPSB0aGlzLmZvcm1hdERpZmZlcmVuY2UuYmluZCh0aGlzKSkge1xuXG4gICAgaWYgKGNvbGxlY3Rpb24uZGlmZmVyZW5jZUNvdW50ID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wcmludFNlY3Rpb25IZWFkZXIodGl0bGUpO1xuICAgIGNvbGxlY3Rpb24uZm9yRWFjaERpZmZlcmVuY2UoKGlkLCBkaWZmKSA9PiBmb3JtYXR0ZXIoZW50cnlUeXBlLCBpZCwgZGlmZikpO1xuICAgIHRoaXMucHJpbnRTZWN0aW9uRm9vdGVyKCk7XG4gIH1cblxuICBwdWJsaWMgcHJpbnRTZWN0aW9uSGVhZGVyKHRpdGxlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnByaW50KGNoYWxrLnVuZGVybGluZShjaGFsay5ib2xkKHRpdGxlKSkpO1xuICB9XG5cbiAgcHVibGljIHByaW50U2VjdGlvbkZvb3RlcigpIHtcbiAgICB0aGlzLnByaW50KCcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmludCBhIHNpbXBsZSBkaWZmZXJlbmNlIGZvciBhIGdpdmVuIG5hbWVkIGVudGl0eS5cbiAgICpcbiAgICogQHBhcmFtIGxvZ2ljYWxJZCB0aGUgbmFtZSBvZiB0aGUgZW50aXR5IHRoYXQgaXMgZGlmZmVyZW50LlxuICAgKiBAcGFyYW0gZGlmZiB0aGUgZGlmZmVyZW5jZSB0byBiZSByZW5kZXJlZC5cbiAgICovXG4gIHB1YmxpYyBmb3JtYXREaWZmZXJlbmNlKHR5cGU6IHN0cmluZywgbG9naWNhbElkOiBzdHJpbmcsIGRpZmY6IERpZmZlcmVuY2U8YW55PiB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghZGlmZiB8fCAhZGlmZi5pc0RpZmZlcmVudCkgeyByZXR1cm47IH1cblxuICAgIGxldCB2YWx1ZTtcblxuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5mb3JtYXRWYWx1ZShkaWZmLm9sZFZhbHVlLCBjaGFsay5yZWQpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5mb3JtYXRWYWx1ZShkaWZmLm5ld1ZhbHVlLCBjaGFsay5ncmVlbik7XG4gICAgaWYgKGRpZmYuaXNBZGRpdGlvbikge1xuICAgICAgdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB9IGVsc2UgaWYgKGRpZmYuaXNVcGRhdGUpIHtcbiAgICAgIHZhbHVlID0gYCR7b2xkVmFsdWV9IHRvICR7bmV3VmFsdWV9YDtcbiAgICB9IGVsc2UgaWYgKGRpZmYuaXNSZW1vdmFsKSB7XG4gICAgICB2YWx1ZSA9IG9sZFZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMucHJpbnQoYCR7dGhpcy5mb3JtYXRQcmVmaXgoZGlmZil9ICR7Y2hhbGsuY3lhbih0eXBlKX0gJHt0aGlzLmZvcm1hdExvZ2ljYWxJZChsb2dpY2FsSWQpfTogJHt2YWx1ZX1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmludCBhIHJlc291cmNlIGRpZmZlcmVuY2UgZm9yIGEgZ2l2ZW4gbG9naWNhbCBJRC5cbiAgICpcbiAgICogQHBhcmFtIGxvZ2ljYWxJZCB0aGUgbG9naWNhbCBJRCBvZiB0aGUgcmVzb3VyY2UgdGhhdCBjaGFuZ2VkLlxuICAgKiBAcGFyYW0gZGlmZiAgICAgIHRoZSBjaGFuZ2UgdG8gYmUgcmVuZGVyZWQuXG4gICAqL1xuICBwdWJsaWMgZm9ybWF0UmVzb3VyY2VEaWZmZXJlbmNlKF90eXBlOiBzdHJpbmcsIGxvZ2ljYWxJZDogc3RyaW5nLCBkaWZmOiBSZXNvdXJjZURpZmZlcmVuY2UpIHtcbiAgICBpZiAoIWRpZmYuaXNEaWZmZXJlbnQpIHsgcmV0dXJuOyB9XG5cbiAgICBjb25zdCByZXNvdXJjZVR5cGUgPSBkaWZmLmlzUmVtb3ZhbCA/IGRpZmYub2xkUmVzb3VyY2VUeXBlIDogZGlmZi5uZXdSZXNvdXJjZVR5cGU7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgIHRoaXMucHJpbnQoYCR7dGhpcy5mb3JtYXRSZXNvdXJjZVByZWZpeChkaWZmKX0gJHt0aGlzLmZvcm1hdFZhbHVlKHJlc291cmNlVHlwZSwgY2hhbGsuY3lhbil9ICR7dGhpcy5mb3JtYXRMb2dpY2FsSWQobG9naWNhbElkKX0gJHt0aGlzLmZvcm1hdEltcGFjdChkaWZmLmNoYW5nZUltcGFjdCl9YCk7XG5cbiAgICBpZiAoZGlmZi5pc1VwZGF0ZSkge1xuICAgICAgY29uc3QgZGlmZmVyZW5jZUNvdW50ID0gZGlmZi5kaWZmZXJlbmNlQ291bnQ7XG4gICAgICBsZXQgcHJvY2Vzc2VkQ291bnQgPSAwO1xuICAgICAgZGlmZi5mb3JFYWNoRGlmZmVyZW5jZSgoXywgbmFtZSwgdmFsdWVzKSA9PiB7XG4gICAgICAgIHByb2Nlc3NlZENvdW50ICs9IDE7XG4gICAgICAgIHRoaXMuZm9ybWF0VHJlZURpZmYobmFtZSwgdmFsdWVzLCBwcm9jZXNzZWRDb3VudCA9PT0gZGlmZmVyZW5jZUNvdW50KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXRSZXNvdXJjZVByZWZpeChkaWZmOiBSZXNvdXJjZURpZmZlcmVuY2UpIHtcbiAgICBpZiAoZGlmZi5pc0ltcG9ydCkgeyByZXR1cm4gSU1QT1JUOyB9XG5cbiAgICByZXR1cm4gdGhpcy5mb3JtYXRQcmVmaXgoZGlmZik7XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0UHJlZml4PFQ+KGRpZmY6IERpZmZlcmVuY2U8VD4pIHtcbiAgICBpZiAoZGlmZi5pc0FkZGl0aW9uKSB7IHJldHVybiBBRERJVElPTjsgfVxuICAgIGlmIChkaWZmLmlzVXBkYXRlKSB7IHJldHVybiBVUERBVEU7IH1cbiAgICBpZiAoZGlmZi5pc1JlbW92YWwpIHsgcmV0dXJuIFJFTU9WQUw7IH1cbiAgICByZXR1cm4gY2hhbGsud2hpdGUoJ1s/XScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdG8gYmUgZm9ybWF0dGVkLlxuICAgKiBAcGFyYW0gY29sb3IgdGhlIGNvbG9yIHRvIGJlIHVzZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIHRoZSBmb3JtYXR0ZWQgc3RyaW5nLCB3aXRoIGNvbG9yIGFwcGxpZWQuXG4gICAqL1xuICBwdWJsaWMgZm9ybWF0VmFsdWUodmFsdWU6IGFueSwgY29sb3I6IChzdHI6IHN0cmluZykgPT4gc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7IHJldHVybiBjb2xvcih2YWx1ZSk7IH1cbiAgICByZXR1cm4gY29sb3IoSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gaW1wYWN0IHRoZSBpbXBhY3QgdG8gYmUgZm9ybWF0dGVkXG4gICAqIEByZXR1cm5zIGEgdXNlci1mcmllbmRseSwgY29sb3JlZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBpbXBhY3QuXG4gICAqL1xuICBwdWJsaWMgZm9ybWF0SW1wYWN0KGltcGFjdDogUmVzb3VyY2VJbXBhY3QpIHtcbiAgICBzd2l0Y2ggKGltcGFjdCkge1xuICAgICAgY2FzZSBSZXNvdXJjZUltcGFjdC5NQVlfUkVQTEFDRTpcbiAgICAgICAgcmV0dXJuIGNoYWxrLml0YWxpYyhjaGFsay55ZWxsb3coJ21heSBiZSByZXBsYWNlZCcpKTtcbiAgICAgIGNhc2UgUmVzb3VyY2VJbXBhY3QuV0lMTF9SRVBMQUNFOlxuICAgICAgICByZXR1cm4gY2hhbGsuaXRhbGljKGNoYWxrLmJvbGQoY2hhbGsucmVkKCdyZXBsYWNlJykpKTtcbiAgICAgIGNhc2UgUmVzb3VyY2VJbXBhY3QuV0lMTF9ERVNUUk9ZOlxuICAgICAgICByZXR1cm4gY2hhbGsuaXRhbGljKGNoYWxrLmJvbGQoY2hhbGsucmVkKCdkZXN0cm95JykpKTtcbiAgICAgIGNhc2UgUmVzb3VyY2VJbXBhY3QuV0lMTF9PUlBIQU46XG4gICAgICAgIHJldHVybiBjaGFsay5pdGFsaWMoY2hhbGsueWVsbG93KCdvcnBoYW4nKSk7XG4gICAgICBjYXNlIFJlc291cmNlSW1wYWN0LldJTExfSU1QT1JUOlxuICAgICAgICByZXR1cm4gY2hhbGsuaXRhbGljKGNoYWxrLmJsdWUoJ2ltcG9ydCcpKTtcbiAgICAgIGNhc2UgUmVzb3VyY2VJbXBhY3QuV0lMTF9VUERBVEU6XG4gICAgICBjYXNlIFJlc291cmNlSW1wYWN0LldJTExfQ1JFQVRFOlxuICAgICAgY2FzZSBSZXNvdXJjZUltcGFjdC5OT19DSEFOR0U6XG4gICAgICAgIHJldHVybiAnJzsgLy8gbm8gZXh0cmEgaW5mbyBpcyBnYWluZWQgaGVyZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgdHJlZSBvZiBkaWZmZXJlbmNlcyB1bmRlciBhIHBhcnRpY3VsYXIgbmFtZS5cbiAgICogQHBhcmFtIG5hbWUgICAgdGhlIG5hbWUgb2YgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuXG4gICAqIEBwYXJhbSBkaWZmICAgIHRoZSBkaWZmZXJlbmNlIG9uIHRoZSB0cmVlLlxuICAgKiBAcGFyYW0gbGFzdCAgICB3aGV0aGVyIHRoaXMgaXMgdGhlIGxhc3Qgbm9kZSBvZiBhIHBhcmVudCB0cmVlLlxuICAgKi9cbiAgcHVibGljIGZvcm1hdFRyZWVEaWZmKG5hbWU6IHN0cmluZywgZGlmZjogRGlmZmVyZW5jZTxhbnk+LCBsYXN0OiBib29sZWFuKSB7XG4gICAgbGV0IGFkZGl0aW9uYWxJbmZvID0gJyc7XG4gICAgaWYgKGlzUHJvcGVydHlEaWZmZXJlbmNlKGRpZmYpKSB7XG4gICAgICBpZiAoZGlmZi5jaGFuZ2VJbXBhY3QgPT09IFJlc291cmNlSW1wYWN0Lk1BWV9SRVBMQUNFKSB7XG4gICAgICAgIGFkZGl0aW9uYWxJbmZvID0gJyAobWF5IGNhdXNlIHJlcGxhY2VtZW50KSc7XG4gICAgICB9IGVsc2UgaWYgKGRpZmYuY2hhbmdlSW1wYWN0ID09PSBSZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0UpIHtcbiAgICAgICAgYWRkaXRpb25hbEluZm8gPSAnIChyZXF1aXJlcyByZXBsYWNlbWVudCknO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnByaW50KCcgJXPilIAgJXMgJXMlcycsIGxhc3QgPyAn4pSUJyA6ICfilJwnLCB0aGlzLmNoYW5nZVRhZyhkaWZmLm9sZFZhbHVlLCBkaWZmLm5ld1ZhbHVlKSwgbmFtZSwgYWRkaXRpb25hbEluZm8pO1xuICAgIHJldHVybiB0aGlzLmZvcm1hdE9iamVjdERpZmYoZGlmZi5vbGRWYWx1ZSwgZGlmZi5uZXdWYWx1ZSwgYCAke2xhc3QgPyAnICcgOiAn4pSCJ31gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIG9iamVjdHMsIGxvb2tpbmcgZm9yIHRoZSBkaWZmZXJlbmNlcyBhcyBkZWVwIGFzIHBvc3NpYmxlLFxuICAgKiBhbmQgcmVuZGVyaW5nIGEgdHJlZSBncmFwaCBvZiB0aGUgcGF0aCB1bnRpbCB0aGUgZGlmZmVyZW5jZSBpcyBmb3VuZC5cbiAgICpcbiAgICogQHBhcmFtIG9sZE9iamVjdCAgdGhlIG9sZCBvYmplY3QuXG4gICAqIEBwYXJhbSBuZXdPYmplY3QgIHRoZSBuZXcgb2JqZWN0LlxuICAgKiBAcGFyYW0gbGluZVByZWZpeCBhIHByZWZpeCAoaW5kZW50LWxpa2UpIHRvIGJlIHVzZWQgb24gZXZlcnkgbGluZS5cbiAgICovXG4gIHB1YmxpYyBmb3JtYXRPYmplY3REaWZmKG9sZE9iamVjdDogYW55LCBuZXdPYmplY3Q6IGFueSwgbGluZVByZWZpeDogc3RyaW5nKSB7XG4gICAgaWYgKCh0eXBlb2Ygb2xkT2JqZWN0ICE9PSB0eXBlb2YgbmV3T2JqZWN0KSB8fCBBcnJheS5pc0FycmF5KG9sZE9iamVjdCkgfHwgdHlwZW9mIG9sZE9iamVjdCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIG9sZE9iamVjdCA9PT0gJ251bWJlcicpIHtcbiAgICAgIGlmIChvbGRPYmplY3QgIT09IHVuZGVmaW5lZCAmJiBuZXdPYmplY3QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIG9sZE9iamVjdCA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIG5ld09iamVjdCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBjb25zdCBvbGRTdHIgPSBKU09OLnN0cmluZ2lmeShvbGRPYmplY3QsIG51bGwsIDIpO1xuICAgICAgICAgIGNvbnN0IG5ld1N0ciA9IEpTT04uc3RyaW5naWZ5KG5ld09iamVjdCwgbnVsbCwgMik7XG4gICAgICAgICAgY29uc3QgZGlmZiA9IF9kaWZmU3RyaW5ncyhvbGRTdHIsIG5ld1N0ciwgdGhpcy5jb250ZXh0KTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpZmYubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMucHJpbnQoJyVzICAgJXMgJXMnLCBsaW5lUHJlZml4LCBpID09PSAwID8gJ+KUlOKUgCcgOiAnICAnLCBkaWZmW2ldKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5wcmludCgnJXMgICDilJzilIAgJXMgJXMnLCBsaW5lUHJlZml4LCBSRU1PVkFMLCB0aGlzLmZvcm1hdFZhbHVlKG9sZE9iamVjdCwgY2hhbGsucmVkKSk7XG4gICAgICAgICAgdGhpcy5wcmludCgnJXMgICDilJTilIAgJXMgJXMnLCBsaW5lUHJlZml4LCBBRERJVElPTiwgdGhpcy5mb3JtYXRWYWx1ZShuZXdPYmplY3QsIGNoYWxrLmdyZWVuKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAob2xkT2JqZWN0ICE9PSB1bmRlZmluZWQgLyogJiYgbmV3T2JqZWN0ID09PSB1bmRlZmluZWQgKi8pIHtcbiAgICAgICAgdGhpcy5wcmludCgnJXMgICDilJTilIAgJXMnLCBsaW5lUHJlZml4LCB0aGlzLmZvcm1hdFZhbHVlKG9sZE9iamVjdCwgY2hhbGsucmVkKSk7XG4gICAgICB9IGVsc2UgLyogaWYgKG9sZE9iamVjdCA9PT0gdW5kZWZpbmVkICYmIG5ld09iamVjdCAhPT0gdW5kZWZpbmVkKSAqLyB7XG4gICAgICAgIHRoaXMucHJpbnQoJyVzICAg4pSU4pSAICVzJywgbGluZVByZWZpeCwgdGhpcy5mb3JtYXRWYWx1ZShuZXdPYmplY3QsIGNoYWxrLmdyZWVuKSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGtleVNldCA9IG5ldyBTZXQoT2JqZWN0LmtleXMob2xkT2JqZWN0KSk7XG4gICAgT2JqZWN0LmtleXMobmV3T2JqZWN0KS5mb3JFYWNoKGsgPT4ga2V5U2V0LmFkZChrKSk7XG4gICAgY29uc3Qga2V5cyA9IG5ldyBBcnJheSguLi5rZXlTZXQpLmZpbHRlcihrID0+ICFkZWVwRXF1YWwob2xkT2JqZWN0W2tdLCBuZXdPYmplY3Rba10pKS5zb3J0KCk7XG4gICAgY29uc3QgbGFzdEtleSA9IGtleXNba2V5cy5sZW5ndGggLSAxXTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICBjb25zdCBvbGRWYWx1ZSA9IG9sZE9iamVjdFtrZXldO1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSBuZXdPYmplY3Rba2V5XTtcbiAgICAgIGNvbnN0IHRyZWVQcmVmaXggPSBrZXkgPT09IGxhc3RLZXkgPyAn4pSUJyA6ICfilJwnO1xuICAgICAgaWYgKG9sZFZhbHVlICE9PSB1bmRlZmluZWQgJiYgbmV3VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnByaW50KCclcyAgICVz4pSAICVzICVzOicsIGxpbmVQcmVmaXgsIHRyZWVQcmVmaXgsIHRoaXMuY2hhbmdlVGFnKG9sZFZhbHVlLCBuZXdWYWx1ZSksIGNoYWxrLmJsdWUoYC4ke2tleX1gKSk7XG4gICAgICAgIHRoaXMuZm9ybWF0T2JqZWN0RGlmZihvbGRWYWx1ZSwgbmV3VmFsdWUsIGAke2xpbmVQcmVmaXh9ICAgJHtrZXkgPT09IGxhc3RLZXkgPyAnICcgOiAn4pSCJ31gKTtcbiAgICAgIH0gZWxzZSBpZiAob2xkVmFsdWUgIT09IHVuZGVmaW5lZCAvKiAmJiBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkICovKSB7XG4gICAgICAgIHRoaXMucHJpbnQoJyVzICAgJXPilIAgJXMgUmVtb3ZlZDogJXMnLCBsaW5lUHJlZml4LCB0cmVlUHJlZml4LCBSRU1PVkFMLCBjaGFsay5ibHVlKGAuJHtrZXl9YCkpO1xuICAgICAgfSBlbHNlIC8qIGlmIChvbGRWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIG5ld1ZhbHVlICE9PSB1bmRlZmluZWQgKi8ge1xuICAgICAgICB0aGlzLnByaW50KCclcyAgICVz4pSAICVzIEFkZGVkOiAlcycsIGxpbmVQcmVmaXgsIHRyZWVQcmVmaXgsIEFERElUSU9OLCBjaGFsay5ibHVlKGAuJHtrZXl9YCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gb2xkVmFsdWUgdGhlIG9sZCB2YWx1ZSBvZiBhIGRpZmZlcmVuY2UuXG4gICAqIEBwYXJhbSBuZXdWYWx1ZSB0aGUgbmV3IHZhbHVlIG9mIGEgZGlmZmVyZW5jZS5cbiAgICpcbiAgICogQHJldHVybnMgYSB0YWcgdG8gYmUgcmVuZGVyZWQgaW4gdGhlIGRpZmYsIHJlZmxlY3Rpbmcgd2hldGhlciB0aGUgZGlmZmVyZW5jZVxuICAgKiAgICAgIHdhcyBhbiBBRERJVElPTiwgVVBEQVRFIG9yIFJFTU9WQUwuXG4gICAqL1xuICBwdWJsaWMgY2hhbmdlVGFnKG9sZFZhbHVlOiBhbnkgfCB1bmRlZmluZWQsIG5ld1ZhbHVlOiBhbnkgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIGlmIChvbGRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIG5ld1ZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBVUERBVEU7XG4gICAgfSBlbHNlIGlmIChvbGRWYWx1ZSAhPT0gdW5kZWZpbmVkIC8qICYmIG5ld1ZhbHVlID09PSB1bmRlZmluZWQqLykge1xuICAgICAgcmV0dXJuIFJFTU9WQUw7XG4gICAgfSBlbHNlIC8qIGlmIChvbGRWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIG5ld1ZhbHVlICE9PSB1bmRlZmluZWQpICovIHtcbiAgICAgIHJldHVybiBBRERJVElPTjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRmluZCAnYXdzOmNkazpwYXRoJyBtZXRhZGF0YSBpbiB0aGUgZGlmZiBhbmQgYWRkIGl0IHRvIHRoZSBsb2dpY2FsVG9QYXRoTWFwXG4gICAqXG4gICAqIFRoZXJlIGFyZSBtdWx0aXBsZSBzb3VyY2VzIG9mIGxvZ2ljYWxJRCAtPiBwYXRoIG1hcHBpbmdzOiBzeW50aCBtZXRhZGF0YVxuICAgKiBhbmQgcmVzb3VyY2UgbWV0YWRhdGEsIGFuZCB3ZSBjb21iaW5lIGFsbCBzb3VyY2VzIGludG8gYSBzaW5nbGUgbWFwLlxuICAgKi9cbiAgcHVibGljIHJlYWRDb25zdHJ1Y3RQYXRoc0Zyb20odGVtcGxhdGVEaWZmOiBUZW1wbGF0ZURpZmYpIHtcbiAgICBmb3IgKGNvbnN0IFtsb2dpY2FsSWQsIHJlc291cmNlRGlmZl0gb2YgT2JqZWN0LmVudHJpZXModGVtcGxhdGVEaWZmLnJlc291cmNlcykpIHtcbiAgICAgIGlmICghcmVzb3VyY2VEaWZmKSB7IGNvbnRpbnVlOyB9XG5cbiAgICAgIGNvbnN0IG9sZFBhdGhNZXRhZGF0YSA9IHJlc291cmNlRGlmZi5vbGRWYWx1ZT8uTWV0YWRhdGE/LltQQVRIX01FVEFEQVRBX0tFWV07XG4gICAgICBpZiAob2xkUGF0aE1ldGFkYXRhICYmICEobG9naWNhbElkIGluIHRoaXMubG9naWNhbFRvUGF0aE1hcCkpIHtcbiAgICAgICAgdGhpcy5sb2dpY2FsVG9QYXRoTWFwW2xvZ2ljYWxJZF0gPSBvbGRQYXRoTWV0YWRhdGE7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld1BhdGhNZXRhZGF0YSA9IHJlc291cmNlRGlmZi5uZXdWYWx1ZT8uTWV0YWRhdGE/LltQQVRIX01FVEFEQVRBX0tFWV07XG4gICAgICBpZiAobmV3UGF0aE1ldGFkYXRhICYmICEobG9naWNhbElkIGluIHRoaXMubG9naWNhbFRvUGF0aE1hcCkpIHtcbiAgICAgICAgdGhpcy5sb2dpY2FsVG9QYXRoTWFwW2xvZ2ljYWxJZF0gPSBuZXdQYXRoTWV0YWRhdGE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZvcm1hdExvZ2ljYWxJZChsb2dpY2FsSWQ6IHN0cmluZykge1xuICAgIC8vIGlmIHdlIGhhdmUgYSBwYXRoIGluIHRoZSBtYXAsIHJldHVybiBpdFxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB0aGlzLm5vcm1hbGl6ZWRMb2dpY2FsSWRQYXRoKGxvZ2ljYWxJZCk7XG5cbiAgICBpZiAobm9ybWFsaXplZCkge1xuICAgICAgcmV0dXJuIGAke25vcm1hbGl6ZWR9ICR7Y2hhbGsuZ3JheShsb2dpY2FsSWQpfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxvZ2ljYWxJZDtcbiAgfVxuXG4gIHB1YmxpYyBub3JtYWxpemVkTG9naWNhbElkUGF0aChsb2dpY2FsSWQ6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgLy8gaWYgd2UgaGF2ZSBhIHBhdGggaW4gdGhlIG1hcCwgcmV0dXJuIGl0XG4gICAgY29uc3QgcGF0aCA9IHRoaXMubG9naWNhbFRvUGF0aE1hcFtsb2dpY2FsSWRdO1xuICAgIHJldHVybiBwYXRoID8gbm9ybWFsaXplUGF0aChwYXRoKSA6IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqIFBhdGggaXMgc3VwcG9zZWQgdG8gc3RhcnQgd2l0aCBcIi9zdGFjay1uYW1lXCIuIElmIHRoaXMgaXMgdGhlIGNhc2UgKGkuZS4gcGF0aCBoYXMgbW9yZSB0aGFuXG4gICAgICogdHdvIGNvbXBvbmVudHMsIHdlIHJlbW92ZSB0aGUgZmlyc3QgcGFydC4gT3RoZXJ3aXNlLCB3ZSBqdXN0IHVzZSB0aGUgZnVsbCBwYXRoLlxuICAgICAqIEBwYXJhbSBwXG4gICAgICovXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplUGF0aChwOiBzdHJpbmcpIHtcbiAgICAgIGlmIChwLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICBwID0gcC5zbGljZSgxKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHBhcnRzID0gcC5zcGxpdCgnLycpO1xuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgcGFydHMgPSBwYXJ0cy5zbGljZSgxKTtcblxuICAgICAgICAvLyByZW1vdmUgdGhlIGxhc3QgY29tcG9uZW50IGlmIGl0J3MgXCJSZXNvdXJjZVwiIG9yIFwiRGVmYXVsdFwiIChpZiB3ZSBoYXZlIG1vcmUgdGhhbiBhIHNpbmdsZSBjb21wb25lbnQpXG4gICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgY29uc3QgbGFzdCA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgIGlmIChsYXN0ID09PSAnUmVzb3VyY2UnIHx8IGxhc3QgPT09ICdEZWZhdWx0Jykge1xuICAgICAgICAgICAgcGFydHMgPSBwYXJ0cy5zbGljZSgwLCBwYXJ0cy5sZW5ndGggLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBwID0gcGFydHMuam9pbignLycpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHA7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZvcm1hdElhbUNoYW5nZXMoY2hhbmdlczogSWFtQ2hhbmdlcykge1xuICAgIGlmICghY2hhbmdlcy5oYXNDaGFuZ2VzKSB7IHJldHVybjsgfVxuXG4gICAgaWYgKGNoYW5nZXMuc3RhdGVtZW50cy5oYXNDaGFuZ2VzKSB7XG4gICAgICB0aGlzLnByaW50U2VjdGlvbkhlYWRlcignSUFNIFN0YXRlbWVudCBDaGFuZ2VzJyk7XG4gICAgICB0aGlzLnByaW50KGZvcm1hdFRhYmxlKHRoaXMuZGVlcFN1YnN0aXR1dGVCcmFjZWRMb2dpY2FsSWRzKGNoYW5nZXMuc3VtbWFyaXplU3RhdGVtZW50cygpKSwgdGhpcy5zdHJlYW0uY29sdW1ucykpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLm1hbmFnZWRQb2xpY2llcy5oYXNDaGFuZ2VzKSB7XG4gICAgICB0aGlzLnByaW50U2VjdGlvbkhlYWRlcignSUFNIFBvbGljeSBDaGFuZ2VzJyk7XG4gICAgICB0aGlzLnByaW50KGZvcm1hdFRhYmxlKHRoaXMuZGVlcFN1YnN0aXR1dGVCcmFjZWRMb2dpY2FsSWRzKGNoYW5nZXMuc3VtbWFyaXplTWFuYWdlZFBvbGljaWVzKCkpLCB0aGlzLnN0cmVhbS5jb2x1bW5zKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZvcm1hdFNlY3VyaXR5R3JvdXBDaGFuZ2VzKGNoYW5nZXM6IFNlY3VyaXR5R3JvdXBDaGFuZ2VzKSB7XG4gICAgaWYgKCFjaGFuZ2VzLmhhc0NoYW5nZXMpIHsgcmV0dXJuOyB9XG5cbiAgICB0aGlzLnByaW50U2VjdGlvbkhlYWRlcignU2VjdXJpdHkgR3JvdXAgQ2hhbmdlcycpO1xuICAgIHRoaXMucHJpbnQoZm9ybWF0VGFibGUodGhpcy5kZWVwU3Vic3RpdHV0ZUJyYWNlZExvZ2ljYWxJZHMoY2hhbmdlcy5zdW1tYXJpemUoKSksIHRoaXMuc3RyZWFtLmNvbHVtbnMpKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWVwU3Vic3RpdHV0ZUJyYWNlZExvZ2ljYWxJZHMocm93czogc3RyaW5nW11bXSk6IHN0cmluZ1tdW10ge1xuICAgIHJldHVybiByb3dzLm1hcChyb3cgPT4gcm93Lm1hcCh0aGlzLnN1YnN0aXR1dGVCcmFjZWRMb2dpY2FsSWRzLmJpbmQodGhpcykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzdGl0dXRlIGFsbCBzdHJpbmdzIGxpa2UgJHtMb2dJZC54eHh9IHdpdGggdGhlIHBhdGggaW5zdGVhZCBvZiB0aGUgbG9naWNhbCBJRFxuICAgKi9cbiAgcHVibGljIHN1YnN0aXR1dGVCcmFjZWRMb2dpY2FsSWRzKHNvdXJjZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc291cmNlLnJlcGxhY2UoL1xcJFxceyhbXi59XSspKC5bXn1dKyk/XFx9L2lnLCAoX21hdGNoLCBsb2dJZCwgc3VmZml4KSA9PiB7XG4gICAgICByZXR1cm4gJyR7JyArICh0aGlzLm5vcm1hbGl6ZWRMb2dpY2FsSWRQYXRoKGxvZ0lkKSB8fCBsb2dJZCkgKyAoc3VmZml4IHx8ICcnKSArICd9JztcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEEgcGF0Y2ggYXMgcmV0dXJuZWQgYnkgYGBkaWZmLnN0cnVjdHVyZWRQYXRjaGBgLlxuICovXG5pbnRlcmZhY2UgUGF0Y2gge1xuICAvKipcbiAgICogSHVua3MgaW4gdGhlIHBhdGNoLlxuICAgKi9cbiAgaHVua3M6IFJlYWRvbmx5QXJyYXk8UGF0Y2hIdW5rPjtcbn1cblxuLyoqXG4gKiBBIGh1bmsgaW4gYSBwYXRjaCBwcm9kdWNlZCBieSBgYGRpZmYuc3RydWN0dXJlZFBhdGNoYGAuXG4gKi9cbmludGVyZmFjZSBQYXRjaEh1bmsge1xuICBvbGRTdGFydDogbnVtYmVyO1xuICBvbGRMaW5lczogbnVtYmVyO1xuICBuZXdTdGFydDogbnVtYmVyO1xuICBuZXdMaW5lczogbnVtYmVyO1xuICBsaW5lczogc3RyaW5nW107XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHVuaWZpZWQgZGlmZiBvZiB0d28gc3RyaW5ncy5cbiAqXG4gKiBAcGFyYW0gb2xkU3RyICB0aGUgXCJvbGRcIiB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcuXG4gKiBAcGFyYW0gbmV3U3RyICB0aGUgXCJuZXdcIiB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcuXG4gKiBAcGFyYW0gY29udGV4dCB0aGUgbnVtYmVyIG9mIGNvbnRleHQgbGluZXMgdG8gdXNlIGluIGFyYml0cmFyeSBKU09OIGRpZmYuXG4gKlxuICogQHJldHVybnMgYW4gYXJyYXkgb2YgZGlmZiBsaW5lcy5cbiAqL1xuZnVuY3Rpb24gX2RpZmZTdHJpbmdzKG9sZFN0cjogc3RyaW5nLCBuZXdTdHI6IHN0cmluZywgY29udGV4dDogbnVtYmVyKTogc3RyaW5nW10ge1xuICBjb25zdCBwYXRjaDogUGF0Y2ggPSBzdHJ1Y3R1cmVkUGF0Y2gobnVsbCwgbnVsbCwgb2xkU3RyLCBuZXdTdHIsIG51bGwsIG51bGwsIHsgY29udGV4dCB9KTtcbiAgY29uc3QgcmVzdWx0ID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgZm9yIChjb25zdCBodW5rIG9mIHBhdGNoLmh1bmtzKSB7XG4gICAgcmVzdWx0LnB1c2goY2hhbGsubWFnZW50YShgQEAgLSR7aHVuay5vbGRTdGFydH0sJHtodW5rLm9sZExpbmVzfSArJHtodW5rLm5ld1N0YXJ0fSwke2h1bmsubmV3TGluZXN9IEBAYCkpO1xuICAgIGNvbnN0IGJhc2VJbmRlbnQgPSBfZmluZEluZGVudChodW5rLmxpbmVzKTtcbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgaHVuay5saW5lcykge1xuICAgICAgLy8gRG9uJ3QgY2FyZSBhYm91dCB0ZXJtaW5hdGlvbiBuZXdsaW5lLlxuICAgICAgaWYgKGxpbmUgPT09ICdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKSB7IGNvbnRpbnVlOyB9XG4gICAgICBjb25zdCBtYXJrZXIgPSBsaW5lLmNoYXJBdCgwKTtcbiAgICAgIGNvbnN0IHRleHQgPSBsaW5lLnNsaWNlKDEgKyBiYXNlSW5kZW50KTtcbiAgICAgIHN3aXRjaCAobWFya2VyKSB7XG4gICAgICAgIGNhc2UgJyAnOlxuICAgICAgICAgIHJlc3VsdC5wdXNoKGAke0NPTlRFWFR9ICR7dGV4dH1gKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnKyc6XG4gICAgICAgICAgcmVzdWx0LnB1c2goY2hhbGsuYm9sZChgJHtBRERJVElPTn0gJHtjaGFsay5ncmVlbih0ZXh0KX1gKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJy0nOlxuICAgICAgICAgIHJlc3VsdC5wdXNoKGNoYWxrLmJvbGQoYCR7UkVNT1ZBTH0gJHtjaGFsay5yZWQodGV4dCl9YCkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBkaWZmIG1hcmtlcjogJHttYXJrZXJ9IChmdWxsIGxpbmU6ICR7bGluZX0pYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG5cbiAgZnVuY3Rpb24gX2ZpbmRJbmRlbnQobGluZXM6IHN0cmluZ1tdKTogbnVtYmVyIHtcbiAgICBsZXQgaW5kZW50ID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGxpbmUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGxpbmUuY2hhckF0KGkpICE9PSAnICcpIHtcbiAgICAgICAgICBpbmRlbnQgPSBpbmRlbnQgPiBpIC0gMSA/IGkgLSAxIDogaW5kZW50O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpbmRlbnQ7XG4gIH1cbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZm9ybWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUE4QjtBQUM5QiwrQkFBK0I7QUFFL0Isc0NBQXdDO0FBQ3hDLG1EQUF1RztBQUN2RyxpREFBNkM7QUFJN0MsY0FBYztBQUNkLE1BQU0saUJBQWlCLEdBQUcsY0FBYyxDQUFDO0FBRXpDLDBEQUEwRDtBQUMxRCxNQUFNLEVBQUUsZUFBZSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBTzVDOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQy9CLE1BQW9CLEVBQ3BCLFlBQTBCLEVBQzFCLG1CQUFvRCxFQUFFLEVBQ3RELFVBQWtCLENBQUM7SUFDbkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVqRixJQUFJLFlBQVksQ0FBQyx3QkFBd0IsSUFBSSxZQUFZLENBQUMsU0FBUyxJQUFJLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoRyxTQUFTLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLDBCQUEwQixFQUFFLDBCQUEwQixFQUFFLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzFILFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3RSxTQUFTLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkYsU0FBUyxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELCtCQUErQixDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUV6RCxTQUFTLENBQUMs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RSxDQUFDO1lBQ3pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3JDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztvQkFDM0IsTUFBTSxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JtYXQgfSBmcm9tICd1dGlsJztcbmltcG9ydCAqIGFzIGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7IERpZmZlcmVuY2VDb2xsZWN0aW9uLCBUZW1wbGF0ZURpZmYgfSBmcm9tICcuL2RpZmYvdHlwZXMnO1xuaW1wb3J0IHsgZGVlcEVxdWFsIH0gZnJvbSAnLi9kaWZmL3V0aWwnO1xuaW1wb3J0IHsgRGlmZmVyZW5jZSwgaXNQcm9wZXJ0eURpZmZlcmVuY2UsIFJlc291cmNlRGlmZmVyZW5jZSwgUmVzb3VyY2VJbXBhY3QgfSBmcm9tICcuL2RpZmYtdGVtcGxhdGUnO1xuaW1wb3J0IHsgZm9ybWF0VGFibGUgfSBmcm9tICcuL2Zvcm1hdC10YWJsZSc7XG5pbXBvcnQgeyBJYW1DaGFuZ2VzIH0gZnJvbSAnLi9pYW0vaWFtLWNoYW5nZXMnO1xuaW1wb3J0IHsgU2VjdXJpdHlHcm91cENoYW5nZXMgfSBmcm9tICcuL25ldHdvcmsvc2VjdXJpdHktZ3JvdXAtY2hhbmdlcyc7XG5cbi8vIGZyb20gY3gtYXBpXG5jb25zdCBQQVRIX01FVEFEQVRBX0tFWSA9ICdhd3M6Y2RrOnBhdGgnO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzICovXG5jb25zdCB7IHN0cnVjdHVyZWRQYXRjaCB9ID0gcmVxdWlyZSgnZGlmZicpO1xuLyogZXNsaW50LWVuYWJsZSAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdFN0cmVhbSBleHRlbmRzIE5vZGVKUy5Xcml0YWJsZVN0cmVhbSB7XG4gIGNvbHVtbnM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUmVuZGVycyB0ZW1wbGF0ZSBkaWZmZXJlbmNlcyB0byB0aGUgcHJvY2VzcycgY29uc29sZS5cbiAqXG4gKiBAcGFyYW0gc3RyZWFtICAgICAgICAgICBUaGUgSU8gc3RyZWFtIHdoZXJlIHRvIG91dHB1dCB0aGUgcmVuZGVyZWQgZGlmZi5cbiAqIEBwYXJhbSB0ZW1wbGF0ZURpZmYgICAgIFRlbXBsYXRlRGlmZiB0byBiZSByZW5kZXJlZCB0byB0aGUgY29uc29sZS5cbiAqIEBwYXJhbSBsb2dpY2FsVG9QYXRoTWFwIEEgbWFwIGZyb20gbG9naWNhbCBJRCB0byBjb25zdHJ1Y3QgcGF0aC4gVXNlZnVsIGluXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHRoZXJlIGlzIG5vIGF3czpjZGs6cGF0aCBtZXRhZGF0YSBpbiB0aGUgdGVtcGxhdGUuXG4gKiBAcGFyYW0gY29udGV4dCAgICAgICAgICB0aGUgbnVtYmVyIG9mIGNvbnRleHQgbGluZXMgdG8gdXNlIGluIGFyYml0cmFyeSBKU09OIGRpZmYgKGRlZmF1bHRzIHRvIDMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGlmZmVyZW5jZXMoXG4gIHN0cmVhbTogRm9ybWF0U3RyZWFtLFxuICB0ZW1wbGF0ZURpZmY6IFRlbXBsYXRlRGlmZixcbiAgbG9naWNhbFRvUGF0aE1hcDogeyBbbG9naWNhbElkOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9LFxuICBjb250ZXh0OiBudW1iZXIgPSAzKSB7XG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBGb3JtYXR0ZXIoc3RyZWFtLCBsb2dpY2FsVG9QYXRoTWFwLCB0ZW1wbGF0ZURpZmYsIGNvbnRleHQpO1xuXG4gIGlmICh0ZW1wbGF0ZURpZmYuYXdzVGVtcGxhdGVGb3JtYXRWZXJzaW9uIHx8IHRlbXBsYXRlRGlmZi50cmFuc2Zvcm0gfHwgdGVtcGxhdGVEaWZmLmRlc2NyaXB0aW9uKSB7XG4gICAgZm9ybWF0dGVyLnByaW50U2VjdGlvbkhlYWRlcignVGVtcGxhdGUnKTtcbiAgICBmb3JtYXR0ZXIuZm9ybWF0RGlmZmVyZW5jZSgnQVdTVGVtcGxhdGVGb3JtYXRWZXJzaW9uJywgJ0FXU1RlbXBsYXRlRm9ybWF0VmVyc2lvbicsIHRlbXBsYXRlRGlmZi5hd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24pO1xuICAgIGZvcm1hdHRlci5mb3JtYXREaWZmZXJlbmNlKCdUcmFuc2Zvcm0nLCAnVHJhbnNmb3JtJywgdGVtcGxhdGVEaWZmLnRyYW5zZm9ybSk7XG4gICAgZm9ybWF0dGVyLmZvcm1hdERpZmZlcmVuY2UoJ0Rlc2NyaXB0aW9uJywgJ0Rlc2NyaXB0aW9uJywgdGVtcGxhdGVEaWZmLmRlc2NyaXB0aW9uKTtcbiAgICBmb3JtYXR0ZXIucHJpbnRTZWN0aW9uRm9vdGVyKCk7XG4gIH1cblxuICBmb3JtYXRTZWN1cml0eUNoYW5nZXNXaXRoQmFubmVyKGZvcm1hdHRlciwgdGVtcGxhdGVEaWZmKTtcblxuICBmb3JtYXR0ZXIuZm9ybWF0U2VjdGlvbignUGFyYW1ldGVycycsICdQYXJhbWV0ZXInLCB0ZW1wbGF0ZURpZmYucGFyYW1ldGVycyk7XG4gIGZvcm1hdHRlci5mb3JtYXRTZWN0aW9uKCdNZXRhZGF0YScsICdNZXRhZGF0YScsIHRlbXBsYXRlRGlmZi5tZXRhZGF0YSk7XG4gIGZvcm1hdHRlci5mb3JtYXRTZWN0aW9uKCdNYXBwaW5ncycsICdNYXBwaW5nJywgdGVtcGxhdGVEaWZmLm1hcHBpbmdzKTtcbiAgZm9ybWF0dGVyLmZvcm1hdFNlY3Rpb24oJ0NvbmRpdGlvbnMnLCAnQ29uZGl0aW9uJywgdGVtcGxhdGVEaWZmLmNvbmRpdGlvbnMpO1xuICBmb3JtYXR0ZXIuZm9ybWF0U2VjdGlvbignUmVzb3VyY2VzJywgJ1Jlc291cmNlJywgdGVtcGxhdGVEaWZmLnJlc291cmNlcywgZm9ybWF0dGVyLmZvcm1hdFJlc291cmNlRGlmZmVyZW5jZS5iaW5kKGZvcm1hdHRlcikpO1xuICBmb3JtYXR0ZXIuZm9ybWF0U2VjdGlvbignT3V0cHV0cycsICdPdXRwdXQnLCB0ZW1wbGF0ZURpZmYub3V0cHV0cyk7XG4gIGZvcm1hdHRlci5mb3JtYXRTZWN0aW9uKCdPdGhlciBDaGFuZ2VzJywgJ1Vua25vd24nLCB0ZW1wbGF0ZURpZmYudW5rbm93bik7XG59XG5cbi8qKlxuICogUmVuZGVycyBhIGRpZmYgb2Ygc2VjdXJpdHkgY2hhbmdlcyB0byB0aGUgZ2l2ZW4gc3RyZWFtXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRTZWN1cml0eUNoYW5nZXMoXG4gIHN0cmVhbTogTm9kZUpTLldyaXRhYmxlU3RyZWFtLFxuICB0ZW1wbGF0ZURpZmY6IFRlbXBsYXRlRGlmZixcbiAgbG9naWNhbFRvUGF0aE1hcDogeyBbbG9naWNhbElkOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9LFxuICBjb250ZXh0PzogbnVtYmVyKSB7XG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBGb3JtYXR0ZXIoc3RyZWFtLCBsb2dpY2FsVG9QYXRoTWFwLCB0ZW1wbGF0ZURpZmYsIGNvbnRleHQpO1xuXG4gIGZvcm1hdFNlY3VyaXR5Q2hhbmdlc1dpdGhCYW5uZXIoZm9ybWF0dGVyLCB0ZW1wbGF0ZURpZmYpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRTZWN1cml0eUNoYW5nZXNXaXRoQmFubmVyKGZvcm1hdHRlcjogRm9ybWF0dGVyLCB0ZW1wbGF0ZURpZmY6IFRlbXBsYXRlRGlmZikge1xuICBpZiAoIXRlbXBsYXRlRGlmZi5pYW1DaGFuZ2VzLmhhc0NoYW5nZXMgJiYgIXRlbXBsYXRlRGlmZi5zZWN1cml0eUdyb3VwQ2hhbmdlcy5oYXNDaGFuZ2VzKSB7IHJldHVybjsgfVxuICBmb3JtYXR0ZXIuZm9ybWF0SWFtQ2hhbmdlcyh0ZW1wbGF0ZURpZmYuaWFtQ2hhbmdlcyk7XG4gIGZvcm1hdHRlci5mb3JtYXRTZWN1cml0eUdyb3VwQ2hhbmdlcyh0ZW1wbGF0ZURpZmYuc2VjdXJpdHlHcm91cENoYW5nZXMpO1xuXG4gIGZvcm1hdHRlci53YXJuaW5nKCcoTk9URTogVGhlcmUgbWF5IGJlIHNlY3VyaXR5LXJlbGF0ZWQgY2hhbmdlcyBub3QgaW4gdGhpcyBsaXN0LiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2lzc3Vlcy8xMjk5KScpO1xuICBmb3JtYXR0ZXIucHJpbnRTZWN0aW9uRm9vdGVyKCk7XG59XG5cbmNvbnN0IEFERElUSU9OID0gY2hhbGsuZ3JlZW4oJ1srXScpO1xuY29uc3QgQ09OVEVYVCA9IGNoYWxrLmdyZXkoJ1sgXScpO1xuY29uc3QgVVBEQVRFID0gY2hhbGsueWVsbG93KCdbfl0nKTtcbmNvbnN0IFJFTU9WQUwgPSBjaGFsay5yZWQoJ1stXScpO1xuY29uc3QgSU1QT1JUID0gY2hhbGsuYmx1ZSgnW+KGkF0nKTtcblxuY2xhc3MgRm9ybWF0dGVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdHJlYW06IEZvcm1hdFN0cmVhbSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2ljYWxUb1BhdGhNYXA6IHsgW2xvZ2ljYWxJZDogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgZGlmZj86IFRlbXBsYXRlRGlmZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRleHQ6IG51bWJlciA9IDMpIHtcbiAgICAvLyBSZWFkIGFkZGl0aW9uYWwgY29uc3RydWN0IHBhdGhzIGZyb20gdGhlIGRpZmYgaWYgaXQgaXMgc3VwcGxpZWRcbiAgICBpZiAoZGlmZikge1xuICAgICAgdGhpcy5yZWFkQ29uc3RydWN0UGF0aHNGcm9tKGRpZmYpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBwcmludChmbXQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICB0aGlzLnN0cmVhbS53cml0ZShjaGFsay53aGl0ZShmb3JtYXQoZm10LCAuLi5hcmdzKSkgKyAnXFxuJyk7XG4gIH1cblxuICBwdWJsaWMgd2FybmluZyhmbXQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICB0aGlzLnN0cmVhbS53cml0ZShjaGFsay55ZWxsb3coZm9ybWF0KGZtdCwgLi4uYXJncykpICsgJ1xcbicpO1xuICB9XG5cbiAgcHVibGljIGZvcm1hdFNlY3Rpb248ViwgVCBleHRlbmRzIERpZmZlcmVuY2U8Vj4+KFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgZW50cnlUeXBlOiBzdHJpbmcsXG4gICAgY29sbGVjdGlvbjogRGlmZmVyZW5jZUNvbGxlY3Rpb248ViwgVD4sXG4gICAgZm9ybWF0dGVyOiAodHlwZTogc3RyaW5nLCBpZDogc3RyaW5nLCBkaWZmOiBUKSA9PiB2b2lkID0gdGhpcy5mb3JtYXREaWZmZXJlbmNlLmJpbmQodGhpcykpIHtcblxuICAgIGlmIChjb2xsZWN0aW9uLmRpZmZlcmVuY2VDb3VudCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucHJpbnRTZWN0aW9uSGVhZGVyKHRpdGxlKTtcbiAgICBjb2xsZWN0aW9uLmZvckVhY2hEaWZmZXJlbmNlKChpZCwgZGlmZikgPT4gZm9ybWF0dGVyKGVudHJ5VHlwZSwgaWQsIGRpZmYpKTtcbiAgICB0aGlzLnByaW50U2VjdGlvbkZvb3RlcigpO1xuICB9XG5cbiAgcHVibGljIHByaW50U2VjdGlvbkhlYWRlcih0aXRsZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wcmludChjaGFsay51bmRlcmxpbmUoY2hhbGsuYm9sZCh0aXRsZSkpKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludFNlY3Rpb25Gb290ZXIoKSB7XG4gICAgdGhpcy5wcmludCgnJyk7XG4gIH1cblxuICAvKipcbiAgICogUHJpbnQgYSBzaW1wbGUgZGlmZmVyZW5jZSBmb3IgYSBnaXZlbiBuYW1lZCBlbnRpdHkuXG4gICAqXG4gICAqIEBwYXJhbSBsb2dpY2FsSWQgdGhlIG5hbWUgb2YgdGhlIGVudGl0eSB0aGF0IGlzIGRpZmZlcmVudC5cbiAgICogQHBhcmFtIGRpZmYgdGhlIGRpZmZlcmVuY2UgdG8gYmUgcmVuZGVyZWQuXG4gICAqL1xuICBwdWJsaWMgZm9ybWF0RGlmZmVyZW5jZSh0eXBlOiBzdHJpbmcsIGxvZ2ljYWxJZDogc3RyaW5nLCBkaWZmOiBEaWZmZXJlbmNlPGFueT4gfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoIWRpZmYgfHwgIWRpZmYuaXNEaWZmZXJlbnQpIHsgcmV0dXJuOyB9XG5cbiAgICBsZXQgdmFsdWU7XG5cbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWUoZGlmZi5vbGRWYWx1ZSwgY2hhbGsucmVkKTtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWUoZGlmZi5uZXdWYWx1ZSwgY2hhbGsuZ3JlZW4pO1xuICAgIGlmIChkaWZmLmlzQWRkaXRpb24pIHtcbiAgICAgIHZhbHVlID0gbmV3VmFsdWU7XG4gICAgfSBlbHNlIGlmIChkaWZmLmlzVXBkYXRlKSB7XG4gICAgICB2YWx1ZSA9IGAke29sZFZhbHVlfSB0byAke25ld1ZhbHVlfWA7XG4gICAgfSBlbHNlIGlmIChkaWZmLmlzUmVtb3ZhbCkge1xuICAgICAgdmFsdWUgPSBvbGRWYWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLnByaW50KGAke3RoaXMuZm9ybWF0UHJlZml4KGRpZmYpfSAke2NoYWxrLmN5YW4odHlwZSl9ICR7dGhpcy5mb3JtYXRMb2dpY2FsSWQobG9naWNhbElkKX06ICR7dmFsdWV9YCk7XG4gIH1cblxuICAvKipcbiAgICogUHJpbnQgYSByZXNvdXJjZSBkaWZmZXJlbmNlIGZvciBhIGdpdmVuIGxvZ2ljYWwgSUQuXG4gICAqXG4gICAqIEBwYXJhbSBsb2dpY2FsSWQgdGhlIGxvZ2ljYWwgSUQgb2YgdGhlIHJlc291cmNlIHRoYXQgY2hhbmdlZC5cbiAgICogQHBhcmFtIGRpZmYgICAgICB0aGUgY2hhbmdlIHRvIGJlIHJlbmRlcmVkLlxuICAgKi9cbiAgcHVibGljIGZvcm1hdFJlc291cmNlRGlmZmVyZW5jZShfdHlwZTogc3RyaW5nLCBsb2dpY2FsSWQ6IHN0cmluZywgZGlmZjogUmVzb3VyY2VEaWZmZXJlbmNlKSB7XG4gICAgaWYgKCFkaWZmLmlzRGlmZmVyZW50KSB7IHJldHVybjsgfVxuXG4gICAgY29uc3QgcmVzb3VyY2VUeXBlID0gZGlmZi5pc1JlbW92YWwgPyBkaWZmLm9sZFJlc291cmNlVHlwZSA6IGRpZmYubmV3UmVzb3VyY2VUeXBlO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICB0aGlzLnByaW50KGAke3RoaXMuZm9ybWF0UmVzb3VyY2VQcmVmaXgoZGlmZil9ICR7dGhpcy5mb3JtYXRWYWx1ZShyZXNvdXJjZVR5cGUsIGNoYWxrLmN5YW4pfSAke3RoaXMuZm9ybWF0TG9naWNhbElkKGxvZ2ljYWxJZCl9ICR7dGhpcy5mb3JtYXRJbXBhY3QoZGlmZi5jaGFuZ2VJbXBhY3QpfWApO1xuXG4gICAgaWYgKGRpZmYuaXNVcGRhdGUpIHtcbiAgICAgIGNvbnN0IGRpZmZlcmVuY2VDb3VudCA9IGRpZmYuZGlmZmVyZW5jZUNvdW50O1xuICAgICAgbGV0IHByb2Nlc3NlZENvdW50ID0gMDtcbiAgICAgIGRpZmYuZm9yRWFjaERpZmZlcmVuY2UoKF8sIG5hbWUsIHZhbHVlcykgPT4ge1xuICAgICAgICBwcm9jZXNzZWRDb3VudCArPSAxO1xuICAgICAgICB0aGlzLmZvcm1hdFRyZWVEaWZmKG5hbWUsIHZhbHVlcywgcHJvY2Vzc2VkQ291bnQgPT09IGRpZmZlcmVuY2VDb3VudCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0UmVzb3VyY2VQcmVmaXgoZGlmZjogUmVzb3VyY2VEaWZmZXJlbmNlKSB7XG4gICAgaWYgKGRpZmYuaXNJbXBvcnQpIHsgcmV0dXJuIElNUE9SVDsgfVxuXG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0UHJlZml4KGRpZmYpO1xuICB9XG5cbiAgcHVibGljIGZvcm1hdFByZWZpeDxUPihkaWZmOiBEaWZmZXJlbmNlPFQ+KSB7XG4gICAgaWYgKGRpZmYuaXNBZGRpdGlvbikgeyByZXR1cm4gQURESVRJT047IH1cbiAgICBpZiAoZGlmZi5pc1VwZGF0ZSkgeyByZXR1cm4gVVBEQVRFOyB9XG4gICAgaWYgKGRpZmYuaXNSZW1vdmFsKSB7IHJldHVybiBSRU1PVkFMOyB9XG4gICAgcmV0dXJuIGNoYWxrLndoaXRlKCdbP10nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIGJlIGZvcm1hdHRlZC5cbiAgICogQHBhcmFtIGNvbG9yIHRoZSBjb2xvciB0byBiZSB1c2VkLlxuICAgKlxuICAgKiBAcmV0dXJucyB0aGUgZm9ybWF0dGVkIHN0cmluZywgd2l0aCBjb2xvciBhcHBsaWVkLlxuICAgKi9cbiAgcHVibGljIGZvcm1hdFZhbHVlKHZhbHVlOiBhbnksIGNvbG9yOiAoc3RyOiBzdHJpbmcpID0+IHN0cmluZykge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgeyByZXR1cm4gY29sb3IodmFsdWUpOyB9XG4gICAgcmV0dXJuIGNvbG9yKEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGltcGFjdCB0aGUgaW1wYWN0IHRvIGJlIGZvcm1hdHRlZFxuICAgKiBAcmV0dXJucyBhIHVzZXItZnJpZW5kbHksIGNvbG9yZWQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgaW1wYWN0LlxuICAgKi9cbiAgcHVibGljIGZvcm1hdEltcGFjdChpbXBhY3Q6IFJlc291cmNlSW1wYWN0KSB7XG4gICAgc3dpdGNoIChpbXBhY3QpIHtcbiAgICAgIGNhc2UgUmVzb3VyY2VJbXBhY3QuTUFZX1JFUExBQ0U6XG4gICAgICAgIHJldHVybiBjaGFsay5pdGFsaWMoY2hhbGsueWVsbG93KCdtYXkgYmUgcmVwbGFjZWQnKSk7XG4gICAgICBjYXNlIFJlc291cmNlSW1wYWN0LldJTExfUkVQTEFDRTpcbiAgICAgICAgcmV0dXJuIGNoYWxrLml0YWxpYyhjaGFsay5ib2xkKGNoYWxrLnJlZCgncmVwbGFjZScpKSk7XG4gICAgICBjYXNlIFJlc291cmNlSW1wYWN0LldJTExfREVTVFJPWTpcbiAgICAgICAgcmV0dXJuIGNoYWxrLml0YWxpYyhjaGFsay5ib2xkKGNoYWxrLnJlZCgnZGVzdHJveScpKSk7XG4gICAgICBjYXNlIFJlc291cmNlSW1wYWN0LldJTExfT1JQSEFOOlxuICAgICAgICByZXR1cm4gY2hhbGsuaXRhbGljKGNoYWxrLnllbGxvdygnb3JwaGFuJykpO1xuICAgICAgY2FzZSBSZXNvdXJjZUltcGFjdC5XSUxMX0lNUE9SVDpcbiAgICAgICAgcmV0dXJuIGNoYWxrLml0YWxpYyhjaGFsay5ibHVlKCdpbXBvcnQnKSk7XG4gICAgICBjYXNlIFJlc291cmNlSW1wYWN0LldJTExfVVBEQVRFOlxuICAgICAgY2FzZSBSZXNvdXJjZUltcGFjdC5XSUxMX0NSRUFURTpcbiAgICAgIGNhc2UgUmVzb3VyY2VJbXBhY3QuTk9fQ0hBTkdFOlxuICAgICAgICByZXR1cm4gJyc7IC8vIG5vIGV4dHJhIGluZm8gaXMgZ2FpbmVkIGhlcmVcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyBhIHRyZWUgb2YgZGlmZmVyZW5jZXMgdW5kZXIgYSBwYXJ0aWN1bGFyIG5hbWUuXG4gICAqIEBwYXJhbSBuYW1lICAgIHRoZSBuYW1lIG9mIHRoZSByb290IG9mIHRoZSB0cmVlLlxuICAgKiBAcGFyYW0gZGlmZiAgICB0aGUgZGlmZmVyZW5jZSBvbiB0aGUgdHJlZS5cbiAgICogQHBhcmFtIGxhc3QgICAgd2hldGhlciB0aGlzIGlzIHRoZSBsYXN0IG5vZGUgb2YgYSBwYXJlbnQgdHJlZS5cbiAgICovXG4gIHB1YmxpYyBmb3JtYXRUcmVlRGlmZihuYW1lOiBzdHJpbmcsIGRpZmY6IERpZmZlcmVuY2U8YW55PiwgbGFzdDogYm9vbGVhbikge1xuICAgIGxldCBhZGRpdGlvbmFsSW5mbyA9ICcnO1xuICAgIGlmIChpc1Byb3BlcnR5RGlmZmVyZW5jZShkaWZmKSkge1xuICAgICAgaWYgKGRpZmYuY2hhbmdlSW1wYWN0ID09PSBSZXNvdXJjZUltcGFjdC5NQVlfUkVQTEFDRSkge1xuICAgICAgICBhZGRpdGlvbmFsSW5mbyA9ICcgKG1heSBjYXVzZSByZXBsYWNlbWVudCknO1xuICAgICAgfSBlbHNlIGlmIChkaWZmLmNoYW5nZUltcGFjdCA9PT0gUmVzb3VyY2VJbXBhY3QuV0lMTF9SRVBMQUNFKSB7XG4gICAgICAgIGFkZGl0aW9uYWxJbmZvID0gJyAocmVxdWlyZXMgcmVwbGFjZW1lbnQpJztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5wcmludCgnICVz4pSAICVzICVzJXMnLCBsYXN0ID8gJ+KUlCcgOiAn4pScJywgdGhpcy5jaGFuZ2VUYWcoZGlmZi5vbGRWYWx1ZSwgZGlmZi5uZXdWYWx1ZSksIG5hbWUsIGFkZGl0aW9uYWxJbmZvKTtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXRPYmplY3REaWZmKGRpZmYub2xkVmFsdWUsIGRpZmYubmV3VmFsdWUsIGAgJHtsYXN0ID8gJyAnIDogJ+KUgid9YCk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBvYmplY3RzLCBsb29raW5nIGZvciB0aGUgZGlmZmVyZW5jZXMgYXMgZGVlcCBhcyBwb3NzaWJsZSxcbiAgICogYW5kIHJlbmRlcmluZyBhIHRyZWUgZ3JhcGggb2YgdGhlIHBhdGggdW50aWwgdGhlIGRpZmZlcmVuY2UgaXMgZm91bmQuXG4gICAqXG4gICAqIEBwYXJhbSBvbGRPYmplY3QgIHRoZSBvbGQgb2JqZWN0LlxuICAgKiBAcGFyYW0gbmV3T2JqZWN0ICB0aGUgbmV3IG9iamVjdC5cbiAgICogQHBhcmFtIGxpbmVQcmVmaXggYSBwcmVmaXggKGluZGVudC1saWtlKSB0byBiZSB1c2VkIG9uIGV2ZXJ5IGxpbmUuXG4gICAqL1xuICBwdWJsaWMgZm9ybWF0T2JqZWN0RGlmZihvbGRPYmplY3Q6IGFueSwgbmV3T2JqZWN0OiBhbnksIGxpbmVQcmVmaXg6IHN0cmluZykge1xuICAgIGlmICgodHlwZW9mIG9sZE9iamVjdCAhPT0gdHlwZW9mIG5ld09iamVjdCkgfHwgQXJyYXkuaXNBcnJheShvbGRPYmplY3QpIHx8IHR5cGVvZiBvbGRPYmplY3QgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBvbGRPYmplY3QgPT09ICdudW1iZXInKSB7XG4gICAgICBpZiAob2xkT2JqZWN0ICE9PSB1bmRlZmluZWQgJiYgbmV3T2JqZWN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvbGRPYmplY3QgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBuZXdPYmplY3QgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgY29uc3Qgb2xkU3RyID0gSlNPTi5zdHJpbmdpZnkob2xkT2JqZWN0LCBudWxsLCAyKTtcbiAgICAgICAgICBjb25zdCBuZXdTdHIgPSBKU09OLnN0cmluZ2lmeShuZXdPYmplY3QsIG51bGwsIDIpO1xuICAgICAgICAgIGNvbnN0IGRpZmYgPSBfZGlmZlN0cmluZ3Mob2xkU3RyLCBuZXdTdHIsIHRoaXMuY29udGV4dCk7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaWZmLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLnByaW50KCclcyAgICVzICVzJywgbGluZVByZWZpeCwgaSA9PT0gMCA/ICfilJTilIAnIDogJyAgJywgZGlmZltpXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucHJpbnQoJyVzICAg4pSc4pSAICVzICVzJywgbGluZVByZWZpeCwgUkVNT1ZBTCwgdGhpcy5mb3JtYXRWYWx1ZShvbGRPYmplY3QsIGNoYWxrLnJlZCkpO1xuICAgICAgICAgIHRoaXMucHJpbnQoJyVzICAg4pSU4pSAICVzICVzJywgbGluZVByZWZpeCwgQURESVRJT04sIHRoaXMuZm9ybWF0VmFsdWUobmV3T2JqZWN0LCBjaGFsay5ncmVlbikpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKG9sZE9iamVjdCAhPT0gdW5kZWZpbmVkIC8qICYmIG5ld09iamVjdCA9PT0gdW5kZWZpbmVkICovKSB7XG4gICAgICAgIHRoaXMucHJpbnQoJyVzICAg4pSU4pSAICVzJywgbGluZVByZWZpeCwgdGhpcy5mb3JtYXRWYWx1ZShvbGRPYmplY3QsIGNoYWxrLnJlZCkpO1xuICAgICAgfSBlbHNlIC8qIGlmIChvbGRPYmplY3QgPT09IHVuZGVmaW5lZCAmJiBuZXdPYmplY3QgIT09IHVuZGVmaW5lZCkgKi8ge1xuICAgICAgICB0aGlzLnByaW50KCclcyAgIOKUlOKUgCAlcycsIGxpbmVQcmVmaXgsIHRoaXMuZm9ybWF0VmFsdWUobmV3T2JqZWN0LCBjaGFsay5ncmVlbikpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBrZXlTZXQgPSBuZXcgU2V0KE9iamVjdC5rZXlzKG9sZE9iamVjdCkpO1xuICAgIE9iamVjdC5rZXlzKG5ld09iamVjdCkuZm9yRWFjaChrID0+IGtleVNldC5hZGQoaykpO1xuICAgIGNvbnN0IGtleXMgPSBuZXcgQXJyYXkoLi4ua2V5U2V0KS5maWx0ZXIoayA9PiAhZGVlcEVxdWFsKG9sZE9iamVjdFtrXSwgbmV3T2JqZWN0W2tdKSkuc29ydCgpO1xuICAgIGNvbnN0IGxhc3RLZXkgPSBrZXlzW2tleXMubGVuZ3RoIC0gMV07XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgY29uc3Qgb2xkVmFsdWUgPSBvbGRPYmplY3Rba2V5XTtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gbmV3T2JqZWN0W2tleV07XG4gICAgICBjb25zdCB0cmVlUHJlZml4ID0ga2V5ID09PSBsYXN0S2V5ID8gJ+KUlCcgOiAn4pScJztcbiAgICAgIGlmIChvbGRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIG5ld1ZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5wcmludCgnJXMgICAlc+KUgCAlcyAlczonLCBsaW5lUHJlZml4LCB0cmVlUHJlZml4LCB0aGlzLmNoYW5nZVRhZyhvbGRWYWx1ZSwgbmV3VmFsdWUpLCBjaGFsay5ibHVlKGAuJHtrZXl9YCkpO1xuICAgICAgICB0aGlzLmZvcm1hdE9iamVjdERpZmYob2xkVmFsdWUsIG5ld1ZhbHVlLCBgJHtsaW5lUHJlZml4fSAgICR7a2V5ID09PSBsYXN0S2V5ID8gJyAnIDogJ+KUgid9YCk7XG4gICAgICB9IGVsc2UgaWYgKG9sZFZhbHVlICE9PSB1bmRlZmluZWQgLyogJiYgbmV3VmFsdWUgPT09IHVuZGVmaW5lZCAqLykge1xuICAgICAgICB0aGlzLnByaW50KCclcyAgICVz4pSAICVzIFJlbW92ZWQ6ICVzJywgbGluZVByZWZpeCwgdHJlZVByZWZpeCwgUkVNT1ZBTCwgY2hhbGsuYmx1ZShgLiR7a2V5fWApKTtcbiAgICAgIH0gZWxzZSAvKiBpZiAob2xkVmFsdWUgPT09IHVuZGVmaW5lZCAmJiBuZXdWYWx1ZSAhPT0gdW5kZWZpbmVkICovIHtcbiAgICAgICAgdGhpcy5wcmludCgnJXMgICAlc+KUgCAlcyBBZGRlZDogJXMnLCBsaW5lUHJlZml4LCB0cmVlUHJlZml4LCBBRERJVElPTiwgY2hhbGsuYmx1ZShgLiR7a2V5fWApKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIG9sZFZhbHVlIHRoZSBvbGQgdmFsdWUgb2YgYSBkaWZmZXJlbmNlLlxuICAgKiBAcGFyYW0gbmV3VmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiBhIGRpZmZlcmVuY2UuXG4gICAqXG4gICAqIEByZXR1cm5zIGEgdGFnIHRvIGJlIHJlbmRlcmVkIGluIHRoZSBkaWZmLCByZWZsZWN0aW5nIHdoZXRoZXIgdGhlIGRpZmZlcmVuY2VcbiAgICogICAgICB3YXMgYW4gQURESVRJT04sIFVQREFURSBvciBSRU1PVkFMLlxuICAgKi9cbiAgcHVibGljIGNoYW5nZVRhZyhvbGRWYWx1ZTogYW55IHwgdW5kZWZpbmVkLCBuZXdWYWx1ZTogYW55IHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgICBpZiAob2xkVmFsdWUgIT09IHVuZGVmaW5lZCAmJiBuZXdWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gVVBEQVRFO1xuICAgIH0gZWxzZSBpZiAob2xkVmFsdWUgIT09IHVuZGVmaW5lZCAvKiAmJiBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKi8pIHtcbiAgICAgIHJldHVybiBSRU1PVkFMO1xuICAgIH0gZWxzZSAvKiBpZiAob2xkVmFsdWUgPT09IHVuZGVmaW5lZCAmJiBuZXdWYWx1ZSAhPT0gdW5kZWZpbmVkKSAqLyB7XG4gICAgICByZXR1cm4gQURESVRJT047XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgJ2F3czpjZGs6cGF0aCcgbWV0YWRhdGEgaW4gdGhlIGRpZmYgYW5kIGFkZCBpdCB0byB0aGUgbG9naWNhbFRvUGF0aE1hcFxuICAgKlxuICAgKiBUaGVyZSBhcmUgbXVsdGlwbGUgc291cmNlcyBvZiBsb2dpY2FsSUQgLT4gcGF0aCBtYXBwaW5nczogc3ludGggbWV0YWRhdGFcbiAgICogYW5kIHJlc291cmNlIG1ldGFkYXRhLCBhbmQgd2UgY29tYmluZSBhbGwgc291cmNlcyBpbnRvIGEgc2luZ2xlIG1hcC5cbiAgICovXG4gIHB1YmxpYyByZWFkQ29uc3RydWN0UGF0aHNGcm9tKHRlbXBsYXRlRGlmZjogVGVtcGxhdGVEaWZmKSB7XG4gICAgZm9yIChjb25zdCBbbG9naWNhbElkLCByZXNvdXJjZURpZmZdIG9mIE9iamVjdC5lbnRyaWVzKHRlbXBsYXRlRGlmZi5yZXNvdXJjZXMpKSB7XG4gICAgICBpZiAoIXJlc291cmNlRGlmZikgeyBjb250aW51ZTsgfVxuXG4gICAgICBjb25zdCBvbGRQYXRoTWV0YWRhdGEgPSByZXNvdXJjZURpZmYub2xkVmFsdWU/Lk1ldGFkYXRhPy5bUEFUSF9NRVRBREFUQV9LRVldO1xuICAgICAgaWYgKG9sZFBhdGhNZXRhZGF0YSAmJiAhKGxvZ2ljYWxJZCBpbiB0aGlzLmxvZ2ljYWxUb1BhdGhNYXApKSB7XG4gICAgICAgIHRoaXMubG9naWNhbFRvUGF0aE1hcFtsb2dpY2FsSWRdID0gb2xkUGF0aE1ldGFkYXRhO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdQYXRoTWV0YWRhdGEgPSByZXNvdXJjZURpZmYubmV3VmFsdWU/Lk1ldGFkYXRhPy5bUEFUSF9NRVRBREFUQV9LRVldO1xuICAgICAgaWYgKG5ld1BhdGhNZXRhZGF0YSAmJiAhKGxvZ2ljYWxJZCBpbiB0aGlzLmxvZ2ljYWxUb1BhdGhNYXApKSB7XG4gICAgICAgIHRoaXMubG9naWNhbFRvUGF0aE1hcFtsb2dpY2FsSWRdID0gbmV3UGF0aE1ldGFkYXRhO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXRMb2dpY2FsSWQobG9naWNhbElkOiBzdHJpbmcpIHtcbiAgICAvLyBpZiB3ZSBoYXZlIGEgcGF0aCBpbiB0aGUgbWFwLCByZXR1cm4gaXRcbiAgICBjb25zdCBub3JtYWxpemVkID0gdGhpcy5ub3JtYWxpemVkTG9naWNhbElkUGF0aChsb2dpY2FsSWQpO1xuXG4gICAgaWYgKG5vcm1hbGl6ZWQpIHtcbiAgICAgIHJldHVybiBgJHtub3JtYWxpemVkfSAke2NoYWxrLmdyYXkobG9naWNhbElkKX1gO1xuICAgIH1cblxuICAgIHJldHVybiBsb2dpY2FsSWQ7XG4gIH1cblxuICBwdWJsaWMgbm9ybWFsaXplZExvZ2ljYWxJZFBhdGgobG9naWNhbElkOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIC8vIGlmIHdlIGhhdmUgYSBwYXRoIGluIHRoZSBtYXAsIHJldHVybiBpdFxuICAgIGNvbnN0IHBhdGggPSB0aGlzLmxvZ2ljYWxUb1BhdGhNYXBbbG9naWNhbElkXTtcbiAgICByZXR1cm4gcGF0aCA/IG5vcm1hbGl6ZVBhdGgocGF0aCkgOiB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBQYXRoIGlzIHN1cHBvc2VkIHRvIHN0YXJ0IHdpdGggXCIvc3RhY2stbmFtZVwiLiBJZiB0aGlzIGlzIHRoZSBjYXNlIChpLmUuIHBhdGggaGFzIG1vcmUgdGhhblxuICAgICAqIHR3byBjb21wb25lbnRzLCB3ZSByZW1vdmUgdGhlIGZpcnN0IHBhcnQuIE90aGVyd2lzZSwgd2UganVzdCB1c2UgdGhlIGZ1bGwgcGF0aC5cbiAgICAgKiBAcGFyYW0gcFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZVBhdGgocDogc3RyaW5nKSB7XG4gICAgICBpZiAocC5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgICAgcCA9IHAuc2xpY2UoMSk7XG4gICAgICB9XG5cbiAgICAgIGxldCBwYXJ0cyA9IHAuc3BsaXQoJy8nKTtcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHBhcnRzID0gcGFydHMuc2xpY2UoMSk7XG5cbiAgICAgICAgLy8gcmVtb3ZlIHRoZSBsYXN0IGNvbXBvbmVudCBpZiBpdCdzIFwiUmVzb3VyY2VcIiBvciBcIkRlZmF1bHRcIiAoaWYgd2UgaGF2ZSBtb3JlIHRoYW4gYSBzaW5nbGUgY29tcG9uZW50KVxuICAgICAgICBpZiAocGFydHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIGNvbnN0IGxhc3QgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICBpZiAobGFzdCA9PT0gJ1Jlc291cmNlJyB8fCBsYXN0ID09PSAnRGVmYXVsdCcpIHtcbiAgICAgICAgICAgIHBhcnRzID0gcGFydHMuc2xpY2UoMCwgcGFydHMubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcCA9IHBhcnRzLmpvaW4oJy8nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXRJYW1DaGFuZ2VzKGNoYW5nZXM6IElhbUNoYW5nZXMpIHtcbiAgICBpZiAoIWNoYW5nZXMuaGFzQ2hhbmdlcykgeyByZXR1cm47IH1cblxuICAgIGlmIChjaGFuZ2VzLnN0YXRlbWVudHMuaGFzQ2hhbmdlcykge1xuICAgICAgdGhpcy5wcmludFNlY3Rpb25IZWFkZXIoJ0lBTSBTdGF0ZW1lbnQgQ2hhbmdlcycpO1xuICAgICAgdGhpcy5wcmludChmb3JtYXRUYWJsZSh0aGlzLmRlZXBTdWJzdGl0dXRlQnJhY2VkTG9naWNhbElkcyhjaGFuZ2VzLnN1bW1hcml6ZVN0YXRlbWVudHMoKSksIHRoaXMuc3RyZWFtLmNvbHVtbnMpKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5tYW5hZ2VkUG9saWNpZXMuaGFzQ2hhbmdlcykge1xuICAgICAgdGhpcy5wcmludFNlY3Rpb25IZWFkZXIoJ0lBTSBQb2xpY3kgQ2hhbmdlcycpO1xuICAgICAgdGhpcy5wcmludChmb3JtYXRUYWJsZSh0aGlzLmRlZXBTdWJzdGl0dXRlQnJhY2VkTG9naWNhbElkcyhjaGFuZ2VzLnN1bW1hcml6ZU1hbmFnZWRQb2xpY2llcygpKSwgdGhpcy5zdHJlYW0uY29sdW1ucykpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXRTZWN1cml0eUdyb3VwQ2hhbmdlcyhjaGFuZ2VzOiBTZWN1cml0eUdyb3VwQ2hhbmdlcykge1xuICAgIGlmICghY2hhbmdlcy5oYXNDaGFuZ2VzKSB7IHJldHVybjsgfVxuXG4gICAgdGhpcy5wcmludFNlY3Rpb25IZWFkZXIoJ1NlY3VyaXR5IEdyb3VwIENoYW5nZXMnKTtcbiAgICB0aGlzLnByaW50KGZvcm1hdFRhYmxlKHRoaXMuZGVlcFN1YnN0aXR1dGVCcmFjZWRMb2dpY2FsSWRzKGNoYW5nZXMuc3VtbWFyaXplKCkpLCB0aGlzLnN0cmVhbS5jb2x1bW5zKSk7XG4gIH1cblxuICBwdWJsaWMgZGVlcFN1YnN0aXR1dGVCcmFjZWRMb2dpY2FsSWRzKHJvd3M6IHN0cmluZ1tdW10pOiBzdHJpbmdbXVtdIHtcbiAgICByZXR1cm4gcm93cy5tYXAocm93ID0+IHJvdy5tYXAodGhpcy5zdWJzdGl0dXRlQnJhY2VkTG9naWNhbElkcy5iaW5kKHRoaXMpKSk7XG4gIH1cblxuICAvKipcbiAgICogU3Vic3RpdHV0ZSBhbGwgc3RyaW5ncyBsaWtlICR7TG9nSWQueHh4fSB3aXRoIHRoZSBwYXRoIGluc3RlYWQgb2YgdGhlIGxvZ2ljYWwgSURcbiAgICovXG4gIHB1YmxpYyBzdWJzdGl0dXRlQnJhY2VkTG9naWNhbElkcyhzb3VyY2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHNvdXJjZS5yZXBsYWNlKC9cXCRcXHsoW14ufV0rKSguW159XSspP1xcfS9pZywgKF9tYXRjaCwgbG9nSWQsIHN1ZmZpeCkgPT4ge1xuICAgICAgcmV0dXJuICckeycgKyAodGhpcy5ub3JtYWxpemVkTG9naWNhbElkUGF0aChsb2dJZCkgfHwgbG9nSWQpICsgKHN1ZmZpeCB8fCAnJykgKyAnfSc7XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIHBhdGNoIGFzIHJldHVybmVkIGJ5IGBgZGlmZi5zdHJ1Y3R1cmVkUGF0Y2hgYC5cbiAqL1xuaW50ZXJmYWNlIFBhdGNoIHtcbiAgLyoqXG4gICAqIEh1bmtzIGluIHRoZSBwYXRjaC5cbiAgICovXG4gIGh1bmtzOiBSZWFkb25seUFycmF5PFBhdGNoSHVuaz47XG59XG5cbi8qKlxuICogQSBodW5rIGluIGEgcGF0Y2ggcHJvZHVjZWQgYnkgYGBkaWZmLnN0cnVjdHVyZWRQYXRjaGBgLlxuICovXG5pbnRlcmZhY2UgUGF0Y2hIdW5rIHtcbiAgb2xkU3RhcnQ6IG51bWJlcjtcbiAgb2xkTGluZXM6IG51bWJlcjtcbiAgbmV3U3RhcnQ6IG51bWJlcjtcbiAgbmV3TGluZXM6IG51bWJlcjtcbiAgbGluZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB1bmlmaWVkIGRpZmYgb2YgdHdvIHN0cmluZ3MuXG4gKlxuICogQHBhcmFtIG9sZFN0ciAgdGhlIFwib2xkXCIgdmVyc2lvbiBvZiB0aGUgc3RyaW5nLlxuICogQHBhcmFtIG5ld1N0ciAgdGhlIFwibmV3XCIgdmVyc2lvbiBvZiB0aGUgc3RyaW5nLlxuICogQHBhcmFtIGNvbnRleHQgdGhlIG51bWJlciBvZiBjb250ZXh0IGxpbmVzIHRvIHVzZSBpbiBhcmJpdHJhcnkgSlNPTiBkaWZmLlxuICpcbiAqIEByZXR1cm5zIGFuIGFycmF5IG9mIGRpZmYgbGluZXMuXG4gKi9cbmZ1bmN0aW9uIF9kaWZmU3RyaW5ncyhvbGRTdHI6IHN0cmluZywgbmV3U3RyOiBzdHJpbmcsIGNvbnRleHQ6IG51bWJlcik6IHN0cmluZ1tdIHtcbiAgY29uc3QgcGF0Y2g6IFBhdGNoID0gc3RydWN0dXJlZFBhdGNoKG51bGwsIG51bGwsIG9sZFN0ciwgbmV3U3RyLCBudWxsLCBudWxsLCB7IGNvbnRleHQgfSk7XG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgaHVuayBvZiBwYXRjaC5odW5rcykge1xuICAgIHJlc3VsdC5wdXNoKGNoYWxrLm1hZ2VudGEoYEBAIC0ke2h1bmsub2xkU3RhcnR9LCR7aHVuay5vbGRMaW5lc30gKyR7aHVuay5uZXdTdGFydH0sJHtodW5rLm5ld0xpbmVzfSBAQGApKTtcbiAgICBjb25zdCBiYXNlSW5kZW50ID0gX2ZpbmRJbmRlbnQoaHVuay5saW5lcyk7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIGh1bmsubGluZXMpIHtcbiAgICAgIC8vIERvbid0IGNhcmUgYWJvdXQgdGVybWluYXRpb24gbmV3bGluZS5cbiAgICAgIGlmIChsaW5lID09PSAnXFxcXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlJykgeyBjb250aW51ZTsgfVxuICAgICAgY29uc3QgbWFya2VyID0gbGluZS5jaGFyQXQoMCk7XG4gICAgICBjb25zdCB0ZXh0ID0gbGluZS5zbGljZSgxICsgYmFzZUluZGVudCk7XG4gICAgICBzd2l0Y2ggKG1hcmtlcikge1xuICAgICAgICBjYXNlICcgJzpcbiAgICAgICAgICByZXN1bHQucHVzaChgJHtDT05URVhUfSAke3RleHR9YCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJysnOlxuICAgICAgICAgIHJlc3VsdC5wdXNoKGNoYWxrLmJvbGQoYCR7QURESVRJT059ICR7Y2hhbGsuZ3JlZW4odGV4dCl9YCkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICctJzpcbiAgICAgICAgICByZXN1bHQucHVzaChjaGFsay5ib2xkKGAke1JFTU9WQUx9ICR7Y2hhbGsucmVkKHRleHQpfWApKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgZGlmZiBtYXJrZXI6ICR7bWFya2VyfSAoZnVsbCBsaW5lOiAke2xpbmV9KWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xuXG4gIGZ1bmN0aW9uIF9maW5kSW5kZW50KGxpbmVzOiBzdHJpbmdbXSk6IG51bWJlciB7XG4gICAgbGV0IGluZGVudCA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xuICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBsaW5lLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChsaW5lLmNoYXJBdChpKSAhPT0gJyAnKSB7XG4gICAgICAgICAgaW5kZW50ID0gaW5kZW50ID4gaSAtIDEgPyBpIC0gMSA6IGluZGVudDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaW5kZW50O1xuICB9XG59XG4iXX0= /***/ }), @@ -10948,7 +11448,7 @@ function defaultResource(resource, statements) { statements.forEach(s => s.resources.replaceStar(resource)); return statements; } -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFtLWNoYW5nZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpYW0tY2hhbmdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvRUFBeUY7QUFDekYsK0JBQStCO0FBQy9CLHFEQUE4RTtBQUM5RSwyQ0FBK0Y7QUFHL0YsMENBQWlEO0FBQ2pELDREQUF3RDtBQUN4RCxrQ0FBb0Y7QUFPcEY7O0dBRUc7QUFDSCxNQUFhLFVBQVU7SUFnQnJCLFlBQVksS0FBc0I7UUFIbEIsZUFBVSxHQUFHLElBQUksNkJBQWtCLEVBQWEsQ0FBQztRQUNqRCxvQkFBZSxHQUFHLElBQUksNkJBQWtCLEVBQTJCLENBQUM7UUFHbEYsS0FBSyxNQUFNLGNBQWMsSUFBSSxLQUFLLENBQUMsZUFBZSxFQUFFO1lBQ2xELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN6QztRQUNELEtBQUssTUFBTSxjQUFjLElBQUksS0FBSyxDQUFDLGVBQWUsRUFBRTtZQUNsRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDekM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQVcsb0JBQW9CO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUM7ZUFDM0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxD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QyxDQUFDLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzdELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsZUFBZSxDQUFDLFFBQWdCLEVBQUUsVUFBdUI7SUFDaEUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDNUQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDM0QsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3BlcnR5U2NydXRpbnlUeXBlLCBSZXNvdXJjZVNjcnV0aW55VHlwZSB9IGZyb20gJ0Bhd3MtY2RrL3NlcnZpY2Utc3BlYy10eXBlcyc7XG5pbXBvcnQgKiBhcyBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgeyBNYW5hZ2VkUG9saWN5QXR0YWNobWVudCwgTWFuYWdlZFBvbGljeUpzb24gfSBmcm9tICcuL21hbmFnZWQtcG9saWN5JztcbmltcG9ydCB7IHBhcnNlTGFtYmRhUGVybWlzc2lvbiwgcGFyc2VTdGF0ZW1lbnRzLCBTdGF0ZW1lbnQsIFN0YXRlbWVudEpzb24gfSBmcm9tICcuL3N0YXRlbWVudCc7XG5pbXBvcnQgeyBNYXliZVBhcnNlZCB9IGZyb20gJy4uL2RpZmYvbWF5YmUtcGFyc2VkJztcbmltcG9ydCB7IFByb3BlcnR5Q2hhbmdlLCBQcm9wZXJ0eU1hcCwgUmVzb3VyY2VDaGFuZ2UgfSBmcm9tICcuLi9kaWZmL3R5cGVzJztcbmltcG9ydCB7IERpZmZhYmxlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2RpZmZhYmxlJztcbmltcG9ydCB7IHJlbmRlckludHJpbnNpY3MgfSBmcm9tICcuLi9yZW5kZXItaW50cmluc2ljcyc7XG5pbXBvcnQgeyBkZWVwUmVtb3ZlVW5kZWZpbmVkLCBkcm9wSWZFbXB0eSwgZmxhdE1hcCwgbWFrZUNvbXBhcmF0b3IgfSBmcm9tICcuLi91dGlsJztcblxuZXhwb3J0IGludGVyZmFjZSBJYW1DaGFuZ2VzUHJvcHMge1xuICBwcm9wZXJ0eUNoYW5nZXM6IFByb3BlcnR5Q2hhbmdlW107XG4gIHJlc291cmNlQ2hhbmdlczogUmVzb3VyY2VDaGFuZ2VbXTtcbn1cblxuLyoqXG4gKiBDaGFuZ2VzIHRvIElBTSBzdGF0ZW1lbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBJYW1DaGFuZ2VzIHtcbiAgcHVibGljIHN0YXRpYyBJYW1Qcm9wZXJ0eVNjcnV0aW5pZXMgPSBbXG4gICAgUHJvcGVydHlTY3J1dGlueVR5cGUuSW5saW5lSWRlbnRpdHlQb2xpY2llcyxcbiAgICBQcm9wZXJ0eVNjcnV0aW55VHlwZS5JbmxpbmVSZXNvdXJjZVBvbGljeSxcbiAgICBQcm9wZXJ0eVNjcnV0aW55VHlwZS5NYW5hZ2VkUG9saWNpZXMsXG4gIF07XG5cbiAgcHVibGljIHN0YXRpYyBJYW1SZXNvdXJjZVNjcnV0aW5pZXMgPSBbXG4gICAgUmVzb3VyY2VTY3J1dGlueVR5cGUuUmVzb3VyY2VQb2xpY3lSZXNvdXJjZSxcbiAgICBSZXNvdXJjZVNjcnV0aW55VHlwZS5JZGVudGl0eVBvbGljeVJlc291cmNlLFxuICAgIFJlc291cmNlU2NydXRpbnlUeXBlLkxhbWJkYVBlcm1pc3Npb24sXG4gIF07XG5cbiAgcHVibGljIHJlYWRvbmx5IHN0YXRlbWVudHMgPSBuZXcgRGlmZmFibGVDb2xsZWN0aW9uPFN0YXRlbWVudD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IG1hbmFnZWRQb2xpY2llcyA9IG5ldyBEaWZmYWJsZUNvbGxlY3Rpb248TWFuYWdlZFBvbGljeUF0dGFjaG1lbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IElhbUNoYW5nZXNQcm9wcykge1xuICAgIGZvciAoY29uc3QgcHJvcGVydHlDaGFuZ2Ugb2YgcHJvcHMucHJvcGVydHlDaGFuZ2VzKSB7XG4gICAgICB0aGlzLnJlYWRQcm9wZXJ0eUNoYW5nZShwcm9wZXJ0eUNoYW5nZSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgcmVzb3VyY2VDaGFuZ2Ugb2YgcHJvcHMucmVzb3VyY2VDaGFuZ2VzKSB7XG4gICAgICB0aGlzLnJlYWRSZXNvdXJjZUNoYW5nZShyZXNvdXJjZUNoYW5nZSk7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZW1lbnRzLmNhbGN1bGF0ZURpZmYoKTtcbiAgICB0aGlzLm1hbmFnZWRQb2xpY2llcy5jYWxjdWxhdGVEaWZmKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0NoYW5nZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50cy5oYXNDaGFuZ2VzIHx8IHRoaXMubWFuYWdlZFBvbGljaWVzLmhhc0NoYW5nZXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGNoYW5nZXMgaW5jbHVkZSBicm9hZGVuZWQgcGVybWlzc2lvbnNcbiAgICpcbiAgICogUGVybWlzc2lvbnMgYXJlIGJyb2FkZW5lZCBpZiBwb3NpdGl2ZSBzdGF0ZW1lbnRzIGFyZSBhZGRlZCBvclxuICAgKiBuZWdhdGl2ZSBzdGF0ZW1lbnRzIGFyZSByZW1vdmVkLCBvciBpZiBtYW5hZ2VkIHBvbGljaWVzIGFyZSBhZGRlZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgcGVybWlzc2lvbnNCcm9hZGVuZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50cy5hZGRpdGlvbnMuc29tZShzID0+ICFzLmlzTmVnYXRpdmVTdGF0ZW1lbnQpXG4gICAgICAgIHx8IHRoaXMuc3RhdGVtZW50cy5yZW1vdmFscy5zb21lKHMgPT4gcy5pc05lZ2F0aXZlU3RhdGVtZW50KVxuICAgICAgICB8fCB0aGlzLm1hbmFnZWRQb2xpY2llcy5oYXNBZGRpdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgc3VtbWFyeSB0YWJsZSBvZiBjaGFuZ2VzXG4gICAqL1xuICBwdWJsaWMgc3VtbWFyaXplU3RhdGVtZW50cygpOiBzdHJpbmdbXVtdIHtcbiAgICBjb25zdCByZXQ6IHN0cmluZ1tdW10gPSBbXTtcblxuICAgIGNvbnN0IGhlYWRlciA9IFsnJywgJ1Jlc291cmNlJywgJ0VmZmVjdCcsICdBY3Rpb24nLCAnUHJpbmNpcGFsJywgJ0NvbmRpdGlvbiddO1xuXG4gICAgLy8gRmlyc3QgZ2VuZXJhdGUgYWxsIGxpbmVzLCB0aGVuIHNvcnQgb24gUmVzb3VyY2Ugc28gdGhhdCBzaW1pbGFyIHJlc291cmNlcyBhcmUgdG9nZXRoZXJcbiAgICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiB0aGlzLnN0YXRlbWVudHMuYWRkaXRpb25zKSB7XG4gICAgICBjb25zdCByZW5kZXJlZFN0YXRlbWVudCA9IHN0YXRlbWVudC5yZW5kZXIoKTtcbiAgICAgIHJldC5wdXNoKFtcbiAgICAgICAgJysnLFxuICAgICAgICByZW5kZXJlZFN0YXRlbWVudC5yZXNvdXJjZSxcbiAgICAgICAgcmVuZGVyZWRTdGF0ZW1lbnQuZWZmZWN0LFxuICAgICAgICByZW5kZXJlZFN0YXRlbWVudC5hY3Rpb24sXG4gICAgICAgIHJlbmRlcmVkU3RhdGVtZW50LnByaW5jaXBhbCxcbiAgICAgICAgcmVuZGVyZWRTdGF0ZW1lbnQuY29uZGl0aW9uLFxuICAgICAgXS5tYXAocyA9PiBjaGFsay5ncmVlbihzKSkpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiB0aGlzLnN0YXRlbWVudHMucmVtb3ZhbHMpIHtcbiAgICAgIGNvbnN0IHJlbmRlcmVkU3RhdGVtZW50ID0gc3RhdGVtZW50LnJlbmRlcigpO1xuICAgICAgcmV0LnB1c2goW1xuICAgICAgICBjaGFsay5yZWQoJy0nKSxcbiAgICAgICAgcmVuZGVyZWRTdGF0ZW1lbnQucmVzb3VyY2UsXG4gICAgICAgIHJlbmRlcmVkU3RhdGVtZW50LmVmZmVjdCxcbiAgICAgICAgcmVuZGVyZWRTdGF0ZW1lbnQuYWN0aW9uLFxuICAgICAgICByZW5kZXJlZFN0YXRlbWVudC5wcmluY2lwYWwsXG4gICAgICAgIHJlbmRlcmVkU3RhdGVtZW50LmNvbmRpdGlvbixcbiAgICAgIF0ubWFwKHMgPT4gY2hhbGsucmVkKHMpKSk7XG4gICAgfVxuXG4gICAgLy8gU29ydCBieSAybmQgY29sdW1uXG4gICAgcmV0LnNvcnQobWFrZUNvbXBhcmF0b3IoKHJvdzogc3RyaW5nW10pID0+IFtyb3dbMV1dKSk7XG5cbiAgICByZXQuc3BsaWNlKDAsIDAsIGhlYWRlcik7XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHVibGljIHN1bW1hcml6ZU1hbmFnZWRQb2xpY2llcygpOiBzdHJpbmdbXVtdIHtcbiAgICBjb25zdCByZXQ6IHN0cmluZ1tdW10gPSBbXTtcbiAgICBjb25zdCBoZWFkZXIgPSBbJycsICdSZXNvdXJjZScsICdNYW5hZ2VkIFBvbGljeSBBUk4nXTtcblxuICAgIGZvciAoY29uc3QgYXR0IG9mIHRoaXMubWFuYWdlZFBvbGljaWVzLmFkZGl0aW9ucykge1xuICAgICAgcmV0LnB1c2goW1xuICAgICAgICAnKycsXG4gICAgICAgIGF0dC5pZGVudGl0eUFybixcbiAgICAgICAgYXR0Lm1hbmFnZWRQb2xpY3lBcm4sXG4gICAgICBdLm1hcChzID0+IGNoYWxrLmdyZWVuKHMpKSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgYXR0IG9mIHRoaXMubWFuYWdlZFBvbGljaWVzLnJlbW92YWxzKSB7XG4gICAgICByZXQucHVzaChbXG4gICAgICAgICctJyxcbiAgICAgICAgYXR0LmlkZW50aXR5QXJuLFxuICAgICAgICBhdHQubWFuYWdlZFBvbGljeUFybixcbiAgICAgIF0ubWFwKHMgPT4gY2hhbGsucmVkKHMpKSk7XG4gICAgfVxuXG4gICAgLy8gU29ydCBieSAybmQgY29sdW1uXG4gICAgcmV0LnNvcnQobWFrZUNvbXBhcmF0b3IoKHJvdzogc3RyaW5nW10pID0+IFtyb3dbMV1dKSk7XG5cbiAgICByZXQuc3BsaWNlKDAsIDAsIGhlYWRlcik7XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1hY2hpbmUtcmVhZGFibGUgdmVyc2lvbiBvZiB0aGUgY2hhbmdlcy5cbiAgICogVGhpcyBpcyBvbmx5IHVzZWQgaW4gdGVzdHMuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF90b0pzb24oKTogSWFtQ2hhbmdlc0pzb24ge1xuICAgIHJldHVybiBkZWVwUmVtb3ZlVW5kZWZpbmVkKHtcbiAgICAgIHN0YXRlbWVudEFkZGl0aW9uczogZHJvcElmRW1wdHkodGhpcy5zdGF0ZW1lbnRzLmFkZGl0aW9ucy5tYXAocyA9PiBzLl90b0pzb24oKSkpLFxuICAgICAgc3RhdGVtZW50UmVtb3ZhbHM6IGRyb3BJZkVtcHR5KHRoaXMuc3RhdGVtZW50cy5yZW1vdmFscy5tYXAocyA9PiBzLl90b0pzb24oKSkpLFxuICAgICAgbWFuYWdlZFBvbGljeUFkZGl0aW9uczogZHJvcElmRW1wdHkodGhpcy5tYW5hZ2VkUG9saWNpZXMuYWRkaXRpb25zLm1hcChzID0+IHMuX3RvSnNvbigpKSksXG4gICAgICBtYW5hZ2VkUG9saWN5UmVtb3ZhbHM6IGRyb3BJZkVtcHR5KHRoaXMubWFuYWdlZFBvbGljaWVzLnJlbW92YWxzLm1hcChzID0+IHMuX3RvSnNvbigpKSksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRQcm9wZXJ0eUNoYW5nZShwcm9wZXJ0eUNoYW5nZTogUHJvcGVydHlDaGFuZ2UpIHtcbiAgICBzd2l0Y2ggKHByb3BlcnR5Q2hhbmdlLnNjcnV0aW55VHlwZSkge1xuICAgICAgY2FzZSBQcm9wZXJ0eVNjcnV0aW55VHlwZS5JbmxpbmVJZGVudGl0eVBvbGljaWVzOlxuICAgICAgICAvLyBBV1M6OklBTTo6eyBSb2xlIHwgVXNlciB8IEdyb3VwIH0uUG9saWNpZXNcbiAgICAgICAgdGhpcy5zdGF0ZW1lbnRzLmFkZE9sZCguLi50aGlzLnJlYWRJZGVudGl0eVBvbGljaWVzKHByb3BlcnR5Q2hhbmdlLm9sZFZhbHVlLCBwcm9wZXJ0eUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkTmV3KC4uLnRoaXMucmVhZElkZW50aXR5UG9saWNpZXMocHJvcGVydHlDaGFuZ2UubmV3VmFsdWUsIHByb3BlcnR5Q2hhbmdlLnJlc291cmNlTG9naWNhbElkKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQcm9wZXJ0eVNjcnV0aW55VHlwZS5JbmxpbmVSZXNvdXJjZVBvbGljeTpcbiAgICAgICAgLy8gQW55IFBvbGljeURvY3VtZW50IG9uIGEgcmVzb3VyY2UgKGluY2x1ZGluZyBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQpXG4gICAgICAgIHRoaXMuc3RhdGVtZW50cy5hZGRPbGQoLi4udGhpcy5yZWFkUmVzb3VyY2VTdGF0ZW1lbnRzKHByb3BlcnR5Q2hhbmdlLm9sZFZhbHVlLCBwcm9wZXJ0eUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkTmV3KC4uLnRoaXMucmVhZFJlc291cmNlU3RhdGVtZW50cyhwcm9wZXJ0eUNoYW5nZS5uZXdWYWx1ZSwgcHJvcGVydHlDaGFuZ2UucmVzb3VyY2VMb2dpY2FsSWQpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFByb3BlcnR5U2NydXRpbnlUeXBlLk1hbmFnZWRQb2xpY2llczpcbiAgICAgICAgLy8gSnVzdCBhIGxpc3Qgb2YgbWFuYWdlZCBwb2xpY2llc1xuICAgICAgICB0aGlzLm1hbmFnZWRQb2xpY2llcy5hZGRPbGQoLi4udGhpcy5yZWFkTWFuYWdlZFBvbGljaWVzKHByb3BlcnR5Q2hhbmdlLm9sZFZhbHVlLCBwcm9wZXJ0eUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICB0aGlzLm1hbmFnZWRQb2xpY2llcy5hZGROZXcoLi4udGhpcy5yZWFkTWFuYWdlZFBvbGljaWVzKHByb3BlcnR5Q2hhbmdlLm5ld1ZhbHVlLCBwcm9wZXJ0eUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlYWRSZXNvdXJjZUNoYW5nZShyZXNvdXJjZUNoYW5nZTogUmVzb3VyY2VDaGFuZ2UpIHtcbiAgICBzd2l0Y2ggKHJlc291cmNlQ2hhbmdlLnNjcnV0aW55VHlwZSkge1xuICAgICAgY2FzZSBSZXNvdXJjZVNjcnV0aW55VHlwZS5JZGVudGl0eVBvbGljeVJlc291cmNlOlxuICAgICAgICAvLyBBV1M6OklBTTo6UG9saWN5XG4gICAgICAgIHRoaXMuc3RhdGVtZW50cy5hZGRPbGQoLi4udGhpcy5yZWFkSWRlbnRpdHlQb2xpY3lSZXNvdXJjZShyZXNvdXJjZUNoYW5nZS5vbGRQcm9wZXJ0aWVzKSk7XG4gICAgICAgIHRoaXMuc3RhdGVtZW50cy5hZGROZXcoLi4udGhpcy5yZWFkSWRlbnRpdHlQb2xpY3lSZXNvdXJjZShyZXNvdXJjZUNoYW5nZS5uZXdQcm9wZXJ0aWVzKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBSZXNvdXJjZVNjcnV0aW55VHlwZS5SZXNvdXJjZVBvbGljeVJlc291cmNlOlxuICAgICAgICAvLyBBV1M6Oio6OntCdWNrZXQsUXVldWUsVG9waWN9UG9saWN5XG4gICAgICAgIHRoaXMuc3RhdGVtZW50cy5hZGRPbGQoLi4udGhpcy5yZWFkUmVzb3VyY2VQb2xpY3lSZXNvdXJjZShyZXNvdXJjZUNoYW5nZS5vbGRQcm9wZXJ0aWVzKSk7XG4gICAgICAgIHRoaXMuc3RhdGVtZW50cy5hZGROZXcoLi4udGhpcy5yZWFkUmVzb3VyY2VQb2xpY3lSZXNvdXJjZShyZXNvdXJjZUNoYW5nZS5uZXdQcm9wZXJ0aWVzKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBSZXNvdXJjZVNjcnV0aW55VHlwZS5MYW1iZGFQZXJtaXNzaW9uOlxuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkT2xkKC4uLnRoaXMucmVhZExhbWJkYVN0YXRlbWVudHMocmVzb3VyY2VDaGFuZ2Uub2xkUHJvcGVydGllcykpO1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkTmV3KC4uLnRoaXMucmVhZExhbWJkYVN0YXRlbWVudHMocmVzb3VyY2VDaGFuZ2UubmV3UHJvcGVydGllcykpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgYSBsaXN0IG9mIHBvbGljaWVzIG9uIGFuIGlkZW50aXR5XG4gICAqL1xuICBwcml2YXRlIHJlYWRJZGVudGl0eVBvbGljaWVzKHBvbGljaWVzOiBhbnksIGxvZ2ljYWxJZDogc3RyaW5nKTogU3RhdGVtZW50W10ge1xuICAgIGlmIChwb2xpY2llcyA9PT0gdW5kZWZpbmVkIHx8ICFBcnJheS5pc0FycmF5KHBvbGljaWVzKSkgeyByZXR1cm4gW107IH1cblxuICAgIGNvbnN0IGFwcGxpZXNUb1ByaW5jaXBhbCA9ICdBV1M6JHsnICsgbG9naWNhbElkICsgJ30nO1xuXG4gICAgcmV0dXJuIGZsYXRNYXAocG9saWNpZXMsIChwb2xpY3k6IGFueSkgPT4ge1xuICAgICAgLy8gY2hlY2sgaWYgdGhlIFBvbGljeSBpdHNlbGYgaXMgbm90IGFuIGludHJpbnNpYywgbGlrZSBhbiBGbjo6SWZcbiAgICAgIGNvbnN0IHVucGFyc2VkU3RhdGVtZW50ID0gcG9saWN5LlBvbGljeURvY3VtZW50Py5TdGF0ZW1lbnRcbiAgICAgICAgPyBwb2xpY3kuUG9saWN5RG9jdW1lbnQuU3RhdGVtZW50XG4gICAgICAgIDogcG9saWN5O1xuICAgICAgcmV0dXJuIGRlZmF1bHRQcmluY2lwYWwoYXBwbGllc1RvUHJpbmNpcGFsLCBwYXJzZVN0YXRlbWVudHMocmVuZGVySW50cmluc2ljcyh1bnBhcnNlZFN0YXRlbWVudCkpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBhbiBJQU06OlBvbGljeSByZXNvdXJjZVxuICAgKi9cbiAgcHJpdmF0ZSByZWFkSWRlbnRpdHlQb2xpY3lSZXNvdXJjZShwcm9wZXJ0aWVzOiBhbnkpOiBTdGF0ZW1lbnRbXSB7XG4gICAgaWYgKHByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gW107IH1cblxuICAgIHByb3BlcnRpZXMgPSByZW5kZXJJbnRyaW5zaWNzKHByb3BlcnRpZXMpO1xuXG4gICAgY29uc3QgcHJpbmNpcGFscyA9IChwcm9wZXJ0aWVzLkdyb3VwcyB8fCBbXSkuY29uY2F0KHByb3BlcnRpZXMuVXNlcnMgfHwgW10pLmNvbmNhdChwcm9wZXJ0aWVzLlJvbGVzIHx8IFtdKTtcbiAgICByZXR1cm4gZmxhdE1hcChwcmluY2lwYWxzLCAocHJpbmNpcGFsOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHJlZiA9ICdBV1M6JyArIHByaW5jaXBhbDtcbiAgICAgIHJldHVybiBkZWZhdWx0UHJpbmNpcGFsKHJlZiwgcGFyc2VTdGF0ZW1lbnRzKHByb3BlcnRpZXMuUG9saWN5RG9jdW1lbnQuU3RhdGVtZW50KSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRSZXNvdXJjZVN0YXRlbWVudHMocG9saWN5OiBhbnksIGxvZ2ljYWxJZDogc3RyaW5nKTogU3RhdGVtZW50W10ge1xuICAgIGlmIChwb2xpY3kgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gW107IH1cblxuICAgIGNvbnN0IGFwcGxpZXNUb1Jlc291cmNlID0gJyR7JyArIGxvZ2ljYWxJZCArICcuQXJufSc7XG4gICAgcmV0dXJuIGRlZmF1bHRSZXNvdXJjZShhcHBsaWVzVG9SZXNvdXJjZSwgcGFyc2VTdGF0ZW1lbnRzKHJlbmRlckludHJpbnNpY3MocG9saWN5LlN0YXRlbWVudCkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBhbiBBV1M6Oio6OntCdWNrZXQsVG9waWMsUXVldWV9cG9saWN5XG4gICAqL1xuICBwcml2YXRlIHJlYWRSZXNvdXJjZVBvbGljeVJlc291cmNlKHByb3BlcnRpZXM6IGFueSk6IFN0YXRlbWVudFtdIHtcbiAgICBpZiAocHJvcGVydGllcyA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBbXTsgfVxuXG4gICAgcHJvcGVydGllcyA9IHJlbmRlckludHJpbnNpY3MocHJvcGVydGllcyk7XG5cbiAgICBjb25zdCBwb2xpY3lLZXlzID0gT2JqZWN0LmtleXMocHJvcGVydGllcykuZmlsdGVyKGtleSA9PiBrZXkuaW5kZXhPZignUG9saWN5JykgPiAtMSk7XG5cbiAgICAvLyBGaW5kIHRoZSBrZXkgdGhhdCBpZGVudGlmaWVzIHRoZSByZXNvdXJjZShzKSB0aGlzIHBvbGljeSBhcHBsaWVzIHRvXG4gICAgY29uc3QgcmVzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMocHJvcGVydGllcykuZmlsdGVyKGtleSA9PiAhcG9saWN5S2V5cy5pbmNsdWRlcyhrZXkpICYmICFrZXkuZW5kc1dpdGgoJ05hbWUnKSk7XG4gICAgbGV0IHJlc291cmNlcyA9IHJlc291cmNlS2V5cy5sZW5ndGggPT09IDEgPyBwcm9wZXJ0aWVzW3Jlc291cmNlS2V5c1swXV0gOiBbJz8/PyddO1xuXG4gICAgLy8gRm9yIHNvbWUgcmVzb3VyY2VzLCB0aGlzIGlzIGEgc2luZ2xldG9uIHN0cmluZywgZm9yIHNvbWUgaXQncyBhbiBhcnJheVxuICAgIGlmICghQXJyYXkuaXNBcnJheShyZXNvdXJjZXMpKSB7XG4gICAgICByZXNvdXJjZXMgPSBbcmVzb3VyY2VzXTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmxhdE1hcChyZXNvdXJjZXMsIChyZXNvdXJjZTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gZGVmYXVsdFJlc291cmNlKHJlc291cmNlLCBwYXJzZVN0YXRlbWVudHMocHJvcGVydGllc1twb2xpY3lLZXlzWzBdXS5TdGF0ZW1lbnQpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZE1hbmFnZWRQb2xpY2llcyhwb2xpY3lBcm5zOiBhbnksIGxvZ2ljYWxJZDogc3RyaW5nKTogTWFuYWdlZFBvbGljeUF0dGFjaG1lbnRbXSB7XG4gICAgaWYgKCFwb2xpY3lBcm5zKSB7IHJldHVybiBbXTsgfVxuXG4gICAgY29uc3QgcmVwID0gJyR7JyArIGxvZ2ljYWxJZCArICd9JztcbiAgICByZXR1cm4gTWFuYWdlZFBvbGljeUF0dGFjaG1lbnQucGFyc2VNYW5hZ2VkUG9saWNpZXMocmVwLCByZW5kZXJJbnRyaW5zaWNzKHBvbGljeUFybnMpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZExhbWJkYVN0YXRlbWVudHMocHJvcGVydGllcz86IFByb3BlcnR5TWFwKTogU3RhdGVtZW50W10ge1xuICAgIGlmICghcHJvcGVydGllcykgeyByZXR1cm4gW107IH1cblxuICAgIHJldHVybiBbcGFyc2VMYW1iZGFQZXJtaXNzaW9uKHJlbmRlckludHJpbnNpY3MocHJvcGVydGllcykpXTtcbiAgfVxufVxuXG4vKipcbiAqIFNldCBhbiB1bmRlZmluZWQgb3Igd2lsZGNhcmRlZCBwcmluY2lwYWwgb24gdGhlc2Ugc3RhdGVtZW50c1xuICovXG5mdW5jdGlvbiBkZWZhdWx0UHJpbmNpcGFsKHByaW5jaXBhbDogc3RyaW5nLCBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSkge1xuICBzdGF0ZW1lbnRzLmZvckVhY2gocyA9PiBzLnByaW5jaXBhbHMucmVwbGFjZUVtcHR5KHByaW5jaXBhbCkpO1xuICBzdGF0ZW1lbnRzLmZvckVhY2gocyA9PiBzLnByaW5jaXBhbHMucmVwbGFjZVN0YXIocHJpbmNpcGFsKSk7XG4gIHJldHVybiBzdGF0ZW1lbnRzO1xufVxuXG4vKipcbiAqIFNldCBhbiB1bmRlZmluZWQgb3Igd2lsZGNhcmRlZCByZXNvdXJjZSBvbiB0aGVzZSBzdGF0ZW1lbnRzXG4gKi9cbmZ1bmN0aW9uIGRlZmF1bHRSZXNvdXJjZShyZXNvdXJjZTogc3RyaW5nLCBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSkge1xuICBzdGF0ZW1lbnRzLmZvckVhY2gocyA9PiBzLnJlc291cmNlcy5yZXBsYWNlRW1wdHkocmVzb3VyY2UpKTtcbiAgc3RhdGVtZW50cy5mb3JFYWNoKHMgPT4gcy5yZXNvdXJjZXMucmVwbGFjZVN0YXIocmVzb3VyY2UpKTtcbiAgcmV0dXJuIHN0YXRlbWVudHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWFtQ2hhbmdlc0pzb24ge1xuICBzdGF0ZW1lbnRBZGRpdGlvbnM/OiBBcnJheTxNYXliZVBhcnNlZDxTdGF0ZW1lbnRKc29uPj47XG4gIHN0YXRlbWVudFJlbW92YWxzPzogQXJyYXk8TWF5YmVQYXJzZWQ8U3RhdGVtZW50SnNvbj4+O1xuICBtYW5hZ2VkUG9saWN5QWRkaXRpb25zPzogQXJyYXk8TWF5YmVQYXJzZWQ8TWFuYWdlZFBvbGljeUpzb24+PjtcbiAgbWFuYWdlZFBvbGljeVJlbW92YWxzPzogQXJyYXk8TWF5YmVQYXJzZWQ8TWFuYWdlZFBvbGljeUpzb24+Pjtcbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFtLWNoYW5nZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpYW0tY2hhbmdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvRUFBeUY7QUFDekYsK0JBQStCO0FBQy9CLHFEQUE4RTtBQUM5RSwyQ0FBK0Y7QUFHL0YsMENBQWlEO0FBQ2pELDREQUF3RDtBQUN4RCxrQ0FBb0Y7QUFPcEY7O0dBRUc7QUFDSCxNQUFhLFVBQVU7SUFnQnJCLFlBQVksS0FBc0I7UUFIbEIsZUFBVSxHQUFHLElBQUksNkJBQWtCLEVBQWEsQ0FBQztRQUNqRCxvQkFBZSxHQUFHLElBQUksNkJBQWtCLEVBQTJCLENBQUM7UUFHbEYsS0FBSyxNQUFNLGNBQWMsSUFBSSxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxLQUFLLE1BQU0sY0FBYyxJQUFJLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNuRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBVyxvQkFBb0I7UUFDN0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQztlQUMzRCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxD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QUFFLFVBQXVCO0lBQ2xFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzlELFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzdELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsZUFBZSxDQUFDLFFBQWdCLEVBQUUsVUFBdUI7SUFDaEUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDNUQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDM0QsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3BlcnR5U2NydXRpbnlUeXBlLCBSZXNvdXJjZVNjcnV0aW55VHlwZSB9IGZyb20gJ0Bhd3MtY2RrL3NlcnZpY2Utc3BlYy10eXBlcyc7XG5pbXBvcnQgKiBhcyBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgeyBNYW5hZ2VkUG9saWN5QXR0YWNobWVudCwgTWFuYWdlZFBvbGljeUpzb24gfSBmcm9tICcuL21hbmFnZWQtcG9saWN5JztcbmltcG9ydCB7IHBhcnNlTGFtYmRhUGVybWlzc2lvbiwgcGFyc2VTdGF0ZW1lbnRzLCBTdGF0ZW1lbnQsIFN0YXRlbWVudEpzb24gfSBmcm9tICcuL3N0YXRlbWVudCc7XG5pbXBvcnQgeyBNYXliZVBhcnNlZCB9IGZyb20gJy4uL2RpZmYvbWF5YmUtcGFyc2VkJztcbmltcG9ydCB7IFByb3BlcnR5Q2hhbmdlLCBQcm9wZXJ0eU1hcCwgUmVzb3VyY2VDaGFuZ2UgfSBmcm9tICcuLi9kaWZmL3R5cGVzJztcbmltcG9ydCB7IERpZmZhYmxlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2RpZmZhYmxlJztcbmltcG9ydCB7IHJlbmRlckludHJpbnNpY3MgfSBmcm9tICcuLi9yZW5kZXItaW50cmluc2ljcyc7XG5pbXBvcnQgeyBkZWVwUmVtb3ZlVW5kZWZpbmVkLCBkcm9wSWZFbXB0eSwgZmxhdE1hcCwgbWFrZUNvbXBhcmF0b3IgfSBmcm9tICcuLi91dGlsJztcblxuZXhwb3J0IGludGVyZmFjZSBJYW1DaGFuZ2VzUHJvcHMge1xuICBwcm9wZXJ0eUNoYW5nZXM6IFByb3BlcnR5Q2hhbmdlW107XG4gIHJlc291cmNlQ2hhbmdlczogUmVzb3VyY2VDaGFuZ2VbXTtcbn1cblxuLyoqXG4gKiBDaGFuZ2VzIHRvIElBTSBzdGF0ZW1lbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBJYW1DaGFuZ2VzIHtcbiAgcHVibGljIHN0YXRpYyBJYW1Qcm9wZXJ0eVNjcnV0aW5pZXMgPSBbXG4gICAgUHJvcGVydHlTY3J1dGlueVR5cGUuSW5saW5lSWRlbnRpdHlQb2xpY2llcyxcbiAgICBQcm9wZXJ0eVNjcnV0aW55VHlwZS5JbmxpbmVSZXNvdXJjZVBvbGljeSxcbiAgICBQcm9wZXJ0eVNjcnV0aW55VHlwZS5NYW5hZ2VkUG9saWNpZXMsXG4gIF07XG5cbiAgcHVibGljIHN0YXRpYyBJYW1SZXNvdXJjZVNjcnV0aW5pZXMgPSBbXG4gICAgUmVzb3VyY2VTY3J1dGlueVR5cGUuUmVzb3VyY2VQb2xpY3lSZXNvdXJjZSxcbiAgICBSZXNvdXJjZVNjcnV0aW55VHlwZS5JZGVudGl0eVBvbGljeVJlc291cmNlLFxuICAgIFJlc291cmNlU2NydXRpbnlUeXBlLkxhbWJkYVBlcm1pc3Npb24sXG4gIF07XG5cbiAgcHVibGljIHJlYWRvbmx5IHN0YXRlbWVudHMgPSBuZXcgRGlmZmFibGVDb2xsZWN0aW9uPFN0YXRlbWVudD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IG1hbmFnZWRQb2xpY2llcyA9IG5ldyBEaWZmYWJsZUNvbGxlY3Rpb248TWFuYWdlZFBvbGljeUF0dGFjaG1lbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IElhbUNoYW5nZXNQcm9wcykge1xuICAgIGZvciAoY29uc3QgcHJvcGVydHlDaGFuZ2Ugb2YgcHJvcHMucHJvcGVydHlDaGFuZ2VzKSB7XG4gICAgICB0aGlzLnJlYWRQcm9wZXJ0eUNoYW5nZShwcm9wZXJ0eUNoYW5nZSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgcmVzb3VyY2VDaGFuZ2Ugb2YgcHJvcHMucmVzb3VyY2VDaGFuZ2VzKSB7XG4gICAgICB0aGlzLnJlYWRSZXNvdXJjZUNoYW5nZShyZXNvdXJjZUNoYW5nZSk7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZW1lbnRzLmNhbGN1bGF0ZURpZmYoKTtcbiAgICB0aGlzLm1hbmFnZWRQb2xpY2llcy5jYWxjdWxhdGVEaWZmKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0NoYW5nZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50cy5oYXNDaGFuZ2VzIHx8IHRoaXMubWFuYWdlZFBvbGljaWVzLmhhc0NoYW5nZXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGNoYW5nZXMgaW5jbHVkZSBicm9hZGVuZWQgcGVybWlzc2lvbnNcbiAgICpcbiAgICogUGVybWlzc2lvbnMgYXJlIGJyb2FkZW5lZCBpZiBwb3NpdGl2ZSBzdGF0ZW1lbnRzIGFyZSBhZGRlZCBvclxuICAgKiBuZWdhdGl2ZSBzdGF0ZW1lbnRzIGFyZSByZW1vdmVkLCBvciBpZiBtYW5hZ2VkIHBvbGljaWVzIGFyZSBhZGRlZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgcGVybWlzc2lvbnNCcm9hZGVuZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50cy5hZGRpdGlvbnMuc29tZShzID0+ICFzLmlzTmVnYXRpdmVTdGF0ZW1lbnQpXG4gICAgICAgIHx8IHRoaXMuc3RhdGVtZW50cy5yZW1vdmFscy5zb21lKHMgPT4gcy5pc05lZ2F0aXZlU3RhdGVtZW50KVxuICAgICAgICB8fCB0aGlzLm1hbmFnZWRQb2xpY2llcy5oYXNBZGRpdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgc3VtbWFyeSB0YWJsZSBvZiBjaGFuZ2VzXG4gICAqL1xuICBwdWJsaWMgc3VtbWFyaXplU3RhdGVtZW50cygpOiBzdHJpbmdbXVtdIHtcbiAgICBjb25zdCByZXQ6IHN0cmluZ1tdW10gPSBbXTtcblxuICAgIGNvbnN0IGhlYWRlciA9IFsnJywgJ1Jlc291cmNlJywgJ0VmZmVjdCcsICdBY3Rpb24nLCAnUHJpbmNpcGFsJywgJ0NvbmRpdGlvbiddO1xuXG4gICAgLy8gRmlyc3QgZ2VuZXJhdGUgYWxsIGxpbmVzLCB0aGVuIHNvcnQgb24gUmVzb3VyY2Ugc28gdGhhdCBzaW1pbGFyIHJlc291cmNlcyBhcmUgdG9nZXRoZXJcbiAgICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiB0aGlzLnN0YXRlbWVudHMuYWRkaXRpb25zKSB7XG4gICAgICBjb25zdCByZW5kZXJlZFN0YXRlbWVudCA9IHN0YXRlbWVudC5yZW5kZXIoKTtcbiAgICAgIHJldC5wdXNoKFtcbiAgICAgICAgJysnLFxuICAgICAgICByZW5kZXJlZFN0YXRlbWVudC5yZXNvdXJjZSxcbiAgICAgICAgcmVuZGVyZWRTdGF0ZW1lbnQuZWZmZWN0LFxuICAgICAgICByZW5kZXJlZFN0YXRlbWVudC5hY3Rpb24sXG4gICAgICAgIHJlbmRlcmVkU3RhdGVtZW50LnByaW5jaXBhbCxcbiAgICAgICAgcmVuZGVyZWRTdGF0ZW1lbnQuY29uZGl0aW9uLFxuICAgICAgXS5tYXAocyA9PiBjaGFsay5ncmVlbihzKSkpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiB0aGlzLnN0YXRlbWVudHMucmVtb3ZhbHMpIHtcbiAgICAgIGNvbnN0IHJlbmRlcmVkU3RhdGVtZW50ID0gc3RhdGVtZW50LnJlbmRlcigpO1xuICAgICAgcmV0LnB1c2goW1xuICAgICAgICBjaGFsay5yZWQoJy0nKSxcbiAgICAgICAgcmVuZGVyZWRTdGF0ZW1lbnQucmVzb3VyY2UsXG4gICAgICAgIHJlbmRlcmVkU3RhdGVtZW50LmVmZmVjdCxcbiAgICAgICAgcmVuZGVyZWRTdGF0ZW1lbnQuYWN0aW9uLFxuICAgICAgICByZW5kZXJlZFN0YXRlbWVudC5wcmluY2lwYWwsXG4gICAgICAgIHJlbmRlcmVkU3RhdGVtZW50LmNvbmRpdGlvbixcbiAgICAgIF0ubWFwKHMgPT4gY2hhbGsucmVkKHMpKSk7XG4gICAgfVxuXG4gICAgLy8gU29ydCBieSAybmQgY29sdW1uXG4gICAgcmV0LnNvcnQobWFrZUNvbXBhcmF0b3IoKHJvdzogc3RyaW5nW10pID0+IFtyb3dbMV1dKSk7XG5cbiAgICByZXQuc3BsaWNlKDAsIDAsIGhlYWRlcik7XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHVibGljIHN1bW1hcml6ZU1hbmFnZWRQb2xpY2llcygpOiBzdHJpbmdbXVtdIHtcbiAgICBjb25zdCByZXQ6IHN0cmluZ1tdW10gPSBbXTtcbiAgICBjb25zdCBoZWFkZXIgPSBbJycsICdSZXNvdXJjZScsICdNYW5hZ2VkIFBvbGljeSBBUk4nXTtcblxuICAgIGZvciAoY29uc3QgYXR0IG9mIHRoaXMubWFuYWdlZFBvbGljaWVzLmFkZGl0aW9ucykge1xuICAgICAgcmV0LnB1c2goW1xuICAgICAgICAnKycsXG4gICAgICAgIGF0dC5pZGVudGl0eUFybixcbiAgICAgICAgYXR0Lm1hbmFnZWRQb2xpY3lBcm4sXG4gICAgICBdLm1hcChzID0+IGNoYWxrLmdyZWVuKHMpKSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgYXR0IG9mIHRoaXMubWFuYWdlZFBvbGljaWVzLnJlbW92YWxzKSB7XG4gICAgICByZXQucHVzaChbXG4gICAgICAgICctJyxcbiAgICAgICAgYXR0LmlkZW50aXR5QXJuLFxuICAgICAgICBhdHQubWFuYWdlZFBvbGljeUFybixcbiAgICAgIF0ubWFwKHMgPT4gY2hhbGsucmVkKHMpKSk7XG4gICAgfVxuXG4gICAgLy8gU29ydCBieSAybmQgY29sdW1uXG4gICAgcmV0LnNvcnQobWFrZUNvbXBhcmF0b3IoKHJvdzogc3RyaW5nW10pID0+IFtyb3dbMV1dKSk7XG5cbiAgICByZXQuc3BsaWNlKDAsIDAsIGhlYWRlcik7XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1hY2hpbmUtcmVhZGFibGUgdmVyc2lvbiBvZiB0aGUgY2hhbmdlcy5cbiAgICogVGhpcyBpcyBvbmx5IHVzZWQgaW4gdGVzdHMuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF90b0pzb24oKTogSWFtQ2hhbmdlc0pzb24ge1xuICAgIHJldHVybiBkZWVwUmVtb3ZlVW5kZWZpbmVkKHtcbiAgICAgIHN0YXRlbWVudEFkZGl0aW9uczogZHJvcElmRW1wdHkodGhpcy5zdGF0ZW1lbnRzLmFkZGl0aW9ucy5tYXAocyA9PiBzLl90b0pzb24oKSkpLFxuICAgICAgc3RhdGVtZW50UmVtb3ZhbHM6IGRyb3BJZkVtcHR5KHRoaXMuc3RhdGVtZW50cy5yZW1vdmFscy5tYXAocyA9PiBzLl90b0pzb24oKSkpLFxuICAgICAgbWFuYWdlZFBvbGljeUFkZGl0aW9uczogZHJvcElmRW1wdHkodGhpcy5tYW5hZ2VkUG9saWNpZXMuYWRkaXRpb25zLm1hcChzID0+IHMuX3RvSnNvbigpKSksXG4gICAgICBtYW5hZ2VkUG9saWN5UmVtb3ZhbHM6IGRyb3BJZkVtcHR5KHRoaXMubWFuYWdlZFBvbGljaWVzLnJlbW92YWxzLm1hcChzID0+IHMuX3RvSnNvbigpKSksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRQcm9wZXJ0eUNoYW5nZShwcm9wZXJ0eUNoYW5nZTogUHJvcGVydHlDaGFuZ2UpIHtcbiAgICBzd2l0Y2ggKHByb3BlcnR5Q2hhbmdlLnNjcnV0aW55VHlwZSkge1xuICAgICAgY2FzZSBQcm9wZXJ0eVNjcnV0aW55VHlwZS5JbmxpbmVJZGVudGl0eVBvbGljaWVzOlxuICAgICAgICAvLyBBV1M6OklBTTo6eyBSb2xlIHwgVXNlciB8IEdyb3VwIH0uUG9saWNpZXNcbiAgICAgICAgdGhpcy5zdGF0ZW1lbnRzLmFkZE9sZCguLi50aGlzLnJlYWRJZGVudGl0eVBvbGljaWVzKHByb3BlcnR5Q2hhbmdlLm9sZFZhbHVlLCBwcm9wZXJ0eUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkTmV3KC4uLnRoaXMucmVhZElkZW50aXR5UG9saWNpZXMocHJvcGVydHlDaGFuZ2UubmV3VmFsdWUsIHByb3BlcnR5Q2hhbmdlLnJlc291cmNlTG9naWNhbElkKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQcm9wZXJ0eVNjcnV0aW55VHlwZS5JbmxpbmVSZXNvdXJjZVBvbGljeTpcbiAgICAgICAgLy8gQW55IFBvbGljeURvY3VtZW50IG9uIGEgcmVzb3VyY2UgKGluY2x1ZGluZyBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQpXG4gICAgICAgIHRoaXMuc3RhdGVtZW50cy5hZGRPbGQoLi4udGhpcy5yZWFkUmVzb3VyY2VTdGF0ZW1lbnRzKHByb3BlcnR5Q2hhbmdlLm9sZFZhbHVlLCBwcm9wZXJ0eUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkTmV3KC4uLnRoaXMucmVhZFJlc291cmNlU3RhdGVtZW50cyhwcm9wZXJ0eUNoYW5nZS5uZXdWYWx1ZSwgcHJvcGVydHlDaGFuZ2UucmVzb3VyY2VMb2dpY2FsSWQpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFByb3BlcnR5U2NydXRpbnlUeXBlLk1hbmFnZWRQb2xpY2llczpcbiAgICAgICAgLy8gSnVzdCBhIGxpc3Qgb2YgbWFuYWdlZCBwb2xpY2llc1xuICAgICAgICB0aGlzLm1hbmFnZWRQb2xpY2llcy5hZGRPbGQoLi4udGhpcy5yZWFkTWFuYWdlZFBvbGljaWVzKHByb3BlcnR5Q2hhbmdlLm9sZFZhbHVlLCBwcm9wZXJ0eUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICB0aGlzLm1hbmFnZWRQb2xpY2llcy5hZGROZXcoLi4udGhpcy5yZWFkTWFuYWdlZFBvbGljaWVzKHByb3BlcnR5Q2hhbmdlLm5ld1ZhbHVlLCBwcm9wZXJ0eUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlYWRSZXNvdXJjZUNoYW5nZShyZXNvdXJjZUNoYW5nZTogUmVzb3VyY2VDaGFuZ2UpIHtcbiAgICBzd2l0Y2ggKHJlc291cmNlQ2hhbmdlLnNjcnV0aW55VHlwZSkge1xuICAgICAgY2FzZSBSZXNvdXJjZVNjcnV0aW55VHlwZS5JZGVudGl0eVBvbGljeVJlc291cmNlOlxuICAgICAgICAvLyBBV1M6OklBTTo6UG9saWN5XG4gICAgICAgIHRoaXMuc3RhdGVtZW50cy5hZGRPbGQoLi4udGhpcy5yZWFkSWRlbnRpdHlQb2xpY3lSZXNvdXJjZShyZXNvdXJjZUNoYW5nZS5vbGRQcm9wZXJ0aWVzKSk7XG4gICAgICAgIHRoaXMuc3RhdGVtZW50cy5hZGROZXcoLi4udGhpcy5yZWFkSWRlbnRpdHlQb2xpY3lSZXNvdXJjZShyZXNvdXJjZUNoYW5nZS5uZXdQcm9wZXJ0aWVzKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBSZXNvdXJjZVNjcnV0aW55VHlwZS5SZXNvdXJjZVBvbGljeVJlc291cmNlOlxuICAgICAgICAvLyBBV1M6Oio6OntCdWNrZXQsUXVldWUsVG9waWN9UG9saWN5XG4gICAgICAgIHRoaXMuc3RhdGVtZW50cy5hZGRPbGQoLi4udGhpcy5yZWFkUmVzb3VyY2VQb2xpY3lSZXNvdXJjZShyZXNvdXJjZUNoYW5nZS5vbGRQcm9wZXJ0aWVzKSk7XG4gICAgICAgIHRoaXMuc3RhdGVtZW50cy5hZGROZXcoLi4udGhpcy5yZWFkUmVzb3VyY2VQb2xpY3lSZXNvdXJjZShyZXNvdXJjZUNoYW5nZS5uZXdQcm9wZXJ0aWVzKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBSZXNvdXJjZVNjcnV0aW55VHlwZS5MYW1iZGFQZXJtaXNzaW9uOlxuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkT2xkKC4uLnRoaXMucmVhZExhbWJkYVN0YXRlbWVudHMocmVzb3VyY2VDaGFuZ2Uub2xkUHJvcGVydGllcykpO1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkTmV3KC4uLnRoaXMucmVhZExhbWJkYVN0YXRlbWVudHMocmVzb3VyY2VDaGFuZ2UubmV3UHJvcGVydGllcykpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgYSBsaXN0IG9mIHBvbGljaWVzIG9uIGFuIGlkZW50aXR5XG4gICAqL1xuICBwcml2YXRlIHJlYWRJZGVudGl0eVBvbGljaWVzKHBvbGljaWVzOiBhbnksIGxvZ2ljYWxJZDogc3RyaW5nKTogU3RhdGVtZW50W10ge1xuICAgIGlmIChwb2xpY2llcyA9PT0gdW5kZWZpbmVkIHx8ICFBcnJheS5pc0FycmF5KHBvbGljaWVzKSkgeyByZXR1cm4gW107IH1cblxuICAgIGNvbnN0IGFwcGxpZXNUb1ByaW5jaXBhbCA9ICdBV1M6JHsnICsgbG9naWNhbElkICsgJ30nO1xuXG4gICAgcmV0dXJuIGZsYXRNYXAocG9saWNpZXMsIChwb2xpY3k6IGFueSkgPT4ge1xuICAgICAgLy8gY2hlY2sgaWYgdGhlIFBvbGljeSBpdHNlbGYgaXMgbm90IGFuIGludHJpbnNpYywgbGlrZSBhbiBGbjo6SWZcbiAgICAgIGNvbnN0IHVucGFyc2VkU3RhdGVtZW50ID0gcG9saWN5LlBvbGljeURvY3VtZW50Py5TdGF0ZW1lbnRcbiAgICAgICAgPyBwb2xpY3kuUG9saWN5RG9jdW1lbnQuU3RhdGVtZW50XG4gICAgICAgIDogcG9saWN5O1xuICAgICAgcmV0dXJuIGRlZmF1bHRQcmluY2lwYWwoYXBwbGllc1RvUHJpbmNpcGFsLCBwYXJzZVN0YXRlbWVudHMocmVuZGVySW50cmluc2ljcyh1bnBhcnNlZFN0YXRlbWVudCkpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBhbiBJQU06OlBvbGljeSByZXNvdXJjZVxuICAgKi9cbiAgcHJpdmF0ZSByZWFkSWRlbnRpdHlQb2xpY3lSZXNvdXJjZShwcm9wZXJ0aWVzOiBhbnkpOiBTdGF0ZW1lbnRbXSB7XG4gICAgaWYgKHByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gW107IH1cblxuICAgIHByb3BlcnRpZXMgPSByZW5kZXJJbnRyaW5zaWNzKHByb3BlcnRpZXMpO1xuXG4gICAgY29uc3QgcHJpbmNpcGFscyA9IChwcm9wZXJ0aWVzLkdyb3VwcyB8fCBbXSkuY29uY2F0KHByb3BlcnRpZXMuVXNlcnMgfHwgW10pLmNvbmNhdChwcm9wZXJ0aWVzLlJvbGVzIHx8IFtdKTtcbiAgICByZXR1cm4gZmxhdE1hcChwcmluY2lwYWxzLCAocHJpbmNpcGFsOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHJlZiA9ICdBV1M6JyArIHByaW5jaXBhbDtcbiAgICAgIHJldHVybiBkZWZhdWx0UHJpbmNpcGFsKHJlZiwgcGFyc2VTdGF0ZW1lbnRzKHByb3BlcnRpZXMuUG9saWN5RG9jdW1lbnQuU3RhdGVtZW50KSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRSZXNvdXJjZVN0YXRlbWVudHMocG9saWN5OiBhbnksIGxvZ2ljYWxJZDogc3RyaW5nKTogU3RhdGVtZW50W10ge1xuICAgIGlmIChwb2xpY3kgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gW107IH1cblxuICAgIGNvbnN0IGFwcGxpZXNUb1Jlc291cmNlID0gJyR7JyArIGxvZ2ljYWxJZCArICcuQXJufSc7XG4gICAgcmV0dXJuIGRlZmF1bHRSZXNvdXJjZShhcHBsaWVzVG9SZXNvdXJjZSwgcGFyc2VTdGF0ZW1lbnRzKHJlbmRlckludHJpbnNpY3MocG9saWN5LlN0YXRlbWVudCkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBhbiBBV1M6Oio6OntCdWNrZXQsVG9waWMsUXVldWV9cG9saWN5XG4gICAqL1xuICBwcml2YXRlIHJlYWRSZXNvdXJjZVBvbGljeVJlc291cmNlKHByb3BlcnRpZXM6IGFueSk6IFN0YXRlbWVudFtdIHtcbiAgICBpZiAocHJvcGVydGllcyA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBbXTsgfVxuXG4gICAgcHJvcGVydGllcyA9IHJlbmRlckludHJpbnNpY3MocHJvcGVydGllcyk7XG5cbiAgICBjb25zdCBwb2xpY3lLZXlzID0gT2JqZWN0LmtleXMocHJvcGVydGllcykuZmlsdGVyKGtleSA9PiBrZXkuaW5kZXhPZignUG9saWN5JykgPiAtMSk7XG5cbiAgICAvLyBGaW5kIHRoZSBrZXkgdGhhdCBpZGVudGlmaWVzIHRoZSByZXNvdXJjZShzKSB0aGlzIHBvbGljeSBhcHBsaWVzIHRvXG4gICAgY29uc3QgcmVzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMocHJvcGVydGllcykuZmlsdGVyKGtleSA9PiAhcG9saWN5S2V5cy5pbmNsdWRlcyhrZXkpICYmICFrZXkuZW5kc1dpdGgoJ05hbWUnKSk7XG4gICAgbGV0IHJlc291cmNlcyA9IHJlc291cmNlS2V5cy5sZW5ndGggPT09IDEgPyBwcm9wZXJ0aWVzW3Jlc291cmNlS2V5c1swXV0gOiBbJz8/PyddO1xuXG4gICAgLy8gRm9yIHNvbWUgcmVzb3VyY2VzLCB0aGlzIGlzIGEgc2luZ2xldG9uIHN0cmluZywgZm9yIHNvbWUgaXQncyBhbiBhcnJheVxuICAgIGlmICghQXJyYXkuaXNBcnJheShyZXNvdXJjZXMpKSB7XG4gICAgICByZXNvdXJjZXMgPSBbcmVzb3VyY2VzXTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmxhdE1hcChyZXNvdXJjZXMsIChyZXNvdXJjZTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gZGVmYXVsdFJlc291cmNlKHJlc291cmNlLCBwYXJzZVN0YXRlbWVudHMocHJvcGVydGllc1twb2xpY3lLZXlzWzBdXS5TdGF0ZW1lbnQpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZE1hbmFnZWRQb2xpY2llcyhwb2xpY3lBcm5zOiBhbnksIGxvZ2ljYWxJZDogc3RyaW5nKTogTWFuYWdlZFBvbGljeUF0dGFjaG1lbnRbXSB7XG4gICAgaWYgKCFwb2xpY3lBcm5zKSB7IHJldHVybiBbXTsgfVxuXG4gICAgY29uc3QgcmVwID0gJyR7JyArIGxvZ2ljYWxJZCArICd9JztcbiAgICByZXR1cm4gTWFuYWdlZFBvbGljeUF0dGFjaG1lbnQucGFyc2VNYW5hZ2VkUG9saWNpZXMocmVwLCByZW5kZXJJbnRyaW5zaWNzKHBvbGljeUFybnMpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZExhbWJkYVN0YXRlbWVudHMocHJvcGVydGllcz86IFByb3BlcnR5TWFwKTogU3RhdGVtZW50W10ge1xuICAgIGlmICghcHJvcGVydGllcykgeyByZXR1cm4gW107IH1cblxuICAgIHJldHVybiBbcGFyc2VMYW1iZGFQZXJtaXNzaW9uKHJlbmRlckludHJpbnNpY3MocHJvcGVydGllcykpXTtcbiAgfVxufVxuXG4vKipcbiAqIFNldCBhbiB1bmRlZmluZWQgb3Igd2lsZGNhcmRlZCBwcmluY2lwYWwgb24gdGhlc2Ugc3RhdGVtZW50c1xuICovXG5mdW5jdGlvbiBkZWZhdWx0UHJpbmNpcGFsKHByaW5jaXBhbDogc3RyaW5nLCBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSkge1xuICBzdGF0ZW1lbnRzLmZvckVhY2gocyA9PiBzLnByaW5jaXBhbHMucmVwbGFjZUVtcHR5KHByaW5jaXBhbCkpO1xuICBzdGF0ZW1lbnRzLmZvckVhY2gocyA9PiBzLnByaW5jaXBhbHMucmVwbGFjZVN0YXIocHJpbmNpcGFsKSk7XG4gIHJldHVybiBzdGF0ZW1lbnRzO1xufVxuXG4vKipcbiAqIFNldCBhbiB1bmRlZmluZWQgb3Igd2lsZGNhcmRlZCByZXNvdXJjZSBvbiB0aGVzZSBzdGF0ZW1lbnRzXG4gKi9cbmZ1bmN0aW9uIGRlZmF1bHRSZXNvdXJjZShyZXNvdXJjZTogc3RyaW5nLCBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSkge1xuICBzdGF0ZW1lbnRzLmZvckVhY2gocyA9PiBzLnJlc291cmNlcy5yZXBsYWNlRW1wdHkocmVzb3VyY2UpKTtcbiAgc3RhdGVtZW50cy5mb3JFYWNoKHMgPT4gcy5yZXNvdXJjZXMucmVwbGFjZVN0YXIocmVzb3VyY2UpKTtcbiAgcmV0dXJuIHN0YXRlbWVudHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWFtQ2hhbmdlc0pzb24ge1xuICBzdGF0ZW1lbnRBZGRpdGlvbnM/OiBBcnJheTxNYXliZVBhcnNlZDxTdGF0ZW1lbnRKc29uPj47XG4gIHN0YXRlbWVudFJlbW92YWxzPzogQXJyYXk8TWF5YmVQYXJzZWQ8U3RhdGVtZW50SnNvbj4+O1xuICBtYW5hZ2VkUG9saWN5QWRkaXRpb25zPzogQXJyYXk8TWF5YmVQYXJzZWQ8TWFuYWdlZFBvbGljeUpzb24+PjtcbiAgbWFuYWdlZFBvbGljeVJlbW92YWxzPzogQXJyYXk8TWF5YmVQYXJzZWQ8TWFuYWdlZFBvbGljeUpzb24+Pjtcbn1cbiJdfQ== /***/ }), @@ -11043,7 +11543,7 @@ class Statement { resource: this.serializedIntrinsic, effect: '', action: '', - principal: this.principals.render(), + principal: this.principals.render(), // these will be replaced by the call to replaceEmpty() from IamChanges condition: '', } : { @@ -11265,7 +11765,7 @@ function renderCondition(condition) { return lines.slice(1, lines.length - 1).map(s => s.slice(2)).join('\n'); } exports.renderCondition = renderCondition; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RhdGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUE0RTtBQUM1RSxrQ0FBOEM7QUFFOUMseUVBQXlFO0FBQ3pFLGlFQUFpRTtBQUNqRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUU3QyxNQUFhLFNBQVM7SUFpQ3BCLFlBQVksU0FBOEI7UUFDeEMsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUU7WUFDakMsSUFBSSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUM7WUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1lBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUM7U0FDdEM7YUFBTTtZQUNMLElBQUksQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ25FLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxXQUFXLENBQUMsQ0FBQztZQUM3RCxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsY0FBYyxDQUFDLENBQUM7WUFDdEUsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDO1lBQ3JDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUM7U0FDdEM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsS0FBZ0I7UUFDM0IsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssS0FBSyxDQUFDLEdBQUc7ZUFDekIsSUFBSSxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsTUFBTTtlQUM1QixJQUFJLENBQUMsbUJBQW1CLEtBQUssS0FBSyxDQUFDLG1CQUFtQjtlQUN0RCxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDO2VBQ3JDLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7ZUFDakMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQztlQUN2QyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRU0sTUFBTTtRQUNYLE9BQU8sSUFBSSxDQUFDLG1CQUFtQjtZQUM3QixDQUFDLENBQUM7Z0JBQ0EsUUFBUSxFQUFFLElBQUksQ0FBQyxtQkFBbUI7Z0JBQ2xDLE1BQU0sRUFBRSxFQUFFO2dCQUNWLE1BQU0sRUFBRSxFQUFFO2dCQUNWLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtnQkFDbkMsU0FBUyxFQUFFLEVBQUU7YUFDZDtZQUNELENBQUMsQ0FBQztnQkFDQSxRQUFRLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUU7Z0JBQ2pDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtnQkFDbkIsTUFBTSxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO2dCQUM3QixTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUU7Z0JBQ25DLFNBQVMsRUFBRSxlQUFlLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQzthQUMzQyxDQUFDO0lBQ04sQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksT0FBTztRQUNaLE9BQU8sSUFBSSxDQUFDLG1CQUFtQjtZQUM3QixDQUFDLENBQUMsSUFBQSw0QkFBYSxFQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztZQUN6QyxDQUFDLENBQUMsSUFBQSx1QkFBUSxFQUFDLElBQUEsMEJBQW1CLEVBQUM7Z0JBQzdCLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztnQkFDYixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRTtnQkFDbkMsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFO2dCQUNyQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7Z0JBQy9CLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUzthQUMxQixDQUFDLENBQUMsQ0FBQztJQUNSLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQVcsbUJBQW1CO1FBQzVCLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDO1FBQ2hGLE9BQU8sSUFBSSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQy9ELENBQUM7Q0FDRjtBQWpIRCw4QkFpSEM7QUF3QkQ7O0dBRUc7QUFDSCxTQUFnQixlQUFlLENBQUMsQ0FBTTtJQUNwQyxJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUU7UUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO0tBQUU7SUFDaEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7UUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUFFO0lBQ25DLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM3QyxDQUFDO0FBSkQsMENBSUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IscUJBQXFCLENBQUMsQ0FBTTtJQUMxQyw2QkFBNkI7SUFDN0IsTUFBTSxTQUFTLEdBQVE7UUFDckIsTUFBTSxFQUFFLE9BQU87UUFDZixNQUFNLEVBQUUsQ0FBQyxDQUFDLE1BQU07UUFDaEIsUUFBUSxFQUFFLENBQUMsQ0FBQyxZQUFZO0tBQ3pCLENBQUM7SUFFRixJQUFJLENBQUMsQ0FBQyxTQUFTLEtBQUssU0FBUyxFQUFFO1FBQzdCLElBQUksQ0FBQyxDQUFDLFNBQVMsS0FBSyxHQUFHLEVBQUU7WUFDdkIsSUFBSTtZQUNKLFNBQVMsQ0FBQyxTQUFTLEdBQUcsR0FBRyxDQUFDO1NBQzNCO2FBQU0sSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUN2QyxpQkFBaUI7WUFDakIseURBQXlEO1lBQ3pELFNBQVMsQ0FBQyxTQUFTLEdBQUcsRUFBRSxHQUFHLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQyxTQUFTLE9BQU8sRUFBRSxDQUFDO1NBQ25FO2FBQU07WUFDTCxrQ0FBa0M7WUFDbEMsOEVBQThFO1lBQzlFLGtFQUFrRTtZQUNsRSxTQUFTLENBQUMsU0FBUyxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztTQUNoRDtLQUNGO0lBQ0QsSUFBSSxDQUFDLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRTtRQUM3QixJQUFJLFNBQVMsQ0FBQyxTQUFTLEtBQUssU0FBUyxFQUFFO1lBQUUsU0FBUyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7U0FBRTtRQUNwRSxTQUFTLENBQUMsU0FBUyxDQUFDLE9BQU8sR0FBRyxFQUFFLGVBQWUsRUFBRSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7S0FDaEU7SUFDRCxJQUFJLENBQUMsQ0FBQyxhQUFhLEtBQUssU0FBUyxFQUFFO1FBQ2pDLElBQUksU0FBUyxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUU7WUFBRSxTQUFTLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztTQUFFO1FBQ3BFLFNBQVMsQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLEVBQUUsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLGFBQWEsRUFBRSxDQUFDO0tBQzdFO0lBQ0QsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLEtBQUssU0FBUyxFQUFFO1FBQ3BDLElBQUksU0FBUyxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUU7WUFBRSxTQUFTLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztTQUFFO1FBQ3BFLFNBQVMsQ0FBQyxTQUFTLENBQUMsWUFBWSxHQUFHLEVBQUUseUJBQXlCLEVBQUUsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLENBQUM7S0FDdEY7SUFFRCxPQUFPLElBQUksU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2xDLENBQUM7QUFyQ0Qsc0RBcUNDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLE9BQU87SUFXbEIsWUFBWSxTQUFxQixFQUFFLFdBQW1CLEVBQUUsV0FBbUI7UUFDekUsSUFBSSxXQUFXLElBQUksU0FBUyxFQUFFO1lBQzVCLElBQUksQ0FBQyxNQUFNLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLENBQUM7U0FDakI7YUFBTTtZQUNMLElBQUksQ0FBQyxNQUFNLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDekQsSUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7U0FDbEI7UUFDRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFXLEtBQUs7UUFDZCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxLQUFLLENBQUMsS0FBYztRQUN6QixPQUFPLElBQUksQ0FBQyxHQUFHLEtBQUssS0FBSyxDQUFDLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7SUFDdEYsQ0FBQztJQUVEOztPQUVHO0lBQ0ksWUFBWSxDQUFDLFdBQW1CO1FBQ3JDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1NBQy9CO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVyxDQUFDLFdBQW1CO1FBQ3BDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMzQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFO2dCQUMxQixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQzthQUM5QjtTQUNGO1FBQ0QsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNO1FBQ1gsT0FBTyxJQUFJLENBQUMsR0FBRztZQUNiLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1lBQzdDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxPQUFPO1FBQ1osT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRyxFQUFFLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDaEQsQ0FBQztDQUNGO0FBeEVELDBCQXdFQztBQUlELElBQVksTUFJWDtBQUpELFdBQVksTUFBTTtJQUNoQiw2QkFBbUIsQ0FBQTtJQUNuQix5QkFBZSxDQUFBO0lBQ2YsdUJBQWEsQ0FBQTtBQUNmLENBQUMsRUFKVyxNQUFNLHNCQUFOLE1BQU0sUUFJakI7QUFFRCxTQUFTLFlBQVksQ0FBQyxDQUFVO0lBQzlCLE9BQU8sT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUMvQyxDQUFDO0FBRUQsU0FBUyxZQUFZLENBQUMsQ0FBVTtJQUM5QixJQUFJLENBQUMsS0FBSyxNQUFNLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFO1FBQUUsT0FBTyxDQUFXLENBQUM7S0FBRTtJQUNwRSxPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUM7QUFDeEIsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsQ0FBVTtJQUNwQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRTtRQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUFFO0lBQzFDLElBQUksT0FBTyxDQUFDLEtBQUssV0FBVyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFBRSxPQUFPLEVBQUUsQ0FBQztLQUFFO0lBRTFELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUNwQixPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztLQUNwRDtJQUVELElBQUksT0FBTyxDQUFDLEtBQUssUUFBUSxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDdkMsTUFBTSxHQUFHLEdBQWEsRUFBRSxDQUFDO1FBQ3pCLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQzVDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7U0FDaEU7UUFDRCxPQUFPLEdBQUcsQ0FBQztLQUNaO0lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixlQUFlLENBQUMsU0FBYztJQUM1QyxJQUFJLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtRQUFFLE9BQU8sRUFBRSxDQUFDO0tBQUU7SUFDckUsTUFBTSxrQkFBa0IsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFbkUsMkNBQTJDO0lBQzNDLEVBQUU7SUFDRixLQUFLO0lBQ0wsa0JBQWtCO0lBQ2xCLDZDQUE2QztJQUM3QyxPQUFPO0lBQ1AsS0FBSztJQUNMLEVBQUU7SUFDRixnR0FBZ0c7SUFDaEcsdUJBQXVCO0lBQ3ZCLE1BQU0sS0FBSyxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBaEJELDBDQWdCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1heWJlUGFyc2VkLCBta1BhcnNlZCwgbWtVbnBhcnNlYWJsZSB9IGZyb20gJy4uL2RpZmYvbWF5YmUtcGFyc2VkJztcbmltcG9ydCB7IGRlZXBSZW1vdmVVbmRlZmluZWQgfSBmcm9tICcuLi91dGlsJztcblxuLy8gbmFtZXNwYWNlIG9iamVjdCBpbXBvcnRzIHdvbid0IHdvcmsgaW4gdGhlIGJ1bmRsZSBmb3IgZnVuY3Rpb24gZXhwb3J0c1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbmNvbnN0IGRlZXBFcXVhbCA9IHJlcXVpcmUoJ2Zhc3QtZGVlcC1lcXVhbCcpO1xuXG5leHBvcnQgY2xhc3MgU3RhdGVtZW50IHtcbiAgLyoqXG4gICAqIFN0YXRlbWVudCBJRFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNpZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTdGF0ZW1lbnQgZWZmZWN0XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZWZmZWN0OiBFZmZlY3Q7XG5cbiAgLyoqXG4gICAqIFJlc291cmNlc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlczogVGFyZ2V0cztcblxuICAvKipcbiAgICogUHJpbmNpcGFsc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByaW5jaXBhbHM6IFRhcmdldHM7XG5cbiAgLyoqXG4gICAqIEFjdGlvbnNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhY3Rpb25zOiBUYXJnZXRzO1xuXG4gIC8qKlxuICAgKiBPYmplY3Qgd2l0aCBjb25kaXRpb25zXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29uZGl0aW9uPzogYW55O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VyaWFsaXplZEludHJpbnNpYzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHN0YXRlbWVudDogVW5rbm93bk1hcCB8IHN0cmluZykge1xuICAgIGlmICh0eXBlb2Ygc3RhdGVtZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5zaWQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmVmZmVjdCA9IEVmZmVjdC5Vbmtub3duO1xuICAgICAgdGhpcy5yZXNvdXJjZXMgPSBuZXcgVGFyZ2V0cyh7fSwgJycsICcnKTtcbiAgICAgIHRoaXMuYWN0aW9ucyA9IG5ldyBUYXJnZXRzKHt9LCAnJywgJycpO1xuICAgICAgdGhpcy5wcmluY2lwYWxzID0gbmV3IFRhcmdldHMoe30sICcnLCAnJyk7XG4gICAgICB0aGlzLmNvbmRpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc2VyaWFsaXplZEludHJpbnNpYyA9IHN0YXRlbWVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaWQgPSBleHBlY3RTdHJpbmcoc3RhdGVtZW50LlNpZCk7XG4gICAgICB0aGlzLmVmZmVjdCA9IGV4cGVjdEVmZmVjdChzdGF0ZW1lbnQuRWZmZWN0KTtcbiAgICAgIHRoaXMucmVzb3VyY2VzID0gbmV3IFRhcmdldHMoc3RhdGVtZW50LCAnUmVzb3VyY2UnLCAnTm90UmVzb3VyY2UnKTtcbiAgICAgIHRoaXMuYWN0aW9ucyA9IG5ldyBUYXJnZXRzKHN0YXRlbWVudCwgJ0FjdGlvbicsICdOb3RBY3Rpb24nKTtcbiAgICAgIHRoaXMucHJpbmNpcGFscyA9IG5ldyBUYXJnZXRzKHN0YXRlbWVudCwgJ1ByaW5jaXBhbCcsICdOb3RQcmluY2lwYWwnKTtcbiAgICAgIHRoaXMuY29uZGl0aW9uID0gc3RhdGVtZW50LkNvbmRpdGlvbjtcbiAgICAgIHRoaXMuc2VyaWFsaXplZEludHJpbnNpYyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHN0YXRlbWVudCBpcyBlcXVhbCB0byB0aGUgb3RoZXIgc3RhdGVtZW50XG4gICAqL1xuICBwdWJsaWMgZXF1YWwob3RoZXI6IFN0YXRlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5zaWQgPT09IG90aGVyLnNpZFxuICAgICAgJiYgdGhpcy5lZmZlY3QgPT09IG90aGVyLmVmZmVjdFxuICAgICAgJiYgdGhpcy5zZXJpYWxpemVkSW50cmluc2ljID09PSBvdGhlci5zZXJpYWxpemVkSW50cmluc2ljXG4gICAgICAmJiB0aGlzLnJlc291cmNlcy5lcXVhbChvdGhlci5yZXNvdXJjZXMpXG4gICAgICAmJiB0aGlzLmFjdGlvbnMuZXF1YWwob3RoZXIuYWN0aW9ucylcbiAgICAgICYmIHRoaXMucHJpbmNpcGFscy5lcXVhbChvdGhlci5wcmluY2lwYWxzKVxuICAgICAgJiYgZGVlcEVxdWFsKHRoaXMuY29uZGl0aW9uLCBvdGhlci5jb25kaXRpb24pKTtcbiAgfVxuXG4gIHB1YmxpYyByZW5kZXIoKTogUmVuZGVyZWRTdGF0ZW1lbnQge1xuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZWRJbnRyaW5zaWNcbiAgICAgID8ge1xuICAgICAgICByZXNvdXJjZTogdGhpcy5zZXJpYWxpemVkSW50cmluc2ljLFxuICAgICAgICBlZmZlY3Q6ICcnLFxuICAgICAgICBhY3Rpb246ICcnLFxuICAgICAgICBwcmluY2lwYWw6IHRoaXMucHJpbmNpcGFscy5yZW5kZXIoKSwgLy8gdGhlc2Ugd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgY2FsbCB0byByZXBsYWNlRW1wdHkoKSBmcm9tIElhbUNoYW5nZXNcbiAgICAgICAgY29uZGl0aW9uOiAnJyxcbiAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICByZXNvdXJjZTogdGhpcy5yZXNvdXJjZXMucmVuZGVyKCksXG4gICAgICAgIGVmZmVjdDogdGhpcy5lZmZlY3QsXG4gICAgICAgIGFjdGlvbjogdGhpcy5hY3Rpb25zLnJlbmRlcigpLFxuICAgICAgICBwcmluY2lwYWw6IHRoaXMucHJpbmNpcGFscy5yZW5kZXIoKSxcbiAgICAgICAgY29uZGl0aW9uOiByZW5kZXJDb25kaXRpb24odGhpcy5jb25kaXRpb24pLFxuICAgICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtYWNoaW5lLXJlYWRhYmxlIHZlcnNpb24gb2YgdGhlIGNoYW5nZXMuXG4gICAqIFRoaXMgaXMgb25seSB1c2VkIGluIHRlc3RzLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfdG9Kc29uKCk6IE1heWJlUGFyc2VkPFN0YXRlbWVudEpzb24+IHtcbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemVkSW50cmluc2ljXG4gICAgICA/IG1rVW5wYXJzZWFibGUodGhpcy5zZXJpYWxpemVkSW50cmluc2ljKVxuICAgICAgOiBta1BhcnNlZChkZWVwUmVtb3ZlVW5kZWZpbmVkKHtcbiAgICAgICAgc2lkOiB0aGlzLnNpZCxcbiAgICAgICAgZWZmZWN0OiB0aGlzLmVmZmVjdCxcbiAgICAgICAgcmVzb3VyY2VzOiB0aGlzLnJlc291cmNlcy5fdG9Kc29uKCksXG4gICAgICAgIHByaW5jaXBhbHM6IHRoaXMucHJpbmNpcGFscy5fdG9Kc29uKCksXG4gICAgICAgIGFjdGlvbnM6IHRoaXMuYWN0aW9ucy5fdG9Kc29uKCksXG4gICAgICAgIGNvbmRpdGlvbjogdGhpcy5jb25kaXRpb24sXG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGlzIGEgbmVnYXRpdmUgc3RhdGVtZW50XG4gICAqXG4gICAqIEEgc3RhdGVtZW50IGlzIG5lZ2F0aXZlIGlmIGFueSBvZiBpdHMgdGFyZ2V0cyBhcmUgbmVnYXRpdmUsIGludmVydGVkXG4gICAqIGlmIHRoZSBFZmZlY3QgaXMgRGVueS5cbiAgICovXG4gIHB1YmxpYyBnZXQgaXNOZWdhdGl2ZVN0YXRlbWVudCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBub3RUYXJnZXQgPSB0aGlzLmFjdGlvbnMubm90IHx8IHRoaXMucHJpbmNpcGFscy5ub3QgfHwgdGhpcy5yZXNvdXJjZXMubm90O1xuICAgIHJldHVybiB0aGlzLmVmZmVjdCA9PT0gRWZmZWN0LkFsbG93ID8gbm90VGFyZ2V0IDogIW5vdFRhcmdldDtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlcmVkU3RhdGVtZW50IHtcbiAgcmVhZG9ubHkgcmVzb3VyY2U6IHN0cmluZztcbiAgcmVhZG9ubHkgZWZmZWN0OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFjdGlvbjogc3RyaW5nO1xuICByZWFkb25seSBwcmluY2lwYWw6IHN0cmluZztcbiAgcmVhZG9ubHkgY29uZGl0aW9uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGVtZW50SnNvbiB7XG4gIHNpZD86IHN0cmluZztcbiAgZWZmZWN0OiBzdHJpbmc7XG4gIHJlc291cmNlczogVGFyZ2V0c0pzb247XG4gIGFjdGlvbnM6IFRhcmdldHNKc29uO1xuICBwcmluY2lwYWxzOiBUYXJnZXRzSnNvbjtcbiAgY29uZGl0aW9uPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldHNKc29uIHtcbiAgbm90OiBib29sZWFuO1xuICB2YWx1ZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgbGlzdCBvZiBzdGF0ZW1lbnRzIGZyb20gdW5kZWZpbmVkLCBhIFN0YXRlbWVudCwgb3IgYSBsaXN0IG9mIHN0YXRlbWVudHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU3RhdGVtZW50cyh4OiBhbnkpOiBTdGF0ZW1lbnRbXSB7XG4gIGlmICh4ID09PSB1bmRlZmluZWQpIHsgeCA9IFtdOyB9XG4gIGlmICghQXJyYXkuaXNBcnJheSh4KSkgeyB4ID0gW3hdOyB9XG4gIHJldHVybiB4Lm1hcCgoczogYW55KSA9PiBuZXcgU3RhdGVtZW50KHMpKTtcbn1cblxuLyoqXG4gKiBQYXJzZSBhIFN0YXRlbWVudCBmcm9tIGEgTGFtYmRhOjpQZXJtaXNzaW9uIG9iamVjdFxuICpcbiAqIFRoaXMgaXMgYWN0dWFsbHkgd2hhdCBMYW1iZGEgYWRkcyB0byB0aGUgcG9saWN5IGRvY3VtZW50IGlmIHlvdSBjYWxsIEFkZFBlcm1pc3Npb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUxhbWJkYVBlcm1pc3Npb24oeDogYW55KTogU3RhdGVtZW50IHtcbiAgLy8gQ29uc3RydWN0IGEgc3RhdGVtZW50IGZyb21cbiAgY29uc3Qgc3RhdGVtZW50OiBhbnkgPSB7XG4gICAgRWZmZWN0OiAnQWxsb3cnLFxuICAgIEFjdGlvbjogeC5BY3Rpb24sXG4gICAgUmVzb3VyY2U6IHguRnVuY3Rpb25OYW1lLFxuICB9O1xuXG4gIGlmICh4LlByaW5jaXBhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHguUHJpbmNpcGFsID09PSAnKicpIHtcbiAgICAgIC8vICpcbiAgICAgIHN0YXRlbWVudC5QcmluY2lwYWwgPSAnKic7XG4gICAgfSBlbHNlIGlmICgvXlxcZHsxMn0kLy50ZXN0KHguUHJpbmNpcGFsKSkge1xuICAgICAgLy8gQWNjb3VudCBudW1iZXJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYXdzLWNkay9uby1saXRlcmFsLXBhcnRpdGlvblxuICAgICAgc3RhdGVtZW50LlByaW5jaXBhbCA9IHsgQVdTOiBgYXJuOmF3czppYW06OiR7eC5QcmluY2lwYWx9OnJvb3RgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEFzc3VtZSBpdCdzIGEgc2VydmljZSBwcmluY2lwYWxcbiAgICAgIC8vIFdlIG1pZ2h0IGdldCB0aGlzIHdyb25nIHZzLiB0aGUgcHJldmlvdXMgb25lIGZvciB0b2tlbnMuIE5vdGhpbmcgdG8gYmUgZG9uZVxuICAgICAgLy8gYWJvdXQgdGhhdC4gSXQncyBvbmx5IGZvciBodW1hbiByZWFkYWJsZSBjb25zdW1wdGlvbiBhZnRlciBhbGwuXG4gICAgICBzdGF0ZW1lbnQuUHJpbmNpcGFsID0geyBTZXJ2aWNlOiB4LlByaW5jaXBhbCB9O1xuICAgIH1cbiAgfVxuICBpZiAoeC5Tb3VyY2VBcm4gIT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChzdGF0ZW1lbnQuQ29uZGl0aW9uID09PSB1bmRlZmluZWQpIHsgc3RhdGVtZW50LkNvbmRpdGlvbiA9IHt9OyB9XG4gICAgc3RhdGVtZW50LkNvbmRpdGlvbi5Bcm5MaWtlID0geyAnQVdTOlNvdXJjZUFybic6IHguU291cmNlQXJuIH07XG4gIH1cbiAgaWYgKHguU291cmNlQWNjb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHN0YXRlbWVudC5Db25kaXRpb24gPT09IHVuZGVmaW5lZCkgeyBzdGF0ZW1lbnQuQ29uZGl0aW9uID0ge307IH1cbiAgICBzdGF0ZW1lbnQuQ29uZGl0aW9uLlN0cmluZ0VxdWFscyA9IHsgJ0FXUzpTb3VyY2VBY2NvdW50JzogeC5Tb3VyY2VBY2NvdW50IH07XG4gIH1cbiAgaWYgKHguRXZlbnRTb3VyY2VUb2tlbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHN0YXRlbWVudC5Db25kaXRpb24gPT09IHVuZGVmaW5lZCkgeyBzdGF0ZW1lbnQuQ29uZGl0aW9uID0ge307IH1cbiAgICBzdGF0ZW1lbnQuQ29uZGl0aW9uLlN0cmluZ0VxdWFscyA9IHsgJ2xhbWJkYTpFdmVudFNvdXJjZVRva2VuJzogeC5FdmVudFNvdXJjZVRva2VuIH07XG4gIH1cblxuICByZXR1cm4gbmV3IFN0YXRlbWVudChzdGF0ZW1lbnQpO1xufVxuXG4vKipcbiAqIFRhcmdldHMgZm9yIGEgZmllbGRcbiAqL1xuZXhwb3J0IGNsYXNzIFRhcmdldHMge1xuICAvKipcbiAgICogVGhlIHZhbHVlcyBvZiB0aGUgdGFyZ2V0c1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgcG9zaXRpdmUgb3IgbmVnYXRpdmUgbWF0Y2hlcnNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBub3Q6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioc3RhdGVtZW50OiBVbmtub3duTWFwLCBwb3NpdGl2ZUtleTogc3RyaW5nLCBuZWdhdGl2ZUtleTogc3RyaW5nKSB7XG4gICAgaWYgKG5lZ2F0aXZlS2V5IGluIHN0YXRlbWVudCkge1xuICAgICAgdGhpcy52YWx1ZXMgPSBmb3JjZUxpc3RPZlN0cmluZ3Moc3RhdGVtZW50W25lZ2F0aXZlS2V5XSk7XG4gICAgICB0aGlzLm5vdCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWVzID0gZm9yY2VMaXN0T2ZTdHJpbmdzKHN0YXRlbWVudFtwb3NpdGl2ZUtleV0pO1xuICAgICAgdGhpcy5ub3QgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy52YWx1ZXMuc29ydCgpO1xuICB9XG5cbiAgcHVibGljIGdldCBlbXB0eSgpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBzZXQgb2YgdGFyZ2V0cyBpcyBlcXVhbCB0byB0aGUgb3RoZXIgc2V0IG9mIHRhcmdldHNcbiAgICovXG4gIHB1YmxpYyBlcXVhbChvdGhlcjogVGFyZ2V0cykge1xuICAgIHJldHVybiB0aGlzLm5vdCA9PT0gb3RoZXIubm90ICYmIGRlZXBFcXVhbCh0aGlzLnZhbHVlcy5zb3J0KCksIG90aGVyLnZhbHVlcy5zb3J0KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBjdXJyZW50IHZhbHVlIHNldCBpcyBlbXB0eSwgcHV0IHRoaXMgaW4gaXRcbiAgICovXG4gIHB1YmxpYyByZXBsYWNlRW1wdHkocmVwbGFjZW1lbnQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmVtcHR5KSB7XG4gICAgICB0aGlzLnZhbHVlcy5wdXNoKHJlcGxhY2VtZW50KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGFjdGlvbnMgY29udGFpbnMgYSAnKicsIHJlcGxhY2Ugd2l0aCB0aGlzIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyByZXBsYWNlU3RhcihyZXBsYWNlbWVudDogc3RyaW5nKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMudmFsdWVzW2ldID09PSAnKicpIHtcbiAgICAgICAgdGhpcy52YWx1ZXNbaV0gPSByZXBsYWNlbWVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy52YWx1ZXMuc29ydCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciBpbnRvIGEgc3VtbWFyeSB0YWJsZSBjZWxsXG4gICAqL1xuICBwdWJsaWMgcmVuZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubm90XG4gICAgICA/IHRoaXMudmFsdWVzLm1hcChzID0+IGBOT1QgJHtzfWApLmpvaW4oJ1xcbicpXG4gICAgICA6IHRoaXMudmFsdWVzLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1hY2hpbmUtcmVhZGFibGUgdmVyc2lvbiBvZiB0aGUgY2hhbmdlcy5cbiAgICogVGhpcyBpcyBvbmx5IHVzZWQgaW4gdGVzdHMuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF90b0pzb24oKTogVGFyZ2V0c0pzb24ge1xuICAgIHJldHVybiB7IG5vdDogdGhpcy5ub3QsIHZhbHVlczogdGhpcy52YWx1ZXMgfTtcbiAgfVxufVxuXG50eXBlIFVua25vd25NYXAgPSB7W2tleTogc3RyaW5nXTogdW5rbm93bn07XG5cbmV4cG9ydCBlbnVtIEVmZmVjdCB7XG4gIFVua25vd24gPSAnVW5rbm93bicsXG4gIEFsbG93ID0gJ0FsbG93JyxcbiAgRGVueSA9ICdEZW55Jyxcbn1cblxuZnVuY3Rpb24gZXhwZWN0U3RyaW5nKHg6IHVua25vd24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdHlwZW9mIHggPT09ICdzdHJpbmcnID8geCA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZXhwZWN0RWZmZWN0KHg6IHVua25vd24pOiBFZmZlY3Qge1xuICBpZiAoeCA9PT0gRWZmZWN0LkFsbG93IHx8IHggPT09IEVmZmVjdC5EZW55KSB7IHJldHVybiB4IGFzIEVmZmVjdDsgfVxuICByZXR1cm4gRWZmZWN0LlVua25vd247XG59XG5cbmZ1bmN0aW9uIGZvcmNlTGlzdE9mU3RyaW5ncyh4OiB1bmtub3duKTogc3RyaW5nW10ge1xuICBpZiAodHlwZW9mIHggPT09ICdzdHJpbmcnKSB7IHJldHVybiBbeF07IH1cbiAgaWYgKHR5cGVvZiB4ID09PSAndW5kZWZpbmVkJyB8fCB4ID09PSBudWxsKSB7IHJldHVybiBbXTsgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHgpKSB7XG4gICAgcmV0dXJuIHgubWFwKGUgPT4gZm9yY2VMaXN0T2ZTdHJpbmdzKGUpLmpvaW4oJywnKSk7XG4gIH1cblxuICBpZiAodHlwZW9mIHggPT09ICdvYmplY3QnICYmIHggIT09IG51bGwpIHtcbiAgICBjb25zdCByZXQ6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoeCkpIHtcbiAgICAgIHJldC5wdXNoKC4uLmZvcmNlTGlzdE9mU3RyaW5ncyh2YWx1ZSkubWFwKHMgPT4gYCR7a2V5fToke3N9YCkpO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcmV0dXJuIFtgJHt4fWBdO1xufVxuXG4vKipcbiAqIFJlbmRlciB0aGUgQ29uZGl0aW9uIGNvbHVtblxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyQ29uZGl0aW9uKGNvbmRpdGlvbjogYW55KTogc3RyaW5nIHtcbiAgaWYgKCFjb25kaXRpb24gfHwgT2JqZWN0LmtleXMoY29uZGl0aW9uKS5sZW5ndGggPT09IDApIHsgcmV0dXJuICcnOyB9XG4gIGNvbnN0IGpzb25SZXByZXNlbnRhdGlvbiA9IEpTT04uc3RyaW5naWZ5KGNvbmRpdGlvbiwgdW5kZWZpbmVkLCAyKTtcblxuICAvLyBUaGUgSlNPTiByZXByZXNlbnRhdGlvbiBsb29rcyBsaWtlIHRoaXM6XG4gIC8vXG4gIC8vICB7XG4gIC8vICAgIFwiQXJuTGlrZVwiOiB7XG4gIC8vICAgICAgXCJBV1M6U291cmNlQXJuXCI6IFwiJHtNeVRvcGljODY4Njk0MzR9XCJcbiAgLy8gICAgfVxuICAvLyAgfVxuICAvL1xuICAvLyBXZSBjYW4gbWFrZSBpdCBtb3JlIGNvbXBhY3Qgd2l0aG91dCBsb3NpbmcgaW5mb3JtYXRpb24gYnkgZ2V0dGluZyByaWQgb2YgdGhlIG91dGVybW9zdCBicmFjZXNcbiAgLy8gYW5kIHRoZSBpbmRlbnRhdGlvbi5cbiAgY29uc3QgbGluZXMgPSBqc29uUmVwcmVzZW50YXRpb24uc3BsaXQoJ1xcbicpO1xuICByZXR1cm4gbGluZXMuc2xpY2UoMSwgbGluZXMubGVuZ3RoIC0gMSkubWFwKHMgPT4gcy5zbGljZSgyKSkuam9pbignXFxuJyk7XG59XG4iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RhdGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUE0RTtBQUM1RSxrQ0FBOEM7QUFFOUMseUVBQXlFO0FBQ3pFLGlFQUFpRTtBQUNqRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUU3QyxNQUFhLFNBQVM7SUFpQ3BCLFlBQVksU0FBOEI7UUFDeEMsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQztZQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDM0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFNBQVMsQ0FBQztRQUN2QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ25FLElBQUksQ0FBQyxPQUFP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LElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVuRSwyQ0FBMkM7SUFDM0MsRUFBRTtJQUNGLEtBQUs7SUFDTCxrQkFBa0I7SUFDbEIsNkNBQTZDO0lBQzdDLE9BQU87SUFDUCxLQUFLO0lBQ0wsRUFBRTtJQUNGLGdHQUFnRztJQUNoRyx1QkFBdUI7SUFDdkIsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFFLENBQUM7QUFoQkQsMENBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF5YmVQYXJzZWQsIG1rUGFyc2VkLCBta1VucGFyc2VhYmxlIH0gZnJvbSAnLi4vZGlmZi9tYXliZS1wYXJzZWQnO1xuaW1wb3J0IHsgZGVlcFJlbW92ZVVuZGVmaW5lZCB9IGZyb20gJy4uL3V0aWwnO1xuXG4vLyBuYW1lc3BhY2Ugb2JqZWN0IGltcG9ydHMgd29uJ3Qgd29yayBpbiB0aGUgYnVuZGxlIGZvciBmdW5jdGlvbiBleHBvcnRzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuY29uc3QgZGVlcEVxdWFsID0gcmVxdWlyZSgnZmFzdC1kZWVwLWVxdWFsJyk7XG5cbmV4cG9ydCBjbGFzcyBTdGF0ZW1lbnQge1xuICAvKipcbiAgICogU3RhdGVtZW50IElEXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2lkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFN0YXRlbWVudCBlZmZlY3RcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlZmZlY3Q6IEVmZmVjdDtcblxuICAvKipcbiAgICogUmVzb3VyY2VzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2VzOiBUYXJnZXRzO1xuXG4gIC8qKlxuICAgKiBQcmluY2lwYWxzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJpbmNpcGFsczogVGFyZ2V0cztcblxuICAvKipcbiAgICogQWN0aW9uc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFjdGlvbnM6IFRhcmdldHM7XG5cbiAgLyoqXG4gICAqIE9iamVjdCB3aXRoIGNvbmRpdGlvbnNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb25kaXRpb24/OiBhbnk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZXJpYWxpemVkSW50cmluc2ljOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3Ioc3RhdGVtZW50OiBVbmtub3duTWFwIHwgc3RyaW5nKSB7XG4gICAgaWYgKHR5cGVvZiBzdGF0ZW1lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLnNpZCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZWZmZWN0ID0gRWZmZWN0LlVua25vd247XG4gICAgICB0aGlzLnJlc291cmNlcyA9IG5ldyBUYXJnZXRzKHt9LCAnJywgJycpO1xuICAgICAgdGhpcy5hY3Rpb25zID0gbmV3IFRhcmdldHMoe30sICcnLCAnJyk7XG4gICAgICB0aGlzLnByaW5jaXBhbHMgPSBuZXcgVGFyZ2V0cyh7fSwgJycsICcnKTtcbiAgICAgIHRoaXMuY29uZGl0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5zZXJpYWxpemVkSW50cmluc2ljID0gc3RhdGVtZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNpZCA9IGV4cGVjdFN0cmluZyhzdGF0ZW1lbnQuU2lkKTtcbiAgICAgIHRoaXMuZWZmZWN0ID0gZXhwZWN0RWZmZWN0KHN0YXRlbWVudC5FZmZlY3QpO1xuICAgICAgdGhpcy5yZXNvdXJjZXMgPSBuZXcgVGFyZ2V0cyhzdGF0ZW1lbnQsICdSZXNvdXJjZScsICdOb3RSZXNvdXJjZScpO1xuICAgICAgdGhpcy5hY3Rpb25zID0gbmV3IFRhcmdldHMoc3RhdGVtZW50LCAnQWN0aW9uJywgJ05vdEFjdGlvbicpO1xuICAgICAgdGhpcy5wcmluY2lwYWxzID0gbmV3IFRhcmdldHMoc3RhdGVtZW50LCAnUHJpbmNpcGFsJywgJ05vdFByaW5jaXBhbCcpO1xuICAgICAgdGhpcy5jb25kaXRpb24gPSBzdGF0ZW1lbnQuQ29uZGl0aW9uO1xuICAgICAgdGhpcy5zZXJpYWxpemVkSW50cmluc2ljID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgc3RhdGVtZW50IGlzIGVxdWFsIHRvIHRoZSBvdGhlciBzdGF0ZW1lbnRcbiAgICovXG4gIHB1YmxpYyBlcXVhbChvdGhlcjogU3RhdGVtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLnNpZCA9PT0gb3RoZXIuc2lkXG4gICAgICAmJiB0aGlzLmVmZmVjdCA9PT0gb3RoZXIuZWZmZWN0XG4gICAgICAmJiB0aGlzLnNlcmlhbGl6ZWRJbnRyaW5zaWMgPT09IG90aGVyLnNlcmlhbGl6ZWRJbnRyaW5zaWNcbiAgICAgICYmIHRoaXMucmVzb3VyY2VzLmVxdWFsKG90aGVyLnJlc291cmNlcylcbiAgICAgICYmIHRoaXMuYWN0aW9ucy5lcXVhbChvdGhlci5hY3Rpb25zKVxuICAgICAgJiYgdGhpcy5wcmluY2lwYWxzLmVxdWFsKG90aGVyLnByaW5jaXBhbHMpXG4gICAgICAmJiBkZWVwRXF1YWwodGhpcy5jb25kaXRpb24sIG90aGVyLmNvbmRpdGlvbikpO1xuICB9XG5cbiAgcHVibGljIHJlbmRlcigpOiBSZW5kZXJlZFN0YXRlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplZEludHJpbnNpY1xuICAgICAgPyB7XG4gICAgICAgIHJlc291cmNlOiB0aGlzLnNlcmlhbGl6ZWRJbnRyaW5zaWMsXG4gICAgICAgIGVmZmVjdDogJycsXG4gICAgICAgIGFjdGlvbjogJycsXG4gICAgICAgIHByaW5jaXBhbDogdGhpcy5wcmluY2lwYWxzLnJlbmRlcigpLCAvLyB0aGVzZSB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSBjYWxsIHRvIHJlcGxhY2VFbXB0eSgpIGZyb20gSWFtQ2hhbmdlc1xuICAgICAgICBjb25kaXRpb246ICcnLFxuICAgICAgfVxuICAgICAgOiB7XG4gICAgICAgIHJlc291cmNlOiB0aGlzLnJlc291cmNlcy5yZW5kZXIoKSxcbiAgICAgICAgZWZmZWN0OiB0aGlzLmVmZmVjdCxcbiAgICAgICAgYWN0aW9uOiB0aGlzLmFjdGlvbnMucmVuZGVyKCksXG4gICAgICAgIHByaW5jaXBhbDogdGhpcy5wcmluY2lwYWxzLnJlbmRlcigpLFxuICAgICAgICBjb25kaXRpb246IHJlbmRlckNvbmRpdGlvbih0aGlzLmNvbmRpdGlvbiksXG4gICAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1hY2hpbmUtcmVhZGFibGUgdmVyc2lvbiBvZiB0aGUgY2hhbmdlcy5cbiAgICogVGhpcyBpcyBvbmx5IHVzZWQgaW4gdGVzdHMuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF90b0pzb24oKTogTWF5YmVQYXJzZWQ8U3RhdGVtZW50SnNvbj4ge1xuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZWRJbnRyaW5zaWNcbiAgICAgID8gbWtVbnBhcnNlYWJsZSh0aGlzLnNlcmlhbGl6ZWRJbnRyaW5zaWMpXG4gICAgICA6IG1rUGFyc2VkKGRlZXBSZW1vdmVVbmRlZmluZWQoe1xuICAgICAgICBzaWQ6IHRoaXMuc2lkLFxuICAgICAgICBlZmZlY3Q6IHRoaXMuZWZmZWN0LFxuICAgICAgICByZXNvdXJjZXM6IHRoaXMucmVzb3VyY2VzLl90b0pzb24oKSxcbiAgICAgICAgcHJpbmNpcGFsczogdGhpcy5wcmluY2lwYWxzLl90b0pzb24oKSxcbiAgICAgICAgYWN0aW9uczogdGhpcy5hY3Rpb25zLl90b0pzb24oKSxcbiAgICAgICAgY29uZGl0aW9uOiB0aGlzLmNvbmRpdGlvbixcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgaXMgYSBuZWdhdGl2ZSBzdGF0ZW1lbnRcbiAgICpcbiAgICogQSBzdGF0ZW1lbnQgaXMgbmVnYXRpdmUgaWYgYW55IG9mIGl0cyB0YXJnZXRzIGFyZSBuZWdhdGl2ZSwgaW52ZXJ0ZWRcbiAgICogaWYgdGhlIEVmZmVjdCBpcyBEZW55LlxuICAgKi9cbiAgcHVibGljIGdldCBpc05lZ2F0aXZlU3RhdGVtZW50KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5vdFRhcmdldCA9IHRoaXMuYWN0aW9ucy5ub3QgfHwgdGhpcy5wcmluY2lwYWxzLm5vdCB8fCB0aGlzLnJlc291cmNlcy5ub3Q7XG4gICAgcmV0dXJuIHRoaXMuZWZmZWN0ID09PSBFZmZlY3QuQWxsb3cgPyBub3RUYXJnZXQgOiAhbm90VGFyZ2V0O1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyZWRTdGF0ZW1lbnQge1xuICByZWFkb25seSByZXNvdXJjZTogc3RyaW5nO1xuICByZWFkb25seSBlZmZlY3Q6IHN0cmluZztcbiAgcmVhZG9ubHkgYWN0aW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByaW5jaXBhbDogc3RyaW5nO1xuICByZWFkb25seSBjb25kaXRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZW1lbnRKc29uIHtcbiAgc2lkPzogc3RyaW5nO1xuICBlZmZlY3Q6IHN0cmluZztcbiAgcmVzb3VyY2VzOiBUYXJnZXRzSnNvbjtcbiAgYWN0aW9uczogVGFyZ2V0c0pzb247XG4gIHByaW5jaXBhbHM6IFRhcmdldHNKc29uO1xuICBjb25kaXRpb24/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0c0pzb24ge1xuICBub3Q6IGJvb2xlYW47XG4gIHZhbHVlczogc3RyaW5nW107XG59XG5cbi8qKlxuICogUGFyc2UgYSBsaXN0IG9mIHN0YXRlbWVudHMgZnJvbSB1bmRlZmluZWQsIGEgU3RhdGVtZW50LCBvciBhIGxpc3Qgb2Ygc3RhdGVtZW50c1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTdGF0ZW1lbnRzKHg6IGFueSk6IFN0YXRlbWVudFtdIHtcbiAgaWYgKHggPT09IHVuZGVmaW5lZCkgeyB4ID0gW107IH1cbiAgaWYgKCFBcnJheS5pc0FycmF5KHgpKSB7IHggPSBbeF07IH1cbiAgcmV0dXJuIHgubWFwKChzOiBhbnkpID0+IG5ldyBTdGF0ZW1lbnQocykpO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgU3RhdGVtZW50IGZyb20gYSBMYW1iZGE6OlBlcm1pc3Npb24gb2JqZWN0XG4gKlxuICogVGhpcyBpcyBhY3R1YWxseSB3aGF0IExhbWJkYSBhZGRzIHRvIHRoZSBwb2xpY3kgZG9jdW1lbnQgaWYgeW91IGNhbGwgQWRkUGVybWlzc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTGFtYmRhUGVybWlzc2lvbih4OiBhbnkpOiBTdGF0ZW1lbnQge1xuICAvLyBDb25zdHJ1Y3QgYSBzdGF0ZW1lbnQgZnJvbVxuICBjb25zdCBzdGF0ZW1lbnQ6IGFueSA9IHtcbiAgICBFZmZlY3Q6ICdBbGxvdycsXG4gICAgQWN0aW9uOiB4LkFjdGlvbixcbiAgICBSZXNvdXJjZTogeC5GdW5jdGlvbk5hbWUsXG4gIH07XG5cbiAgaWYgKHguUHJpbmNpcGFsICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoeC5QcmluY2lwYWwgPT09ICcqJykge1xuICAgICAgLy8gKlxuICAgICAgc3RhdGVtZW50LlByaW5jaXBhbCA9ICcqJztcbiAgICB9IGVsc2UgaWYgKC9eXFxkezEyfSQvLnRlc3QoeC5QcmluY2lwYWwpKSB7XG4gICAgICAvLyBBY2NvdW50IG51bWJlclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhd3MtY2RrL25vLWxpdGVyYWwtcGFydGl0aW9uXG4gICAgICBzdGF0ZW1lbnQuUHJpbmNpcGFsID0geyBBV1M6IGBhcm46YXdzOmlhbTo6JHt4LlByaW5jaXBhbH06cm9vdGAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQXNzdW1lIGl0J3MgYSBzZXJ2aWNlIHByaW5jaXBhbFxuICAgICAgLy8gV2UgbWlnaHQgZ2V0IHRoaXMgd3JvbmcgdnMuIHRoZSBwcmV2aW91cyBvbmUgZm9yIHRva2Vucy4gTm90aGluZyB0byBiZSBkb25lXG4gICAgICAvLyBhYm91dCB0aGF0LiBJdCdzIG9ubHkgZm9yIGh1bWFuIHJlYWRhYmxlIGNvbnN1bXB0aW9uIGFmdGVyIGFsbC5cbiAgICAgIHN0YXRlbWVudC5QcmluY2lwYWwgPSB7IFNlcnZpY2U6IHguUHJpbmNpcGFsIH07XG4gICAgfVxuICB9XG4gIGlmICh4LlNvdXJjZUFybiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHN0YXRlbWVudC5Db25kaXRpb24gPT09IHVuZGVmaW5lZCkgeyBzdGF0ZW1lbnQuQ29uZGl0aW9uID0ge307IH1cbiAgICBzdGF0ZW1lbnQuQ29uZGl0aW9uLkFybkxpa2UgPSB7ICdBV1M6U291cmNlQXJuJzogeC5Tb3VyY2VBcm4gfTtcbiAgfVxuICBpZiAoeC5Tb3VyY2VBY2NvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoc3RhdGVtZW50LkNvbmRpdGlvbiA9PT0gdW5kZWZpbmVkKSB7IHN0YXRlbWVudC5Db25kaXRpb24gPSB7fTsgfVxuICAgIHN0YXRlbWVudC5Db25kaXRpb24uU3RyaW5nRXF1YWxzID0geyAnQVdTOlNvdXJjZUFjY291bnQnOiB4LlNvdXJjZUFjY291bnQgfTtcbiAgfVxuICBpZiAoeC5FdmVudFNvdXJjZVRva2VuICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoc3RhdGVtZW50LkNvbmRpdGlvbiA9PT0gdW5kZWZpbmVkKSB7IHN0YXRlbWVudC5Db25kaXRpb24gPSB7fTsgfVxuICAgIHN0YXRlbWVudC5Db25kaXRpb24uU3RyaW5nRXF1YWxzID0geyAnbGFtYmRhOkV2ZW50U291cmNlVG9rZW4nOiB4LkV2ZW50U291cmNlVG9rZW4gfTtcbiAgfVxuXG4gIHJldHVybiBuZXcgU3RhdGVtZW50KHN0YXRlbWVudCk7XG59XG5cbi8qKlxuICogVGFyZ2V0cyBmb3IgYSBmaWVsZFxuICovXG5leHBvcnQgY2xhc3MgVGFyZ2V0cyB7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWVzIG9mIHRoZSB0YXJnZXRzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWVzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBtYXRjaGVyc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5vdDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihzdGF0ZW1lbnQ6IFVua25vd25NYXAsIHBvc2l0aXZlS2V5OiBzdHJpbmcsIG5lZ2F0aXZlS2V5OiBzdHJpbmcpIHtcbiAgICBpZiAobmVnYXRpdmVLZXkgaW4gc3RhdGVtZW50KSB7XG4gICAgICB0aGlzLnZhbHVlcyA9IGZvcmNlTGlzdE9mU3RyaW5ncyhzdGF0ZW1lbnRbbmVnYXRpdmVLZXldKTtcbiAgICAgIHRoaXMubm90ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZXMgPSBmb3JjZUxpc3RPZlN0cmluZ3Moc3RhdGVtZW50W3Bvc2l0aXZlS2V5XSk7XG4gICAgICB0aGlzLm5vdCA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLnZhbHVlcy5zb3J0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5sZW5ndGggPT09IDA7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHNldCBvZiB0YXJnZXRzIGlzIGVxdWFsIHRvIHRoZSBvdGhlciBzZXQgb2YgdGFyZ2V0c1xuICAgKi9cbiAgcHVibGljIGVxdWFsKG90aGVyOiBUYXJnZXRzKSB7XG4gICAgcmV0dXJuIHRoaXMubm90ID09PSBvdGhlci5ub3QgJiYgZGVlcEVxdWFsKHRoaXMudmFsdWVzLnNvcnQoKSwgb3RoZXIudmFsdWVzLnNvcnQoKSk7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGN1cnJlbnQgdmFsdWUgc2V0IGlzIGVtcHR5LCBwdXQgdGhpcyBpbiBpdFxuICAgKi9cbiAgcHVibGljIHJlcGxhY2VFbXB0eShyZXBsYWNlbWVudDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuZW1wdHkpIHtcbiAgICAgIHRoaXMudmFsdWVzLnB1c2gocmVwbGFjZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgYWN0aW9ucyBjb250YWlucyBhICcqJywgcmVwbGFjZSB3aXRoIHRoaXMgc3RyaW5nLlxuICAgKi9cbiAgcHVibGljIHJlcGxhY2VTdGFyKHJlcGxhY2VtZW50OiBzdHJpbmcpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy52YWx1ZXNbaV0gPT09ICcqJykge1xuICAgICAgICB0aGlzLnZhbHVlc1tpXSA9IHJlcGxhY2VtZW50O1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnZhbHVlcy5zb3J0KCk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIGludG8gYSBzdW1tYXJ5IHRhYmxlIGNlbGxcbiAgICovXG4gIHB1YmxpYyByZW5kZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ub3RcbiAgICAgID8gdGhpcy52YWx1ZXMubWFwKHMgPT4gYE5PVCAke3N9YCkuam9pbignXFxuJylcbiAgICAgIDogdGhpcy52YWx1ZXMuam9pbignXFxuJyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbWFjaGluZS1yZWFkYWJsZSB2ZXJzaW9uIG9mIHRoZSBjaGFuZ2VzLlxuICAgKiBUaGlzIGlzIG9ubHkgdXNlZCBpbiB0ZXN0cy5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX3RvSnNvbigpOiBUYXJnZXRzSnNvbiB7XG4gICAgcmV0dXJuIHsgbm90OiB0aGlzLm5vdCwgdmFsdWVzOiB0aGlzLnZhbHVlcyB9O1xuICB9XG59XG5cbnR5cGUgVW5rbm93bk1hcCA9IHtba2V5OiBzdHJpbmddOiB1bmtub3dufTtcblxuZXhwb3J0IGVudW0gRWZmZWN0IHtcbiAgVW5rbm93biA9ICdVbmtub3duJyxcbiAgQWxsb3cgPSAnQWxsb3cnLFxuICBEZW55ID0gJ0RlbnknLFxufVxuXG5mdW5jdGlvbiBleHBlY3RTdHJpbmcoeDogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gJ3N0cmluZycgPyB4IDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBleHBlY3RFZmZlY3QoeDogdW5rbm93bik6IEVmZmVjdCB7XG4gIGlmICh4ID09PSBFZmZlY3QuQWxsb3cgfHwgeCA9PT0gRWZmZWN0LkRlbnkpIHsgcmV0dXJuIHggYXMgRWZmZWN0OyB9XG4gIHJldHVybiBFZmZlY3QuVW5rbm93bjtcbn1cblxuZnVuY3Rpb24gZm9yY2VMaXN0T2ZTdHJpbmdzKHg6IHVua25vd24pOiBzdHJpbmdbXSB7XG4gIGlmICh0eXBlb2YgeCA9PT0gJ3N0cmluZycpIHsgcmV0dXJuIFt4XTsgfVxuICBpZiAodHlwZW9mIHggPT09ICd1bmRlZmluZWQnIHx8IHggPT09IG51bGwpIHsgcmV0dXJuIFtdOyB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoeCkpIHtcbiAgICByZXR1cm4geC5tYXAoZSA9PiBmb3JjZUxpc3RPZlN0cmluZ3MoZSkuam9pbignLCcpKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgeCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHJldDogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh4KSkge1xuICAgICAgcmV0LnB1c2goLi4uZm9yY2VMaXN0T2ZTdHJpbmdzKHZhbHVlKS5tYXAocyA9PiBgJHtrZXl9OiR7c31gKSk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICByZXR1cm4gW2Ake3h9YF07XG59XG5cbi8qKlxuICogUmVuZGVyIHRoZSBDb25kaXRpb24gY29sdW1uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJDb25kaXRpb24oY29uZGl0aW9uOiBhbnkpOiBzdHJpbmcge1xuICBpZiAoIWNvbmRpdGlvbiB8fCBPYmplY3Qua2V5cyhjb25kaXRpb24pLmxlbmd0aCA9PT0gMCkgeyByZXR1cm4gJyc7IH1cbiAgY29uc3QganNvblJlcHJlc2VudGF0aW9uID0gSlNPTi5zdHJpbmdpZnkoY29uZGl0aW9uLCB1bmRlZmluZWQsIDIpO1xuXG4gIC8vIFRoZSBKU09OIHJlcHJlc2VudGF0aW9uIGxvb2tzIGxpa2UgdGhpczpcbiAgLy9cbiAgLy8gIHtcbiAgLy8gICAgXCJBcm5MaWtlXCI6IHtcbiAgLy8gICAgICBcIkFXUzpTb3VyY2VBcm5cIjogXCIke015VG9waWM4Njg2OTQzNH1cIlxuICAvLyAgICB9XG4gIC8vICB9XG4gIC8vXG4gIC8vIFdlIGNhbiBtYWtlIGl0IG1vcmUgY29tcGFjdCB3aXRob3V0IGxvc2luZyBpbmZvcm1hdGlvbiBieSBnZXR0aW5nIHJpZCBvZiB0aGUgb3V0ZXJtb3N0IGJyYWNlc1xuICAvLyBhbmQgdGhlIGluZGVudGF0aW9uLlxuICBjb25zdCBsaW5lcyA9IGpzb25SZXByZXNlbnRhdGlvbi5zcGxpdCgnXFxuJyk7XG4gIHJldHVybiBsaW5lcy5zbGljZSgxLCBsaW5lcy5sZW5ndGggLSAxKS5tYXAocyA9PiBzLnNsaWNlKDIpKS5qb2luKCdcXG4nKTtcbn1cbiJdfQ== /***/ }), @@ -11402,7 +11902,7 @@ class SecurityGroupChanges { } } exports.SecurityGroupChanges = SecurityGroupChanges; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktZ3JvdXAtY2hhbmdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlY3VyaXR5LWdyb3VwLWNoYW5nZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStCO0FBQy9CLCtEQUFvRTtBQUVwRSwwQ0FBaUQ7QUFDakQsNERBQXdEO0FBQ3hELGtDQUEyRTtBQVMzRTs7R0FFRztBQUNILE1BQWEsb0JBQW9CO0lBSS9CLFlBQVksS0FBZ0M7UUFINUIsWUFBTyxHQUFHLElBQUksNkJBQWtCLEVBQXFCLENBQUM7UUFDdEQsV0FBTSxHQUFHLElBQUksNkJBQWtCLEVBQXFCLENBQUM7UUFHbkUsY0FBYztRQUNkLEtBQUssTUFBTSxXQUFXLElBQUksS0FBSyxDQUFDLDBCQUEwQixFQUFFO1lBQzFELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFDbEcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztTQUNuRztRQUNELEtBQUssTUFBTSxVQUFVLElBQUksS0FBSyxDQUFDLHlCQUF5QixFQUFFO1lBQ3hELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFDL0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztTQUNoRztRQUVELGlCQUFpQjtR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QUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUFFLE9BQU8sRUFBRSxDQUFDO1NBQUU7UUFFbkQsMkRBQTJEO1FBRTNELE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxTQUFTLEdBQUcsV0FBVyxDQUFDO1FBQzNDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO1lBQzlCLE1BQU0sUUFBUSxHQUFHLElBQUEsb0NBQWdCLEVBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckMsMkRBQTJEO1lBQzNELE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksdUNBQWlCLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNwRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxRQUFhO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFBRSxPQUFPLEVBQUUsQ0FBQztTQUFFO1FBRTdCLDJEQUEyRDtRQUUzRCxPQUFPLENBQUMsSUFBSSx1Q0FBaUIsQ0FBQyxJQUFBLG9DQUFnQixFQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0NBQ0Y7QUFyR0Qsb0RBcUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHsgUnVsZUpzb24sIFNlY3VyaXR5R3JvdXBSdWxlIH0gZnJvbSAnLi9zZWN1cml0eS1ncm91cC1ydWxlJztcbmltcG9ydCB7IFByb3BlcnR5Q2hhbmdlLCBSZXNvdXJjZUNoYW5nZSB9IGZyb20gJy4uL2RpZmYvdHlwZXMnO1xuaW1wb3J0IHsgRGlmZmFibGVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vZGlmZmFibGUnO1xuaW1wb3J0IHsgcmVuZGVySW50cmluc2ljcyB9IGZyb20gJy4uL3JlbmRlci1pbnRyaW5zaWNzJztcbmltcG9ydCB7IGRlZXBSZW1vdmVVbmRlZmluZWQsIGRyb3BJZkVtcHR5LCBtYWtlQ29tcGFyYXRvciB9IGZyb20gJy4uL3V0aWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBDaGFuZ2VzUHJvcHMge1xuICBpbmdyZXNzUnVsZVByb3BlcnR5Q2hhbmdlczogUHJvcGVydHlDaGFuZ2VbXTtcbiAgaW5ncmVzc1J1bGVSZXNvdXJjZUNoYW5nZXM6IFJlc291cmNlQ2hhbmdlW107XG4gIGVncmVzc1J1bGVSZXNvdXJjZUNoYW5nZXM6IFJlc291cmNlQ2hhbmdlW107XG4gIGVncmVzc1J1bGVQcm9wZXJ0eUNoYW5nZXM6IFByb3BlcnR5Q2hhbmdlW107XG59XG5cbi8qKlxuICogQ2hhbmdlcyB0byBJQU0gc3RhdGVtZW50c1xuICovXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlHcm91cENoYW5nZXMge1xuICBwdWJsaWMgcmVhZG9ubHkgaW5ncmVzcyA9IG5ldyBEaWZmYWJsZUNvbGxlY3Rpb248U2VjdXJpdHlHcm91cFJ1bGU+KCk7XG4gIHB1YmxpYyByZWFkb25seSBlZ3Jlc3MgPSBuZXcgRGlmZmFibGVDb2xsZWN0aW9uPFNlY3VyaXR5R3JvdXBSdWxlPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBTZWN1cml0eUdyb3VwQ2hhbmdlc1Byb3BzKSB7XG4gICAgLy8gR3JvdXAgcnVsZXNcbiAgICBmb3IgKGNvbnN0IGluZ3Jlc3NQcm9wIG9mIHByb3BzLmluZ3Jlc3NSdWxlUHJvcGVydHlDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmluZ3Jlc3MuYWRkT2xkKC4uLnRoaXMucmVhZElubGluZVJ1bGVzKGluZ3Jlc3NQcm9wLm9sZFZhbHVlLCBpbmdyZXNzUHJvcC5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgdGhpcy5pbmdyZXNzLmFkZE5ldyguLi50aGlzLnJlYWRJbmxpbmVSdWxlcyhpbmdyZXNzUHJvcC5uZXdWYWx1ZSwgaW5ncmVzc1Byb3AucmVzb3VyY2VMb2dpY2FsSWQpKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBlZ3Jlc3NQcm9wIG9mIHByb3BzLmVncmVzc1J1bGVQcm9wZXJ0eUNoYW5nZXMpIHtcbiAgICAgIHRoaXMuZWdyZXNzLmFkZE9sZCguLi50aGlzLnJlYWRJbmxpbmVSdWxlcyhlZ3Jlc3NQcm9wLm9sZFZhbHVlLCBlZ3Jlc3NQcm9wLnJlc291cmNlTG9naWNhbElkKSk7XG4gICAgICB0aGlzLmVncmVzcy5hZGROZXcoLi4udGhpcy5yZWFkSW5saW5lUnVsZXMoZWdyZXNzUHJvcC5uZXdWYWx1ZSwgZWdyZXNzUHJvcC5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgIH1cblxuICAgIC8vIFJ1bGUgcmVzb3VyY2VzXG4gICAgZm9yIChjb25zdCBpbmdyZXNzUmVzIG9mIHByb3BzLmluZ3Jlc3NSdWxlUmVzb3VyY2VDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmluZ3Jlc3MuYWRkT2xkKC4uLnRoaXMucmVhZFJ1bGVSZXNvdXJjZShpbmdyZXNzUmVzLm9sZFByb3BlcnRpZXMpKTtcbiAgICAgIHRoaXMuaW5ncmVzcy5hZGROZXcoLi4udGhpcy5yZWFkUnVsZVJlc291cmNlKGluZ3Jlc3NSZXMubmV3UHJvcGVydGllcykpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGVncmVzc1JlcyBvZiBwcm9wcy5lZ3Jlc3NSdWxlUmVzb3VyY2VDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmVncmVzcy5hZGRPbGQoLi4udGhpcy5yZWFkUnVsZVJlc291cmNlKGVncmVzc1Jlcy5vbGRQcm9wZXJ0aWVzKSk7XG4gICAgICB0aGlzLmVncmVzcy5hZGROZXcoLi4udGhpcy5yZWFkUnVsZVJlc291cmNlKGVncmVzc1Jlcy5uZXdQcm9wZXJ0aWVzKSk7XG4gICAgfVxuXG4gICAgdGhpcy5pbmdyZXNzLmNhbGN1bGF0ZURpZmYoKTtcbiAgICB0aGlzLmVncmVzcy5jYWxjdWxhdGVEaWZmKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0NoYW5nZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5ncmVzcy5oYXNDaGFuZ2VzIHx8IHRoaXMuZWdyZXNzLmhhc0NoYW5nZXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgc3VtbWFyeSB0YWJsZSBvZiBjaGFuZ2VzXG4gICAqL1xuICBwdWJsaWMgc3VtbWFyaXplKCk6IHN0cmluZ1tdW10ge1xuICAgIGNvbnN0IHJldDogc3RyaW5nW11bXSA9IFtdO1xuXG4gICAgY29uc3QgaGVhZGVyID0gWycnLCAnR3JvdXAnLCAnRGlyJywgJ1Byb3RvY29sJywgJ1BlZXInXTtcblxuICAgIGNvbnN0IGluV29yZCA9ICdJbic7XG4gICAgY29uc3Qgb3V0V29yZCA9ICdPdXQnO1xuXG4gICAgLy8gUmVuZGVyIGEgc2luZ2xlIHJ1bGUgdG8gdGhlIHRhYmxlIChjdXJyaWVkIGZ1bmN0aW9uIHNvIHdlIGNhbiBtYXAgaXQgYWNyb3NzIHJ1bGVzIGVhc2lseS0tdGhhbmsgeW91IEphdmFTY3JpcHQhKVxuICAgIGNvbnN0IHJlbmRlclJ1bGUgPSAocGx1c01pbjogc3RyaW5nLCBpbk91dDogc3RyaW5nKSA9PiAocnVsZTogU2VjdXJpdHlHcm91cFJ1bGUpID0+IFtcbiAgICAgIHBsdXNNaW4sXG4gICAgICBydWxlLmdyb3VwSWQsXG4gICAgICBpbk91dCxcbiAgICAgIHJ1bGUuZGVzY3JpYmVQcm90b2NvbCgpLFxuICAgICAgcnVsZS5kZXNjcmliZVBlZXIoKSxcbiAgICBdLm1hcChzID0+IHBsdXNNaW4gPT09ICcrJyA/IGNoYWxrLmdyZWVuKHMpIDogY2hhbGsucmVkKHMpKTtcblxuICAgIC8vIEZpcnN0IGdlbmVyYXRlIGFsbCBsaW5lcywgc29ydCBsYXRlclxuICAgIHJldC5wdXNoKC4uLnRoaXMuaW5ncmVzcy5hZGRpdGlvbnMubWFwKHJlbmRlclJ1bGUoJysnLCBpbldvcmQpKSk7XG4gICAgcmV0LnB1c2goLi4udGhpcy5lZ3Jlc3MuYWRkaXRpb25zLm1hcChyZW5kZXJSdWxlKCcrJywgb3V0V29yZCkpKTtcbiAgICByZXQucHVzaCguLi50aGlzLmluZ3Jlc3MucmVtb3ZhbHMubWFwKHJlbmRlclJ1bGUoJy0nLCBpbldvcmQpKSk7XG4gICAgcmV0LnB1c2goLi4udGhpcy5lZ3Jlc3MucmVtb3ZhbHMubWFwKHJlbmRlclJ1bGUoJy0nLCBvdXRXb3JkKSkpO1xuXG4gICAgLy8gU29ydCBieSBncm91cCBuYW1lIHRoZW4gaW5ncmVzcy9lZ3Jlc3MgKGluZ3Jlc3MgZmlyc3QpXG4gICAgcmV0LnNvcnQobWFrZUNvbXBhcmF0b3IoKHJvdzogc3RyaW5nW10pID0+IFtyb3dbMV0sIHJvd1syXS5pbmRleE9mKGluV29yZCkgPiAtMSA/IDAgOiAxXSkpO1xuXG4gICAgcmV0LnNwbGljZSgwLCAwLCBoZWFkZXIpO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIHB1YmxpYyB0b0pzb24oKTogU2VjdXJpdHlHcm91cENoYW5nZXNKc29uIHtcbiAgICByZXR1cm4gZGVlcFJlbW92ZVVuZGVmaW5lZCh7XG4gICAgICBpbmdyZXNzUnVsZUFkZGl0aW9uczogZHJvcElmRW1wdHkodGhpcy5pbmdyZXNzLmFkZGl0aW9ucy5tYXAocyA9PiBzLnRvSnNvbigpKSksXG4gICAgICBpbmdyZXNzUnVsZVJlbW92YWxzOiBkcm9wSWZFbXB0eSh0aGlzLmluZ3Jlc3MucmVtb3ZhbHMubWFwKHMgPT4gcy50b0pzb24oKSkpLFxuICAgICAgZWdyZXNzUnVsZUFkZGl0aW9uczogZHJvcElmRW1wdHkodGhpcy5lZ3Jlc3MuYWRkaXRpb25zLm1hcChzID0+IHMudG9Kc29uKCkpKSxcbiAgICAgIGVncmVzc1J1bGVSZW1vdmFsczogZHJvcElmRW1wdHkodGhpcy5lZ3Jlc3MucmVtb3ZhbHMubWFwKHMgPT4gcy50b0pzb24oKSkpLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBydWxlc0FkZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmluZ3Jlc3MuaGFzQWRkaXRpb25zXG4gICAgICAgIHx8IHRoaXMuZWdyZXNzLmhhc0FkZGl0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgcmVhZElubGluZVJ1bGVzKHJ1bGVzOiBhbnksIGxvZ2ljYWxJZDogc3RyaW5nKTogU2VjdXJpdHlHcm91cFJ1bGVbXSB7XG4gICAgaWYgKCFydWxlcyB8fCAhQXJyYXkuaXNBcnJheShydWxlcykpIHsgcmV0dXJuIFtdOyB9XG5cbiAgICAvLyBVbkNsb3VkRm9ybWF0aW9uIHNvIHRoZSBwYXJzZXIgd29ya3MgaW4gYW4gZWFzaWVyIGRvbWFpblxuXG4gICAgY29uc3QgcmVmID0gJyR7JyArIGxvZ2ljYWxJZCArICcuR3JvdXBJZH0nO1xuICAgIHJldHVybiBydWxlcy5mbGF0TWFwKChyOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHJlbmRlcmVkID0gcmVuZGVySW50cmluc2ljcyhyKTtcbiAgICAgIC8vIFNlY3VyaXR5R3JvdXBSdWxlIGlzIG5vdCByb2J1c3QgYWdhaW5zdCB1bnBhcnNlZCBvYmplY3RzXG4gICAgICByZXR1cm4gdHlwZW9mIHJlbmRlcmVkID09PSAnb2JqZWN0JyA/IFtuZXcgU2VjdXJpdHlHcm91cFJ1bGUocmVuZGVyZWQsIHJlZildIDogW107XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRSdWxlUmVzb3VyY2UocmVzb3VyY2U6IGFueSk6IFNlY3VyaXR5R3JvdXBSdWxlW10ge1xuICAgIGlmICghcmVzb3VyY2UpIHsgcmV0dXJuIFtdOyB9XG5cbiAgICAvLyBVbkNsb3VkRm9ybWF0aW9uIHNvIHRoZSBwYXJzZXIgd29ya3MgaW4gYW4gZWFzaWVyIGRvbWFpblxuXG4gICAgcmV0dXJuIFtuZXcgU2VjdXJpdHlHcm91cFJ1bGUocmVuZGVySW50cmluc2ljcyhyZXNvdXJjZSkpXTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBDaGFuZ2VzSnNvbiB7XG4gIGluZ3Jlc3NSdWxlQWRkaXRpb25zPzogUnVsZUpzb25bXTtcbiAgaW5ncmVzc1J1bGVSZW1vdmFscz86IFJ1bGVKc29uW107XG4gIGVncmVzc1J1bGVBZGRpdGlvbnM/OiBSdWxlSnNvbltdO1xuICBlZ3Jlc3NSdWxlUmVtb3ZhbHM/OiBSdWxlSnNvbltdO1xufVxuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktZ3JvdXAtY2hhbmdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlY3VyaXR5LWdyb3VwLWNoYW5nZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStCO0FBQy9CLCtEQUFvRTtBQUVwRSwwQ0FBaUQ7QUFDakQsNERBQXdEO0FBQ3hELGtDQUEyRTtBQVMzRTs7R0FFRztBQUNILE1BQWEsb0JBQW9CO0lBSS9CLFlBQVksS0FBZ0M7UUFINUIsWUFBTyxHQUFHLElBQUksNkJBQWtCLEVBQXFCLENBQUM7UUFDdEQsV0FBTSxHQUFHLElBQUksNkJBQWtCLEVBQXFCLENBQUM7UUFHbkUsY0FBYztRQUNkLEtBQUssTUFBTSxXQUFXLElBQUksS0FBSyxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDM0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztZQUNsRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ3BHLENBQUM7UUFDRCxLQUFLLE1BQU0sVUFBVSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1lBQ3pELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFDL0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUNq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QztJQUVPLGVBQWUsQ0FBQyxLQUFVLEVBQUUsU0FBaUI7UUFDbkQsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUFDLE9BQU8sRUFBRSxDQUFDO1FBQUMsQ0FBQztRQUVuRCwyREFBMkQ7UUFFM0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLFNBQVMsR0FBRyxXQUFXLENBQUM7UUFDM0MsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDOUIsTUFBTSxRQUFRLEdBQUcsSUFBQSxvQ0FBZ0IsRUFBQyxDQUFDLENBQUMsQ0FBQztZQUNyQywyREFBMkQ7WUFDM0QsT0FBTyxPQUFPLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSx1Q0FBaUIsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3BGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGdCQUFnQixDQUFDLFFBQWE7UUFDcEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQUMsT0FBTyxFQUFFLENBQUM7UUFBQyxDQUFDO1FBRTdCLDJEQUEyRDtRQUUzRCxPQUFPLENBQUMsSUFBSSx1Q0FBaUIsQ0FBQyxJQUFBLG9DQUFnQixFQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0NBQ0Y7QUFyR0Qsb0RBcUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHsgUnVsZUpzb24sIFNlY3VyaXR5R3JvdXBSdWxlIH0gZnJvbSAnLi9zZWN1cml0eS1ncm91cC1ydWxlJztcbmltcG9ydCB7IFByb3BlcnR5Q2hhbmdlLCBSZXNvdXJjZUNoYW5nZSB9IGZyb20gJy4uL2RpZmYvdHlwZXMnO1xuaW1wb3J0IHsgRGlmZmFibGVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vZGlmZmFibGUnO1xuaW1wb3J0IHsgcmVuZGVySW50cmluc2ljcyB9IGZyb20gJy4uL3JlbmRlci1pbnRyaW5zaWNzJztcbmltcG9ydCB7IGRlZXBSZW1vdmVVbmRlZmluZWQsIGRyb3BJZkVtcHR5LCBtYWtlQ29tcGFyYXRvciB9IGZyb20gJy4uL3V0aWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBDaGFuZ2VzUHJvcHMge1xuICBpbmdyZXNzUnVsZVByb3BlcnR5Q2hhbmdlczogUHJvcGVydHlDaGFuZ2VbXTtcbiAgaW5ncmVzc1J1bGVSZXNvdXJjZUNoYW5nZXM6IFJlc291cmNlQ2hhbmdlW107XG4gIGVncmVzc1J1bGVSZXNvdXJjZUNoYW5nZXM6IFJlc291cmNlQ2hhbmdlW107XG4gIGVncmVzc1J1bGVQcm9wZXJ0eUNoYW5nZXM6IFByb3BlcnR5Q2hhbmdlW107XG59XG5cbi8qKlxuICogQ2hhbmdlcyB0byBJQU0gc3RhdGVtZW50c1xuICovXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlHcm91cENoYW5nZXMge1xuICBwdWJsaWMgcmVhZG9ubHkgaW5ncmVzcyA9IG5ldyBEaWZmYWJsZUNvbGxlY3Rpb248U2VjdXJpdHlHcm91cFJ1bGU+KCk7XG4gIHB1YmxpYyByZWFkb25seSBlZ3Jlc3MgPSBuZXcgRGlmZmFibGVDb2xsZWN0aW9uPFNlY3VyaXR5R3JvdXBSdWxlPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBTZWN1cml0eUdyb3VwQ2hhbmdlc1Byb3BzKSB7XG4gICAgLy8gR3JvdXAgcnVsZXNcbiAgICBmb3IgKGNvbnN0IGluZ3Jlc3NQcm9wIG9mIHByb3BzLmluZ3Jlc3NSdWxlUHJvcGVydHlDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmluZ3Jlc3MuYWRkT2xkKC4uLnRoaXMucmVhZElubGluZVJ1bGVzKGluZ3Jlc3NQcm9wLm9sZFZhbHVlLCBpbmdyZXNzUHJvcC5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgdGhpcy5pbmdyZXNzLmFkZE5ldyguLi50aGlzLnJlYWRJbmxpbmVSdWxlcyhpbmdyZXNzUHJvcC5uZXdWYWx1ZSwgaW5ncmVzc1Byb3AucmVzb3VyY2VMb2dpY2FsSWQpKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBlZ3Jlc3NQcm9wIG9mIHByb3BzLmVncmVzc1J1bGVQcm9wZXJ0eUNoYW5nZXMpIHtcbiAgICAgIHRoaXMuZWdyZXNzLmFkZE9sZCguLi50aGlzLnJlYWRJbmxpbmVSdWxlcyhlZ3Jlc3NQcm9wLm9sZFZhbHVlLCBlZ3Jlc3NQcm9wLnJlc291cmNlTG9naWNhbElkKSk7XG4gICAgICB0aGlzLmVncmVzcy5hZGROZXcoLi4udGhpcy5yZWFkSW5saW5lUnVsZXMoZWdyZXNzUHJvcC5uZXdWYWx1ZSwgZWdyZXNzUHJvcC5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgIH1cblxuICAgIC8vIFJ1bGUgcmVzb3VyY2VzXG4gICAgZm9yIChjb25zdCBpbmdyZXNzUmVzIG9mIHByb3BzLmluZ3Jlc3NSdWxlUmVzb3VyY2VDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmluZ3Jlc3MuYWRkT2xkKC4uLnRoaXMucmVhZFJ1bGVSZXNvdXJjZShpbmdyZXNzUmVzLm9sZFByb3BlcnRpZXMpKTtcbiAgICAgIHRoaXMuaW5ncmVzcy5hZGROZXcoLi4udGhpcy5yZWFkUnVsZVJlc291cmNlKGluZ3Jlc3NSZXMubmV3UHJvcGVydGllcykpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGVncmVzc1JlcyBvZiBwcm9wcy5lZ3Jlc3NSdWxlUmVzb3VyY2VDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmVncmVzcy5hZGRPbGQoLi4udGhpcy5yZWFkUnVsZVJlc291cmNlKGVncmVzc1Jlcy5vbGRQcm9wZXJ0aWVzKSk7XG4gICAgICB0aGlzLmVncmVzcy5hZGROZXcoLi4udGhpcy5yZWFkUnVsZVJlc291cmNlKGVncmVzc1Jlcy5uZXdQcm9wZXJ0aWVzKSk7XG4gICAgfVxuXG4gICAgdGhpcy5pbmdyZXNzLmNhbGN1bGF0ZURpZmYoKTtcbiAgICB0aGlzLmVncmVzcy5jYWxjdWxhdGVEaWZmKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0NoYW5nZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5ncmVzcy5oYXNDaGFuZ2VzIHx8IHRoaXMuZWdyZXNzLmhhc0NoYW5nZXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgc3VtbWFyeSB0YWJsZSBvZiBjaGFuZ2VzXG4gICAqL1xuICBwdWJsaWMgc3VtbWFyaXplKCk6IHN0cmluZ1tdW10ge1xuICAgIGNvbnN0IHJldDogc3RyaW5nW11bXSA9IFtdO1xuXG4gICAgY29uc3QgaGVhZGVyID0gWycnLCAnR3JvdXAnLCAnRGlyJywgJ1Byb3RvY29sJywgJ1BlZXInXTtcblxuICAgIGNvbnN0IGluV29yZCA9ICdJbic7XG4gICAgY29uc3Qgb3V0V29yZCA9ICdPdXQnO1xuXG4gICAgLy8gUmVuZGVyIGEgc2luZ2xlIHJ1bGUgdG8gdGhlIHRhYmxlIChjdXJyaWVkIGZ1bmN0aW9uIHNvIHdlIGNhbiBtYXAgaXQgYWNyb3NzIHJ1bGVzIGVhc2lseS0tdGhhbmsgeW91IEphdmFTY3JpcHQhKVxuICAgIGNvbnN0IHJlbmRlclJ1bGUgPSAocGx1c01pbjogc3RyaW5nLCBpbk91dDogc3RyaW5nKSA9PiAocnVsZTogU2VjdXJpdHlHcm91cFJ1bGUpID0+IFtcbiAgICAgIHBsdXNNaW4sXG4gICAgICBydWxlLmdyb3VwSWQsXG4gICAgICBpbk91dCxcbiAgICAgIHJ1bGUuZGVzY3JpYmVQcm90b2NvbCgpLFxuICAgICAgcnVsZS5kZXNjcmliZVBlZXIoKSxcbiAgICBdLm1hcChzID0+IHBsdXNNaW4gPT09ICcrJyA/IGNoYWxrLmdyZWVuKHMpIDogY2hhbGsucmVkKHMpKTtcblxuICAgIC8vIEZpcnN0IGdlbmVyYXRlIGFsbCBsaW5lcywgc29ydCBsYXRlclxuICAgIHJldC5wdXNoKC4uLnRoaXMuaW5ncmVzcy5hZGRpdGlvbnMubWFwKHJlbmRlclJ1bGUoJysnLCBpbldvcmQpKSk7XG4gICAgcmV0LnB1c2goLi4udGhpcy5lZ3Jlc3MuYWRkaXRpb25zLm1hcChyZW5kZXJSdWxlKCcrJywgb3V0V29yZCkpKTtcbiAgICByZXQucHVzaCguLi50aGlzLmluZ3Jlc3MucmVtb3ZhbHMubWFwKHJlbmRlclJ1bGUoJy0nLCBpbldvcmQpKSk7XG4gICAgcmV0LnB1c2goLi4udGhpcy5lZ3Jlc3MucmVtb3ZhbHMubWFwKHJlbmRlclJ1bGUoJy0nLCBvdXRXb3JkKSkpO1xuXG4gICAgLy8gU29ydCBieSBncm91cCBuYW1lIHRoZW4gaW5ncmVzcy9lZ3Jlc3MgKGluZ3Jlc3MgZmlyc3QpXG4gICAgcmV0LnNvcnQobWFrZUNvbXBhcmF0b3IoKHJvdzogc3RyaW5nW10pID0+IFtyb3dbMV0sIHJvd1syXS5pbmRleE9mKGluV29yZCkgPiAtMSA/IDAgOiAxXSkpO1xuXG4gICAgcmV0LnNwbGljZSgwLCAwLCBoZWFkZXIpO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIHB1YmxpYyB0b0pzb24oKTogU2VjdXJpdHlHcm91cENoYW5nZXNKc29uIHtcbiAgICByZXR1cm4gZGVlcFJlbW92ZVVuZGVmaW5lZCh7XG4gICAgICBpbmdyZXNzUnVsZUFkZGl0aW9uczogZHJvcElmRW1wdHkodGhpcy5pbmdyZXNzLmFkZGl0aW9ucy5tYXAocyA9PiBzLnRvSnNvbigpKSksXG4gICAgICBpbmdyZXNzUnVsZVJlbW92YWxzOiBkcm9wSWZFbXB0eSh0aGlzLmluZ3Jlc3MucmVtb3ZhbHMubWFwKHMgPT4gcy50b0pzb24oKSkpLFxuICAgICAgZWdyZXNzUnVsZUFkZGl0aW9uczogZHJvcElmRW1wdHkodGhpcy5lZ3Jlc3MuYWRkaXRpb25zLm1hcChzID0+IHMudG9Kc29uKCkpKSxcbiAgICAgIGVncmVzc1J1bGVSZW1vdmFsczogZHJvcElmRW1wdHkodGhpcy5lZ3Jlc3MucmVtb3ZhbHMubWFwKHMgPT4gcy50b0pzb24oKSkpLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBydWxlc0FkZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmluZ3Jlc3MuaGFzQWRkaXRpb25zXG4gICAgICAgIHx8IHRoaXMuZWdyZXNzLmhhc0FkZGl0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgcmVhZElubGluZVJ1bGVzKHJ1bGVzOiBhbnksIGxvZ2ljYWxJZDogc3RyaW5nKTogU2VjdXJpdHlHcm91cFJ1bGVbXSB7XG4gICAgaWYgKCFydWxlcyB8fCAhQXJyYXkuaXNBcnJheShydWxlcykpIHsgcmV0dXJuIFtdOyB9XG5cbiAgICAvLyBVbkNsb3VkRm9ybWF0aW9uIHNvIHRoZSBwYXJzZXIgd29ya3MgaW4gYW4gZWFzaWVyIGRvbWFpblxuXG4gICAgY29uc3QgcmVmID0gJyR7JyArIGxvZ2ljYWxJZCArICcuR3JvdXBJZH0nO1xuICAgIHJldHVybiBydWxlcy5mbGF0TWFwKChyOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHJlbmRlcmVkID0gcmVuZGVySW50cmluc2ljcyhyKTtcbiAgICAgIC8vIFNlY3VyaXR5R3JvdXBSdWxlIGlzIG5vdCByb2J1c3QgYWdhaW5zdCB1bnBhcnNlZCBvYmplY3RzXG4gICAgICByZXR1cm4gdHlwZW9mIHJlbmRlcmVkID09PSAnb2JqZWN0JyA/IFtuZXcgU2VjdXJpdHlHcm91cFJ1bGUocmVuZGVyZWQsIHJlZildIDogW107XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRSdWxlUmVzb3VyY2UocmVzb3VyY2U6IGFueSk6IFNlY3VyaXR5R3JvdXBSdWxlW10ge1xuICAgIGlmICghcmVzb3VyY2UpIHsgcmV0dXJuIFtdOyB9XG5cbiAgICAvLyBVbkNsb3VkRm9ybWF0aW9uIHNvIHRoZSBwYXJzZXIgd29ya3MgaW4gYW4gZWFzaWVyIGRvbWFpblxuXG4gICAgcmV0dXJuIFtuZXcgU2VjdXJpdHlHcm91cFJ1bGUocmVuZGVySW50cmluc2ljcyhyZXNvdXJjZSkpXTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBDaGFuZ2VzSnNvbiB7XG4gIGluZ3Jlc3NSdWxlQWRkaXRpb25zPzogUnVsZUpzb25bXTtcbiAgaW5ncmVzc1J1bGVSZW1vdmFscz86IFJ1bGVKc29uW107XG4gIGVncmVzc1J1bGVBZGRpdGlvbnM/OiBSdWxlSnNvbltdO1xuICBlZ3Jlc3NSdWxlUmVtb3ZhbHM/OiBSdWxlSnNvbltdO1xufVxuIl19 /***/ }), @@ -11505,7 +12005,7 @@ function findFirst(obj, keys, fn) { } return undefined; } -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktZ3JvdXAtcnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlY3VyaXR5LWdyb3VwLXJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxNQUFhLGlCQUFpQjtJQTBCNUIsWUFBWSxVQUFlLEVBQUUsUUFBaUI7UUFDNUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLFdBQVcsQ0FBQztRQUNuRSxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUM7UUFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sSUFBSSxRQUFRLElBQUksV0FBVyxDQUFDLENBQUMsNEJBQTRCO1FBRTFGLElBQUksQ0FBQyxJQUFJO1lBQ0wsU0FBUyxDQUFDLFVBQVUsRUFDbEIsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEVBQ3RCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQWlCLENBQUEsQ0FBQzs7b0JBRWxELFNBQVMsQ0FBQyxVQUFVLEVBQ2xCLENBQUMsNEJBQTRCLEVBQUUsdUJBQXVCLENBQUMsRUFDdkQsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUF3QixDQUFBLENBQUM7O29CQUUxRixTQUFTLENBQUMsVUFBVSxFQUNsQixDQUFDLHlCQUF5QixFQUFFLG9CQUFvQixDQUFDLEVBQ2pELENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQXFCLENBQUEsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBd0I7UUFDbkMsT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLEtBQUssQ0FBQyxVQUFVO2VBQ3BDLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDLFFBQVE7ZUFDaEMsSUFBSSxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsTUFBTTtlQUM1QixTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxFQUFFO1lBQUUsT0FBTyxZQUFZLENBQUM7U0FBRTtRQUV0RCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRWpELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsRUFBRTtZQUFFLE9BQU8sT0FBTyxVQUFVLEVBQUUsQ0FBQztTQUFFO1FBQ3pELElBQUksSUFBSSxDQUFDLFFBQVEsS0FBSyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQUUsT0FBTyxHQUFHLFVBQVUsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7U0FBRTtRQUMvRSxPQUFPLEdBQUcsVUFBVSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUNiLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7Z0JBQ3RCLEtBQUssU0FBUztvQkFDWixJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLFdBQVcsRUFBRTt3QkFBRSxPQUFPLGlCQUFpQixDQUFDO3FCQUFFO29CQUMvRCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLE1BQU0sRUFBRTt3QkFBRSxPQUFPLGlCQUFpQixDQUFDO3FCQUFFO29CQUMxRCxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDM0IsS0FBSyxhQUFhLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDdkQsS0FBSyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQzlEO1NBQ0Y7UUFFRCxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFTSxNQUFNO1FBQ1gsT0FBTztZQUNMLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVU7WUFDM0IsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3ZCLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTTtZQUNuQixJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDaEIsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXZGRCw4Q0F1RkM7QUFtQkQsU0FBUyxTQUFTLENBQUMsQ0FBWSxFQUFFLENBQVk7SUFDM0MsSUFBSSxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsRUFBRTtRQUFFLE9BQU8sS0FBSyxDQUFDO0tBQUU7SUFDOUQsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFO1FBQUUsT0FBTyxJQUFJLENBQUM7S0FBRTtJQUVyQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBRSxDQUFDLElBQUksRUFBRTtRQUFFLE9BQU8sS0FBSyxDQUFDO0tBQUU7SUFDekMsUUFBUSxDQUFDLENBQUMsSUFBSSxFQUFFO1FBQ2QsS0FBSyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQU0sQ0FBYyxDQUFDLEVBQUUsQ0FBQztRQUNuRCxLQUFLLGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxLQUFNLENBQWMsQ0FBQyxlQUFlLENBQUM7UUFDcEYsS0FBSyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLEtBQU0sQ0FBYyxDQUFDLFlBQVksQ0FBQztLQUM1RTtBQUNILENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBSSxHQUFRLEVBQUUsSUFBYyxFQUFFLEVBQW9CO0lBQ2xFLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1FBQ3RCLElBQUk7WUFDRixJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUU7Z0JBQ2QsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDckI7U0FDRjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsUUFBUSxDQUFDO1NBQ1Y7S0FDRjtJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgc2luZ2xlIHNlY3VyaXR5IGdyb3VwIHJ1bGUsIGVpdGhlciBlZ3Jlc3Mgb3IgaW5ncmVzc1xuICovXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlHcm91cFJ1bGUge1xuICAvKipcbiAgICogR3JvdXAgSUQgb2YgdGhlIGdyb3VwIHRoaXMgcnVsZSBhcHBsaWVzIHRvXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JvdXBJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJUCBwcm90b2NvbCB0aGlzIHJ1bGUgYXBwbGllcyB0b1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlwUHJvdG9jb2w6IHN0cmluZztcblxuICAvKipcbiAgICogU3RhcnQgb2YgcG9ydCByYW5nZSB0aGlzIHJ1bGUgYXBwbGllcyB0bywgb3IgSUNNUCB0eXBlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZnJvbVBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEVuZCBvZiBwb3J0IHJhbmdlIHRoaXMgcnVsZSBhcHBsaWVzIHRvLCBvciBJQ01QIGNvZGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0b1BvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFBlZXIgb2YgdGhpcyBydWxlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGVlcj86IFJ1bGVQZWVyO1xuXG4gIGNvbnN0cnVjdG9yKHJ1bGVPYmplY3Q6IGFueSwgZ3JvdXBSZWY/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmlwUHJvdG9jb2wgPSBydWxlT2JqZWN0LklwUHJvdG9jb2w/LnRvU3RyaW5nKCkgfHwgJyp1bmtub3duKic7XG4gICAgdGhpcy5mcm9tUG9ydCA9IHJ1bGVPYmplY3QuRnJvbVBvcnQ7XG4gICAgdGhpcy50b1BvcnQgPSBydWxlT2JqZWN0LlRvUG9ydDtcbiAgICB0aGlzLmdyb3VwSWQgPSBydWxlT2JqZWN0Lkdyb3VwSWQgfHwgZ3JvdXBSZWYgfHwgJyp1bmtub3duKic7IC8vIEluIGNhc2Ugb2YgYW4gaW5saW5lIHJ1bGVcblxuICAgIHRoaXMucGVlciA9XG4gICAgICAgIGZpbmRGaXJzdChydWxlT2JqZWN0LFxuICAgICAgICAgIFsnQ2lkcklwJywgJ0NpZHJJcHY2J10sXG4gICAgICAgICAgKGlwKSA9PiAoeyBraW5kOiAnY2lkci1pcCcsIGlwIH0gYXMgQ2lkcklwUGVlcikpXG4gICAgICAgIHx8XG4gICAgICAgIGZpbmRGaXJzdChydWxlT2JqZWN0LFxuICAgICAgICAgIFsnRGVzdGluYXRpb25TZWN1cml0eUdyb3VwSWQnLCAnU291cmNlU2VjdXJpdHlHcm91cElkJ10sXG4gICAgICAgICAgKHNlY3VyaXR5R3JvdXBJZCkgPT4gKHsga2luZDogJ3NlY3VyaXR5LWdyb3VwJywgc2VjdXJpdHlHcm91cElkIH0gYXMgU2VjdXJpdHlHcm91cFBlZXIpKVxuICAgICAgICB8fFxuICAgICAgICBmaW5kRmlyc3QocnVsZU9iamVjdCxcbiAgICAgICAgICBbJ0Rlc3RpbmF0aW9uUHJlZml4TGlzdElkJywgJ1NvdXJjZVByZWZpeExpc3RJZCddLFxuICAgICAgICAgIChwcmVmaXhMaXN0SWQpID0+ICh7IGtpbmQ6ICdwcmVmaXgtbGlzdCcsIHByZWZpeExpc3RJZCB9IGFzIFByZWZpeExpc3RQZWVyKSk7XG4gIH1cblxuICBwdWJsaWMgZXF1YWwob3RoZXI6IFNlY3VyaXR5R3JvdXBSdWxlKSB7XG4gICAgcmV0dXJuIHRoaXMuaXBQcm90b2NvbCA9PT0gb3RoZXIuaXBQcm90b2NvbFxuICAgICAgICAmJiB0aGlzLmZyb21Qb3J0ID09PSBvdGhlci5mcm9tUG9ydFxuICAgICAgICAmJiB0aGlzLnRvUG9ydCA9PT0gb3RoZXIudG9Qb3J0XG4gICAgICAgICYmIHBlZXJFcXVhbCh0aGlzLnBlZXIsIG90aGVyLnBlZXIpO1xuICB9XG5cbiAgcHVibGljIGRlc2NyaWJlUHJvdG9jb2woKSB7XG4gICAgaWYgKHRoaXMuaXBQcm90b2NvbCA9PT0gJy0xJykgeyByZXR1cm4gJ0V2ZXJ5dGhpbmcnOyB9XG5cbiAgICBjb25zdCBpcFByb3RvY29sID0gdGhpcy5pcFByb3RvY29sLnRvVXBwZXJDYXNlKCk7XG5cbiAgICBpZiAodGhpcy5mcm9tUG9ydCA9PT0gLTEpIHsgcmV0dXJuIGBBbGwgJHtpcFByb3RvY29sfWA7IH1cbiAgICBpZiAodGhpcy5mcm9tUG9ydCA9PT0gdGhpcy50b1BvcnQpIHsgcmV0dXJuIGAke2lwUHJvdG9jb2x9ICR7dGhpcy5mcm9tUG9ydH1gOyB9XG4gICAgcmV0dXJuIGAke2lwUHJvdG9jb2x9ICR7dGhpcy5mcm9tUG9ydH0tJHt0aGlzLnRvUG9ydH1gO1xuICB9XG5cbiAgcHVibGljIGRlc2NyaWJlUGVlcigpIHtcbiAgICBpZiAodGhpcy5wZWVyKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMucGVlci5raW5kKSB7XG4gICAgICAgIGNhc2UgJ2NpZHItaXAnOlxuICAgICAgICAgIGlmICh0aGlzLnBlZXIuaXAgPT09ICcwLjAuMC4wLzAnKSB7IHJldHVybiAnRXZlcnlvbmUgKElQdjQpJzsgfVxuICAgICAgICAgIGlmICh0aGlzLnBlZXIuaXAgPT09ICc6Oi8wJykgeyByZXR1cm4gJ0V2ZXJ5b25lIChJUHY2KSc7IH1cbiAgICAgICAgICByZXR1cm4gYCR7dGhpcy5wZWVyLmlwfWA7XG4gICAgICAgIGNhc2UgJ3ByZWZpeC1saXN0JzogcmV0dXJuIGAke3RoaXMucGVlci5wcmVmaXhMaXN0SWR9YDtcbiAgICAgICAgY2FzZSAnc2VjdXJpdHktZ3JvdXAnOiByZXR1cm4gYCR7dGhpcy5wZWVyLnNlY3VyaXR5R3JvdXBJZH1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAnPyc7XG4gIH1cblxuICBwdWJsaWMgdG9Kc29uKCk6IFJ1bGVKc29uIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3JvdXBJZDogdGhpcy5ncm91cElkLFxuICAgICAgaXBQcm90b2NvbDogdGhpcy5pcFByb3RvY29sLFxuICAgICAgZnJvbVBvcnQ6IHRoaXMuZnJvbVBvcnQsXG4gICAgICB0b1BvcnQ6IHRoaXMudG9Qb3J0LFxuICAgICAgcGVlcjogdGhpcy5wZWVyLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaWRySXBQZWVyIHtcbiAga2luZDogJ2NpZHItaXAnO1xuICBpcDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBQZWVyIHtcbiAga2luZDogJ3NlY3VyaXR5LWdyb3VwJztcbiAgc2VjdXJpdHlHcm91cElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlZml4TGlzdFBlZXIge1xuICBraW5kOiAncHJlZml4LWxpc3QnO1xuICBwcmVmaXhMaXN0SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgUnVsZVBlZXIgPSBDaWRySXBQZWVyIHwgU2VjdXJpdHlHcm91cFBlZXIgfCBQcmVmaXhMaXN0UGVlcjtcblxuZnVuY3Rpb24gcGVlckVxdWFsKGE/OiBSdWxlUGVlciwgYj86IFJ1bGVQZWVyKSB7XG4gIGlmICgoYSA9PT0gdW5kZWZpbmVkKSAhPT0gKGIgPT09IHVuZGVmaW5lZCkpIHsgcmV0dXJuIGZhbHNlOyB9XG4gIGlmIChhID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHRydWU7IH1cblxuICBpZiAoYS5raW5kICE9PSBiIS5raW5kKSB7IHJldHVybiBmYWxzZTsgfVxuICBzd2l0Y2ggKGEua2luZCkge1xuICAgIGNhc2UgJ2NpZHItaXAnOiByZXR1cm4gYS5pcCA9PT0gKGIgYXMgdHlwZW9mIGEpLmlwO1xuICAgIGNhc2UgJ3NlY3VyaXR5LWdyb3VwJzogcmV0dXJuIGEuc2VjdXJpdHlHcm91cElkID09PSAoYiBhcyB0eXBlb2YgYSkuc2VjdXJpdHlHcm91cElkO1xuICAgIGNhc2UgJ3ByZWZpeC1saXN0JzogcmV0dXJuIGEucHJlZml4TGlzdElkID09PSAoYiBhcyB0eXBlb2YgYSkucHJlZml4TGlzdElkO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmRGaXJzdDxUPihvYmo6IGFueSwga2V5czogc3RyaW5nW10sIGZuOiAoeDogc3RyaW5nKSA9PiBUKTogVCB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKGtleSBpbiBvYmopIHtcbiAgICAgICAgcmV0dXJuIGZuKG9ialtrZXldKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBkZWJ1Z2dlcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdWxlSnNvbiB7XG4gIGdyb3VwSWQ6IHN0cmluZztcbiAgaXBQcm90b2NvbDogc3RyaW5nO1xuICBmcm9tUG9ydD86IG51bWJlcjtcbiAgdG9Qb3J0PzogbnVtYmVyO1xuICBwZWVyPzogUnVsZVBlZXI7XG59Il19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktZ3JvdXAtcnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlY3VyaXR5LWdyb3VwLXJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxNQUFhLGlCQUFpQjtJQTBCNUIsWUFBWSxVQUFlLEVBQUUsUUFBaUI7UUFDNUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLFdBQVcsQ0FBQztRQUNuRSxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUM7UUFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sSUFBSSxRQUFRLElBQUksV0FBVyxDQUFDLENBQUMsNEJBQTRCO1FBRTFGLElBQUksQ0FBQyxJQUFJO1lBQ0wsU0FBUyxDQUFDLFVBQVUsRUFDbEIsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEVBQ3RCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQWlCLENBQUEsQ0FBQzs7b0JBRWxELFNBQVMsQ0FBQyxVQUFVLEVBQ2xCLENBQUMsNEJBQTRCLEVBQUUsdUJBQXVCLENBQUMsRUFDdkQsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUF3QixDQUFBLENBQUM7O29CQUUxRixTQUFTLENBQUMsVUFBVSxFQUNsQixDQUFDLHlCQUF5QixFQUFFLG9CQUFvQixDQUFDLEVBQ2pELENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQXFCLENBQUEsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBd0I7UUFDbkMsT0FBTyxJQUFJLENBQUMsVUFBVSxLQUFLLEtBQUssQ0FBQyxVQUFVO2VBQ3BDLElBQUksQ0FBQyxRQUFRLEtBQUssS0FBSyxDQUFDLFFBQVE7ZUFDaEMsSUFBSSxDQUFDLE1BQU0sS0FBSyxLQUFLLENBQUMsTUFBTTtlQUM1QixTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxFQUFFLENBQUM7WUFBQyxPQUFPLFlBQVksQ0FBQztRQUFDLENBQUM7UUFFdEQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUVqRCxJQUFJLElBQUksQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUFDLE9BQU8sT0FBTyxVQUFVLEVBQUUsQ0FBQztRQUFDLENBQUM7UUFDekQsSUFBSSxJQUFJLENBQUMsUUFBUSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUFDLE9BQU8sR0FBRyxVQUFVLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQUMsQ0FBQztRQUMvRSxPQUFPLEdBQUcsVUFBVSxJQUFJLElBQUksQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3pELENBQUM7SUFFTSxZQUFZO1FBQ2pCLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2QsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUN2QixLQUFLLFNBQVM7b0JBQ1osSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxXQUFXLEVBQUUsQ0FBQzt3QkFBQyxPQUFPLGlCQUFpQixDQUFDO29CQUFDLENBQUM7b0JBQy9ELElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssTUFBTSxFQUFFLENBQUM7d0JBQUMsT0FBTyxpQkFBaUIsQ0FBQztvQkFBQyxDQUFDO29CQUMxRCxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDM0IsS0FBSyxhQUFhLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztnQkFDdkQsS0FBSyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQy9ELENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRU0sTUFBTTtRQUNYLE9BQU87WUFDTCxPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87WUFDckIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07WUFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO1NBQ2hCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF2RkQsOENBdUZDO0FBbUJELFNBQVMsU0FBUyxDQUFDLENBQVksRUFBRSxDQUFZO0lBQzNDLElBQUksQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sS0FBSyxDQUFDO0lBQUMsQ0FBQztJQUM5RCxJQUFJLENBQUMsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUFDLE9BQU8sSUFBSSxDQUFDO0lBQUMsQ0FBQztJQUVyQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBRSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQUMsT0FBTyxLQUFLLENBQUM7SUFBQyxDQUFDO0lBQ3pDLFFBQVEsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2YsS0FBSyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEtBQU0sQ0FBYyxDQUFDLEVBQUUsQ0FBQztRQUNuRCxLQUFLLGdCQUFnQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxLQUFNLENBQWMsQ0FBQyxlQUFlLENBQUM7UUFDcEYsS0FBSyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLEtBQU0sQ0FBYyxDQUFDLFlBQVksQ0FBQztJQUM3RSxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFJLEdBQVEsRUFBRSxJQUFjLEVBQUUsRUFBb0I7SUFDbEUsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUM7WUFDSCxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDZixPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN0QixDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxRQUFRLENBQUM7UUFDWCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgc2luZ2xlIHNlY3VyaXR5IGdyb3VwIHJ1bGUsIGVpdGhlciBlZ3Jlc3Mgb3IgaW5ncmVzc1xuICovXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlHcm91cFJ1bGUge1xuICAvKipcbiAgICogR3JvdXAgSUQgb2YgdGhlIGdyb3VwIHRoaXMgcnVsZSBhcHBsaWVzIHRvXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JvdXBJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJUCBwcm90b2NvbCB0aGlzIHJ1bGUgYXBwbGllcyB0b1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlwUHJvdG9jb2w6IHN0cmluZztcblxuICAvKipcbiAgICogU3RhcnQgb2YgcG9ydCByYW5nZSB0aGlzIHJ1bGUgYXBwbGllcyB0bywgb3IgSUNNUCB0eXBlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZnJvbVBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEVuZCBvZiBwb3J0IHJhbmdlIHRoaXMgcnVsZSBhcHBsaWVzIHRvLCBvciBJQ01QIGNvZGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0b1BvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFBlZXIgb2YgdGhpcyBydWxlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGVlcj86IFJ1bGVQZWVyO1xuXG4gIGNvbnN0cnVjdG9yKHJ1bGVPYmplY3Q6IGFueSwgZ3JvdXBSZWY/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmlwUHJvdG9jb2wgPSBydWxlT2JqZWN0LklwUHJvdG9jb2w/LnRvU3RyaW5nKCkgfHwgJyp1bmtub3duKic7XG4gICAgdGhpcy5mcm9tUG9ydCA9IHJ1bGVPYmplY3QuRnJvbVBvcnQ7XG4gICAgdGhpcy50b1BvcnQgPSBydWxlT2JqZWN0LlRvUG9ydDtcbiAgICB0aGlzLmdyb3VwSWQgPSBydWxlT2JqZWN0Lkdyb3VwSWQgfHwgZ3JvdXBSZWYgfHwgJyp1bmtub3duKic7IC8vIEluIGNhc2Ugb2YgYW4gaW5saW5lIHJ1bGVcblxuICAgIHRoaXMucGVlciA9XG4gICAgICAgIGZpbmRGaXJzdChydWxlT2JqZWN0LFxuICAgICAgICAgIFsnQ2lkcklwJywgJ0NpZHJJcHY2J10sXG4gICAgICAgICAgKGlwKSA9PiAoeyBraW5kOiAnY2lkci1pcCcsIGlwIH0gYXMgQ2lkcklwUGVlcikpXG4gICAgICAgIHx8XG4gICAgICAgIGZpbmRGaXJzdChydWxlT2JqZWN0LFxuICAgICAgICAgIFsnRGVzdGluYXRpb25TZWN1cml0eUdyb3VwSWQnLCAnU291cmNlU2VjdXJpdHlHcm91cElkJ10sXG4gICAgICAgICAgKHNlY3VyaXR5R3JvdXBJZCkgPT4gKHsga2luZDogJ3NlY3VyaXR5LWdyb3VwJywgc2VjdXJpdHlHcm91cElkIH0gYXMgU2VjdXJpdHlHcm91cFBlZXIpKVxuICAgICAgICB8fFxuICAgICAgICBmaW5kRmlyc3QocnVsZU9iamVjdCxcbiAgICAgICAgICBbJ0Rlc3RpbmF0aW9uUHJlZml4TGlzdElkJywgJ1NvdXJjZVByZWZpeExpc3RJZCddLFxuICAgICAgICAgIChwcmVmaXhMaXN0SWQpID0+ICh7IGtpbmQ6ICdwcmVmaXgtbGlzdCcsIHByZWZpeExpc3RJZCB9IGFzIFByZWZpeExpc3RQZWVyKSk7XG4gIH1cblxuICBwdWJsaWMgZXF1YWwob3RoZXI6IFNlY3VyaXR5R3JvdXBSdWxlKSB7XG4gICAgcmV0dXJuIHRoaXMuaXBQcm90b2NvbCA9PT0gb3RoZXIuaXBQcm90b2NvbFxuICAgICAgICAmJiB0aGlzLmZyb21Qb3J0ID09PSBvdGhlci5mcm9tUG9ydFxuICAgICAgICAmJiB0aGlzLnRvUG9ydCA9PT0gb3RoZXIudG9Qb3J0XG4gICAgICAgICYmIHBlZXJFcXVhbCh0aGlzLnBlZXIsIG90aGVyLnBlZXIpO1xuICB9XG5cbiAgcHVibGljIGRlc2NyaWJlUHJvdG9jb2woKSB7XG4gICAgaWYgKHRoaXMuaXBQcm90b2NvbCA9PT0gJy0xJykgeyByZXR1cm4gJ0V2ZXJ5dGhpbmcnOyB9XG5cbiAgICBjb25zdCBpcFByb3RvY29sID0gdGhpcy5pcFByb3RvY29sLnRvVXBwZXJDYXNlKCk7XG5cbiAgICBpZiAodGhpcy5mcm9tUG9ydCA9PT0gLTEpIHsgcmV0dXJuIGBBbGwgJHtpcFByb3RvY29sfWA7IH1cbiAgICBpZiAodGhpcy5mcm9tUG9ydCA9PT0gdGhpcy50b1BvcnQpIHsgcmV0dXJuIGAke2lwUHJvdG9jb2x9ICR7dGhpcy5mcm9tUG9ydH1gOyB9XG4gICAgcmV0dXJuIGAke2lwUHJvdG9jb2x9ICR7dGhpcy5mcm9tUG9ydH0tJHt0aGlzLnRvUG9ydH1gO1xuICB9XG5cbiAgcHVibGljIGRlc2NyaWJlUGVlcigpIHtcbiAgICBpZiAodGhpcy5wZWVyKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMucGVlci5raW5kKSB7XG4gICAgICAgIGNhc2UgJ2NpZHItaXAnOlxuICAgICAgICAgIGlmICh0aGlzLnBlZXIuaXAgPT09ICcwLjAuMC4wLzAnKSB7IHJldHVybiAnRXZlcnlvbmUgKElQdjQpJzsgfVxuICAgICAgICAgIGlmICh0aGlzLnBlZXIuaXAgPT09ICc6Oi8wJykgeyByZXR1cm4gJ0V2ZXJ5b25lIChJUHY2KSc7IH1cbiAgICAgICAgICByZXR1cm4gYCR7dGhpcy5wZWVyLmlwfWA7XG4gICAgICAgIGNhc2UgJ3ByZWZpeC1saXN0JzogcmV0dXJuIGAke3RoaXMucGVlci5wcmVmaXhMaXN0SWR9YDtcbiAgICAgICAgY2FzZSAnc2VjdXJpdHktZ3JvdXAnOiByZXR1cm4gYCR7dGhpcy5wZWVyLnNlY3VyaXR5R3JvdXBJZH1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAnPyc7XG4gIH1cblxuICBwdWJsaWMgdG9Kc29uKCk6IFJ1bGVKc29uIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3JvdXBJZDogdGhpcy5ncm91cElkLFxuICAgICAgaXBQcm90b2NvbDogdGhpcy5pcFByb3RvY29sLFxuICAgICAgZnJvbVBvcnQ6IHRoaXMuZnJvbVBvcnQsXG4gICAgICB0b1BvcnQ6IHRoaXMudG9Qb3J0LFxuICAgICAgcGVlcjogdGhpcy5wZWVyLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaWRySXBQZWVyIHtcbiAga2luZDogJ2NpZHItaXAnO1xuICBpcDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBQZWVyIHtcbiAga2luZDogJ3NlY3VyaXR5LWdyb3VwJztcbiAgc2VjdXJpdHlHcm91cElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlZml4TGlzdFBlZXIge1xuICBraW5kOiAncHJlZml4LWxpc3QnO1xuICBwcmVmaXhMaXN0SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgUnVsZVBlZXIgPSBDaWRySXBQZWVyIHwgU2VjdXJpdHlHcm91cFBlZXIgfCBQcmVmaXhMaXN0UGVlcjtcblxuZnVuY3Rpb24gcGVlckVxdWFsKGE/OiBSdWxlUGVlciwgYj86IFJ1bGVQZWVyKSB7XG4gIGlmICgoYSA9PT0gdW5kZWZpbmVkKSAhPT0gKGIgPT09IHVuZGVmaW5lZCkpIHsgcmV0dXJuIGZhbHNlOyB9XG4gIGlmIChhID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHRydWU7IH1cblxuICBpZiAoYS5raW5kICE9PSBiIS5raW5kKSB7IHJldHVybiBmYWxzZTsgfVxuICBzd2l0Y2ggKGEua2luZCkge1xuICAgIGNhc2UgJ2NpZHItaXAnOiByZXR1cm4gYS5pcCA9PT0gKGIgYXMgdHlwZW9mIGEpLmlwO1xuICAgIGNhc2UgJ3NlY3VyaXR5LWdyb3VwJzogcmV0dXJuIGEuc2VjdXJpdHlHcm91cElkID09PSAoYiBhcyB0eXBlb2YgYSkuc2VjdXJpdHlHcm91cElkO1xuICAgIGNhc2UgJ3ByZWZpeC1saXN0JzogcmV0dXJuIGEucHJlZml4TGlzdElkID09PSAoYiBhcyB0eXBlb2YgYSkucHJlZml4TGlzdElkO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmRGaXJzdDxUPihvYmo6IGFueSwga2V5czogc3RyaW5nW10sIGZuOiAoeDogc3RyaW5nKSA9PiBUKTogVCB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKGtleSBpbiBvYmopIHtcbiAgICAgICAgcmV0dXJuIGZuKG9ialtrZXldKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBkZWJ1Z2dlcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdWxlSnNvbiB7XG4gIGdyb3VwSWQ6IHN0cmluZztcbiAgaXBQcm90b2NvbDogc3RyaW5nO1xuICBmcm9tUG9ydD86IG51bWJlcjtcbiAgdG9Qb3J0PzogbnVtYmVyO1xuICBwZWVyPzogUnVsZVBlZXI7XG59Il19 /***/ }), @@ -11591,7 +12091,7 @@ function isNoValue(x) { const int = getIntrinsic(x); return int && int.fn === 'Ref' && int.args === 'AWS::NoValue'; } -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWludHJpbnNpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZW5kZXItaW50cmluc2ljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLENBQU07SUFDckMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ3BCLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7S0FDN0Q7SUFFRCxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUFFLE9BQU8sU0FBUyxDQUFDO0tBQUU7SUFFdkMsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLElBQUksU0FBUyxFQUFFO1FBQ2IsSUFBSSxTQUFTLENBQUMsRUFBRSxLQUFLLEtBQUssRUFBRTtZQUFFLE9BQU8sSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1NBQUU7UUFDbkUsSUFBSSxTQUFTLENBQUMsRUFBRSxLQUFLLFlBQVksRUFBRTtZQUFFLE9BQU8sSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQUU7UUFDdkcsSUFBSSxTQUFTLENBQUMsRUFBRSxLQUFLLFVBQVUsRUFBRTtZQUFFLE9BQU8sc0JBQXNCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FBRTtRQUN6RyxPQUFPLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3pEO0lBRUQsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtRQUN2QyxNQUFNLEdBQUcsR0FBUSxFQUFFLENBQUM7UUFDcEIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDckIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3BDO1NBQ0Y7UUFDRCxPQUFPLEdBQUcsQ0FBQztLQUNaO0lBQ0QsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBekJELDRDQXlCQztBQUVELFNBQVMsc0JBQXNCLENBQUMsU0FBaUIsRUFBRSxJQUFTO0lBQzFELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN2QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUNoRjtJQUNELE9BQU8sa0JBQWtCLENBQUMsVUFBVSxFQUFFLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsRUFBVSxFQUFFLElBQVM7SUFDL0MsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLENBQU07SUFDMUIsSUFBSSxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUFFLE9BQU8sU0FBUyxDQUFDO0tBQUU7SUFDNUUsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztLQUFFO0lBQ2hELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDaEksQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLENBQU07SUFDdkIsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEtBQUssS0FBSyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDO0FBQ2hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFR1cm4gQ2xvdWRGb3JtYXRpb24gaW50cmluc2ljcyBpbnRvIHN0cmluZ3NcbiAqXG4gKiAtLS0tLS1cbiAqXG4gKiBUaGlzIHN0cmluZ2lmaWNhdGlvbiBpcyBub3QgaW50ZW5kZWQgdG8gYmUgbWVjaGFuaWNhbGx5IHJldmVyc2libGUhIEl0J3MgaW50ZW5kZWRcbiAqIHRvIGJlIHVuZGVyc3Rvb2QgYnkgaHVtYW5zIVxuICpcbiAqIC0tLS0tLVxuICpcbiAqIFR1cm5zIEZuOjpHZXRBdHQgYW5kIEZuOjpSZWYgb2JqZWN0cyBpbnRvIHRoZSBzYW1lIHN0cmluZ3MgdGhhdCBjYW4gYmVcbiAqIHBhcnNlZCBieSBGbjo6U3ViLCBidXQgd2l0aG91dCB0aGUgc3Vycm91bmRpbmcgaW50cmluc2ljcy5cbiAqXG4gKiBFdmFsdWF0ZXMgRm46OkpvaW4gZGlyZWN0bHkgaWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBhIGxpdGVyYWwgbGlzdCBvZiBzdHJpbmdzLlxuICpcbiAqIFJlbW92ZXMgbGlzdCBhbmQgb2JqZWN0IHZhbHVlcyBldmFsdWF0aW5nIHRvIHsgUmVmOiAnQVdTOjpOb1ZhbHVlJyB9LlxuICpcbiAqIEZvciBvdGhlciBpbnRyaW5zaWNzIHdlIGNob29zZSBhIHN0cmluZyByZXByZXNlbnRhdGlvbiB0aGF0IENsb3VkRm9ybWF0aW9uXG4gKiBjYW5ub3QgYWN0dWFsbHkgcGFyc2UsIGJ1dCBpcyBjb21wcmVoZW5zaWJsZSB0byBodW1hbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJJbnRyaW5zaWNzKHg6IGFueSk6IGFueSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHgpKSB7XG4gICAgcmV0dXJuIHguZmlsdGVyKGVsID0+ICFpc05vVmFsdWUoZWwpKS5tYXAocmVuZGVySW50cmluc2ljcyk7XG4gIH1cblxuICBpZiAoaXNOb1ZhbHVlKHgpKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cblxuICBjb25zdCBpbnRyaW5zaWMgPSBnZXRJbnRyaW5zaWMoeCk7XG4gIGlmIChpbnRyaW5zaWMpIHtcbiAgICBpZiAoaW50cmluc2ljLmZuID09PSAnUmVmJykgeyByZXR1cm4gJyR7JyArIGludHJpbnNpYy5hcmdzICsgJ30nOyB9XG4gICAgaWYgKGludHJpbnNpYy5mbiA9PT0gJ0ZuOjpHZXRBdHQnKSB7IHJldHVybiAnJHsnICsgaW50cmluc2ljLmFyZ3NbMF0gKyAnLicgKyBpbnRyaW5zaWMuYXJnc1sxXSArICd9JzsgfVxuICAgIGlmIChpbnRyaW5zaWMuZm4gPT09ICdGbjo6Sm9pbicpIHsgcmV0dXJuIHVuQ2xvdWRGb3JtYXRpb25GbkpvaW4oaW50cmluc2ljLmFyZ3NbMF0sIGludHJpbnNpYy5hcmdzWzFdKTsgfVxuICAgIHJldHVybiBzdHJpbmdpZnlJbnRyaW5zaWMoaW50cmluc2ljLmZuLCBpbnRyaW5zaWMuYXJncyk7XG4gIH1cblxuICBpZiAodHlwZW9mIHggPT09ICdvYmplY3QnICYmIHggIT09IG51bGwpIHtcbiAgICBjb25zdCByZXQ6IGFueSA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHgpKSB7XG4gICAgICBpZiAoIWlzTm9WYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0W2tleV0gPSByZW5kZXJJbnRyaW5zaWNzKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuICByZXR1cm4geDtcbn1cblxuZnVuY3Rpb24gdW5DbG91ZEZvcm1hdGlvbkZuSm9pbihzZXBhcmF0b3I6IHN0cmluZywgYXJnczogYW55KSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFyZ3MpKSB7XG4gICAgcmV0dXJuIGFyZ3MuZmlsdGVyKGVsID0+ICFpc05vVmFsdWUoZWwpKS5tYXAocmVuZGVySW50cmluc2ljcykuam9pbihzZXBhcmF0b3IpO1xuICB9XG4gIHJldHVybiBzdHJpbmdpZnlJbnRyaW5zaWMoJ0ZuOjpKb2luJywgW3NlcGFyYXRvciwgYXJnc10pO1xufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlJbnRyaW5zaWMoZm46IHN0cmluZywgYXJnczogYW55KSB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeSh7IFtmbl06IHJlbmRlckludHJpbnNpY3MoYXJncykgfSk7XG59XG5cbmZ1bmN0aW9uIGdldEludHJpbnNpYyh4OiBhbnkpOiBJbnRyaW5zaWMgfCB1bmRlZmluZWQge1xuICBpZiAoeCA9PT0gdW5kZWZpbmVkIHx8IHggPT09IG51bGwgfHwgQXJyYXkuaXNBcnJheSh4KSkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGlmICh0eXBlb2YgeCAhPT0gJ29iamVjdCcpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoeCk7XG4gIHJldHVybiBrZXlzLmxlbmd0aCA9PT0gMSAmJiAoa2V5c1swXSA9PT0gJ1JlZicgfHwga2V5c1swXS5zdGFydHNXaXRoKCdGbjo6JykpID8geyBmbjoga2V5c1swXSwgYXJnczogeFtrZXlzWzBdXSB9IDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc05vVmFsdWUoeDogYW55KSB7XG4gIGNvbnN0IGludCA9IGdldEludHJpbnNpYyh4KTtcbiAgcmV0dXJuIGludCAmJiBpbnQuZm4gPT09ICdSZWYnICYmIGludC5hcmdzID09PSAnQVdTOjpOb1ZhbHVlJztcbn1cblxuaW50ZXJmYWNlIEludHJpbnNpYyB7XG4gIGZuOiBzdHJpbmc7XG4gIGFyZ3M6IGFueTtcbn0iXX0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWludHJpbnNpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZW5kZXItaW50cmluc2ljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLENBQU07SUFDckMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDckIsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sU0FBUyxDQUFDO0lBQUMsQ0FBQztJQUV2QyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNkLElBQUksU0FBUyxDQUFDLEVBQUUsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUFDLE9BQU8sSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQUMsQ0FBQztRQUNuRSxJQUFJLFNBQVMsQ0FBQyxFQUFFLEtBQUssWUFBWSxFQUFFLENBQUM7WUFBQyxPQUFPLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUFDLENBQUM7UUFDdkcsSUFBSSxTQUFTLENBQUMsRUFBRSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQUMsT0FBTyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLENBQUM7UUFDekcsT0FBTyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3hDLE1BQU0sR0FBRyxHQUFRLEVBQUUsQ0FBQztRQUNwQixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBekJELDRDQXlCQztBQUVELFNBQVMsc0JBQXNCLENBQUMsU0FBaUIsRUFBRSxJQUFTO0lBQzFELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFDRCxPQUFPLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLEVBQVUsRUFBRSxJQUFTO0lBQy9DLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxDQUFNO0lBQzFCLElBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sU0FBUyxDQUFDO0lBQUMsQ0FBQztJQUM1RSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQUMsT0FBTyxTQUFTLENBQUM7SUFBQyxDQUFDO0lBQ2hELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDaEksQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLENBQU07SUFDdkIsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEtBQUssS0FBSyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDO0FBQ2hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFR1cm4gQ2xvdWRGb3JtYXRpb24gaW50cmluc2ljcyBpbnRvIHN0cmluZ3NcbiAqXG4gKiAtLS0tLS1cbiAqXG4gKiBUaGlzIHN0cmluZ2lmaWNhdGlvbiBpcyBub3QgaW50ZW5kZWQgdG8gYmUgbWVjaGFuaWNhbGx5IHJldmVyc2libGUhIEl0J3MgaW50ZW5kZWRcbiAqIHRvIGJlIHVuZGVyc3Rvb2QgYnkgaHVtYW5zIVxuICpcbiAqIC0tLS0tLVxuICpcbiAqIFR1cm5zIEZuOjpHZXRBdHQgYW5kIEZuOjpSZWYgb2JqZWN0cyBpbnRvIHRoZSBzYW1lIHN0cmluZ3MgdGhhdCBjYW4gYmVcbiAqIHBhcnNlZCBieSBGbjo6U3ViLCBidXQgd2l0aG91dCB0aGUgc3Vycm91bmRpbmcgaW50cmluc2ljcy5cbiAqXG4gKiBFdmFsdWF0ZXMgRm46OkpvaW4gZGlyZWN0bHkgaWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBhIGxpdGVyYWwgbGlzdCBvZiBzdHJpbmdzLlxuICpcbiAqIFJlbW92ZXMgbGlzdCBhbmQgb2JqZWN0IHZhbHVlcyBldmFsdWF0aW5nIHRvIHsgUmVmOiAnQVdTOjpOb1ZhbHVlJyB9LlxuICpcbiAqIEZvciBvdGhlciBpbnRyaW5zaWNzIHdlIGNob29zZSBhIHN0cmluZyByZXByZXNlbnRhdGlvbiB0aGF0IENsb3VkRm9ybWF0aW9uXG4gKiBjYW5ub3QgYWN0dWFsbHkgcGFyc2UsIGJ1dCBpcyBjb21wcmVoZW5zaWJsZSB0byBodW1hbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJJbnRyaW5zaWNzKHg6IGFueSk6IGFueSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHgpKSB7XG4gICAgcmV0dXJuIHguZmlsdGVyKGVsID0+ICFpc05vVmFsdWUoZWwpKS5tYXAocmVuZGVySW50cmluc2ljcyk7XG4gIH1cblxuICBpZiAoaXNOb1ZhbHVlKHgpKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cblxuICBjb25zdCBpbnRyaW5zaWMgPSBnZXRJbnRyaW5zaWMoeCk7XG4gIGlmIChpbnRyaW5zaWMpIHtcbiAgICBpZiAoaW50cmluc2ljLmZuID09PSAnUmVmJykgeyByZXR1cm4gJyR7JyArIGludHJpbnNpYy5hcmdzICsgJ30nOyB9XG4gICAgaWYgKGludHJpbnNpYy5mbiA9PT0gJ0ZuOjpHZXRBdHQnKSB7IHJldHVybiAnJHsnICsgaW50cmluc2ljLmFyZ3NbMF0gKyAnLicgKyBpbnRyaW5zaWMuYXJnc1sxXSArICd9JzsgfVxuICAgIGlmIChpbnRyaW5zaWMuZm4gPT09ICdGbjo6Sm9pbicpIHsgcmV0dXJuIHVuQ2xvdWRGb3JtYXRpb25GbkpvaW4oaW50cmluc2ljLmFyZ3NbMF0sIGludHJpbnNpYy5hcmdzWzFdKTsgfVxuICAgIHJldHVybiBzdHJpbmdpZnlJbnRyaW5zaWMoaW50cmluc2ljLmZuLCBpbnRyaW5zaWMuYXJncyk7XG4gIH1cblxuICBpZiAodHlwZW9mIHggPT09ICdvYmplY3QnICYmIHggIT09IG51bGwpIHtcbiAgICBjb25zdCByZXQ6IGFueSA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHgpKSB7XG4gICAgICBpZiAoIWlzTm9WYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0W2tleV0gPSByZW5kZXJJbnRyaW5zaWNzKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuICByZXR1cm4geDtcbn1cblxuZnVuY3Rpb24gdW5DbG91ZEZvcm1hdGlvbkZuSm9pbihzZXBhcmF0b3I6IHN0cmluZywgYXJnczogYW55KSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFyZ3MpKSB7XG4gICAgcmV0dXJuIGFyZ3MuZmlsdGVyKGVsID0+ICFpc05vVmFsdWUoZWwpKS5tYXAocmVuZGVySW50cmluc2ljcykuam9pbihzZXBhcmF0b3IpO1xuICB9XG4gIHJldHVybiBzdHJpbmdpZnlJbnRyaW5zaWMoJ0ZuOjpKb2luJywgW3NlcGFyYXRvciwgYXJnc10pO1xufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlJbnRyaW5zaWMoZm46IHN0cmluZywgYXJnczogYW55KSB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeSh7IFtmbl06IHJlbmRlckludHJpbnNpY3MoYXJncykgfSk7XG59XG5cbmZ1bmN0aW9uIGdldEludHJpbnNpYyh4OiBhbnkpOiBJbnRyaW5zaWMgfCB1bmRlZmluZWQge1xuICBpZiAoeCA9PT0gdW5kZWZpbmVkIHx8IHggPT09IG51bGwgfHwgQXJyYXkuaXNBcnJheSh4KSkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGlmICh0eXBlb2YgeCAhPT0gJ29iamVjdCcpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoeCk7XG4gIHJldHVybiBrZXlzLmxlbmd0aCA9PT0gMSAmJiAoa2V5c1swXSA9PT0gJ1JlZicgfHwga2V5c1swXS5zdGFydHNXaXRoKCdGbjo6JykpID8geyBmbjoga2V5c1swXSwgYXJnczogeFtrZXlzWzBdXSB9IDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc05vVmFsdWUoeDogYW55KSB7XG4gIGNvbnN0IGludCA9IGdldEludHJpbnNpYyh4KTtcbiAgcmV0dXJuIGludCAmJiBpbnQuZm4gPT09ICdSZWYnICYmIGludC5hcmdzID09PSAnQVdTOjpOb1ZhbHVlJztcbn1cblxuaW50ZXJmYWNlIEludHJpbnNpYyB7XG4gIGZuOiBzdHJpbmc7XG4gIGFyZ3M6IGFueTtcbn0iXX0= /***/ }), @@ -11661,7 +12161,7 @@ function flatMap(xs, f) { return ret; } exports.flatMap = flatMap; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxTQUFnQixjQUFjLENBQU8sS0FBb0I7SUFDdkQsT0FBTyxDQUFDLENBQUksRUFBRSxDQUFJLEVBQUUsRUFBRTtRQUNwQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFL0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM1QixNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFBRSxPQUFPLENBQUMsQ0FBQzthQUFFO1NBQzNCO1FBRUQsd0VBQXdFO1FBQ3hFLE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ25DLENBQUMsQ0FBQztBQUNKLENBQUM7QUFkRCx3Q0FjQztBQUVELFNBQVMsT0FBTyxDQUFJLENBQUksRUFBRSxDQUFJO0lBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FBRTtJQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFBRSxPQUFPLENBQUMsQ0FBQztLQUFFO0lBQ3hCLE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQztBQUVELFNBQWdCLFdBQVcsQ0FBSSxFQUFPO0lBQ3BDLE9BQU8sRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3hDLENBQUM7QUFGRCxrQ0FFQztBQUVELFNBQWdCLG1CQUFtQixDQUFDLENBQU07SUFDeEMsSUFBSSxPQUFPLENBQUMsS0FBSyxTQUFTLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtRQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQUU7SUFDdkQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7S0FBRTtJQUM1RCxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRTtRQUN6QixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM1QyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUyxFQUFFO2dCQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQUU7U0FDN0M7UUFDRCxPQUFPLENBQUMsQ0FBQztLQUNWO0lBQ0QsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBWEQsa0RBV0M7QUFFRCxTQUFnQixPQUFPLENBQU8sRUFBTyxFQUFFLENBQWdCO0lBQ3JELE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFLLENBQUM7SUFDM0IsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDbEIsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ25CO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBTkQsMEJBTUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFR1cm4gYSAobXVsdGkta2V5KSBleHRyYWN0aW9uIGZ1bmN0aW9uIGludG8gYSBjb21wYXJhdG9yIGZvciB1c2UgaW4gQXJyYXkuc29ydCgpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlQ29tcGFyYXRvcjxULCBVPihrZXlGbjogKHg6IFQpID0+IFVbXSkge1xuICByZXR1cm4gKGE6IFQsIGI6IFQpID0+IHtcbiAgICBjb25zdCBrZXlBID0ga2V5Rm4oYSk7XG4gICAgY29uc3Qga2V5QiA9IGtleUZuKGIpO1xuICAgIGNvbnN0IGxlbiA9IE1hdGgubWluKGtleUEubGVuZ3RoLCBrZXlCLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjb25zdCBjID0gY29tcGFyZShrZXlBW2ldLCBrZXlCW2ldKTtcbiAgICAgIGlmIChjICE9PSAwKSB7IHJldHVybiBjOyB9XG4gICAgfVxuXG4gICAgLy8gQXJyYXlzIGFyZSB0aGUgc2FtZSB1cCB0byB0aGUgbWluIGxlbmd0aCAtLSBzaG9ydGVyIGFycmF5IHNvcnRzIGZpcnN0XG4gICAgcmV0dXJuIGtleUEubGVuZ3RoIC0ga2V5Qi5sZW5ndGg7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmU8VD4oYTogVCwgYjogVCkge1xuICBpZiAoYSA8IGIpIHsgcmV0dXJuIC0xOyB9XG4gIGlmIChiIDwgYSkgeyByZXR1cm4gMTsgfVxuICByZXR1cm4gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRyb3BJZkVtcHR5PFQ+KHhzOiBUW10pOiBUW10gfCB1bmRlZmluZWQge1xuICByZXR1cm4geHMubGVuZ3RoID4gMCA/IHhzIDogdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVlcFJlbW92ZVVuZGVmaW5lZCh4OiBhbnkpOiBhbnkge1xuICBpZiAodHlwZW9mIHggPT09IHVuZGVmaW5lZCB8fCB4ID09PSBudWxsKSB7IHJldHVybiB4OyB9XG4gIGlmIChBcnJheS5pc0FycmF5KHgpKSB7IHJldHVybiB4Lm1hcChkZWVwUmVtb3ZlVW5kZWZpbmVkKTsgfVxuICBpZiAodHlwZW9mIHggPT09ICdvYmplY3QnKSB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoeCkpIHtcbiAgICAgIHhba2V5XSA9IGRlZXBSZW1vdmVVbmRlZmluZWQodmFsdWUpO1xuICAgICAgaWYgKHhba2V5XSA9PT0gdW5kZWZpbmVkKSB7IGRlbGV0ZSB4W2tleV07IH1cbiAgICB9XG4gICAgcmV0dXJuIHg7XG4gIH1cbiAgcmV0dXJuIHg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmbGF0TWFwPFQsIFU+KHhzOiBUW10sIGY6ICh4OiBUKSA9PiBVW10pOiBVW10ge1xuICBjb25zdCByZXQgPSBuZXcgQXJyYXk8VT4oKTtcbiAgZm9yIChjb25zdCB4IG9mIHhzKSB7XG4gICAgcmV0LnB1c2goLi4uZih4KSk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxTQUFnQixjQUFjLENBQU8sS0FBb0I7SUFDdkQsT0FBTyxDQUFDLENBQUksRUFBRSxDQUFJLEVBQUUsRUFBRTtRQUNwQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFL0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQUMsT0FBTyxDQUFDLENBQUM7WUFBQyxDQUFDO1FBQzVCLENBQUM7UUFFRCx3RUFBd0U7UUFDeEUsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDbkMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQWRELHdDQWNDO0FBRUQsU0FBUyxPQUFPLENBQUksQ0FBSSxFQUFFLENBQUk7SUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUN4QixPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFFRCxTQUFnQixXQUFXLENBQUksRUFBTztJQUNwQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUN4QyxDQUFDO0FBRkQsa0NBRUM7QUFFRCxTQUFnQixtQkFBbUIsQ0FBQyxDQUFNO0lBQ3hDLElBQUksT0FBTyxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUN2RCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUM1RCxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzFCLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDN0MsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBWEQsa0RBV0M7QUFFRCxTQUFnQixPQUFPLENBQU8sRUFBTyxFQUFFLENBQWdCO0lBQ3JELE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFLLENBQUM7SUFDM0IsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNuQixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQU5ELDBCQU1DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUdXJuIGEgKG11bHRpLWtleSkgZXh0cmFjdGlvbiBmdW5jdGlvbiBpbnRvIGEgY29tcGFyYXRvciBmb3IgdXNlIGluIEFycmF5LnNvcnQoKVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZUNvbXBhcmF0b3I8VCwgVT4oa2V5Rm46ICh4OiBUKSA9PiBVW10pIHtcbiAgcmV0dXJuIChhOiBULCBiOiBUKSA9PiB7XG4gICAgY29uc3Qga2V5QSA9IGtleUZuKGEpO1xuICAgIGNvbnN0IGtleUIgPSBrZXlGbihiKTtcbiAgICBjb25zdCBsZW4gPSBNYXRoLm1pbihrZXlBLmxlbmd0aCwga2V5Qi5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgY29uc3QgYyA9IGNvbXBhcmUoa2V5QVtpXSwga2V5QltpXSk7XG4gICAgICBpZiAoYyAhPT0gMCkgeyByZXR1cm4gYzsgfVxuICAgIH1cblxuICAgIC8vIEFycmF5cyBhcmUgdGhlIHNhbWUgdXAgdG8gdGhlIG1pbiBsZW5ndGggLS0gc2hvcnRlciBhcnJheSBzb3J0cyBmaXJzdFxuICAgIHJldHVybiBrZXlBLmxlbmd0aCAtIGtleUIubGVuZ3RoO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjb21wYXJlPFQ+KGE6IFQsIGI6IFQpIHtcbiAgaWYgKGEgPCBiKSB7IHJldHVybiAtMTsgfVxuICBpZiAoYiA8IGEpIHsgcmV0dXJuIDE7IH1cbiAgcmV0dXJuIDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkcm9wSWZFbXB0eTxUPih4czogVFtdKTogVFtdIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHhzLmxlbmd0aCA+IDAgPyB4cyA6IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZXBSZW1vdmVVbmRlZmluZWQoeDogYW55KTogYW55IHtcbiAgaWYgKHR5cGVvZiB4ID09PSB1bmRlZmluZWQgfHwgeCA9PT0gbnVsbCkgeyByZXR1cm4geDsgfVxuICBpZiAoQXJyYXkuaXNBcnJheSh4KSkgeyByZXR1cm4geC5tYXAoZGVlcFJlbW92ZVVuZGVmaW5lZCk7IH1cbiAgaWYgKHR5cGVvZiB4ID09PSAnb2JqZWN0Jykge1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHgpKSB7XG4gICAgICB4W2tleV0gPSBkZWVwUmVtb3ZlVW5kZWZpbmVkKHZhbHVlKTtcbiAgICAgIGlmICh4W2tleV0gPT09IHVuZGVmaW5lZCkgeyBkZWxldGUgeFtrZXldOyB9XG4gICAgfVxuICAgIHJldHVybiB4O1xuICB9XG4gIHJldHVybiB4O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmxhdE1hcDxULCBVPih4czogVFtdLCBmOiAoeDogVCkgPT4gVVtdKTogVVtdIHtcbiAgY29uc3QgcmV0ID0gbmV3IEFycmF5PFU+KCk7XG4gIGZvciAoY29uc3QgeCBvZiB4cykge1xuICAgIHJldC5wdXNoKC4uLmYoeCkpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0= /***/ }), @@ -11930,6 +12430,24 @@ var ResourceScrutinyType; * A set of egress rules */ ResourceScrutinyType["EgressRuleResource"] = "EgressRuleResource"; + /** + * AWS::SSO::Assignment + * + * IAM Identity Center (formerly known as SSO) + */ + ResourceScrutinyType["SsoAssignmentResource"] = "SsoAssignmentResource"; + /** + * AWS::SSO::InstanceAccessControlAttributeConfiguration + * + * IAM Identity Center (formerly known as SSO) + */ + ResourceScrutinyType["SsoInstanceACAConfigResource"] = "SsoInstanceACAConfigResource"; + /** + * AWS::SSO::PermissionSet + * + * IAM Identity Center (formerly known as SSO) + */ + ResourceScrutinyType["SsoPermissionSet"] = "SsoPermissionSet"; })(ResourceScrutinyType = exports.ResourceScrutinyType || (exports.ResourceScrutinyType = {})); /** * Mark a property as a property that needs additional scrutiny when it changes @@ -12107,7 +12625,7 @@ class RichPropertyType { } } exports.RichPropertyType = RichPropertyType; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvcmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsNkNBQW9EO0FBdUtwRCxNQUFhLGNBQWM7SUFDekIsWUFBNkIsS0FBK0M7UUFBL0MsVUFBSyxHQUFMLEtBQUssQ0FBMEM7UUFDMUUsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFTSxLQUFLOztRQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsbUNBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFVBQVUsQ0FBQyxJQUFrQjtRQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVDLDZHQUE2RztRQUM3Ryx3R0FBd0c7UUFDeEcsOEdBQThHO1FBQzlHLHFDQUFxQztRQUNyQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNoRCwyQ0FBMkM7WUFDM0MsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELCtGQUErRjtRQUMvRixrR0FBa0c7UUFDbEcsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxFQUFFO1lBQzlFLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJ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akYsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFBLDJCQUFpQixFQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvRDtJQUNILENBQUM7Q0FDRjtBQXRKRCw0Q0FzSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlZmVyZW5jZSwgUmVsYXRpb25zaGlwIH0gZnJvbSAnQGNka2xhYnMvdHNrYic7XG5pbXBvcnQgeyBTcGVjRGF0YWJhc2UgfSBmcm9tICcuL2RhdGFiYXNlJztcbmltcG9ydCB7IHNvcnRLZXlDb21wYXJhdG9yIH0gZnJvbSAnLi4vdXRpbC9zb3J0aW5nJztcblxuZXhwb3J0IGludGVyZmFjZSBQYXJ0aXRpb24gZXh0ZW5kcyBFbnRpdHkge1xuICByZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSGFzUmVnaW9uID0gUmVsYXRpb25zaGlwPFBhcnRpdGlvbiwgUmVnaW9uLCB7IGlzUHJpbWFyeT86IGJvb2xlYW4gfT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZSBleHRlbmRzIEVudGl0eSB7XG4gIC8qKlxuICAgKiBUaGUgZnVsbCBuYW1lIG9mIHRoZSBzZXJ2aWNlIGluY2x1ZGluZyB0aGUgZ3JvdXAgcHJlZml4LCBsb3dlcmNhc2VkIGFuZCBoeXBoZW5hdGVkLlxuICAgKlxuICAgKiBFLmcuIGBBV1M6OkR5bmFtb0RCYCAtPiBgYXdzLWR5bmFtb2RiYFxuICAgKlxuICAgKiBAZXhhbXBsZSBhd3MtZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIE9ubHkgdGhlIHNlcnZpY2UgcGFydCBvZiB0aGUgbmFtZSwgbG93ZXJjYXNlZC5cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYGR5bmFtb2RiYFxuICAgKlxuICAgKiBAZXhhbXBsZSBkeW5hbW9kYlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvcnROYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc2hvcnRuYW1lIG9mIHRoZSBzZXJ2aWNlIGluIGNhcGl0YWxpemVkIGZvcm1cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYER5bmFtb0RCYFxuICAgKlxuICAgKiBAZXhhbXBsZSBkeW5hbW9kYlxuICAgKi9cbiAgcmVhZG9ubHkgY2FwaXRhbGl6ZWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjb21wbGV0ZSBjbG91ZGZvcm1hdGlvbiBzdHlsZSBuYW1lc3BhY2Ugb2YgdGhlIHNlcnZpY2VcbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmBcbiAgICpcbiAgICogQGV4YW1wbGUgZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uTmFtZXNwYWNlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudGF0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbWFya2Rvd246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZSBleHRlbmRzIEVudGl0eSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25UeXBlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJZiBzZXQsIHRoaXMgQ2xvdWRGb3JtYXRpb24gVHJhbnNmb3JtIGlzIHJlcXVpcmVkIGJ5IHRoZSByZXNvdXJjZVxuICAgKi9cbiAgY2xvdWRGb3JtYXRpb25UcmFuc2Zvcm0/OiBzdHJpbmc7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IHByb3BlcnRpZXM6IFJlc291cmNlUHJvcGVydGllcztcbiAgcmVhZG9ubHkgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgQXR0cmlidXRlPjtcbiAgcmVhZG9ubHkgdmFsaWRhdGlvbnM/OiB1bmtub3duO1xuICBpZGVudGlmaWVyPzogUmVzb3VyY2VJZGVudGlmaWVyO1xuICBpc1N0YXRlZnVsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5mb3JtYXRpb24gYWJvdXQgdGhlIHRhZ2dhYmlsaXR5IG9mIHRoaXMgcmVzb3VyY2VcbiAgICpcbiAgICogVW5kZWZpbmVkIGlmIHRoZSByZXNvdXJjZSBpcyBub3QgdGFnZ2FibGUuXG4gICAqL1xuICB0YWdJbmZvcm1hdGlvbj86IFRhZ0luZm9ybWF0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGNoYW5nZXMgdG8gdGhpcyByZXNvdXJjZSBuZWVkIHRvIGJlIHNjcnV0aW5pemVkXG4gICAqXG4gICAqIEBkZWZhdWx0IFJlc291cmNlU2NydXRpbnlUeXBlLk5PTkVcbiAgICovXG4gIHNjcnV0aW5pemFibGU/OiBSZXNvdXJjZVNjcnV0aW55VHlwZTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBwYXRocyB0byBwcm9wZXJ0aWVzIHRoYXQgYWxzbyBjYXVzZSByZXBsYWNlbWVudC5cbiAgICpcbiAgICogVGhpcyBpcyB0byBpbmRpY2F0ZSB0aGF0IGNlcnRhaW4gcHJvcGVydHkgcGF0aHMgaW50byB0aGlzIHJlc291cmNlXG4gICAqIHdpbGwgY2F1c2UgcmVwbGFjZW1lbnQ7IG9ubHkgcmVwbGFjZW1lbnRzIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkXG4gICAqIGJ5IHRhZ2dpbmcgdGhlIHByb3BlcnR5IGluIGEgdHlwZSBkZWZpbml0aW9uIHdpbGwgYmUgaW5jbHVkZWQgaGVyZVxuICAgKiAoZm9yIGV4YW1wbGUsIGJlY2F1c2UgdGhlIHRhZ2dlZCBwcm9wZXJ0eSB3b3VsZCBiZSBpbiBhIHByZWRlZmluZWRcbiAgICogdHlwZSBsaWtlIGB0YWdgKS5cbiAgICpcbiAgICogQWxsIHByb3BlcnRpZXMgaW4gdGhpcyBsaXN0IHNob3VsZCBiZSB0cmVhdGVkIGFzIGBjYXVzZXNSZXBsYWNlbWVudDogJ3llcydgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtXG4gICAqL1xuICBhZGRpdGlvbmFsUmVwbGFjZW1lbnRQcm9wZXJ0aWVzPzogc3RyaW5nW11bXTtcbn1cblxuZXhwb3J0IHR5cGUgUmVzb3VyY2VQcm9wZXJ0aWVzID0gUmVjb3JkPHN0cmluZywgUHJvcGVydHk+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVEZWZpbml0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xuICByZWFkb25seSBwcm9wZXJ0aWVzOiBSZXNvdXJjZVByb3BlcnRpZXM7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHJlbmRlciB0aGlzIHR5cGUgZXZlbiBpZiBpdCBpcyB1bnVzZWQuXG4gICAqL1xuICBtdXN0UmVuZGVyRm9yQndDb21wYXQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5IHtcbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIG9mIHRoZSBwcm9wZXJ0eVxuICAgKi9cbiAgZG9jdW1lbnRhdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogSXMgdGhpcyBwcm9wZXJ0eSByZXF1aXJlZFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCB0eXBlIG9mIHRoaXMgcHJvcGVydHlcbiAgICovXG4gIHR5cGU6IFByb3BlcnR5VHlwZTtcblxuICAvKipcbiAgICogQW4gb3JkZXJlZCBsaXN0IG9mIHByZXZpb3VzIHR5cGVzIG9mIHRoaXMgcHJvcGVydHkgaW4gYXNjZW5kaW5nIG9yZGVyXG4gICAqXG4gICAqIERvZXMgbm90IGluY2x1ZGUgdGhlIGN1cnJlbnQgdHlwZSwgdXNlIGB0eXBlYCBmb3IgdGhpcy5cbiAgICovXG4gIHByZXZpb3VzVHlwZXM/OiBQcm9wZXJ0eVR5cGVbXTtcblxuICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0eVxuICAgKlxuICAgKiBUaGlzIHZhbHVlIGlzIG5vdCBkaXJlY3RseSBmdW5jdGlvbmFsOyBpdCBkZXNjcmliZXMgaG93IHRoZSB1bmRlcmx5aW5nIHJlc291cmNlXG4gICAqIHdpbGwgYmVoYXZlIGlmIHRoZSB2YWx1ZSBpcyBub3Qgc3BlY2lmaWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgdW5rbm93blxuICAgKi9cbiAgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcHJvcGVydHkgaXMgZGVwcmVjYXRlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vdCBkZXByZWNhdGVkXG4gICAqL1xuICBkZXByZWNhdGVkPzogRGVwcmVjYXRpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgY2hhbmdlcyB0byB0aGlzIHByb3BlcnR5IG5lZWRzIHRvIGJlIHNjcnV0aW5pemVkIHNwZWNpYWxseVxuICAgKlxuICAgKiBAZGVmYXVsdCBQcm9wZXJ0eVNjcnV0aW55VHlwZS5OT05FXG4gICAqL1xuICBzY3J1dGluaXphYmxlPzogUHJvcGVydHlTY3J1dGlueVR5cGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNvbnRhaW5pbmcgcmVzb3VyY2Ugd2lsbCBiZSByZXBsYWNlZCBpZiB0aGlzIHByb3BlcnR5IGlzIGNoYW5nZWRcbiAgICpcbiAgICogQGRlZmF1bHQgJ25vJ1xuICAgKi9cbiAgY2F1c2VzUmVwbGFjZW1lbnQ/OiAneWVzJyB8ICdubycgfCAnbWF5YmUnO1xufVxuXG5leHBvcnQgY2xhc3MgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpZWxkOiBQaWNrPFByb3BlcnR5LCAndHlwZScgfCAncHJldmlvdXNUeXBlcyc+KSB7XG4gICAgaWYgKGZpZWxkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmllbGQgaXMgdW5kZWZpbmVkJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHR5cGVzKCk6IFByb3BlcnR5VHlwZVtdIHtcbiAgICByZXR1cm4gWy4uLih0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMgPz8gW10pLCB0aGlzLmZpZWxkLnR5cGVdO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgdHlwZSBvZiB0aGlzIHByb3BlcnR5IHdpdGggYSBuZXcgdHlwZVxuICAgKlxuICAgKiBPbmx5IGlmIGl0J3Mgbm90IGluIHRoZSBzZXQgb2YgdHlwZXMgYWxyZWFkeS5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVUeXBlKHR5cGU6IFByb3BlcnR5VHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJpY2hUeXBlID0gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodHlwZSk7XG5cbiAgICAvLyBPbmx5IGFkZCB0aGlzIHR5cGUgaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIGl0LiBXZSBhcmUgb25seSBkb2luZyBjb21wYXJpc29ucyB3aGVyZSAnaW50ZWdlcicgYW5kICdudW1iZXInXG4gICAgLy8gYXJlIHRyZWF0ZWQgdGhlIHNhbWUsIGZvciBhbGwgb3RoZXIgdHlwZXMgd2UgbmVlZCBzdHJpY3QgZXF1YWxpdHkuIFdlIHVzZWQgdG8gdXNlICdhc3NpZ25hYmxlVG8nIGFzIGFcbiAgICAvLyBjb25kaXRpb24sIGJ1dCB0aGVzZSB0eXBlcyB3aWxsIGJlIHJlbmRlcmVkIGluIGJvdGggY28tIGFuZCBjb250cmF2YXJpYW50IHBvc2l0aW9ucywgYW5kIHNvIHdlIHJlYWxseSBjYW4ndFxuICAgIC8vIGRvIG11Y2ggYmV0dGVyIHRoYW4gZnVsbCBlcXVhbGl0eS5cbiAgICBpZiAodGhpcy50eXBlcygpLnNvbWUoKHQpID0+IHJpY2hUeXBlLmVxdWFscyh0KSkpIHtcbiAgICAgIC8vIE5vdGhpbmcgdG8gZG8sIHR5cGUgaXMgYWxyZWFkeSBpbiB0aGVyZS5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTcGVjaWFsIGNhc2U6IGlmIHRoZSBuZXcgdHlwZSBpcyBgc3RyaW5nYCBhbmQgdGhlIG9sZCB0eXBlIGlzIGBkYXRlLXRpbWVgLCB3ZSBhc3N1bWUgdGhpcyBpc1xuICAgIC8vIHRoZSBzYW1lIHR5cGUgYnV0IHdlIGRyb3BwZWQgc29tZSBmb3JtYXR0aW5nIGluZm9ybWF0aW9uLiBObyBuZWVkIHRvIG1ha2UgdGhpcyBhIHNlcGFyYXRlIHR5cGUuXG4gICAgaWYgKHR5cGUudHlwZSA9PT0gJ3N0cmluZycgJiYgdGhpcy50eXBlcygpLnNvbWUoKHQpID0+IHQudHlwZSA9PT0gJ2RhdGUtdGltZScpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMpIHtcbiAgICAgIHRoaXMuZmllbGQucHJldmlvdXNUeXBlcyA9IFtdO1xuICAgIH1cbiAgICB0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMucHVzaCh0aGlzLmZpZWxkLnR5cGUpO1xuICAgIHRoaXMuZmllbGQudHlwZSA9IHR5cGU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJpY2hQcm9wZXJ0eSBleHRlbmRzIFJpY2hUeXBlZEZpZWxkIHtcbiAgY29uc3RydWN0b3IocHJvcGVydHk6IFByb3BlcnR5KSB7XG4gICAgc3VwZXIocHJvcGVydHkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSaWNoQXR0cmlidXRlIGV4dGVuZHMgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3RvcihhdHRyOiBBdHRyaWJ1dGUpIHtcbiAgICBzdXBlcihhdHRyKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZSB7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHR5cGU6IFByb3BlcnR5VHlwZTtcbiAgLyoqXG4gICAqIEFuIG9yZGVyZWQgbGlzdCBvZiBwcmV2aW91cyB0eXBlcyBvZiB0aGlzIHByb3BlcnR5IGluIGFzY2VuZGluZyBvcmRlclxuICAgKlxuICAgKiBEb2VzIG5vdCBpbmNsdWRlIHRoZSBjdXJyZW50IHR5cGUsIHVzZSBgdHlwZWAgZm9yIHRoaXMuXG4gICAqL1xuICBwcmV2aW91c1R5cGVzPzogUHJvcGVydHlUeXBlW107XG59XG5cbmV4cG9ydCBlbnVtIERlcHJlY2F0aW9uIHtcbiAgLyoqXG4gICAqIE5vdCBkZXByZWNhdGVkXG4gICAqL1xuICBOT05FID0gJ05PTkUnLFxuXG4gIC8qKlxuICAgKiBXYXJuIGFib3V0IHVzZVxuICAgKi9cbiAgV0FSTiA9ICdXQVJOJyxcblxuICAvKipcbiAgICogRG8gbm90IGVtaXQgdGhlIHZhbHVlIGF0IGFsbFxuICAgKlxuICAgKiAoSGFuZGxlIHByb3BlcnRpZXMgdGhhdCB3ZXJlIGluY29ycmVjdGx5IGFkZGVkIHRvIHRoZSBzcGVjKVxuICAgKi9cbiAgSUdOT1JFID0gJ0lHTk9SRScsXG59XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5VHlwZSA9XG4gIHwgUHJpbWl0aXZlVHlwZVxuICB8IERlZmluaXRpb25SZWZlcmVuY2VcbiAgfCBCdWlsdGluVGFnVHlwZVxuICB8IEFycmF5VHlwZTxQcm9wZXJ0eVR5cGU+XG4gIHwgTWFwVHlwZTxQcm9wZXJ0eVR5cGU+XG4gIHwgVHlwZVVuaW9uPFByb3BlcnR5VHlwZT47XG5cbmV4cG9ydCB0eXBlIFByaW1pdGl2ZVR5cGUgPVxuICB8IFN0cmluZ1R5cGVcbiAgfCBOdW1iZXJUeXBlXG4gIHwgSW50ZWdlclR5cGVcbiAgfCBCb29sZWFuVHlwZVxuICB8IEpzb25UeXBlXG4gIHwgRGF0ZVRpbWVUeXBlXG4gIHwgTnVsbFR5cGVcbiAgfCBCdWlsdGluVGFnVHlwZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29sbGVjdGlvblR5cGUoeDogUHJvcGVydHlUeXBlKTogeCBpcyBBcnJheVR5cGU8YW55PiB8IE1hcFR5cGU8YW55PiB7XG4gIHJldHVybiB4LnR5cGUgPT09ICdhcnJheScgfHwgeC50eXBlID09PSAnbWFwJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWdJbmZvcm1hdGlvbiB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBwcm9wZXJ0eSB0aGF0IGhvbGRzIHRoZSB0YWdzXG4gICAqL1xuICByZWFkb25seSB0YWdQcm9wZXJ0eU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVXNlZCB0byBpbnN0cnVjdCBjZGsuVGFnTWFuYWdlciBob3cgdG8gaGFuZGxlIHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHZhcmlhbnQ6IFRhZ1ZhcmlhbnQ7XG59XG5cbmV4cG9ydCB0eXBlIFRhZ1ZhcmlhbnQgPSAnc3RhbmRhcmQnIHwgJ2FzZycgfCAnbWFwJztcblxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3N0cmluZyc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEJ1aWx0aW5UYWdUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3RhZyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVtYmVyVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdudW1iZXInO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVnZXJUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2ludGVnZXInO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5UeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2Jvb2xlYW4nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25UeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2pzb24nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE51bGxUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ251bGwnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVUaW1lVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdkYXRlLXRpbWUnO1xufVxuXG4vKipcbiAqIFRoZSBcImxlZ2FjeVwiIHRhZyB0eXBlICh1c2VkIGluIHRoZSBvbGQgcmVzb3VyY2Ugc3BlYylcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsdGluVGFnVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICd0YWcnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlZmluaXRpb25SZWZlcmVuY2Uge1xuICByZWFkb25seSB0eXBlOiAncmVmJztcbiAgcmVhZG9ubHkgcmVmZXJlbmNlOiBSZWZlcmVuY2U8VHlwZURlZmluaXRpb24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFycmF5VHlwZTxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdhcnJheSc7XG4gIHJlYWRvbmx5IGVsZW1lbnQ6IEU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwVHlwZTxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdtYXAnO1xuICByZWFkb25seSBlbGVtZW50OiBFO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVVbmlvbjxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICd1bmlvbic7XG4gIHJlYWRvbmx5IHR5cGVzOiBFW107XG59XG5cbmV4cG9ydCB0eXBlIEhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFNlcnZpY2UsIFJlc291cmNlPjtcbmV4cG9ydCB0eXBlIFJlZ2lvbkhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFJlZ2lvbiwgUmVzb3VyY2U+O1xuZXhwb3J0IHR5cGUgUmVnaW9uSGFzU2VydmljZSA9IFJlbGF0aW9uc2hpcDxSZWdpb24sIFNlcnZpY2U+O1xuZXhwb3J0IHR5cGUgUmVzb3VyY2VEb2MgPSBSZWxhdGlvbnNoaXA8UmVzb3VyY2UsIERvY3VtZW50YXRpb24+O1xuXG5leHBvcnQgdHlwZSBTZXJ2aWNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBTZXJ2aWNlPjtcbmV4cG9ydCB0eXBlIFJlc291cmNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBSZXNvdXJjZT47XG5cbmV4cG9ydCB0eXBlIFVzZXNUeXBlID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBUeXBlRGVmaW5pdGlvbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VJZGVudGlmaWVyIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgYXJuVGVtcGxhdGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogTWFyayBhIHJlc291cmNlIGFzIGEgcmVzb3VyY2UgdGhhdCBuZWVkcyBhZGRpdGlvbmFsIHNjcnV0aXkgd2hlbiBhZGRlZCwgcmVtb3ZlZCBvciBjaGFuZ2VkXG4gKlxuICogVXNlZCB0byBtYXJrIHJlc291cmNlcyB0aGF0IHJlcHJlc2VudCBzZWN1cml0eSBwb2xpY2llcy5cbiAqL1xuZXhwb3J0IGVudW0gUmVzb3VyY2VTY3J1dGlueVR5cGUge1xuICAvKipcbiAgICogTm8gYWRkaXRpb25hbCBzY3J1dGlueVxuICAgKi9cbiAgTm9uZSA9ICdOb25lJyxcblxuICAvKipcbiAgICogQW4gZXh0ZXJuYWxseSBhdHRhY2hlZCBwb2xpY3kgZG9jdW1lbnQgdG8gYSByZXNvdXJjZVxuICAgKlxuICAgKiAoQ29tbW9uIGZvciBTUVMsIFNOUywgUzMsIC4uLilcbiAgICovXG4gIFJlc291cmNlUG9saWN5UmVzb3VyY2UgPSAnUmVzb3VyY2VQb2xpY3lSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gSUFNIHBvbGljeSBvbiBhbiBpZGVudGl0eSByZXNvdXJjZVxuICAgKlxuICAgKiAoQmFzaWNhbGx5IHNheWluZzogdGhpcyBpcyBBV1M6OklBTTo6UG9saWN5KVxuICAgKi9cbiAgSWRlbnRpdHlQb2xpY3lSZXNvdXJjZSA9ICdJZGVudGl0eVBvbGljeVJlc291cmNlJyxcblxuICAvKipcbiAgICogVGhpcyBpcyBhIExhbWJkYSBQZXJtaXNzaW9uIHBvbGljeVxuICAgKi9cbiAgTGFtYmRhUGVybWlzc2lvbiA9ICdMYW1iZGFQZXJtaXNzaW9uJyxcblxuICAvKipcbiAgICogQW4gaW5ncmVzcyBydWxlIG9iamVjdFxuICAgKi9cbiAgSW5ncmVzc1J1bGVSZXNvdXJjZSA9ICdJbmdyZXNzUnVsZVJlc291cmNlJyxcblxuICAvKipcbiAgICogQSBzZXQgb2YgZWdyZXNzIHJ1bGVzXG4gICAqL1xuICBFZ3Jlc3NSdWxlUmVzb3VyY2UgPSAnRWdyZXNzUnVsZVJlc291cmNlJyxcbn1cblxuLyoqXG4gKiBNYXJrIGEgcHJvcGVydHkgYXMgYSBwcm9wZXJ0eSB0aGF0IG5lZWRzIGFkZGl0aW9uYWwgc2NydXRpbnkgd2hlbiBpdCBjaGFuZ2VzXG4gKlxuICogVXNlZCB0byBtYXJrIHNlbnNpdGl2ZSBwcm9wZXJ0aWVzIHRoYXQgaGF2ZSBzZWN1cml0eS1yZWxhdGVkIGltcGxpY2F0aW9ucy5cbiAqL1xuZXhwb3J0IGVudW0gUHJvcGVydHlTY3J1dGlueVR5cGUge1xuICAvKipcbiAgICogTm8gYWRkaXRpb25hbCBzY3J1dGlueVxuICAgKi9cbiAgTm9uZSA9ICdOb25lJyxcblxuICAvKipcbiAgICogVGhpcyBpcyBhbiBJQU0gcG9saWN5IGRpcmVjdGx5IG9uIGEgcmVzb3VyY2VcbiAgICovXG4gIElubGluZVJlc291cmNlUG9saWN5ID0gJ0lubGluZVJlc291cmNlUG9saWN5JyxcblxuICAvKipcbiAgICogRWl0aGVyIGFuIEFzc3VtZVJvbGVQb2xpY3lEb2N1bWVudCBvciBhIGRpY3Rpb25hcnkgb2YgcG9saWN5IGRvY3VtZW50c1xuICAgKi9cbiAgSW5saW5lSWRlbnRpdHlQb2xpY2llcyA9ICdJbmxpbmVJZGVudGl0eVBvbGljaWVzJyxcblxuICAvKipcbiAgICogQSBsaXN0IG9mIG1hbmFnZWQgcG9saWNpZXMgKG9uIGFuIGlkZW50aXR5IHJlc291cmNlKVxuICAgKi9cbiAgTWFuYWdlZFBvbGljaWVzID0gJ01hbmFnZWRQb2xpY2llcycsXG5cbiAgLyoqXG4gICAqIEEgc2V0IG9mIGluZ3Jlc3MgcnVsZXMgKG9uIGEgc2VjdXJpdHkgZ3JvdXApXG4gICAqL1xuICBJbmdyZXNzUnVsZXMgPSAnSW5ncmVzc1J1bGVzJyxcblxuICAvKipcbiAgICogQSBzZXQgb2YgZWdyZXNzIHJ1bGVzIChvbiBhIHNlY3VyaXR5IGdyb3VwKVxuICAgKi9cbiAgRWdyZXNzUnVsZXMgPSAnRWdyZXNzUnVsZXMnLFxufVxuXG5leHBvcnQgY2xhc3MgUmljaFByb3BlcnR5VHlwZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdHlwZTogUHJvcGVydHlUeXBlKSB7fVxuXG4gIHB1YmxpYyBlcXVhbHMocmhzOiBQcm9wZXJ0eVR5cGUpOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnZGF0ZS10aW1lJzpcbiAgICAgIGNhc2UgJ2pzb24nOlxuICAgICAgY2FzZSAnbnVsbCc6XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3RhZyc6XG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gdGhpcy50eXBlLnR5cGU7XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICBjYXNlICdtYXAnOlxuICAgICAgICByZXR1cm4gcmhzLnR5cGUgPT09IHRoaXMudHlwZS50eXBlICYmIG5ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5lcXVhbHMocmhzLmVsZW1lbnQpO1xuICAgICAgY2FzZSAncmVmJzpcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSAncmVmJyAmJiB0aGlzLnR5cGUucmVmZXJlbmNlLiRyZWYgPT09IHJocy5yZWZlcmVuY2UuJHJlZjtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgY29uc3QgbGhzS2V5ID0gdGhpcy5zb3J0S2V5KCk7XG4gICAgICAgIGNvbnN0IHJoc0tleSA9IG5ldyBSaWNoUHJvcGVydHlUeXBlKHJocykuc29ydEtleSgpO1xuICAgICAgICByZXR1cm4gbGhzS2V5Lmxlbmd0aCA9PT0gcmhzS2V5Lmxlbmd0aCAmJiBsaHNLZXkuZXZlcnkoKGwsIGkpID0+IGwgPT09IHJoc0tleVtpXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGN1cnJlbnQgdHlwZSBpcyBKYXZhU2NyaXB0LWVxdWFsIHRvIHRoZSBSSFMgdHlwZVxuICAgKlxuICAgKiBTYW1lIGFzIG5vcm1hbCBlcXVhbGl0eSwgYnV0IGNvbnNpZGVyIGBpbnRlZ2VyYCBhbmQgYG51bWJlcmAgdGhlIHNhbWUgdHlwZXMuXG4gICAqL1xuICBwdWJsaWMgamF2YXNjcmlwdEVxdWFscyhyaHM6IFByb3BlcnR5VHlwZSk6IGJvb2xlYW4ge1xuICAgIHN3aXRjaCAodGhpcy50eXBlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgICAgLy8gV2lkZW5pbmdcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSAnaW50ZWdlcicgfHwgcmhzLnR5cGUgPT09ICdudW1iZXInO1xuXG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICBjYXNlICdtYXAnOlxuICAgICAgICByZXR1cm4gcmhzLnR5cGUgPT09IHRoaXMudHlwZS50eXBlICYmIG5ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5qYXZhc2NyaXB0RXF1YWxzKHJocy5lbGVtZW50KTtcblxuICAgICAgY2FzZSAndW5pb24nOlxuICAgICAgICBpZiAocmhzLnR5cGUgIT09ICd1bmlvbicpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRXZlcnkgdHlwZSBpbiB0aGlzIHVuaW9uIG5lZWRzIHRvIGJlIGVxdWFsIG9uZSB0eXBlIGluIFJIU1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlLnR5cGVzLmV2ZXJ5KCh0MSkgPT4gcmhzLnR5cGVzLnNvbWUoKHQyKSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0MSkuamF2YXNjcmlwdEVxdWFscyh0MikpKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gRm9yIGFueXRoaW5nIGVsc2UsIG5lZWQgc3RyaWN0IGVxdWFsaXR5XG4gICAgICAgIHJldHVybiB0aGlzLmVxdWFscyhyaHMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjdXJyZW50IHR5cGUgaXMgYXNzaWduYWJsZSB0byB0aGUgUkhTIHR5cGUuXG4gICAqXG4gICAqIFRoaXMgaXMgbWVhbnMgZXZlcnkgdHlwZSBtZW1iZXIgb2YgdGhlIExIUyBtdXN0IGJlIHByZXNlbnQgaW4gdGhlIFJIUyB0eXBlXG4gICAqL1xuICBwdWJsaWMgYXNzaWduYWJsZVRvKHJoczogUHJvcGVydHlUeXBlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZXh0cmFjdE1lbWJlcnMgPSAodHlwZTogUHJvcGVydHlUeXBlKTogUHJvcGVydHlUeXBlW10gPT4gKHR5cGUudHlwZSA9PSAndW5pb24nID8gdHlwZS50eXBlcyA6IFt0eXBlXSk7XG4gICAgY29uc3QgYXNSaWNoVHlwZSA9ICh0eXBlOiBQcm9wZXJ0eVR5cGUpOiBSaWNoUHJvcGVydHlUeXBlID0+IG5ldyBSaWNoUHJvcGVydHlUeXBlKHR5cGUpO1xuXG4gICAgY29uc3QgcmhzTWVtYmVycyA9IGV4dHJhY3RNZW1iZXJzKHJocyk7XG4gICAgZm9yIChjb25zdCBsaHNNZW1iZXIgb2YgZXh0cmFjdE1lbWJlcnModGhpcy50eXBlKS5tYXAoYXNSaWNoVHlwZSkpIHtcbiAgICAgIGlmICghcmhzTWVtYmVycy5zb21lKCh0eXBlKSA9PiBsaHNNZW1iZXIuZXF1YWxzKHR5cGUpKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgdmVyc2lvbiBvZiB0aGlzIHR5cGUsIGJ1dCB3aXRoIGFsbCB0eXBlIHVuaW9ucyBpbiBhIHJlZ3VsYXJpemVkIG9yZGVyXG4gICAqL1xuICBwdWJsaWMgbm9ybWFsaXplKGRiOiBTcGVjRGF0YWJhc2UpOiBSaWNoUHJvcGVydHlUeXBlIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICBjYXNlICdtYXAnOlxuICAgICAgICByZXR1cm4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUoe1xuICAgICAgICAgIHR5cGU6IHRoaXMudHlwZS50eXBlLFxuICAgICAgICAgIGVsZW1lbnQ6IG5ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5ub3JtYWxpemUoZGIpLnR5cGUsXG4gICAgICAgIH0pO1xuICAgICAgY2FzZSAndW5pb24nOlxuICAgICAgICBjb25zdCB0eXBlcyA9IHRoaXMudHlwZS50eXBlc1xuICAgICAgICAgIC5tYXAoKHQpID0+IG5ldyBSaWNoUHJvcGVydHlUeXBlKHQpLm5vcm1hbGl6ZShkYikpXG4gICAgICAgICAgLm1hcCgodCkgPT4gW3QsIHQuc29ydEtleShkYildIGFzIGNvbnN0KTtcbiAgICAgICAgdHlwZXMuc29ydChzb3J0S2V5Q29tcGFyYXRvcigoW18sIHNvcnRLZXldKSA9PiBzb3J0S2V5KSk7XG4gICAgICAgIHJldHVybiBuZXcgUmljaFByb3BlcnR5VHlwZSh7XG4gICAgICAgICAgdHlwZTogJ3VuaW9uJyxcbiAgICAgICAgICB0eXBlczogdHlwZXMubWFwKChbdCwgX10pID0+IHQudHlwZSksXG4gICAgICAgIH0pO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0cmluZ2lmeShkYjogU3BlY0RhdGFiYXNlLCB3aXRoSWQgPSB0cnVlKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnZGF0ZS10aW1lJzpcbiAgICAgIGNhc2UgJ2pzb24nOlxuICAgICAgY2FzZSAnbnVsbCc6XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3RhZyc6XG4gICAgICAgIHJldHVybiB0aGlzLnR5cGUudHlwZTtcbiAgICAgIGNhc2UgJ2FycmF5JzpcbiAgICAgICAgcmV0dXJuIGBBcnJheTwke25ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5zdHJpbmdpZnkoZGIsIHdpdGhJZCl9PmA7XG4gICAgICBjYXNlICdtYXAnOlxuICAgICAgICByZXR1cm4gYE1hcDxzdHJpbmcsICR7bmV3IFJpY2hQcm9wZXJ0eVR5cGUodGhpcy50eXBlLmVsZW1lbnQpLnN0cmluZ2lmeShkYiwgd2l0aElkKX0+YDtcbiAgICAgIGNhc2UgJ3JlZic6XG4gICAgICAgIGNvbnN0IHR5cGUgPSBkYi5nZXQoJ3R5cGVEZWZpbml0aW9uJywgdGhpcy50eXBlLnJlZmVyZW5jZSk7XG4gICAgICAgIHJldHVybiB3aXRoSWQgPyBgJHt0eXBlLm5hbWV9KCR7dGhpcy50eXBlLnJlZmVyZW5jZS4kcmVmfSlgIDogdHlwZS5uYW1lO1xuICAgICAgY2FzZSAndW5pb24nOlxuICAgICAgICByZXR1cm4gdGhpcy50eXBlLnR5cGVzLm1hcCgodCkgPT4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodCkuc3RyaW5naWZ5KGRiLCB3aXRoSWQpKS5qb2luKCcgfCAnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgc29ydGFibGUga2V5IGJhc2VkIG9uIHRoaXMgdHlwZVxuICAgKlxuICAgKiBJZiBhIGRhdGFiYXNlIGlzIGdpdmVuLCB0eXBlIGRlZmluaXRpb25zIHdpbGwgYmUgc29ydGVkIGJhc2VkIG9uIHR5cGUgbmFtZSxcbiAgICogb3RoZXJ3aXNlIG9uIGlkZW50aWZpZXJcbiAgICovXG4gIHB1YmxpYyBzb3J0S2V5KGRiPzogU3BlY0RhdGFiYXNlKTogc3RyaW5nW10ge1xuICAgIHN3aXRjaCAodGhpcy50eXBlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICBjYXNlICdkYXRlLXRpbWUnOlxuICAgICAgY2FzZSAnanNvbic6XG4gICAgICBjYXNlICdudWxsJzpcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgY2FzZSAndGFnJzpcbiAgICAgICAgcmV0dXJuIFsnMCcsIHRoaXMudHlwZS50eXBlXTtcbiAgICAgIGNhc2UgJ2FycmF5JzpcbiAgICAgIGNhc2UgJ21hcCc6XG4gICAgICAgIHJldHVybiBbJzEnLCB0aGlzLnR5cGUudHlwZSwgLi4ubmV3IFJpY2hQcm9wZXJ0eVR5cGUodGhpcy50eXBlLmVsZW1lbnQpLnNvcnRLZXkoZGIpXTtcbiAgICAgIGNhc2UgJ3JlZic6XG4gICAgICAgIHJldHVybiBbJzInLCB0aGlzLnR5cGUudHlwZSwgZGI/LmdldCgndHlwZURlZmluaXRpb24nLCB0aGlzLnR5cGUucmVmZXJlbmNlKT8ubmFtZSA/PyB0aGlzLnR5cGUucmVmZXJlbmNlLiRyZWZdO1xuICAgICAgY2FzZSAndW5pb24nOlxuICAgICAgICBjb25zdCB0eXBlS2V5cyA9IHRoaXMudHlwZS50eXBlcy5tYXAoKHQpID0+IG5ldyBSaWNoUHJvcGVydHlUeXBlKHQpLnNvcnRLZXkoZGIpKTtcbiAgICAgICAgdHlwZUtleXMuc29ydChzb3J0S2V5Q29tcGFyYXRvcigoeCkgPT4geCkpO1xuICAgICAgICByZXR1cm4gWyczJywgdGhpcy50eXBlLnR5cGUsIC4uLnR5cGVLZXlzLmZsYXRNYXAoKHgpID0+IHgpXTtcbiAgICB9XG4gIH1cbn1cbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvcmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsNkNBQW9EO0FBdUtwRCxNQUFhLGNBQWM7SUFDekIsWUFBNkIsS0FBK0M7UUFBL0MsVUFBSyxHQUFMLEtBQUssQ0FBMEM7UUFDMUUsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFTSxLQUFLOztRQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsbUNBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFVBQVUsQ0FBQyxJQUFrQjtRQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVDLDZHQUE2RztRQUM3Ryx3R0FBd0c7UUFDeEcsOEdBQThHO1FBQzlHLHFDQUFxQztRQUNyQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNoRCwyQ0FBMkM7WUFDM0MsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELCtGQUErRjtRQUMvRixrR0FBa0c7UUFDbEcsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxFQUFFO1lBQzlFLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEVBQUU7WUFDN0IsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDO1NBQy9CO1FBQ0QsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO1FBQ3ZCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztDQUNGO0FBekNELHdDQXlDQztBQUVELE1BQWEsWUFBYSxTQUFRLGNBQWM7SUFDOUMsWUFBWSxRQUFrQjtRQUM1QixLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDbEIsQ0FBQztDQUNGO0FBSkQsb0NBSUM7QUFFRCxNQUFhLGFBQWMsU0FBUSxjQUFjO0lBQy9DLFlBQVksSUFBZTtRQUN6QixLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDZCxDQUFDO0NBQ0Y7QUFKRCxzQ0FJQztBQWFELElBQVksV0FpQlg7QUFqQkQsV0FBWSxXQUFXO0lBQ3JCOztPQUVHO0lBQ0gsNEJBQWEsQ0FBQTtJQUViOztPQUVHO0lBQ0gsNEJBQWEsQ0FBQTtJQUViOzs7O09BSUc7SUFDSCxnQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBakJXLFdBQVcsR0FBWCxtQkFBVyxLQUFYLG1CQUFXLFFBaUJ0QjtBQW9CRCxTQUFnQixnQkFBZ0IsQ0FBQyxDQUFlO0lBQzlDLE9BQU8sQ0FBQyxDQUFDLElBQUksS0FBSyxPQUFPLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxLQUFLLENBQUM7QUFDaEQsQ0FBQztBQUZELDRDQUVDO0FBeUZEOzs7O0dBSUc7QUFDSCxJQUFZLG9CQXVEWDtBQXZERCxXQUFZLG9CQUFvQjtJQUM5Qjs7T0FFRztJQUNILHFDQUFhLENBQUE7SUFFYjs7OztPQUlHO0lBQ0gseUVBQWlELENBQUE7SUFFakQ7Ozs7T0FJRztJQUNILHlFQUFpRCxDQUFBO0lBRWpEOztPQUVHO0lBQ0gsNkRBQXFDLENBQUE7SUFFckM7O09BRUc7SUFDSCxtRUFBMkMsQ0FBQTtJQUUzQzs7T0FFRztJQUNILGlFQUF5QyxDQUFBO0lBRXpDOzs7O09BSUc7SUFDSCx1RUFBK0MsQ0FBQTtJQUUvQzs7OztPQUlHO0lBQ0gscUZBQTZELENBQUE7SUFFN0Q7Ozs7T0FJRztJQUNILDZEQUFxQyxDQUFBO0FBQ3ZDLENBQUMsRUF2RFcsb0JBQW9CLEdBQXBCLDRCQUFvQixLQUFwQiw0QkFBb0IsUUF1RC9CO0FBRUQ7Ozs7R0FJRztBQUNILElBQVksb0JBOEJYO0FBOUJELFdBQVksb0JBQW9CO0lBQzlCOztPQUVHO0lBQ0gscUNBQWEsQ0FBQTtJQUViOztPQUVHO0lBQ0gscUVBQTZDLENBQUE7SUFFN0M7O09BRUc7SUFDSCx5RUFBaUQsQ0FBQTtJQUVqRDs7T0FFRztJQUNILDJEQUFtQyxDQUFBO0lBRW5DOztPQUVHO0lBQ0gscURBQTZCLENBQUE7SUFFN0I7O09BRUc7SUFDSCxtREFBMkIsQ0FBQTtBQUM3QixDQUFDLEVBOUJXLG9CQUFvQixHQUFwQiw0QkFBb0IsS0FBcEIsNEJBQW9CLFFBOEIvQjtBQUVELE1BQWEsZ0JBQWdCO0lBQzNCLFlBQTZCLElBQWtCO1FBQWxCLFNBQUksR0FBSixJQUFJLENBQWM7SUFBRyxDQUFDO0lBRTVDLE1BQU0sQ0FBQyxHQUFpQjtRQUM3QixRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3RCLEtBQUssU0FBUyxDQUFDO1lBQ2YsS0FBSyxTQUFTLENBQUM7WUFDZixLQUFLLFdBQVcsQ0FBQztZQUNqQixLQUFLLE1BQU0sQ0FBQztZQUNaLEtBQUssTUFBTSxDQUFDO1lBQ1osS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssS0FBSztnQkFDUixPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDckMsS0FBSyxPQUFPLENBQUM7WUFDYixLQUFLLEtBQUs7Z0JBQ1IsT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3BHLEtBQUssS0FBSztnQkFDUixPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssS0FBSyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksS0FBSyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQztZQUMvRSxLQUFLLE9BQU87Z0JBQ1YsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUM5QixNQUFNLE1BQU0sR0FBRyxJQUFJLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUNuRCxPQUFPLE1BQU0sQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3JGO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxnQkFBZ0IsQ0FBQyxHQUFpQjtRQUN2QyxRQUFRLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ3RCLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxTQUFTO2dCQUNaLFdBQVc7Z0JBQ1gsT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLFNBQVMsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQztZQUV6RCxLQUFLLE9BQU8sQ0FBQztZQUNiLEtBQUssS0FBSztnQkFDUixPQUFPLEdBQUcsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUU5RyxLQUFLLE9BQU87Z0JBQ1YsSUFBSSxHQUFHLENBQUMsSUFBSSxLQUFLLE9BQU8sRUFBRTtvQkFDeEIsT0FBTyxLQUFLLENBQUM7aUJBQ2Q7Z0JBQ0QsNkRBQTZEO2dCQUM3RCxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRTlHO2dCQUNFLDBDQUEwQztnQkFDMUMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzNCO0lBQ0gsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxZQUFZLENBQUMsR0FBaUI7UUFDbkMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxJQUFrQixFQUFrQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQzVHLE1BQU0sVUFBVSxHQUFHLENBQUMsSUFBa0IsRUFBb0IsRUFBRSxDQUFDLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFeEYsTUFBTSxVQUFVLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLEtBQUssTUFBTSxTQUFTLElBQUksY0FBYyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDakUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRTtnQkFDdEQsT0FBTyxLQUFLLENBQUM7YUFDZDtTQUNGO1FBRUQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxTQUFTLENBQUMsRUFBZ0I7UUFDL0IsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUN0QixLQUFLLE9BQU8sQ0FBQztZQUNiLEtBQUssS0FBSztnQkFDUixPQUFPLElBQUksZ0JBQWdCLENBQUM7b0JBQzFCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUk7b0JBQ3BCLE9BQU8sRUFBRSxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLElBQUk7aUJBQ3BFLENBQUMsQ0FBQztZQUNMLEtBQUssT0FBTztnQkFDVixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUs7cUJBQzFCLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7cUJBQ2pELEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBVSxDQUFDLENBQUM7Z0JBQzNDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBQSwyQkFBaUIsRUFBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO2dCQUN6RCxPQUFPLElBQUksZ0JBQWdCLENBQUM7b0JBQzFCLElBQUksRUFBRSxPQUFPO29CQUNiLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7aUJBQ3JDLENBQUMsQ0FBQztZQUNMO2dCQUNFLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7SUFDSCxDQUFDO0lBRU0sU0FBUyxDQUFDLEVBQWdCLEVBQUUsTUFBTSxHQUFHLElBQUk7UUFDOUMsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRTtZQUN0QixLQUFLLFNBQVMsQ0FBQztZQUNmLEtBQUssU0FBUyxDQUFDO1lBQ2YsS0FBSyxXQUFXLENBQUM7WUFDakIsS0FBSyxNQUFNLENBQUM7WUFDWixLQUFLLE1BQU0sQ0FBQztZQUNaLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxRQUFRLENBQUM7WUFDZCxLQUFLLEtBQUs7Z0JBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUN4QixLQUFLLE9BQU87Z0JBQ1YsT0FBTyxTQUFTLElBQUksZ0JBQWdCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUM7WUFDbkYsS0FBSyxLQUFLO2dCQUNSLE9BQU8sZUFBZSxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDO1lBQ3pGLEtBQUssS0FBSztnQkFDUixNQUFNLElBQUksR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7Z0JBQzNELE9BQU8sTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDMUUsS0FBSyxPQUFPO2dCQUNWLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDaEc7SUFDSCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxPQUFPLENBQUMsRUFBaUI7O1FBQzlCLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDdEIsS0FBSyxTQUFTLENBQUM7WUFDZixLQUFLLFNBQVMsQ0FBQztZQUNmLEtBQUssV0FBVyxDQUFDO1lBQ2pCLEtBQUssTUFBTSxDQUFDO1lBQ1osS0FBSyxNQUFNLENBQUM7WUFDWixLQUFLLFFBQVEsQ0FBQztZQUNkLEtBQUssUUFBUSxDQUFDO1lBQ2QsS0FBSyxLQUFLO2dCQUNSLE9BQU8sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUMvQixLQUFLLE9BQU8sQ0FBQztZQUNiLEtBQUssS0FBSztnQkFDUixPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsSUFBSSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3ZGLEtBQUssS0FBSztnQkFDUixPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLE1BQUEsTUFBQSxFQUFFLGFBQUYsRUFBRSx1QkFBRixFQUFFLENBQUUsR0FBRyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLDBDQUFFLElBQUksbUNBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakgsS0FBSyxPQUFPO2dCQUNWLE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDakYsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFBLDJCQUFpQixFQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvRDtJQUNILENBQUM7Q0FDRjtBQXRKRCw0Q0FzSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlZmVyZW5jZSwgUmVsYXRpb25zaGlwIH0gZnJvbSAnQGNka2xhYnMvdHNrYic7XG5pbXBvcnQgeyBTcGVjRGF0YWJhc2UgfSBmcm9tICcuL2RhdGFiYXNlJztcbmltcG9ydCB7IHNvcnRLZXlDb21wYXJhdG9yIH0gZnJvbSAnLi4vdXRpbC9zb3J0aW5nJztcblxuZXhwb3J0IGludGVyZmFjZSBQYXJ0aXRpb24gZXh0ZW5kcyBFbnRpdHkge1xuICByZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSGFzUmVnaW9uID0gUmVsYXRpb25zaGlwPFBhcnRpdGlvbiwgUmVnaW9uLCB7IGlzUHJpbWFyeT86IGJvb2xlYW4gfT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZSBleHRlbmRzIEVudGl0eSB7XG4gIC8qKlxuICAgKiBUaGUgZnVsbCBuYW1lIG9mIHRoZSBzZXJ2aWNlIGluY2x1ZGluZyB0aGUgZ3JvdXAgcHJlZml4LCBsb3dlcmNhc2VkIGFuZCBoeXBoZW5hdGVkLlxuICAgKlxuICAgKiBFLmcuIGBBV1M6OkR5bmFtb0RCYCAtPiBgYXdzLWR5bmFtb2RiYFxuICAgKlxuICAgKiBAZXhhbXBsZSBhd3MtZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIE9ubHkgdGhlIHNlcnZpY2UgcGFydCBvZiB0aGUgbmFtZSwgbG93ZXJjYXNlZC5cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYGR5bmFtb2RiYFxuICAgKlxuICAgKiBAZXhhbXBsZSBkeW5hbW9kYlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvcnROYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc2hvcnRuYW1lIG9mIHRoZSBzZXJ2aWNlIGluIGNhcGl0YWxpemVkIGZvcm1cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYER5bmFtb0RCYFxuICAgKlxuICAgKiBAZXhhbXBsZSBkeW5hbW9kYlxuICAgKi9cbiAgcmVhZG9ubHkgY2FwaXRhbGl6ZWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjb21wbGV0ZSBjbG91ZGZvcm1hdGlvbiBzdHlsZSBuYW1lc3BhY2Ugb2YgdGhlIHNlcnZpY2VcbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmBcbiAgICpcbiAgICogQGV4YW1wbGUgZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uTmFtZXNwYWNlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudGF0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbWFya2Rvd246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZSBleHRlbmRzIEVudGl0eSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25UeXBlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJZiBzZXQsIHRoaXMgQ2xvdWRGb3JtYXRpb24gVHJhbnNmb3JtIGlzIHJlcXVpcmVkIGJ5IHRoZSByZXNvdXJjZVxuICAgKi9cbiAgY2xvdWRGb3JtYXRpb25UcmFuc2Zvcm0/OiBzdHJpbmc7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IHByb3BlcnRpZXM6IFJlc291cmNlUHJvcGVydGllcztcbiAgcmVhZG9ubHkgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgQXR0cmlidXRlPjtcbiAgcmVhZG9ubHkgdmFsaWRhdGlvbnM/OiB1bmtub3duO1xuICBpZGVudGlmaWVyPzogUmVzb3VyY2VJZGVudGlmaWVyO1xuICBpc1N0YXRlZnVsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5mb3JtYXRpb24gYWJvdXQgdGhlIHRhZ2dhYmlsaXR5IG9mIHRoaXMgcmVzb3VyY2VcbiAgICpcbiAgICogVW5kZWZpbmVkIGlmIHRoZSByZXNvdXJjZSBpcyBub3QgdGFnZ2FibGUuXG4gICAqL1xuICB0YWdJbmZvcm1hdGlvbj86IFRhZ0luZm9ybWF0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGNoYW5nZXMgdG8gdGhpcyByZXNvdXJjZSBuZWVkIHRvIGJlIHNjcnV0aW5pemVkXG4gICAqXG4gICAqIEBkZWZhdWx0IFJlc291cmNlU2NydXRpbnlUeXBlLk5PTkVcbiAgICovXG4gIHNjcnV0aW5pemFibGU/OiBSZXNvdXJjZVNjcnV0aW55VHlwZTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBwYXRocyB0byBwcm9wZXJ0aWVzIHRoYXQgYWxzbyBjYXVzZSByZXBsYWNlbWVudC5cbiAgICpcbiAgICogVGhpcyBpcyB0byBpbmRpY2F0ZSB0aGF0IGNlcnRhaW4gcHJvcGVydHkgcGF0aHMgaW50byB0aGlzIHJlc291cmNlXG4gICAqIHdpbGwgY2F1c2UgcmVwbGFjZW1lbnQ7IG9ubHkgcmVwbGFjZW1lbnRzIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkXG4gICAqIGJ5IHRhZ2dpbmcgdGhlIHByb3BlcnR5IGluIGEgdHlwZSBkZWZpbml0aW9uIHdpbGwgYmUgaW5jbHVkZWQgaGVyZVxuICAgKiAoZm9yIGV4YW1wbGUsIGJlY2F1c2UgdGhlIHRhZ2dlZCBwcm9wZXJ0eSB3b3VsZCBiZSBpbiBhIHByZWRlZmluZWRcbiAgICogdHlwZSBsaWtlIGB0YWdgKS5cbiAgICpcbiAgICogQWxsIHByb3BlcnRpZXMgaW4gdGhpcyBsaXN0IHNob3VsZCBiZSB0cmVhdGVkIGFzIGBjYXVzZXNSZXBsYWNlbWVudDogJ3llcydgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtXG4gICAqL1xuICBhZGRpdGlvbmFsUmVwbGFjZW1lbnRQcm9wZXJ0aWVzPzogc3RyaW5nW11bXTtcbn1cblxuZXhwb3J0IHR5cGUgUmVzb3VyY2VQcm9wZXJ0aWVzID0gUmVjb3JkPHN0cmluZywgUHJvcGVydHk+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVEZWZpbml0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xuICByZWFkb25seSBwcm9wZXJ0aWVzOiBSZXNvdXJjZVByb3BlcnRpZXM7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHJlbmRlciB0aGlzIHR5cGUgZXZlbiBpZiBpdCBpcyB1bnVzZWQuXG4gICAqL1xuICBtdXN0UmVuZGVyRm9yQndDb21wYXQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5IHtcbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIG9mIHRoZSBwcm9wZXJ0eVxuICAgKi9cbiAgZG9jdW1lbnRhdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogSXMgdGhpcyBwcm9wZXJ0eSByZXF1aXJlZFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCB0eXBlIG9mIHRoaXMgcHJvcGVydHlcbiAgICovXG4gIHR5cGU6IFByb3BlcnR5VHlwZTtcblxuICAvKipcbiAgICogQW4gb3JkZXJlZCBsaXN0IG9mIHByZXZpb3VzIHR5cGVzIG9mIHRoaXMgcHJvcGVydHkgaW4gYXNjZW5kaW5nIG9yZGVyXG4gICAqXG4gICAqIERvZXMgbm90IGluY2x1ZGUgdGhlIGN1cnJlbnQgdHlwZSwgdXNlIGB0eXBlYCBmb3IgdGhpcy5cbiAgICovXG4gIHByZXZpb3VzVHlwZXM/OiBQcm9wZXJ0eVR5cGVbXTtcblxuICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0eVxuICAgKlxuICAgKiBUaGlzIHZhbHVlIGlzIG5vdCBkaXJlY3RseSBmdW5jdGlvbmFsOyBpdCBkZXNjcmliZXMgaG93IHRoZSB1bmRlcmx5aW5nIHJlc291cmNlXG4gICAqIHdpbGwgYmVoYXZlIGlmIHRoZSB2YWx1ZSBpcyBub3Qgc3BlY2lmaWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgdW5rbm93blxuICAgKi9cbiAgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcHJvcGVydHkgaXMgZGVwcmVjYXRlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vdCBkZXByZWNhdGVkXG4gICAqL1xuICBkZXByZWNhdGVkPzogRGVwcmVjYXRpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgY2hhbmdlcyB0byB0aGlzIHByb3BlcnR5IG5lZWRzIHRvIGJlIHNjcnV0aW5pemVkIHNwZWNpYWxseVxuICAgKlxuICAgKiBAZGVmYXVsdCBQcm9wZXJ0eVNjcnV0aW55VHlwZS5OT05FXG4gICAqL1xuICBzY3J1dGluaXphYmxlPzogUHJvcGVydHlTY3J1dGlueVR5cGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNvbnRhaW5pbmcgcmVzb3VyY2Ugd2lsbCBiZSByZXBsYWNlZCBpZiB0aGlzIHByb3BlcnR5IGlzIGNoYW5nZWRcbiAgICpcbiAgICogQGRlZmF1bHQgJ25vJ1xuICAgKi9cbiAgY2F1c2VzUmVwbGFjZW1lbnQ/OiAneWVzJyB8ICdubycgfCAnbWF5YmUnO1xufVxuXG5leHBvcnQgY2xhc3MgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpZWxkOiBQaWNrPFByb3BlcnR5LCAndHlwZScgfCAncHJldmlvdXNUeXBlcyc+KSB7XG4gICAgaWYgKGZpZWxkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmllbGQgaXMgdW5kZWZpbmVkJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHR5cGVzKCk6IFByb3BlcnR5VHlwZVtdIHtcbiAgICByZXR1cm4gWy4uLih0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMgPz8gW10pLCB0aGlzLmZpZWxkLnR5cGVdO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgdHlwZSBvZiB0aGlzIHByb3BlcnR5IHdpdGggYSBuZXcgdHlwZVxuICAgKlxuICAgKiBPbmx5IGlmIGl0J3Mgbm90IGluIHRoZSBzZXQgb2YgdHlwZXMgYWxyZWFkeS5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVUeXBlKHR5cGU6IFByb3BlcnR5VHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJpY2hUeXBlID0gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodHlwZSk7XG5cbiAgICAvLyBPbmx5IGFkZCB0aGlzIHR5cGUgaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIGl0LiBXZSBhcmUgb25seSBkb2luZyBjb21wYXJpc29ucyB3aGVyZSAnaW50ZWdlcicgYW5kICdudW1iZXInXG4gICAgLy8gYXJlIHRyZWF0ZWQgdGhlIHNhbWUsIGZvciBhbGwgb3RoZXIgdHlwZXMgd2UgbmVlZCBzdHJpY3QgZXF1YWxpdHkuIFdlIHVzZWQgdG8gdXNlICdhc3NpZ25hYmxlVG8nIGFzIGFcbiAgICAvLyBjb25kaXRpb24sIGJ1dCB0aGVzZSB0eXBlcyB3aWxsIGJlIHJlbmRlcmVkIGluIGJvdGggY28tIGFuZCBjb250cmF2YXJpYW50IHBvc2l0aW9ucywgYW5kIHNvIHdlIHJlYWxseSBjYW4ndFxuICAgIC8vIGRvIG11Y2ggYmV0dGVyIHRoYW4gZnVsbCBlcXVhbGl0eS5cbiAgICBpZiAodGhpcy50eXBlcygpLnNvbWUoKHQpID0+IHJpY2hUeXBlLmVxdWFscyh0KSkpIHtcbiAgICAgIC8vIE5vdGhpbmcgdG8gZG8sIHR5cGUgaXMgYWxyZWFkeSBpbiB0aGVyZS5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTcGVjaWFsIGNhc2U6IGlmIHRoZSBuZXcgdHlwZSBpcyBgc3RyaW5nYCBhbmQgdGhlIG9sZCB0eXBlIGlzIGBkYXRlLXRpbWVgLCB3ZSBhc3N1bWUgdGhpcyBpc1xuICAgIC8vIHRoZSBzYW1lIHR5cGUgYnV0IHdlIGRyb3BwZWQgc29tZSBmb3JtYXR0aW5nIGluZm9ybWF0aW9uLiBObyBuZWVkIHRvIG1ha2UgdGhpcyBhIHNlcGFyYXRlIHR5cGUuXG4gICAgaWYgKHR5cGUudHlwZSA9PT0gJ3N0cmluZycgJiYgdGhpcy50eXBlcygpLnNvbWUoKHQpID0+IHQudHlwZSA9PT0gJ2RhdGUtdGltZScpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMpIHtcbiAgICAgIHRoaXMuZmllbGQucHJldmlvdXNUeXBlcyA9IFtdO1xuICAgIH1cbiAgICB0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMucHVzaCh0aGlzLmZpZWxkLnR5cGUpO1xuICAgIHRoaXMuZmllbGQudHlwZSA9IHR5cGU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJpY2hQcm9wZXJ0eSBleHRlbmRzIFJpY2hUeXBlZEZpZWxkIHtcbiAgY29uc3RydWN0b3IocHJvcGVydHk6IFByb3BlcnR5KSB7XG4gICAgc3VwZXIocHJvcGVydHkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSaWNoQXR0cmlidXRlIGV4dGVuZHMgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3RvcihhdHRyOiBBdHRyaWJ1dGUpIHtcbiAgICBzdXBlcihhdHRyKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZSB7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHR5cGU6IFByb3BlcnR5VHlwZTtcbiAgLyoqXG4gICAqIEFuIG9yZGVyZWQgbGlzdCBvZiBwcmV2aW91cyB0eXBlcyBvZiB0aGlzIHByb3BlcnR5IGluIGFzY2VuZGluZyBvcmRlclxuICAgKlxuICAgKiBEb2VzIG5vdCBpbmNsdWRlIHRoZSBjdXJyZW50IHR5cGUsIHVzZSBgdHlwZWAgZm9yIHRoaXMuXG4gICAqL1xuICBwcmV2aW91c1R5cGVzPzogUHJvcGVydHlUeXBlW107XG59XG5cbmV4cG9ydCBlbnVtIERlcHJlY2F0aW9uIHtcbiAgLyoqXG4gICAqIE5vdCBkZXByZWNhdGVkXG4gICAqL1xuICBOT05FID0gJ05PTkUnLFxuXG4gIC8qKlxuICAgKiBXYXJuIGFib3V0IHVzZVxuICAgKi9cbiAgV0FSTiA9ICdXQVJOJyxcblxuICAvKipcbiAgICogRG8gbm90IGVtaXQgdGhlIHZhbHVlIGF0IGFsbFxuICAgKlxuICAgKiAoSGFuZGxlIHByb3BlcnRpZXMgdGhhdCB3ZXJlIGluY29ycmVjdGx5IGFkZGVkIHRvIHRoZSBzcGVjKVxuICAgKi9cbiAgSUdOT1JFID0gJ0lHTk9SRScsXG59XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5VHlwZSA9XG4gIHwgUHJpbWl0aXZlVHlwZVxuICB8IERlZmluaXRpb25SZWZlcmVuY2VcbiAgfCBCdWlsdGluVGFnVHlwZVxuICB8IEFycmF5VHlwZTxQcm9wZXJ0eVR5cGU+XG4gIHwgTWFwVHlwZTxQcm9wZXJ0eVR5cGU+XG4gIHwgVHlwZVVuaW9uPFByb3BlcnR5VHlwZT47XG5cbmV4cG9ydCB0eXBlIFByaW1pdGl2ZVR5cGUgPVxuICB8IFN0cmluZ1R5cGVcbiAgfCBOdW1iZXJUeXBlXG4gIHwgSW50ZWdlclR5cGVcbiAgfCBCb29sZWFuVHlwZVxuICB8IEpzb25UeXBlXG4gIHwgRGF0ZVRpbWVUeXBlXG4gIHwgTnVsbFR5cGVcbiAgfCBCdWlsdGluVGFnVHlwZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29sbGVjdGlvblR5cGUoeDogUHJvcGVydHlUeXBlKTogeCBpcyBBcnJheVR5cGU8YW55PiB8IE1hcFR5cGU8YW55PiB7XG4gIHJldHVybiB4LnR5cGUgPT09ICdhcnJheScgfHwgeC50eXBlID09PSAnbWFwJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWdJbmZvcm1hdGlvbiB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBwcm9wZXJ0eSB0aGF0IGhvbGRzIHRoZSB0YWdzXG4gICAqL1xuICByZWFkb25seSB0YWdQcm9wZXJ0eU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVXNlZCB0byBpbnN0cnVjdCBjZGsuVGFnTWFuYWdlciBob3cgdG8gaGFuZGxlIHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHZhcmlhbnQ6IFRhZ1ZhcmlhbnQ7XG59XG5cbmV4cG9ydCB0eXBlIFRhZ1ZhcmlhbnQgPSAnc3RhbmRhcmQnIHwgJ2FzZycgfCAnbWFwJztcblxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3N0cmluZyc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEJ1aWx0aW5UYWdUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3RhZyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVtYmVyVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdudW1iZXInO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVnZXJUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2ludGVnZXInO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5UeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2Jvb2xlYW4nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25UeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2pzb24nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE51bGxUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ251bGwnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVUaW1lVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdkYXRlLXRpbWUnO1xufVxuXG4vKipcbiAqIFRoZSBcImxlZ2FjeVwiIHRhZyB0eXBlICh1c2VkIGluIHRoZSBvbGQgcmVzb3VyY2Ugc3BlYylcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsdGluVGFnVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICd0YWcnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlZmluaXRpb25SZWZlcmVuY2Uge1xuICByZWFkb25seSB0eXBlOiAncmVmJztcbiAgcmVhZG9ubHkgcmVmZXJlbmNlOiBSZWZlcmVuY2U8VHlwZURlZmluaXRpb24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFycmF5VHlwZTxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdhcnJheSc7XG4gIHJlYWRvbmx5IGVsZW1lbnQ6IEU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwVHlwZTxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdtYXAnO1xuICByZWFkb25seSBlbGVtZW50OiBFO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVVbmlvbjxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICd1bmlvbic7XG4gIHJlYWRvbmx5IHR5cGVzOiBFW107XG59XG5cbmV4cG9ydCB0eXBlIEhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFNlcnZpY2UsIFJlc291cmNlPjtcbmV4cG9ydCB0eXBlIFJlZ2lvbkhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFJlZ2lvbiwgUmVzb3VyY2U+O1xuZXhwb3J0IHR5cGUgUmVnaW9uSGFzU2VydmljZSA9IFJlbGF0aW9uc2hpcDxSZWdpb24sIFNlcnZpY2U+O1xuZXhwb3J0IHR5cGUgUmVzb3VyY2VEb2MgPSBSZWxhdGlvbnNoaXA8UmVzb3VyY2UsIERvY3VtZW50YXRpb24+O1xuXG5leHBvcnQgdHlwZSBTZXJ2aWNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBTZXJ2aWNlPjtcbmV4cG9ydCB0eXBlIFJlc291cmNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBSZXNvdXJjZT47XG5cbmV4cG9ydCB0eXBlIFVzZXNUeXBlID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBUeXBlRGVmaW5pdGlvbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VJZGVudGlmaWVyIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgYXJuVGVtcGxhdGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogTWFyayBhIHJlc291cmNlIGFzIGEgcmVzb3VyY2UgdGhhdCBuZWVkcyBhZGRpdGlvbmFsIHNjcnV0aXkgd2hlbiBhZGRlZCwgcmVtb3ZlZCBvciBjaGFuZ2VkXG4gKlxuICogVXNlZCB0byBtYXJrIHJlc291cmNlcyB0aGF0IHJlcHJlc2VudCBzZWN1cml0eSBwb2xpY2llcy5cbiAqL1xuZXhwb3J0IGVudW0gUmVzb3VyY2VTY3J1dGlueVR5cGUge1xuICAvKipcbiAgICogTm8gYWRkaXRpb25hbCBzY3J1dGlueVxuICAgKi9cbiAgTm9uZSA9ICdOb25lJyxcblxuICAvKipcbiAgICogQW4gZXh0ZXJuYWxseSBhdHRhY2hlZCBwb2xpY3kgZG9jdW1lbnQgdG8gYSByZXNvdXJjZVxuICAgKlxuICAgKiAoQ29tbW9uIGZvciBTUVMsIFNOUywgUzMsIC4uLilcbiAgICovXG4gIFJlc291cmNlUG9saWN5UmVzb3VyY2UgPSAnUmVzb3VyY2VQb2xpY3lSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gSUFNIHBvbGljeSBvbiBhbiBpZGVudGl0eSByZXNvdXJjZVxuICAgKlxuICAgKiAoQmFzaWNhbGx5IHNheWluZzogdGhpcyBpcyBBV1M6OklBTTo6UG9saWN5KVxuICAgKi9cbiAgSWRlbnRpdHlQb2xpY3lSZXNvdXJjZSA9ICdJZGVudGl0eVBvbGljeVJlc291cmNlJyxcblxuICAvKipcbiAgICogVGhpcyBpcyBhIExhbWJkYSBQZXJtaXNzaW9uIHBvbGljeVxuICAgKi9cbiAgTGFtYmRhUGVybWlzc2lvbiA9ICdMYW1iZGFQZXJtaXNzaW9uJyxcblxuICAvKipcbiAgICogQW4gaW5ncmVzcyBydWxlIG9iamVjdFxuICAgKi9cbiAgSW5ncmVzc1J1bGVSZXNvdXJjZSA9ICdJbmdyZXNzUnVsZVJlc291cmNlJyxcblxuICAvKipcbiAgICogQSBzZXQgb2YgZWdyZXNzIHJ1bGVzXG4gICAqL1xuICBFZ3Jlc3NSdWxlUmVzb3VyY2UgPSAnRWdyZXNzUnVsZVJlc291cmNlJyxcblxuICAvKipcbiAgICogQVdTOjpTU086OkFzc2lnbm1lbnRcbiAgICpcbiAgICogSUFNIElkZW50aXR5IENlbnRlciAoZm9ybWVybHkga25vd24gYXMgU1NPKVxuICAgKi9cbiAgU3NvQXNzaWdubWVudFJlc291cmNlID0gJ1Nzb0Fzc2lnbm1lbnRSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIEFXUzo6U1NPOjpJbnN0YW5jZUFjY2Vzc0NvbnRyb2xBdHRyaWJ1dGVDb25maWd1cmF0aW9uXG4gICAqXG4gICAqIElBTSBJZGVudGl0eSBDZW50ZXIgKGZvcm1lcmx5IGtub3duIGFzIFNTTylcbiAgICovXG4gIFNzb0luc3RhbmNlQUNBQ29uZmlnUmVzb3VyY2UgPSAnU3NvSW5zdGFuY2VBQ0FDb25maWdSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIEFXUzo6U1NPOjpQZXJtaXNzaW9uU2V0XG4gICAqXG4gICAqIElBTSBJZGVudGl0eSBDZW50ZXIgKGZvcm1lcmx5IGtub3duIGFzIFNTTylcbiAgICovXG4gIFNzb1Blcm1pc3Npb25TZXQgPSAnU3NvUGVybWlzc2lvblNldCcsXG59XG5cbi8qKlxuICogTWFyayBhIHByb3BlcnR5IGFzIGEgcHJvcGVydHkgdGhhdCBuZWVkcyBhZGRpdGlvbmFsIHNjcnV0aW55IHdoZW4gaXQgY2hhbmdlc1xuICpcbiAqIFVzZWQgdG8gbWFyayBzZW5zaXRpdmUgcHJvcGVydGllcyB0aGF0IGhhdmUgc2VjdXJpdHktcmVsYXRlZCBpbXBsaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCBlbnVtIFByb3BlcnR5U2NydXRpbnlUeXBlIHtcbiAgLyoqXG4gICAqIE5vIGFkZGl0aW9uYWwgc2NydXRpbnlcbiAgICovXG4gIE5vbmUgPSAnTm9uZScsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gSUFNIHBvbGljeSBkaXJlY3RseSBvbiBhIHJlc291cmNlXG4gICAqL1xuICBJbmxpbmVSZXNvdXJjZVBvbGljeSA9ICdJbmxpbmVSZXNvdXJjZVBvbGljeScsXG5cbiAgLyoqXG4gICAqIEVpdGhlciBhbiBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQgb3IgYSBkaWN0aW9uYXJ5IG9mIHBvbGljeSBkb2N1bWVudHNcbiAgICovXG4gIElubGluZUlkZW50aXR5UG9saWNpZXMgPSAnSW5saW5lSWRlbnRpdHlQb2xpY2llcycsXG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBtYW5hZ2VkIHBvbGljaWVzIChvbiBhbiBpZGVudGl0eSByZXNvdXJjZSlcbiAgICovXG4gIE1hbmFnZWRQb2xpY2llcyA9ICdNYW5hZ2VkUG9saWNpZXMnLFxuXG4gIC8qKlxuICAgKiBBIHNldCBvZiBpbmdyZXNzIHJ1bGVzIChvbiBhIHNlY3VyaXR5IGdyb3VwKVxuICAgKi9cbiAgSW5ncmVzc1J1bGVzID0gJ0luZ3Jlc3NSdWxlcycsXG5cbiAgLyoqXG4gICAqIEEgc2V0IG9mIGVncmVzcyBydWxlcyAob24gYSBzZWN1cml0eSBncm91cClcbiAgICovXG4gIEVncmVzc1J1bGVzID0gJ0VncmVzc1J1bGVzJyxcbn1cblxuZXhwb3J0IGNsYXNzIFJpY2hQcm9wZXJ0eVR5cGUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHR5cGU6IFByb3BlcnR5VHlwZSkge31cblxuICBwdWJsaWMgZXF1YWxzKHJoczogUHJvcGVydHlUeXBlKTogYm9vbGVhbiB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICByZXR1cm4gcmhzLnR5cGUgPT09IHRoaXMudHlwZS50eXBlO1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSB0aGlzLnR5cGUudHlwZSAmJiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuZXF1YWxzKHJocy5lbGVtZW50KTtcbiAgICAgIGNhc2UgJ3JlZic6XG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gJ3JlZicgJiYgdGhpcy50eXBlLnJlZmVyZW5jZS4kcmVmID09PSByaHMucmVmZXJlbmNlLiRyZWY7XG4gICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgIGNvbnN0IGxoc0tleSA9IHRoaXMuc29ydEtleSgpO1xuICAgICAgICBjb25zdCByaHNLZXkgPSBuZXcgUmljaFByb3BlcnR5VHlwZShyaHMpLnNvcnRLZXkoKTtcbiAgICAgICAgcmV0dXJuIGxoc0tleS5sZW5ndGggPT09IHJoc0tleS5sZW5ndGggJiYgbGhzS2V5LmV2ZXJ5KChsLCBpKSA9PiBsID09PSByaHNLZXlbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjdXJyZW50IHR5cGUgaXMgSmF2YVNjcmlwdC1lcXVhbCB0byB0aGUgUkhTIHR5cGVcbiAgICpcbiAgICogU2FtZSBhcyBub3JtYWwgZXF1YWxpdHksIGJ1dCBjb25zaWRlciBgaW50ZWdlcmAgYW5kIGBudW1iZXJgIHRoZSBzYW1lIHR5cGVzLlxuICAgKi9cbiAgcHVibGljIGphdmFzY3JpcHRFcXVhbHMocmhzOiBQcm9wZXJ0eVR5cGUpOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICAgIC8vIFdpZGVuaW5nXG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gJ2ludGVnZXInIHx8IHJocy50eXBlID09PSAnbnVtYmVyJztcblxuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSB0aGlzLnR5cGUudHlwZSAmJiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuamF2YXNjcmlwdEVxdWFscyhyaHMuZWxlbWVudCk7XG5cbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgaWYgKHJocy50eXBlICE9PSAndW5pb24nKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5IHR5cGUgaW4gdGhpcyB1bmlvbiBuZWVkcyB0byBiZSBlcXVhbCBvbmUgdHlwZSBpbiBSSFNcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50eXBlcy5ldmVyeSgodDEpID0+IHJocy50eXBlcy5zb21lKCh0MikgPT4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodDEpLmphdmFzY3JpcHRFcXVhbHModDIpKSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIEZvciBhbnl0aGluZyBlbHNlLCBuZWVkIHN0cmljdCBlcXVhbGl0eVxuICAgICAgICByZXR1cm4gdGhpcy5lcXVhbHMocmhzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY3VycmVudCB0eXBlIGlzIGFzc2lnbmFibGUgdG8gdGhlIFJIUyB0eXBlLlxuICAgKlxuICAgKiBUaGlzIGlzIG1lYW5zIGV2ZXJ5IHR5cGUgbWVtYmVyIG9mIHRoZSBMSFMgbXVzdCBiZSBwcmVzZW50IGluIHRoZSBSSFMgdHlwZVxuICAgKi9cbiAgcHVibGljIGFzc2lnbmFibGVUbyhyaHM6IFByb3BlcnR5VHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGV4dHJhY3RNZW1iZXJzID0gKHR5cGU6IFByb3BlcnR5VHlwZSk6IFByb3BlcnR5VHlwZVtdID0+ICh0eXBlLnR5cGUgPT0gJ3VuaW9uJyA/IHR5cGUudHlwZXMgOiBbdHlwZV0pO1xuICAgIGNvbnN0IGFzUmljaFR5cGUgPSAodHlwZTogUHJvcGVydHlUeXBlKTogUmljaFByb3BlcnR5VHlwZSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0eXBlKTtcblxuICAgIGNvbnN0IHJoc01lbWJlcnMgPSBleHRyYWN0TWVtYmVycyhyaHMpO1xuICAgIGZvciAoY29uc3QgbGhzTWVtYmVyIG9mIGV4dHJhY3RNZW1iZXJzKHRoaXMudHlwZSkubWFwKGFzUmljaFR5cGUpKSB7XG4gICAgICBpZiAoIXJoc01lbWJlcnMuc29tZSgodHlwZSkgPT4gbGhzTWVtYmVyLmVxdWFscyh0eXBlKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHZlcnNpb24gb2YgdGhpcyB0eXBlLCBidXQgd2l0aCBhbGwgdHlwZSB1bmlvbnMgaW4gYSByZWd1bGFyaXplZCBvcmRlclxuICAgKi9cbiAgcHVibGljIG5vcm1hbGl6ZShkYjogU3BlY0RhdGFiYXNlKTogUmljaFByb3BlcnR5VHlwZSB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIG5ldyBSaWNoUHJvcGVydHlUeXBlKHtcbiAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUudHlwZSxcbiAgICAgICAgICBlbGVtZW50OiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkubm9ybWFsaXplKGRiKS50eXBlLFxuICAgICAgICB9KTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgY29uc3QgdHlwZXMgPSB0aGlzLnR5cGUudHlwZXNcbiAgICAgICAgICAubWFwKCh0KSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0KS5ub3JtYWxpemUoZGIpKVxuICAgICAgICAgIC5tYXAoKHQpID0+IFt0LCB0LnNvcnRLZXkoZGIpXSBhcyBjb25zdCk7XG4gICAgICAgIHR5cGVzLnNvcnQoc29ydEtleUNvbXBhcmF0b3IoKFtfLCBzb3J0S2V5XSkgPT4gc29ydEtleSkpO1xuICAgICAgICByZXR1cm4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUoe1xuICAgICAgICAgIHR5cGU6ICd1bmlvbicsXG4gICAgICAgICAgdHlwZXM6IHR5cGVzLm1hcCgoW3QsIF9dKSA9PiB0LnR5cGUpLFxuICAgICAgICB9KTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdHJpbmdpZnkoZGI6IFNwZWNEYXRhYmFzZSwgd2l0aElkID0gdHJ1ZSk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICByZXR1cm4gdGhpcy50eXBlLnR5cGU7XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICAgIHJldHVybiBgQXJyYXk8JHtuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuc3RyaW5naWZ5KGRiLCB3aXRoSWQpfT5gO1xuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIGBNYXA8c3RyaW5nLCAke25ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5zdHJpbmdpZnkoZGIsIHdpdGhJZCl9PmA7XG4gICAgICBjYXNlICdyZWYnOlxuICAgICAgICBjb25zdCB0eXBlID0gZGIuZ2V0KCd0eXBlRGVmaW5pdGlvbicsIHRoaXMudHlwZS5yZWZlcmVuY2UpO1xuICAgICAgICByZXR1cm4gd2l0aElkID8gYCR7dHlwZS5uYW1lfSgke3RoaXMudHlwZS5yZWZlcmVuY2UuJHJlZn0pYCA6IHR5cGUubmFtZTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50eXBlcy5tYXAoKHQpID0+IG5ldyBSaWNoUHJvcGVydHlUeXBlKHQpLnN0cmluZ2lmeShkYiwgd2l0aElkKSkuam9pbignIHwgJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHNvcnRhYmxlIGtleSBiYXNlZCBvbiB0aGlzIHR5cGVcbiAgICpcbiAgICogSWYgYSBkYXRhYmFzZSBpcyBnaXZlbiwgdHlwZSBkZWZpbml0aW9ucyB3aWxsIGJlIHNvcnRlZCBiYXNlZCBvbiB0eXBlIG5hbWUsXG4gICAqIG90aGVyd2lzZSBvbiBpZGVudGlmaWVyXG4gICAqL1xuICBwdWJsaWMgc29ydEtleShkYj86IFNwZWNEYXRhYmFzZSk6IHN0cmluZ1tdIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnZGF0ZS10aW1lJzpcbiAgICAgIGNhc2UgJ2pzb24nOlxuICAgICAgY2FzZSAnbnVsbCc6XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3RhZyc6XG4gICAgICAgIHJldHVybiBbJzAnLCB0aGlzLnR5cGUudHlwZV07XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICBjYXNlICdtYXAnOlxuICAgICAgICByZXR1cm4gWycxJywgdGhpcy50eXBlLnR5cGUsIC4uLm5ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5zb3J0S2V5KGRiKV07XG4gICAgICBjYXNlICdyZWYnOlxuICAgICAgICByZXR1cm4gWycyJywgdGhpcy50eXBlLnR5cGUsIGRiPy5nZXQoJ3R5cGVEZWZpbml0aW9uJywgdGhpcy50eXBlLnJlZmVyZW5jZSk/Lm5hbWUgPz8gdGhpcy50eXBlLnJlZmVyZW5jZS4kcmVmXTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgY29uc3QgdHlwZUtleXMgPSB0aGlzLnR5cGUudHlwZXMubWFwKCh0KSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0KS5zb3J0S2V5KGRiKSk7XG4gICAgICAgIHR5cGVLZXlzLnNvcnQoc29ydEtleUNvbXBhcmF0b3IoKHgpID0+IHgpKTtcbiAgICAgICAgcmV0dXJuIFsnMycsIHRoaXMudHlwZS50eXBlLCAuLi50eXBlS2V5cy5mbGF0TWFwKCh4KSA9PiB4KV07XG4gICAgfVxuICB9XG59XG4iXX0= /***/ }), @@ -26546,43 +27064,6 @@ const resolveHttpAuthSchemeConfig = (config) => { exports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig; -/***/ }), - -/***/ 30118: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.defaultProvider = void 0; -exports.defaultProvider = ((input) => { - return () => Promise.resolve().then(() => __importStar(__nccwpck_require__(75531))).then(({ defaultProvider }) => defaultProvider(input)()); -}); - - /***/ }), /***/ 97604: @@ -27634,8 +28115,8 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.getRuntimeConfig = void 0; const tslib_1 = __nccwpck_require__(4351); const package_json_1 = tslib_1.__importDefault(__nccwpck_require__(69722)); -const credentialDefaultProvider_1 = __nccwpck_require__(30118); const core_1 = __nccwpck_require__(59963); +const credential_provider_node_1 = __nccwpck_require__(75531); const util_user_agent_node_1 = __nccwpck_require__(98095); const config_resolver_1 = __nccwpck_require__(53098); const hash_node_1 = __nccwpck_require__(3081); @@ -27660,7 +28141,7 @@ const getRuntimeConfig = (config) => { runtime: "node", defaultsMode, bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength, - credentialDefaultProvider: config?.credentialDefaultProvider ?? credentialDefaultProvider_1.defaultProvider, + credentialDefaultProvider: config?.credentialDefaultProvider ?? credential_provider_node_1.defaultProvider, defaultUserAgentProvider: config?.defaultUserAgentProvider ?? (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS), @@ -28750,43 +29231,6 @@ const resolveHttpAuthSchemeConfig = (config) => { exports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig; -/***/ }), - -/***/ 74800: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - var desc = Object.getOwnPropertyDescriptor(m, k); - if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { - desc = { enumerable: true, get: function() { return m[k]; } }; - } - Object.defineProperty(o, k2, desc); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.defaultProvider = void 0; -exports.defaultProvider = ((input) => { - return () => Promise.resolve().then(() => __importStar(__nccwpck_require__(75531))).then(({ defaultProvider }) => defaultProvider(input)()); -}); - - /***/ }), /***/ 20510: @@ -30295,8 +30739,8 @@ Object.defineProperty(exports, "__esModule", ({ value: true })); exports.getRuntimeConfig = void 0; const tslib_1 = __nccwpck_require__(4351); const package_json_1 = tslib_1.__importDefault(__nccwpck_require__(7947)); -const credentialDefaultProvider_1 = __nccwpck_require__(74800); const core_1 = __nccwpck_require__(59963); +const credential_provider_node_1 = __nccwpck_require__(75531); const util_user_agent_node_1 = __nccwpck_require__(98095); const config_resolver_1 = __nccwpck_require__(53098); const core_2 = __nccwpck_require__(55829); @@ -30322,14 +30766,14 @@ const getRuntimeConfig = (config) => { runtime: "node", defaultsMode, bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength, - credentialDefaultProvider: config?.credentialDefaultProvider ?? credentialDefaultProvider_1.defaultProvider, + credentialDefaultProvider: config?.credentialDefaultProvider ?? credential_provider_node_1.defaultProvider, defaultUserAgentProvider: config?.defaultUserAgentProvider ?? (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }), httpAuthSchemes: config?.httpAuthSchemes ?? [ { schemeId: "aws.auth#sigv4", identityProvider: (ipc) => ipc.getIdentityProvider("aws.auth#sigv4") || - (async (idProps) => await (0, credentialDefaultProvider_1.defaultProvider)(idProps?.__config || {})()), + (async (idProps) => await (0, credential_provider_node_1.defaultProvider)(idProps?.__config || {})()), signer: new core_1.AwsSdkSigV4Signer(), }, { @@ -30486,15 +30930,6 @@ var warningEmitted = false; var emitWarningIfUnsupportedVersion = /* @__PURE__ */ __name((version) => { if (version && !warningEmitted && parseInt(version.substring(1, version.indexOf("."))) < 16) { warningEmitted = true; - process.emitWarning( - `NodeDeprecationWarning: The AWS SDK for JavaScript (v3) will -no longer support Node.js 14.x on May 1, 2024. - -To continue receiving updates to AWS services, bug fixes, and security -updates please upgrade to an active Node.js LTS version. - -More information can be found at: https://a.co/dzr2AJd` - ); } }, "emitWarningIfUnsupportedVersion"); @@ -31475,9 +31910,6 @@ var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); -var __esm = (fn, res) => function __init() { - return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; -}; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); @@ -31500,18 +31932,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge )); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -// src/loadSts.ts -var loadSts_exports = {}; -__export(loadSts_exports, { - getDefaultRoleAssumer: () => import_client_sts.getDefaultRoleAssumer -}); -var import_client_sts; -var init_loadSts = __esm({ - "src/loadSts.ts"() { - import_client_sts = __nccwpck_require__(52209); - } -}); - // src/index.ts var src_exports = {}; __export(src_exports, { @@ -31555,8 +31975,8 @@ var resolveAssumeRoleCredentials = /* @__PURE__ */ __name(async (profileName, pr (_a = options.logger) == null ? void 0 : _a.debug("@aws-sdk/credential-provider-ini", "resolveAssumeRoleCredentials (STS)"); const data = profiles[profileName]; if (!options.roleAssumer) { - const { getDefaultRoleAssumer: getDefaultRoleAssumer2 } = await Promise.resolve().then(() => (init_loadSts(), loadSts_exports)); - options.roleAssumer = getDefaultRoleAssumer2( + const { getDefaultRoleAssumer } = await Promise.resolve().then(() => __toESM(__nccwpck_require__(52209))); + options.roleAssumer = getDefaultRoleAssumer( { ...options.clientConfig, credentialProviderLogger: options.logger, @@ -32186,7 +32606,7 @@ const fromWebToken = (init) => async () => { const { roleArn, roleSessionName, webIdentityToken, providerId, policyArns, policy, durationSeconds } = init; let { roleAssumerWithWebIdentity } = init; if (!roleAssumerWithWebIdentity) { - const { getDefaultRoleAssumerWithWebIdentity } = await Promise.resolve().then(() => __importStar(__nccwpck_require__(44999))); + const { getDefaultRoleAssumerWithWebIdentity } = await Promise.resolve().then(() => __importStar(__nccwpck_require__(52209))); roleAssumerWithWebIdentity = getDefaultRoleAssumerWithWebIdentity({ ...init.clientConfig, credentialProviderLogger: init.logger, @@ -32237,19 +32657,6 @@ __reExport(src_exports, __nccwpck_require__(47905), module.exports); -/***/ }), - -/***/ 44999: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getDefaultRoleAssumerWithWebIdentity = void 0; -const client_sts_1 = __nccwpck_require__(52209); -Object.defineProperty(exports, "getDefaultRoleAssumerWithWebIdentity", ({ enumerable: true, get: function () { return client_sts_1.getDefaultRoleAssumerWithWebIdentity; } })); - - /***/ }), /***/ 50403: @@ -33002,14 +33409,13 @@ var resolveRegionConfig = /* @__PURE__ */ __name((input) => { /***/ 52843: /***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { +var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); -var __esm = (fn, res) => function __init() { - return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res; -}; var __export = (target, all) => { for (var name in all) __defProp(target, name, { get: all[name], enumerable: true }); @@ -33022,21 +33428,16 @@ var __copyProps = (to, from, except, desc) => { } return to; }; +var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( + // If the importer is in node compatibility mode or this is not an ESM + // file that has been converted to a CommonJS file using a Babel- + // compatible transform (i.e. "__esModule" has not been set), then set + // "default" to the CommonJS "module.exports" for node compatibility. + isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, + mod +)); var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); -// src/loadSsoOidc.ts -var loadSsoOidc_exports = {}; -__export(loadSsoOidc_exports, { - CreateTokenCommand: () => import_client_sso_oidc.CreateTokenCommand, - SSOOIDCClient: () => import_client_sso_oidc.SSOOIDCClient -}); -var import_client_sso_oidc; -var init_loadSsoOidc = __esm({ - "src/loadSsoOidc.ts"() { - import_client_sso_oidc = __nccwpck_require__(54527); - } -}); - // src/index.ts var src_exports = {}; __export(src_exports, { @@ -33057,21 +33458,21 @@ var REFRESH_MESSAGE = `To refresh this SSO session run 'aws sso login' with the // src/getSsoOidcClient.ts var ssoOidcClientsHash = {}; var getSsoOidcClient = /* @__PURE__ */ __name(async (ssoRegion) => { - const { SSOOIDCClient: SSOOIDCClient2 } = await Promise.resolve().then(() => (init_loadSsoOidc(), loadSsoOidc_exports)); + const { SSOOIDCClient } = await Promise.resolve().then(() => __toESM(__nccwpck_require__(54527))); if (ssoOidcClientsHash[ssoRegion]) { return ssoOidcClientsHash[ssoRegion]; } - const ssoOidcClient = new SSOOIDCClient2({ region: ssoRegion }); + const ssoOidcClient = new SSOOIDCClient({ region: ssoRegion }); ssoOidcClientsHash[ssoRegion] = ssoOidcClient; return ssoOidcClient; }, "getSsoOidcClient"); // src/getNewSsoOidcToken.ts var getNewSsoOidcToken = /* @__PURE__ */ __name(async (ssoToken, ssoRegion) => { - const { CreateTokenCommand: CreateTokenCommand2 } = await Promise.resolve().then(() => (init_loadSsoOidc(), loadSsoOidc_exports)); + const { CreateTokenCommand } = await Promise.resolve().then(() => __toESM(__nccwpck_require__(54527))); const ssoOidcClient = await getSsoOidcClient(ssoRegion); return ssoOidcClient.send( - new CreateTokenCommand2({ + new CreateTokenCommand({ clientId: ssoToken.clientId, clientSecret: ssoToken.clientSecret, refreshToken: ssoToken.refreshToken, @@ -87408,7 +87809,7 @@ module.exports = JSON.parse('{"$ref":"#/definitions/IntegManifest","definitions" /***/ ((module) => { "use strict"; -module.exports = JSON.parse('{"name":"@aws-sdk/client-cloudformation","description":"AWS SDK for JavaScript Cloudformation Client for Node.js, Browser and React Native","version":"3.564.0","scripts":{"build":"concurrently \'yarn:build:cjs\' \'yarn:build:es\' \'yarn:build:types\'","build:cjs":"node ../../scripts/compilation/inline client-cloudformation","build:es":"tsc -p tsconfig.es.json","build:include:deps":"lerna run --scope $npm_package_name --include-dependencies build","build:types":"tsc -p tsconfig.types.json","build:types:downlevel":"downlevel-dts dist-types dist-types/ts3.4","clean":"rimraf ./dist-* && rimraf *.tsbuildinfo","extract:docs":"api-extractor run --local","generate:client":"node ../../scripts/generate-clients/single-service --solo cloudformation"},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist-es/index.js","sideEffects":false,"dependencies":{"@aws-crypto/sha256-browser":"3.0.0","@aws-crypto/sha256-js":"3.0.0","@aws-sdk/core":"3.556.0","@aws-sdk/credential-provider-node":"3.564.0","@aws-sdk/middleware-host-header":"3.535.0","@aws-sdk/middleware-logger":"3.535.0","@aws-sdk/middleware-recursion-detection":"3.535.0","@aws-sdk/middleware-user-agent":"3.540.0","@aws-sdk/region-config-resolver":"3.535.0","@aws-sdk/types":"3.535.0","@aws-sdk/util-endpoints":"3.540.0","@aws-sdk/util-user-agent-browser":"3.535.0","@aws-sdk/util-user-agent-node":"3.535.0","@smithy/config-resolver":"^2.2.0","@smithy/core":"^1.4.2","@smithy/fetch-http-handler":"^2.5.0","@smithy/hash-node":"^2.2.0","@smithy/invalid-dependency":"^2.2.0","@smithy/middleware-content-length":"^2.2.0","@smithy/middleware-endpoint":"^2.5.1","@smithy/middleware-retry":"^2.3.1","@smithy/middleware-serde":"^2.3.0","@smithy/middleware-stack":"^2.2.0","@smithy/node-config-provider":"^2.3.0","@smithy/node-http-handler":"^2.5.0","@smithy/protocol-http":"^3.3.0","@smithy/smithy-client":"^2.5.1","@smithy/types":"^2.12.0","@smithy/url-parser":"^2.2.0","@smithy/util-base64":"^2.3.0","@smithy/util-body-length-browser":"^2.2.0","@smithy/util-body-length-node":"^2.3.0","@smithy/util-defaults-mode-browser":"^2.2.1","@smithy/util-defaults-mode-node":"^2.3.1","@smithy/util-endpoints":"^1.2.0","@smithy/util-middleware":"^2.2.0","@smithy/util-retry":"^2.2.0","@smithy/util-utf8":"^2.3.0","@smithy/util-waiter":"^2.2.0","tslib":"^2.6.2","uuid":"^9.0.1"},"devDependencies":{"@smithy/service-client-documentation-generator":"^2.2.0","@tsconfig/node14":"1.0.3","@types/node":"^14.14.31","@types/uuid":"^9.0.4","concurrently":"7.0.0","downlevel-dts":"0.10.1","rimraf":"3.0.2","typescript":"~4.9.5"},"engines":{"node":">=14.0.0"},"typesVersions":{"<4.0":{"dist-types/*":["dist-types/ts3.4/*"]}},"files":["dist-*/**"],"author":{"name":"AWS SDK for JavaScript Team","url":"https://aws.amazon.com/javascript/"},"license":"Apache-2.0","browser":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.browser"},"react-native":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.native"},"homepage":"https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-cloudformation","repository":{"type":"git","url":"https://github.com/aws/aws-sdk-js-v3.git","directory":"clients/client-cloudformation"}}'); +module.exports = JSON.parse('{"name":"@aws-sdk/client-cloudformation","description":"AWS SDK for JavaScript Cloudformation Client for Node.js, Browser and React Native","version":"3.569.0","scripts":{"build":"concurrently \'yarn:build:cjs\' \'yarn:build:es\' \'yarn:build:types\'","build:cjs":"node ../../scripts/compilation/inline client-cloudformation","build:es":"tsc -p tsconfig.es.json","build:include:deps":"lerna run --scope $npm_package_name --include-dependencies build","build:types":"tsc -p tsconfig.types.json","build:types:downlevel":"downlevel-dts dist-types dist-types/ts3.4","clean":"rimraf ./dist-* && rimraf *.tsbuildinfo","extract:docs":"api-extractor run --local","generate:client":"node ../../scripts/generate-clients/single-service --solo cloudformation"},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist-es/index.js","sideEffects":false,"dependencies":{"@aws-crypto/sha256-browser":"3.0.0","@aws-crypto/sha256-js":"3.0.0","@aws-sdk/client-sso-oidc":"3.569.0","@aws-sdk/client-sts":"3.569.0","@aws-sdk/core":"3.567.0","@aws-sdk/credential-provider-node":"3.569.0","@aws-sdk/middleware-host-header":"3.567.0","@aws-sdk/middleware-logger":"3.568.0","@aws-sdk/middleware-recursion-detection":"3.567.0","@aws-sdk/middleware-user-agent":"3.567.0","@aws-sdk/region-config-resolver":"3.567.0","@aws-sdk/types":"3.567.0","@aws-sdk/util-endpoints":"3.567.0","@aws-sdk/util-user-agent-browser":"3.567.0","@aws-sdk/util-user-agent-node":"3.568.0","@smithy/config-resolver":"^2.2.0","@smithy/core":"^1.4.2","@smithy/fetch-http-handler":"^2.5.0","@smithy/hash-node":"^2.2.0","@smithy/invalid-dependency":"^2.2.0","@smithy/middleware-content-length":"^2.2.0","@smithy/middleware-endpoint":"^2.5.1","@smithy/middleware-retry":"^2.3.1","@smithy/middleware-serde":"^2.3.0","@smithy/middleware-stack":"^2.2.0","@smithy/node-config-provider":"^2.3.0","@smithy/node-http-handler":"^2.5.0","@smithy/protocol-http":"^3.3.0","@smithy/smithy-client":"^2.5.1","@smithy/types":"^2.12.0","@smithy/url-parser":"^2.2.0","@smithy/util-base64":"^2.3.0","@smithy/util-body-length-browser":"^2.2.0","@smithy/util-body-length-node":"^2.3.0","@smithy/util-defaults-mode-browser":"^2.2.1","@smithy/util-defaults-mode-node":"^2.3.1","@smithy/util-endpoints":"^1.2.0","@smithy/util-middleware":"^2.2.0","@smithy/util-retry":"^2.2.0","@smithy/util-utf8":"^2.3.0","@smithy/util-waiter":"^2.2.0","tslib":"^2.6.2","uuid":"^9.0.1"},"devDependencies":{"@tsconfig/node16":"16.1.3","@types/node":"^16.18.96","@types/uuid":"^9.0.4","concurrently":"7.0.0","downlevel-dts":"0.10.1","rimraf":"3.0.2","typescript":"~4.9.5"},"engines":{"node":">=16.0.0"},"typesVersions":{"<4.0":{"dist-types/*":["dist-types/ts3.4/*"]}},"files":["dist-*/**"],"author":{"name":"AWS SDK for JavaScript Team","url":"https://aws.amazon.com/javascript/"},"license":"Apache-2.0","browser":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.browser"},"react-native":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.native"},"homepage":"https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-cloudformation","repository":{"type":"git","url":"https://github.com/aws/aws-sdk-js-v3.git","directory":"clients/client-cloudformation"}}'); /***/ }), @@ -87416,7 +87817,7 @@ module.exports = JSON.parse('{"name":"@aws-sdk/client-cloudformation","descripti /***/ ((module) => { "use strict"; -module.exports = JSON.parse('{"name":"@aws-sdk/client-cognito-identity","description":"AWS SDK for JavaScript Cognito Identity Client for Node.js, Browser and React Native","version":"3.564.0","scripts":{"build":"concurrently \'yarn:build:cjs\' \'yarn:build:es\' \'yarn:build:types\'","build:cjs":"node ../../scripts/compilation/inline client-cognito-identity","build:es":"tsc -p tsconfig.es.json","build:include:deps":"lerna run --scope $npm_package_name --include-dependencies build","build:types":"tsc -p tsconfig.types.json","build:types:downlevel":"downlevel-dts dist-types dist-types/ts3.4","clean":"rimraf ./dist-* && rimraf *.tsbuildinfo","extract:docs":"api-extractor run --local","generate:client":"node ../../scripts/generate-clients/single-service --solo cognito-identity","test:e2e":"ts-mocha test/**/*.ispec.ts && karma start karma.conf.js"},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist-es/index.js","sideEffects":false,"dependencies":{"@aws-crypto/sha256-browser":"3.0.0","@aws-crypto/sha256-js":"3.0.0","@aws-sdk/core":"3.556.0","@aws-sdk/credential-provider-node":"3.564.0","@aws-sdk/middleware-host-header":"3.535.0","@aws-sdk/middleware-logger":"3.535.0","@aws-sdk/middleware-recursion-detection":"3.535.0","@aws-sdk/middleware-user-agent":"3.540.0","@aws-sdk/region-config-resolver":"3.535.0","@aws-sdk/types":"3.535.0","@aws-sdk/util-endpoints":"3.540.0","@aws-sdk/util-user-agent-browser":"3.535.0","@aws-sdk/util-user-agent-node":"3.535.0","@smithy/config-resolver":"^2.2.0","@smithy/core":"^1.4.2","@smithy/fetch-http-handler":"^2.5.0","@smithy/hash-node":"^2.2.0","@smithy/invalid-dependency":"^2.2.0","@smithy/middleware-content-length":"^2.2.0","@smithy/middleware-endpoint":"^2.5.1","@smithy/middleware-retry":"^2.3.1","@smithy/middleware-serde":"^2.3.0","@smithy/middleware-stack":"^2.2.0","@smithy/node-config-provider":"^2.3.0","@smithy/node-http-handler":"^2.5.0","@smithy/protocol-http":"^3.3.0","@smithy/smithy-client":"^2.5.1","@smithy/types":"^2.12.0","@smithy/url-parser":"^2.2.0","@smithy/util-base64":"^2.3.0","@smithy/util-body-length-browser":"^2.2.0","@smithy/util-body-length-node":"^2.3.0","@smithy/util-defaults-mode-browser":"^2.2.1","@smithy/util-defaults-mode-node":"^2.3.1","@smithy/util-endpoints":"^1.2.0","@smithy/util-middleware":"^2.2.0","@smithy/util-retry":"^2.2.0","@smithy/util-utf8":"^2.3.0","tslib":"^2.6.2"},"devDependencies":{"@aws-sdk/client-iam":"3.564.0","@smithy/service-client-documentation-generator":"^2.2.0","@tsconfig/node14":"1.0.3","@types/chai":"^4.2.11","@types/mocha":"^8.0.4","@types/node":"^14.14.31","concurrently":"7.0.0","downlevel-dts":"0.10.1","rimraf":"3.0.2","typescript":"~4.9.5"},"engines":{"node":">=14.0.0"},"typesVersions":{"<4.0":{"dist-types/*":["dist-types/ts3.4/*"]}},"files":["dist-*/**"],"author":{"name":"AWS SDK for JavaScript Team","url":"https://aws.amazon.com/javascript/"},"license":"Apache-2.0","browser":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.browser"},"react-native":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.native"},"homepage":"https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-cognito-identity","repository":{"type":"git","url":"https://github.com/aws/aws-sdk-js-v3.git","directory":"clients/client-cognito-identity"}}'); +module.exports = JSON.parse('{"name":"@aws-sdk/client-cognito-identity","description":"AWS SDK for JavaScript Cognito Identity Client for Node.js, Browser and React Native","version":"3.569.0","scripts":{"build":"concurrently \'yarn:build:cjs\' \'yarn:build:es\' \'yarn:build:types\'","build:cjs":"node ../../scripts/compilation/inline client-cognito-identity","build:es":"tsc -p tsconfig.es.json","build:include:deps":"lerna run --scope $npm_package_name --include-dependencies build","build:types":"tsc -p tsconfig.types.json","build:types:downlevel":"downlevel-dts dist-types dist-types/ts3.4","clean":"rimraf ./dist-* && rimraf *.tsbuildinfo","extract:docs":"api-extractor run --local","generate:client":"node ../../scripts/generate-clients/single-service --solo cognito-identity","test:e2e":"ts-mocha test/**/*.ispec.ts && karma start karma.conf.js"},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist-es/index.js","sideEffects":false,"dependencies":{"@aws-crypto/sha256-browser":"3.0.0","@aws-crypto/sha256-js":"3.0.0","@aws-sdk/client-sso-oidc":"3.569.0","@aws-sdk/client-sts":"3.569.0","@aws-sdk/core":"3.567.0","@aws-sdk/credential-provider-node":"3.569.0","@aws-sdk/middleware-host-header":"3.567.0","@aws-sdk/middleware-logger":"3.568.0","@aws-sdk/middleware-recursion-detection":"3.567.0","@aws-sdk/middleware-user-agent":"3.567.0","@aws-sdk/region-config-resolver":"3.567.0","@aws-sdk/types":"3.567.0","@aws-sdk/util-endpoints":"3.567.0","@aws-sdk/util-user-agent-browser":"3.567.0","@aws-sdk/util-user-agent-node":"3.568.0","@smithy/config-resolver":"^2.2.0","@smithy/core":"^1.4.2","@smithy/fetch-http-handler":"^2.5.0","@smithy/hash-node":"^2.2.0","@smithy/invalid-dependency":"^2.2.0","@smithy/middleware-content-length":"^2.2.0","@smithy/middleware-endpoint":"^2.5.1","@smithy/middleware-retry":"^2.3.1","@smithy/middleware-serde":"^2.3.0","@smithy/middleware-stack":"^2.2.0","@smithy/node-config-provider":"^2.3.0","@smithy/node-http-handler":"^2.5.0","@smithy/protocol-http":"^3.3.0","@smithy/smithy-client":"^2.5.1","@smithy/types":"^2.12.0","@smithy/url-parser":"^2.2.0","@smithy/util-base64":"^2.3.0","@smithy/util-body-length-browser":"^2.2.0","@smithy/util-body-length-node":"^2.3.0","@smithy/util-defaults-mode-browser":"^2.2.1","@smithy/util-defaults-mode-node":"^2.3.1","@smithy/util-endpoints":"^1.2.0","@smithy/util-middleware":"^2.2.0","@smithy/util-retry":"^2.2.0","@smithy/util-utf8":"^2.3.0","tslib":"^2.6.2"},"devDependencies":{"@aws-sdk/client-iam":"3.569.0","@tsconfig/node16":"16.1.3","@types/chai":"^4.2.11","@types/mocha":"^8.0.4","@types/node":"^16.18.96","concurrently":"7.0.0","downlevel-dts":"0.10.1","rimraf":"3.0.2","typescript":"~4.9.5"},"engines":{"node":">=16.0.0"},"typesVersions":{"<4.0":{"dist-types/*":["dist-types/ts3.4/*"]}},"files":["dist-*/**"],"author":{"name":"AWS SDK for JavaScript Team","url":"https://aws.amazon.com/javascript/"},"license":"Apache-2.0","browser":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.browser"},"react-native":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.native"},"homepage":"https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-cognito-identity","repository":{"type":"git","url":"https://github.com/aws/aws-sdk-js-v3.git","directory":"clients/client-cognito-identity"}}'); /***/ }), @@ -87424,7 +87825,7 @@ module.exports = JSON.parse('{"name":"@aws-sdk/client-cognito-identity","descrip /***/ ((module) => { "use strict"; -module.exports = JSON.parse('{"name":"@aws-sdk/client-sso-oidc","description":"AWS SDK for JavaScript Sso Oidc Client for Node.js, Browser and React Native","version":"3.564.0","scripts":{"build":"concurrently \'yarn:build:cjs\' \'yarn:build:es\' \'yarn:build:types\'","build:cjs":"node ../../scripts/compilation/inline client-sso-oidc","build:es":"tsc -p tsconfig.es.json","build:include:deps":"lerna run --scope $npm_package_name --include-dependencies build","build:types":"tsc -p tsconfig.types.json","build:types:downlevel":"downlevel-dts dist-types dist-types/ts3.4","clean":"rimraf ./dist-* && rimraf *.tsbuildinfo","extract:docs":"api-extractor run --local","generate:client":"node ../../scripts/generate-clients/single-service --solo sso-oidc"},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist-es/index.js","sideEffects":false,"dependencies":{"@aws-crypto/sha256-browser":"3.0.0","@aws-crypto/sha256-js":"3.0.0","@aws-sdk/core":"3.556.0","@aws-sdk/middleware-host-header":"3.535.0","@aws-sdk/middleware-logger":"3.535.0","@aws-sdk/middleware-recursion-detection":"3.535.0","@aws-sdk/middleware-user-agent":"3.540.0","@aws-sdk/region-config-resolver":"3.535.0","@aws-sdk/types":"3.535.0","@aws-sdk/util-endpoints":"3.540.0","@aws-sdk/util-user-agent-browser":"3.535.0","@aws-sdk/util-user-agent-node":"3.535.0","@smithy/config-resolver":"^2.2.0","@smithy/core":"^1.4.2","@smithy/fetch-http-handler":"^2.5.0","@smithy/hash-node":"^2.2.0","@smithy/invalid-dependency":"^2.2.0","@smithy/middleware-content-length":"^2.2.0","@smithy/middleware-endpoint":"^2.5.1","@smithy/middleware-retry":"^2.3.1","@smithy/middleware-serde":"^2.3.0","@smithy/middleware-stack":"^2.2.0","@smithy/node-config-provider":"^2.3.0","@smithy/node-http-handler":"^2.5.0","@smithy/protocol-http":"^3.3.0","@smithy/smithy-client":"^2.5.1","@smithy/types":"^2.12.0","@smithy/url-parser":"^2.2.0","@smithy/util-base64":"^2.3.0","@smithy/util-body-length-browser":"^2.2.0","@smithy/util-body-length-node":"^2.3.0","@smithy/util-defaults-mode-browser":"^2.2.1","@smithy/util-defaults-mode-node":"^2.3.1","@smithy/util-endpoints":"^1.2.0","@smithy/util-middleware":"^2.2.0","@smithy/util-retry":"^2.2.0","@smithy/util-utf8":"^2.3.0","tslib":"^2.6.2"},"devDependencies":{"@smithy/service-client-documentation-generator":"^2.2.0","@tsconfig/node14":"1.0.3","@types/node":"^14.14.31","concurrently":"7.0.0","downlevel-dts":"0.10.1","rimraf":"3.0.2","typescript":"~4.9.5"},"engines":{"node":">=14.0.0"},"typesVersions":{"<4.0":{"dist-types/*":["dist-types/ts3.4/*"]}},"files":["dist-*/**"],"author":{"name":"AWS SDK for JavaScript Team","url":"https://aws.amazon.com/javascript/"},"license":"Apache-2.0","peerDependencies":{"@aws-sdk/credential-provider-node":"^3.564.0"},"browser":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.browser"},"react-native":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.native"},"homepage":"https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-sso-oidc","repository":{"type":"git","url":"https://github.com/aws/aws-sdk-js-v3.git","directory":"clients/client-sso-oidc"}}'); +module.exports = JSON.parse('{"name":"@aws-sdk/client-sso-oidc","description":"AWS SDK for JavaScript Sso Oidc Client for Node.js, Browser and React Native","version":"3.569.0","scripts":{"build":"concurrently \'yarn:build:cjs\' \'yarn:build:es\' \'yarn:build:types\'","build:cjs":"node ../../scripts/compilation/inline client-sso-oidc","build:es":"tsc -p tsconfig.es.json","build:include:deps":"lerna run --scope $npm_package_name --include-dependencies build","build:types":"tsc -p tsconfig.types.json","build:types:downlevel":"downlevel-dts dist-types dist-types/ts3.4","clean":"rimraf ./dist-* && rimraf *.tsbuildinfo","extract:docs":"api-extractor run --local","generate:client":"node ../../scripts/generate-clients/single-service --solo sso-oidc"},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist-es/index.js","sideEffects":false,"dependencies":{"@aws-crypto/sha256-browser":"3.0.0","@aws-crypto/sha256-js":"3.0.0","@aws-sdk/client-sts":"3.569.0","@aws-sdk/core":"3.567.0","@aws-sdk/credential-provider-node":"3.569.0","@aws-sdk/middleware-host-header":"3.567.0","@aws-sdk/middleware-logger":"3.568.0","@aws-sdk/middleware-recursion-detection":"3.567.0","@aws-sdk/middleware-user-agent":"3.567.0","@aws-sdk/region-config-resolver":"3.567.0","@aws-sdk/types":"3.567.0","@aws-sdk/util-endpoints":"3.567.0","@aws-sdk/util-user-agent-browser":"3.567.0","@aws-sdk/util-user-agent-node":"3.568.0","@smithy/config-resolver":"^2.2.0","@smithy/core":"^1.4.2","@smithy/fetch-http-handler":"^2.5.0","@smithy/hash-node":"^2.2.0","@smithy/invalid-dependency":"^2.2.0","@smithy/middleware-content-length":"^2.2.0","@smithy/middleware-endpoint":"^2.5.1","@smithy/middleware-retry":"^2.3.1","@smithy/middleware-serde":"^2.3.0","@smithy/middleware-stack":"^2.2.0","@smithy/node-config-provider":"^2.3.0","@smithy/node-http-handler":"^2.5.0","@smithy/protocol-http":"^3.3.0","@smithy/smithy-client":"^2.5.1","@smithy/types":"^2.12.0","@smithy/url-parser":"^2.2.0","@smithy/util-base64":"^2.3.0","@smithy/util-body-length-browser":"^2.2.0","@smithy/util-body-length-node":"^2.3.0","@smithy/util-defaults-mode-browser":"^2.2.1","@smithy/util-defaults-mode-node":"^2.3.1","@smithy/util-endpoints":"^1.2.0","@smithy/util-middleware":"^2.2.0","@smithy/util-retry":"^2.2.0","@smithy/util-utf8":"^2.3.0","tslib":"^2.6.2"},"devDependencies":{"@tsconfig/node16":"16.1.3","@types/node":"^16.18.96","concurrently":"7.0.0","downlevel-dts":"0.10.1","rimraf":"3.0.2","typescript":"~4.9.5"},"engines":{"node":">=16.0.0"},"typesVersions":{"<4.0":{"dist-types/*":["dist-types/ts3.4/*"]}},"files":["dist-*/**"],"author":{"name":"AWS SDK for JavaScript Team","url":"https://aws.amazon.com/javascript/"},"license":"Apache-2.0","browser":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.browser"},"react-native":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.native"},"homepage":"https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-sso-oidc","repository":{"type":"git","url":"https://github.com/aws/aws-sdk-js-v3.git","directory":"clients/client-sso-oidc"}}'); /***/ }), @@ -87432,7 +87833,7 @@ module.exports = JSON.parse('{"name":"@aws-sdk/client-sso-oidc","description":"A /***/ ((module) => { "use strict"; -module.exports = JSON.parse('{"name":"@aws-sdk/client-sso","description":"AWS SDK for JavaScript Sso Client for Node.js, Browser and React Native","version":"3.556.0","scripts":{"build":"concurrently \'yarn:build:cjs\' \'yarn:build:es\' \'yarn:build:types\'","build:cjs":"node ../../scripts/compilation/inline client-sso","build:es":"tsc -p tsconfig.es.json","build:include:deps":"lerna run --scope $npm_package_name --include-dependencies build","build:types":"tsc -p tsconfig.types.json","build:types:downlevel":"downlevel-dts dist-types dist-types/ts3.4","clean":"rimraf ./dist-* && rimraf *.tsbuildinfo","extract:docs":"api-extractor run --local","generate:client":"node ../../scripts/generate-clients/single-service --solo sso"},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist-es/index.js","sideEffects":false,"dependencies":{"@aws-crypto/sha256-browser":"3.0.0","@aws-crypto/sha256-js":"3.0.0","@aws-sdk/core":"3.556.0","@aws-sdk/middleware-host-header":"3.535.0","@aws-sdk/middleware-logger":"3.535.0","@aws-sdk/middleware-recursion-detection":"3.535.0","@aws-sdk/middleware-user-agent":"3.540.0","@aws-sdk/region-config-resolver":"3.535.0","@aws-sdk/types":"3.535.0","@aws-sdk/util-endpoints":"3.540.0","@aws-sdk/util-user-agent-browser":"3.535.0","@aws-sdk/util-user-agent-node":"3.535.0","@smithy/config-resolver":"^2.2.0","@smithy/core":"^1.4.2","@smithy/fetch-http-handler":"^2.5.0","@smithy/hash-node":"^2.2.0","@smithy/invalid-dependency":"^2.2.0","@smithy/middleware-content-length":"^2.2.0","@smithy/middleware-endpoint":"^2.5.1","@smithy/middleware-retry":"^2.3.1","@smithy/middleware-serde":"^2.3.0","@smithy/middleware-stack":"^2.2.0","@smithy/node-config-provider":"^2.3.0","@smithy/node-http-handler":"^2.5.0","@smithy/protocol-http":"^3.3.0","@smithy/smithy-client":"^2.5.1","@smithy/types":"^2.12.0","@smithy/url-parser":"^2.2.0","@smithy/util-base64":"^2.3.0","@smithy/util-body-length-browser":"^2.2.0","@smithy/util-body-length-node":"^2.3.0","@smithy/util-defaults-mode-browser":"^2.2.1","@smithy/util-defaults-mode-node":"^2.3.1","@smithy/util-endpoints":"^1.2.0","@smithy/util-middleware":"^2.2.0","@smithy/util-retry":"^2.2.0","@smithy/util-utf8":"^2.3.0","tslib":"^2.6.2"},"devDependencies":{"@smithy/service-client-documentation-generator":"^2.2.0","@tsconfig/node14":"1.0.3","@types/node":"^14.14.31","concurrently":"7.0.0","downlevel-dts":"0.10.1","rimraf":"3.0.2","typescript":"~4.9.5"},"engines":{"node":">=14.0.0"},"typesVersions":{"<4.0":{"dist-types/*":["dist-types/ts3.4/*"]}},"files":["dist-*/**"],"author":{"name":"AWS SDK for JavaScript Team","url":"https://aws.amazon.com/javascript/"},"license":"Apache-2.0","browser":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.browser"},"react-native":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.native"},"homepage":"https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-sso","repository":{"type":"git","url":"https://github.com/aws/aws-sdk-js-v3.git","directory":"clients/client-sso"}}'); +module.exports = JSON.parse('{"name":"@aws-sdk/client-sso","description":"AWS SDK for JavaScript Sso Client for Node.js, Browser and React Native","version":"3.568.0","scripts":{"build":"concurrently \'yarn:build:cjs\' \'yarn:build:es\' \'yarn:build:types\'","build:cjs":"node ../../scripts/compilation/inline client-sso","build:es":"tsc -p tsconfig.es.json","build:include:deps":"lerna run --scope $npm_package_name --include-dependencies build","build:types":"tsc -p tsconfig.types.json","build:types:downlevel":"downlevel-dts dist-types dist-types/ts3.4","clean":"rimraf ./dist-* && rimraf *.tsbuildinfo","extract:docs":"api-extractor run --local","generate:client":"node ../../scripts/generate-clients/single-service --solo sso"},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist-es/index.js","sideEffects":false,"dependencies":{"@aws-crypto/sha256-browser":"3.0.0","@aws-crypto/sha256-js":"3.0.0","@aws-sdk/core":"3.567.0","@aws-sdk/middleware-host-header":"3.567.0","@aws-sdk/middleware-logger":"3.568.0","@aws-sdk/middleware-recursion-detection":"3.567.0","@aws-sdk/middleware-user-agent":"3.567.0","@aws-sdk/region-config-resolver":"3.567.0","@aws-sdk/types":"3.567.0","@aws-sdk/util-endpoints":"3.567.0","@aws-sdk/util-user-agent-browser":"3.567.0","@aws-sdk/util-user-agent-node":"3.568.0","@smithy/config-resolver":"^2.2.0","@smithy/core":"^1.4.2","@smithy/fetch-http-handler":"^2.5.0","@smithy/hash-node":"^2.2.0","@smithy/invalid-dependency":"^2.2.0","@smithy/middleware-content-length":"^2.2.0","@smithy/middleware-endpoint":"^2.5.1","@smithy/middleware-retry":"^2.3.1","@smithy/middleware-serde":"^2.3.0","@smithy/middleware-stack":"^2.2.0","@smithy/node-config-provider":"^2.3.0","@smithy/node-http-handler":"^2.5.0","@smithy/protocol-http":"^3.3.0","@smithy/smithy-client":"^2.5.1","@smithy/types":"^2.12.0","@smithy/url-parser":"^2.2.0","@smithy/util-base64":"^2.3.0","@smithy/util-body-length-browser":"^2.2.0","@smithy/util-body-length-node":"^2.3.0","@smithy/util-defaults-mode-browser":"^2.2.1","@smithy/util-defaults-mode-node":"^2.3.1","@smithy/util-endpoints":"^1.2.0","@smithy/util-middleware":"^2.2.0","@smithy/util-retry":"^2.2.0","@smithy/util-utf8":"^2.3.0","tslib":"^2.6.2"},"devDependencies":{"@tsconfig/node16":"16.1.3","@types/node":"^16.18.96","concurrently":"7.0.0","downlevel-dts":"0.10.1","rimraf":"3.0.2","typescript":"~4.9.5"},"engines":{"node":">=16.0.0"},"typesVersions":{"<4.0":{"dist-types/*":["dist-types/ts3.4/*"]}},"files":["dist-*/**"],"author":{"name":"AWS SDK for JavaScript Team","url":"https://aws.amazon.com/javascript/"},"license":"Apache-2.0","browser":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.browser"},"react-native":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.native"},"homepage":"https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-sso","repository":{"type":"git","url":"https://github.com/aws/aws-sdk-js-v3.git","directory":"clients/client-sso"}}'); /***/ }), @@ -87440,7 +87841,7 @@ module.exports = JSON.parse('{"name":"@aws-sdk/client-sso","description":"AWS SD /***/ ((module) => { "use strict"; -module.exports = JSON.parse('{"name":"@aws-sdk/client-sts","description":"AWS SDK for JavaScript Sts Client for Node.js, Browser and React Native","version":"3.556.0","scripts":{"build":"concurrently \'yarn:build:cjs\' \'yarn:build:es\' \'yarn:build:types\'","build:cjs":"node ../../scripts/compilation/inline client-sts","build:es":"tsc -p tsconfig.es.json","build:include:deps":"lerna run --scope $npm_package_name --include-dependencies build","build:types":"rimraf ./dist-types tsconfig.types.tsbuildinfo && tsc -p tsconfig.types.json","build:types:downlevel":"downlevel-dts dist-types dist-types/ts3.4","clean":"rimraf ./dist-* && rimraf *.tsbuildinfo","extract:docs":"api-extractor run --local","generate:client":"node ../../scripts/generate-clients/single-service --solo sts","test":"yarn test:unit","test:unit":"jest"},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist-es/index.js","sideEffects":false,"dependencies":{"@aws-crypto/sha256-browser":"3.0.0","@aws-crypto/sha256-js":"3.0.0","@aws-sdk/core":"3.556.0","@aws-sdk/middleware-host-header":"3.535.0","@aws-sdk/middleware-logger":"3.535.0","@aws-sdk/middleware-recursion-detection":"3.535.0","@aws-sdk/middleware-user-agent":"3.540.0","@aws-sdk/region-config-resolver":"3.535.0","@aws-sdk/types":"3.535.0","@aws-sdk/util-endpoints":"3.540.0","@aws-sdk/util-user-agent-browser":"3.535.0","@aws-sdk/util-user-agent-node":"3.535.0","@smithy/config-resolver":"^2.2.0","@smithy/core":"^1.4.2","@smithy/fetch-http-handler":"^2.5.0","@smithy/hash-node":"^2.2.0","@smithy/invalid-dependency":"^2.2.0","@smithy/middleware-content-length":"^2.2.0","@smithy/middleware-endpoint":"^2.5.1","@smithy/middleware-retry":"^2.3.1","@smithy/middleware-serde":"^2.3.0","@smithy/middleware-stack":"^2.2.0","@smithy/node-config-provider":"^2.3.0","@smithy/node-http-handler":"^2.5.0","@smithy/protocol-http":"^3.3.0","@smithy/smithy-client":"^2.5.1","@smithy/types":"^2.12.0","@smithy/url-parser":"^2.2.0","@smithy/util-base64":"^2.3.0","@smithy/util-body-length-browser":"^2.2.0","@smithy/util-body-length-node":"^2.3.0","@smithy/util-defaults-mode-browser":"^2.2.1","@smithy/util-defaults-mode-node":"^2.3.1","@smithy/util-endpoints":"^1.2.0","@smithy/util-middleware":"^2.2.0","@smithy/util-retry":"^2.2.0","@smithy/util-utf8":"^2.3.0","tslib":"^2.6.2"},"devDependencies":{"@smithy/service-client-documentation-generator":"^2.2.0","@tsconfig/node14":"1.0.3","@types/node":"^14.14.31","concurrently":"7.0.0","downlevel-dts":"0.10.1","rimraf":"3.0.2","typescript":"~4.9.5"},"engines":{"node":">=14.0.0"},"typesVersions":{"<4.0":{"dist-types/*":["dist-types/ts3.4/*"]}},"files":["dist-*/**"],"author":{"name":"AWS SDK for JavaScript Team","url":"https://aws.amazon.com/javascript/"},"license":"Apache-2.0","peerDependencies":{"@aws-sdk/credential-provider-node":"^3.556.0"},"browser":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.browser"},"react-native":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.native"},"homepage":"https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-sts","repository":{"type":"git","url":"https://github.com/aws/aws-sdk-js-v3.git","directory":"clients/client-sts"}}'); +module.exports = JSON.parse('{"name":"@aws-sdk/client-sts","description":"AWS SDK for JavaScript Sts Client for Node.js, Browser and React Native","version":"3.569.0","scripts":{"build":"concurrently \'yarn:build:cjs\' \'yarn:build:es\' \'yarn:build:types\'","build:cjs":"node ../../scripts/compilation/inline client-sts","build:es":"tsc -p tsconfig.es.json","build:include:deps":"lerna run --scope $npm_package_name --include-dependencies build","build:types":"rimraf ./dist-types tsconfig.types.tsbuildinfo && tsc -p tsconfig.types.json","build:types:downlevel":"downlevel-dts dist-types dist-types/ts3.4","clean":"rimraf ./dist-* && rimraf *.tsbuildinfo","extract:docs":"api-extractor run --local","generate:client":"node ../../scripts/generate-clients/single-service --solo sts","test":"yarn test:unit","test:unit":"jest"},"main":"./dist-cjs/index.js","types":"./dist-types/index.d.ts","module":"./dist-es/index.js","sideEffects":false,"dependencies":{"@aws-crypto/sha256-browser":"3.0.0","@aws-crypto/sha256-js":"3.0.0","@aws-sdk/client-sso-oidc":"3.569.0","@aws-sdk/core":"3.567.0","@aws-sdk/credential-provider-node":"3.569.0","@aws-sdk/middleware-host-header":"3.567.0","@aws-sdk/middleware-logger":"3.568.0","@aws-sdk/middleware-recursion-detection":"3.567.0","@aws-sdk/middleware-user-agent":"3.567.0","@aws-sdk/region-config-resolver":"3.567.0","@aws-sdk/types":"3.567.0","@aws-sdk/util-endpoints":"3.567.0","@aws-sdk/util-user-agent-browser":"3.567.0","@aws-sdk/util-user-agent-node":"3.568.0","@smithy/config-resolver":"^2.2.0","@smithy/core":"^1.4.2","@smithy/fetch-http-handler":"^2.5.0","@smithy/hash-node":"^2.2.0","@smithy/invalid-dependency":"^2.2.0","@smithy/middleware-content-length":"^2.2.0","@smithy/middleware-endpoint":"^2.5.1","@smithy/middleware-retry":"^2.3.1","@smithy/middleware-serde":"^2.3.0","@smithy/middleware-stack":"^2.2.0","@smithy/node-config-provider":"^2.3.0","@smithy/node-http-handler":"^2.5.0","@smithy/protocol-http":"^3.3.0","@smithy/smithy-client":"^2.5.1","@smithy/types":"^2.12.0","@smithy/url-parser":"^2.2.0","@smithy/util-base64":"^2.3.0","@smithy/util-body-length-browser":"^2.2.0","@smithy/util-body-length-node":"^2.3.0","@smithy/util-defaults-mode-browser":"^2.2.1","@smithy/util-defaults-mode-node":"^2.3.1","@smithy/util-endpoints":"^1.2.0","@smithy/util-middleware":"^2.2.0","@smithy/util-retry":"^2.2.0","@smithy/util-utf8":"^2.3.0","tslib":"^2.6.2"},"devDependencies":{"@tsconfig/node16":"16.1.3","@types/node":"^16.18.96","concurrently":"7.0.0","downlevel-dts":"0.10.1","rimraf":"3.0.2","typescript":"~4.9.5"},"engines":{"node":">=16.0.0"},"typesVersions":{"<4.0":{"dist-types/*":["dist-types/ts3.4/*"]}},"files":["dist-*/**"],"author":{"name":"AWS SDK for JavaScript Team","url":"https://aws.amazon.com/javascript/"},"license":"Apache-2.0","browser":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.browser"},"react-native":{"./dist-es/runtimeConfig":"./dist-es/runtimeConfig.native"},"homepage":"https://github.com/aws/aws-sdk-js-v3/tree/main/clients/client-sts","repository":{"type":"git","url":"https://github.com/aws/aws-sdk-js-v3.git","directory":"clients/client-sts"}}'); /***/ }) diff --git a/dist/index.js.map b/dist/index.js.map index 220e96b..03d52f9 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3oBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtZA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACj9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1hBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7SA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACNA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChEA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClBA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACTA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxNA;AACA;AACA;AACA;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACNA;AACA;AACA;AACA;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5eA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrBA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA0NA;;;;;;;;;ACppXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA8CA;;;;;;;;;ACvhDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA8BA;;;;;;;;;AC//BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAuBA;;;;;;;;;ACrnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkCA;;;;;;;;;ACh7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAiBA;;;;;;;;AC7bA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;AC7RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;AClNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;AC5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;;ACxMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;;;;;;;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;;;;;;;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AASA;;;;;;;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;ACrNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAUA;;;;;;;;ACrZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;;;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;;;;;;;;AC1OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAwBA;;;;;;;;AC5eA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAaA;;;;;;;;ACpbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AASA;;;;;;;;AC7PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAoBA;;;;;;;;;ACxaA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;;;;;;;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;AC7TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;;;;;;;;AC9qBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;;;;;;;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AASA;;;;;;;;AC5OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;;;;;;;;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYA;;;;;;;;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAWA;;;;;;;;AC5kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA4DA;;;;;;;;ACvuCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYA;;;;;;;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACtHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;;;;;;;;ACneA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;;;;;;;;;AC1VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;;;;;;;;;AC1JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClKA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACt0BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChLA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/bA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9CA;AACA;AACA;AACA;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACroFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpaA;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACr0BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/IA;AACA;AACA;AACA;AACA;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1uEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5lBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnmEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACj7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1jBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACroBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrRA;;;;;;;;ACAA;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChoBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChCA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AChCA;AACA;AACA;AACA;AACA;;;;ACJA;AACA;;;;AEDA;AACA;AACA;AACA","sources":[".././lib/action.js",".././lib/assembly.js",".././lib/comment.js",".././lib/diff.js",".././lib/index.js",".././lib/stage-processor.js",".././node_modules/@actions/core/lib/command.js",".././node_modules/@actions/core/lib/core.js",".././node_modules/@actions/core/lib/file-command.js",".././node_modules/@actions/core/lib/oidc-utils.js",".././node_modules/@actions/core/lib/path-utils.js",".././node_modules/@actions/core/lib/summary.js",".././node_modules/@actions/core/lib/utils.js",".././node_modules/@actions/github/lib/context.js",".././node_modules/@actions/github/lib/github.js",".././node_modules/@actions/github/lib/internal/utils.js",".././node_modules/@actions/github/lib/utils.js",".././node_modules/@actions/http-client/lib/auth.js",".././node_modules/@actions/http-client/lib/index.js",".././node_modules/@actions/http-client/lib/proxy.js",".././node_modules/@aws-cdk/aws-service-spec/lib/index.js",".././node_modules/@aws-cdk/cloud-assembly-schema/.warnings.jsii.js",".././node_modules/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/artifact-schema.js",".././node_modules/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/context-queries.js",".././node_modules/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/index.js",".././node_modules/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/metadata-schema.js",".././node_modules/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/schema.js",".././node_modules/@aws-cdk/cloud-assembly-schema/lib/manifest.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/jsonschema/lib/attribute.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/jsonschema/lib/helpers.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/jsonschema/lib/index.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/jsonschema/lib/scan.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/jsonschema/lib/validator.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/lru-cache/index.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/classes/comparator.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/classes/range.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/classes/semver.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/clean.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/cmp.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/coerce.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/compare-build.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/compare-loose.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/compare.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/diff.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/eq.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/gt.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/gte.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/inc.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/lt.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/lte.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/major.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/minor.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/neq.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/parse.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/patch.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/prerelease.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/rcompare.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/rsort.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/satisfies.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/sort.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/valid.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/index.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/internal/constants.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/internal/debug.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/internal/identifiers.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/internal/parse-options.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/internal/re.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/gtr.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/intersects.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/ltr.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/max-satisfying.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/min-satisfying.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/min-version.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/outside.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/simplify.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/subset.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/to-comparators.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/valid.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/yallist/iterator.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/yallist/yallist.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diff-template.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diff/index.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diff/maybe-parsed.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diff/types.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diff/util.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diffable.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/format-table.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/format.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/iam/iam-changes.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/iam/managed-policy.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/iam/statement.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/index.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/network/security-group-changes.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/network/security-group-rule.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/render-intrinsics.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/util.js",".././node_modules/@aws-cdk/service-spec-types/lib/index.js",".././node_modules/@aws-cdk/service-spec-types/lib/types/augmentations.js",".././node_modules/@aws-cdk/service-spec-types/lib/types/database.js",".././node_modules/@aws-cdk/service-spec-types/lib/types/diff.js",".././node_modules/@aws-cdk/service-spec-types/lib/types/metrics.js",".././node_modules/@aws-cdk/service-spec-types/lib/types/resource.js",".././node_modules/@aws-cdk/service-spec-types/lib/util/sorting.js",".././node_modules/@aws-sdk/client-cloudformation/dist-cjs/auth/httpAuthSchemeProvider.js",".././node_modules/@aws-sdk/client-cloudformation/dist-cjs/endpoint/endpointResolver.js",".././node_modules/@aws-sdk/client-cloudformation/dist-cjs/endpoint/ruleset.js",".././node_modules/@aws-sdk/client-cloudformation/dist-cjs/index.js",".././node_modules/@aws-sdk/client-cloudformation/dist-cjs/runtimeConfig.js",".././node_modules/@aws-sdk/client-cloudformation/dist-cjs/runtimeConfig.shared.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/index.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/md5.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/native.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/nil.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/parse.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/regex.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/rng.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/sha1.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/stringify.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/v1.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/v3.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/v35.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/v4.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/v5.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/validate.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/version.js",".././node_modules/@aws-sdk/client-cognito-identity/dist-cjs/auth/httpAuthSchemeProvider.js",".././node_modules/@aws-sdk/client-cognito-identity/dist-cjs/endpoint/endpointResolver.js",".././node_modules/@aws-sdk/client-cognito-identity/dist-cjs/endpoint/ruleset.js",".././node_modules/@aws-sdk/client-cognito-identity/dist-cjs/index.js",".././node_modules/@aws-sdk/client-cognito-identity/dist-cjs/runtimeConfig.js",".././node_modules/@aws-sdk/client-cognito-identity/dist-cjs/runtimeConfig.shared.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/auth/httpAuthSchemeProvider.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/credentialDefaultProvider.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/endpoint/endpointResolver.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/endpoint/ruleset.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/index.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/runtimeConfig.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/runtimeConfig.shared.js",".././node_modules/@aws-sdk/client-sso/dist-cjs/auth/httpAuthSchemeProvider.js",".././node_modules/@aws-sdk/client-sso/dist-cjs/endpoint/endpointResolver.js",".././node_modules/@aws-sdk/client-sso/dist-cjs/endpoint/ruleset.js",".././node_modules/@aws-sdk/client-sso/dist-cjs/index.js",".././node_modules/@aws-sdk/client-sso/dist-cjs/runtimeConfig.js",".././node_modules/@aws-sdk/client-sso/dist-cjs/runtimeConfig.shared.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/STSClient.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/auth/httpAuthExtensionConfiguration.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/auth/httpAuthSchemeProvider.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/credentialDefaultProvider.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/endpoint/EndpointParameters.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/endpoint/endpointResolver.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/endpoint/ruleset.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/index.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/runtimeConfig.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/runtimeConfig.shared.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/runtimeExtensions.js",".././node_modules/@aws-sdk/core/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-cognito-identity/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-env/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/checkUrl.js",".././node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.js",".././node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/requestHelpers.js",".././node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/retry-wrapper.js",".././node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-ini/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-process/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromTokenFile.js",".././node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromWebToken.js",".././node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/loadSts.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromCognitoIdentity.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromCognitoIdentityPool.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromContainerMetadata.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromEnv.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromIni.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromInstanceMetadata.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromNodeProviderChain.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromProcess.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromSSO.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromTemporaryCredentials.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromTokenFile.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromWebToken.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/loadSts.js",".././node_modules/@aws-sdk/middleware-host-header/dist-cjs/index.js",".././node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js",".././node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/index.js",".././node_modules/@aws-sdk/middleware-user-agent/dist-cjs/index.js",".././node_modules/@aws-sdk/region-config-resolver/dist-cjs/index.js",".././node_modules/@aws-sdk/token-providers/dist-cjs/index.js",".././node_modules/@aws-sdk/util-endpoints/dist-cjs/index.js",".././node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js",".././node_modules/@cdklabs/tskb/lib/database.js",".././node_modules/@cdklabs/tskb/lib/entity.js",".././node_modules/@cdklabs/tskb/lib/index.js",".././node_modules/@cdklabs/tskb/lib/invariant.js",".././node_modules/@cdklabs/tskb/lib/relationship.js",".././node_modules/@cdklabs/tskb/lib/result.js",".././node_modules/@cdklabs/tskb/lib/sorted-map.js",".././node_modules/@octokit/auth-token/dist-node/index.js",".././node_modules/@octokit/core/dist-node/index.js",".././node_modules/@octokit/endpoint/dist-node/index.js",".././node_modules/@octokit/graphql/dist-node/index.js",".././node_modules/@octokit/plugin-paginate-rest/dist-node/index.js",".././node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js",".././node_modules/@octokit/request-error/dist-node/index.js",".././node_modules/@octokit/request/dist-node/index.js",".././node_modules/@smithy/config-resolver/dist-cjs/index.js",".././node_modules/@smithy/core/dist-cjs/index.js",".././node_modules/@smithy/credential-provider-imds/dist-cjs/index.js",".././node_modules/@smithy/hash-node/dist-cjs/index.js",".././node_modules/@smithy/is-array-buffer/dist-cjs/index.js",".././node_modules/@smithy/middleware-content-length/dist-cjs/index.js",".././node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.js",".././node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointUrlConfig.js",".././node_modules/@smithy/middleware-endpoint/dist-cjs/index.js",".././node_modules/@smithy/middleware-retry/dist-cjs/index.js",".././node_modules/@smithy/middleware-retry/dist-cjs/isStreamingPayload/isStreamingPayload.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/index.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/md5.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/native.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/nil.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/parse.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/regex.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/rng.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/sha1.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/stringify.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/v1.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/v3.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/v35.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/v4.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/v5.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/validate.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/version.js",".././node_modules/@smithy/middleware-serde/dist-cjs/index.js",".././node_modules/@smithy/middleware-stack/dist-cjs/index.js",".././node_modules/@smithy/node-config-provider/dist-cjs/index.js",".././node_modules/@smithy/node-http-handler/dist-cjs/index.js",".././node_modules/@smithy/property-provider/dist-cjs/index.js",".././node_modules/@smithy/protocol-http/dist-cjs/index.js",".././node_modules/@smithy/querystring-builder/dist-cjs/index.js",".././node_modules/@smithy/querystring-parser/dist-cjs/index.js",".././node_modules/@smithy/service-error-classification/dist-cjs/index.js",".././node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js",".././node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js",".././node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js",".././node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js",".././node_modules/@smithy/shared-ini-file-loader/dist-cjs/slurpFile.js",".././node_modules/@smithy/signature-v4/dist-cjs/index.js",".././node_modules/@smithy/smithy-client/dist-cjs/index.js",".././node_modules/@smithy/types/dist-cjs/index.js",".././node_modules/@smithy/url-parser/dist-cjs/index.js",".././node_modules/@smithy/util-base64/dist-cjs/fromBase64.js",".././node_modules/@smithy/util-base64/dist-cjs/index.js",".././node_modules/@smithy/util-base64/dist-cjs/toBase64.js",".././node_modules/@smithy/util-body-length-node/dist-cjs/index.js",".././node_modules/@smithy/util-buffer-from/dist-cjs/index.js",".././node_modules/@smithy/util-config-provider/dist-cjs/index.js",".././node_modules/@smithy/util-defaults-mode-node/dist-cjs/index.js",".././node_modules/@smithy/util-endpoints/dist-cjs/index.js",".././node_modules/@smithy/util-hex-encoding/dist-cjs/index.js",".././node_modules/@smithy/util-middleware/dist-cjs/index.js",".././node_modules/@smithy/util-retry/dist-cjs/index.js",".././node_modules/@smithy/util-stream/dist-cjs/getAwsChunkedEncodingStream.js",".././node_modules/@smithy/util-stream/dist-cjs/index.js",".././node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.js",".././node_modules/@smithy/util-uri-escape/dist-cjs/index.js",".././node_modules/@smithy/util-utf8/dist-cjs/index.js",".././node_modules/@smithy/util-waiter/dist-cjs/index.js",".././node_modules/ansi-regex/index.js",".././node_modules/ansi-styles/index.js",".././node_modules/astral-regex/index.js",".././node_modules/before-after-hook/index.js",".././node_modules/before-after-hook/lib/add.js",".././node_modules/before-after-hook/lib/register.js",".././node_modules/before-after-hook/lib/remove.js",".././node_modules/chalk/source/index.js",".././node_modules/chalk/source/templates.js",".././node_modules/chalk/source/util.js",".././node_modules/color-convert/conversions.js",".././node_modules/color-convert/index.js",".././node_modules/color-convert/route.js",".././node_modules/color-name/index.js",".././node_modules/deprecation/dist-node/index.js",".././node_modules/diff/lib/convert/dmp.js",".././node_modules/diff/lib/convert/xml.js",".././node_modules/diff/lib/diff/array.js",".././node_modules/diff/lib/diff/base.js",".././node_modules/diff/lib/diff/character.js",".././node_modules/diff/lib/diff/css.js",".././node_modules/diff/lib/diff/json.js",".././node_modules/diff/lib/diff/line.js",".././node_modules/diff/lib/diff/sentence.js",".././node_modules/diff/lib/diff/word.js",".././node_modules/diff/lib/index.js",".././node_modules/diff/lib/patch/apply.js",".././node_modules/diff/lib/patch/create.js",".././node_modules/diff/lib/patch/merge.js",".././node_modules/diff/lib/patch/parse.js",".././node_modules/diff/lib/patch/reverse.js",".././node_modules/diff/lib/util/array.js",".././node_modules/diff/lib/util/distance-iterator.js",".././node_modules/diff/lib/util/params.js",".././node_modules/emoji-regex/index.js",".././node_modules/fast-deep-equal/index.js",".././node_modules/fast-xml-parser/src/fxp.js",".././node_modules/fast-xml-parser/src/util.js",".././node_modules/fast-xml-parser/src/validator.js",".././node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js",".././node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js",".././node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js",".././node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js",".././node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js",".././node_modules/fast-xml-parser/src/xmlparser/XMLParser.js",".././node_modules/fast-xml-parser/src/xmlparser/node2json.js",".././node_modules/fast-xml-parser/src/xmlparser/xmlNode.js",".././node_modules/fs-extra/lib/copy/copy-sync.js",".././node_modules/fs-extra/lib/copy/copy.js",".././node_modules/fs-extra/lib/copy/index.js",".././node_modules/fs-extra/lib/empty/index.js",".././node_modules/fs-extra/lib/ensure/file.js",".././node_modules/fs-extra/lib/ensure/index.js",".././node_modules/fs-extra/lib/ensure/link.js",".././node_modules/fs-extra/lib/ensure/symlink-paths.js",".././node_modules/fs-extra/lib/ensure/symlink-type.js",".././node_modules/fs-extra/lib/ensure/symlink.js",".././node_modules/fs-extra/lib/fs/index.js",".././node_modules/fs-extra/lib/index.js",".././node_modules/fs-extra/lib/json/index.js",".././node_modules/fs-extra/lib/json/jsonfile.js",".././node_modules/fs-extra/lib/json/output-json-sync.js",".././node_modules/fs-extra/lib/json/output-json.js",".././node_modules/fs-extra/lib/mkdirs/index.js",".././node_modules/fs-extra/lib/mkdirs/make-dir.js",".././node_modules/fs-extra/lib/mkdirs/utils.js",".././node_modules/fs-extra/lib/move/index.js",".././node_modules/fs-extra/lib/move/move-sync.js",".././node_modules/fs-extra/lib/move/move.js",".././node_modules/fs-extra/lib/output-file/index.js",".././node_modules/fs-extra/lib/path-exists/index.js",".././node_modules/fs-extra/lib/remove/index.js",".././node_modules/fs-extra/lib/util/stat.js",".././node_modules/fs-extra/lib/util/utimes.js",".././node_modules/graceful-fs/clone.js",".././node_modules/graceful-fs/graceful-fs.js",".././node_modules/graceful-fs/legacy-streams.js",".././node_modules/graceful-fs/polyfills.js",".././node_modules/has-flag/index.js",".././node_modules/is-fullwidth-code-point/index.js",".././node_modules/jsonfile/index.js",".././node_modules/jsonfile/utils.js",".././node_modules/lodash.truncate/index.js",".././node_modules/once/once.js",".././node_modules/slice-ansi/index.js",".././node_modules/string-width/index.js",".././node_modules/strip-ansi/index.js",".././node_modules/strnum/strnum.js",".././node_modules/supports-color/index.js",".././node_modules/table/dist/src/alignSpanningCell.js",".././node_modules/table/dist/src/alignString.js",".././node_modules/table/dist/src/alignTableData.js",".././node_modules/table/dist/src/calculateCellHeight.js",".././node_modules/table/dist/src/calculateMaximumColumnWidths.js",".././node_modules/table/dist/src/calculateOutputColumnWidths.js",".././node_modules/table/dist/src/calculateRowHeights.js",".././node_modules/table/dist/src/calculateSpanningCellWidth.js",".././node_modules/table/dist/src/createStream.js",".././node_modules/table/dist/src/drawBorder.js",".././node_modules/table/dist/src/drawContent.js",".././node_modules/table/dist/src/drawRow.js",".././node_modules/table/dist/src/drawTable.js",".././node_modules/table/dist/src/generated/validators.js",".././node_modules/table/dist/src/getBorderCharacters.js",".././node_modules/table/dist/src/index.js",".././node_modules/table/dist/src/injectHeaderConfig.js",".././node_modules/table/dist/src/makeRangeConfig.js",".././node_modules/table/dist/src/makeStreamConfig.js",".././node_modules/table/dist/src/makeTableConfig.js",".././node_modules/table/dist/src/mapDataUsingRowHeights.js",".././node_modules/table/dist/src/padTableData.js",".././node_modules/table/dist/src/spanningCellManager.js",".././node_modules/table/dist/src/stringifyTableData.js",".././node_modules/table/dist/src/table.js",".././node_modules/table/dist/src/truncateTableData.js",".././node_modules/table/dist/src/types/api.js",".././node_modules/table/dist/src/utils.js",".././node_modules/table/dist/src/validateConfig.js",".././node_modules/table/dist/src/validateSpanningCellConfig.js",".././node_modules/table/dist/src/validateTableData.js",".././node_modules/table/dist/src/wrapCell.js",".././node_modules/table/dist/src/wrapString.js",".././node_modules/table/dist/src/wrapWord.js",".././node_modules/table/node_modules/ajv/dist/runtime/equal.js",".././node_modules/tslib/tslib.js",".././node_modules/tunnel/index.js",".././node_modules/tunnel/lib/tunnel.js",".././node_modules/undici/index.js",".././node_modules/undici/lib/agent.js",".././node_modules/undici/lib/api/abort-signal.js",".././node_modules/undici/lib/api/api-connect.js",".././node_modules/undici/lib/api/api-pipeline.js",".././node_modules/undici/lib/api/api-request.js",".././node_modules/undici/lib/api/api-stream.js",".././node_modules/undici/lib/api/api-upgrade.js",".././node_modules/undici/lib/api/index.js",".././node_modules/undici/lib/api/readable.js",".././node_modules/undici/lib/api/util.js",".././node_modules/undici/lib/balanced-pool.js",".././node_modules/undici/lib/cache/cache.js",".././node_modules/undici/lib/cache/cachestorage.js",".././node_modules/undici/lib/cache/symbols.js",".././node_modules/undici/lib/cache/util.js",".././node_modules/undici/lib/client.js",".././node_modules/undici/lib/compat/dispatcher-weakref.js",".././node_modules/undici/lib/cookies/constants.js",".././node_modules/undici/lib/cookies/index.js",".././node_modules/undici/lib/cookies/parse.js",".././node_modules/undici/lib/cookies/util.js",".././node_modules/undici/lib/core/connect.js",".././node_modules/undici/lib/core/constants.js",".././node_modules/undici/lib/core/errors.js",".././node_modules/undici/lib/core/request.js",".././node_modules/undici/lib/core/symbols.js",".././node_modules/undici/lib/core/util.js",".././node_modules/undici/lib/dispatcher-base.js",".././node_modules/undici/lib/dispatcher.js",".././node_modules/undici/lib/fetch/body.js",".././node_modules/undici/lib/fetch/constants.js",".././node_modules/undici/lib/fetch/dataURL.js",".././node_modules/undici/lib/fetch/file.js",".././node_modules/undici/lib/fetch/formdata.js",".././node_modules/undici/lib/fetch/global.js",".././node_modules/undici/lib/fetch/headers.js",".././node_modules/undici/lib/fetch/index.js",".././node_modules/undici/lib/fetch/request.js",".././node_modules/undici/lib/fetch/response.js",".././node_modules/undici/lib/fetch/symbols.js",".././node_modules/undici/lib/fetch/util.js",".././node_modules/undici/lib/fetch/webidl.js",".././node_modules/undici/lib/fileapi/encoding.js",".././node_modules/undici/lib/fileapi/filereader.js",".././node_modules/undici/lib/fileapi/progressevent.js",".././node_modules/undici/lib/fileapi/symbols.js",".././node_modules/undici/lib/fileapi/util.js",".././node_modules/undici/lib/global.js",".././node_modules/undici/lib/handler/DecoratorHandler.js",".././node_modules/undici/lib/handler/RedirectHandler.js",".././node_modules/undici/lib/handler/RetryHandler.js",".././node_modules/undici/lib/interceptor/redirectInterceptor.js",".././node_modules/undici/lib/llhttp/constants.js",".././node_modules/undici/lib/llhttp/llhttp-wasm.js",".././node_modules/undici/lib/llhttp/llhttp_simd-wasm.js",".././node_modules/undici/lib/llhttp/utils.js",".././node_modules/undici/lib/mock/mock-agent.js",".././node_modules/undici/lib/mock/mock-client.js",".././node_modules/undici/lib/mock/mock-errors.js",".././node_modules/undici/lib/mock/mock-interceptor.js",".././node_modules/undici/lib/mock/mock-pool.js",".././node_modules/undici/lib/mock/mock-symbols.js",".././node_modules/undici/lib/mock/mock-utils.js",".././node_modules/undici/lib/mock/pending-interceptors-formatter.js",".././node_modules/undici/lib/mock/pluralizer.js",".././node_modules/undici/lib/node/fixed-queue.js",".././node_modules/undici/lib/pool-base.js",".././node_modules/undici/lib/pool-stats.js",".././node_modules/undici/lib/pool.js",".././node_modules/undici/lib/proxy-agent.js",".././node_modules/undici/lib/timers.js",".././node_modules/undici/lib/websocket/connection.js",".././node_modules/undici/lib/websocket/constants.js",".././node_modules/undici/lib/websocket/events.js",".././node_modules/undici/lib/websocket/frame.js",".././node_modules/undici/lib/websocket/receiver.js",".././node_modules/undici/lib/websocket/symbols.js",".././node_modules/undici/lib/websocket/util.js",".././node_modules/undici/lib/websocket/websocket.js",".././node_modules/universal-user-agent/dist-node/index.js",".././node_modules/universalify/index.js",".././node_modules/uuid/dist/index.js",".././node_modules/uuid/dist/md5.js",".././node_modules/uuid/dist/nil.js",".././node_modules/uuid/dist/parse.js",".././node_modules/uuid/dist/regex.js",".././node_modules/uuid/dist/rng.js",".././node_modules/uuid/dist/sha1.js",".././node_modules/uuid/dist/stringify.js",".././node_modules/uuid/dist/v1.js",".././node_modules/uuid/dist/v3.js",".././node_modules/uuid/dist/v35.js",".././node_modules/uuid/dist/v4.js",".././node_modules/uuid/dist/v5.js",".././node_modules/uuid/dist/validate.js",".././node_modules/uuid/dist/version.js",".././node_modules/wrappy/wrappy.js","../external node-commonjs \"assert\"","../external node-commonjs \"async_hooks\"","../external node-commonjs \"buffer\"","../external node-commonjs \"child_process\"","../external node-commonjs \"console\"","../external node-commonjs \"constants\"","../external node-commonjs \"crypto\"","../external node-commonjs \"diagnostics_channel\"","../external node-commonjs \"events\"","../external node-commonjs \"fs\"","../external node-commonjs \"fs/promises\"","../external node-commonjs \"http\"","../external node-commonjs \"http2\"","../external node-commonjs \"https\"","../external node-commonjs \"net\"","../external node-commonjs \"node:events\"","../external node-commonjs \"node:fs\"","../external node-commonjs \"node:path\"","../external node-commonjs \"node:stream\"","../external node-commonjs \"node:util\"","../external node-commonjs \"node:zlib\"","../external node-commonjs \"os\"","../external node-commonjs \"path\"","../external node-commonjs \"perf_hooks\"","../external node-commonjs \"process\"","../external node-commonjs \"querystring\"","../external node-commonjs \"stream\"","../external node-commonjs \"stream/web\"","../external node-commonjs \"string_decoder\"","../external node-commonjs \"tls\"","../external node-commonjs \"tty\"","../external node-commonjs \"url\"","../external node-commonjs \"util\"","../external node-commonjs \"util/types\"","../external node-commonjs \"worker_threads\"","../external node-commonjs \"zlib\"",".././node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js",".././node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js",".././node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js",".././node_modules/@fastify/busboy/deps/streamsearch/sbmh.js",".././node_modules/@fastify/busboy/lib/main.js",".././node_modules/@fastify/busboy/lib/types/multipart.js",".././node_modules/@fastify/busboy/lib/types/urlencoded.js",".././node_modules/@fastify/busboy/lib/utils/Decoder.js",".././node_modules/@fastify/busboy/lib/utils/basename.js",".././node_modules/@fastify/busboy/lib/utils/decodeText.js",".././node_modules/@fastify/busboy/lib/utils/getLimit.js",".././node_modules/@fastify/busboy/lib/utils/parseParams.js","../webpack/bootstrap","../webpack/runtime/node module decorator","../webpack/runtime/compat","../webpack/before-startup","../webpack/startup","../webpack/after-startup"],"sourcesContent":["\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.run = void 0;\nconst core_1 = require(\"@actions/core\");\nconst github = __importStar(require(\"@actions/github\"));\nconst assembly_1 = require(\"./assembly\");\nconst comment_1 = require(\"./comment\");\nconst stage_processor_1 = require(\"./stage-processor\");\nasync function run() {\n var _a;\n const inputs = {\n allowedDestroyTypes: (0, core_1.getInput)('allowedDestroyTypes').split(','),\n failOnDestructiveChanges: (0, core_1.getBooleanInput)('failOnDestructiveChanges'),\n githubToken: (0, core_1.getInput)('githubToken'),\n noDiffForStages: (0, core_1.getInput)('noDiffForStages').split(','),\n noFailOnDestructiveChanges: (0, core_1.getInput)('noFailOnDestructiveChanges').split(','),\n cdkOutDir: (_a = (0, core_1.getInput)('cdkOutDir')) !== null && _a !== void 0 ? _a : 'cdk.out',\n };\n const octokit = github.getOctokit(inputs.githubToken);\n const context = github.context;\n try {\n const assembly = assembly_1.AssemblyManifestReader.fromPath(inputs.cdkOutDir);\n let stages = assembly.stages;\n if (!stages.length) {\n stages = [{\n name: 'DefaultStage',\n stacks: assembly.stacks,\n }];\n }\n const comments = new comment_1.Comments(octokit, context);\n const processor = new stage_processor_1.StageProcessor(stages, inputs.allowedDestroyTypes);\n try {\n await processor.processStages(inputs.noFailOnDestructiveChanges);\n }\n catch (e) {\n console.error('Error running process stages: ', e);\n throw e;\n }\n try {\n await processor.commentStages(comments);\n }\n catch (e) {\n console.error('Error commenting stages: ', e);\n throw e;\n }\n if (processor.hasDestructiveChanges && inputs.failOnDestructiveChanges) {\n throw new Error('There are destructive changes! See PR comment for details.');\n }\n }\n catch (e) {\n console.error('Error performing diff: ', e);\n throw e;\n }\n return;\n}\nexports.run = run;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHdDQUEwRDtBQUMxRCx3REFBMEM7QUFDMUMseUNBQW9EO0FBQ3BELHVDQUFxQztBQUVyQyx1REFBbUQ7QUFFNUMsS0FBSyxVQUFVLEdBQUc7O0lBQ3ZCLE1BQU0sTUFBTSxHQUFXO1FBQ3JCLG1CQUFtQixFQUFFLElBQUEsZUFBUSxFQUFDLHFCQUFxQixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUMvRCx3QkFBd0IsRUFBRSxJQUFBLHNCQUFlLEVBQUMsMEJBQTBCLENBQUM7UUFDckUsV0FBVyxFQUFFLElBQUEsZUFBUSxFQUFDLGFBQWEsQ0FBQztRQUNwQyxlQUFlLEVBQUUsSUFBQSxlQUFRLEVBQUMsaUJBQWlCLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQ3ZELDBCQUEwQixFQUFFLElBQUEsZUFBUSxFQUFDLDRCQUE0QixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUM3RSxTQUFTLEVBQUUsTUFBQSxJQUFBLGVBQVEsRUFBQyxXQUFXLENBQUMsbUNBQUksU0FBUztLQUM5QyxDQUFDO0lBQ0YsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUMvQixJQUFJLENBQUM7UUFDSCxNQUFNLFFBQVEsR0FBRyxpQ0FBc0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25FLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQixNQUFNLEdBQUcsQ0FBQztvQkFDUixJQUFJLEVBQUUsY0FBYztvQkFDcEIsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNO2lCQUN4QixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxrQkFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRCxNQUFNLFNBQVMsR0FBRyxJQUFJLGdDQUFjLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQztZQUNILE1BQU0sU0FBUyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25ELE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE1BQU0sU0FBUyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUxQyxDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQixFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzlDLE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztRQUVELElBQUksU0FBUyxDQUFDLHFCQUFxQixJQUFJLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ3ZFLE1BQU0sSUFBSSxLQUFLLENBQUMsNERBQTRELENBQUMsQ0FBQztRQUNoRixDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7UUFDaEIsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsQ0FBQztJQUNWLENBQUM7SUFDRCxPQUFPO0FBQ1QsQ0FBQztBQTdDRCxrQkE2Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRJbnB1dCwgZ2V0Qm9vbGVhbklucHV0IH0gZnJvbSAnQGFjdGlvbnMvY29yZSc7XG5pbXBvcnQgKiBhcyBnaXRodWIgZnJvbSAnQGFjdGlvbnMvZ2l0aHViJztcbmltcG9ydCB7IEFzc2VtYmx5TWFuaWZlc3RSZWFkZXIgfSBmcm9tICcuL2Fzc2VtYmx5JztcbmltcG9ydCB7IENvbW1lbnRzIH0gZnJvbSAnLi9jb21tZW50JztcbmltcG9ydCB7IElucHV0cyB9IGZyb20gJy4vaW5wdXRzJztcbmltcG9ydCB7IFN0YWdlUHJvY2Vzc29yIH0gZnJvbSAnLi9zdGFnZS1wcm9jZXNzb3InO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuKCkge1xuICBjb25zdCBpbnB1dHM6IElucHV0cyA9IHtcbiAgICBhbGxvd2VkRGVzdHJveVR5cGVzOiBnZXRJbnB1dCgnYWxsb3dlZERlc3Ryb3lUeXBlcycpLnNwbGl0KCcsJyksXG4gICAgZmFpbE9uRGVzdHJ1Y3RpdmVDaGFuZ2VzOiBnZXRCb29sZWFuSW5wdXQoJ2ZhaWxPbkRlc3RydWN0aXZlQ2hhbmdlcycpLFxuICAgIGdpdGh1YlRva2VuOiBnZXRJbnB1dCgnZ2l0aHViVG9rZW4nKSxcbiAgICBub0RpZmZGb3JTdGFnZXM6IGdldElucHV0KCdub0RpZmZGb3JTdGFnZXMnKS5zcGxpdCgnLCcpLFxuICAgIG5vRmFpbE9uRGVzdHJ1Y3RpdmVDaGFuZ2VzOiBnZXRJbnB1dCgnbm9GYWlsT25EZXN0cnVjdGl2ZUNoYW5nZXMnKS5zcGxpdCgnLCcpLFxuICAgIGNka091dERpcjogZ2V0SW5wdXQoJ2Nka091dERpcicpID8/ICdjZGsub3V0JyxcbiAgfTtcbiAgY29uc3Qgb2N0b2tpdCA9IGdpdGh1Yi5nZXRPY3Rva2l0KGlucHV0cy5naXRodWJUb2tlbik7XG4gIGNvbnN0IGNvbnRleHQgPSBnaXRodWIuY29udGV4dDtcbiAgdHJ5IHtcbiAgICBjb25zdCBhc3NlbWJseSA9IEFzc2VtYmx5TWFuaWZlc3RSZWFkZXIuZnJvbVBhdGgoaW5wdXRzLmNka091dERpcik7XG4gICAgbGV0IHN0YWdlcyA9IGFzc2VtYmx5LnN0YWdlcztcbiAgICBpZiAoIXN0YWdlcy5sZW5ndGgpIHtcbiAgICAgIHN0YWdlcyA9IFt7XG4gICAgICAgIG5hbWU6ICdEZWZhdWx0U3RhZ2UnLFxuICAgICAgICBzdGFja3M6IGFzc2VtYmx5LnN0YWNrcyxcbiAgICAgIH1dO1xuICAgIH1cbiAgICBjb25zdCBjb21tZW50cyA9IG5ldyBDb21tZW50cyhvY3Rva2l0LCBjb250ZXh0KTtcbiAgICBjb25zdCBwcm9jZXNzb3IgPSBuZXcgU3RhZ2VQcm9jZXNzb3Ioc3RhZ2VzLCBpbnB1dHMuYWxsb3dlZERlc3Ryb3lUeXBlcyk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHByb2Nlc3Nvci5wcm9jZXNzU3RhZ2VzKGlucHV0cy5ub0ZhaWxPbkRlc3RydWN0aXZlQ2hhbmdlcyk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBydW5uaW5nIHByb2Nlc3Mgc3RhZ2VzOiAnLCBlKTtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHByb2Nlc3Nvci5jb21tZW50U3RhZ2VzKGNvbW1lbnRzKTtcblxuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY29tbWVudGluZyBzdGFnZXM6ICcsIGUpO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzc29yLmhhc0Rlc3RydWN0aXZlQ2hhbmdlcyAmJiBpbnB1dHMuZmFpbE9uRGVzdHJ1Y3RpdmVDaGFuZ2VzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZXJlIGFyZSBkZXN0cnVjdGl2ZSBjaGFuZ2VzISBTZWUgUFIgY29tbWVudCBmb3IgZGV0YWlscy4nKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBlcmZvcm1pbmcgZGlmZjogJywgZSk7XG4gICAgdGhyb3cgZTtcbiAgfVxuICByZXR1cm47XG59XG5cbiJdfQ==","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AssemblyManifestReader = void 0;\nconst path = __importStar(require(\"path\"));\nconst cloud_assembly_1 = require(\"@aws-cdk/cloud-assembly-schema/lib/cloud-assembly\");\nconst manifest_1 = require(\"@aws-cdk/cloud-assembly-schema/lib/manifest\");\nconst fs = __importStar(require(\"fs-extra\"));\n/**\n * Reads a Cloud Assembly manifest\n */\nclass AssemblyManifestReader {\n /**\n * Reads a Cloud Assembly manifest from a file\n */\n static fromFile(fileName) {\n try {\n const obj = manifest_1.Manifest.loadAssemblyManifest(fileName);\n return new AssemblyManifestReader(path.dirname(fileName), obj);\n }\n catch (e) {\n throw new Error(`Cannot read integ manifest '${fileName}': ${e.message}`);\n }\n }\n /**\n * Reads a Cloud Assembly manifest from a file or a directory\n * If the given filePath is a directory then it will look for\n * a file within the directory with the DEFAULT_FILENAME\n */\n static fromPath(filePath) {\n let st;\n try {\n st = fs.statSync(filePath);\n }\n catch (e) {\n throw new Error(`Cannot read integ manifest at '${filePath}': ${e.message}`);\n }\n if (st.isDirectory()) {\n return AssemblyManifestReader.fromFile(path.join(filePath, AssemblyManifestReader.DEFAULT_FILENAME));\n }\n return AssemblyManifestReader.fromFile(filePath);\n }\n constructor(directory, manifest) {\n this.manifest = manifest;\n this.directory = directory;\n }\n /**\n * Get the stacks from the manifest\n * returns a map of artifactId to CloudFormation template\n */\n get stacks() {\n var _a, _b, _c;\n const stacks = [];\n for (const [artifactId, artifact] of Object.entries((_a = this.manifest.artifacts) !== null && _a !== void 0 ? _a : {})) {\n if (artifact.type !== cloud_assembly_1.ArtifactType.AWS_CLOUDFORMATION_STACK) {\n continue;\n }\n const props = artifact.properties;\n const template = fs.readJSONSync(path.resolve(this.directory, props.templateFile));\n const env = (_b = artifact.environment) === null || _b === void 0 ? void 0 : _b.split(/\\/\\/?/);\n const validEnv = env && env.length === 3;\n let region;\n let account;\n if (validEnv) {\n region = env[2];\n account = env[1];\n }\n if (region === 'unknown-region') {\n region = undefined;\n }\n if (account === 'unknown-account') {\n account = undefined;\n }\n stacks.push({\n content: template,\n region,\n account,\n lookupRole: props.lookupRole,\n name: (_c = props.stackName) !== null && _c !== void 0 ? _c : artifactId,\n });\n }\n return stacks;\n }\n /**\n * Get the stages in the assembly\n */\n get stages() {\n var _a, _b;\n const stages = [];\n for (const [artifactId, artifact] of Object.entries((_a = this.manifest.artifacts) !== null && _a !== void 0 ? _a : {})) {\n if (artifact.type !== cloud_assembly_1.ArtifactType.NESTED_CLOUD_ASSEMBLY) {\n continue;\n }\n const props = artifact.properties;\n const nestedAssembly = AssemblyManifestReader.fromPath(path.join(this.directory, props.directoryName));\n stages.push({\n name: (_b = props.displayName) !== null && _b !== void 0 ? _b : artifactId,\n stacks: nestedAssembly.stacks,\n });\n }\n return stages;\n }\n}\nexports.AssemblyManifestReader = AssemblyManifestReader;\nAssemblyManifestReader.DEFAULT_FILENAME = 'manifest.json';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZW1ibHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXNzZW1ibHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0Isc0ZBQW1MO0FBQ25MLDBFQUF1RTtBQUN2RSw2Q0FBK0I7QUFxRC9COztHQUVHO0FBQ0gsTUFBYSxzQkFBc0I7SUFHakM7O09BRUc7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQWdCO1FBQ3JDLElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxHQUFHLG1CQUFRLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEQsT0FBTyxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFakUsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsUUFBUSxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBZ0I7UUFDckMsSUFBSSxFQUFFLENBQUM7UUFDUCxJQUFJLENBQUM7WUFDSCxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxRQUFRLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUNELElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDckIsT0FBTyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsc0JBQXNCLENB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Q0wsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7O0FBN0ZILHdEQThGQztBQTdGd0IsdUNBQWdCLEdBQUcsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IEFzc2VtYmx5TWFuaWZlc3QsIEFydGlmYWN0VHlwZSwgQXdzQ2xvdWRGb3JtYXRpb25TdGFja1Byb3BlcnRpZXMsIE5lc3RlZENsb3VkQXNzZW1ibHlQcm9wZXJ0aWVzLCBCb290c3RyYXBSb2xlIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hL2xpYi9jbG91ZC1hc3NlbWJseSc7XG5pbXBvcnQgeyBNYW5pZmVzdCB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYS9saWIvbWFuaWZlc3QnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuXG4vKipcbiAqIEluZm9ybWF0aW9uIG9uIHRoZSBDREsgU3RhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFnZUluZm8ge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHN0YWdlXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFja3Mgd2l0aGluIHRoZSBzdGFnZVxuICAgKi9cbiAgc3RhY2tzOiBTdGFja0luZm9bXTtcbn1cblxuLyoqXG4gKiBJbmZvcm1hdGlvbiBvbiBhIHN0YWNrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tJbmZvIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzdGFja1xuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVnaW9uIHRoZSBzdGFjayBpcyBkZXBsb3llZCB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVua25vd24tcmVnaW9uXG4gICAqL1xuICByZWdpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhY2NvdW50IHRoZSBzdGFjayBpcyBkZXBsb3llZCB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVua25vd24tYWNjb3VudFxuICAgKi9cbiAgYWNjb3VudD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxvb2t1cCByb2xlIHRvIHVzZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGxvb2t1cCByb2xlXG4gICAqL1xuICBsb29rdXBSb2xlPzogQm9vdHN0cmFwUm9sZTtcblxuICAvKipcbiAgICogVGhlIEpTT04gY29udGVudCBvZiB0aGUgc3RhY2tcbiAgICovXG4gIGNvbnRlbnQ6IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbi8qKlxuICogUmVhZHMgYSBDbG91ZCBBc3NlbWJseSBtYW5pZmVzdFxuICovXG5leHBvcnQgY2xhc3MgQXNzZW1ibHlNYW5pZmVzdFJlYWRlciB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9GSUxFTkFNRSA9ICdtYW5pZmVzdC5qc29uJztcblxuICAvKipcbiAgICogUmVhZHMgYSBDbG91ZCBBc3NlbWJseSBtYW5pZmVzdCBmcm9tIGEgZmlsZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tRmlsZShmaWxlTmFtZTogc3RyaW5nKTogQXNzZW1ibHlNYW5pZmVzdFJlYWRlciB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG9iaiA9IE1hbmlmZXN0LmxvYWRBc3NlbWJseU1hbmlmZXN0KGZpbGVOYW1lKTtcbiAgICAgIHJldHVybiBuZXcgQXNzZW1ibHlNYW5pZmVzdFJlYWRlcihwYXRoLmRpcm5hbWUoZmlsZU5hbWUpLCBvYmopO1xuXG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZWFkIGludGVnIG1hbmlmZXN0ICcke2ZpbGVOYW1lfSc6ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyBhIENsb3VkIEFzc2VtYmx5IG1hbmlmZXN0IGZyb20gYSBmaWxlIG9yIGEgZGlyZWN0b3J5XG4gICAqIElmIHRoZSBnaXZlbiBmaWxlUGF0aCBpcyBhIGRpcmVjdG9yeSB0aGVuIGl0IHdpbGwgbG9vayBmb3JcbiAgICogYSBmaWxlIHdpdGhpbiB0aGUgZGlyZWN0b3J5IHdpdGggdGhlIERFRkFVTFRfRklMRU5BTUVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVBhdGgoZmlsZVBhdGg6IHN0cmluZyk6IEFzc2VtYmx5TWFuaWZlc3RSZWFkZXIge1xuICAgIGxldCBzdDtcbiAgICB0cnkge1xuICAgICAgc3QgPSBmcy5zdGF0U3luYyhmaWxlUGF0aCk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZWFkIGludGVnIG1hbmlmZXN0IGF0ICcke2ZpbGVQYXRofSc6ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgICBpZiAoc3QuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgcmV0dXJuIEFzc2VtYmx5TWFuaWZlc3RSZWFkZXIuZnJvbUZpbGUocGF0aC5qb2luKGZpbGVQYXRoLCBBc3NlbWJseU1hbmlmZXN0UmVhZGVyLkRFRkFVTFRfRklMRU5BTUUpKTtcbiAgICB9XG4gICAgcmV0dXJuIEFzc2VtYmx5TWFuaWZlc3RSZWFkZXIuZnJvbUZpbGUoZmlsZVBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIG1hbmlmZXN0IHdhcyBmb3VuZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRpcmVjdG9yeTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGRpcmVjdG9yeTogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IG1hbmlmZXN0OiBBc3NlbWJseU1hbmlmZXN0KSB7XG4gICAgdGhpcy5kaXJlY3RvcnkgPSBkaXJlY3Rvcnk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzdGFja3MgZnJvbSB0aGUgbWFuaWZlc3RcbiAgICogcmV0dXJucyBhIG1hcCBvZiBhcnRpZmFjdElkIHRvIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IHN0YWNrcygpOiBTdGFja0luZm9bXSB7XG4gICAgY29uc3Qgc3RhY2tzOiBTdGFja0luZm9bXSA9IFtdO1xuICAgIGZvciAoY29uc3QgW2FydGlmYWN0SWQsIGFydGlmYWN0XSBvZiBPYmplY3QuZW50cmllcyh0aGlzLm1hbmlmZXN0LmFydGlmYWN0cyA/PyB7fSkpIHtcbiAgICAgIGlmIChhcnRpZmFjdC50eXBlICE9PSBBcnRpZmFjdFR5cGUuQVdTX0NMT1VERk9STUFUSU9OX1NUQUNLKSB7IGNvbnRpbnVlOyB9XG4gICAgICBjb25zdCBwcm9wcyA9IGFydGlmYWN0LnByb3BlcnRpZXMgYXMgQXdzQ2xvdWRGb3JtYXRpb25TdGFja1Byb3BlcnRpZXM7XG4gICAgICBjb25zdCB0ZW1wbGF0ZSA9IGZzLnJlYWRKU09OU3luYyhwYXRoLnJlc29sdmUodGhpcy5kaXJlY3RvcnksIHByb3BzLnRlbXBsYXRlRmlsZSkpO1xuICAgICAgY29uc3QgZW52ID0gYXJ0aWZhY3QuZW52aXJvbm1lbnQ/LnNwbGl0KC9cXC9cXC8/Lyk7XG4gICAgICBjb25zdCB2YWxpZEVudiA9IGVudiAmJiBlbnYubGVuZ3RoID09PSAzO1xuICAgICAgbGV0IHJlZ2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgbGV0IGFjY291bnQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgIGlmICh2YWxpZEVudikge1xuICAgICAgICByZWdpb24gPSBlbnZbMl07XG4gICAgICAgIGFjY291bnQgPSBlbnZbMV07XG4gICAgICB9XG4gICAgICBpZiAocmVnaW9uID09PSAndW5rbm93bi1yZWdpb24nKSB7XG4gICAgICAgIHJlZ2lvbiA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGlmIChhY2NvdW50ID09PSAndW5rbm93bi1hY2NvdW50Jykge1xuICAgICAgICBhY2NvdW50ID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgc3RhY2tzLnB1c2goe1xuICAgICAgICBjb250ZW50OiB0ZW1wbGF0ZSxcbiAgICAgICAgcmVnaW9uLFxuICAgICAgICBhY2NvdW50LFxuICAgICAgICBsb29rdXBSb2xlOiBwcm9wcy5sb29rdXBSb2xlLFxuICAgICAgICBuYW1lOiBwcm9wcy5zdGFja05hbWUgPz8gYXJ0aWZhY3RJZCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc3RhY2tzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc3RhZ2VzIGluIHRoZSBhc3NlbWJseVxuICAgKi9cbiAgcHVibGljIGdldCBzdGFnZXMoKTogU3RhZ2VJbmZvW10ge1xuICAgIGNvbnN0IHN0YWdlczogU3RhZ2VJbmZvW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IFthcnRpZmFjdElkLCBhcnRpZmFjdF0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5tYW5pZmVzdC5hcnRpZmFjdHMgPz8ge30pKSB7XG4gICAgICBpZiAoYXJ0aWZhY3QudHlwZSAhPT0gQXJ0aWZhY3RUeXBlLk5FU1RFRF9DTE9VRF9BU1NFTUJMWSkgeyBjb250aW51ZTsgfVxuICAgICAgY29uc3QgcHJvcHMgPSBhcnRpZmFjdC5wcm9wZXJ0aWVzIGFzIE5lc3RlZENsb3VkQXNzZW1ibHlQcm9wZXJ0aWVzO1xuICAgICAgY29uc3QgbmVzdGVkQXNzZW1ibHkgPSBBc3NlbWJseU1hbmlmZXN0UmVhZGVyLmZyb21QYXRoKHBhdGguam9pbih0aGlzLmRpcmVjdG9yeSwgcHJvcHMuZGlyZWN0b3J5TmFtZSkpO1xuICAgICAgc3RhZ2VzLnB1c2goe1xuICAgICAgICBuYW1lOiBwcm9wcy5kaXNwbGF5TmFtZSA/PyBhcnRpZmFjdElkLFxuICAgICAgICBzdGFja3M6IG5lc3RlZEFzc2VtYmx5LnN0YWNrcyxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc3RhZ2VzO1xuICB9XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Comments = void 0;\n/**\n * Comments controls interacting with GitHub to make comments\n */\nclass Comments {\n constructor(octokit, context) {\n var _a;\n this.octokit = octokit;\n this.context = context;\n const payload = context.payload;\n this.commitSha = payload.pull_request.head.sha;\n if (!payload.pull_request.number) {\n throw new Error('Cannot find PR number, is this from a pull request?');\n }\n this.issueNumber = (_a = this.context.payload.pull_request) === null || _a === void 0 ? void 0 : _a.number;\n }\n /**\n * Find the previous comment with the given hash\n *\n * @param hash the unique hash identifying the stage comment to look for\n * @returns the PR comment id or undefined if there is no previous comment\n */\n async findPrevious(hash) {\n var _a;\n const comments = await this.octokit.rest.issues.listComments({\n ...this.context.repo,\n issue_number: this.issueNumber,\n });\n return (_a = comments.data.find(comment => { var _a; return (_a = comment.body) === null || _a === void 0 ? void 0 : _a.includes(hash); })) === null || _a === void 0 ? void 0 : _a.id;\n }\n /**\n * Update an existing comment\n *\n * @param hash the unique hash identifying the stage comment to look for\n * @param content the content of the comment\n * @param commentId the id of the comment to update\n */\n async updateComment(commentId, hash, content) {\n await this.octokit.rest.issues.updateComment({\n ...this.context.repo,\n body: [\n ``,\n ...content,\n '',\n `_Generated for commit ${this.commitSha}_`,\n ].join('\\n'),\n comment_id: commentId,\n });\n }\n /**\n * Create a new comment\n *\n * @param hash the unique hash identifying the stage comment to look for\n * @param content the content of the comment\n */\n async createComment(hash, content) {\n await this.octokit.rest.issues.createComment({\n ...this.context.repo,\n body: [\n ``,\n ...content,\n '',\n `_Generated for commit ${this.commitSha}_`,\n ].join('\\n'),\n issue_number: this.issueNumber,\n });\n }\n}\nexports.Comments = Comments;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBOztHQUVHO0FBQ0gsTUFBYSxRQUFRO0lBR25CLFlBQ21CLE9BQW9DLEVBQ3BDLE9BQWdCOztRQURoQixZQUFPLEdBQVAsT0FBTyxDQUE2QjtRQUNwQyxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBRWpDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUEyQixDQUFDO1FBQ3BELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksMENBQUUsTUFBTyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBWTs7UUFDcEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO1lBQzNELEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQ3BCLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVztTQUMvQixDQUFDLENBQUM7UUFDSCxPQUFPLE1BQUEsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsV0FBQyxPQUFBLE1BQUEsT0FBTyxDQUFDLElBQUksMENBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBLEVBQUEsQ0FBQywwQ0FBRSxFQUFFLENBQUM7SUFDekUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBaUIsRUFBRSxJQUFZLEVBQUUsT0FBaUI7UUFDM0UsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO1lBQzNDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQ3BCLElBQUksRUFBRTtnQkFDSixrQ0FBa0MsSUFBSSxNQUFNO2dCQUM1QyxHQUFHLE9BQU87Z0JBQ1YsRUFBRTtnQkFDRix5QkFBeUIsSUFBSSxDQUFDLFNBQVMsR0FBRzthQUMzQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDWixVQUFVLEVBQUUsU0FBUztTQUN0QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQVksRUFBRSxPQUFpQjtRQUN4RCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7WUFDM0MsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7WUFDcEIsSUFBSSxFQUFFO2dCQUNKLGtDQUFrQyxJQUFJLE1BQU07Z0JBQzVDLEdBQUcsT0FBTztnQkFDVixFQUFFO2dCQUNGLHlCQUF5QixJQUFJLENBQUMsU0FBUyxHQUFHO2FBQzNDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNaLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVztTQUMvQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFuRUQsNEJBbUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gJ0BhY3Rpb25zL2dpdGh1Yi9saWIvY29udGV4dCc7XG5pbXBvcnQgeyBHaXRIdWIgfSBmcm9tICdAYWN0aW9ucy9naXRodWIvbGliL3V0aWxzJztcbmltcG9ydCB7IFB1bGxSZXF1ZXN0RXZlbnQgfSBmcm9tICdAb2N0b2tpdC93ZWJob29rcy1kZWZpbml0aW9ucy9zY2hlbWEnO1xuXG4vKipcbiAqIENvbW1lbnRzIGNvbnRyb2xzIGludGVyYWN0aW5nIHdpdGggR2l0SHViIHRvIG1ha2UgY29tbWVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIENvbW1lbnRzIHtcbiAgcHJpdmF0ZSByZWFkb25seSBpc3N1ZU51bWJlcjogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbW1pdFNoYTogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9jdG9raXQ6IEluc3RhbmNlVHlwZTx0eXBlb2YgR2l0SHViPixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRleHQ6IENvbnRleHQsXG4gICkge1xuICAgIGNvbnN0IHBheWxvYWQgPSBjb250ZXh0LnBheWxvYWQgYXMgUHVsbFJlcXVlc3RFdmVudDtcbiAgICB0aGlzLmNvbW1pdFNoYSA9IHBheWxvYWQucHVsbF9yZXF1ZXN0LmhlYWQuc2hhO1xuICAgIGlmICghcGF5bG9hZC5wdWxsX3JlcXVlc3QubnVtYmVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmaW5kIFBSIG51bWJlciwgaXMgdGhpcyBmcm9tIGEgcHVsbCByZXF1ZXN0PycpO1xuICAgIH1cbiAgICB0aGlzLmlzc3VlTnVtYmVyID0gdGhpcy5jb250ZXh0LnBheWxvYWQucHVsbF9yZXF1ZXN0Py5udW1iZXIhO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgdGhlIHByZXZpb3VzIGNvbW1lbnQgd2l0aCB0aGUgZ2l2ZW4gaGFzaFxuICAgKlxuICAgKiBAcGFyYW0gaGFzaCB0aGUgdW5pcXVlIGhhc2ggaWRlbnRpZnlpbmcgdGhlIHN0YWdlIGNvbW1lbnQgdG8gbG9vayBmb3JcbiAgICogQHJldHVybnMgdGhlIFBSIGNvbW1lbnQgaWQgb3IgdW5kZWZpbmVkIGlmIHRoZXJlIGlzIG5vIHByZXZpb3VzIGNvbW1lbnRcbiAgICovXG4gIHB1YmxpYyBhc3luYyBmaW5kUHJldmlvdXMoaGFzaDogc3RyaW5nKTogUHJvbWlzZTxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBjb21tZW50cyA9IGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0Lmlzc3Vlcy5saXN0Q29tbWVudHMoe1xuICAgICAgLi4udGhpcy5jb250ZXh0LnJlcG8sXG4gICAgICBpc3N1ZV9udW1iZXI6IHRoaXMuaXNzdWVOdW1iZXIsXG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbW1lbnRzLmRhdGEuZmluZChjb21tZW50ID0+IGNvbW1lbnQuYm9keT8uaW5jbHVkZXMoaGFzaCkpPy5pZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYW4gZXhpc3RpbmcgY29tbWVudFxuICAgKlxuICAgKiBAcGFyYW0gaGFzaCB0aGUgdW5pcXVlIGhhc2ggaWRlbnRpZnlpbmcgdGhlIHN0YWdlIGNvbW1lbnQgdG8gbG9vayBmb3JcbiAgICogQHBhcmFtIGNvbnRlbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGNvbW1lbnRcbiAgICogQHBhcmFtIGNvbW1lbnRJZCB0aGUgaWQgb2YgdGhlIGNvbW1lbnQgdG8gdXBkYXRlXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdXBkYXRlQ29tbWVudChjb21tZW50SWQ6IG51bWJlciwgaGFzaDogc3RyaW5nLCBjb250ZW50OiBzdHJpbmdbXSkge1xuICAgIGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0Lmlzc3Vlcy51cGRhdGVDb21tZW50KHtcbiAgICAgIC4uLnRoaXMuY29udGV4dC5yZXBvLFxuICAgICAgYm9keTogW1xuICAgICAgICBgPCEtLSBjZGsgZGlmZiBhY3Rpb24gd2l0aCBoYXNoICR7aGFzaH0gLS0+YCxcbiAgICAgICAgLi4uY29udGVudCxcbiAgICAgICAgJycsXG4gICAgICAgIGBfR2VuZXJhdGVkIGZvciBjb21taXQgJHt0aGlzLmNvbW1pdFNoYX1fYCxcbiAgICAgIF0uam9pbignXFxuJyksXG4gICAgICBjb21tZW50X2lkOiBjb21tZW50SWQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGNvbW1lbnRcbiAgICpcbiAgICogQHBhcmFtIGhhc2ggdGhlIHVuaXF1ZSBoYXNoIGlkZW50aWZ5aW5nIHRoZSBzdGFnZSBjb21tZW50IHRvIGxvb2sgZm9yXG4gICAqIEBwYXJhbSBjb250ZW50IHRoZSBjb250ZW50IG9mIHRoZSBjb21tZW50XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY3JlYXRlQ29tbWVudChoYXNoOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZ1tdKSB7XG4gICAgYXdhaXQgdGhpcy5vY3Rva2l0LnJlc3QuaXNzdWVzLmNyZWF0ZUNvbW1lbnQoe1xuICAgICAgLi4udGhpcy5jb250ZXh0LnJlcG8sXG4gICAgICBib2R5OiBbXG4gICAgICAgIGA8IS0tIGNkayBkaWZmIGFjdGlvbiB3aXRoIGhhc2ggJHtoYXNofSAtLT5gLFxuICAgICAgICAuLi5jb250ZW50LFxuICAgICAgICAnJyxcbiAgICAgICAgYF9HZW5lcmF0ZWQgZm9yIGNvbW1pdCAke3RoaXMuY29tbWl0U2hhfV9gLFxuICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIGlzc3VlX251bWJlcjogdGhpcy5pc3N1ZU51bWJlcixcbiAgICB9KTtcbiAgfVxufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StackDiff = void 0;\nconst cloudformation_diff_1 = require(\"@aws-cdk/cloudformation-diff\");\nconst client_cloudformation_1 = require(\"@aws-sdk/client-cloudformation\");\nconst client_sts_1 = require(\"@aws-sdk/client-sts\");\nconst credential_providers_1 = require(\"@aws-sdk/credential-providers\");\n/**\n * StackDiff performs the diff on a stack\n */\nclass StackDiff {\n constructor(stack, allowedDestroyTypes) {\n this.stack = stack;\n this.allowedDestroyTypes = allowedDestroyTypes;\n let credentials;\n // if there is a lookup role then assume that, otherwise\n // just use the default credentials\n credentials = stack.lookupRole ? (0, credential_providers_1.fromTemporaryCredentials)({\n params: {\n RoleArn: stack.lookupRole.arn.replace('${AWS::Partition}', 'aws'),\n RoleSessionName: 'cdk-diff-action',\n ExternalId: stack.lookupRole.assumeRoleExternalId,\n DurationSeconds: 900,\n },\n }) : undefined;\n this.credentials = credentials;\n this.client = new client_cloudformation_1.CloudFormationClient({\n credentials,\n region: this.stack.region,\n });\n }\n /**\n * Validates the environment of the stack and whether it matches\n * the credentials being used by the GitHub action\n *\n * There are two cases that we care about:\n * 1. The stack has an account and region defined _and_ the credentials\n * being used by the GitHub action are for a different account and region.\n * In this case we throw an error because the stack diff would not be correct\n * 2. The stack has an account and region that are _not_ defined. In this case\n * We will return true to indicate that the environment is unknown. This will be used\n * later to print a warning in the stack diff.\n *\n * @returns whether or not the environment is unknown\n */\n async validateEnvironment() {\n let unknownAccount = false;\n let unknownRegion = false;\n const stsClient = new client_sts_1.STSClient({\n credentials: this.credentials,\n });\n const callerIdentity = new client_sts_1.GetCallerIdentityCommand({});\n const identity = await stsClient.send(callerIdentity);\n const configRegion = await this.client.config.region();\n if (!this.stack.region) {\n unknownRegion = true;\n }\n if (!this.stack.account) {\n unknownAccount = true;\n }\n if (this.stack.account && identity.Account !== this.stack.account) {\n throw new Error(`Credentials are for account ${identity.Account} but stack is in account ${this.stack.account}`);\n }\n if (this.stack.region && configRegion !== this.stack.region) {\n throw new Error(`Credentials are for region ${configRegion} but stack is in region ${this.stack.region}`);\n }\n if (unknownAccount || unknownRegion) {\n return `aws://${identity.Account}/${configRegion}`;\n }\n return;\n }\n /** Performs the diff on the CloudFormation stack\n * This reads the existing stack from CFN and then uses the cloudformation-diff\n * package to perform the diff and collect additional information on the type of changes\n */\n async diffStack() {\n const unknownEnv = await this.validateEnvironment();\n const cmd = new client_cloudformation_1.GetTemplateCommand({\n StackName: this.stack.name,\n });\n let existingTemplate = {};\n try {\n const res = await this.client.send(cmd);\n existingTemplate = res.TemplateBody ? JSON.parse(res.TemplateBody) : {};\n }\n catch (e) {\n if (e instanceof client_cloudformation_1.StackNotFoundException) {\n existingTemplate = {};\n }\n }\n try {\n const diff = (0, cloudformation_diff_1.fullDiff)(existingTemplate, this.stack.content);\n const changes = this.evaluateDiff(this.stack.name, diff);\n changes.unknownEnvironment = unknownEnv;\n return {\n diff,\n changes,\n };\n }\n catch (e) {\n console.error('Error getting remote template: ', e);\n throw e;\n }\n }\n evaluateDiff(templateId, templateDiff) {\n const changes = {\n createdResources: 0,\n removedResources: 0,\n updatedResources: 0,\n destructiveChanges: [],\n };\n // go through all the resource differences and check for any\n // \"destructive\" changes\n templateDiff.resources.forEachDifference((logicalId, change) => {\n var _a, _b, _c;\n // if the change is a removal it will not show up as a 'changeImpact'\n // so need to check for it separately, unless it is a resourceType that\n // has been \"allowed\" to be destroyed\n const resourceType = (_b = (_a = change.oldValue) === null || _a === void 0 ? void 0 : _a.Type) !== null && _b !== void 0 ? _b : (_c = change.newValue) === null || _c === void 0 ? void 0 : _c.Type;\n switch (resourceType) {\n case 'AWS::CDK::Metadata':\n return;\n case 'AWS::Lambda::Function':\n const keys = Object.keys(change.propertyUpdates);\n if (keys.length <= 2 &&\n keys.includes('Code') ||\n keys.includes('Metadata')) {\n return;\n }\n }\n if (change.isUpdate) {\n changes.updatedResources += 1;\n }\n else if (change.isRemoval) {\n changes.removedResources += 1;\n }\n else if (change.isAddition) {\n changes.createdResources += 1;\n }\n if (resourceType && this.allowedDestroyTypes.includes(resourceType)) {\n return;\n }\n if (change.isRemoval) {\n changes.destructiveChanges.push({\n impact: cloudformation_diff_1.ResourceImpact.WILL_DESTROY,\n logicalId,\n stackName: templateId,\n });\n }\n else {\n switch (change.changeImpact) {\n case cloudformation_diff_1.ResourceImpact.MAY_REPLACE:\n case cloudformation_diff_1.ResourceImpact.WILL_ORPHAN:\n case cloudformation_diff_1.ResourceImpact.WILL_DESTROY:\n case cloudformation_diff_1.ResourceImpact.WILL_REPLACE:\n changes.destructiveChanges.push({\n impact: change.changeImpact,\n logicalId,\n stackName: templateId,\n });\n break;\n }\n }\n });\n return changes;\n }\n}\nexports.StackDiff = StackDiff;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNFQUEwRztBQUMxRywwRUFBa0g7QUFDbEgsb0RBQTBFO0FBQzFFLHdFQUF5RTtBQTBEekU7O0dBRUc7QUFDSCxNQUFhLFNBQVM7SUFHcEIsWUFDbUIsS0FBZ0IsRUFDaEIsbUJBQTZCO1FBRDdCLFVBQUssR0FBTCxLQUFLLENBQVc7UUFDaEIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFVO1FBRTlDLElBQUksV0FBc0QsQ0FBQztRQUMzRCx3REFBd0Q7UUFDeEQsbUNBQW1DO1FBQ25DLFdBQVcsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFBLCtDQUF3QixFQUFDO1lBQ3hELE1BQU0sRUFBRTtnQkFDTixPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQztnQkFDakUsZUFBZSxFQUFFLGlCQUFpQjtnQkFDbEMsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsb0JBQW9CO2dCQUNqRCxlQUFlLEVBQUUsR0FBRzthQUNyQjtTQUNGLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLDRDQUFvQixDQUFDO1lBQ3JDLFdBQVc7WUFDWCxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1NBQzFCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0ssS0FBSyxDQUFDLG1CQUFtQjtRQUMvQixJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzFCLE1BQU0sU0FBUyxHQUFHLElBQUksc0JBQVMsQ0FB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LElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUM3QixPQUFPLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDO1lBQ2hDLENBQUM7WUFDRCxJQUFJLFlBQVksSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQ3BFLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3JCLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7b0JBQzlCLE1BQU0sRUFBRSxvQ0FBYyxDQUFDLFlBQVk7b0JBQ25DLFNBQVM7b0JBQ1QsU0FBUyxFQUFFLFVBQVU7aUJBQ3RCLENBQUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDTixRQUFRLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDNUIsS0FBSyxvQ0FBYyxDQUFDLFdBQVcsQ0FBQztvQkFDaEMsS0FBSyxvQ0FBYyxDQUFDLFdBQVcsQ0FBQztvQkFDaEMsS0FBSyxvQ0FBYyxDQUFDLFlBQVksQ0FBQztvQkFDakMsS0FBSyxvQ0FBYyxDQUFDLFlBQVk7d0JBQzlCLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7NEJBQzlCLE1BQU0sRUFBRSxNQUFNLENBQUMsWUFBWTs0QkFDM0IsU0FBUzs0QkFDVCxTQUFTLEVBQUUsVUFBVTt5QkFDdEIsQ0FBQyxDQUFDO3dCQUNILE1BQU07Z0JBQ1YsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQXBLRCw4QkFvS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXNvdXJjZURpZmZlcmVuY2UsIFJlc291cmNlSW1wYWN0LCBUZW1wbGF0ZURpZmYsIGZ1bGxEaWZmIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWRmb3JtYXRpb24tZGlmZic7XG5pbXBvcnQgeyBDbG91ZEZvcm1hdGlvbkNsaWVudCwgR2V0VGVtcGxhdGVDb21tYW5kLCBTdGFja05vdEZvdW5kRXhjZXB0aW9uIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IFNUU0NsaWVudCwgR2V0Q2FsbGVySWRlbnRpdHlDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXN0cyc7XG5pbXBvcnQgeyBmcm9tVGVtcG9yYXJ5Q3JlZGVudGlhbHMgfSBmcm9tICdAYXdzLXNkay9jcmVkZW50aWFsLXByb3ZpZGVycyc7XG5pbXBvcnQgeyBBd3NDcmVkZW50aWFsSWRlbnRpdHlQcm92aWRlciB9IGZyb20gJ0BzbWl0aHkvdHlwZXMnO1xuaW1wb3J0IHsgU3RhY2tJbmZvIH0gZnJvbSAnLi9hc3NlbWJseSc7XG5cbi8qKlxuICogRGV0YWlscyBvbiB3aGF0IGNoYW5nZXMgYXJlIG9jY3VycmluZyBpbiB0aGlzIHN0YWNrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbmdlRGV0YWlscyB7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHJlc291cmNlcyB0aGF0IGFyZSBiZWluZyB1cGRhdGVkXG4gICAqL1xuICB1cGRhdGVkUmVzb3VyY2VzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgcmVzb3VyY2VzIHRoYXQgYXJlIGJlaW5nIHJlbW92ZWRcbiAgICovXG4gIHJlbW92ZWRSZXNvdXJjZXM6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiByZXNvdXJjZXMgdGhhdCBhcmUgYmVpbmcgY3JlYXRlZFxuICAgKi9cbiAgY3JlYXRlZFJlc291cmNlczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJbmZvcm1hdGlvbiBvbiBhbnkgZGVzdHJ1Y3RpdmUgY2hhbmdlc1xuICAgKi9cbiAgZGVzdHJ1Y3RpdmVDaGFuZ2VzOiBEZXN0cnVjdGl2ZUNoYW5nZVtdO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgc3RhY2sgaGFzIGFuIHVua25vd24gZW52LiBJZiB0aGF0IGlzIHRoZSBjYXNlXG4gICAqIHRoZW4gdGhpcyByZXR1cm5zIHRoZSBlbnZpcm9ubWVudCBjcmVkZW50aWFscyB0aGF0IGFyZSBiZWluZyB1c2VkXG4gICAqIGluIHRoZSBmb3JtYXQgYXdzOi8vPGFjY291bnQ+LzxyZWdpb24+XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYWNjb3VudCBpcyBrbm93blxuICAgKi9cbiAgdW5rbm93bkVudmlyb25tZW50Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEluZm9ybWF0aW9uIG9uIGFueSBkZXN0cnVjdGl2ZSBjaGFuZ2VzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVzdHJ1Y3RpdmVDaGFuZ2Uge1xuICAvKipcbiAgICogVGhlIGxvZ2ljYWxJZCBvZiB0aGUgcmVzb3VyY2Ugd2l0aCBhIGRlc3RydWN0aXZlIGNoYW5nZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9naWNhbElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzdGFjayB0aGF0IGNvbnRhaW5zIHRoZSBkZXN0cnVjdGl2ZSBjaGFuZ2VcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW1wYWN0IG9mIHRoZSBkZXN0cnVjdGl2ZSBjaGFuZ2VcbiAgICovXG4gIHJlYWRvbmx5IGltcGFjdDogUmVzb3VyY2VJbXBhY3Q7XG59XG5cbi8qKlxuICogU3RhY2tEaWZmIHBlcmZvcm1zIHRoZSBkaWZmIG9uIGEgc3RhY2tcbiAqL1xuZXhwb3J0IGNsYXNzIFN0YWNrRGlmZiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2xpZW50OiBDbG91ZEZvcm1hdGlvbkNsaWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBjcmVkZW50aWFsczogQXdzQ3JlZGVudGlhbElkZW50aXR5UHJvdmlkZXIgfCB1bmRlZmluZWQ7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RhY2s6IFN0YWNrSW5mbyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsbG93ZWREZXN0cm95VHlwZXM6IHN0cmluZ1tdLFxuICApIHtcbiAgICBsZXQgY3JlZGVudGlhbHM6IEF3c0NyZWRlbnRpYWxJZGVudGl0eVByb3ZpZGVyIHwgdW5kZWZpbmVkO1xuICAgIC8vIGlmIHRoZXJlIGlzIGEgbG9va3VwIHJvbGUgdGhlbiBhc3N1bWUgdGhhdCwgb3RoZXJ3aXNlXG4gICAgLy8ganVzdCB1c2UgdGhlIGRlZmF1bHQgY3JlZGVudGlhbHNcbiAgICBjcmVkZW50aWFscyA9IHN0YWNrLmxvb2t1cFJvbGUgPyBmcm9tVGVtcG9yYXJ5Q3JlZGVudGlhbHMoe1xuICAgICAgcGFyYW1zOiB7XG4gICAgICAgIFJvbGVBcm46IHN0YWNrLmxvb2t1cFJvbGUuYXJuLnJlcGxhY2UoJyR7QVdTOjpQYXJ0aXRpb259JywgJ2F3cycpLFxuICAgICAgICBSb2xlU2Vzc2lvbk5hbWU6ICdjZGstZGlmZi1hY3Rpb24nLFxuICAgICAgICBFeHRlcm5hbElkOiBzdGFjay5sb29rdXBSb2xlLmFzc3VtZVJvbGVFeHRlcm5hbElkLFxuICAgICAgICBEdXJhdGlvblNlY29uZHM6IDkwMCxcbiAgICAgIH0sXG4gICAgfSkgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5jcmVkZW50aWFscyA9IGNyZWRlbnRpYWxzO1xuICAgIHRoaXMuY2xpZW50ID0gbmV3IENsb3VkRm9ybWF0aW9uQ2xpZW50KHtcbiAgICAgIGNyZWRlbnRpYWxzLFxuICAgICAgcmVnaW9uOiB0aGlzLnN0YWNrLnJlZ2lvbixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGVudmlyb25tZW50IG9mIHRoZSBzdGFjayBhbmQgd2hldGhlciBpdCBtYXRjaGVzXG4gICAqIHRoZSBjcmVkZW50aWFscyBiZWluZyB1c2VkIGJ5IHRoZSBHaXRIdWIgYWN0aW9uXG4gICAqXG4gICAqIFRoZXJlIGFyZSB0d28gY2FzZXMgdGhhdCB3ZSBjYXJlIGFib3V0OlxuICAgKiAxLiBUaGUgc3RhY2sgaGFzIGFuIGFjY291bnQgYW5kIHJlZ2lvbiBkZWZpbmVkIF9hbmRfIHRoZSBjcmVkZW50aWFsc1xuICAgKiAgIGJlaW5nIHVzZWQgYnkgdGhlIEdpdEh1YiBhY3Rpb24gYXJlIGZvciBhIGRpZmZlcmVudCBhY2NvdW50IGFuZCByZWdpb24uXG4gICAqICAgSW4gdGhpcyBjYXNlIHdlIHRocm93IGFuIGVycm9yIGJlY2F1c2UgdGhlIHN0YWNrIGRpZmYgd291bGQgbm90IGJlIGNvcnJlY3RcbiAgICogMi4gVGhlIHN0YWNrIGhhcyBhbiBhY2NvdW50IGFuZCByZWdpb24gdGhhdCBhcmUgX25vdF8gZGVmaW5lZC4gSW4gdGhpcyBjYXNlXG4gICAqICAgIFdlIHdpbGwgcmV0dXJuIHRydWUgdG8gaW5kaWNhdGUgdGhhdCB0aGUgZW52aXJvbm1lbnQgaXMgdW5rbm93bi4gVGhpcyB3aWxsIGJlIHVzZWRcbiAgICogICAgbGF0ZXIgdG8gcHJpbnQgYSB3YXJuaW5nIGluIHRoZSBzdGFjayBkaWZmLlxuICAgKlxuICAgKiBAcmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgZW52aXJvbm1lbnQgaXMgdW5rbm93blxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyB2YWxpZGF0ZUVudmlyb25tZW50KCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgbGV0IHVua25vd25BY2NvdW50ID0gZmFsc2U7XG4gICAgbGV0IHVua25vd25SZWdpb24gPSBmYWxzZTtcbiAgICBjb25zdCBzdHNDbGllbnQgPSBuZXcgU1RTQ2xpZW50KHtcbiAgICAgIGNyZWRlbnRpYWxzOiB0aGlzLmNyZWRlbnRpYWxzLFxuICAgIH0pO1xuICAgIGNvbnN0IGNhbGxlcklkZW50aXR5ID0gbmV3IEdldENhbGxlcklkZW50aXR5Q29tbWFuZCh7IH0pO1xuICAgIGNvbnN0IGlkZW50aXR5ID0gYXdhaXQgc3RzQ2xpZW50LnNlbmQoY2FsbGVySWRlbnRpdHkpO1xuICAgIGNvbnN0IGNvbmZpZ1JlZ2lvbiA9IGF3YWl0IHRoaXMuY2xpZW50LmNvbmZpZy5yZWdpb24oKTtcbiAgICBpZiAoIXRoaXMuc3RhY2sucmVnaW9uKSB7XG4gICAgICB1bmtub3duUmVnaW9uID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnN0YWNrLmFjY291bnQpIHtcbiAgICAgIHVua25vd25BY2NvdW50ID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3RhY2suYWNjb3VudCAmJiBpZGVudGl0eS5BY2NvdW50ICE9PSB0aGlzLnN0YWNrLmFjY291bnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3JlZGVudGlhbHMgYXJlIGZvciBhY2NvdW50ICR7aWRlbnRpdHkuQWNjb3VudH0gYnV0IHN0YWNrIGlzIGluIGFjY291bnQgJHt0aGlzLnN0YWNrLmFjY291bnR9YCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RhY2sucmVnaW9uICYmIGNvbmZpZ1JlZ2lvbiAhPT0gdGhpcy5zdGFjay5yZWdpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3JlZGVudGlhbHMgYXJlIGZvciByZWdpb24gJHtjb25maWdSZWdpb259IGJ1dCBzdGFjayBpcyBpbiByZWdpb24gJHt0aGlzLnN0YWNrLnJlZ2lvbn1gKTtcbiAgICB9XG5cbiAgICBpZiAodW5rbm93bkFjY291bnQgfHwgdW5rbm93blJlZ2lvbikge1xuICAgICAgcmV0dXJuIGBhd3M6Ly8ke2lkZW50aXR5LkFjY291bnR9LyR7Y29uZmlnUmVnaW9ufWA7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqIFBlcmZvcm1zIHRoZSBkaWZmIG9uIHRoZSBDbG91ZEZvcm1hdGlvbiBzdGFja1xuICAgKiBUaGlzIHJlYWRzIHRoZSBleGlzdGluZyBzdGFjayBmcm9tIENGTiBhbmQgdGhlbiB1c2VzIHRoZSBjbG91ZGZvcm1hdGlvbi1kaWZmXG4gICAqIHBhY2thZ2UgdG8gcGVyZm9ybSB0aGUgZGlmZiBhbmQgY29sbGVjdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIHRoZSB0eXBlIG9mIGNoYW5nZXNcbiAgICovXG4gIHB1YmxpYyBhc3luYyBkaWZmU3RhY2soKTogUHJvbWlzZTx7IGRpZmY6IFRlbXBsYXRlRGlmZjsgY2hhbmdlczogQ2hhbmdlRGV0YWlscyB9PiB7XG4gICAgY29uc3QgdW5rbm93bkVudiA9IGF3YWl0IHRoaXMudmFsaWRhdGVFbnZpcm9ubWVudCgpO1xuXG4gICAgY29uc3QgY21kID0gbmV3IEdldFRlbXBsYXRlQ29tbWFuZCh7XG4gICAgICBTdGFja05hbWU6IHRoaXMuc3RhY2submFtZSxcbiAgICB9KTtcbiAgICBsZXQgZXhpc3RpbmdUZW1wbGF0ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmNsaWVudC5zZW5kKGNtZCk7XG4gICAgICBleGlzdGluZ1RlbXBsYXRlID0gcmVzLlRlbXBsYXRlQm9keSA/IEpTT04ucGFyc2UocmVzLlRlbXBsYXRlQm9keSkgOiB7fTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RhY2tOb3RGb3VuZEV4Y2VwdGlvbikge1xuICAgICAgICBleGlzdGluZ1RlbXBsYXRlID0ge307XG4gICAgICB9XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkaWZmID0gZnVsbERpZmYoZXhpc3RpbmdUZW1wbGF0ZSwgdGhpcy5zdGFjay5jb250ZW50KTtcbiAgICAgIGNvbnN0IGNoYW5nZXMgPSB0aGlzLmV2YWx1YXRlRGlmZih0aGlzLnN0YWNrLm5hbWUsIGRpZmYpO1xuICAgICAgY2hhbmdlcy51bmtub3duRW52aXJvbm1lbnQgPSB1bmtub3duRW52O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGlmZixcbiAgICAgICAgY2hhbmdlcyxcbiAgICAgIH07XG5cbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGdldHRpbmcgcmVtb3RlIHRlbXBsYXRlOiAnLCBlKTtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBldmFsdWF0ZURpZmYodGVtcGxhdGVJZDogc3RyaW5nLCB0ZW1wbGF0ZURpZmY6IFRlbXBsYXRlRGlmZik6IENoYW5nZURldGFpbHMge1xuICAgIGNvbnN0IGNoYW5nZXM6IENoYW5nZURldGFpbHMgPSB7XG4gICAgICBjcmVhdGVkUmVzb3VyY2VzOiAwLFxuICAgICAgcmVtb3ZlZFJlc291cmNlczogMCxcbiAgICAgIHVwZGF0ZWRSZXNvdXJjZXM6IDAsXG4gICAgICBkZXN0cnVjdGl2ZUNoYW5nZXM6IFtdLFxuICAgIH07XG4gICAgLy8gZ28gdGhyb3VnaCBhbGwgdGhlIHJlc291cmNlIGRpZmZlcmVuY2VzIGFuZCBjaGVjayBmb3IgYW55XG4gICAgLy8gXCJkZXN0cnVjdGl2ZVwiIGNoYW5nZXNcbiAgICB0ZW1wbGF0ZURpZmYucmVzb3VyY2VzLmZvckVhY2hEaWZmZXJlbmNlKChsb2dpY2FsSWQ6IHN0cmluZywgY2hhbmdlOiBSZXNvdXJjZURpZmZlcmVuY2UpID0+IHtcbiAgICAgIC8vIGlmIHRoZSBjaGFuZ2UgaXMgYSByZW1vdmFsIGl0IHdpbGwgbm90IHNob3cgdXAgYXMgYSAnY2hhbmdlSW1wYWN0J1xuICAgICAgLy8gc28gbmVlZCB0byBjaGVjayBmb3IgaXQgc2VwYXJhdGVseSwgdW5sZXNzIGl0IGlzIGEgcmVzb3VyY2VUeXBlIHRoYXRcbiAgICAgIC8vIGhhcyBiZWVuIFwiYWxsb3dlZFwiIHRvIGJlIGRlc3Ryb3llZFxuICAgICAgY29uc3QgcmVzb3VyY2VUeXBlID0gY2hhbmdlLm9sZFZhbHVlPy5UeXBlID8/IGNoYW5nZS5uZXdWYWx1ZT8uVHlwZTtcbiAgICAgIHN3aXRjaCAocmVzb3VyY2VUeXBlKSB7XG4gICAgICAgIGNhc2UgJ0FXUzo6Q0RLOjpNZXRhZGF0YSc6XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjYXNlICdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nOlxuICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhjaGFuZ2UucHJvcGVydHlVcGRhdGVzKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBrZXlzLmxlbmd0aCA8PSAyICYmXG4gICAgICAgICAgICBrZXlzLmluY2x1ZGVzKCdDb2RlJykgfHxcbiAgICAgICAgICAgIGtleXMuaW5jbHVkZXMoJ01ldGFkYXRhJylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2hhbmdlLmlzVXBkYXRlKSB7XG4gICAgICAgIGNoYW5nZXMudXBkYXRlZFJlc291cmNlcyArPSAxO1xuICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuaXNSZW1vdmFsKSB7XG4gICAgICAgIGNoYW5nZXMucmVtb3ZlZFJlc291cmNlcyArPSAxO1xuICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuaXNBZGRpdGlvbikge1xuICAgICAgICBjaGFuZ2VzLmNyZWF0ZWRSZXNvdXJjZXMgKz0gMTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXNvdXJjZVR5cGUgJiYgdGhpcy5hbGxvd2VkRGVzdHJveVR5cGVzLmluY2x1ZGVzKHJlc291cmNlVHlwZSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2hhbmdlLmlzUmVtb3ZhbCkge1xuICAgICAgICBjaGFuZ2VzLmRlc3RydWN0aXZlQ2hhbmdlcy5wdXNoKHtcbiAgICAgICAgICBpbXBhY3Q6IFJlc291cmNlSW1wYWN0LldJTExfREVTVFJPWSxcbiAgICAgICAgICBsb2dpY2FsSWQsXG4gICAgICAgICAgc3RhY2tOYW1lOiB0ZW1wbGF0ZUlkLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAoY2hhbmdlLmNoYW5nZUltcGFjdCkge1xuICAgICAgICAgIGNhc2UgUmVzb3VyY2VJbXBhY3QuTUFZX1JFUExBQ0U6XG4gICAgICAgICAgY2FzZSBSZXNvdXJjZUltcGFjdC5XSUxMX09SUEhBTjpcbiAgICAgICAgICBjYXNlIFJlc291cmNlSW1wYWN0LldJTExfREVTVFJPWTpcbiAgICAgICAgICBjYXNlIFJlc291cmNlSW1wYWN0LldJTExfUkVQTEFDRTpcbiAgICAgICAgICAgIGNoYW5nZXMuZGVzdHJ1Y3RpdmVDaGFuZ2VzLnB1c2goe1xuICAgICAgICAgICAgICBpbXBhY3Q6IGNoYW5nZS5jaGFuZ2VJbXBhY3QsXG4gICAgICAgICAgICAgIGxvZ2ljYWxJZCxcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiB0ZW1wbGF0ZUlkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjaGFuZ2VzO1xuICB9XG59XG4iXX0=","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst core = __importStar(require(\"@actions/core\"));\nconst action_1 = require(\"./action\");\n(0, action_1.run)().catch((error) => {\n core.setFailed(error.message);\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUFzQztBQUN0QyxxQ0FBK0I7QUFFL0IsSUFBQSxZQUFHLEdBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtJQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoQyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvcmUgZnJvbSAnQGFjdGlvbnMvY29yZSc7XG5pbXBvcnQgeyBydW4gfSBmcm9tICcuL2FjdGlvbic7XG5cbnJ1bigpLmNhdGNoKChlcnJvcjogYW55KSA9PiB7XG4gIGNvcmUuc2V0RmFpbGVkKGVycm9yLm1lc3NhZ2UpO1xufSk7XG4iXX0=","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StageProcessor = void 0;\nconst crypto = __importStar(require(\"crypto\"));\nconst stream_1 = require(\"stream\");\nconst string_decoder_1 = require(\"string_decoder\");\nconst cloudformation_diff_1 = require(\"@aws-cdk/cloudformation-diff\");\nconst diff_1 = require(\"./diff\");\n// the max comment length allowed by GitHub\nconst MAX_COMMENT_LENGTH = 65536;\n/**\n * StageProcessor processes a CDK stage and creates a comment on the GitHub PR\n * detailing the stack diffs\n */\nclass StageProcessor {\n constructor(stages, allowedDestroyTypes) {\n this.stages = stages;\n this.allowedDestroyTypes = allowedDestroyTypes;\n this.stageComments = {};\n this.stages.forEach(stage => {\n this.stageComments[stage.name] = {\n destructiveChanges: 0,\n stackComments: stage.stacks.reduce((prev, curr) => {\n prev[curr.name] = [];\n return prev;\n }, {}),\n hash: md5Hash(JSON.stringify({\n stageName: stage.name,\n ...stage.stacks.reduce((prev, curr) => {\n prev.stacks.push({\n name: curr.name,\n lookupRole: curr.lookupRole,\n account: curr.account,\n region: curr.region,\n });\n return prev;\n }, { stacks: [] }), // we don't want the content to be part of the hash\n })),\n };\n });\n }\n /**\n * Process all of the stages. Once this has been run\n * the comment can be created with `commentStages()`\n */\n async processStages(ignoreDestructiveChanges = []) {\n for (const stage of this.stages) {\n for (const stack of stage.stacks) {\n try {\n const { comment, changes } = await this.diffStack(stack);\n this.stageComments[stage.name].stackComments[stack.name].push(...comment);\n if (!ignoreDestructiveChanges.includes(stage.name)) {\n this.stageComments[stage.name].destructiveChanges += changes;\n }\n }\n catch (e) {\n console.error('Error processing stages: ', e);\n throw e;\n }\n }\n }\n }\n async commentStacks(comments) {\n for (const [stageName, stage] of Object.entries(this.stageComments)) {\n for (const [stackName, comment] of Object.entries(stage.stackComments)) {\n const hash = md5Hash(JSON.stringify({\n stageName,\n stackName,\n }));\n const stackComment = this.getCommentForStack(stageName, stackName, comment);\n if (stackComment.join('\\n').length > MAX_COMMENT_LENGTH) {\n throw new Error(`Comment for stack ${stackName} is too long, please report this as a bug https://github.com/corymhall/cdk-diff-action/issues/new`);\n }\n const previous = await comments.findPrevious(hash);\n if (previous) {\n await comments.updateComment(previous, hash, stackComment);\n }\n else {\n await comments.createComment(hash, stackComment);\n }\n }\n }\n }\n async commentStage(comments, hash, comment) {\n const previous = await comments.findPrevious(hash);\n if (previous) {\n await comments.updateComment(previous, hash, comment);\n }\n else {\n await comments.createComment(hash, comment);\n }\n }\n /**\n * Create the GitHub comment for the stage\n * This will try to create a single comment per stage, but if the comment\n * is too long it will create a comment per stack\n * @param comments the comments object to use to create the comment\n */\n async commentStages(comments) {\n for (const [stageName, info] of Object.entries(this.stageComments)) {\n const stageComment = this.getCommentForStage(stageName);\n if (stageComment.join('\\n').length > MAX_COMMENT_LENGTH) {\n await this.commentStacks(comments);\n }\n else {\n await this.commentStage(comments, info.hash, stageComment);\n }\n }\n }\n /**\n * Returns whether or not there are destructive changes in this stage\n */\n get hasDestructiveChanges() {\n for (const comments of Object.values(this.stageComments)) {\n if (comments.destructiveChanges) {\n return true;\n }\n }\n return false;\n }\n async diffStack(stack) {\n try {\n const stackDiff = new diff_1.StackDiff(stack, this.allowedDestroyTypes);\n const { diff, changes } = await stackDiff.diffStack();\n return {\n comment: this.formatStackComment(stack.name, diff, changes),\n changes: changes.destructiveChanges.length,\n };\n }\n catch (e) {\n console.error('Error performing stack diff: ', e);\n throw e;\n }\n }\n getEmoji(changes) {\n if (changes.destructiveChanges.length || changes.removedResources) {\n return ':x:';\n }\n else if (changes.updatedResources) {\n return ':yellow_circle:';\n }\n else if (changes.createdResources) {\n return ':sparkle:';\n }\n return ':white_check_mark:';\n }\n formatStackComment(stackName, diff, changes) {\n const output = [];\n const emoji = this.getEmoji(changes);\n if (diff.isEmpty) {\n output.push(`No Changes for stack: ${stackName} ${emoji}`);\n return output;\n }\n output.push(...[\n `#### Diff for stack: ${stackName} - ` +\n `***${changes.createdResources} to add, ${changes.updatedResources} to update, ${changes.removedResources} to destroy*** ` +\n emoji,\n '

Details',\n '',\n ]);\n if (changes.unknownEnvironment) {\n output.push('> [!INFO]\\n> ***Unknown Environment*** :information_source:');\n output.push('> This stack has an unknown environment which may mean the diff is performed against the wrong environment');\n output.push(`> Environmment used ${changes.unknownEnvironment}`);\n output.push('');\n }\n if (changes.destructiveChanges.length) {\n output.push('');\n output.push('> [!WARNING]\\n> ***Destructive Changes*** :bangbang:'),\n changes.destructiveChanges.forEach(change => {\n output.push(`> **Stack: ${change.stackName} - Resource: ${change.logicalId} - Impact:** ***${change.impact}***`);\n output.push('');\n });\n }\n const writable = new StringWritable({});\n (0, cloudformation_diff_1.formatDifferences)(writable, diff);\n output.push('');\n output.push('```shell');\n output.push(writable.data);\n output.push('```');\n output.push('
');\n output.push('');\n return output;\n }\n getCommentForStack(stageName, stackName, comment) {\n const output = [];\n if (!comment.length) {\n return output;\n }\n output.push(`### Diff for stack: ${stageName} / ${stackName}`);\n return output.concat(comment);\n }\n getCommentForStage(stageName) {\n const output = [];\n const stageComments = this.stageComments[stageName];\n const comments = Object.values(this.stageComments[stageName].stackComments).flatMap(x => x);\n if (!comments.length) {\n return output;\n }\n output.push(`### Diff for stage: ${stageName}`);\n if (stageComments.destructiveChanges) {\n output.push(`> [!WARNING]\\n> ${stageComments.destructiveChanges} Destructive Changes`);\n output.push('');\n }\n return output.concat(comments);\n }\n}\nexports.StageProcessor = StageProcessor;\nclass StringWritable extends stream_1.Writable {\n constructor(options) {\n super(options);\n this._decoder = new string_decoder_1.StringDecoder();\n this.data = '';\n }\n _write(chunk, encoding, callback) {\n if (encoding === 'buffer') {\n chunk = this._decoder.write(chunk);\n }\n this.data += chunk;\n callback();\n }\n _final(callback) {\n this.data += this._decoder.end();\n callback();\n }\n}\nfunction md5Hash(val) {\n return crypto.createHash('md5').update(val).digest('hex');\n}\n;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZ2UtcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3N0YWdlLXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUNqQyxtQ0FBbUQ7QUFDbkQsbURBQStDO0FBQy9DLHNFQUErRTtBQUcvRSxpQ0FBa0Q7QUFFbEQsMkNBQTJDO0FBQzNDLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0FBd0JqQzs7O0dBR0c7QUFDSCxNQUFhLGNBQWM7SUFFekIsWUFDbUIsTUFBbUIsRUFDbkIsbUJBQTZCO1FBRDdCLFdBQU0sR0FBTixNQUFNLENBQWE7UUFDbkIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFVO1FBSC9CLGtCQUFhLEdBQTBDLEVBQUUsQ0FBQztRQUt6RSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRztnQkFDL0Isa0JBQWtCLEVBQUUsQ0FBQztnQkFDckIsYUFBYSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFO29CQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDckIsT0FBTyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQyxFQUFFLEVBQXVDLENBQUM7Z0JBQzNDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztvQkFDM0IsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJO29CQUNyQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFO3dCQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQzs0QkFDZixJ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LENBQUMsR0FBVztJQUMxQixPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1RCxDQUFDO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgV3JpdGFibGUsIFdyaXRhYmxlT3B0aW9ucyB9IGZyb20gJ3N0cmVhbSc7XG5pbXBvcnQgeyBTdHJpbmdEZWNvZGVyIH0gZnJvbSAnc3RyaW5nX2RlY29kZXInO1xuaW1wb3J0IHsgVGVtcGxhdGVEaWZmLCBmb3JtYXREaWZmZXJlbmNlcyB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkZm9ybWF0aW9uLWRpZmYnO1xuaW1wb3J0IHsgU3RhY2tJbmZvLCBTdGFnZUluZm8gfSBmcm9tICcuL2Fzc2VtYmx5JztcbmltcG9ydCB7IENvbW1lbnRzIH0gZnJvbSAnLi9jb21tZW50JztcbmltcG9ydCB7IENoYW5nZURldGFpbHMsIFN0YWNrRGlmZiB9IGZyb20gJy4vZGlmZic7XG5cbi8vIHRoZSBtYXggY29tbWVudCBsZW5ndGggYWxsb3dlZCBieSBHaXRIdWJcbmNvbnN0IE1BWF9DT01NRU5UX0xFTkdUSCA9IDY1NTM2O1xuXG4vKipcbiAqIEluZm9ybWF0aW9uIG5lZWRlZCB0byBtYWtlIGEgY29tbWVudCBmb3IgYSBDREsgU3RhZ2VcbiAqL1xuaW50ZXJmYWNlIFN0YWdlQ29tbWVudCB7XG4gIC8qKlxuICAgKiBUaGUgZnVsbCBjb21tZW50IGZvciBlYWNoIHN0YWNrLiBUaGUgbGlzdCB3aWxsIGJlIGpvaW5lZCB3aXRoIFxcblxuICAgKi9cbiAgc3RhY2tDb21tZW50czogeyBbc3RhY2tOYW1lOiBzdHJpbmddOiBzdHJpbmdbXSB9O1xuXG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlIGhhc2ggZm9yIHRoZSBzdGFnZSBjb21tZW50XG4gICAqIFRoaXMgd2lsbCBiZSB1c2VkIHRvIGxvb2t1cCB0aGUgc3RhZ2UgY29tbWVudCBvbiB0aGUgUFJcbiAgICogc28gdGhhdCBpdCBjYW4gYmUgb3ZlcndyaXR0ZW5cbiAgICovXG4gIGhhc2g6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBkZXN0cnVjdGl2ZSBjaGFuZ2VzIGluIHRoaXMgc3RhZ2VcbiAgICovXG4gIGRlc3RydWN0aXZlQ2hhbmdlczogbnVtYmVyO1xufVxuXG4vKipcbiAqIFN0YWdlUHJvY2Vzc29yIHByb2Nlc3NlcyBhIENESyBzdGFnZSBhbmQgY3JlYXRlcyBhIGNvbW1lbnQgb24gdGhlIEdpdEh1YiBQUlxuICogZGV0YWlsaW5nIHRoZSBzdGFjayBkaWZmc1xuICovXG5leHBvcnQgY2xhc3MgU3RhZ2VQcm9jZXNzb3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IHN0YWdlQ29tbWVudHM6IHsgW3N0YWdlTmFtZTogc3RyaW5nXTogU3RhZ2VDb21tZW50IH0gPSB7fTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGFnZXM6IFN0YWdlSW5mb1tdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsb3dlZERlc3Ryb3lUeXBlczogc3RyaW5nW10sXG4gICkge1xuICAgIHRoaXMuc3RhZ2VzLmZvckVhY2goc3RhZ2UgPT4ge1xuICAgICAgdGhpcy5zdGFnZUNvbW1lbnRzW3N0YWdlLm5hbWVdID0ge1xuICAgICAgICBkZXN0cnVjdGl2ZUNoYW5nZXM6IDAsXG4gICAgICAgIHN0YWNrQ29tbWVudHM6IHN0YWdlLnN0YWNrcy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcbiAgICAgICAgICBwcmV2W2N1cnIubmFtZV0gPSBbXTtcbiAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgfSwge30gYXMgeyBbc3RhY2tOYW1lOiBzdHJpbmddOiBzdHJpbmdbXSB9KSxcbiAgICAgICAgaGFzaDogbWQ1SGFzaChKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgc3RhZ2VOYW1lOiBzdGFnZS5uYW1lLFxuICAgICAgICAgIC4uLnN0YWdlLnN0YWNrcy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcbiAgICAgICAgICAgIHByZXYuc3RhY2tzLnB1c2goe1xuICAgICAgICAgICAgICBuYW1lOiBjdXJyLm5hbWUsXG4gICAgICAgICAgICAgIGxvb2t1cFJvbGU6IGN1cnIubG9va3VwUm9sZSxcbiAgICAgICAgICAgICAgYWNjb3VudDogY3Vyci5hY2NvdW50LFxuICAgICAgICAgICAgICByZWdpb246IGN1cnIucmVnaW9uLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgICB9LCB7IHN0YWNrczogW10gfSBhcyB7IHN0YWNrczogT21pdDxTdGFja0luZm8sICdjb250ZW50Jz5bXSB9KSwgLy8gd2UgZG9uJ3Qgd2FudCB0aGUgY29udGVudCB0byBiZSBwYXJ0IG9mIHRoZSBoYXNoXG4gICAgICAgIH0pKSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyBhbGwgb2YgdGhlIHN0YWdlcy4gT25jZSB0aGlzIGhhcyBiZWVuIHJ1blxuICAgKiB0aGUgY29tbWVudCBjYW4gYmUgY3JlYXRlZCB3aXRoIGBjb21tZW50U3RhZ2VzKClgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcHJvY2Vzc1N0YWdlcyhpZ25vcmVEZXN0cnVjdGl2ZUNoYW5nZXM6IHN0cmluZ1tdID0gW10pIHtcbiAgICBmb3IgKGNvbnN0IHN0YWdlIG9mIHRoaXMuc3RhZ2VzKSB7XG4gICAgICBmb3IgKGNvbnN0IHN0YWNrIG9mIHN0YWdlLnN0YWNrcykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHsgY29tbWVudCwgY2hhbmdlcyB9ID0gYXdhaXQgdGhpcy5kaWZmU3RhY2soc3RhY2spO1xuICAgICAgICAgIHRoaXMuc3RhZ2VDb21tZW50c1tzdGFnZS5uYW1lXS5zdGFja0NvbW1lbnRzW3N0YWNrLm5hbWVdLnB1c2goLi4uY29tbWVudCk7XG4gICAgICAgICAgaWYgKCFpZ25vcmVEZXN0cnVjdGl2ZUNoYW5nZXMuaW5jbHVkZXMoc3RhZ2UubmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhZ2VDb21tZW50c1tzdGFnZS5uYW1lXS5kZXN0cnVjdGl2ZUNoYW5nZXMgKz0gY2hhbmdlcztcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHByb2Nlc3Npbmcgc3RhZ2VzOiAnLCBlKTtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb21tZW50U3RhY2tzKGNvbW1lbnRzOiBDb21tZW50cykge1xuICAgIGZvciAoY29uc3QgW3N0YWdlTmFtZSwgc3RhZ2VdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuc3RhZ2VDb21tZW50cykpIHtcbiAgICAgIGZvciAoY29uc3QgW3N0YWNrTmFtZSwgY29tbWVudF0gb2YgT2JqZWN0LmVudHJpZXMoc3RhZ2Uuc3RhY2tDb21tZW50cykpIHtcbiAgICAgICAgY29uc3QgaGFzaCA9IG1kNUhhc2goSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIHN0YWdlTmFtZSxcbiAgICAgICAgICBzdGFja05hbWUsXG4gICAgICAgIH0pKTtcbiAgICAgICAgY29uc3Qgc3RhY2tDb21tZW50ID0gdGhpcy5nZXRDb21tZW50Rm9yU3RhY2soc3RhZ2VOYW1lLCBzdGFja05hbWUsIGNvbW1lbnQpO1xuICAgICAgICBpZiAoc3RhY2tDb21tZW50LmpvaW4oJ1xcbicpLmxlbmd0aCA+IE1BWF9DT01NRU5UX0xFTkdUSCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tbWVudCBmb3Igc3RhY2sgJHtzdGFja05hbWV9IGlzIHRvbyBsb25nLCBwbGVhc2UgcmVwb3J0IHRoaXMgYXMgYSBidWcgaHR0cHM6Ly9naXRodWIuY29tL2NvcnltaGFsbC9jZGstZGlmZi1hY3Rpb24vaXNzdWVzL25ld2ApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByZXZpb3VzID0gYXdhaXQgY29tbWVudHMuZmluZFByZXZpb3VzKGhhc2gpO1xuICAgICAgICBpZiAocHJldmlvdXMpIHtcbiAgICAgICAgICBhd2FpdCBjb21tZW50cy51cGRhdGVDb21tZW50KHByZXZpb3VzLCBoYXNoLCBzdGFja0NvbW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF3YWl0IGNvbW1lbnRzLmNyZWF0ZUNvbW1lbnQoaGFzaCwgc3RhY2tDb21tZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29tbWVudFN0YWdlKGNvbW1lbnRzOiBDb21tZW50cywgaGFzaDogc3RyaW5nLCBjb21tZW50OiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IHByZXZpb3VzID0gYXdhaXQgY29tbWVudHMuZmluZFByZXZpb3VzKGhhc2gpO1xuICAgIGlmIChwcmV2aW91cykge1xuICAgICAgYXdhaXQgY29tbWVudHMudXBkYXRlQ29tbWVudChwcmV2aW91cywgaGFzaCwgY29tbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IGNvbW1lbnRzLmNyZWF0ZUNvbW1lbnQoaGFzaCwgY29tbWVudCk7XG4gICAgfVxuXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBHaXRIdWIgY29tbWVudCBmb3IgdGhlIHN0YWdlXG4gICAqIFRoaXMgd2lsbCB0cnkgdG8gY3JlYXRlIGEgc2luZ2xlIGNvbW1lbnQgcGVyIHN0YWdlLCBidXQgaWYgdGhlIGNvbW1lbnRcbiAgICogaXMgdG9vIGxvbmcgaXQgd2lsbCBjcmVhdGUgYSBjb21tZW50IHBlciBzdGFja1xuICAgKiBAcGFyYW0gY29tbWVudHMgdGhlIGNvbW1lbnRzIG9iamVjdCB0byB1c2UgdG8gY3JlYXRlIHRoZSBjb21tZW50XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY29tbWVudFN0YWdlcyhjb21tZW50czogQ29tbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IFtzdGFnZU5hbWUsIGluZm9dIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuc3RhZ2VDb21tZW50cykpIHtcbiAgICAgIGNvbnN0IHN0YWdlQ29tbWVudCA9IHRoaXMuZ2V0Q29tbWVudEZvclN0YWdlKHN0YWdlTmFtZSk7XG4gICAgICBpZiAoc3RhZ2VDb21tZW50LmpvaW4oJ1xcbicpLmxlbmd0aCA+IE1BWF9DT01NRU5UX0xFTkdUSCkge1xuICAgICAgICBhd2FpdCB0aGlzLmNvbW1lbnRTdGFja3MoY29tbWVudHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U3RhZ2UoY29tbWVudHMsIGluZm8uaGFzaCwgc3RhZ2VDb21tZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGVyZSBhcmUgZGVzdHJ1Y3RpdmUgY2hhbmdlcyBpbiB0aGlzIHN0YWdlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGhhc0Rlc3RydWN0aXZlQ2hhbmdlcygpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IGNvbW1lbnRzIG9mIE9iamVjdC52YWx1ZXModGhpcy5zdGFnZUNvbW1lbnRzKSkge1xuICAgICAgaWYgKGNvbW1lbnRzLmRlc3RydWN0aXZlQ2hhbmdlcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBkaWZmU3RhY2soc3RhY2s6IFN0YWNrSW5mbyk6IFByb21pc2U8e2NvbW1lbnQ6IHN0cmluZ1tdOyBjaGFuZ2VzOiBudW1iZXJ9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YWNrRGlmZiA9IG5ldyBTdGFja0RpZmYoc3RhY2ssIHRoaXMuYWxsb3dlZERlc3Ryb3lUeXBlcyk7XG4gICAgICBjb25zdCB7IGRpZmYsIGNoYW5nZXMgfSA9IGF3YWl0IHN0YWNrRGlmZi5kaWZmU3RhY2soKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbW1lbnQ6IHRoaXMuZm9ybWF0U3RhY2tDb21tZW50KHN0YWNrLm5hbWUsIGRpZmYsIGNoYW5nZXMpLFxuICAgICAgICBjaGFuZ2VzOiBjaGFuZ2VzLmRlc3RydWN0aXZlQ2hhbmdlcy5sZW5ndGgsXG4gICAgICB9O1xuXG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwZXJmb3JtaW5nIHN0YWNrIGRpZmY6ICcsIGUpO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEVtb2ppKGNoYW5nZXM6IENoYW5nZURldGFpbHMpOiBzdHJpbmcge1xuICAgIGlmIChjaGFuZ2VzLmRlc3RydWN0aXZlQ2hhbmdlcy5sZW5ndGggfHwgY2hhbmdlcy5yZW1vdmVkUmVzb3VyY2VzKSB7XG4gICAgICByZXR1cm4gJzp4Oic7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2VzLnVwZGF0ZWRSZXNvdXJjZXMpIHtcbiAgICAgIHJldHVybiAnOnllbGxvd19jaXJjbGU6JztcbiAgICB9IGVsc2UgaWYgKGNoYW5nZXMuY3JlYXRlZFJlc291cmNlcykge1xuICAgICAgcmV0dXJuICc6c3BhcmtsZTonO1xuICAgIH1cbiAgICByZXR1cm4gJzp3aGl0ZV9jaGVja19tYXJrOic7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFN0YWNrQ29tbWVudChzdGFja05hbWU6IHN0cmluZywgZGlmZjogVGVtcGxhdGVEaWZmLCBjaGFuZ2VzOiBDaGFuZ2VEZXRhaWxzKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IG91dHB1dDogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBlbW9qaSA9IHRoaXMuZ2V0RW1vamkoY2hhbmdlcyk7XG4gICAgaWYgKGRpZmYuaXNFbXB0eSkge1xuICAgICAgb3V0cHV0LnB1c2goYE5vIENoYW5nZXMgZm9yIHN0YWNrOiAke3N0YWNrTmFtZX0gJHtlbW9qaX1gKTtcbiAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgfVxuICAgIG91dHB1dC5wdXNoKC4uLltcbiAgICAgIGAjIyMjIERpZmYgZm9yIHN0YWNrOiAke3N0YWNrTmFtZX0gLSBgK1xuICAgICAgICBgKioqJHtjaGFuZ2VzLmNyZWF0ZWRSZXNvdXJjZXN9IHRvIGFkZCwgJHtjaGFuZ2VzLnVwZGF0ZWRSZXNvdXJjZXN9IHRvIHVwZGF0ZSwgJHtjaGFuZ2VzLnJlbW92ZWRSZXNvdXJjZXN9IHRvIGRlc3Ryb3kqKiogIGArXG4gICAgICAgIGVtb2ppLFxuICAgICAgJzxkZXRhaWxzPjxzdW1tYXJ5PkRldGFpbHM8L3N1bW1hcnk+JyxcbiAgICAgICcnLFxuICAgIF0pO1xuICAgIGlmIChjaGFuZ2VzLnVua25vd25FbnZpcm9ubWVudCkge1xuICAgICAgb3V0cHV0LnB1c2goJz4gWyFJTkZPXVxcbj4gKioqVW5rbm93biBFbnZpcm9ubWVudCoqKiA6aW5mb3JtYXRpb25fc291cmNlOicpO1xuICAgICAgb3V0cHV0LnB1c2goJz4gVGhpcyBzdGFjayBoYXMgYW4gdW5rbm93biBlbnZpcm9ubWVudCB3aGljaCBtYXkgbWVhbiB0aGUgZGlmZiBpcyBwZXJmb3JtZWQgYWdhaW5zdCB0aGUgd3JvbmcgZW52aXJvbm1lbnQnKTtcbiAgICAgIG91dHB1dC5wdXNoKGA+IEVudmlyb25tbWVudCB1c2VkICR7Y2hhbmdlcy51bmtub3duRW52aXJvbm1lbnR9YCk7XG4gICAgICBvdXRwdXQucHVzaCgnJyk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmRlc3RydWN0aXZlQ2hhbmdlcy5sZW5ndGgpIHtcbiAgICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICAgIG91dHB1dC5wdXNoKCc+IFshV0FSTklOR11cXG4+ICoqKkRlc3RydWN0aXZlIENoYW5nZXMqKiogOmJhbmdiYW5nOicpLFxuICAgICAgY2hhbmdlcy5kZXN0cnVjdGl2ZUNoYW5nZXMuZm9yRWFjaChjaGFuZ2UgPT4ge1xuICAgICAgICBvdXRwdXQucHVzaChcbiAgICAgICAgICBgPiAqKlN0YWNrOiAke2NoYW5nZS5zdGFja05hbWV9IC0gUmVzb3VyY2U6ICR7Y2hhbmdlLmxvZ2ljYWxJZH0gLSBJbXBhY3Q6KiogKioqJHtjaGFuZ2UuaW1wYWN0fSoqKmAsXG4gICAgICAgICk7XG4gICAgICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCB3cml0YWJsZSA9IG5ldyBTdHJpbmdXcml0YWJsZSh7fSk7XG4gICAgZm9ybWF0RGlmZmVyZW5jZXMod3JpdGFibGUsIGRpZmYpO1xuXG4gICAgb3V0cHV0LnB1c2goJycpO1xuICAgIG91dHB1dC5wdXNoKCdgYGBzaGVsbCcpO1xuICAgIG91dHB1dC5wdXNoKHdyaXRhYmxlLmRhdGEpO1xuICAgIG91dHB1dC5wdXNoKCdgYGAnKTtcbiAgICBvdXRwdXQucHVzaCgnPC9kZXRhaWxzPicpO1xuICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICByZXR1cm4gb3V0cHV0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb21tZW50Rm9yU3RhY2soc3RhZ2VOYW1lOiBzdHJpbmcsIHN0YWNrTmFtZTogc3RyaW5nLCBjb21tZW50OiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBvdXRwdXQ6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKCFjb21tZW50Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICB9XG4gICAgb3V0cHV0LnB1c2goYCMjIyBEaWZmIGZvciBzdGFjazogJHtzdGFnZU5hbWV9IC8gJHtzdGFja05hbWV9YCk7XG5cbiAgICByZXR1cm4gb3V0cHV0LmNvbmNhdChjb21tZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29tbWVudEZvclN0YWdlKHN0YWdlTmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IG91dHB1dDogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBzdGFnZUNvbW1lbnRzID0gdGhpcy5zdGFnZUNvbW1lbnRzW3N0YWdlTmFtZV07XG4gICAgY29uc3QgY29tbWVudHMgPSBPYmplY3QudmFsdWVzKHRoaXMuc3RhZ2VDb21tZW50c1tzdGFnZU5hbWVdLnN0YWNrQ29tbWVudHMpLmZsYXRNYXAoeCA9PiB4KTtcbiAgICBpZiAoIWNvbW1lbnRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICB9XG4gICAgb3V0cHV0LnB1c2goYCMjIyBEaWZmIGZvciBzdGFnZTogJHtzdGFnZU5hbWV9YCk7XG5cbiAgICBpZiAoc3RhZ2VDb21tZW50cy5kZXN0cnVjdGl2ZUNoYW5nZXMpIHtcbiAgICAgIG91dHB1dC5wdXNoKGA+IFshV0FSTklOR11cXG4+ICR7c3RhZ2VDb21tZW50cy5kZXN0cnVjdGl2ZUNoYW5nZXN9IERlc3RydWN0aXZlIENoYW5nZXNgKTtcbiAgICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dC5jb25jYXQoY29tbWVudHMpO1xuICB9XG59XG5cbmNsYXNzIFN0cmluZ1dyaXRhYmxlIGV4dGVuZHMgV3JpdGFibGUge1xuICBwdWJsaWMgZGF0YTogc3RyaW5nO1xuICBwcml2YXRlIF9kZWNvZGVyOiBTdHJpbmdEZWNvZGVyO1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBXcml0YWJsZU9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcbiAgICB0aGlzLl9kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIoKTtcbiAgICB0aGlzLmRhdGEgPSAnJztcbiAgfVxuXG4gIF93cml0ZShjaHVuazogYW55LCBlbmNvZGluZzogc3RyaW5nLCBjYWxsYmFjazogKGVycm9yPzogRXJyb3IgfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgaWYgKGVuY29kaW5nID09PSAnYnVmZmVyJykge1xuICAgICAgY2h1bmsgPSB0aGlzLl9kZWNvZGVyLndyaXRlKGNodW5rKTtcbiAgICB9XG5cbiAgICB0aGlzLmRhdGEgKz0gY2h1bms7XG4gICAgY2FsbGJhY2soKTtcbiAgfVxuXG4gIF9maW5hbChjYWxsYmFjazogKGVycm9yPzogRXJyb3IgfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhICs9IHRoaXMuX2RlY29kZXIuZW5kKCk7XG4gICAgY2FsbGJhY2soKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtZDVIYXNoKHZhbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNyeXB0by5jcmVhdGVIYXNoKCdtZDUnKS51cGRhdGUodmFsKS5kaWdlc3QoJ2hleCcpO1xufTtcbiJdfQ==","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.issue = exports.issueCommand = void 0;\nconst os = __importStar(require(\"os\"));\nconst utils_1 = require(\"./utils\");\n/**\n * Commands\n *\n * Command Format:\n * ::name key=value,key=value::message\n *\n * Examples:\n * ::warning::This is the message\n * ::set-env name=MY_VAR::some value\n */\nfunction issueCommand(command, properties, message) {\n const cmd = new Command(command, properties, message);\n process.stdout.write(cmd.toString() + os.EOL);\n}\nexports.issueCommand = issueCommand;\nfunction issue(name, message = '') {\n issueCommand(name, {}, message);\n}\nexports.issue = issue;\nconst CMD_STRING = '::';\nclass Command {\n constructor(command, properties, message) {\n if (!command) {\n command = 'missing.command';\n }\n this.command = command;\n this.properties = properties;\n this.message = message;\n }\n toString() {\n let cmdStr = CMD_STRING + this.command;\n if (this.properties && Object.keys(this.properties).length > 0) {\n cmdStr += ' ';\n let first = true;\n for (const key in this.properties) {\n if (this.properties.hasOwnProperty(key)) {\n const val = this.properties[key];\n if (val) {\n if (first) {\n first = false;\n }\n else {\n cmdStr += ',';\n }\n cmdStr += `${key}=${escapeProperty(val)}`;\n }\n }\n }\n }\n cmdStr += `${CMD_STRING}${escapeData(this.message)}`;\n return cmdStr;\n }\n}\nfunction escapeData(s) {\n return utils_1.toCommandValue(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A');\n}\nfunction escapeProperty(s) {\n return utils_1.toCommandValue(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A')\n .replace(/:/g, '%3A')\n .replace(/,/g, '%2C');\n}\n//# sourceMappingURL=command.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0;\nconst command_1 = require(\"./command\");\nconst file_command_1 = require(\"./file-command\");\nconst utils_1 = require(\"./utils\");\nconst os = __importStar(require(\"os\"));\nconst path = __importStar(require(\"path\"));\nconst oidc_utils_1 = require(\"./oidc-utils\");\n/**\n * The code to exit an action\n */\nvar ExitCode;\n(function (ExitCode) {\n /**\n * A code indicating that the action was successful\n */\n ExitCode[ExitCode[\"Success\"] = 0] = \"Success\";\n /**\n * A code indicating that the action was a failure\n */\n ExitCode[ExitCode[\"Failure\"] = 1] = \"Failure\";\n})(ExitCode = exports.ExitCode || (exports.ExitCode = {}));\n//-----------------------------------------------------------------------\n// Variables\n//-----------------------------------------------------------------------\n/**\n * Sets env variable for this action and future actions in the job\n * @param name the name of the variable to set\n * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction exportVariable(name, val) {\n const convertedVal = utils_1.toCommandValue(val);\n process.env[name] = convertedVal;\n const filePath = process.env['GITHUB_ENV'] || '';\n if (filePath) {\n return file_command_1.issueFileCommand('ENV', file_command_1.prepareKeyValueMessage(name, val));\n }\n command_1.issueCommand('set-env', { name }, convertedVal);\n}\nexports.exportVariable = exportVariable;\n/**\n * Registers a secret which will get masked from logs\n * @param secret value of the secret\n */\nfunction setSecret(secret) {\n command_1.issueCommand('add-mask', {}, secret);\n}\nexports.setSecret = setSecret;\n/**\n * Prepends inputPath to the PATH (for this action and future actions)\n * @param inputPath\n */\nfunction addPath(inputPath) {\n const filePath = process.env['GITHUB_PATH'] || '';\n if (filePath) {\n file_command_1.issueFileCommand('PATH', inputPath);\n }\n else {\n command_1.issueCommand('add-path', {}, inputPath);\n }\n process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;\n}\nexports.addPath = addPath;\n/**\n * Gets the value of an input.\n * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed.\n * Returns an empty string if the value is not defined.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string\n */\nfunction getInput(name, options) {\n const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || '';\n if (options && options.required && !val) {\n throw new Error(`Input required and not supplied: ${name}`);\n }\n if (options && options.trimWhitespace === false) {\n return val;\n }\n return val.trim();\n}\nexports.getInput = getInput;\n/**\n * Gets the values of an multiline input. Each value is also trimmed.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string[]\n *\n */\nfunction getMultilineInput(name, options) {\n const inputs = getInput(name, options)\n .split('\\n')\n .filter(x => x !== '');\n if (options && options.trimWhitespace === false) {\n return inputs;\n }\n return inputs.map(input => input.trim());\n}\nexports.getMultilineInput = getMultilineInput;\n/**\n * Gets the input value of the boolean type in the YAML 1.2 \"core schema\" specification.\n * Support boolean input list: `true | True | TRUE | false | False | FALSE` .\n * The return value is also in boolean type.\n * ref: https://yaml.org/spec/1.2/spec.html#id2804923\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns boolean\n */\nfunction getBooleanInput(name, options) {\n const trueValue = ['true', 'True', 'TRUE'];\n const falseValue = ['false', 'False', 'FALSE'];\n const val = getInput(name, options);\n if (trueValue.includes(val))\n return true;\n if (falseValue.includes(val))\n return false;\n throw new TypeError(`Input does not meet YAML 1.2 \"Core Schema\" specification: ${name}\\n` +\n `Support boolean input list: \\`true | True | TRUE | false | False | FALSE\\``);\n}\nexports.getBooleanInput = getBooleanInput;\n/**\n * Sets the value of an output.\n *\n * @param name name of the output to set\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction setOutput(name, value) {\n const filePath = process.env['GITHUB_OUTPUT'] || '';\n if (filePath) {\n return file_command_1.issueFileCommand('OUTPUT', file_command_1.prepareKeyValueMessage(name, value));\n }\n process.stdout.write(os.EOL);\n command_1.issueCommand('set-output', { name }, utils_1.toCommandValue(value));\n}\nexports.setOutput = setOutput;\n/**\n * Enables or disables the echoing of commands into stdout for the rest of the step.\n * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.\n *\n */\nfunction setCommandEcho(enabled) {\n command_1.issue('echo', enabled ? 'on' : 'off');\n}\nexports.setCommandEcho = setCommandEcho;\n//-----------------------------------------------------------------------\n// Results\n//-----------------------------------------------------------------------\n/**\n * Sets the action status to failed.\n * When the action exits it will be with an exit code of 1\n * @param message add error issue message\n */\nfunction setFailed(message) {\n process.exitCode = ExitCode.Failure;\n error(message);\n}\nexports.setFailed = setFailed;\n//-----------------------------------------------------------------------\n// Logging Commands\n//-----------------------------------------------------------------------\n/**\n * Gets whether Actions Step Debug is on or not\n */\nfunction isDebug() {\n return process.env['RUNNER_DEBUG'] === '1';\n}\nexports.isDebug = isDebug;\n/**\n * Writes debug message to user log\n * @param message debug message\n */\nfunction debug(message) {\n command_1.issueCommand('debug', {}, message);\n}\nexports.debug = debug;\n/**\n * Adds an error issue\n * @param message error issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction error(message, properties = {}) {\n command_1.issueCommand('error', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);\n}\nexports.error = error;\n/**\n * Adds a warning issue\n * @param message warning issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction warning(message, properties = {}) {\n command_1.issueCommand('warning', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);\n}\nexports.warning = warning;\n/**\n * Adds a notice issue\n * @param message notice issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction notice(message, properties = {}) {\n command_1.issueCommand('notice', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);\n}\nexports.notice = notice;\n/**\n * Writes info to log with console.log.\n * @param message info message\n */\nfunction info(message) {\n process.stdout.write(message + os.EOL);\n}\nexports.info = info;\n/**\n * Begin an output group.\n *\n * Output until the next `groupEnd` will be foldable in this group\n *\n * @param name The name of the output group\n */\nfunction startGroup(name) {\n command_1.issue('group', name);\n}\nexports.startGroup = startGroup;\n/**\n * End an output group.\n */\nfunction endGroup() {\n command_1.issue('endgroup');\n}\nexports.endGroup = endGroup;\n/**\n * Wrap an asynchronous function call in a group.\n *\n * Returns the same type as the function itself.\n *\n * @param name The name of the group\n * @param fn The function to wrap in the group\n */\nfunction group(name, fn) {\n return __awaiter(this, void 0, void 0, function* () {\n startGroup(name);\n let result;\n try {\n result = yield fn();\n }\n finally {\n endGroup();\n }\n return result;\n });\n}\nexports.group = group;\n//-----------------------------------------------------------------------\n// Wrapper action state\n//-----------------------------------------------------------------------\n/**\n * Saves state for current action, the state can only be retrieved by this action's post job execution.\n *\n * @param name name of the state to store\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction saveState(name, value) {\n const filePath = process.env['GITHUB_STATE'] || '';\n if (filePath) {\n return file_command_1.issueFileCommand('STATE', file_command_1.prepareKeyValueMessage(name, value));\n }\n command_1.issueCommand('save-state', { name }, utils_1.toCommandValue(value));\n}\nexports.saveState = saveState;\n/**\n * Gets the value of an state set by this action's main execution.\n *\n * @param name name of the state to get\n * @returns string\n */\nfunction getState(name) {\n return process.env[`STATE_${name}`] || '';\n}\nexports.getState = getState;\nfunction getIDToken(aud) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield oidc_utils_1.OidcClient.getIDToken(aud);\n });\n}\nexports.getIDToken = getIDToken;\n/**\n * Summary exports\n */\nvar summary_1 = require(\"./summary\");\nObject.defineProperty(exports, \"summary\", { enumerable: true, get: function () { return summary_1.summary; } });\n/**\n * @deprecated use core.summary\n */\nvar summary_2 = require(\"./summary\");\nObject.defineProperty(exports, \"markdownSummary\", { enumerable: true, get: function () { return summary_2.markdownSummary; } });\n/**\n * Path exports\n */\nvar path_utils_1 = require(\"./path-utils\");\nObject.defineProperty(exports, \"toPosixPath\", { enumerable: true, get: function () { return path_utils_1.toPosixPath; } });\nObject.defineProperty(exports, \"toWin32Path\", { enumerable: true, get: function () { return path_utils_1.toWin32Path; } });\nObject.defineProperty(exports, \"toPlatformPath\", { enumerable: true, get: function () { return path_utils_1.toPlatformPath; } });\n//# sourceMappingURL=core.js.map","\"use strict\";\n// For internal use, subject to change.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.prepareKeyValueMessage = exports.issueFileCommand = void 0;\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst fs = __importStar(require(\"fs\"));\nconst os = __importStar(require(\"os\"));\nconst uuid_1 = require(\"uuid\");\nconst utils_1 = require(\"./utils\");\nfunction issueFileCommand(command, message) {\n const filePath = process.env[`GITHUB_${command}`];\n if (!filePath) {\n throw new Error(`Unable to find environment variable for file command ${command}`);\n }\n if (!fs.existsSync(filePath)) {\n throw new Error(`Missing file at path: ${filePath}`);\n }\n fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, {\n encoding: 'utf8'\n });\n}\nexports.issueFileCommand = issueFileCommand;\nfunction prepareKeyValueMessage(key, value) {\n const delimiter = `ghadelimiter_${uuid_1.v4()}`;\n const convertedValue = utils_1.toCommandValue(value);\n // These should realistically never happen, but just in case someone finds a\n // way to exploit uuid generation let's not allow keys or values that contain\n // the delimiter.\n if (key.includes(delimiter)) {\n throw new Error(`Unexpected input: name should not contain the delimiter \"${delimiter}\"`);\n }\n if (convertedValue.includes(delimiter)) {\n throw new Error(`Unexpected input: value should not contain the delimiter \"${delimiter}\"`);\n }\n return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`;\n}\nexports.prepareKeyValueMessage = prepareKeyValueMessage;\n//# sourceMappingURL=file-command.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OidcClient = void 0;\nconst http_client_1 = require(\"@actions/http-client\");\nconst auth_1 = require(\"@actions/http-client/lib/auth\");\nconst core_1 = require(\"./core\");\nclass OidcClient {\n static createHttpClient(allowRetry = true, maxRetry = 10) {\n const requestOptions = {\n allowRetries: allowRetry,\n maxRetries: maxRetry\n };\n return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions);\n }\n static getRequestToken() {\n const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN'];\n if (!token) {\n throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable');\n }\n return token;\n }\n static getIDTokenUrl() {\n const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL'];\n if (!runtimeUrl) {\n throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable');\n }\n return runtimeUrl;\n }\n static getCall(id_token_url) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const httpclient = OidcClient.createHttpClient();\n const res = yield httpclient\n .getJson(id_token_url)\n .catch(error => {\n throw new Error(`Failed to get ID Token. \\n \n Error Code : ${error.statusCode}\\n \n Error Message: ${error.message}`);\n });\n const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value;\n if (!id_token) {\n throw new Error('Response json body do not have ID Token field');\n }\n return id_token;\n });\n }\n static getIDToken(audience) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n // New ID Token is requested from action service\n let id_token_url = OidcClient.getIDTokenUrl();\n if (audience) {\n const encodedAudience = encodeURIComponent(audience);\n id_token_url = `${id_token_url}&audience=${encodedAudience}`;\n }\n core_1.debug(`ID token url is ${id_token_url}`);\n const id_token = yield OidcClient.getCall(id_token_url);\n core_1.setSecret(id_token);\n return id_token;\n }\n catch (error) {\n throw new Error(`Error message: ${error.message}`);\n }\n });\n }\n}\nexports.OidcClient = OidcClient;\n//# sourceMappingURL=oidc-utils.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0;\nconst path = __importStar(require(\"path\"));\n/**\n * toPosixPath converts the given path to the posix form. On Windows, \\\\ will be\n * replaced with /.\n *\n * @param pth. Path to transform.\n * @return string Posix path.\n */\nfunction toPosixPath(pth) {\n return pth.replace(/[\\\\]/g, '/');\n}\nexports.toPosixPath = toPosixPath;\n/**\n * toWin32Path converts the given path to the win32 form. On Linux, / will be\n * replaced with \\\\.\n *\n * @param pth. Path to transform.\n * @return string Win32 path.\n */\nfunction toWin32Path(pth) {\n return pth.replace(/[/]/g, '\\\\');\n}\nexports.toWin32Path = toWin32Path;\n/**\n * toPlatformPath converts the given path to a platform-specific path. It does\n * this by replacing instances of / and \\ with the platform-specific path\n * separator.\n *\n * @param pth The path to platformize.\n * @return string The platform-specific path.\n */\nfunction toPlatformPath(pth) {\n return pth.replace(/[/\\\\]/g, path.sep);\n}\nexports.toPlatformPath = toPlatformPath;\n//# sourceMappingURL=path-utils.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0;\nconst os_1 = require(\"os\");\nconst fs_1 = require(\"fs\");\nconst { access, appendFile, writeFile } = fs_1.promises;\nexports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY';\nexports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary';\nclass Summary {\n constructor() {\n this._buffer = '';\n }\n /**\n * Finds the summary file path from the environment, rejects if env var is not found or file does not exist\n * Also checks r/w permissions.\n *\n * @returns step summary file path\n */\n filePath() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._filePath) {\n return this._filePath;\n }\n const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR];\n if (!pathFromEnv) {\n throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`);\n }\n try {\n yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK);\n }\n catch (_a) {\n throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`);\n }\n this._filePath = pathFromEnv;\n return this._filePath;\n });\n }\n /**\n * Wraps content in an HTML tag, adding any HTML attributes\n *\n * @param {string} tag HTML tag to wrap\n * @param {string | null} content content within the tag\n * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add\n *\n * @returns {string} content wrapped in HTML element\n */\n wrap(tag, content, attrs = {}) {\n const htmlAttrs = Object.entries(attrs)\n .map(([key, value]) => ` ${key}=\"${value}\"`)\n .join('');\n if (!content) {\n return `<${tag}${htmlAttrs}>`;\n }\n return `<${tag}${htmlAttrs}>${content}`;\n }\n /**\n * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default.\n *\n * @param {SummaryWriteOptions} [options] (optional) options for write operation\n *\n * @returns {Promise} summary instance\n */\n write(options) {\n return __awaiter(this, void 0, void 0, function* () {\n const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite);\n const filePath = yield this.filePath();\n const writeFunc = overwrite ? writeFile : appendFile;\n yield writeFunc(filePath, this._buffer, { encoding: 'utf8' });\n return this.emptyBuffer();\n });\n }\n /**\n * Clears the summary buffer and wipes the summary file\n *\n * @returns {Summary} summary instance\n */\n clear() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.emptyBuffer().write({ overwrite: true });\n });\n }\n /**\n * Returns the current summary buffer as a string\n *\n * @returns {string} string of summary buffer\n */\n stringify() {\n return this._buffer;\n }\n /**\n * If the summary buffer is empty\n *\n * @returns {boolen} true if the buffer is empty\n */\n isEmptyBuffer() {\n return this._buffer.length === 0;\n }\n /**\n * Resets the summary buffer without writing to summary file\n *\n * @returns {Summary} summary instance\n */\n emptyBuffer() {\n this._buffer = '';\n return this;\n }\n /**\n * Adds raw text to the summary buffer\n *\n * @param {string} text content to add\n * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false)\n *\n * @returns {Summary} summary instance\n */\n addRaw(text, addEOL = false) {\n this._buffer += text;\n return addEOL ? this.addEOL() : this;\n }\n /**\n * Adds the operating system-specific end-of-line marker to the buffer\n *\n * @returns {Summary} summary instance\n */\n addEOL() {\n return this.addRaw(os_1.EOL);\n }\n /**\n * Adds an HTML codeblock to the summary buffer\n *\n * @param {string} code content to render within fenced code block\n * @param {string} lang (optional) language to syntax highlight code\n *\n * @returns {Summary} summary instance\n */\n addCodeBlock(code, lang) {\n const attrs = Object.assign({}, (lang && { lang }));\n const element = this.wrap('pre', this.wrap('code', code), attrs);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML list to the summary buffer\n *\n * @param {string[]} items list of items to render\n * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false)\n *\n * @returns {Summary} summary instance\n */\n addList(items, ordered = false) {\n const tag = ordered ? 'ol' : 'ul';\n const listItems = items.map(item => this.wrap('li', item)).join('');\n const element = this.wrap(tag, listItems);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML table to the summary buffer\n *\n * @param {SummaryTableCell[]} rows table rows\n *\n * @returns {Summary} summary instance\n */\n addTable(rows) {\n const tableBody = rows\n .map(row => {\n const cells = row\n .map(cell => {\n if (typeof cell === 'string') {\n return this.wrap('td', cell);\n }\n const { header, data, colspan, rowspan } = cell;\n const tag = header ? 'th' : 'td';\n const attrs = Object.assign(Object.assign({}, (colspan && { colspan })), (rowspan && { rowspan }));\n return this.wrap(tag, data, attrs);\n })\n .join('');\n return this.wrap('tr', cells);\n })\n .join('');\n const element = this.wrap('table', tableBody);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds a collapsable HTML details element to the summary buffer\n *\n * @param {string} label text for the closed state\n * @param {string} content collapsable content\n *\n * @returns {Summary} summary instance\n */\n addDetails(label, content) {\n const element = this.wrap('details', this.wrap('summary', label) + content);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML image tag to the summary buffer\n *\n * @param {string} src path to the image you to embed\n * @param {string} alt text description of the image\n * @param {SummaryImageOptions} options (optional) addition image attributes\n *\n * @returns {Summary} summary instance\n */\n addImage(src, alt, options) {\n const { width, height } = options || {};\n const attrs = Object.assign(Object.assign({}, (width && { width })), (height && { height }));\n const element = this.wrap('img', null, Object.assign({ src, alt }, attrs));\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML section heading element\n *\n * @param {string} text heading text\n * @param {number | string} [level=1] (optional) the heading level, default: 1\n *\n * @returns {Summary} summary instance\n */\n addHeading(text, level) {\n const tag = `h${level}`;\n const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag)\n ? tag\n : 'h1';\n const element = this.wrap(allowedTag, text);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML thematic break (
) to the summary buffer\n *\n * @returns {Summary} summary instance\n */\n addSeparator() {\n const element = this.wrap('hr', null);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML line break (
) to the summary buffer\n *\n * @returns {Summary} summary instance\n */\n addBreak() {\n const element = this.wrap('br', null);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML blockquote to the summary buffer\n *\n * @param {string} text quote text\n * @param {string} cite (optional) citation url\n *\n * @returns {Summary} summary instance\n */\n addQuote(text, cite) {\n const attrs = Object.assign({}, (cite && { cite }));\n const element = this.wrap('blockquote', text, attrs);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML anchor tag to the summary buffer\n *\n * @param {string} text link text/content\n * @param {string} href hyperlink\n *\n * @returns {Summary} summary instance\n */\n addLink(text, href) {\n const element = this.wrap('a', text, { href });\n return this.addRaw(element).addEOL();\n }\n}\nconst _summary = new Summary();\n/**\n * @deprecated use `core.summary`\n */\nexports.markdownSummary = _summary;\nexports.summary = _summary;\n//# sourceMappingURL=summary.js.map","\"use strict\";\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toCommandProperties = exports.toCommandValue = void 0;\n/**\n * Sanitizes an input into a string so it can be passed into issueCommand safely\n * @param input input to sanitize into a string\n */\nfunction toCommandValue(input) {\n if (input === null || input === undefined) {\n return '';\n }\n else if (typeof input === 'string' || input instanceof String) {\n return input;\n }\n return JSON.stringify(input);\n}\nexports.toCommandValue = toCommandValue;\n/**\n *\n * @param annotationProperties\n * @returns The command properties to send with the actual annotation command\n * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646\n */\nfunction toCommandProperties(annotationProperties) {\n if (!Object.keys(annotationProperties).length) {\n return {};\n }\n return {\n title: annotationProperties.title,\n file: annotationProperties.file,\n line: annotationProperties.startLine,\n endLine: annotationProperties.endLine,\n col: annotationProperties.startColumn,\n endColumn: annotationProperties.endColumn\n };\n}\nexports.toCommandProperties = toCommandProperties;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Context = void 0;\nconst fs_1 = require(\"fs\");\nconst os_1 = require(\"os\");\nclass Context {\n /**\n * Hydrate the context from the environment\n */\n constructor() {\n var _a, _b, _c;\n this.payload = {};\n if (process.env.GITHUB_EVENT_PATH) {\n if ((0, fs_1.existsSync)(process.env.GITHUB_EVENT_PATH)) {\n this.payload = JSON.parse((0, fs_1.readFileSync)(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' }));\n }\n else {\n const path = process.env.GITHUB_EVENT_PATH;\n process.stdout.write(`GITHUB_EVENT_PATH ${path} does not exist${os_1.EOL}`);\n }\n }\n this.eventName = process.env.GITHUB_EVENT_NAME;\n this.sha = process.env.GITHUB_SHA;\n this.ref = process.env.GITHUB_REF;\n this.workflow = process.env.GITHUB_WORKFLOW;\n this.action = process.env.GITHUB_ACTION;\n this.actor = process.env.GITHUB_ACTOR;\n this.job = process.env.GITHUB_JOB;\n this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10);\n this.runId = parseInt(process.env.GITHUB_RUN_ID, 10);\n this.apiUrl = (_a = process.env.GITHUB_API_URL) !== null && _a !== void 0 ? _a : `https://api.github.com`;\n this.serverUrl = (_b = process.env.GITHUB_SERVER_URL) !== null && _b !== void 0 ? _b : `https://github.com`;\n this.graphqlUrl =\n (_c = process.env.GITHUB_GRAPHQL_URL) !== null && _c !== void 0 ? _c : `https://api.github.com/graphql`;\n }\n get issue() {\n const payload = this.payload;\n return Object.assign(Object.assign({}, this.repo), { number: (payload.issue || payload.pull_request || payload).number });\n }\n get repo() {\n if (process.env.GITHUB_REPOSITORY) {\n const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/');\n return { owner, repo };\n }\n if (this.payload.repository) {\n return {\n owner: this.payload.repository.owner.login,\n repo: this.payload.repository.name\n };\n }\n throw new Error(\"context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'\");\n }\n}\nexports.Context = Context;\n//# sourceMappingURL=context.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOctokit = exports.context = void 0;\nconst Context = __importStar(require(\"./context\"));\nconst utils_1 = require(\"./utils\");\nexports.context = new Context.Context();\n/**\n * Returns a hydrated octokit ready to use for GitHub Actions\n *\n * @param token the repo PAT or GITHUB_TOKEN\n * @param options other options to set\n */\nfunction getOctokit(token, options, ...additionalPlugins) {\n const GitHubWithPlugins = utils_1.GitHub.plugin(...additionalPlugins);\n return new GitHubWithPlugins((0, utils_1.getOctokitOptions)(token, options));\n}\nexports.getOctokit = getOctokit;\n//# sourceMappingURL=github.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getApiBaseUrl = exports.getProxyFetch = exports.getProxyAgentDispatcher = exports.getProxyAgent = exports.getAuthString = void 0;\nconst httpClient = __importStar(require(\"@actions/http-client\"));\nconst undici_1 = require(\"undici\");\nfunction getAuthString(token, options) {\n if (!token && !options.auth) {\n throw new Error('Parameter token or opts.auth is required');\n }\n else if (token && options.auth) {\n throw new Error('Parameters token and opts.auth may not both be specified');\n }\n return typeof options.auth === 'string' ? options.auth : `token ${token}`;\n}\nexports.getAuthString = getAuthString;\nfunction getProxyAgent(destinationUrl) {\n const hc = new httpClient.HttpClient();\n return hc.getAgent(destinationUrl);\n}\nexports.getProxyAgent = getProxyAgent;\nfunction getProxyAgentDispatcher(destinationUrl) {\n const hc = new httpClient.HttpClient();\n return hc.getAgentDispatcher(destinationUrl);\n}\nexports.getProxyAgentDispatcher = getProxyAgentDispatcher;\nfunction getProxyFetch(destinationUrl) {\n const httpDispatcher = getProxyAgentDispatcher(destinationUrl);\n const proxyFetch = (url, opts) => __awaiter(this, void 0, void 0, function* () {\n return (0, undici_1.fetch)(url, Object.assign(Object.assign({}, opts), { dispatcher: httpDispatcher }));\n });\n return proxyFetch;\n}\nexports.getProxyFetch = getProxyFetch;\nfunction getApiBaseUrl() {\n return process.env['GITHUB_API_URL'] || 'https://api.github.com';\n}\nexports.getApiBaseUrl = getApiBaseUrl;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOctokitOptions = exports.GitHub = exports.defaults = exports.context = void 0;\nconst Context = __importStar(require(\"./context\"));\nconst Utils = __importStar(require(\"./internal/utils\"));\n// octokit + plugins\nconst core_1 = require(\"@octokit/core\");\nconst plugin_rest_endpoint_methods_1 = require(\"@octokit/plugin-rest-endpoint-methods\");\nconst plugin_paginate_rest_1 = require(\"@octokit/plugin-paginate-rest\");\nexports.context = new Context.Context();\nconst baseUrl = Utils.getApiBaseUrl();\nexports.defaults = {\n baseUrl,\n request: {\n agent: Utils.getProxyAgent(baseUrl),\n fetch: Utils.getProxyFetch(baseUrl)\n }\n};\nexports.GitHub = core_1.Octokit.plugin(plugin_rest_endpoint_methods_1.restEndpointMethods, plugin_paginate_rest_1.paginateRest).defaults(exports.defaults);\n/**\n * Convience function to correctly format Octokit Options to pass into the constructor.\n *\n * @param token the repo PAT or GITHUB_TOKEN\n * @param options other options to set\n */\nfunction getOctokitOptions(token, options) {\n const opts = Object.assign({}, options || {}); // Shallow clone - don't mutate the object provided by the caller\n // Auth\n const auth = Utils.getAuthString(token, opts);\n if (auth) {\n opts.auth = auth;\n }\n return opts;\n}\nexports.getOctokitOptions = getOctokitOptions;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0;\nclass BasicCredentialHandler {\n constructor(username, password) {\n this.username = username;\n this.password = password;\n }\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.BasicCredentialHandler = BasicCredentialHandler;\nclass BearerCredentialHandler {\n constructor(token) {\n this.token = token;\n }\n // currently implements pre-authorization\n // TODO: support preAuth = false where it hooks on 401\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Bearer ${this.token}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.BearerCredentialHandler = BearerCredentialHandler;\nclass PersonalAccessTokenCredentialHandler {\n constructor(token) {\n this.token = token;\n }\n // currently implements pre-authorization\n // TODO: support preAuth = false where it hooks on 401\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler;\n//# sourceMappingURL=auth.js.map","\"use strict\";\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0;\nconst http = __importStar(require(\"http\"));\nconst https = __importStar(require(\"https\"));\nconst pm = __importStar(require(\"./proxy\"));\nconst tunnel = __importStar(require(\"tunnel\"));\nconst undici_1 = require(\"undici\");\nvar HttpCodes;\n(function (HttpCodes) {\n HttpCodes[HttpCodes[\"OK\"] = 200] = \"OK\";\n HttpCodes[HttpCodes[\"MultipleChoices\"] = 300] = \"MultipleChoices\";\n HttpCodes[HttpCodes[\"MovedPermanently\"] = 301] = \"MovedPermanently\";\n HttpCodes[HttpCodes[\"ResourceMoved\"] = 302] = \"ResourceMoved\";\n HttpCodes[HttpCodes[\"SeeOther\"] = 303] = \"SeeOther\";\n HttpCodes[HttpCodes[\"NotModified\"] = 304] = \"NotModified\";\n HttpCodes[HttpCodes[\"UseProxy\"] = 305] = \"UseProxy\";\n HttpCodes[HttpCodes[\"SwitchProxy\"] = 306] = \"SwitchProxy\";\n HttpCodes[HttpCodes[\"TemporaryRedirect\"] = 307] = \"TemporaryRedirect\";\n HttpCodes[HttpCodes[\"PermanentRedirect\"] = 308] = \"PermanentRedirect\";\n HttpCodes[HttpCodes[\"BadRequest\"] = 400] = \"BadRequest\";\n HttpCodes[HttpCodes[\"Unauthorized\"] = 401] = \"Unauthorized\";\n HttpCodes[HttpCodes[\"PaymentRequired\"] = 402] = \"PaymentRequired\";\n HttpCodes[HttpCodes[\"Forbidden\"] = 403] = \"Forbidden\";\n HttpCodes[HttpCodes[\"NotFound\"] = 404] = \"NotFound\";\n HttpCodes[HttpCodes[\"MethodNotAllowed\"] = 405] = \"MethodNotAllowed\";\n HttpCodes[HttpCodes[\"NotAcceptable\"] = 406] = \"NotAcceptable\";\n HttpCodes[HttpCodes[\"ProxyAuthenticationRequired\"] = 407] = \"ProxyAuthenticationRequired\";\n HttpCodes[HttpCodes[\"RequestTimeout\"] = 408] = \"RequestTimeout\";\n HttpCodes[HttpCodes[\"Conflict\"] = 409] = \"Conflict\";\n HttpCodes[HttpCodes[\"Gone\"] = 410] = \"Gone\";\n HttpCodes[HttpCodes[\"TooManyRequests\"] = 429] = \"TooManyRequests\";\n HttpCodes[HttpCodes[\"InternalServerError\"] = 500] = \"InternalServerError\";\n HttpCodes[HttpCodes[\"NotImplemented\"] = 501] = \"NotImplemented\";\n HttpCodes[HttpCodes[\"BadGateway\"] = 502] = \"BadGateway\";\n HttpCodes[HttpCodes[\"ServiceUnavailable\"] = 503] = \"ServiceUnavailable\";\n HttpCodes[HttpCodes[\"GatewayTimeout\"] = 504] = \"GatewayTimeout\";\n})(HttpCodes || (exports.HttpCodes = HttpCodes = {}));\nvar Headers;\n(function (Headers) {\n Headers[\"Accept\"] = \"accept\";\n Headers[\"ContentType\"] = \"content-type\";\n})(Headers || (exports.Headers = Headers = {}));\nvar MediaTypes;\n(function (MediaTypes) {\n MediaTypes[\"ApplicationJson\"] = \"application/json\";\n})(MediaTypes || (exports.MediaTypes = MediaTypes = {}));\n/**\n * Returns the proxy URL, depending upon the supplied url and proxy environment variables.\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\n */\nfunction getProxyUrl(serverUrl) {\n const proxyUrl = pm.getProxyUrl(new URL(serverUrl));\n return proxyUrl ? proxyUrl.href : '';\n}\nexports.getProxyUrl = getProxyUrl;\nconst HttpRedirectCodes = [\n HttpCodes.MovedPermanently,\n HttpCodes.ResourceMoved,\n HttpCodes.SeeOther,\n HttpCodes.TemporaryRedirect,\n HttpCodes.PermanentRedirect\n];\nconst HttpResponseRetryCodes = [\n HttpCodes.BadGateway,\n HttpCodes.ServiceUnavailable,\n HttpCodes.GatewayTimeout\n];\nconst RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD'];\nconst ExponentialBackoffCeiling = 10;\nconst ExponentialBackoffTimeSlice = 5;\nclass HttpClientError extends Error {\n constructor(message, statusCode) {\n super(message);\n this.name = 'HttpClientError';\n this.statusCode = statusCode;\n Object.setPrototypeOf(this, HttpClientError.prototype);\n }\n}\nexports.HttpClientError = HttpClientError;\nclass HttpClientResponse {\n constructor(message) {\n this.message = message;\n }\n readBody() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n let output = Buffer.alloc(0);\n this.message.on('data', (chunk) => {\n output = Buffer.concat([output, chunk]);\n });\n this.message.on('end', () => {\n resolve(output.toString());\n });\n }));\n });\n }\n readBodyBuffer() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n const chunks = [];\n this.message.on('data', (chunk) => {\n chunks.push(chunk);\n });\n this.message.on('end', () => {\n resolve(Buffer.concat(chunks));\n });\n }));\n });\n }\n}\nexports.HttpClientResponse = HttpClientResponse;\nfunction isHttps(requestUrl) {\n const parsedUrl = new URL(requestUrl);\n return parsedUrl.protocol === 'https:';\n}\nexports.isHttps = isHttps;\nclass HttpClient {\n constructor(userAgent, handlers, requestOptions) {\n this._ignoreSslError = false;\n this._allowRedirects = true;\n this._allowRedirectDowngrade = false;\n this._maxRedirects = 50;\n this._allowRetries = false;\n this._maxRetries = 1;\n this._keepAlive = false;\n this._disposed = false;\n this.userAgent = userAgent;\n this.handlers = handlers || [];\n this.requestOptions = requestOptions;\n if (requestOptions) {\n if (requestOptions.ignoreSslError != null) {\n this._ignoreSslError = requestOptions.ignoreSslError;\n }\n this._socketTimeout = requestOptions.socketTimeout;\n if (requestOptions.allowRedirects != null) {\n this._allowRedirects = requestOptions.allowRedirects;\n }\n if (requestOptions.allowRedirectDowngrade != null) {\n this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade;\n }\n if (requestOptions.maxRedirects != null) {\n this._maxRedirects = Math.max(requestOptions.maxRedirects, 0);\n }\n if (requestOptions.keepAlive != null) {\n this._keepAlive = requestOptions.keepAlive;\n }\n if (requestOptions.allowRetries != null) {\n this._allowRetries = requestOptions.allowRetries;\n }\n if (requestOptions.maxRetries != null) {\n this._maxRetries = requestOptions.maxRetries;\n }\n }\n }\n options(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('OPTIONS', requestUrl, null, additionalHeaders || {});\n });\n }\n get(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('GET', requestUrl, null, additionalHeaders || {});\n });\n }\n del(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('DELETE', requestUrl, null, additionalHeaders || {});\n });\n }\n post(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('POST', requestUrl, data, additionalHeaders || {});\n });\n }\n patch(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('PATCH', requestUrl, data, additionalHeaders || {});\n });\n }\n put(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('PUT', requestUrl, data, additionalHeaders || {});\n });\n }\n head(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('HEAD', requestUrl, null, additionalHeaders || {});\n });\n }\n sendStream(verb, requestUrl, stream, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request(verb, requestUrl, stream, additionalHeaders);\n });\n }\n /**\n * Gets a typed object from an endpoint\n * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise\n */\n getJson(requestUrl, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n const res = yield this.get(requestUrl, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n postJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.post(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n putJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.put(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n patchJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.patch(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n /**\n * Makes a raw http request.\n * All other methods such as get, post, patch, and request ultimately call this.\n * Prefer get, del, post and patch\n */\n request(verb, requestUrl, data, headers) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._disposed) {\n throw new Error('Client has already been disposed.');\n }\n const parsedUrl = new URL(requestUrl);\n let info = this._prepareRequest(verb, parsedUrl, headers);\n // Only perform retries on reads since writes may not be idempotent.\n const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb)\n ? this._maxRetries + 1\n : 1;\n let numTries = 0;\n let response;\n do {\n response = yield this.requestRaw(info, data);\n // Check if it's an authentication challenge\n if (response &&\n response.message &&\n response.message.statusCode === HttpCodes.Unauthorized) {\n let authenticationHandler;\n for (const handler of this.handlers) {\n if (handler.canHandleAuthentication(response)) {\n authenticationHandler = handler;\n break;\n }\n }\n if (authenticationHandler) {\n return authenticationHandler.handleAuthentication(this, info, data);\n }\n else {\n // We have received an unauthorized response but have no handlers to handle it.\n // Let the response return to the caller.\n return response;\n }\n }\n let redirectsRemaining = this._maxRedirects;\n while (response.message.statusCode &&\n HttpRedirectCodes.includes(response.message.statusCode) &&\n this._allowRedirects &&\n redirectsRemaining > 0) {\n const redirectUrl = response.message.headers['location'];\n if (!redirectUrl) {\n // if there's no location to redirect to, we won't\n break;\n }\n const parsedRedirectUrl = new URL(redirectUrl);\n if (parsedUrl.protocol === 'https:' &&\n parsedUrl.protocol !== parsedRedirectUrl.protocol &&\n !this._allowRedirectDowngrade) {\n throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.');\n }\n // we need to finish reading the response before reassigning response\n // which will leak the open socket.\n yield response.readBody();\n // strip authorization header if redirected to a different hostname\n if (parsedRedirectUrl.hostname !== parsedUrl.hostname) {\n for (const header in headers) {\n // header names are case insensitive\n if (header.toLowerCase() === 'authorization') {\n delete headers[header];\n }\n }\n }\n // let's make the request with the new redirectUrl\n info = this._prepareRequest(verb, parsedRedirectUrl, headers);\n response = yield this.requestRaw(info, data);\n redirectsRemaining--;\n }\n if (!response.message.statusCode ||\n !HttpResponseRetryCodes.includes(response.message.statusCode)) {\n // If not a retry code, return immediately instead of retrying\n return response;\n }\n numTries += 1;\n if (numTries < maxTries) {\n yield response.readBody();\n yield this._performExponentialBackoff(numTries);\n }\n } while (numTries < maxTries);\n return response;\n });\n }\n /**\n * Needs to be called if keepAlive is set to true in request options.\n */\n dispose() {\n if (this._agent) {\n this._agent.destroy();\n }\n this._disposed = true;\n }\n /**\n * Raw request.\n * @param info\n * @param data\n */\n requestRaw(info, data) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => {\n function callbackForResult(err, res) {\n if (err) {\n reject(err);\n }\n else if (!res) {\n // If `err` is not passed, then `res` must be passed.\n reject(new Error('Unknown error'));\n }\n else {\n resolve(res);\n }\n }\n this.requestRawWithCallback(info, data, callbackForResult);\n });\n });\n }\n /**\n * Raw request with callback.\n * @param info\n * @param data\n * @param onResult\n */\n requestRawWithCallback(info, data, onResult) {\n if (typeof data === 'string') {\n if (!info.options.headers) {\n info.options.headers = {};\n }\n info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8');\n }\n let callbackCalled = false;\n function handleResult(err, res) {\n if (!callbackCalled) {\n callbackCalled = true;\n onResult(err, res);\n }\n }\n const req = info.httpModule.request(info.options, (msg) => {\n const res = new HttpClientResponse(msg);\n handleResult(undefined, res);\n });\n let socket;\n req.on('socket', sock => {\n socket = sock;\n });\n // If we ever get disconnected, we want the socket to timeout eventually\n req.setTimeout(this._socketTimeout || 3 * 60000, () => {\n if (socket) {\n socket.end();\n }\n handleResult(new Error(`Request timeout: ${info.options.path}`));\n });\n req.on('error', function (err) {\n // err has statusCode property\n // res should have headers\n handleResult(err);\n });\n if (data && typeof data === 'string') {\n req.write(data, 'utf8');\n }\n if (data && typeof data !== 'string') {\n data.on('close', function () {\n req.end();\n });\n data.pipe(req);\n }\n else {\n req.end();\n }\n }\n /**\n * Gets an http agent. This function is useful when you need an http agent that handles\n * routing through a proxy server - depending upon the url and proxy environment variables.\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\n */\n getAgent(serverUrl) {\n const parsedUrl = new URL(serverUrl);\n return this._getAgent(parsedUrl);\n }\n getAgentDispatcher(serverUrl) {\n const parsedUrl = new URL(serverUrl);\n const proxyUrl = pm.getProxyUrl(parsedUrl);\n const useProxy = proxyUrl && proxyUrl.hostname;\n if (!useProxy) {\n return;\n }\n return this._getProxyAgentDispatcher(parsedUrl, proxyUrl);\n }\n _prepareRequest(method, requestUrl, headers) {\n const info = {};\n info.parsedUrl = requestUrl;\n const usingSsl = info.parsedUrl.protocol === 'https:';\n info.httpModule = usingSsl ? https : http;\n const defaultPort = usingSsl ? 443 : 80;\n info.options = {};\n info.options.host = info.parsedUrl.hostname;\n info.options.port = info.parsedUrl.port\n ? parseInt(info.parsedUrl.port)\n : defaultPort;\n info.options.path =\n (info.parsedUrl.pathname || '') + (info.parsedUrl.search || '');\n info.options.method = method;\n info.options.headers = this._mergeHeaders(headers);\n if (this.userAgent != null) {\n info.options.headers['user-agent'] = this.userAgent;\n }\n info.options.agent = this._getAgent(info.parsedUrl);\n // gives handlers an opportunity to participate\n if (this.handlers) {\n for (const handler of this.handlers) {\n handler.prepareRequest(info.options);\n }\n }\n return info;\n }\n _mergeHeaders(headers) {\n if (this.requestOptions && this.requestOptions.headers) {\n return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {}));\n }\n return lowercaseKeys(headers || {});\n }\n _getExistingOrDefaultHeader(additionalHeaders, header, _default) {\n let clientHeader;\n if (this.requestOptions && this.requestOptions.headers) {\n clientHeader = lowercaseKeys(this.requestOptions.headers)[header];\n }\n return additionalHeaders[header] || clientHeader || _default;\n }\n _getAgent(parsedUrl) {\n let agent;\n const proxyUrl = pm.getProxyUrl(parsedUrl);\n const useProxy = proxyUrl && proxyUrl.hostname;\n if (this._keepAlive && useProxy) {\n agent = this._proxyAgent;\n }\n if (!useProxy) {\n agent = this._agent;\n }\n // if agent is already assigned use that agent.\n if (agent) {\n return agent;\n }\n const usingSsl = parsedUrl.protocol === 'https:';\n let maxSockets = 100;\n if (this.requestOptions) {\n maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets;\n }\n // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis.\n if (proxyUrl && proxyUrl.hostname) {\n const agentOptions = {\n maxSockets,\n keepAlive: this._keepAlive,\n proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && {\n proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`\n })), { host: proxyUrl.hostname, port: proxyUrl.port })\n };\n let tunnelAgent;\n const overHttps = proxyUrl.protocol === 'https:';\n if (usingSsl) {\n tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp;\n }\n else {\n tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp;\n }\n agent = tunnelAgent(agentOptions);\n this._proxyAgent = agent;\n }\n // if tunneling agent isn't assigned create a new agent\n if (!agent) {\n const options = { keepAlive: this._keepAlive, maxSockets };\n agent = usingSsl ? new https.Agent(options) : new http.Agent(options);\n this._agent = agent;\n }\n if (usingSsl && this._ignoreSslError) {\n // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process\n // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options\n // we have to cast it to any and change it directly\n agent.options = Object.assign(agent.options || {}, {\n rejectUnauthorized: false\n });\n }\n return agent;\n }\n _getProxyAgentDispatcher(parsedUrl, proxyUrl) {\n let proxyAgent;\n if (this._keepAlive) {\n proxyAgent = this._proxyAgentDispatcher;\n }\n // if agent is already assigned use that agent.\n if (proxyAgent) {\n return proxyAgent;\n }\n const usingSsl = parsedUrl.protocol === 'https:';\n proxyAgent = new undici_1.ProxyAgent(Object.assign({ uri: proxyUrl.href, pipelining: !this._keepAlive ? 0 : 1 }, ((proxyUrl.username || proxyUrl.password) && {\n token: `${proxyUrl.username}:${proxyUrl.password}`\n })));\n this._proxyAgentDispatcher = proxyAgent;\n if (usingSsl && this._ignoreSslError) {\n // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process\n // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options\n // we have to cast it to any and change it directly\n proxyAgent.options = Object.assign(proxyAgent.options.requestTls || {}, {\n rejectUnauthorized: false\n });\n }\n return proxyAgent;\n }\n _performExponentialBackoff(retryNumber) {\n return __awaiter(this, void 0, void 0, function* () {\n retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);\n const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);\n return new Promise(resolve => setTimeout(() => resolve(), ms));\n });\n }\n _processResponse(res, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n const statusCode = res.message.statusCode || 0;\n const response = {\n statusCode,\n result: null,\n headers: {}\n };\n // not found leads to null obj returned\n if (statusCode === HttpCodes.NotFound) {\n resolve(response);\n }\n // get the result from the body\n function dateTimeDeserializer(key, value) {\n if (typeof value === 'string') {\n const a = new Date(value);\n if (!isNaN(a.valueOf())) {\n return a;\n }\n }\n return value;\n }\n let obj;\n let contents;\n try {\n contents = yield res.readBody();\n if (contents && contents.length > 0) {\n if (options && options.deserializeDates) {\n obj = JSON.parse(contents, dateTimeDeserializer);\n }\n else {\n obj = JSON.parse(contents);\n }\n response.result = obj;\n }\n response.headers = res.message.headers;\n }\n catch (err) {\n // Invalid resource (contents not json); leaving result obj null\n }\n // note that 3xx redirects are handled by the http layer.\n if (statusCode > 299) {\n let msg;\n // if exception/error in body, attempt to get better error\n if (obj && obj.message) {\n msg = obj.message;\n }\n else if (contents && contents.length > 0) {\n // it may be the case that the exception is in the body message as string\n msg = contents;\n }\n else {\n msg = `Failed request: (${statusCode})`;\n }\n const err = new HttpClientError(msg, statusCode);\n err.result = response.result;\n reject(err);\n }\n else {\n resolve(response);\n }\n }));\n });\n }\n}\nexports.HttpClient = HttpClient;\nconst lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkBypass = exports.getProxyUrl = void 0;\nfunction getProxyUrl(reqUrl) {\n const usingSsl = reqUrl.protocol === 'https:';\n if (checkBypass(reqUrl)) {\n return undefined;\n }\n const proxyVar = (() => {\n if (usingSsl) {\n return process.env['https_proxy'] || process.env['HTTPS_PROXY'];\n }\n else {\n return process.env['http_proxy'] || process.env['HTTP_PROXY'];\n }\n })();\n if (proxyVar) {\n try {\n return new URL(proxyVar);\n }\n catch (_a) {\n if (!proxyVar.startsWith('http://') && !proxyVar.startsWith('https://'))\n return new URL(`http://${proxyVar}`);\n }\n }\n else {\n return undefined;\n }\n}\nexports.getProxyUrl = getProxyUrl;\nfunction checkBypass(reqUrl) {\n if (!reqUrl.hostname) {\n return false;\n }\n const reqHost = reqUrl.hostname;\n if (isLoopbackAddress(reqHost)) {\n return true;\n }\n const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';\n if (!noProxy) {\n return false;\n }\n // Determine the request port\n let reqPort;\n if (reqUrl.port) {\n reqPort = Number(reqUrl.port);\n }\n else if (reqUrl.protocol === 'http:') {\n reqPort = 80;\n }\n else if (reqUrl.protocol === 'https:') {\n reqPort = 443;\n }\n // Format the request hostname and hostname with port\n const upperReqHosts = [reqUrl.hostname.toUpperCase()];\n if (typeof reqPort === 'number') {\n upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);\n }\n // Compare request host against noproxy\n for (const upperNoProxyItem of noProxy\n .split(',')\n .map(x => x.trim().toUpperCase())\n .filter(x => x)) {\n if (upperNoProxyItem === '*' ||\n upperReqHosts.some(x => x === upperNoProxyItem ||\n x.endsWith(`.${upperNoProxyItem}`) ||\n (upperNoProxyItem.startsWith('.') &&\n x.endsWith(`${upperNoProxyItem}`)))) {\n return true;\n }\n }\n return false;\n}\nexports.checkBypass = checkBypass;\nfunction isLoopbackAddress(host) {\n const hostLower = host.toLowerCase();\n return (hostLower === 'localhost' ||\n hostLower.startsWith('127.') ||\n hostLower.startsWith('[::1]') ||\n hostLower.startsWith('[0:0:0:0:0:0:0:1]'));\n}\n//# sourceMappingURL=proxy.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadAwsServiceSpecSync = exports.loadAwsServiceSpec = void 0;\nconst node_fs_1 = require(\"node:fs\");\nconst path = __importStar(require(\"node:path\"));\nconst node_zlib_1 = require(\"node:zlib\");\nconst service_spec_types_1 = require(\"@aws-cdk/service-spec-types\");\nconst DB_COMPRESSED = 'db.json.gz';\nconst DB_PATH = path.join(__dirname, '..', DB_COMPRESSED);\n/**\n * Load the provided built-in database\n */\nasync function loadAwsServiceSpec() {\n return loadBufferIntoDatabase(await node_fs_1.promises.readFile(DB_PATH));\n}\nexports.loadAwsServiceSpec = loadAwsServiceSpec;\n/**\n * Synchronously load the provided built-in database\n */\nfunction loadAwsServiceSpecSync() {\n return loadBufferIntoDatabase((0, node_fs_1.readFileSync)(DB_PATH));\n}\nexports.loadAwsServiceSpecSync = loadAwsServiceSpecSync;\nfunction loadBufferIntoDatabase(spec) {\n const db = (0, service_spec_types_1.emptyDatabase)();\n db.load(JSON.parse((0, node_zlib_1.gunzipSync)(spec).toString('utf-8')));\n return db;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxQ0FBdUQ7QUFDdkQsZ0RBQWtDO0FBQ2xDLHlDQUF1QztBQUN2QyxvRUFBMEU7QUFFMUUsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDO0FBQ25DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztBQUUxRDs7R0FFRztBQUNJLEtBQUssVUFBVSxrQkFBa0I7SUFDdEMsT0FBTyxzQkFBc0IsQ0FBQyxNQUFNLGtCQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQUZELGdEQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixzQkFBc0I7SUFDcEMsT0FBTyxzQkFBc0IsQ0FBQyxJQUFBLHNCQUFZLEVBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRkQsd0RBRUM7QUFFRCxTQUFTLHNCQUFzQixDQUFDLElBQVk7SUFDMUMsTUFBTSxFQUFFLEdBQUcsSUFBQSxrQ0FBYSxHQUFFLENBQUM7SUFDM0IsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUEsc0JBQVUsRUFBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb21pc2VzIGFzIGZzLCByZWFkRmlsZVN5bmMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IGd1bnppcFN5bmMgfSBmcm9tICdub2RlOnpsaWInO1xuaW1wb3J0IHsgZW1wdHlEYXRhYmFzZSwgU3BlY0RhdGFiYXNlIH0gZnJvbSAnQGF3cy1jZGsvc2VydmljZS1zcGVjLXR5cGVzJztcblxuY29uc3QgREJfQ09NUFJFU1NFRCA9ICdkYi5qc29uLmd6JztcbmNvbnN0IERCX1BBVEggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCBEQl9DT01QUkVTU0VEKTtcblxuLyoqXG4gKiBMb2FkIHRoZSBwcm92aWRlZCBidWlsdC1pbiBkYXRhYmFzZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZEF3c1NlcnZpY2VTcGVjKCk6IFByb21pc2U8U3BlY0RhdGFiYXNlPiB7XG4gIHJldHVybiBsb2FkQnVmZmVySW50b0RhdGFiYXNlKGF3YWl0IGZzLnJlYWRGaWxlKERCX1BBVEgpKTtcbn1cblxuLyoqXG4gKiBTeW5jaHJvbm91c2x5IGxvYWQgdGhlIHByb3ZpZGVkIGJ1aWx0LWluIGRhdGFiYXNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQXdzU2VydmljZVNwZWNTeW5jKCk6IFNwZWNEYXRhYmFzZSB7XG4gIHJldHVybiBsb2FkQnVmZmVySW50b0RhdGFiYXNlKHJlYWRGaWxlU3luYyhEQl9QQVRIKSk7XG59XG5cbmZ1bmN0aW9uIGxvYWRCdWZmZXJJbnRvRGF0YWJhc2Uoc3BlYzogQnVmZmVyKTogU3BlY0RhdGFiYXNlIHtcbiAgY29uc3QgZGIgPSBlbXB0eURhdGFiYXNlKCk7XG4gIGRiLmxvYWQoSlNPTi5wYXJzZShndW56aXBTeW5jKHNwZWMpLnRvU3RyaW5nKCd1dGYtOCcpKSk7XG4gIHJldHVybiBkYjtcbn1cbiJdfQ==","function _aws_cdk_cloud_assembly_schema_ArtifactType(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_RuntimeInfo(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_MissingContext(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.props))\n _aws_cdk_cloud_assembly_schema_AmiContextQuery(p.props);\n if (!visitedObjects.has(p.provider))\n _aws_cdk_cloud_assembly_schema_ContextProvider(p.provider);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_ArtifactManifest(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.type))\n _aws_cdk_cloud_assembly_schema_ArtifactType(p.type);\n if (!visitedObjects.has(p.properties))\n _aws_cdk_cloud_assembly_schema_AwsCloudFormationStackProperties(p.properties);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_AssemblyManifest(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (p.artifacts != null)\n for (const o of Object.values(p.artifacts))\n if (!visitedObjects.has(o))\n _aws_cdk_cloud_assembly_schema_ArtifactManifest(o);\n if (p.missing != null)\n for (const o of p.missing)\n if (!visitedObjects.has(o))\n _aws_cdk_cloud_assembly_schema_MissingContext(o);\n if (!visitedObjects.has(p.runtime))\n _aws_cdk_cloud_assembly_schema_RuntimeInfo(p.runtime);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_FileAssetMetadataEntry(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_Tag(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_ContainerImageAssetCacheOption(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_ContainerImageAssetMetadataEntry(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (p.cacheFrom != null)\n for (const o of p.cacheFrom)\n if (!visitedObjects.has(o))\n _aws_cdk_cloud_assembly_schema_ContainerImageAssetCacheOption(o);\n if (!visitedObjects.has(p.cacheTo))\n _aws_cdk_cloud_assembly_schema_ContainerImageAssetCacheOption(p.cacheTo);\n if (\"imageNameParameter\" in p)\n print(\"@aws-cdk/cloud-assembly-schema.ContainerImageAssetMetadataEntry#imageNameParameter\", \"specify `repositoryName` and `imageTag` instead, and then you\\nknow where the image will go.\");\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_ArtifactMetadataEntryType(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_MetadataEntry(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_BootstrapRole(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_AwsCloudFormationStackProperties(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.lookupRole))\n _aws_cdk_cloud_assembly_schema_BootstrapRole(p.lookupRole);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_AssetManifestOptions(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_AssetManifestProperties(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_TreeArtifactProperties(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_NestedCloudAssemblyProperties(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_ContextProvider(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_AmiContextQuery(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_AvailabilityZonesContextQuery(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_HostedZoneContextQuery(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_SSMParameterContextQuery(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_VpcContextQuery(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_EndpointServiceAvailabilityZonesContextQuery(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_LoadBalancerType(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_LoadBalancerFilter(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.loadBalancerType))\n _aws_cdk_cloud_assembly_schema_LoadBalancerType(p.loadBalancerType);\n if (p.loadBalancerTags != null)\n for (const o of p.loadBalancerTags)\n if (!visitedObjects.has(o))\n _aws_cdk_cloud_assembly_schema_Tag(o);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_LoadBalancerContextQuery(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.loadBalancerType))\n _aws_cdk_cloud_assembly_schema_LoadBalancerType(p.loadBalancerType);\n if (p.loadBalancerTags != null)\n for (const o of p.loadBalancerTags)\n if (!visitedObjects.has(o))\n _aws_cdk_cloud_assembly_schema_Tag(o);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_LoadBalancerListenerProtocol(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_LoadBalancerListenerContextQuery(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.listenerProtocol))\n _aws_cdk_cloud_assembly_schema_LoadBalancerListenerProtocol(p.listenerProtocol);\n if (!visitedObjects.has(p.loadBalancerType))\n _aws_cdk_cloud_assembly_schema_LoadBalancerType(p.loadBalancerType);\n if (p.loadBalancerTags != null)\n for (const o of p.loadBalancerTags)\n if (!visitedObjects.has(o))\n _aws_cdk_cloud_assembly_schema_Tag(o);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_SecurityGroupContextQuery(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_KeyContextQuery(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_PluginContextQuery(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_AssetManifest(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (p.dockerImages != null)\n for (const o of Object.values(p.dockerImages))\n if (!visitedObjects.has(o))\n _aws_cdk_cloud_assembly_schema_DockerImageAsset(o);\n if (p.files != null)\n for (const o of Object.values(p.files))\n if (!visitedObjects.has(o))\n _aws_cdk_cloud_assembly_schema_FileAsset(o);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_DockerImageAsset(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (p.destinations != null)\n for (const o of Object.values(p.destinations))\n if (!visitedObjects.has(o))\n _aws_cdk_cloud_assembly_schema_DockerImageDestination(o);\n if (!visitedObjects.has(p.source))\n _aws_cdk_cloud_assembly_schema_DockerImageSource(p.source);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_DockerImageSource(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (p.cacheFrom != null)\n for (const o of p.cacheFrom)\n if (!visitedObjects.has(o))\n _aws_cdk_cloud_assembly_schema_DockerCacheOption(o);\n if (!visitedObjects.has(p.cacheTo))\n _aws_cdk_cloud_assembly_schema_DockerCacheOption(p.cacheTo);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_DockerImageDestination(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_DockerCacheOption(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_FileAsset(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (p.destinations != null)\n for (const o of Object.values(p.destinations))\n if (!visitedObjects.has(o))\n _aws_cdk_cloud_assembly_schema_FileDestination(o);\n if (!visitedObjects.has(p.source))\n _aws_cdk_cloud_assembly_schema_FileSource(p.source);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_FileAssetPackaging(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_FileSource(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.packaging))\n _aws_cdk_cloud_assembly_schema_FileAssetPackaging(p.packaging);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_FileDestination(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_AwsDestination(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_LoadManifestOptions(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_Manifest(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_IntegManifest(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (p.testCases != null)\n for (const o of Object.values(p.testCases))\n if (!visitedObjects.has(o))\n _aws_cdk_cloud_assembly_schema_TestCase(o);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_RequireApproval(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_DefaultCdkOptions(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_DeployOptions(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.requireApproval))\n _aws_cdk_cloud_assembly_schema_RequireApproval(p.requireApproval);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_DestroyOptions(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_TestOptions(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.cdkCommandOptions))\n _aws_cdk_cloud_assembly_schema_CdkCommands(p.cdkCommandOptions);\n if (!visitedObjects.has(p.hooks))\n _aws_cdk_cloud_assembly_schema_Hooks(p.hooks);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_TestCase(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.cdkCommandOptions))\n _aws_cdk_cloud_assembly_schema_CdkCommands(p.cdkCommandOptions);\n if (!visitedObjects.has(p.hooks))\n _aws_cdk_cloud_assembly_schema_Hooks(p.hooks);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_Hooks(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_CdkCommand(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_DeployCommand(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.args))\n _aws_cdk_cloud_assembly_schema_DeployOptions(p.args);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_DestroyCommand(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.args))\n _aws_cdk_cloud_assembly_schema_DestroyOptions(p.args);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_CdkCommands(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.deploy))\n _aws_cdk_cloud_assembly_schema_DeployCommand(p.deploy);\n if (!visitedObjects.has(p.destroy))\n _aws_cdk_cloud_assembly_schema_DestroyCommand(p.destroy);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction print(name, deprecationMessage) {\n const deprecated = process.env.JSII_DEPRECATED;\n const deprecationMode = [\"warn\", \"fail\", \"quiet\"].includes(deprecated) ? deprecated : \"warn\";\n const message = `${name} is deprecated.\\n ${deprecationMessage.trim()}\\n This API will be removed in the next major release.`;\n switch (deprecationMode) {\n case \"fail\":\n throw new DeprecationError(message);\n case \"warn\":\n console.warn(\"[WARNING]\", message);\n break;\n }\n}\nfunction getPropertyDescriptor(obj, prop) {\n const descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n if (descriptor) {\n return descriptor;\n }\n const proto = Object.getPrototypeOf(obj);\n const prototypeDescriptor = proto && getPropertyDescriptor(proto, prop);\n if (prototypeDescriptor) {\n return prototypeDescriptor;\n }\n return {};\n}\nconst visitedObjects = new Set();\nclass DeprecationError extends Error {\n constructor(...args) {\n super(...args);\n Object.defineProperty(this, \"name\", {\n configurable: false,\n enumerable: true,\n value: \"DeprecationError\",\n writable: false,\n });\n }\n}\nmodule.exports = { print, getPropertyDescriptor, DeprecationError, _aws_cdk_cloud_assembly_schema_ArtifactType, _aws_cdk_cloud_assembly_schema_RuntimeInfo, _aws_cdk_cloud_assembly_schema_MissingContext, _aws_cdk_cloud_assembly_schema_ArtifactManifest, _aws_cdk_cloud_assembly_schema_AssemblyManifest, _aws_cdk_cloud_assembly_schema_FileAssetMetadataEntry, _aws_cdk_cloud_assembly_schema_Tag, _aws_cdk_cloud_assembly_schema_ContainerImageAssetCacheOption, _aws_cdk_cloud_assembly_schema_ContainerImageAssetMetadataEntry, _aws_cdk_cloud_assembly_schema_ArtifactMetadataEntryType, _aws_cdk_cloud_assembly_schema_MetadataEntry, _aws_cdk_cloud_assembly_schema_BootstrapRole, _aws_cdk_cloud_assembly_schema_AwsCloudFormationStackProperties, _aws_cdk_cloud_assembly_schema_AssetManifestOptions, _aws_cdk_cloud_assembly_schema_AssetManifestProperties, _aws_cdk_cloud_assembly_schema_TreeArtifactProperties, _aws_cdk_cloud_assembly_schema_NestedCloudAssemblyProperties, _aws_cdk_cloud_assembly_schema_ContextProvider, _aws_cdk_cloud_assembly_schema_AmiContextQuery, _aws_cdk_cloud_assembly_schema_AvailabilityZonesContextQuery, _aws_cdk_cloud_assembly_schema_HostedZoneContextQuery, _aws_cdk_cloud_assembly_schema_SSMParameterContextQuery, _aws_cdk_cloud_assembly_schema_VpcContextQuery, _aws_cdk_cloud_assembly_schema_EndpointServiceAvailabilityZonesContextQuery, _aws_cdk_cloud_assembly_schema_LoadBalancerType, _aws_cdk_cloud_assembly_schema_LoadBalancerFilter, _aws_cdk_cloud_assembly_schema_LoadBalancerContextQuery, _aws_cdk_cloud_assembly_schema_LoadBalancerListenerProtocol, _aws_cdk_cloud_assembly_schema_LoadBalancerListenerContextQuery, _aws_cdk_cloud_assembly_schema_SecurityGroupContextQuery, _aws_cdk_cloud_assembly_schema_KeyContextQuery, _aws_cdk_cloud_assembly_schema_PluginContextQuery, _aws_cdk_cloud_assembly_schema_AssetManifest, _aws_cdk_cloud_assembly_schema_DockerImageAsset, _aws_cdk_cloud_assembly_schema_DockerImageSource, _aws_cdk_cloud_assembly_schema_DockerImageDestination, _aws_cdk_cloud_assembly_schema_DockerCacheOption, _aws_cdk_cloud_assembly_schema_FileAsset, _aws_cdk_cloud_assembly_schema_FileAssetPackaging, _aws_cdk_cloud_assembly_schema_FileSource, _aws_cdk_cloud_assembly_schema_FileDestination, _aws_cdk_cloud_assembly_schema_AwsDestination, _aws_cdk_cloud_assembly_schema_LoadManifestOptions, _aws_cdk_cloud_assembly_schema_Manifest, _aws_cdk_cloud_assembly_schema_IntegManifest, _aws_cdk_cloud_assembly_schema_RequireApproval, _aws_cdk_cloud_assembly_schema_DefaultCdkOptions, _aws_cdk_cloud_assembly_schema_DeployOptions, _aws_cdk_cloud_assembly_schema_DestroyOptions, _aws_cdk_cloud_assembly_schema_TestOptions, _aws_cdk_cloud_assembly_schema_TestCase, _aws_cdk_cloud_assembly_schema_Hooks, _aws_cdk_cloud_assembly_schema_CdkCommand, _aws_cdk_cloud_assembly_schema_DeployCommand, _aws_cdk_cloud_assembly_schema_DestroyCommand, _aws_cdk_cloud_assembly_schema_CdkCommands };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWZhY3Qtc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXJ0aWZhY3Qtc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8qKlxuICogSW5mb3JtYXRpb24gbmVlZGVkIHRvIGFjY2VzcyBhbiBJQU0gcm9sZSBjcmVhdGVkXG4gKiBhcyBwYXJ0IG9mIHRoZSBib290c3RyYXAgcHJvY2Vzc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEJvb3RzdHJhcFJvbGUge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgSUFNIHJvbGUgY3JlYXRlZCBhcyBwYXJ0IG9mIGJvb3RyYXBwaW5nXG4gICAqIGUuZy4gbG9va3VwUm9sZUFyblxuICAgKi9cbiAgcmVhZG9ubHkgYXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4dGVybmFsIElEIHRvIHVzZSB3aGVuIGFzc3VtaW5nIHRoZSBib290c3RyYXAgcm9sZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGV4dGVybmFsIElEXG4gICAqL1xuICByZWFkb25seSBhc3N1bWVSb2xlRXh0ZXJuYWxJZD86IHN0cmluZztcblxuICAvKipcbiAgICogVmVyc2lvbiBvZiBib290c3RyYXAgc3RhY2sgcmVxdWlyZWQgdG8gdXNlIHRoaXMgcm9sZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZXNCb290c3RyYXBTdGFja1ZlcnNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgU1NNIHBhcmFtZXRlciB3aXRoIGJvb3RzdHJhcCBzdGFjayB2ZXJzaW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGlzY292ZXIgU1NNIHBhcmFtZXRlciBieSByZWFkaW5nIHN0YWNrXG4gICAqL1xuICByZWFkb25seSBib290c3RyYXBTdGFja1ZlcnNpb25Tc21QYXJhbWV0ZXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQXJ0aWZhY3QgcHJvcGVydGllcyBmb3IgQ2xvdWRGb3JtYXRpb24gc3RhY2tzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF3c0Nsb3VkRm9ybWF0aW9uU3RhY2tQcm9wZXJ0aWVzIHtcbiAgLyoqXG4gICAqIEEgZmlsZSByZWxhdGl2ZSB0byB0aGUgYXNzZW1ibHkgcm9vdCB3aGljaCBjb250YWlucyB0aGUgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUgZm9yIHRoaXMgc3RhY2suXG4gICAqL1xuICByZWFkb25seSB0ZW1wbGF0ZUZpbGU6IHN0cmluZztcblxuICAvKipcbiAgICogVmFsdWVzIGZvciBDbG91ZEZvcm1hdGlvbiBzdGFjayBwYXJhbWV0ZXJzIHRoYXQgc2hvdWxkIGJlIHBhc3NlZCB3aGVuIHRoZSBzdGFjayBpcyBkZXBsb3llZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBwYXJhbWV0ZXJzXG4gICAqL1xuICByZWFkb25seSBwYXJhbWV0ZXJzPzogeyBbaWQ6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBWYWx1ZXMgZm9yIENsb3VkRm9ybWF0aW9uIHN0YWNrIHRhZ3MgdGhhdCBzaG91bGQgYmUgcGFzc2VkIHdoZW4gdGhlIHN0YWNrIGlzIGRlcGxveWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtpZDogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIHRvIHVzZSBmb3IgdGhlIENsb3VkRm9ybWF0aW9uIHN0YWNrLlxuICAgKiBAZGVmYXVsdCAtIG5hbWUgZGVyaXZlZCBmcm9tIGFydGlmYWN0IElEXG4gICAqL1xuICByZWFkb25seSBzdGFja05hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW5hYmxlIHRlcm1pbmF0aW9uIHByb3RlY3Rpb24gZm9yIHRoaXMgc3RhY2suXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB0ZXJtaW5hdGlvblByb3RlY3Rpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcm9sZSB0aGF0IG5lZWRzIHRvIGJlIGFzc3VtZWQgdG8gZGVwbG95IHRoZSBzdGFja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHJvbGUgaXMgYXNzdW1lZCAoY3VycmVudCBjcmVkZW50aWFscyBhcmUgdXNlZClcbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4dGVybmFsIElEIHRvIHVzZSB3aGVuIGFzc3VtaW5nIHJvbGUgZm9yIGNsb3VkZm9ybWF0aW9uIGRlcGxveW1lbnRzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZXh0ZXJuYWwgSURcbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVFeHRlcm5hbElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcm9sZSB0aGF0IGlzIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbiB0byBleGVjdXRlIHRoZSBjaGFuZ2Ugc2V0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcm9sZSBpcyBwYXNzZWQgKGN1cnJlbnRseSBhc3N1bWVkIHJvbGUvY3JlZGVudGlhbHMgYXJlIHVzZWQpXG4gICAqL1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvbkV4ZWN1dGlvblJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByb2xlIHRvIHVzZSB0byBsb29rIHVwIHZhbHVlcyBmcm9tIHRoZSB0YXJnZXQgQVdTIGFjY291bnRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyByb2xlIGlzIGFzc3VtZWQgKGN1cnJlbnQgY3JlZGVudGlhbHMgYXJlIHVzZWQpXG4gICAqL1xuICByZWFkb25seSBsb29rdXBSb2xlPzogQm9vdHN0cmFwUm9sZTtcblxuICAvKipcbiAgICogSWYgdGhlIHN0YWNrIHRlbXBsYXRlIGhhcyBhbHJlYWR5IGJlZW4gaW5jbHVkZWQgaW4gdGhlIGFzc2V0IG1hbmlmZXN0LCBpdHMgYXNzZXQgVVJMXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm90IHVwbG9hZGVkIHlldCwgdXBsb2FkIGp1c3QgYmVmb3JlIGRlcGxveWluZ1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tUZW1wbGF0ZUFzc2V0T2JqZWN0VXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZCB0byBkZXBsb3kgdGhpcyBzdGFja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZXNCb290c3RyYXBTdGFja1ZlcnNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNTTSBwYXJhbWV0ZXIgd2hlcmUgdGhlIGJvb3RzdHJhcCBzdGFjayB2ZXJzaW9uIG51bWJlciBjYW4gYmUgZm91bmRcbiAgICpcbiAgICogT25seSB1c2VkIGlmIGByZXF1aXJlc0Jvb3RzdHJhcFN0YWNrVmVyc2lvbmAgaXMgc2V0LlxuICAgKlxuICAgKiAtIElmIHRoaXMgdmFsdWUgaXMgbm90IHNldCwgdGhlIGJvb3RzdHJhcCBzdGFjayBuYW1lIG11c3QgYmUga25vd24gYXRcbiAgICogICBkZXBsb3ltZW50IHRpbWUgc28gdGhlIHN0YWNrIHZlcnNpb24gY2FuIGJlIGxvb2tlZCB1cCBmcm9tIHRoZSBzdGFja1xuICAgKiAgIG91dHB1dHMuXG4gICAqIC0gSWYgdGhpcyB2YWx1ZSBpcyBzZXQsIHRoZSBib290c3RyYXAgc3RhY2sgY2FuIGhhdmUgYW55IG5hbWUgYmVjYXVzZVxuICAgKiAgIHdlIHdvbid0IG5lZWQgdG8gbG9vayBpdCB1cC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBCb290c3RyYXAgc3RhY2sgdmVyc2lvbiBudW1iZXIgbG9va2VkIHVwXG4gICAqL1xuICByZWFkb25seSBib290c3RyYXBTdGFja1ZlcnNpb25Tc21QYXJhbWV0ZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBzdGFjayBzaG91bGQgYmUgdmFsaWRhdGVkIGJ5IHRoZSBDTEkgYWZ0ZXIgc3ludGhlc2lzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRlT25TeW50aD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgQXNzZXQgTWFuaWZlc3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NldE1hbmlmZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZCB0byBkZXBsb3kgdGhpcyBzdGFja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIFZlcnNpb24gMSAoYmFzaWMgbW9kZXJuIGJvb3RzdHJhcCBzdGFjaylcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9uPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTU00gcGFyYW1ldGVyIHdoZXJlIHRoZSBib290c3RyYXAgc3RhY2sgdmVyc2lvbiBudW1iZXIgY2FuIGJlIGZvdW5kXG4gICAqXG4gICAqIC0gSWYgdGhpcyB2YWx1ZSBpcyBub3Qgc2V0LCB0aGUgYm9vdHN0cmFwIHN0YWNrIG5hbWUgbXVzdCBiZSBrbm93biBhdFxuICAgKiAgIGRlcGxveW1lbnQgdGltZSBzbyB0aGUgc3RhY2sgdmVyc2lvbiBjYW4gYmUgbG9va2VkIHVwIGZyb20gdGhlIHN0YWNrXG4gICAqICAgb3V0cHV0cy5cbiAgICogLSBJZiB0aGlzIHZhbHVlIGlzIHNldCwgdGhlIGJvb3RzdHJhcCBzdGFjayBjYW4gaGF2ZSBhbnkgbmFtZSBiZWNhdXNlXG4gICAqICAgd2Ugd29uJ3QgbmVlZCB0byBsb29rIGl0IHVwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEJvb3RzdHJhcCBzdGFjayB2ZXJzaW9uIG51bWJlciBsb29rZWQgdXBcbiAgICovXG4gIHJlYWRvbmx5IGJvb3RzdHJhcFN0YWNrVmVyc2lvblNzbVBhcmFtZXRlcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBcnRpZmFjdCBwcm9wZXJ0aWVzIGZvciB0aGUgQXNzZXQgTWFuaWZlc3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NldE1hbmlmZXN0UHJvcGVydGllcyBleHRlbmRzIEFzc2V0TWFuaWZlc3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIEZpbGVuYW1lIG9mIHRoZSBhc3NldCBtYW5pZmVzdFxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFydGlmYWN0IHByb3BlcnRpZXMgZm9yIHRoZSBDb25zdHJ1Y3QgVHJlZSBBcnRpZmFjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyZWVBcnRpZmFjdFByb3BlcnRpZXMge1xuICAvKipcbiAgICogRmlsZW5hbWUgb2YgdGhlIHRyZWUgYXJ0aWZhY3RcbiAgICovXG4gIHJlYWRvbmx5IGZpbGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBcnRpZmFjdCBwcm9wZXJ0aWVzIGZvciBuZXN0ZWQgY2xvdWQgYXNzZW1ibGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE5lc3RlZENsb3VkQXNzZW1ibHlQcm9wZXJ0aWVzIHtcbiAgLyoqXG4gICAqIFJlbGF0aXZlIHBhdGggdG8gdGhlIG5lc3RlZCBjbG91ZCBhc3NlbWJseVxuICAgKi9cbiAgcmVhZG9ubHkgZGlyZWN0b3J5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEaXNwbGF5IG5hbWUgZm9yIHRoZSBjbG91ZCBhc3NlbWJseVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBhcnRpZmFjdCBJRFxuICAgKi9cbiAgcmVhZG9ubHkgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgbWFuaWZlc3QgYXJ0aWZhY3RzXG4gKi9cbmV4cG9ydCB0eXBlIEFydGlmYWN0UHJvcGVydGllcyA9IEF3c0Nsb3VkRm9ybWF0aW9uU3RhY2tQcm9wZXJ0aWVzXG58IEFzc2V0TWFuaWZlc3RQcm9wZXJ0aWVzXG58IFRyZWVBcnRpZmFjdFByb3BlcnRpZXNcbnwgTmVzdGVkQ2xvdWRBc3NlbWJseVByb3BlcnRpZXM7XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LoadBalancerListenerProtocol = exports.LoadBalancerType = exports.ContextProvider = void 0;\n/**\n * Identifier for the context provider\n */\nvar ContextProvider;\n(function (ContextProvider) {\n /**\n * AMI provider\n */\n ContextProvider[\"AMI_PROVIDER\"] = \"ami\";\n /**\n * AZ provider\n */\n ContextProvider[\"AVAILABILITY_ZONE_PROVIDER\"] = \"availability-zones\";\n /**\n * Route53 Hosted Zone provider\n */\n ContextProvider[\"HOSTED_ZONE_PROVIDER\"] = \"hosted-zone\";\n /**\n * SSM Parameter Provider\n */\n ContextProvider[\"SSM_PARAMETER_PROVIDER\"] = \"ssm\";\n /**\n * VPC Provider\n */\n ContextProvider[\"VPC_PROVIDER\"] = \"vpc-provider\";\n /**\n * VPC Endpoint Service AZ Provider\n */\n ContextProvider[\"ENDPOINT_SERVICE_AVAILABILITY_ZONE_PROVIDER\"] = \"endpoint-service-availability-zones\";\n /**\n * Load balancer provider\n */\n ContextProvider[\"LOAD_BALANCER_PROVIDER\"] = \"load-balancer\";\n /**\n * Load balancer listener provider\n */\n ContextProvider[\"LOAD_BALANCER_LISTENER_PROVIDER\"] = \"load-balancer-listener\";\n /**\n * Security group provider\n */\n ContextProvider[\"SECURITY_GROUP_PROVIDER\"] = \"security-group\";\n /**\n * KMS Key Provider\n */\n ContextProvider[\"KEY_PROVIDER\"] = \"key-provider\";\n /**\n * A plugin provider (the actual plugin name will be in the properties)\n */\n ContextProvider[\"PLUGIN\"] = \"plugin\";\n})(ContextProvider || (exports.ContextProvider = ContextProvider = {}));\n/**\n * Type of load balancer\n */\nvar LoadBalancerType;\n(function (LoadBalancerType) {\n /**\n * Network load balancer\n */\n LoadBalancerType[\"NETWORK\"] = \"network\";\n /**\n * Application load balancer\n */\n LoadBalancerType[\"APPLICATION\"] = \"application\";\n})(LoadBalancerType || (exports.LoadBalancerType = LoadBalancerType = {}));\n/**\n * The protocol for connections from clients to the load balancer\n */\nvar LoadBalancerListenerProtocol;\n(function (LoadBalancerListenerProtocol) {\n /**\n * HTTP protocol\n */\n LoadBalancerListenerProtocol[\"HTTP\"] = \"HTTP\";\n /**\n * HTTPS protocol\n */\n LoadBalancerListenerProtocol[\"HTTPS\"] = \"HTTPS\";\n /**\n * TCP protocol\n */\n LoadBalancerListenerProtocol[\"TCP\"] = \"TCP\";\n /**\n * TLS protocol\n */\n LoadBalancerListenerProtocol[\"TLS\"] = \"TLS\";\n /**\n * UDP protocol\n * */\n LoadBalancerListenerProtocol[\"UDP\"] = \"UDP\";\n /**\n * TCP and UDP protocol\n * */\n LoadBalancerListenerProtocol[\"TCP_UDP\"] = \"TCP_UDP\";\n})(LoadBalancerListenerProtocol || (exports.LoadBalancerListenerProtocol = LoadBalancerListenerProtocol = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1xdWVyaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29udGV4dC1xdWVyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ0gsSUFBWSxlQXVEWDtBQXZERCxXQUFZLGVBQWU7SUFDekI7O09BRUc7SUFDSCx1Q0FBb0IsQ0FBQTtJQUVwQjs7T0FFRztJQUNILG9FQUFpRCxDQUFBO0lBRWpEOztPQUVHO0lBQ0gsdURBQW9DLENBQUE7SUFFcEM7O09BRUc7SUFDSCxpREFBOEIsQ0FBQTtJQUU5Qjs7T0FFRztJQUNILGdEQUE2QixDQUFBO0lBRTdCOztPQUVHO0lBQ0gsc0dBQW1GLENBQUE7SUFFbkY7O09BRUc7SUFDSCwyREFBd0MsQ0FBQTtJQUV4Qzs7T0FFRztJQUNILDZFQUEwRCxDQUFBO0lBRTFEOztPQUVHO0lBQ0gsNkRBQTBDLENBQUE7SUFFMUM7O09BRUc7SUFDSCxnREFBNkIsQ0FBQTtJQUU3Qjs7T0FFRztJQUNILG9DQUFpQixDQUFBO0FBQ25CLENBQUMsRUF2RFcsZUFBZSwrQkFBZixlQUFlLFFBdUQxQjtBQXdORDs7R0FFRztBQUNILElBQVksZ0JBVVg7QUFWRCxXQUFZLGdCQUFnQjtJQUMxQjs7T0FFRztJQUNILHVDQUFtQixDQUFBO0lBRW5COztPQUVHO0lBQ0gsK0NBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQVZXLGdCQUFnQixnQ0FBaEIsZ0JBQWdCLFFBVTNCO0FBOENEOztHQUVHO0FBQ0gsSUFBWSw0QkE4Qlg7QUE5QkQsV0FBWSw0QkFBNEI7SUFDdEM7O09BRUc7SUFDSCw2Q0FBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCwrQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCwyQ0FBVyxDQUFBO0lBRVg7O09BRUc7SUFDSCwyQ0FBVyxDQUFBO0lBRVg7O1NBRUs7SUFDTCwyQ0FBVyxDQUFBO0lBRVg7O1NBRUs7SUFDTCxtREFBbUIsQ0FBQTtBQUNyQixDQUFDLEVBOUJXLDRCQUE0Qiw0Q0FBNUIsNEJBQTRCLFFBOEJ2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhZyB9IGZyb20gJy4vbWV0YWRhdGEtc2NoZW1hJztcblxuLyoqXG4gKiBJZGVudGlmaWVyIGZvciB0aGUgY29udGV4dCBwcm92aWRlclxuICovXG5leHBvcnQgZW51bSBDb250ZXh0UHJvdmlkZXIge1xuICAvKipcbiAgICogQU1JIHByb3ZpZGVyXG4gICAqL1xuICBBTUlfUFJPVklERVIgPSAnYW1pJyxcblxuICAvKipcbiAgICogQVogcHJvdmlkZXJcbiAgICovXG4gIEFWQUlMQUJJTElUWV9aT05FX1BST1ZJREVSID0gJ2F2YWlsYWJpbGl0eS16b25lcycsXG5cbiAgLyoqXG4gICAqIFJvdXRlNTMgSG9zdGVkIFpvbmUgcHJvdmlkZXJcbiAgICovXG4gIEhPU1RFRF9aT05FX1BST1ZJREVSID0gJ2hvc3RlZC16b25lJyxcblxuICAvKipcbiAgICogU1NNIFBhcmFtZXRlciBQcm92aWRlclxuICAgKi9cbiAgU1NNX1BBUkFNRVRFUl9QUk9WSURFUiA9ICdzc20nLFxuXG4gIC8qKlxuICAgKiBWUEMgUHJvdmlkZXJcbiAgICovXG4gIFZQQ19QUk9WSURFUiA9ICd2cGMtcHJvdmlkZXInLFxuXG4gIC8qKlxuICAgKiBWUEMgRW5kcG9pbnQgU2VydmljZSBBWiBQcm92aWRlclxuICAgKi9cbiAgRU5EUE9JTlRfU0VSVklDRV9BVkFJTEFCSUxJVFlfWk9ORV9QUk9WSURFUiA9ICdlbmRwb2ludC1zZXJ2aWNlLWF2YWlsYWJpbGl0eS16b25lcycsXG5cbiAgLyoqXG4gICAqIExvYWQgYmFsYW5jZXIgcHJvdmlkZXJcbiAgICovXG4gIExPQURfQkFMQU5DRVJfUFJPVklERVIgPSAnbG9hZC1iYWxhbmNlcicsXG5cbiAgLyoqXG4gICAqIExvYWQgYmFsYW5jZXIgbGlzdGVuZXIgcHJvdmlkZXJcbiAgICovXG4gIExPQURfQkFMQU5DRVJfTElTVEVORVJfUFJPVklERVIgPSAnbG9hZC1iYWxhbmNlci1saXN0ZW5lcicsXG5cbiAgLyoqXG4gICAqIFNlY3VyaXR5IGdyb3VwIHByb3ZpZGVyXG4gICAqL1xuICBTRUNVUklUWV9HUk9VUF9QUk9WSURFUiA9ICdzZWN1cml0eS1ncm91cCcsXG5cbiAgLyoqXG4gICAqIEtNUyBLZXkgUHJvdmlkZXJcbiAgICovXG4gIEtFWV9QUk9WSURFUiA9ICdrZXktcHJvdmlkZXInLFxuXG4gIC8qKlxuICAgKiBBIHBsdWdpbiBwcm92aWRlciAodGhlIGFjdHVhbCBwbHVnaW4gbmFtZSB3aWxsIGJlIGluIHRoZSBwcm9wZXJ0aWVzKVxuICAgKi9cbiAgUExVR0lOID0gJ3BsdWdpbicsXG59XG5cbi8qKlxuICogUXVlcnkgdG8gQU1JIGNvbnRleHQgcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbWlDb250ZXh0UXVlcnkge1xuICAvKipcbiAgICogQWNjb3VudCB0byBxdWVyeVxuICAgKi9cbiAgcmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZWdpb24gdG8gcXVlcnlcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSByb2xlIHRoYXQgc2hvdWxkIGJlIHVzZWQgdG8gbG9vayB1cCB0aGUgbWlzc2luZyB2YWx1ZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBsb29rdXBSb2xlQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPd25lcnMgdG8gRGVzY3JpYmVJbWFnZXMgY2FsbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEFsbCBvd25lcnNcbiAgICovXG4gIHJlYWRvbmx5IG93bmVycz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXJzIHRvIERlc2NyaWJlSW1hZ2VzIGNhbGxcbiAgICovXG4gIHJlYWRvbmx5IGZpbHRlcnM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmdbXX07XG59XG5cbi8qKlxuICogUXVlcnkgdG8gYXZhaWxhYmlsaXR5IHpvbmUgY29udGV4dCBwcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF2YWlsYWJpbGl0eVpvbmVzQ29udGV4dFF1ZXJ5IHtcbiAgLyoqXG4gICAqIFF1ZXJ5IGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblxuICAvKipcbiAgICogUXVlcnkgcmVnaW9uXG4gICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgcm9sZSB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIGxvb2sgdXAgdGhlIG1pc3NpbmcgdmFsdWVzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9va3VwUm9sZUFybj86IHN0cmluZztcblxufVxuXG4vKipcbiAqIFF1ZXJ5IHRvIGhvc3RlZCB6b25lIGNvbnRleHQgcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIb3N0ZWRab25lQ29udGV4dFF1ZXJ5IHtcbiAgLyoqXG4gICAqIFF1ZXJ5IGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblxuICAvKipcbiAgICogUXVlcnkgcmVnaW9uXG4gICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgcm9sZSB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIGxvb2sgdXAgdGhlIG1pc3NpbmcgdmFsdWVzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9va3VwUm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRvbWFpbiBuYW1lIGUuZy4gZXhhbXBsZS5jb20gdG8gbG9va3VwXG4gICAqL1xuICByZWFkb25seSBkb21haW5OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRydWUgaWYgdGhlIHpvbmUgeW91IHdhbnQgdG8gZmluZCBpcyBhIHByaXZhdGUgaG9zdGVkIHpvbmVcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHByaXZhdGVab25lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIFZQQyBJRCB0byB0aGF0IHRoZSBwcml2YXRlIHpvbmUgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGhcbiAgICpcbiAgICogSWYgeW91IHByb3ZpZGUgVlBDIElEIGFuZCBwcml2YXRlWm9uZSBpcyBmYWxzZSwgdGhpcyB3aWxsIHJldHVybiBubyByZXN1bHRzXG4gICAqIGFuZCByYWlzZSBhbiBlcnJvci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBSZXF1aXJlZCBpZiBwcml2YXRlWm9uZT10cnVlXG4gICAqL1xuICByZWFkb25seSB2cGNJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBRdWVyeSB0byBTU00gUGFyYW1ldGVyIENvbnRleHQgUHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTU01QYXJhbWV0ZXJDb250ZXh0UXVlcnkge1xuICAvKipcbiAgICogUXVlcnkgYWNjb3VudFxuICAgKi9cbiAgcmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBRdWVyeSByZWdpb25cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSByb2xlIHRoYXQgc2hvdWxkIGJlIHVzZWQgdG8gbG9vayB1cCB0aGUgbWlzc2luZyB2YWx1ZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBsb29rdXBSb2xlQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQYXJhbWV0ZXIgbmFtZSB0byBxdWVyeVxuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1ldGVyTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFF1ZXJ5IGlucHV0IGZvciBsb29raW5nIHVwIGEgVlBDXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVnBjQ29udGV4dFF1ZXJ5IHtcbiAgLyoqXG4gICAqIFF1ZXJ5IGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblxuICAvKipcbiAgICogUXVlcnkgcmVnaW9uXG4gICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgcm9sZSB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIGxvb2sgdXAgdGhlIG1pc3NpbmcgdmFsdWVzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9va3VwUm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogRmlsdGVycyB0byBhcHBseSB0byB0aGUgVlBDXG4gICAqXG4gICAqIEZpbHRlciBwYXJhbWV0ZXJzIGFyZSB0aGUgc2FtZSBhcyBwYXNzZWQgdG8gRGVzY3JpYmVWcGNzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVWcGNzLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IGZpbHRlcjoge1trZXk6IHN0cmluZ106IHN0cmluZ307XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcG9wdWxhdGUgdGhlIHN1Ym5ldEdyb3VwcyBmaWVsZCBvZiB0aGUgYFZwY0NvbnRleHRSZXNwb25zZWAsXG4gICAqIHdoaWNoIGNvbnRhaW5zIHBvdGVudGlhbGx5IGFzeW1tZXRyaWMgc3VibmV0IGdyb3Vwcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHJldHVybkFzeW1tZXRyaWNTdWJuZXRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9uYWwgdGFnIGZvciBzdWJuZXQgZ3JvdXAgbmFtZS5cbiAgICogSWYgbm90IHByb3ZpZGVkLCB3ZSdsbCBsb29rIGF0IHRoZSBhd3MtY2RrOnN1Ym5ldC1uYW1lIHRhZy5cbiAgICogSWYgdGhlIHN1Ym5ldCBkb2VzIG5vdCBoYXZlIHRoZSBzcGVjaWZpZWQgdGFnLFxuICAgKiB3ZSdsbCB1c2UgaXRzIHR5cGUgYXMgdGhlIG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdhd3MtY2RrOnN1Ym5ldC1uYW1lJ1xuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0R3JvdXBOYW1lVGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHBvcHVsYXRlIHRoZSBgdnBuR2F0ZXdheUlkYCBmaWVsZCBvZiB0aGUgYFZwY0NvbnRleHRSZXNwb25zZWAsXG4gICAqIHdoaWNoIGNvbnRhaW5zIHRoZSBWUE4gR2F0ZXdheSBJRCwgaWYgb25lIGV4aXN0cy4gWW91IGNhbiBleHBsaWNpdGx5XG4gICAqIGRpc2FibGUgdGhpcyBpbiBvcmRlciB0byBhdm9pZCB0aGUgbG9va3VwIGlmIHlvdSBrbm93IHRoZSBWUEMgZG9lcyBub3QgaGF2ZVxuICAgKiBhIFZQTiBHYXR3YXkgYXR0YWNoZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJldHVyblZwbkdhdGV3YXlzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBRdWVyeSB0byBlbmRwb2ludCBzZXJ2aWNlIGNvbnRleHQgcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmRwb2ludFNlcnZpY2VBdmFpbGFiaWxpdHlab25lc0NvbnRleHRRdWVyeSB7XG4gIC8qKlxuICAgKiBRdWVyeSBhY2NvdW50XG4gICAqL1xuICByZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFF1ZXJ5IHJlZ2lvblxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHJvbGUgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBsb29rIHVwIHRoZSBtaXNzaW5nIHZhbHVlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGxvb2t1cFJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFF1ZXJ5IHNlcnZpY2UgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUeXBlIG9mIGxvYWQgYmFsYW5jZXJcbiAqL1xuZXhwb3J0IGVudW0gTG9hZEJhbGFuY2VyVHlwZSB7XG4gIC8qKlxuICAgKiBOZXR3b3JrIGxvYWQgYmFsYW5jZXJcbiAgICovXG4gIE5FVFdPUksgPSAnbmV0d29yaycsXG5cbiAgLyoqXG4gICAqIEFwcGxpY2F0aW9uIGxvYWQgYmFsYW5jZXJcbiAgICovXG4gIEFQUExJQ0FUSU9OID0gJ2FwcGxpY2F0aW9uJyxcbn1cblxuLyoqXG4gKiBGaWx0ZXJzIGZvciBzZWxlY3RpbmcgbG9hZCBiYWxhbmNlcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2FkQmFsYW5jZXJGaWx0ZXIge1xuICAvKipcbiAgICogRmlsdGVyIGxvYWQgYmFsYW5jZXJzIGJ5IHRoZWlyIHR5cGVcbiAgICovXG4gIHJlYWRvbmx5IGxvYWRCYWxhbmNlclR5cGU6IExvYWRCYWxhbmNlclR5cGU7XG5cbiAgLyoqXG4gICAqIEZpbmQgYnkgbG9hZCBiYWxhbmNlcidzIEFSTlxuICAgKiBAZGVmYXVsdCAtIGRvZXMgbm90IHNlYXJjaCBieSBsb2FkIGJhbGFuY2VyIGFyblxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYXRjaCBsb2FkIGJhbGFuY2VyIHRhZ3NcbiAgICogQGRlZmF1bHQgLSBkb2VzIG5vdCBtYXRjaCBsb2FkIGJhbGFuY2VycyBieSB0YWdzXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXJUYWdzPzogVGFnW107XG59XG5cbi8qKlxuICogUXVlcnkgaW5wdXQgZm9yIGxvb2tpbmcgdXAgYSBsb2FkIGJhbGFuY2VyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZEJhbGFuY2VyQ29udGV4dFF1ZXJ5IGV4dGVuZHMgTG9hZEJhbGFuY2VyRmlsdGVyIHtcbiAgLyoqXG4gICAqIFF1ZXJ5IGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblxuICAvKipcbiAgICogUXVlcnkgcmVnaW9uXG4gICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgcm9sZSB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIGxvb2sgdXAgdGhlIG1pc3NpbmcgdmFsdWVzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9va3VwUm9sZUFybj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgcHJvdG9jb2wgZm9yIGNvbm5lY3Rpb25zIGZyb20gY2xpZW50cyB0byB0aGUgbG9hZCBiYWxhbmNlclxuICovXG5leHBvcnQgZW51bSBMb2FkQmFsYW5jZXJMaXN0ZW5lclByb3RvY29sIHtcbiAgLyoqXG4gICAqIEhUVFAgcHJvdG9jb2xcbiAgICovXG4gIEhUVFAgPSAnSFRUUCcsXG5cbiAgLyoqXG4gICAqIEhUVFBTIHByb3RvY29sXG4gICAqL1xuICBIVFRQUyA9ICdIVFRQUycsXG5cbiAgLyoqXG4gICAqIFRDUCBwcm90b2NvbFxuICAgKi9cbiAgVENQID0gJ1RDUCcsXG5cbiAgLyoqXG4gICAqIFRMUyBwcm90b2NvbFxuICAgKi9cbiAgVExTID0gJ1RMUycsXG5cbiAgLyoqXG4gICAqIFVEUCBwcm90b2NvbFxuICAgKiAqL1xuICBVRFAgPSAnVURQJyxcblxuICAvKipcbiAgICogVENQIGFuZCBVRFAgcHJvdG9jb2xcbiAgICogKi9cbiAgVENQX1VEUCA9ICdUQ1BfVURQJyxcbn1cblxuLyoqXG4gKiBRdWVyeSBpbnB1dCBmb3IgbG9va2luZyB1cCBhIGxvYWQgYmFsYW5jZXIgbGlzdGVuZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRRdWVyeSBleHRlbmRzIExvYWRCYWxhbmNlckZpbHRlciB7XG4gIC8qKlxuICAgKiBRdWVyeSBhY2NvdW50XG4gICAqL1xuICByZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFF1ZXJ5IHJlZ2lvblxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHJvbGUgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBsb29rIHVwIHRoZSBtaXNzaW5nIHZhbHVlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGxvb2t1cFJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZpbmQgYnkgbGlzdGVuZXIncyBhcm5cbiAgICogQGRlZmF1bHQgLSBkb2VzIG5vdCBmaW5kIGJ5IGxpc3RlbmVyIGFyblxuICAgKi9cbiAgcmVhZG9ubHkgbGlzdGVuZXJBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZpbHRlciBieSBsaXN0ZW5lciBwcm90b2NvbFxuICAgKiBAZGVmYXVsdCAtIGRvZXMgbm90IGZpbHRlciBieSBsaXN0ZW5lciBwcm90b2NvbFxuICAgKi9cbiAgcmVhZG9ubHkgbGlzdGVuZXJQcm90b2NvbD86IExvYWRCYWxhbmNlckxpc3RlbmVyUHJvdG9jb2w7XG5cbiAgLyoqXG4gICAqIEZpbHRlciBsaXN0ZW5lcnMgYnkgbGlzdGVuZXIgcG9ydFxuICAgKiBAZGVmYXVsdCAtIGRvZXMgbm90IGZpbHRlciBieSBhIGxpc3RlbmVyIHBvcnRcbiAgICovXG4gIHJlYWRvbmx5IGxpc3RlbmVyUG9ydD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBRdWVyeSBpbnB1dCBmb3IgbG9va2luZyB1cCBhIHNlY3VyaXR5IGdyb3VwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJpdHlHcm91cENvbnRleHRRdWVyeSB7XG4gIC8qKlxuICAgKiBRdWVyeSBhY2NvdW50XG4gICAqL1xuICByZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFF1ZXJ5IHJlZ2lvblxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHJvbGUgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBsb29rIHVwIHRoZSBtaXNzaW5nIHZhbHVlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGxvb2t1cFJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNlY3VyaXR5IGdyb3VwIGlkXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZWN1cml0eSBncm91cCBuYW1lXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZQQyBJRFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHZwY0lkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFF1ZXJ5IGlucHV0IGZvciBsb29raW5nIHVwIGEgS01TIEtleVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEtleUNvbnRleHRRdWVyeSB7XG4gIC8qKlxuICAgKiBRdWVyeSBhY2NvdW50XG4gICAqL1xuICByZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFF1ZXJ5IHJlZ2lvblxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHJvbGUgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBsb29rIHVwIHRoZSBtaXNzaW5nIHZhbHVlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGxvb2t1cFJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFsaWFzIG5hbWUgdXNlZCB0byBzZWFyY2ggdGhlIEtleVxuICAgKi9cbiAgcmVhZG9ubHkgYWxpYXNOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUXVlcnkgaW5wdXQgZm9yIHBsdWdpbnNcbiAqXG4gKiBUaGlzIGFsdGVybmF0ZSBicmFuY2ggaXMgbmVjZXNzYXJ5IGJlY2F1c2UgaXQgbmVlZHMgdG8gYmUgYWJsZSB0byBlc2NhcGUgYWxsIHR5cGUgY2hlY2tpbmdcbiAqIHdlIGRvIG9uIG9uIHRoZSBjbG91ZCBhc3NlbWJseSAtLSB3ZSBjYW5ub3Qga25vdyB0aGUgcHJvcGVydGllcyB0aGF0IHdpbGwgYmUgdXNlZCBhIHByaW9yaS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5Db250ZXh0UXVlcnkge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBsdWdpblxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBcmJpdHJhcnkgb3RoZXIgYXJndW1lbnRzIGZvciB0aGUgcGx1Z2luLlxuICAgKlxuICAgKiBUaGlzIGluZGV4IHNpZ25hdHVyZSBpcyBub3QgdXNhYmxlIGluIG5vbi1UeXBlU2NyaXB0L0phdmFTY3JpcHQgbGFuZ3VhZ2VzLlxuICAgKlxuICAgKiBAanNpaSBpZ25vcmVcbiAgICovXG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IHR5cGUgQ29udGV4dFF1ZXJ5UHJvcGVydGllcyA9IEFtaUNvbnRleHRRdWVyeVxufCBBdmFpbGFiaWxpdHlab25lc0NvbnRleHRRdWVyeVxufCBIb3N0ZWRab25lQ29udGV4dFF1ZXJ5XG58IFNTTVBhcmFtZXRlckNvbnRleHRRdWVyeVxufCBWcGNDb250ZXh0UXVlcnlcbnwgRW5kcG9pbnRTZXJ2aWNlQXZhaWxhYmlsaXR5Wm9uZXNDb250ZXh0UXVlcnlcbnwgTG9hZEJhbGFuY2VyQ29udGV4dFF1ZXJ5XG58IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFF1ZXJ5XG58IFNlY3VyaXR5R3JvdXBDb250ZXh0UXVlcnlcbnwgS2V5Q29udGV4dFF1ZXJ5XG58IFBsdWdpbkNvbnRleHRRdWVyeTtcblxuIl19","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./schema\"), exports);\n__exportStar(require(\"./metadata-schema\"), exports);\n__exportStar(require(\"./artifact-schema\"), exports);\n__exportStar(require(\"./context-queries\"), exports);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXlCO0FBQ3pCLG9EQUFrQztBQUNsQyxvREFBa0M7QUFDbEMsb0RBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9tZXRhZGF0YS1zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9hcnRpZmFjdC1zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0LXF1ZXJpZXMnO1xuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ArtifactMetadataEntryType = void 0;\n/**\n * Type of artifact metadata entry.\n */\nvar ArtifactMetadataEntryType;\n(function (ArtifactMetadataEntryType) {\n /**\n * Asset in metadata.\n */\n ArtifactMetadataEntryType[\"ASSET\"] = \"aws:cdk:asset\";\n /**\n * Metadata key used to print INFO-level messages by the toolkit when an app is syntheized.\n */\n ArtifactMetadataEntryType[\"INFO\"] = \"aws:cdk:info\";\n /**\n * Metadata key used to print WARNING-level messages by the toolkit when an app is syntheized.\n */\n ArtifactMetadataEntryType[\"WARN\"] = \"aws:cdk:warning\";\n /**\n * Metadata key used to print ERROR-level messages by the toolkit when an app is syntheized.\n */\n ArtifactMetadataEntryType[\"ERROR\"] = \"aws:cdk:error\";\n /**\n * Represents the CloudFormation logical ID of a resource at a certain path.\n */\n ArtifactMetadataEntryType[\"LOGICAL_ID\"] = \"aws:cdk:logicalId\";\n /**\n * Represents tags of a stack.\n */\n ArtifactMetadataEntryType[\"STACK_TAGS\"] = \"aws:cdk:stack-tags\";\n})(ArtifactMetadataEntryType || (exports.ArtifactMetadataEntryType = ArtifactMetadataEntryType = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWV0YWRhdGEtc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTJRQTs7R0FFRztBQUNILElBQVkseUJBOEJYO0FBOUJELFdBQVkseUJBQXlCO0lBQ25DOztPQUVHO0lBQ0gsb0RBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCxrREFBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILHFEQUF3QixDQUFBO0lBRXhCOztPQUVHO0lBQ0gsb0RBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCw2REFBZ0MsQ0FBQTtJQUVoQzs7T0FFRztJQUNILDhEQUFpQyxDQUFBO0FBQ25DLENBQUMsRUE5QlcseUJBQXlCLHlDQUF6Qix5QkFBeUIsUUE4QnBDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb21tb24gcHJvcGVydGllcyBmb3IgYXNzZXQgbWV0YWRhdGEuXG4gKi9cbmludGVyZmFjZSBCYXNlQXNzZXRNZXRhZGF0YUVudHJ5IHtcbiAgLyoqXG4gICAqIFJlcXVlc3RlZCBwYWNrYWdpbmcgc3R5bGVcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2luZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMb2dpY2FsIGlkZW50aWZpZXIgZm9yIHRoZSBhc3NldFxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGhhc2ggb2YgdGhlIGFzc2V0IHNvdXJjZS5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZUhhc2g6IHN0cmluZztcblxuICAvKipcbiAgICogUGF0aCBvbiBkaXNrIHRvIHRoZSBhc3NldFxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE1ldGFkYXRhIEVudHJ5IHNwZWMgZm9yIGZpbGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBlbnRyeSA9IHtcbiAqICAgcGFja2FnaW5nOiAnZmlsZScsXG4gKiAgIHMzQnVja2V0UGFyYW1ldGVyOiAnYnVja2V0LXBhcmFtZXRlcicsXG4gKiAgIHMzS2V5UGFyYW1lbnRlcjogJ2tleS1wYXJhbWV0ZXInLFxuICogICBhcnRpZmFjdEhhc2hQYXJhbWV0ZXI6ICdoYXNoLXBhcmFtZXRlcicsXG4gKiB9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZUFzc2V0TWV0YWRhdGFFbnRyeSBleHRlbmRzIEJhc2VBc3NldE1ldGFkYXRhRW50cnkge1xuICAvKipcbiAgICogUmVxdWVzdGVkIHBhY2thZ2luZyBzdHlsZVxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnaW5nOiAnemlwJyB8ICdmaWxlJztcblxuICAvKipcbiAgICogTmFtZSBvZiBwYXJhbWV0ZXIgd2hlcmUgUzMgYnVja2V0IHNob3VsZCBiZSBwYXNzZWQgaW5cbiAgICovXG4gIHJlYWRvbmx5IHMzQnVja2V0UGFyYW1ldGVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgcGFyYW1ldGVyIHdoZXJlIFMzIGtleSBzaG91bGQgYmUgcGFzc2VkIGluXG4gICAqL1xuICByZWFkb25seSBzM0tleVBhcmFtZXRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyIHdoZXJlIHRoZSBoYXNoIG9mIHRoZSBidW5kbGVkIGFzc2V0IHNob3VsZCBiZSBwYXNzZWQgaW4uXG4gICAqL1xuICByZWFkb25seSBhcnRpZmFjdEhhc2hQYXJhbWV0ZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBNZXRhZGF0YSBFbnRyeSBzcGVjIGZvciBzdGFjayB0YWcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIHtcbiAgLyoqXG4gICAqIFRhZyBrZXkuXG4gICAqXG4gICAqIChJbiB0aGUgYWN0dWFsIGZpbGUgb24gZGlzayB0aGlzIHdpbGwgYmUgY2FzZWQgYXMgXCJLZXlcIiwgYW5kIHRoZSBzdHJ1Y3R1cmUgaXNcbiAgICogcGF0Y2hlZCB0byBtYXRjaCB0aGlzIHN0cnVjdHVyZSB1cG9uIGxvYWRpbmc6XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iLzRhYWRhYTc3OWI0OGYzNTgzOGNjY2Q0ZTI1MTA3YjIzMzhmMDU1NDcvcGFja2FnZXMvJTQwYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEvbGliL21hbmlmZXN0LnRzI0wxMzcpXG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxuICAvKipcbiAgICogVGFnIHZhbHVlLlxuICAgKlxuICAgKiAoSW4gdGhlIGFjdHVhbCBmaWxlIG9uIGRpc2sgdGhpcyB3aWxsIGJlIGNhc2VkIGFzIFwiVmFsdWVcIiwgYW5kIHRoZSBzdHJ1Y3R1cmUgaXNcbiAgICogcGF0Y2hlZCB0byBtYXRjaCB0aGlzIHN0cnVjdHVyZSB1cG9uIGxvYWRpbmc6XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iLzRhYWRhYTc3OWI0OGYzNTgzOGNjY2Q0ZTI1MTA3YjIzMzhmMDU1NDcvcGFja2FnZXMvJTQwYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEvbGliL21hbmlmZXN0LnRzI0wxMzcpXG4gICAqL1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBEb2NrZXIgY2FjaGUgYmFja2VuZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lckltYWdlQXNzZXRDYWNoZU9wdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBjYWNoZSB0byB1c2UuXG4gICAqIFJlZmVyIHRvIGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2J1aWxkL2NhY2hlL2JhY2tlbmRzLyBmb3IgZnVsbCBsaXN0IG9mIGJhY2tlbmRzLlxuICAgKiBAZGVmYXVsdCAtIHVuc3BlY2lmaWVkXG4gICAqXG4gICAqIEBleGFtcGxlICdyZWdpc3RyeSdcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbiAgLyoqXG4gICAqIEFueSBwYXJhbWV0ZXJzIHRvIHBhc3MgaW50byB0aGUgZG9ja2VyIGNhY2hlIGJhY2tlbmQgY29uZmlndXJhdGlvbi5cbiAgICogUmVmZXIgdG8gaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vYnVpbGQvY2FjaGUvYmFja2VuZHMvIGZvciBjYWNoZSBiYWNrZW5kIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBkZWZhdWx0IHt9IE5vIG9wdGlvbnMgcHJvdmlkZWRcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZGVjbGFyZSBjb25zdCBicmFuY2g6IHN0cmluZztcbiAgICpcbiAgICogY29uc3QgcGFyYW1zID0ge1xuICAgKiAgIHJlZjogYDEyMzQ1Njc4LmRrci5lY3IudXMtd2VzdC0yLmFtYXpvbmF3cy5jb20vY2FjaGU6JHticmFuY2h9YCxcbiAgICogICBtb2RlOiBcIm1heFwiLFxuICAgKiB9O1xuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBNZXRhZGF0YSBFbnRyeSBzcGVjIGZvciBjb250YWluZXIgaW1hZ2VzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBlbnRyeSA9IHtcbiAqICAgcGFja2FnaW5nOiAnY29udGFpbmVyLWltYWdlJyxcbiAqICAgcmVwb3NpdG9yeU5hbWU6ICdyZXBvc2l0b3J5LW5hbWUnLFxuICogICBpbWFnZVRhZzogJ3RhZycsXG4gKiB9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVySW1hZ2VBc3NldE1ldGFkYXRhRW50cnkgZXh0ZW5kcyBCYXNlQXNzZXRNZXRhZGF0YUVudHJ5IHtcbiAgLyoqXG4gICAqIFR5cGUgb2YgYXNzZXRcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2luZzogJ2NvbnRhaW5lci1pbWFnZSc7XG5cbiAgLyoqXG4gICAqIEVDUiBSZXBvc2l0b3J5IG5hbWUgYW5kIHJlcG8gZGlnZXN0IChzZXBhcmF0ZWQgYnkgXCJAc2hhMjU2OlwiKSB3aGVyZSB0aGlzXG4gICAqIGltYWdlIGlzIHN0b3JlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIElmIG5vdCBzcGVjaWZpZWQsIGByZXBvc2l0b3J5TmFtZWAgYW5kIGBpbWFnZVRhZ2AgYXJlXG4gICAqIHJlcXVpcmVkIGJlY2F1c2Ugb3RoZXJ3aXNlIGhvdyB3aWxsIHRoZSBzdGFjayBrbm93IHdoZXJlIHRvIGZpbmQgdGhlIGFzc2V0LFxuICAgKiBoYT9cbiAgICogQGRlcHJlY2F0ZWQgc3BlY2lmeSBgcmVwb3NpdG9yeU5hbWVgIGFuZCBgaW1hZ2VUYWdgIGluc3RlYWQsIGFuZCB0aGVuIHlvdVxuICAgKiBrbm93IHdoZXJlIHRoZSBpbWFnZSB3aWxsIGdvLlxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VOYW1lUGFyYW1ldGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFQ1IgcmVwb3NpdG9yeSBuYW1lLCBpZiBvbWl0dGVkIGEgZGVmYXVsdCBuYW1lIGJhc2VkIG9uIHRoZSBhc3NldCdzIElEIGlzXG4gICAqIHVzZWQgaW5zdGVhZC4gU3BlY2lmeSB0aGlzIHByb3BlcnR5IGlmIHlvdSBuZWVkIHRvIHN0YXRpY2FsbHkgYWRkcmVzcyB0aGVcbiAgICogaW1hZ2UsIGUuZy4gZnJvbSBhIEt1YmVybmV0ZXMgUG9kLiBOb3RlLCB0aGlzIGlzIG9ubHkgdGhlIHJlcG9zaXRvcnkgbmFtZSxcbiAgICogd2l0aG91dCB0aGUgcmVnaXN0cnkgYW5kIHRoZSB0YWcgcGFydHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhpcyBwYXJhbWV0ZXIgaXMgUkVRVUlSRUQgYWZ0ZXIgMS4yMS4wXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRvY2tlciBpbWFnZSB0YWcgdG8gdXNlIGZvciB0YWdnaW5nIHB1c2hlZCBpbWFnZXMuIFRoaXMgZmllbGQgaXNcbiAgICogcmVxdWlyZWQgaWYgYGltYWdlUGFyYW1ldGVyTmFtZWAgaXMgb21taXRlZCAob3RoZXJ3aXNlLCB0aGUgYXBwIHdvbid0IGJlXG4gICAqIGFibGUgdG8gZmluZCB0aGUgaW1hZ2UpLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoaXMgcGFyYW1ldGVyIGlzIFJFUVVJUkVEIGFmdGVyIDEuMjEuMFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VUYWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFyZ3MgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZFxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBidWlsZCBhcmdzIGFyZSBwYXNzZWRcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkQXJncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFNTSCBhZ2VudCBzb2NrZXQgb3Iga2V5cyB0byBwYXNzIHRvIHRoZSBgZG9ja2VyIGJ1aWxkYCBjb21tYW5kXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIHNzaCBhcmcgaXMgcGFzc2VkXG4gICAqL1xuICByZWFkb25seSBidWlsZFNzaD86IHN0cmluZztcblxuICAvKipcbiAgICogQnVpbGQgc2VjcmV0cyB0byBwYXNzIHRvIHRoZSBgZG9ja2VyIGJ1aWxkYCBjb21tYW5kXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGJ1aWxkIHNlY3JldHMgYXJlIHBhc3NlZFxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRTZWNyZXRzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogRG9ja2VyIHRhcmdldCB0byBidWlsZCB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCBubyBidWlsZCB0YXJnZXRcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldD86IHN0cmluZztcblxuICAvKipcbiAgICogUGF0aCB0byB0aGUgRG9ja2VyZmlsZSAocmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeSkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZmlsZSBpcyBwYXNzZWRcbiAgICovXG4gIHJlYWRvbmx5IGZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5ldHdvcmtpbmcgbW9kZSBmb3IgdGhlIFJVTiBjb21tYW5kcyBkdXJpbmcgYnVpbGQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbmV0d29ya2luZyBtb2RlIHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya01vZGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBsYXRmb3JtIHRvIGJ1aWxkIGZvci4gX1JlcXVpcmVzIERvY2tlciBCdWlsZHhfLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGN1cnJlbnQgbWFjaGluZSBwbGF0Zm9ybVxuICAgKi9cbiAgcmVhZG9ubHkgcGxhdGZvcm0/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE91dHB1dHMgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBvdXRwdXRzIGFyZSBwYXNzZWQgdG8gdGhlIGJ1aWxkIGNvbW1hbmQgKGRlZmF1bHQgb3V0cHV0cyBhcmUgdXNlZClcbiAgICogQHNlZSBodHRwczovL2RvY3MuZG9ja2VyLmNvbS9lbmdpbmUvcmVmZXJlbmNlL2NvbW1hbmRsaW5lL2J1aWxkLyNjdXN0b20tYnVpbGQtb3V0cHV0c1xuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDYWNoZSBmcm9tIG9wdGlvbnMgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjYWNoZSBmcm9tIG9wdGlvbnMgYXJlIHBhc3NlZCB0byB0aGUgYnVpbGQgY29tbWFuZFxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2J1aWxkL2NhY2hlL2JhY2tlbmRzL1xuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVGcm9tPzogQ29udGFpbmVySW1hZ2VBc3NldENhY2hlT3B0aW9uW107XG5cbiAgLyoqXG4gICAqIENhY2hlIHRvIG9wdGlvbnMgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjYWNoZSB0byBvcHRpb25zIGFyZSBwYXNzZWQgdG8gdGhlIGJ1aWxkIGNvbW1hbmRcbiAgICogQHNlZSBodHRwczovL2RvY3MuZG9ja2VyLmNvbS9idWlsZC9jYWNoZS9iYWNrZW5kcy9cbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlVG8/OiBDb250YWluZXJJbWFnZUFzc2V0Q2FjaGVPcHRpb247XG5cbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIGNhY2hlIGFuZCBwYXNzIGAtLW5vLWNhY2hlYCB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBjYWNoZSBpcyB1c2VkXG4gICAqL1xuICByZWFkb25seSBjYWNoZURpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBAc2VlIEFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuQVNTRVRcbiAqL1xuZXhwb3J0IHR5cGUgQXNzZXRNZXRhZGF0YUVudHJ5ID0gRmlsZUFzc2V0TWV0YWRhdGFFbnRyeSB8IENvbnRhaW5lckltYWdlQXNzZXRNZXRhZGF0YUVudHJ5O1xuXG4vLyBUeXBlIGFsaWFzZXMgZm9yIG1ldGFkYXRhIGVudHJpZXMuXG4vLyBVc2VkIHNpbXBseSB0byBhc3NpZ24gbmFtZXMgdG8gZGF0YSB0eXBlcyBmb3IgbW9yZSBjbGFyaXR5LlxuXG4vKipcbiAqIEBzZWUgQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5JTkZPXG4gKiBAc2VlIEFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuV0FSTlxuICogQHNlZSBBcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlLkVSUk9SXG4gKi9cbmV4cG9ydCB0eXBlIExvZ01lc3NhZ2VNZXRhZGF0YUVudHJ5ID0gc3RyaW5nO1xuXG4vKipcbiAqIEBzZWUgQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5MT0dJQ0FMX0lEXG4gKi9cbmV4cG9ydCB0eXBlIExvZ2ljYWxJZE1ldGFkYXRhRW50cnkgPSBzdHJpbmc7XG5cbi8qKlxuICogQHNlZSBBcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlLlNUQUNLX1RBR1NcbiAqL1xuZXhwb3J0IHR5cGUgU3RhY2tUYWdzTWV0YWRhdGFFbnRyeSA9IFRhZ1tdO1xuXG4vKipcbiAqIFVuaW9uIHR5cGUgZm9yIGFsbCBtZXRhZGF0YSBlbnRyaWVzIHRoYXQgbWlnaHQgZXhpc3QgaW4gdGhlIG1hbmlmZXN0LlxuICovXG5leHBvcnQgdHlwZSBNZXRhZGF0YUVudHJ5RGF0YSA9IEFzc2V0TWV0YWRhdGFFbnRyeSB8IExvZ01lc3NhZ2VNZXRhZGF0YUVudHJ5IHwgTG9naWNhbElkTWV0YWRhdGFFbnRyeSB8IFN0YWNrVGFnc01ldGFkYXRhRW50cnk7XG5cbi8qKlxuICogVHlwZSBvZiBhcnRpZmFjdCBtZXRhZGF0YSBlbnRyeS5cbiAqL1xuZXhwb3J0IGVudW0gQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZSB7XG4gIC8qKlxuICAgKiBBc3NldCBpbiBtZXRhZGF0YS5cbiAgICovXG4gIEFTU0VUID0gJ2F3czpjZGs6YXNzZXQnLFxuXG4gIC8qKlxuICAgKiBNZXRhZGF0YSBrZXkgdXNlZCB0byBwcmludCBJTkZPLWxldmVsIG1lc3NhZ2VzIGJ5IHRoZSB0b29sa2l0IHdoZW4gYW4gYXBwIGlzIHN5bnRoZWl6ZWQuXG4gICAqL1xuICBJTkZPID0gJ2F3czpjZGs6aW5mbycsXG5cbiAgLyoqXG4gICAqIE1ldGFkYXRhIGtleSB1c2VkIHRvIHByaW50IFdBUk5JTkctbGV2ZWwgbWVzc2FnZXMgYnkgdGhlIHRvb2xraXQgd2hlbiBhbiBhcHAgaXMgc3ludGhlaXplZC5cbiAgICovXG4gIFdBUk4gPSAnYXdzOmNkazp3YXJuaW5nJyxcblxuICAvKipcbiAgICogTWV0YWRhdGEga2V5IHVzZWQgdG8gcHJpbnQgRVJST1ItbGV2ZWwgbWVzc2FnZXMgYnkgdGhlIHRvb2xraXQgd2hlbiBhbiBhcHAgaXMgc3ludGhlaXplZC5cbiAgICovXG4gIEVSUk9SID0gJ2F3czpjZGs6ZXJyb3InLFxuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIHRoZSBDbG91ZEZvcm1hdGlvbiBsb2dpY2FsIElEIG9mIGEgcmVzb3VyY2UgYXQgYSBjZXJ0YWluIHBhdGguXG4gICAqL1xuICBMT0dJQ0FMX0lEID0gJ2F3czpjZGs6bG9naWNhbElkJyxcblxuICAvKipcbiAgICogUmVwcmVzZW50cyB0YWdzIG9mIGEgc3RhY2suXG4gICAqL1xuICBTVEFDS19UQUdTID0gJ2F3czpjZGs6c3RhY2stdGFncycsXG59XG5cbi8qKlxuICogQSBtZXRhZGF0YSBlbnRyeSBpbiBhIGNsb3VkIGFzc2VtYmx5IGFydGlmYWN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhRW50cnkge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIG1ldGFkYXRhIGVudHJ5LlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGF0YS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBkYXRhLlxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YT86IE1ldGFkYXRhRW50cnlEYXRhO1xuXG4gIC8qKlxuICAgKiBBIHN0YWNrIHRyYWNlIGZvciB3aGVuIHRoZSBlbnRyeSB3YXMgY3JlYXRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyB0cmFjZS5cbiAgICovXG4gIHJlYWRvbmx5IHRyYWNlPzogc3RyaW5nW107XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ArtifactType = void 0;\n/**\n * Type of cloud artifact.\n */\nvar ArtifactType;\n(function (ArtifactType) {\n /**\n * Stub required because of JSII.\n */\n ArtifactType[\"NONE\"] = \"none\";\n /**\n * The artifact is an AWS CloudFormation stack.\n */\n ArtifactType[\"AWS_CLOUDFORMATION_STACK\"] = \"aws:cloudformation:stack\";\n /**\n * The artifact contains the CDK application's construct tree.\n */\n ArtifactType[\"CDK_TREE\"] = \"cdk:tree\";\n /**\n * Manifest for all assets in the Cloud Assembly\n */\n ArtifactType[\"ASSET_MANIFEST\"] = \"cdk:asset-manifest\";\n /**\n * Nested Cloud Assembly\n */\n ArtifactType[\"NESTED_CLOUD_ASSEMBLY\"] = \"cdk:cloud-assembly\";\n})(ArtifactType || (exports.ArtifactType = ArtifactType = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBOztHQUVHO0FBQ0gsSUFBWSxZQXlCWDtBQXpCRCxXQUFZLFlBQVk7SUFDdEI7O09BRUc7SUFDSCw2QkFBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCxxRUFBcUQsQ0FBQTtJQUVyRDs7T0FFRztJQUNILHFDQUFxQixDQUFBO0lBRXJCOztPQUVHO0lBQ0gscURBQXFDLENBQUE7SUFFckM7O09BRUc7SUFDSCw0REFBNEMsQ0FBQTtBQUM5QyxDQUFDLEVBekJXLFlBQVksNEJBQVosWUFBWSxRQXlCdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcnRpZmFjdFByb3BlcnRpZXMgfSBmcm9tICcuL2FydGlmYWN0LXNjaGVtYSc7XG5pbXBvcnQgeyBDb250ZXh0UHJvdmlkZXIsIENvbnRleHRRdWVyeVByb3BlcnRpZXMgfSBmcm9tICcuL2NvbnRleHQtcXVlcmllcyc7XG5pbXBvcnQgeyBNZXRhZGF0YUVudHJ5IH0gZnJvbSAnLi9tZXRhZGF0YS1zY2hlbWEnO1xuXG4vKipcbiAqIFR5cGUgb2YgY2xvdWQgYXJ0aWZhY3QuXG4gKi9cbmV4cG9ydCBlbnVtIEFydGlmYWN0VHlwZSB7XG4gIC8qKlxuICAgKiBTdHViIHJlcXVpcmVkIGJlY2F1c2Ugb2YgSlNJSS5cbiAgICovXG4gIE5PTkUgPSAnbm9uZScsIC8vIHJlcXVpcmVkIGR1ZSB0byBhIGpzaWkgYnVnXG5cbiAgLyoqXG4gICAqIFRoZSBhcnRpZmFjdCBpcyBhbiBBV1MgQ2xvdWRGb3JtYXRpb24gc3RhY2suXG4gICAqL1xuICBBV1NfQ0xPVURGT1JNQVRJT05fU1RBQ0sgPSAnYXdzOmNsb3VkZm9ybWF0aW9uOnN0YWNrJyxcblxuICAvKipcbiAgICogVGhlIGFydGlmYWN0IGNvbnRhaW5zIHRoZSBDREsgYXBwbGljYXRpb24ncyBjb25zdHJ1Y3QgdHJlZS5cbiAgICovXG4gIENES19UUkVFID0gJ2Nkazp0cmVlJyxcblxuICAvKipcbiAgICogTWFuaWZlc3QgZm9yIGFsbCBhc3NldHMgaW4gdGhlIENsb3VkIEFzc2VtYmx5XG4gICAqL1xuICBBU1NFVF9NQU5JRkVTVCA9ICdjZGs6YXNzZXQtbWFuaWZlc3QnLFxuXG4gIC8qKlxuICAgKiBOZXN0ZWQgQ2xvdWQgQXNzZW1ibHlcbiAgICovXG4gIE5FU1RFRF9DTE9VRF9BU1NFTUJMWSA9ICdjZGs6Y2xvdWQtYXNzZW1ibHknLFxufVxuXG4vKipcbiAqIEluZm9ybWF0aW9uIGFib3V0IHRoZSBhcHBsaWNhdGlvbidzIHJ1bnRpbWUgY29tcG9uZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW50aW1lSW5mbyB7XG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBsaWJyYXJpZXMgbG9hZGVkIGluIHRoZSBhcHBsaWNhdGlvbiwgYXNzb2NpYXRlZCB3aXRoIHRoZWlyIHZlcnNpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgbGlicmFyaWVzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgbWlzc2luZyBwaWVjZSBvZiBjb250ZXh0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pc3NpbmdDb250ZXh0IHtcbiAgLyoqXG4gICAqIFRoZSBtaXNzaW5nIGNvbnRleHQga2V5LlxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm92aWRlciBmcm9tIHdoaWNoIHdlIGV4cGVjdCB0aGlzIGNvbnRleHQga2V5IHRvIGJlIG9idGFpbmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXI6IENvbnRleHRQcm92aWRlcjtcblxuICAvKipcbiAgICogQSBzZXQgb2YgcHJvdmlkZXItc3BlY2lmaWMgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHByb3BzOiBDb250ZXh0UXVlcnlQcm9wZXJ0aWVzO1xufVxuXG4vKipcbiAqIEEgbWFuaWZlc3QgZm9yIGEgc2luZ2xlIGFydGlmYWN0IHdpdGhpbiB0aGUgY2xvdWQgYXNzZW1ibHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXJ0aWZhY3RNYW5pZmVzdCB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBhcnRpZmFjdC5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IEFydGlmYWN0VHlwZTtcblxuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IGludG8gd2hpY2ggdGhpcyBhcnRpZmFjdCBpcyBkZXBsb3llZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBlbnZyaW9ubWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50Pzogc3RyaW5nOyAvLyBmb3JtYXQ6IGF3czovL2FjY291bnQvcmVnaW9uXG5cbiAgLyoqXG4gICAqIEFzc29jaWF0ZWQgbWV0YWRhdGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbWV0YWRhdGEuXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IHsgW3BhdGg6IHN0cmluZ106IE1ldGFkYXRhRW50cnlbXSB9O1xuXG4gIC8qKlxuICAgKiBJRHMgb2YgYXJ0aWZhY3RzIHRoYXQgbXVzdCBiZSBkZXBsb3llZCBiZWZvcmUgdGhpcyBhcnRpZmFjdC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHNldCBvZiBwcm9wZXJ0aWVzIGZvciB0aGlzIGFydGlmYWN0IChkZXBlbmRzIG9uIHR5cGUpXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcHJvcGVydGllcy5cbiAgICovXG4gIHJlYWRvbmx5IHByb3BlcnRpZXM/OiBBcnRpZmFjdFByb3BlcnRpZXM7XG5cbiAgLyoqXG4gICAqIEEgc3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGlzIGFydGlmYWN0LiBTaG91bGQgb25seSBiZSB1c2VkIGluIHVzZXIgaW50ZXJmYWNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBkaXNwbGF5IG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXlOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgbWFuaWZlc3Qgd2hpY2ggZGVzY3JpYmVzIHRoZSBjbG91ZCBhc3NlbWJseS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NlbWJseU1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIFByb3RvY29sIHZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNldCBvZiBhcnRpZmFjdHMgaW4gdGhpcyBhc3NlbWJseS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhcnRpZmFjdHMuXG4gICAqL1xuICByZWFkb25seSBhcnRpZmFjdHM/OiB7IFtpZDogc3RyaW5nXTogQXJ0aWZhY3RNYW5pZmVzdCB9O1xuXG4gIC8qKlxuICAgKiBNaXNzaW5nIGNvbnRleHQgaW5mb3JtYXRpb24uIElmIHRoaXMgZmllbGQgaGFzIHZhbHVlcywgaXQgbWVhbnMgdGhhdCB0aGVcbiAgICogY2xvdWQgYXNzZW1ibHkgaXMgbm90IGNvbXBsZXRlIGFuZCBzaG91bGQgbm90IGJlIGRlcGxveWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIG1pc3NpbmcgY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IG1pc3Npbmc/OiBNaXNzaW5nQ29udGV4dFtdO1xuXG4gIC8qKlxuICAgKiBSdW50aW1lIGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGluZm8uXG4gICAqL1xuICByZWFkb25seSBydW50aW1lPzogUnVudGltZUluZm87XG59XG4iXX0=","\"use strict\";\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Manifest = exports.VERSION_MISMATCH = void 0;\nconst jsiiDeprecationWarnings = require(\"../.warnings.jsii.js\");\nconst JSII_RTTI_SYMBOL_1 = Symbol.for(\"jsii.rtti\");\nconst fs = require(\"fs\");\nconst jsonschema = require(\"jsonschema\");\nconst semver = require(\"semver\");\nconst assembly = require(\"./cloud-assembly\");\n/* eslint-disable @typescript-eslint/no-var-requires */\n/* eslint-disable @typescript-eslint/no-require-imports */\n// this prefix is used by the CLI to identify this specific error.\n// in which case we want to instruct the user to upgrade his CLI.\n// see exec.ts#createAssembly\nexports.VERSION_MISMATCH = 'Cloud assembly schema version mismatch';\nconst ASSETS_SCHEMA = require('../schema/assets.schema.json');\nconst ASSEMBLY_SCHEMA = require('../schema/cloud-assembly.schema.json');\n/**\n * Version is shared for both manifests\n */\nconst SCHEMA_VERSION = require('../schema/cloud-assembly.version.json').version;\nconst INTEG_SCHEMA = require('../schema/integ.schema.json');\n/**\n * Protocol utility class.\n */\nclass Manifest {\n /**\n * Validates and saves the cloud assembly manifest to file.\n *\n * @param manifest - manifest.\n * @param filePath - output file path.\n */\n static saveAssemblyManifest(manifest, filePath) {\n try {\n jsiiDeprecationWarnings._aws_cdk_cloud_assembly_schema_AssemblyManifest(manifest);\n }\n catch (error) {\n if (process.env.JSII_DEBUG !== \"1\" && error.name === \"DeprecationError\") {\n Error.captureStackTrace(error, this.saveAssemblyManifest);\n }\n throw error;\n }\n Manifest.saveManifest(manifest, filePath, ASSEMBLY_SCHEMA, Manifest.patchStackTagsOnWrite);\n }\n /**\n * Load and validates the cloud assembly manifest from file.\n *\n * @param filePath - path to the manifest file.\n */\n static loadAssemblyManifest(filePath, options) {\n try {\n jsiiDeprecationWarnings._aws_cdk_cloud_assembly_schema_LoadManifestOptions(options);\n }\n catch (error) {\n if (process.env.JSII_DEBUG !== \"1\" && error.name === \"DeprecationError\") {\n Error.captureStackTrace(error, this.loadAssemblyManifest);\n }\n throw error;\n }\n return Manifest.loadManifest(filePath, ASSEMBLY_SCHEMA, Manifest.patchStackTagsOnRead, options);\n }\n /**\n * Validates and saves the asset manifest to file.\n *\n * @param manifest - manifest.\n * @param filePath - output file path.\n */\n static saveAssetManifest(manifest, filePath) {\n try {\n jsiiDeprecationWarnings._aws_cdk_cloud_assembly_schema_AssetManifest(manifest);\n }\n catch (error) {\n if (process.env.JSII_DEBUG !== \"1\" && error.name === \"DeprecationError\") {\n Error.captureStackTrace(error, this.saveAssetManifest);\n }\n throw error;\n }\n Manifest.saveManifest(manifest, filePath, ASSETS_SCHEMA, Manifest.patchStackTagsOnRead);\n }\n /**\n * Load and validates the asset manifest from file.\n *\n * @param filePath - path to the manifest file.\n */\n static loadAssetManifest(filePath) {\n return this.loadManifest(filePath, ASSETS_SCHEMA);\n }\n /**\n * Validates and saves the integ manifest to file.\n *\n * @param manifest - manifest.\n * @param filePath - output file path.\n */\n static saveIntegManifest(manifest, filePath) {\n try {\n jsiiDeprecationWarnings._aws_cdk_cloud_assembly_schema_IntegManifest(manifest);\n }\n catch (error) {\n if (process.env.JSII_DEBUG !== \"1\" && error.name === \"DeprecationError\") {\n Error.captureStackTrace(error, this.saveIntegManifest);\n }\n throw error;\n }\n Manifest.saveManifest(manifest, filePath, INTEG_SCHEMA);\n }\n /**\n * Load and validates the integ manifest from file.\n *\n * @param filePath - path to the manifest file.\n */\n static loadIntegManifest(filePath) {\n return this.loadManifest(filePath, INTEG_SCHEMA);\n }\n /**\n * Fetch the current schema version number.\n */\n static version() {\n return SCHEMA_VERSION;\n }\n /**\n * Deprecated\n * @deprecated use `saveAssemblyManifest()`\n */\n static save(manifest, filePath) { try {\n jsiiDeprecationWarnings.print(\"@aws-cdk/cloud-assembly-schema.Manifest#save\", \"use `saveAssemblyManifest()`\");\n jsiiDeprecationWarnings._aws_cdk_cloud_assembly_schema_AssemblyManifest(manifest);\n }\n catch (error) {\n if (process.env.JSII_DEBUG !== \"1\" && error.name === \"DeprecationError\") {\n Error.captureStackTrace(error, this.save);\n }\n throw error;\n } return this.saveAssemblyManifest(manifest, filePath); }\n /**\n * Deprecated\n * @deprecated use `loadAssemblyManifest()`\n */\n static load(filePath) { try {\n jsiiDeprecationWarnings.print(\"@aws-cdk/cloud-assembly-schema.Manifest#load\", \"use `loadAssemblyManifest()`\");\n }\n catch (error) {\n if (process.env.JSII_DEBUG !== \"1\" && error.name === \"DeprecationError\") {\n Error.captureStackTrace(error, this.load);\n }\n throw error;\n } return this.loadAssemblyManifest(filePath); }\n static validate(manifest, schema, options) {\n function parseVersion(version) {\n const ver = semver.valid(version);\n if (!ver) {\n throw new Error(`Invalid semver string: \"${version}\"`);\n }\n return ver;\n }\n const maxSupported = parseVersion(Manifest.version());\n const actual = parseVersion(manifest.version);\n // first validate the version should be accepted.\n if (semver.gt(actual, maxSupported) && !options?.skipVersionCheck) {\n // we use a well known error prefix so that the CLI can identify this specific error\n // and print some more context to the user.\n throw new Error(`${exports.VERSION_MISMATCH}: Maximum schema version supported is ${maxSupported}, but found ${actual}`);\n }\n // now validate the format is good.\n const validator = new jsonschema.Validator();\n const result = validator.validate(manifest, schema, {\n // does exist but is not in the TypeScript definitions\n nestedErrors: true,\n allowUnknownAttributes: false,\n });\n let errors = result.errors;\n if (options?.skipEnumCheck) {\n // Enum validations aren't useful when\n errors = stripEnumErrors(errors);\n }\n if (errors.length > 0) {\n throw new Error(`Invalid assembly manifest:\\n${errors.map(e => e.stack).join('\\n')}`);\n }\n }\n static saveManifest(manifest, filePath, schema, preprocess) {\n let withVersion = { ...manifest, version: Manifest.version() };\n Manifest.validate(withVersion, schema);\n if (preprocess) {\n withVersion = preprocess(withVersion);\n }\n fs.writeFileSync(filePath, JSON.stringify(withVersion, undefined, 2));\n }\n static loadManifest(filePath, schema, preprocess, options) {\n const contents = fs.readFileSync(filePath, { encoding: 'utf-8' });\n let obj;\n try {\n obj = JSON.parse(contents);\n }\n catch (e) {\n throw new Error(`${e.message}, while parsing ${JSON.stringify(contents)}`);\n }\n if (preprocess) {\n obj = preprocess(obj);\n }\n Manifest.validate(obj, schema, options);\n return obj;\n }\n /**\n * This requires some explaining...\n *\n * We previously used `{ Key, Value }` for the object that represents a stack tag. (Notice the casing)\n * @link https://github.com/aws/aws-cdk/blob/v1.27.0/packages/aws-cdk/lib/api/cxapp/stacks.ts#L427.\n *\n * When that object moved to this package, it had to be JSII compliant, which meant the property\n * names must be `camelCased`, and not `PascalCased`. This meant it no longer matches the structure in the `manifest.json` file.\n * In order to support current manifest files, we have to translate the `PascalCased` representation to the new `camelCased` one.\n *\n * Note that the serialization itself still writes `PascalCased` because it relates to how CloudFormation expects it.\n *\n * Ideally, we would start writing the `camelCased` and translate to how CloudFormation expects it when needed. But this requires nasty\n * backwards-compatibility code and it just doesn't seem to be worth the effort.\n */\n static patchStackTagsOnRead(manifest) {\n return Manifest.replaceStackTags(manifest, tags => tags.map((diskTag) => ({\n key: diskTag.Key,\n value: diskTag.Value,\n })));\n }\n /**\n * See explanation on `patchStackTagsOnRead`\n *\n * Translate stack tags metadata if it has the \"right\" casing.\n */\n static patchStackTagsOnWrite(manifest) {\n return Manifest.replaceStackTags(manifest, tags => tags.map(memTag => \n // Might already be uppercased (because stack synthesis generates it in final form yet)\n ('Key' in memTag ? memTag : { Key: memTag.key, Value: memTag.value })));\n }\n /**\n * Recursively replace stack tags in the stack metadata\n */\n static replaceStackTags(manifest, fn) {\n // Need to add in the `noUndefined`s because otherwise jest snapshot tests are going to freak out\n // about the keys with values that are `undefined` (even though they would never be JSON.stringified)\n return noUndefined({\n ...manifest,\n artifacts: mapValues(manifest.artifacts, artifact => {\n if (artifact.type !== assembly.ArtifactType.AWS_CLOUDFORMATION_STACK) {\n return artifact;\n }\n return noUndefined({\n ...artifact,\n metadata: mapValues(artifact.metadata, metadataEntries => metadataEntries.map(metadataEntry => {\n if (metadataEntry.type !== assembly.ArtifactMetadataEntryType.STACK_TAGS || !metadataEntry.data) {\n return metadataEntry;\n }\n return {\n ...metadataEntry,\n data: fn(metadataEntry.data),\n };\n })),\n });\n }),\n });\n }\n constructor() { }\n}\nexports.Manifest = Manifest;\n_a = JSII_RTTI_SYMBOL_1;\nManifest[_a] = { fqn: \"@aws-cdk/cloud-assembly-schema.Manifest\", version: \"2.139.0\" };\nfunction mapValues(xs, fn) {\n if (!xs) {\n return undefined;\n }\n const ret = {};\n for (const [k, v] of Object.entries(xs)) {\n ret[k] = fn(v);\n }\n return ret;\n}\nfunction noUndefined(xs) {\n const ret = {};\n for (const [k, v] of Object.entries(xs)) {\n if (v !== undefined) {\n ret[k] = v;\n }\n }\n return ret;\n}\nfunction stripEnumErrors(errors) {\n return errors.filter(e => typeof e.schema === 'string' || !('enum' in e.schema));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtYW5pZmVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx5QkFBeUI7QUFDekIseUNBQXlDO0FBQ3pDLGlDQUFpQztBQUVqQyw2Q0FBNkM7QUFHN0MsdURBQXVEO0FBQ3ZELDBEQUEwRDtBQUUxRCxrRUFBa0U7QUFDbEUsaUVBQWlFO0FBQ2pFLDZCQUE2QjtBQUNoQixRQUFBLGdCQUFnQixHQUFXLHdDQUF3QyxDQUFDO0FBRWpGLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0FBRTlELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0FBRXhFOztHQUVHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLHVDQUF1QyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBRWhGLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0FBc0M1RDs7R0FFRztBQUNILE1BQWEsUUFBUTtJQUNuQjs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxRQUFtQyxFQUFFLFFBQWdCOzs7Ozs7Ozs7O1FBQ3RGLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsUUFBUSxDQUFDLHFCQUFxQixDQUFDLENBQUM7S0FDNUY7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLG9CQUFvQixDQUFDLFFBQWdCLEVBQUUsT0FBNkI7Ozs7Ozs7Ozs7UUFDaEYsT0FBTyxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsUUFBUSxDQUFDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ2pHO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBOEIsRUFBRSxRQUFnQjs7Ozs7Ozs7OztRQUM5RSxRQUFRLENBQUMsWUFB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LENBQUM7UUFDeEMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDcEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNiLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsTUFBb0M7SUFDM0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFJLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2xGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBqc29uc2NoZW1hIGZyb20gJ2pzb25zY2hlbWEnO1xuaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgKiBhcyBhc3NldHMgZnJvbSAnLi9hc3NldHMnO1xuaW1wb3J0ICogYXMgYXNzZW1ibHkgZnJvbSAnLi9jbG91ZC1hc3NlbWJseSc7XG5pbXBvcnQgKiBhcyBpbnRlZyBmcm9tICcuL2ludGVnLXRlc3RzJztcblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlcyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0cyAqL1xuXG4vLyB0aGlzIHByZWZpeCBpcyB1c2VkIGJ5IHRoZSBDTEkgdG8gaWRlbnRpZnkgdGhpcyBzcGVjaWZpYyBlcnJvci5cbi8vIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBpbnN0cnVjdCB0aGUgdXNlciB0byB1cGdyYWRlIGhpcyBDTEkuXG4vLyBzZWUgZXhlYy50cyNjcmVhdGVBc3NlbWJseVxuZXhwb3J0IGNvbnN0IFZFUlNJT05fTUlTTUFUQ0g6IHN0cmluZyA9ICdDbG91ZCBhc3NlbWJseSBzY2hlbWEgdmVyc2lvbiBtaXNtYXRjaCc7XG5cbmNvbnN0IEFTU0VUU19TQ0hFTUEgPSByZXF1aXJlKCcuLi9zY2hlbWEvYXNzZXRzLnNjaGVtYS5qc29uJyk7XG5cbmNvbnN0IEFTU0VNQkxZX1NDSEVNQSA9IHJlcXVpcmUoJy4uL3NjaGVtYS9jbG91ZC1hc3NlbWJseS5zY2hlbWEuanNvbicpO1xuXG4vKipcbiAqIFZlcnNpb24gaXMgc2hhcmVkIGZvciBib3RoIG1hbmlmZXN0c1xuICovXG5jb25zdCBTQ0hFTUFfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL3NjaGVtYS9jbG91ZC1hc3NlbWJseS52ZXJzaW9uLmpzb24nKS52ZXJzaW9uO1xuXG5jb25zdCBJTlRFR19TQ0hFTUEgPSByZXF1aXJlKCcuLi9zY2hlbWEvaW50ZWcuc2NoZW1hLmpzb24nKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgbG9hZE1hbmlmZXN0IG9wZXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvYWRNYW5pZmVzdE9wdGlvbnMge1xuICAvKipcbiAgICogU2tpcCB0aGUgdmVyc2lvbiBjaGVja1xuICAgKlxuICAgKiBUaGlzIG1lYW5zIHlvdSBtYXkgcmVhZCBhIG5ld2VyIGNsb3VkIGFzc2VtYmx5IHRoYW4gdGhlIENYIEFQSSBpcyBkZXNpZ25lZFxuICAgKiB0byBzdXBwb3J0LCBhbmQgeW91ciBhcHBsaWNhdGlvbiBtYXkgbm90IGJlIGF3YXJlIG9mIGFsbCBmZWF0dXJlcyB0aGF0IGluIHVzZVxuICAgKiBpbiB0aGUgQ2xvdWQgQXNzZW1ibHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBza2lwVmVyc2lvbkNoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2tpcCBlbnVtIGNoZWNrc1xuICAgKlxuICAgKiBUaGlzIG1lYW5zIHlvdSBtYXkgcmVhZCBlbnVtIHZhbHVlcyB5b3UgZG9uJ3Qga25vdyBhYm91dCB5ZXQuIE1ha2Ugc3VyZSB0byBhbHdheXNcbiAgICogY2hlY2sgdGhlIHZhbHVlcyBvZiBlbnVtcyB5b3UgZW5jb3VudGVyIGluIHRoZSBtYW5pZmVzdC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNraXBFbnVtQ2hlY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUb3BvbG9naWNhbGx5IHNvcnQgYWxsIGFydGlmYWN0c1xuICAgKlxuICAgKiBUaGlzIHBhcmFtZXRlciBpcyBvbmx5IHJlc3BlY3RlZCBieSB0aGUgY29uc3RydWN0b3Igb2YgYENsb3VkQXNzZW1ibHlgLiBUaGVcbiAgICogcHJvcGVydHkgbGl2ZXMgaGVyZSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdG9wb1NvcnQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFByb3RvY29sIHV0aWxpdHkgY2xhc3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBNYW5pZmVzdCB7XG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYW5kIHNhdmVzIHRoZSBjbG91ZCBhc3NlbWJseSBtYW5pZmVzdCB0byBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gbWFuaWZlc3QgLSBtYW5pZmVzdC5cbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gb3V0cHV0IGZpbGUgcGF0aC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2F2ZUFzc2VtYmx5TWFuaWZlc3QobWFuaWZlc3Q6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QsIGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgICBNYW5pZmVzdC5zYXZlTWFuaWZlc3QobWFuaWZlc3QsIGZpbGVQYXRoLCBBU1NFTUJMWV9TQ0hFTUEsIE1hbmlmZXN0LnBhdGNoU3RhY2tUYWdzT25Xcml0ZSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBhbmQgdmFsaWRhdGVzIHRoZSBjbG91ZCBhc3NlbWJseSBtYW5pZmVzdCBmcm9tIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIHBhdGggdG8gdGhlIG1hbmlmZXN0IGZpbGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGxvYWRBc3NlbWJseU1hbmlmZXN0KGZpbGVQYXRoOiBzdHJpbmcsIG9wdGlvbnM/OiBMb2FkTWFuaWZlc3RPcHRpb25zKTogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCB7XG4gICAgcmV0dXJuIE1hbmlmZXN0LmxvYWRNYW5pZmVzdChmaWxlUGF0aCwgQVNTRU1CTFlfU0NIRU1BLCBNYW5pZmVzdC5wYXRjaFN0YWNrVGFnc09uUmVhZCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGFuZCBzYXZlcyB0aGUgYXNzZXQgbWFuaWZlc3QgdG8gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIG1hbmlmZXN0IC0gbWFuaWZlc3QuXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIG91dHB1dCBmaWxlIHBhdGguXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNhdmVBc3NldE1hbmlmZXN0KG1hbmlmZXN0OiBhc3NldHMuQXNzZXRNYW5pZmVzdCwgZmlsZVBhdGg6IHN0cmluZykge1xuICAgIE1hbmlmZXN0LnNhdmVNYW5pZmVzdChtYW5pZmVzdCwgZmlsZVBhdGgsIEFTU0VUU19TQ0hFTUEsIE1hbmlmZXN0LnBhdGNoU3RhY2tUYWdzT25SZWFkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGFuZCB2YWxpZGF0ZXMgdGhlIGFzc2V0IG1hbmlmZXN0IGZyb20gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gcGF0aCB0byB0aGUgbWFuaWZlc3QgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbG9hZEFzc2V0TWFuaWZlc3QoZmlsZVBhdGg6IHN0cmluZyk6IGFzc2V0cy5Bc3NldE1hbmlmZXN0IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkTWFuaWZlc3QoZmlsZVBhdGgsIEFTU0VUU19TQ0hFTUEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbmQgc2F2ZXMgdGhlIGludGVnIG1hbmlmZXN0IHRvIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBtYW5pZmVzdCAtIG1hbmlmZXN0LlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBvdXRwdXQgZmlsZSBwYXRoLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzYXZlSW50ZWdNYW5pZmVzdChtYW5pZmVzdDogaW50ZWcuSW50ZWdNYW5pZmVzdCwgZmlsZVBhdGg6IHN0cmluZykge1xuICAgIE1hbmlmZXN0LnNhdmVNYW5pZmVzdChtYW5pZmVzdCwgZmlsZVBhdGgsIElOVEVHX1NDSEVNQSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBhbmQgdmFsaWRhdGVzIHRoZSBpbnRlZyBtYW5pZmVzdCBmcm9tIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIHBhdGggdG8gdGhlIG1hbmlmZXN0IGZpbGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGxvYWRJbnRlZ01hbmlmZXN0KGZpbGVQYXRoOiBzdHJpbmcpOiBpbnRlZy5JbnRlZ01hbmlmZXN0IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkTWFuaWZlc3QoZmlsZVBhdGgsIElOVEVHX1NDSEVNQSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggdGhlIGN1cnJlbnQgc2NoZW1hIHZlcnNpb24gbnVtYmVyLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB2ZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFNDSEVNQV9WRVJTSU9OO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWRcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBzYXZlQXNzZW1ibHlNYW5pZmVzdCgpYFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzYXZlKG1hbmlmZXN0OiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0LCBmaWxlUGF0aDogc3RyaW5nKSB7IHJldHVybiB0aGlzLnNhdmVBc3NlbWJseU1hbmlmZXN0KG1hbmlmZXN0LCBmaWxlUGF0aCk7IH1cblxuICAvKipcbiAgICogRGVwcmVjYXRlZFxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYGxvYWRBc3NlbWJseU1hbmlmZXN0KClgXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGxvYWQoZmlsZVBhdGg6IHN0cmluZyk6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QgeyByZXR1cm4gdGhpcy5sb2FkQXNzZW1ibHlNYW5pZmVzdChmaWxlUGF0aCk7IH1cblxuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZShtYW5pZmVzdDogeyB2ZXJzaW9uOiBzdHJpbmcgfSwgc2NoZW1hOiBqc29uc2NoZW1hLlNjaGVtYSwgb3B0aW9ucz86IExvYWRNYW5pZmVzdE9wdGlvbnMpIHtcbiAgICBmdW5jdGlvbiBwYXJzZVZlcnNpb24odmVyc2lvbjogc3RyaW5nKSB7XG4gICAgICBjb25zdCB2ZXIgPSBzZW12ZXIudmFsaWQodmVyc2lvbik7XG4gICAgICBpZiAoIXZlcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2VtdmVyIHN0cmluZzogXCIke3ZlcnNpb259XCJgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2ZXI7XG4gICAgfVxuXG4gICAgY29uc3QgbWF4U3VwcG9ydGVkID0gcGFyc2VWZXJzaW9uKE1hbmlmZXN0LnZlcnNpb24oKSk7XG4gICAgY29uc3QgYWN0dWFsID0gcGFyc2VWZXJzaW9uKG1hbmlmZXN0LnZlcnNpb24pO1xuXG4gICAgLy8gZmlyc3QgdmFsaWRhdGUgdGhlIHZlcnNpb24gc2hvdWxkIGJlIGFjY2VwdGVkLlxuICAgIGlmIChzZW12ZXIuZ3QoYWN0dWFsLCBtYXhTdXBwb3J0ZWQpICYmICFvcHRpb25zPy5za2lwVmVyc2lvbkNoZWNrKSB7XG4gICAgICAvLyB3ZSB1c2UgYSB3ZWxsIGtub3duIGVycm9yIHByZWZpeCBzbyB0aGF0IHRoZSBDTEkgY2FuIGlkZW50aWZ5IHRoaXMgc3BlY2lmaWMgZXJyb3JcbiAgICAgIC8vIGFuZCBwcmludCBzb21lIG1vcmUgY29udGV4dCB0byB0aGUgdXNlci5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtWRVJTSU9OX01JU01BVENIfTogTWF4aW11bSBzY2hlbWEgdmVyc2lvbiBzdXBwb3J0ZWQgaXMgJHttYXhTdXBwb3J0ZWR9LCBidXQgZm91bmQgJHthY3R1YWx9YCk7XG4gICAgfVxuXG4gICAgLy8gbm93IHZhbGlkYXRlIHRoZSBmb3JtYXQgaXMgZ29vZC5cbiAgICBjb25zdCB2YWxpZGF0b3IgPSBuZXcganNvbnNjaGVtYS5WYWxpZGF0b3IoKTtcbiAgICBjb25zdCByZXN1bHQgPSB2YWxpZGF0b3IudmFsaWRhdGUobWFuaWZlc3QsIHNjaGVtYSwge1xuXG4gICAgICAvLyBkb2VzIGV4aXN0IGJ1dCBpcyBub3QgaW4gdGhlIFR5cGVTY3JpcHQgZGVmaW5pdGlvbnNcbiAgICAgIG5lc3RlZEVycm9yczogdHJ1ZSxcblxuICAgICAgYWxsb3dVbmtub3duQXR0cmlidXRlczogZmFsc2UsXG5cbiAgICB9IGFzIGFueSk7XG5cbiAgICBsZXQgZXJyb3JzID0gcmVzdWx0LmVycm9ycztcbiAgICBpZiAob3B0aW9ucz8uc2tpcEVudW1DaGVjaykge1xuICAgICAgLy8gRW51bSB2YWxpZGF0aW9ucyBhcmVuJ3QgdXNlZnVsIHdoZW5cbiAgICAgIGVycm9ycyA9IHN0cmlwRW51bUVycm9ycyhlcnJvcnMpO1xuICAgIH1cblxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGFzc2VtYmx5IG1hbmlmZXN0OlxcbiR7ZXJyb3JzLm1hcChlID0+IGUuc3RhY2spLmpvaW4oJ1xcbicpfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHNhdmVNYW5pZmVzdChtYW5pZmVzdDogYW55LCBmaWxlUGF0aDogc3RyaW5nLCBzY2hlbWE6IGpzb25zY2hlbWEuU2NoZW1hLCBwcmVwcm9jZXNzPzogKG9iajogYW55KSA9PiBhbnkpIHtcbiAgICBsZXQgd2l0aFZlcnNpb24gPSB7IC4uLm1hbmlmZXN0LCB2ZXJzaW9uOiBNYW5pZmVzdC52ZXJzaW9uKCkgfTtcbiAgICBNYW5pZmVzdC52YWxpZGF0ZSh3aXRoVmVyc2lvbiwgc2NoZW1hKTtcbiAgICBpZiAocHJlcHJvY2Vzcykge1xuICAgICAgd2l0aFZlcnNpb24gPSBwcmVwcm9jZXNzKHdpdGhWZXJzaW9uKTtcbiAgICB9XG4gICAgZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkod2l0aFZlcnNpb24sIHVuZGVmaW5lZCwgMikpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgbG9hZE1hbmlmZXN0KGZpbGVQYXRoOiBzdHJpbmcsIHNjaGVtYToganNvbnNjaGVtYS5TY2hlbWEsIHByZXByb2Nlc3M/OiAob2JqOiBhbnkpID0+IGFueSwgb3B0aW9ucz86IExvYWRNYW5pZmVzdE9wdGlvbnMpIHtcbiAgICBjb25zdCBjb250ZW50cyA9IGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KTtcbiAgICBsZXQgb2JqO1xuICAgIHRyeSB7XG4gICAgICBvYmogPSBKU09OLnBhcnNlKGNvbnRlbnRzKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtlLm1lc3NhZ2V9LCB3aGlsZSBwYXJzaW5nICR7SlNPTi5zdHJpbmdpZnkoY29udGVudHMpfWApO1xuICAgIH1cbiAgICBpZiAocHJlcHJvY2Vzcykge1xuICAgICAgb2JqID0gcHJlcHJvY2VzcyhvYmopO1xuICAgIH1cbiAgICBNYW5pZmVzdC52YWxpZGF0ZShvYmosIHNjaGVtYSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIHJlcXVpcmVzIHNvbWUgZXhwbGFpbmluZy4uLlxuICAgKlxuICAgKiBXZSBwcmV2aW91c2x5IHVzZWQgYHsgS2V5LCBWYWx1ZSB9YCBmb3IgdGhlIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgYSBzdGFjayB0YWcuIChOb3RpY2UgdGhlIGNhc2luZylcbiAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjEuMjcuMC9wYWNrYWdlcy9hd3MtY2RrL2xpYi9hcGkvY3hhcHAvc3RhY2tzLnRzI0w0MjcuXG4gICAqXG4gICAqIFdoZW4gdGhhdCBvYmplY3QgbW92ZWQgdG8gdGhpcyBwYWNrYWdlLCBpdCBoYWQgdG8gYmUgSlNJSSBjb21wbGlhbnQsIHdoaWNoIG1lYW50IHRoZSBwcm9wZXJ0eVxuICAgKiBuYW1lcyBtdXN0IGJlIGBjYW1lbENhc2VkYCwgYW5kIG5vdCBgUGFzY2FsQ2FzZWRgLiBUaGlzIG1lYW50IGl0IG5vIGxvbmdlciBtYXRjaGVzIHRoZSBzdHJ1Y3R1cmUgaW4gdGhlIGBtYW5pZmVzdC5qc29uYCBmaWxlLlxuICAgKiBJbiBvcmRlciB0byBzdXBwb3J0IGN1cnJlbnQgbWFuaWZlc3QgZmlsZXMsIHdlIGhhdmUgdG8gdHJhbnNsYXRlIHRoZSBgUGFzY2FsQ2FzZWRgIHJlcHJlc2VudGF0aW9uIHRvIHRoZSBuZXcgYGNhbWVsQ2FzZWRgIG9uZS5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRoZSBzZXJpYWxpemF0aW9uIGl0c2VsZiBzdGlsbCB3cml0ZXMgYFBhc2NhbENhc2VkYCBiZWNhdXNlIGl0IHJlbGF0ZXMgdG8gaG93IENsb3VkRm9ybWF0aW9uIGV4cGVjdHMgaXQuXG4gICAqXG4gICAqIElkZWFsbHksIHdlIHdvdWxkIHN0YXJ0IHdyaXRpbmcgdGhlIGBjYW1lbENhc2VkYCBhbmQgdHJhbnNsYXRlIHRvIGhvdyBDbG91ZEZvcm1hdGlvbiBleHBlY3RzIGl0IHdoZW4gbmVlZGVkLiBCdXQgdGhpcyByZXF1aXJlcyBuYXN0eVxuICAgKiBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBjb2RlIGFuZCBpdCBqdXN0IGRvZXNuJ3Qgc2VlbSB0byBiZSB3b3J0aCB0aGUgZWZmb3J0LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcGF0Y2hTdGFja1RhZ3NPblJlYWQobWFuaWZlc3Q6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QpIHtcbiAgICByZXR1cm4gTWFuaWZlc3QucmVwbGFjZVN0YWNrVGFncyhtYW5pZmVzdCwgdGFncyA9PiB0YWdzLm1hcCgoZGlza1RhZzogYW55KSA9PiAoe1xuICAgICAga2V5OiBkaXNrVGFnLktleSxcbiAgICAgIHZhbHVlOiBkaXNrVGFnLlZhbHVlLFxuICAgIH0pKSk7XG4gIH1cblxuICAvKipcbiAgICogU2VlIGV4cGxhbmF0aW9uIG9uIGBwYXRjaFN0YWNrVGFnc09uUmVhZGBcbiAgICpcbiAgICogVHJhbnNsYXRlIHN0YWNrIHRhZ3MgbWV0YWRhdGEgaWYgaXQgaGFzIHRoZSBcInJpZ2h0XCIgY2FzaW5nLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcGF0Y2hTdGFja1RhZ3NPbldyaXRlKG1hbmlmZXN0OiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0KSB7XG4gICAgcmV0dXJuIE1hbmlmZXN0LnJlcGxhY2VTdGFja1RhZ3MobWFuaWZlc3QsIHRhZ3MgPT4gdGFncy5tYXAobWVtVGFnID0+XG4gICAgICAvLyBNaWdodCBhbHJlYWR5IGJlIHVwcGVyY2FzZWQgKGJlY2F1c2Ugc3RhY2sgc3ludGhlc2lzIGdlbmVyYXRlcyBpdCBpbiBmaW5hbCBmb3JtIHlldClcbiAgICAgICgnS2V5JyBpbiBtZW1UYWcgPyBtZW1UYWcgOiB7IEtleTogbWVtVGFnLmtleSwgVmFsdWU6IG1lbVRhZy52YWx1ZSB9KSBhcyBhbnksXG4gICAgKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVjdXJzaXZlbHkgcmVwbGFjZSBzdGFjayB0YWdzIGluIHRoZSBzdGFjayBtZXRhZGF0YVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVwbGFjZVN0YWNrVGFncyhtYW5pZmVzdDogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCwgZm46IEVuZG9mdW5jdG9yPGFzc2VtYmx5LlN0YWNrVGFnc01ldGFkYXRhRW50cnk+KTogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCB7XG4gICAgLy8gTmVlZCB0byBhZGQgaW4gdGhlIGBub1VuZGVmaW5lZGBzIGJlY2F1c2Ugb3RoZXJ3aXNlIGplc3Qgc25hcHNob3QgdGVzdHMgYXJlIGdvaW5nIHRvIGZyZWFrIG91dFxuICAgIC8vIGFib3V0IHRoZSBrZXlzIHdpdGggdmFsdWVzIHRoYXQgYXJlIGB1bmRlZmluZWRgIChldmVuIHRob3VnaCB0aGV5IHdvdWxkIG5ldmVyIGJlIEpTT04uc3RyaW5naWZpZWQpXG4gICAgcmV0dXJuIG5vVW5kZWZpbmVkKHtcbiAgICAgIC4uLm1hbmlmZXN0LFxuICAgICAgYXJ0aWZhY3RzOiBtYXBWYWx1ZXMobWFuaWZlc3QuYXJ0aWZhY3RzLCBhcnRpZmFjdCA9PiB7XG4gICAgICAgIGlmIChhcnRpZmFjdC50eXBlICE9PSBhc3NlbWJseS5BcnRpZmFjdFR5cGUuQVdTX0NMT1VERk9STUFUSU9OX1NUQUNLKSB7IHJldHVybiBhcnRpZmFjdDsgfVxuICAgICAgICByZXR1cm4gbm9VbmRlZmluZWQoe1xuICAgICAgICAgIC4uLmFydGlmYWN0LFxuICAgICAgICAgIG1ldGFkYXRhOiBtYXBWYWx1ZXMoYXJ0aWZhY3QubWV0YWRhdGEsIG1ldGFkYXRhRW50cmllcyA9PiBtZXRhZGF0YUVudHJpZXMubWFwKG1ldGFkYXRhRW50cnkgPT4ge1xuICAgICAgICAgICAgaWYgKG1ldGFkYXRhRW50cnkudHlwZSAhPT0gYXNzZW1ibHkuQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5TVEFDS19UQUdTIHx8ICFtZXRhZGF0YUVudHJ5LmRhdGEpIHsgcmV0dXJuIG1ldGFkYXRhRW50cnk7IH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLm1ldGFkYXRhRW50cnksXG4gICAgICAgICAgICAgIGRhdGE6IGZuKG1ldGFkYXRhRW50cnkuZGF0YSBhcyBhc3NlbWJseS5TdGFja1RhZ3NNZXRhZGF0YUVudHJ5KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIGFzc2VtYmx5LkFydGlmYWN0TWFuaWZlc3QpO1xuICAgICAgfSksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge31cbn1cblxudHlwZSBFbmRvZnVuY3RvcjxBPiA9ICh4OiBBKSA9PiBBO1xuXG5mdW5jdGlvbiBtYXBWYWx1ZXM8QSwgQj4oeHM6IFJlY29yZDxzdHJpbmcsIEE+IHwgdW5kZWZpbmVkLCBmbjogKHg6IEEpID0+IEIpOiBSZWNvcmQ8c3RyaW5nLCBCPiB8IHVuZGVmaW5lZCB7XG4gIGlmICgheHMpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXQ6IFJlY29yZDxzdHJpbmcsIEI+IHwgdW5kZWZpbmVkID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHhzKSkge1xuICAgIHJldFtrXSA9IGZuKHYpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIG5vVW5kZWZpbmVkPEEgZXh0ZW5kcyBvYmplY3Q+KHhzOiBBKTogQSB7XG4gIGNvbnN0IHJldDogYW55ID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHhzKSkge1xuICAgIGlmICh2ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldFtrXSA9IHY7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIHN0cmlwRW51bUVycm9ycyhlcnJvcnM6IGpzb25zY2hlbWEuVmFsaWRhdGlvbkVycm9yW10pIHtcbiAgcmV0dXJuIGVycm9ycy5maWx0ZXIoZSA9PiB0eXBlb2YgZS5zY2hlbWEgPT09J3N0cmluZycgfHwgISgnZW51bScgaW4gZS5zY2hlbWEpKTtcbn1cbiJdfQ==","'use strict';\n\nvar helpers = require('./helpers');\n\n/** @type ValidatorResult */\nvar ValidatorResult = helpers.ValidatorResult;\n/** @type SchemaError */\nvar SchemaError = helpers.SchemaError;\n\nvar attribute = {};\n\nattribute.ignoreProperties = {\n // informative properties\n 'id': true,\n 'default': true,\n 'description': true,\n 'title': true,\n // arguments to other properties\n 'additionalItems': true,\n 'then': true,\n 'else': true,\n // special-handled properties\n '$schema': true,\n '$ref': true,\n 'extends': true,\n};\n\n/**\n * @name validators\n */\nvar validators = attribute.validators = {};\n\n/**\n * Validates whether the instance if of a certain type\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {ValidatorResult|null}\n */\nvalidators.type = function validateType (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var types = Array.isArray(schema.type) ? schema.type : [schema.type];\n if (!types.some(this.testType.bind(this, instance, schema, options, ctx))) {\n var list = types.map(function (v) {\n if(!v) return;\n var id = v.$id || v.id;\n return id ? ('<' + id + '>') : (v+'');\n });\n result.addError({\n name: 'type',\n argument: list,\n message: \"is not of a type(s) \" + list,\n });\n }\n return result;\n};\n\nfunction testSchemaNoThrow(instance, options, ctx, callback, schema){\n var throwError = options.throwError;\n var throwAll = options.throwAll;\n options.throwError = false;\n options.throwAll = false;\n var res = this.validateSchema(instance, schema, options, ctx);\n options.throwError = throwError;\n options.throwAll = throwAll;\n\n if (!res.valid && callback instanceof Function) {\n callback(res);\n }\n return res.valid;\n}\n\n/**\n * Validates whether the instance matches some of the given schemas\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {ValidatorResult|null}\n */\nvalidators.anyOf = function validateAnyOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var inner = new ValidatorResult(instance, schema, options, ctx);\n if (!Array.isArray(schema.anyOf)){\n throw new SchemaError(\"anyOf must be an array\");\n }\n if (!schema.anyOf.some(\n testSchemaNoThrow.bind(\n this, instance, options, ctx, function(res){inner.importErrors(res);}\n ))) {\n var list = schema.anyOf.map(function (v, i) {\n var id = v.$id || v.id;\n if(id) return '<' + id + '>';\n return(v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n });\n if (options.nestedErrors) {\n result.importErrors(inner);\n }\n result.addError({\n name: 'anyOf',\n argument: list,\n message: \"is not any of \" + list.join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance matches every given schema\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.allOf = function validateAllOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n if (!Array.isArray(schema.allOf)){\n throw new SchemaError(\"allOf must be an array\");\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var self = this;\n schema.allOf.forEach(function(v, i){\n var valid = self.validateSchema(instance, v, options, ctx);\n if(!valid.valid){\n var id = v.$id || v.id;\n var msg = id || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n result.addError({\n name: 'allOf',\n argument: { id: msg, length: valid.errors.length, valid: valid },\n message: 'does not match allOf schema ' + msg + ' with ' + valid.errors.length + ' error[s]:',\n });\n result.importErrors(valid);\n }\n });\n return result;\n};\n\n/**\n * Validates whether the instance matches exactly one of the given schemas\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.oneOf = function validateOneOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n if (!Array.isArray(schema.oneOf)){\n throw new SchemaError(\"oneOf must be an array\");\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var inner = new ValidatorResult(instance, schema, options, ctx);\n var count = schema.oneOf.filter(\n testSchemaNoThrow.bind(\n this, instance, options, ctx, function(res) {inner.importErrors(res);}\n ) ).length;\n var list = schema.oneOf.map(function (v, i) {\n var id = v.$id || v.id;\n return id || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n });\n if (count!==1) {\n if (options.nestedErrors) {\n result.importErrors(inner);\n }\n result.addError({\n name: 'oneOf',\n argument: list,\n message: \"is not exactly one from \" + list.join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates \"then\" or \"else\" depending on the result of validating \"if\"\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.if = function validateIf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) return null;\n if (!helpers.isSchema(schema.if)) throw new Error('Expected \"if\" keyword to be a schema');\n var ifValid = testSchemaNoThrow.call(this, instance, options, ctx, null, schema.if);\n var result = new ValidatorResult(instance, schema, options, ctx);\n var res;\n if(ifValid){\n if (schema.then === undefined) return;\n if (!helpers.isSchema(schema.then)) throw new Error('Expected \"then\" keyword to be a schema');\n res = this.validateSchema(instance, schema.then, options, ctx.makeChild(schema.then));\n result.importErrors(res);\n }else{\n if (schema.else === undefined) return;\n if (!helpers.isSchema(schema.else)) throw new Error('Expected \"else\" keyword to be a schema');\n res = this.validateSchema(instance, schema.else, options, ctx.makeChild(schema.else));\n result.importErrors(res);\n }\n return result;\n};\n\nfunction getEnumerableProperty(object, key){\n // Determine if `key` shows up in `for(var key in object)`\n // First test Object.hasOwnProperty.call as an optimization: that guarantees it does\n if(Object.hasOwnProperty.call(object, key)) return object[key];\n // Test `key in object` as an optimization; false means it won't\n if(!(key in object)) return;\n while( (object = Object.getPrototypeOf(object)) ){\n if(Object.propertyIsEnumerable.call(object, key)) return object[key];\n }\n}\n\n/**\n * Validates propertyNames\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.propertyNames = function validatePropertyNames (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var subschema = schema.propertyNames!==undefined ? schema.propertyNames : {};\n if(!helpers.isSchema(subschema)) throw new SchemaError('Expected \"propertyNames\" to be a schema (object or boolean)');\n\n for (var property in instance) {\n if(getEnumerableProperty(instance, property) !== undefined){\n var res = this.validateSchema(property, subschema, options, ctx.makeChild(subschema));\n result.importErrors(res);\n }\n }\n\n return result;\n};\n\n/**\n * Validates properties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.properties = function validateProperties (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var properties = schema.properties || {};\n for (var property in properties) {\n var subschema = properties[property];\n if(subschema===undefined){\n continue;\n }else if(subschema===null){\n throw new SchemaError('Unexpected null, expected schema in \"properties\"');\n }\n if (typeof options.preValidateProperty == 'function') {\n options.preValidateProperty(instance, property, subschema, options, ctx);\n }\n var prop = getEnumerableProperty(instance, property);\n var res = this.validateSchema(prop, subschema, options, ctx.makeChild(subschema, property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n return result;\n};\n\n/**\n * Test a specific property within in instance against the additionalProperties schema attribute\n * This ignores properties with definitions in the properties schema attribute, but no other attributes.\n * If too many more types of property-existence tests pop up they may need their own class of tests (like `type` has)\n * @private\n * @return {boolean}\n */\nfunction testAdditionalProperty (instance, schema, options, ctx, property, result) {\n if(!this.types.object(instance)) return;\n if (schema.properties && schema.properties[property] !== undefined) {\n return;\n }\n if (schema.additionalProperties === false) {\n result.addError({\n name: 'additionalProperties',\n argument: property,\n message: \"is not allowed to have the additional property \" + JSON.stringify(property),\n });\n } else {\n var additionalProperties = schema.additionalProperties || {};\n\n if (typeof options.preValidateProperty == 'function') {\n options.preValidateProperty(instance, property, additionalProperties, options, ctx);\n }\n\n var res = this.validateSchema(instance[property], additionalProperties, options, ctx.makeChild(additionalProperties, property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n}\n\n/**\n * Validates patternProperties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.patternProperties = function validatePatternProperties (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var patternProperties = schema.patternProperties || {};\n\n for (var property in instance) {\n var test = true;\n for (var pattern in patternProperties) {\n var subschema = patternProperties[pattern];\n if(subschema===undefined){\n continue;\n }else if(subschema===null){\n throw new SchemaError('Unexpected null, expected schema in \"patternProperties\"');\n }\n try {\n var regexp = new RegExp(pattern, 'u');\n } catch(_e) {\n // In the event the stricter handling causes an error, fall back on the forgiving handling\n // DEPRECATED\n regexp = new RegExp(pattern);\n }\n if (!regexp.test(property)) {\n continue;\n }\n test = false;\n\n if (typeof options.preValidateProperty == 'function') {\n options.preValidateProperty(instance, property, subschema, options, ctx);\n }\n\n var res = this.validateSchema(instance[property], subschema, options, ctx.makeChild(subschema, property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n if (test) {\n testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n }\n }\n\n return result;\n};\n\n/**\n * Validates additionalProperties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.additionalProperties = function validateAdditionalProperties (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n // if patternProperties is defined then we'll test when that one is called instead\n if (schema.patternProperties) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n for (var property in instance) {\n testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minProperties = function validateMinProperties (instance, schema, options, ctx) {\n if (!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var keys = Object.keys(instance);\n if (!(keys.length >= schema.minProperties)) {\n result.addError({\n name: 'minProperties',\n argument: schema.minProperties,\n message: \"does not meet minimum property length of \" + schema.minProperties,\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxProperties = function validateMaxProperties (instance, schema, options, ctx) {\n if (!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var keys = Object.keys(instance);\n if (!(keys.length <= schema.maxProperties)) {\n result.addError({\n name: 'maxProperties',\n argument: schema.maxProperties,\n message: \"does not meet maximum property length of \" + schema.maxProperties,\n });\n }\n return result;\n};\n\n/**\n * Validates items when instance is an array\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.items = function validateItems (instance, schema, options, ctx) {\n var self = this;\n if (!this.types.array(instance)) return;\n if (schema.items===undefined) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n instance.every(function (value, i) {\n if(Array.isArray(schema.items)){\n var items = schema.items[i]===undefined ? schema.additionalItems : schema.items[i];\n }else{\n var items = schema.items;\n }\n if (items === undefined) {\n return true;\n }\n if (items === false) {\n result.addError({\n name: 'items',\n message: \"additionalItems not permitted\",\n });\n return false;\n }\n var res = self.validateSchema(value, items, options, ctx.makeChild(items, i));\n if(res.instance !== result.instance[i]) result.instance[i] = res.instance;\n result.importErrors(res);\n return true;\n });\n return result;\n};\n\n/**\n * Validates the \"contains\" keyword\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.contains = function validateContains (instance, schema, options, ctx) {\n var self = this;\n if (!this.types.array(instance)) return;\n if (schema.contains===undefined) return;\n if (!helpers.isSchema(schema.contains)) throw new Error('Expected \"contains\" keyword to be a schema');\n var result = new ValidatorResult(instance, schema, options, ctx);\n var count = instance.some(function (value, i) {\n var res = self.validateSchema(value, schema.contains, options, ctx.makeChild(schema.contains, i));\n return res.errors.length===0;\n });\n if(count===false){\n result.addError({\n name: 'contains',\n argument: schema.contains,\n message: \"must contain an item matching given schema\",\n });\n }\n return result;\n};\n\n/**\n * Validates minimum and exclusiveMinimum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minimum = function validateMinimum (instance, schema, options, ctx) {\n if (!this.types.number(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (schema.exclusiveMinimum && schema.exclusiveMinimum === true) {\n if(!(instance > schema.minimum)){\n result.addError({\n name: 'minimum',\n argument: schema.minimum,\n message: \"must be greater than \" + schema.minimum,\n });\n }\n } else {\n if(!(instance >= schema.minimum)){\n result.addError({\n name: 'minimum',\n argument: schema.minimum,\n message: \"must be greater than or equal to \" + schema.minimum,\n });\n }\n }\n return result;\n};\n\n/**\n * Validates maximum and exclusiveMaximum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maximum = function validateMaximum (instance, schema, options, ctx) {\n if (!this.types.number(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (schema.exclusiveMaximum && schema.exclusiveMaximum === true) {\n if(!(instance < schema.maximum)){\n result.addError({\n name: 'maximum',\n argument: schema.maximum,\n message: \"must be less than \" + schema.maximum,\n });\n }\n } else {\n if(!(instance <= schema.maximum)){\n result.addError({\n name: 'maximum',\n argument: schema.maximum,\n message: \"must be less than or equal to \" + schema.maximum,\n });\n }\n }\n return result;\n};\n\n/**\n * Validates the number form of exclusiveMinimum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.exclusiveMinimum = function validateExclusiveMinimum (instance, schema, options, ctx) {\n // Support the boolean form of exclusiveMinimum, which is handled by the \"minimum\" keyword.\n if(typeof schema.exclusiveMinimum === 'boolean') return;\n if (!this.types.number(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var valid = instance > schema.exclusiveMinimum;\n if (!valid) {\n result.addError({\n name: 'exclusiveMinimum',\n argument: schema.exclusiveMinimum,\n message: \"must be strictly greater than \" + schema.exclusiveMinimum,\n });\n }\n return result;\n};\n\n/**\n * Validates the number form of exclusiveMaximum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.exclusiveMaximum = function validateExclusiveMaximum (instance, schema, options, ctx) {\n // Support the boolean form of exclusiveMaximum, which is handled by the \"maximum\" keyword.\n if(typeof schema.exclusiveMaximum === 'boolean') return;\n if (!this.types.number(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var valid = instance < schema.exclusiveMaximum;\n if (!valid) {\n result.addError({\n name: 'exclusiveMaximum',\n argument: schema.exclusiveMaximum,\n message: \"must be strictly less than \" + schema.exclusiveMaximum,\n });\n }\n return result;\n};\n\n/**\n * Perform validation for multipleOf and divisibleBy, which are essentially the same.\n * @param instance\n * @param schema\n * @param validationType\n * @param errorMessage\n * @returns {String|null}\n */\nvar validateMultipleOfOrDivisbleBy = function validateMultipleOfOrDivisbleBy (instance, schema, options, ctx, validationType, errorMessage) {\n if (!this.types.number(instance)) return;\n\n var validationArgument = schema[validationType];\n if (validationArgument == 0) {\n throw new SchemaError(validationType + \" cannot be zero\");\n }\n\n var result = new ValidatorResult(instance, schema, options, ctx);\n\n var instanceDecimals = helpers.getDecimalPlaces(instance);\n var divisorDecimals = helpers.getDecimalPlaces(validationArgument);\n\n var maxDecimals = Math.max(instanceDecimals , divisorDecimals);\n var multiplier = Math.pow(10, maxDecimals);\n\n if (Math.round(instance * multiplier) % Math.round(validationArgument * multiplier) !== 0) {\n result.addError({\n name: validationType,\n argument: validationArgument,\n message: errorMessage + JSON.stringify(validationArgument),\n });\n }\n\n return result;\n};\n\n/**\n * Validates divisibleBy when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.multipleOf = function validateMultipleOf (instance, schema, options, ctx) {\n return validateMultipleOfOrDivisbleBy.call(this, instance, schema, options, ctx, \"multipleOf\", \"is not a multiple of (divisible by) \");\n};\n\n/**\n * Validates multipleOf when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.divisibleBy = function validateDivisibleBy (instance, schema, options, ctx) {\n return validateMultipleOfOrDivisbleBy.call(this, instance, schema, options, ctx, \"divisibleBy\", \"is not divisible by (multiple of) \");\n};\n\n/**\n * Validates whether the instance value is present.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.required = function validateRequired (instance, schema, options, ctx) {\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (instance === undefined && schema.required === true) {\n // A boolean form is implemented for reverse-compatibility with schemas written against older drafts\n result.addError({\n name: 'required',\n message: \"is required\",\n });\n } else if (this.types.object(instance) && Array.isArray(schema.required)) {\n schema.required.forEach(function(n){\n if(getEnumerableProperty(instance, n)===undefined){\n result.addError({\n name: 'required',\n argument: n,\n message: \"requires property \" + JSON.stringify(n),\n });\n }\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value matches the regular expression, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.pattern = function validatePattern (instance, schema, options, ctx) {\n if (!this.types.string(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var pattern = schema.pattern;\n try {\n var regexp = new RegExp(pattern, 'u');\n } catch(_e) {\n // In the event the stricter handling causes an error, fall back on the forgiving handling\n // DEPRECATED\n regexp = new RegExp(pattern);\n }\n if (!instance.match(regexp)) {\n result.addError({\n name: 'pattern',\n argument: schema.pattern,\n message: \"does not match pattern \" + JSON.stringify(schema.pattern.toString()),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is of a certain defined format or a custom\n * format.\n * The following formats are supported for string types:\n * - date-time\n * - date\n * - time\n * - ip-address\n * - ipv6\n * - uri\n * - color\n * - host-name\n * - alpha\n * - alpha-numeric\n * - utc-millisec\n * @param instance\n * @param schema\n * @param [options]\n * @param [ctx]\n * @return {String|null}\n */\nvalidators.format = function validateFormat (instance, schema, options, ctx) {\n if (instance===undefined) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!result.disableFormat && !helpers.isFormat(instance, schema.format, this)) {\n result.addError({\n name: 'format',\n argument: schema.format,\n message: \"does not conform to the \" + JSON.stringify(schema.format) + \" format\",\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minLength = function validateMinLength (instance, schema, options, ctx) {\n if (!this.types.string(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var hsp = instance.match(/[\\uDC00-\\uDFFF]/g);\n var length = instance.length - (hsp ? hsp.length : 0);\n if (!(length >= schema.minLength)) {\n result.addError({\n name: 'minLength',\n argument: schema.minLength,\n message: \"does not meet minimum length of \" + schema.minLength,\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxLength = function validateMaxLength (instance, schema, options, ctx) {\n if (!this.types.string(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n // TODO if this was already computed in \"minLength\", use that value instead of re-computing\n var hsp = instance.match(/[\\uDC00-\\uDFFF]/g);\n var length = instance.length - (hsp ? hsp.length : 0);\n if (!(length <= schema.maxLength)) {\n result.addError({\n name: 'maxLength',\n argument: schema.maxLength,\n message: \"does not meet maximum length of \" + schema.maxLength,\n });\n }\n return result;\n};\n\n/**\n * Validates whether instance contains at least a minimum number of items, when the instance is an Array.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minItems = function validateMinItems (instance, schema, options, ctx) {\n if (!this.types.array(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length >= schema.minItems)) {\n result.addError({\n name: 'minItems',\n argument: schema.minItems,\n message: \"does not meet minimum length of \" + schema.minItems,\n });\n }\n return result;\n};\n\n/**\n * Validates whether instance contains no more than a maximum number of items, when the instance is an Array.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxItems = function validateMaxItems (instance, schema, options, ctx) {\n if (!this.types.array(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length <= schema.maxItems)) {\n result.addError({\n name: 'maxItems',\n argument: schema.maxItems,\n message: \"does not meet maximum length of \" + schema.maxItems,\n });\n }\n return result;\n};\n\n/**\n * Deep compares arrays for duplicates\n * @param v\n * @param i\n * @param a\n * @private\n * @return {boolean}\n */\nfunction testArrays (v, i, a) {\n var j, len = a.length;\n for (j = i + 1, len; j < len; j++) {\n if (helpers.deepCompareStrict(v, a[j])) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Validates whether there are no duplicates, when the instance is an Array.\n * @param instance\n * @return {String|null}\n */\nvalidators.uniqueItems = function validateUniqueItems (instance, schema, options, ctx) {\n if (schema.uniqueItems!==true) return;\n if (!this.types.array(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!instance.every(testArrays)) {\n result.addError({\n name: 'uniqueItems',\n message: \"contains duplicate item\",\n });\n }\n return result;\n};\n\n/**\n * Validate for the presence of dependency properties, if the instance is an object.\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {null|ValidatorResult}\n */\nvalidators.dependencies = function validateDependencies (instance, schema, options, ctx) {\n if (!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n for (var property in schema.dependencies) {\n if (instance[property] === undefined) {\n continue;\n }\n var dep = schema.dependencies[property];\n var childContext = ctx.makeChild(dep, property);\n if (typeof dep == 'string') {\n dep = [dep];\n }\n if (Array.isArray(dep)) {\n dep.forEach(function (prop) {\n if (instance[prop] === undefined) {\n result.addError({\n // FIXME there's two different \"dependencies\" errors here with slightly different outputs\n // Can we make these the same? Or should we create different error types?\n name: 'dependencies',\n argument: childContext.propertyPath,\n message: \"property \" + prop + \" not found, required by \" + childContext.propertyPath,\n });\n }\n });\n } else {\n var res = this.validateSchema(instance, dep, options, childContext);\n if(result.instance !== res.instance) result.instance = res.instance;\n if (res && res.errors.length) {\n result.addError({\n name: 'dependencies',\n argument: childContext.propertyPath,\n message: \"does not meet dependency required by \" + childContext.propertyPath,\n });\n result.importErrors(res);\n }\n }\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is one of the enumerated values.\n *\n * @param instance\n * @param schema\n * @return {ValidatorResult|null}\n */\nvalidators['enum'] = function validateEnum (instance, schema, options, ctx) {\n if (instance === undefined) {\n return null;\n }\n if (!Array.isArray(schema['enum'])) {\n throw new SchemaError(\"enum expects an array\", schema);\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!schema['enum'].some(helpers.deepCompareStrict.bind(null, instance))) {\n result.addError({\n name: 'enum',\n argument: schema['enum'],\n message: \"is not one of enum values: \" + schema['enum'].map(String).join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance exactly matches a given value\n *\n * @param instance\n * @param schema\n * @return {ValidatorResult|null}\n */\nvalidators['const'] = function validateEnum (instance, schema, options, ctx) {\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!helpers.deepCompareStrict(schema['const'], instance)) {\n result.addError({\n name: 'const',\n argument: schema['const'],\n message: \"does not exactly match expected constant: \" + schema['const'],\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance if of a prohibited type.\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {null|ValidatorResult}\n */\nvalidators.not = validators.disallow = function validateNot (instance, schema, options, ctx) {\n var self = this;\n if(instance===undefined) return null;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var notTypes = schema.not || schema.disallow;\n if(!notTypes) return null;\n if(!Array.isArray(notTypes)) notTypes=[notTypes];\n notTypes.forEach(function (type) {\n if (self.testType(instance, schema, options, ctx, type)) {\n var id = type && (type.$id || type.id);\n var schemaId = id || type;\n result.addError({\n name: 'not',\n argument: schemaId,\n message: \"is of prohibited type \" + schemaId,\n });\n }\n });\n return result;\n};\n\nmodule.exports = attribute;\n","'use strict';\n\nvar uri = require('url');\n\nvar ValidationError = exports.ValidationError = function ValidationError (message, instance, schema, path, name, argument) {\n if(Array.isArray(path)){\n this.path = path;\n this.property = path.reduce(function(sum, item){\n return sum + makeSuffix(item);\n }, 'instance');\n }else if(path !== undefined){\n this.property = path;\n }\n if (message) {\n this.message = message;\n }\n if (schema) {\n var id = schema.$id || schema.id;\n this.schema = id || schema;\n }\n if (instance !== undefined) {\n this.instance = instance;\n }\n this.name = name;\n this.argument = argument;\n this.stack = this.toString();\n};\n\nValidationError.prototype.toString = function toString() {\n return this.property + ' ' + this.message;\n};\n\nvar ValidatorResult = exports.ValidatorResult = function ValidatorResult(instance, schema, options, ctx) {\n this.instance = instance;\n this.schema = schema;\n this.options = options;\n this.path = ctx.path;\n this.propertyPath = ctx.propertyPath;\n this.errors = [];\n this.throwError = options && options.throwError;\n this.throwFirst = options && options.throwFirst;\n this.throwAll = options && options.throwAll;\n this.disableFormat = options && options.disableFormat === true;\n};\n\nValidatorResult.prototype.addError = function addError(detail) {\n var err;\n if (typeof detail == 'string') {\n err = new ValidationError(detail, this.instance, this.schema, this.path);\n } else {\n if (!detail) throw new Error('Missing error detail');\n if (!detail.message) throw new Error('Missing error message');\n if (!detail.name) throw new Error('Missing validator type');\n err = new ValidationError(detail.message, this.instance, this.schema, this.path, detail.name, detail.argument);\n }\n\n this.errors.push(err);\n if (this.throwFirst) {\n throw new ValidatorResultError(this);\n }else if(this.throwError){\n throw err;\n }\n return err;\n};\n\nValidatorResult.prototype.importErrors = function importErrors(res) {\n if (typeof res == 'string' || (res && res.validatorType)) {\n this.addError(res);\n } else if (res && res.errors) {\n this.errors = this.errors.concat(res.errors);\n }\n};\n\nfunction stringizer (v,i){\n return i+': '+v.toString()+'\\n';\n}\nValidatorResult.prototype.toString = function toString(res) {\n return this.errors.map(stringizer).join('');\n};\n\nObject.defineProperty(ValidatorResult.prototype, \"valid\", { get: function() {\n return !this.errors.length;\n} });\n\nmodule.exports.ValidatorResultError = ValidatorResultError;\nfunction ValidatorResultError(result) {\n if(Error.captureStackTrace){\n Error.captureStackTrace(this, ValidatorResultError);\n }\n this.instance = result.instance;\n this.schema = result.schema;\n this.options = result.options;\n this.errors = result.errors;\n}\nValidatorResultError.prototype = new Error();\nValidatorResultError.prototype.constructor = ValidatorResultError;\nValidatorResultError.prototype.name = \"Validation Error\";\n\n/**\n * Describes a problem with a Schema which prevents validation of an instance\n * @name SchemaError\n * @constructor\n */\nvar SchemaError = exports.SchemaError = function SchemaError (msg, schema) {\n this.message = msg;\n this.schema = schema;\n Error.call(this, msg);\n Error.captureStackTrace(this, SchemaError);\n};\nSchemaError.prototype = Object.create(Error.prototype,\n {\n constructor: {value: SchemaError, enumerable: false},\n name: {value: 'SchemaError', enumerable: false},\n });\n\nvar SchemaContext = exports.SchemaContext = function SchemaContext (schema, options, path, base, schemas) {\n this.schema = schema;\n this.options = options;\n if(Array.isArray(path)){\n this.path = path;\n this.propertyPath = path.reduce(function(sum, item){\n return sum + makeSuffix(item);\n }, 'instance');\n }else{\n this.propertyPath = path;\n }\n this.base = base;\n this.schemas = schemas;\n};\n\nSchemaContext.prototype.resolve = function resolve (target) {\n return uri.resolve(this.base, target);\n};\n\nSchemaContext.prototype.makeChild = function makeChild(schema, propertyName){\n var path = (propertyName===undefined) ? this.path : this.path.concat([propertyName]);\n var id = schema.$id || schema.id;\n var base = uri.resolve(this.base, id||'');\n var ctx = new SchemaContext(schema, this.options, path, base, Object.create(this.schemas));\n if(id && !ctx.schemas[base]){\n ctx.schemas[base] = schema;\n }\n return ctx;\n};\n\nvar FORMAT_REGEXPS = exports.FORMAT_REGEXPS = {\n // 7.3.1. Dates, Times, and Duration\n 'date-time': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])[tT ](2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])(\\.\\d+)?([zZ]|[+-]([0-5][0-9]):(60|[0-5][0-9]))$/,\n 'date': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])$/,\n 'time': /^(2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])$/,\n 'duration': /P(T\\d+(H(\\d+M(\\d+S)?)?|M(\\d+S)?|S)|\\d+(D|M(\\d+D)?|Y(\\d+M(\\d+D)?)?)(T\\d+(H(\\d+M(\\d+S)?)?|M(\\d+S)?|S))?|\\d+W)/i,\n\n // 7.3.2. Email Addresses\n // TODO: fix the email production\n 'email': /^(?:[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+\\.)*[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!\\.)){0,61}[a-zA-Z0-9]?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\\[(?:(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\]))$/,\n 'idn-email': /^(\"(?:[!#-\\[\\]-\\u{10FFFF}]|\\\\[\\t -\\u{10FFFF}])*\"|[!#-'*+\\-/-9=?A-Z\\^-\\u{10FFFF}](?:\\.?[!#-'*+\\-/-9=?A-Z\\^-\\u{10FFFF}])*)@([!#-'*+\\-/-9=?A-Z\\^-\\u{10FFFF}](?:\\.?[!#-'*+\\-/-9=?A-Z\\^-\\u{10FFFF}])*|\\[[!-Z\\^-\\u{10FFFF}]*\\])$/u,\n\n // 7.3.3. Hostnames\n\n // 7.3.4. IP Addresses\n 'ip-address': /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,\n // FIXME whitespace is invalid\n 'ipv6': /^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$/,\n\n // 7.3.5. Resource Identifiers\n // TODO: A more accurate regular expression for \"uri\" goes:\n // [A-Za-z][+\\-.0-9A-Za-z]*:((/(/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?)?)?#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|(/(/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~])|/?%[0-9A-Fa-f]{2}|[!$&-.0-;=?-Z_a-z~])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*(#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*)?|/(/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+(:\\d*)?|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?:\\d*|\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)?)?\n 'uri': /^[a-zA-Z][a-zA-Z0-9+.-]*:[^\\s]*$/,\n 'uri-reference': /^(((([A-Za-z][+\\-.0-9A-Za-z]*(:%[0-9A-Fa-f]{2}|:[!$&-.0-;=?-Z_a-z~]|[/?])|\\?)(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|([A-Za-z][+\\-.0-9A-Za-z]*:?)?)|([A-Za-z][+\\-.0-9A-Za-z]*:)?\\/((%[0-9A-Fa-f]{2}|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|(\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?)?))#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|(([A-Za-z][+\\-.0-9A-Za-z]*)?%[0-9A-Fa-f]{2}|[!$&-.0-9;=@_~]|[A-Za-z][+\\-.0-9A-Za-z]*[!$&-*,;=@_~])(%[0-9A-Fa-f]{2}|[!$&-.0-9;=@-Z_a-z~])*((([/?](%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*)?#|[/?])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*)?|([A-Za-z][+\\-.0-9A-Za-z]*(:%[0-9A-Fa-f]{2}|:[!$&-.0-;=?-Z_a-z~]|[/?])|\\?)(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|([A-Za-z][+\\-.0-9A-Za-z]*:)?\\/((%[0-9A-Fa-f]{2}|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+(:\\d*)?|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?:\\d*|\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)?|[A-Za-z][+\\-.0-9A-Za-z]*:?)?$/,\n 'iri': /^[a-zA-Z][a-zA-Z0-9+.-]*:[^\\s]*$/,\n 'iri-reference': /^(((([A-Za-z][+\\-.0-9A-Za-z]*(:%[0-9A-Fa-f]{2}|:[!$&-.0-;=?-Z_a-z~-\\u{10FFFF}]|[/?])|\\?)(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*|([A-Za-z][+\\-.0-9A-Za-z]*:?)?)|([A-Za-z][+\\-.0-9A-Za-z]*:)?\\/((%[0-9A-Fa-f]{2}|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~-\\u{10FFFF}])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~-\\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~-\\u{10FFFF}])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*|(\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~-\\u{10FFFF}])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~-\\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?)?))#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*|(([A-Za-z][+\\-.0-9A-Za-z]*)?%[0-9A-Fa-f]{2}|[!$&-.0-9;=@_~-\\u{10FFFF}]|[A-Za-z][+\\-.0-9A-Za-z]*[!$&-*,;=@_~-\\u{10FFFF}])(%[0-9A-Fa-f]{2}|[!$&-.0-9;=@-Z_a-z~-\\u{10FFFF}])*((([/?](%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*)?#|[/?])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*)?|([A-Za-z][+\\-.0-9A-Za-z]*(:%[0-9A-Fa-f]{2}|:[!$&-.0-;=?-Z_a-z~-\\u{10FFFF}]|[/?])|\\?)(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*|([A-Za-z][+\\-.0-9A-Za-z]*:)?\\/((%[0-9A-Fa-f]{2}|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~-\\u{10FFFF}])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~-\\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~-\\u{10FFFF}])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~-\\u{10FFFF}])+(:\\d*)?|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~-\\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\\])?:\\d*|\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~-\\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\\])?)?|[A-Za-z][+\\-.0-9A-Za-z]*:?)?$/u,\n 'uuid': /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i,\n\n // 7.3.6. uri-template\n 'uri-template': /(%[0-9a-f]{2}|[!#$&(-;=?@\\[\\]_a-z~]|\\{[!#&+,./;=?@|]?(%[0-9a-f]{2}|[0-9_a-z])(\\.?(%[0-9a-f]{2}|[0-9_a-z]))*(:[1-9]\\d{0,3}|\\*)?(,(%[0-9a-f]{2}|[0-9_a-z])(\\.?(%[0-9a-f]{2}|[0-9_a-z]))*(:[1-9]\\d{0,3}|\\*)?)*\\})*/iu,\n\n // 7.3.7. JSON Pointers\n 'json-pointer': /^(\\/([\\x00-\\x2e0-@\\[-}\\x7f]|~[01])*)*$/iu,\n 'relative-json-pointer': /^\\d+(#|(\\/([\\x00-\\x2e0-@\\[-}\\x7f]|~[01])*)*)$/iu,\n\n // hostname regex from: http://stackoverflow.com/a/1420225/5628\n 'hostname': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n 'host-name': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n\n 'utc-millisec': function (input) {\n return (typeof input === 'string') && parseFloat(input) === parseInt(input, 10) && !isNaN(input);\n },\n\n // 7.3.8. regex\n 'regex': function (input) {\n var result = true;\n try {\n new RegExp(input);\n } catch (e) {\n result = false;\n }\n return result;\n },\n\n // Other definitions\n // \"style\" was removed from JSON Schema in draft-4 and is deprecated\n 'style': /[\\r\\n\\t ]*[^\\r\\n\\t ][^:]*:[\\r\\n\\t ]*[^\\r\\n\\t ;]*[\\r\\n\\t ]*;?/,\n // \"color\" was removed from JSON Schema in draft-4 and is deprecated\n 'color': /^(#?([0-9A-Fa-f]{3}){1,2}\\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\\(\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*\\))|(rgb\\(\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*\\)))$/,\n 'phone': /^\\+(?:[0-9] ?){6,14}[0-9]$/,\n 'alpha': /^[a-zA-Z]+$/,\n 'alphanumeric': /^[a-zA-Z0-9]+$/,\n};\n\nFORMAT_REGEXPS.regexp = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.pattern = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.ipv4 = FORMAT_REGEXPS['ip-address'];\n\nexports.isFormat = function isFormat (input, format, validator) {\n if (typeof input === 'string' && FORMAT_REGEXPS[format] !== undefined) {\n if (FORMAT_REGEXPS[format] instanceof RegExp) {\n return FORMAT_REGEXPS[format].test(input);\n }\n if (typeof FORMAT_REGEXPS[format] === 'function') {\n return FORMAT_REGEXPS[format](input);\n }\n } else if (validator && validator.customFormats &&\n typeof validator.customFormats[format] === 'function') {\n return validator.customFormats[format](input);\n }\n return true;\n};\n\nvar makeSuffix = exports.makeSuffix = function makeSuffix (key) {\n key = key.toString();\n // This function could be capable of outputting valid a ECMAScript string, but the\n // resulting code for testing which form to use would be tens of thousands of characters long\n // That means this will use the name form for some illegal forms\n if (!key.match(/[.\\s\\[\\]]/) && !key.match(/^[\\d]/)) {\n return '.' + key;\n }\n if (key.match(/^\\d+$/)) {\n return '[' + key + ']';\n }\n return '[' + JSON.stringify(key) + ']';\n};\n\nexports.deepCompareStrict = function deepCompareStrict (a, b) {\n if (typeof a !== typeof b) {\n return false;\n }\n if (Array.isArray(a)) {\n if (!Array.isArray(b)) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n return a.every(function (v, i) {\n return deepCompareStrict(a[i], b[i]);\n });\n }\n if (typeof a === 'object') {\n if (!a || !b) {\n return a === b;\n }\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n return aKeys.every(function (v) {\n return deepCompareStrict(a[v], b[v]);\n });\n }\n return a === b;\n};\n\nfunction deepMerger (target, dst, e, i) {\n if (typeof e === 'object') {\n dst[i] = deepMerge(target[i], e);\n } else {\n if (target.indexOf(e) === -1) {\n dst.push(e);\n }\n }\n}\n\nfunction copyist (src, dst, key) {\n dst[key] = src[key];\n}\n\nfunction copyistWithDeepMerge (target, src, dst, key) {\n if (typeof src[key] !== 'object' || !src[key]) {\n dst[key] = src[key];\n }\n else {\n if (!target[key]) {\n dst[key] = src[key];\n } else {\n dst[key] = deepMerge(target[key], src[key]);\n }\n }\n}\n\nfunction deepMerge (target, src) {\n var array = Array.isArray(src);\n var dst = array && [] || {};\n\n if (array) {\n target = target || [];\n dst = dst.concat(target);\n src.forEach(deepMerger.bind(null, target, dst));\n } else {\n if (target && typeof target === 'object') {\n Object.keys(target).forEach(copyist.bind(null, target, dst));\n }\n Object.keys(src).forEach(copyistWithDeepMerge.bind(null, target, src, dst));\n }\n\n return dst;\n}\n\nmodule.exports.deepMerge = deepMerge;\n\n/**\n * Validates instance against the provided schema\n * Implements URI+JSON Pointer encoding, e.g. \"%7e\"=\"~0\"=>\"~\", \"~1\"=\"%2f\"=>\"/\"\n * @param o\n * @param s The path to walk o along\n * @return any\n */\nexports.objectGetPath = function objectGetPath(o, s) {\n var parts = s.split('/').slice(1);\n var k;\n while (typeof (k=parts.shift()) == 'string') {\n var n = decodeURIComponent(k.replace(/~0/,'~').replace(/~1/g,'/'));\n if (!(n in o)) return;\n o = o[n];\n }\n return o;\n};\n\nfunction pathEncoder (v) {\n return '/'+encodeURIComponent(v).replace(/~/g,'%7E');\n}\n/**\n * Accept an Array of property names and return a JSON Pointer URI fragment\n * @param Array a\n * @return {String}\n */\nexports.encodePath = function encodePointer(a){\n // ~ must be encoded explicitly because hacks\n // the slash is encoded by encodeURIComponent\n return a.map(pathEncoder).join('');\n};\n\n\n/**\n * Calculate the number of decimal places a number uses\n * We need this to get correct results out of multipleOf and divisibleBy\n * when either figure is has decimal places, due to IEEE-754 float issues.\n * @param number\n * @returns {number}\n */\nexports.getDecimalPlaces = function getDecimalPlaces(number) {\n\n var decimalPlaces = 0;\n if (isNaN(number)) return decimalPlaces;\n\n if (typeof number !== 'number') {\n number = Number(number);\n }\n\n var parts = number.toString().split('e');\n if (parts.length === 2) {\n if (parts[1][0] !== '-') {\n return decimalPlaces;\n } else {\n decimalPlaces = Number(parts[1].slice(1));\n }\n }\n\n var decimalParts = parts[0].split('.');\n if (decimalParts.length === 2) {\n decimalPlaces += decimalParts[1].length;\n }\n\n return decimalPlaces;\n};\n\nexports.isSchema = function isSchema(val){\n return (typeof val === 'object' && val) || (typeof val === 'boolean');\n};\n\n","'use strict';\n\nvar Validator = module.exports.Validator = require('./validator');\n\nmodule.exports.ValidatorResult = require('./helpers').ValidatorResult;\nmodule.exports.ValidatorResultError = require('./helpers').ValidatorResultError;\nmodule.exports.ValidationError = require('./helpers').ValidationError;\nmodule.exports.SchemaError = require('./helpers').SchemaError;\nmodule.exports.SchemaScanResult = require('./scan').SchemaScanResult;\nmodule.exports.scan = require('./scan').scan;\n\nmodule.exports.validate = function (instance, schema, options) {\n var v = new Validator();\n return v.validate(instance, schema, options);\n};\n","\"use strict\";\n\nvar urilib = require('url');\nvar helpers = require('./helpers');\n\nmodule.exports.SchemaScanResult = SchemaScanResult;\nfunction SchemaScanResult(found, ref){\n this.id = found;\n this.ref = ref;\n}\n\n/**\n * Adds a schema with a certain urn to the Validator instance.\n * @param string uri\n * @param object schema\n * @return {Object}\n */\nmodule.exports.scan = function scan(base, schema){\n function scanSchema(baseuri, schema){\n if(!schema || typeof schema!='object') return;\n // Mark all referenced schemas so we can tell later which schemas are referred to, but never defined\n if(schema.$ref){\n var resolvedUri = urilib.resolve(baseuri, schema.$ref);\n ref[resolvedUri] = ref[resolvedUri] ? ref[resolvedUri]+1 : 0;\n return;\n }\n var id = schema.$id || schema.id;\n var ourBase = id ? urilib.resolve(baseuri, id) : baseuri;\n if (ourBase) {\n // If there's no fragment, append an empty one\n if(ourBase.indexOf('#')<0) ourBase += '#';\n if(found[ourBase]){\n if(!helpers.deepCompareStrict(found[ourBase], schema)){\n throw new Error('Schema <'+ourBase+'> already exists with different definition');\n }\n return found[ourBase];\n }\n found[ourBase] = schema;\n // strip trailing fragment\n if(ourBase[ourBase.length-1]=='#'){\n found[ourBase.substring(0, ourBase.length-1)] = schema;\n }\n }\n scanArray(ourBase+'/items', (Array.isArray(schema.items)?schema.items:[schema.items]));\n scanArray(ourBase+'/extends', (Array.isArray(schema.extends)?schema.extends:[schema.extends]));\n scanSchema(ourBase+'/additionalItems', schema.additionalItems);\n scanObject(ourBase+'/properties', schema.properties);\n scanSchema(ourBase+'/additionalProperties', schema.additionalProperties);\n scanObject(ourBase+'/definitions', schema.definitions);\n scanObject(ourBase+'/patternProperties', schema.patternProperties);\n scanObject(ourBase+'/dependencies', schema.dependencies);\n scanArray(ourBase+'/disallow', schema.disallow);\n scanArray(ourBase+'/allOf', schema.allOf);\n scanArray(ourBase+'/anyOf', schema.anyOf);\n scanArray(ourBase+'/oneOf', schema.oneOf);\n scanSchema(ourBase+'/not', schema.not);\n }\n function scanArray(baseuri, schemas){\n if(!Array.isArray(schemas)) return;\n for(var i=0; i\", schema);\n }\n var subschema = helpers.objectGetPath(ctx.schemas[document], fragment.substr(1));\n if(subschema===undefined){\n throw new SchemaError(\"no such schema \" + fragment + \" located in <\" + document + \">\", schema);\n }\n return {subschema: subschema, switchSchema: switchSchema};\n};\n\n/**\n * Tests whether the instance if of a certain type.\n * @private\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @param type\n * @return {boolean}\n */\nValidator.prototype.testType = function validateType (instance, schema, options, ctx, type) {\n if(type===undefined){\n return;\n }else if(type===null){\n throw new SchemaError('Unexpected null in \"type\" keyword');\n }\n if (typeof this.types[type] == 'function') {\n return this.types[type].call(this, instance);\n }\n if (type && typeof type == 'object') {\n var res = this.validateSchema(instance, type, options, ctx);\n return res === undefined || !(res && res.errors.length);\n }\n // Undefined or properties not on the list are acceptable, same as not being defined\n return true;\n};\n\nvar types = Validator.prototype.types = {};\ntypes.string = function testString (instance) {\n return typeof instance == 'string';\n};\ntypes.number = function testNumber (instance) {\n // isFinite returns false for NaN, Infinity, and -Infinity\n return typeof instance == 'number' && isFinite(instance);\n};\ntypes.integer = function testInteger (instance) {\n return (typeof instance == 'number') && instance % 1 === 0;\n};\ntypes.boolean = function testBoolean (instance) {\n return typeof instance == 'boolean';\n};\ntypes.array = function testArray (instance) {\n return Array.isArray(instance);\n};\ntypes['null'] = function testNull (instance) {\n return instance === null;\n};\ntypes.date = function testDate (instance) {\n return instance instanceof Date;\n};\ntypes.any = function testAny (instance) {\n return true;\n};\ntypes.object = function testObject (instance) {\n // TODO: fix this - see #15\n return instance && (typeof instance === 'object') && !(Array.isArray(instance)) && !(instance instanceof Date);\n};\n\nmodule.exports = Validator;\n","'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n","const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range\n .trim()\n .split(/\\s+/)\n .join(' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => comps.join(' ').trim())\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","const parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // Otherwise it can be determined by checking the high version\n\n if (highVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (highVersion.minor) {\n // anything higher than a minor bump would result in the wrong version\n return 'minor'\n }\n\n // bumping major/minor/patch all have same result\n return 'major'\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n","'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.diffResource = exports.diffTemplate = exports.fullDiff = void 0;\nconst impl = require(\"./diff\");\nconst types = require(\"./diff/types\");\nconst util_1 = require(\"./diff/util\");\n__exportStar(require(\"./diff/types\"), exports);\nconst DIFF_HANDLERS = {\n AWSTemplateFormatVersion: (diff, oldValue, newValue) => diff.awsTemplateFormatVersion = impl.diffAttribute(oldValue, newValue),\n Description: (diff, oldValue, newValue) => diff.description = impl.diffAttribute(oldValue, newValue),\n Metadata: (diff, oldValue, newValue) => diff.metadata = new types.DifferenceCollection((0, util_1.diffKeyedEntities)(oldValue, newValue, impl.diffMetadata)),\n Parameters: (diff, oldValue, newValue) => diff.parameters = new types.DifferenceCollection((0, util_1.diffKeyedEntities)(oldValue, newValue, impl.diffParameter)),\n Mappings: (diff, oldValue, newValue) => diff.mappings = new types.DifferenceCollection((0, util_1.diffKeyedEntities)(oldValue, newValue, impl.diffMapping)),\n Conditions: (diff, oldValue, newValue) => diff.conditions = new types.DifferenceCollection((0, util_1.diffKeyedEntities)(oldValue, newValue, impl.diffCondition)),\n Transform: (diff, oldValue, newValue) => diff.transform = impl.diffAttribute(oldValue, newValue),\n Resources: (diff, oldValue, newValue) => diff.resources = new types.DifferenceCollection((0, util_1.diffKeyedEntities)(oldValue, newValue, impl.diffResource)),\n Outputs: (diff, oldValue, newValue) => diff.outputs = new types.DifferenceCollection((0, util_1.diffKeyedEntities)(oldValue, newValue, impl.diffOutput)),\n};\n/**\n * Compare two CloudFormation templates and return semantic differences between them.\n *\n * @param currentTemplate the current state of the stack.\n * @param newTemplate the target state of the stack.\n * @param changeSet the change set for this stack.\n *\n * @returns a +types.TemplateDiff+ object that represents the changes that will happen if\n * a stack which current state is described by +currentTemplate+ is updated with\n * the template +newTemplate+.\n */\nfunction fullDiff(currentTemplate, newTemplate, changeSet, isImport) {\n normalize(currentTemplate);\n normalize(newTemplate);\n const theDiff = diffTemplate(currentTemplate, newTemplate);\n if (changeSet) {\n filterFalsePositives(theDiff, changeSet);\n addImportInformation(theDiff, changeSet);\n }\n else if (isImport) {\n makeAllResourceChangesImports(theDiff);\n }\n return theDiff;\n}\nexports.fullDiff = fullDiff;\nfunction diffTemplate(currentTemplate, newTemplate) {\n // Base diff\n const theDiff = calculateTemplateDiff(currentTemplate, newTemplate);\n // We're going to modify this in-place\n const newTemplateCopy = deepCopy(newTemplate);\n let didPropagateReferenceChanges;\n let diffWithReplacements;\n do {\n diffWithReplacements = calculateTemplateDiff(currentTemplate, newTemplateCopy);\n // Propagate replacements for replaced resources\n didPropagateReferenceChanges = false;\n if (diffWithReplacements.resources) {\n diffWithReplacements.resources.forEachDifference((logicalId, change) => {\n if (change.changeImpact === types.ResourceImpact.WILL_REPLACE) {\n if (propagateReplacedReferences(newTemplateCopy, logicalId)) {\n didPropagateReferenceChanges = true;\n }\n }\n });\n }\n } while (didPropagateReferenceChanges);\n // Copy \"replaced\" states from `diffWithReplacements` to `theDiff`.\n diffWithReplacements.resources\n .filter(r => isReplacement(r.changeImpact))\n .forEachDifference((logicalId, downstreamReplacement) => {\n const resource = theDiff.resources.get(logicalId);\n if (resource.changeImpact !== downstreamReplacement.changeImpact) {\n propagatePropertyReplacement(downstreamReplacement, resource);\n }\n });\n return theDiff;\n}\nexports.diffTemplate = diffTemplate;\nfunction isReplacement(impact) {\n return impact === types.ResourceImpact.MAY_REPLACE || impact === types.ResourceImpact.WILL_REPLACE;\n}\n/**\n * For all properties in 'source' that have a \"replacement\" impact, propagate that impact to \"dest\"\n */\nfunction propagatePropertyReplacement(source, dest) {\n for (const [propertyName, diff] of Object.entries(source.propertyUpdates)) {\n if (diff.changeImpact && isReplacement(diff.changeImpact)) {\n // Use the propertydiff of source in target. The result of this happens to be clear enough.\n dest.setPropertyChange(propertyName, diff);\n }\n }\n}\nfunction calculateTemplateDiff(currentTemplate, newTemplate) {\n const differences = {};\n const unknown = {};\n for (const key of (0, util_1.unionOf)(Object.keys(currentTemplate), Object.keys(newTemplate)).sort()) {\n const oldValue = currentTemplate[key];\n const newValue = newTemplate[key];\n if ((0, util_1.deepEqual)(oldValue, newValue)) {\n continue;\n }\n const handler = DIFF_HANDLERS[key]\n || ((_diff, oldV, newV) => unknown[key] = impl.diffUnknown(oldV, newV));\n handler(differences, oldValue, newValue);\n }\n if (Object.keys(unknown).length > 0) {\n differences.unknown = new types.DifferenceCollection(unknown);\n }\n return new types.TemplateDiff(differences);\n}\n/**\n * Compare two CloudFormation resources and return semantic differences between them\n */\nfunction diffResource(oldValue, newValue) {\n return impl.diffResource(oldValue, newValue);\n}\nexports.diffResource = diffResource;\n/**\n * Replace all references to the given logicalID on the given template, in-place\n *\n * Returns true iff any references were replaced.\n */\nfunction propagateReplacedReferences(template, logicalId) {\n let ret = false;\n function recurse(obj) {\n if (Array.isArray(obj)) {\n obj.forEach(recurse);\n }\n if (typeof obj === 'object' && obj !== null) {\n if (!replaceReference(obj)) {\n Object.values(obj).forEach(recurse);\n }\n }\n }\n function replaceReference(obj) {\n const keys = Object.keys(obj);\n if (keys.length !== 1) {\n return false;\n }\n const key = keys[0];\n if (key === 'Ref') {\n if (obj.Ref === logicalId) {\n obj.Ref = logicalId + ' (replaced)';\n ret = true;\n }\n return true;\n }\n if (key.startsWith('Fn::')) {\n if (Array.isArray(obj[key]) && obj[key].length > 0 && obj[key][0] === logicalId) {\n obj[key][0] = logicalId + '(replaced)';\n ret = true;\n }\n return true;\n }\n return false;\n }\n recurse(template);\n return ret;\n}\nfunction deepCopy(x) {\n if (Array.isArray(x)) {\n return x.map(deepCopy);\n }\n if (typeof x === 'object' && x !== null) {\n const ret = {};\n for (const key of Object.keys(x)) {\n ret[key] = deepCopy(x[key]);\n }\n return ret;\n }\n return x;\n}\nfunction addImportInformation(diff, changeSet) {\n const imports = findResourceImports(changeSet);\n diff.resources.forEachDifference((logicalId, change) => {\n if (imports.includes(logicalId)) {\n change.isImport = true;\n }\n });\n}\nfunction makeAllResourceChangesImports(diff) {\n diff.resources.forEachDifference((_logicalId, change) => {\n change.isImport = true;\n });\n}\nfunction filterFalsePositives(diff, changeSet) {\n const replacements = findResourceReplacements(changeSet);\n diff.resources.forEachDifference((logicalId, change) => {\n if (change.resourceType.includes('AWS::Serverless')) {\n // CFN applies the SAM transform before creating the changeset, so the changeset contains no information about SAM resources\n return;\n }\n change.forEachDifference((type, name, value) => {\n if (type === 'Property') {\n if (!replacements[logicalId]) {\n value.changeImpact = types.ResourceImpact.NO_CHANGE;\n value.isDifferent = false;\n return;\n }\n switch (replacements[logicalId].propertiesReplaced[name]) {\n case 'Always':\n value.changeImpact = types.ResourceImpact.WILL_REPLACE;\n break;\n case 'Never':\n value.changeImpact = types.ResourceImpact.WILL_UPDATE;\n break;\n case 'Conditionally':\n value.changeImpact = types.ResourceImpact.MAY_REPLACE;\n break;\n case undefined:\n value.changeImpact = types.ResourceImpact.NO_CHANGE;\n value.isDifferent = false;\n break;\n // otherwise, defer to the changeImpact from `diffTemplate`\n }\n }\n else if (type === 'Other') {\n switch (name) {\n case 'Metadata':\n change.setOtherChange('Metadata', new types.Difference(value.newValue, value.newValue));\n break;\n }\n }\n });\n });\n}\nfunction findResourceImports(changeSet) {\n const importedResourceLogicalIds = [];\n for (const resourceChange of changeSet.Changes ?? []) {\n if (resourceChange.ResourceChange?.Action === 'Import') {\n importedResourceLogicalIds.push(resourceChange.ResourceChange.LogicalResourceId);\n }\n }\n return importedResourceLogicalIds;\n}\nfunction findResourceReplacements(changeSet) {\n const replacements = {};\n for (const resourceChange of changeSet.Changes ?? []) {\n const propertiesReplaced = {};\n for (const propertyChange of resourceChange.ResourceChange?.Details ?? []) {\n if (propertyChange.Target?.Attribute === 'Properties') {\n const requiresReplacement = propertyChange.Target.RequiresRecreation === 'Always';\n if (requiresReplacement && propertyChange.Evaluation === 'Static') {\n propertiesReplaced[propertyChange.Target.Name] = 'Always';\n }\n else if (requiresReplacement && propertyChange.Evaluation === 'Dynamic') {\n // If Evaluation is 'Dynamic', then this may cause replacement, or it may not.\n // see 'Replacement': https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ResourceChange.html\n propertiesReplaced[propertyChange.Target.Name] = 'Conditionally';\n }\n else {\n propertiesReplaced[propertyChange.Target.Name] = propertyChange.Target.RequiresRecreation;\n }\n }\n }\n replacements[resourceChange.ResourceChange?.LogicalResourceId] = {\n resourceReplaced: resourceChange.ResourceChange?.Replacement === 'True',\n propertiesReplaced,\n };\n }\n return replacements;\n}\nfunction normalize(template) {\n if (typeof template === 'object') {\n for (const key of (Object.keys(template ?? {}))) {\n if (key === 'Fn::GetAtt' && typeof template[key] === 'string') {\n template[key] = template[key].split('.');\n continue;\n }\n else if (key === 'DependsOn') {\n if (typeof template[key] === 'string') {\n template[key] = [template[key]];\n }\n else if (Array.isArray(template[key])) {\n template[key] = template[key].sort();\n }\n continue;\n }\n if (Array.isArray(template[key])) {\n for (const element of (template[key])) {\n normalize(element);\n }\n }\n else {\n normalize(template[key]);\n }\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi10ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmYtdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSwrQkFBK0I7QUFDL0Isc0NBQXNDO0FBQ3RDLHNDQUFvRTtBQUVwRSwrQ0FBNkI7QUFPN0IsTUFBTSxhQUFhLEdBQW9CO0lBQ3JDLHdCQUF3QixFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUNyRCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO0lBQ3hFLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUM7SUFDM0QsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUEsd0JBQWlCLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUcsVUFBVSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUEsd0JBQWlCLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0csUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLElB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QUMsS0FBSyxRQUFRLEVBQUU7Z0JBQzdELFFBQVEsQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUN6QyxTQUFTO2FBQ1Y7aUJBQU0sSUFBSSxHQUFHLEtBQUssV0FBVyxFQUFFO2dCQUM5QixJQUFJLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFFBQVEsRUFBRTtvQkFDckMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7aUJBQ2pDO3FCQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtvQkFDdkMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztpQkFDdEM7Z0JBQ0QsU0FBUzthQUNWO1lBRUQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUNoQyxLQUFLLE1BQU0sT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7b0JBQ3JDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDcEI7YUFDRjtpQkFBTTtnQkFDTCxTQUFTLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDMUI7U0FDRjtLQUNGO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFRoZSBTREsgaXMgb25seSB1c2VkIHRvIHJlZmVyZW5jZSBgRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXRgLCBzbyB0aGUgU0RLIGlzIGFkZGVkIGFzIGEgZGV2RGVwZW5kZW5jeS5cbi8vIFRoZSBTREsgc2hvdWxkIG5vdCBtYWtlIG5ldHdvcmsgY2FsbHMgaGVyZVxuaW1wb3J0IHR5cGUgeyBEZXNjcmliZUNoYW5nZVNldE91dHB1dCBhcyBEZXNjcmliZUNoYW5nZVNldCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1jbG91ZGZvcm1hdGlvbic7XG5pbXBvcnQgKiBhcyBpbXBsIGZyb20gJy4vZGlmZic7XG5pbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuL2RpZmYvdHlwZXMnO1xuaW1wb3J0IHsgZGVlcEVxdWFsLCBkaWZmS2V5ZWRFbnRpdGllcywgdW5pb25PZiB9IGZyb20gJy4vZGlmZi91dGlsJztcblxuZXhwb3J0ICogZnJvbSAnLi9kaWZmL3R5cGVzJztcblxuZXhwb3J0IHR5cGUgRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXQgPSBEZXNjcmliZUNoYW5nZVNldDtcblxudHlwZSBEaWZmSGFuZGxlciA9IChkaWZmOiB0eXBlcy5JVGVtcGxhdGVEaWZmLCBvbGRWYWx1ZTogYW55LCBuZXdWYWx1ZTogYW55KSA9PiB2b2lkO1xudHlwZSBIYW5kbGVyUmVnaXN0cnkgPSB7IFtzZWN0aW9uOiBzdHJpbmddOiBEaWZmSGFuZGxlciB9O1xuXG5jb25zdCBESUZGX0hBTkRMRVJTOiBIYW5kbGVyUmVnaXN0cnkgPSB7XG4gIEFXU1RlbXBsYXRlRm9ybWF0VmVyc2lvbjogKGRpZmYsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT5cbiAgICBkaWZmLmF3c1RlbXBsYXRlRm9ybWF0VmVyc2lvbiA9IGltcGwuZGlmZkF0dHJpYnV0ZShvbGRWYWx1ZSwgbmV3VmFsdWUpLFxuICBEZXNjcmlwdGlvbjogKGRpZmYsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT5cbiAgICBkaWZmLmRlc2NyaXB0aW9uID0gaW1wbC5kaWZmQXR0cmlidXRlKG9sZFZhbHVlLCBuZXdWYWx1ZSksXG4gIE1ldGFkYXRhOiAoZGlmZiwgb2xkVmFsdWUsIG5ld1ZhbHVlKSA9PlxuICAgIGRpZmYubWV0YWRhdGEgPSBuZXcgdHlwZXMuRGlmZmVyZW5jZUNvbGxlY3Rpb24oZGlmZktleWVkRW50aXRpZXMob2xkVmFsdWUsIG5ld1ZhbHVlLCBpbXBsLmRpZmZNZXRhZGF0YSkpLFxuICBQYXJhbWV0ZXJzOiAoZGlmZiwgb2xkVmFsdWUsIG5ld1ZhbHVlKSA9PlxuICAgIGRpZmYucGFyYW1ldGVycyA9IG5ldyB0eXBlcy5EaWZmZXJlbmNlQ29sbGVjdGlvbihkaWZmS2V5ZWRFbnRpdGllcyhvbGRWYWx1ZSwgbmV3VmFsdWUsIGltcGwuZGlmZlBhcmFtZXRlcikpLFxuICBNYXBwaW5nczogKGRpZmYsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT5cbiAgICBkaWZmLm1hcHBpbmdzID0gbmV3IHR5cGVzLkRpZmZlcmVuY2VDb2xsZWN0aW9uKGRpZmZLZXllZEVudGl0aWVzKG9sZFZhbHVlLCBuZXdWYWx1ZSwgaW1wbC5kaWZmTWFwcGluZykpLFxuICBDb25kaXRpb25zOiAoZGlmZiwgb2xkVmFsdWUsIG5ld1ZhbHVlKSA9PlxuICAgIGRpZmYuY29uZGl0aW9ucyA9IG5ldyB0eXBlcy5EaWZmZXJlbmNlQ29sbGVjdGlvbihkaWZmS2V5ZWRFbnRpdGllcyhvbGRWYWx1ZSwgbmV3VmFsdWUsIGltcGwuZGlmZkNvbmRpdGlvbikpLFxuICBUcmFuc2Zvcm06IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi50cmFuc2Zvcm0gPSBpbXBsLmRpZmZBdHRyaWJ1dGUob2xkVmFsdWUsIG5ld1ZhbHVlKSxcbiAgUmVzb3VyY2VzOiAoZGlmZiwgb2xkVmFsdWUsIG5ld1ZhbHVlKSA9PlxuICAgIGRpZmYucmVzb3VyY2VzID0gbmV3IHR5cGVzLkRpZmZlcmVuY2VDb2xsZWN0aW9uKGRpZmZLZXllZEVudGl0aWVzKG9sZFZhbHVlLCBuZXdWYWx1ZSwgaW1wbC5kaWZmUmVzb3VyY2UpKSxcbiAgT3V0cHV0czogKGRpZmYsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT5cbiAgICBkaWZmLm91dHB1dHMgPSBuZXcgdHlwZXMuRGlmZmVyZW5jZUNvbGxlY3Rpb24oZGlmZktleWVkRW50aXRpZXMob2xkVmFsdWUsIG5ld1ZhbHVlLCBpbXBsLmRpZmZPdXRwdXQpKSxcbn07XG5cbi8qKlxuICogQ29tcGFyZSB0d28gQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGVzIGFuZCByZXR1cm4gc2VtYW50aWMgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGVtLlxuICpcbiAqIEBwYXJhbSBjdXJyZW50VGVtcGxhdGUgdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHN0YWNrLlxuICogQHBhcmFtIG5ld1RlbXBsYXRlICAgICB0aGUgdGFyZ2V0IHN0YXRlIG9mIHRoZSBzdGFjay5cbiAqIEBwYXJhbSBjaGFuZ2VTZXQgICAgICAgdGhlIGNoYW5nZSBzZXQgZm9yIHRoaXMgc3RhY2suXG4gKlxuICogQHJldHVybnMgYSArdHlwZXMuVGVtcGxhdGVEaWZmKyBvYmplY3QgdGhhdCByZXByZXNlbnRzIHRoZSBjaGFuZ2VzIHRoYXQgd2lsbCBoYXBwZW4gaWZcbiAqICAgICAgYSBzdGFjayB3aGljaCBjdXJyZW50IHN0YXRlIGlzIGRlc2NyaWJlZCBieSArY3VycmVudFRlbXBsYXRlKyBpcyB1cGRhdGVkIHdpdGhcbiAqICAgICAgdGhlIHRlbXBsYXRlICtuZXdUZW1wbGF0ZSsuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmdWxsRGlmZihcbiAgY3VycmVudFRlbXBsYXRlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICBuZXdUZW1wbGF0ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgY2hhbmdlU2V0PzogRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXQsXG4gIGlzSW1wb3J0PzogYm9vbGVhbixcbik6IHR5cGVzLlRlbXBsYXRlRGlmZiB7XG5cbiAgbm9ybWFsaXplKGN1cnJlbnRUZW1wbGF0ZSk7XG4gIG5vcm1hbGl6ZShuZXdUZW1wbGF0ZSk7XG4gIGNvbnN0IHRoZURpZmYgPSBkaWZmVGVtcGxhdGUoY3VycmVudFRlbXBsYXRlLCBuZXdUZW1wbGF0ZSk7XG4gIGlmIChjaGFuZ2VTZXQpIHtcbiAgICBmaWx0ZXJGYWxzZVBvc2l0aXZlcyh0aGVEaWZmLCBjaGFuZ2VTZXQpO1xuICAgIGFkZEltcG9ydEluZm9ybWF0aW9uKHRoZURpZmYsIGNoYW5nZVNldCk7XG4gIH0gZWxzZSBpZiAoaXNJbXBvcnQpIHtcbiAgICBtYWtlQWxsUmVzb3VyY2VDaGFuZ2VzSW1wb3J0cyh0aGVEaWZmKTtcbiAgfVxuXG4gIHJldHVybiB0aGVEaWZmO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlRlbXBsYXRlKFxuICBjdXJyZW50VGVtcGxhdGU6IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gIG5ld1RlbXBsYXRlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuKTogdHlwZXMuVGVtcGxhdGVEaWZmIHtcblxuICAvLyBCYXNlIGRpZmZcbiAgY29uc3QgdGhlRGlmZiA9IGNhbGN1bGF0ZVRlbXBsYXRlRGlmZihjdXJyZW50VGVtcGxhdGUsIG5ld1RlbXBsYXRlKTtcblxuICAvLyBXZSdyZSBnb2luZyB0byBtb2RpZnkgdGhpcyBpbi1wbGFjZVxuICBjb25zdCBuZXdUZW1wbGF0ZUNvcHkgPSBkZWVwQ29weShuZXdUZW1wbGF0ZSk7XG5cbiAgbGV0IGRpZFByb3BhZ2F0ZVJlZmVyZW5jZUNoYW5nZXM7XG4gIGxldCBkaWZmV2l0aFJlcGxhY2VtZW50cztcbiAgZG8ge1xuICAgIGRpZmZXaXRoUmVwbGFjZW1lbnRzID0gY2FsY3VsYXRlVGVtcGxhdGVEaWZmKGN1cnJlbnRUZW1wbGF0ZSwgbmV3VGVtcGxhdGVDb3B5KTtcblxuICAgIC8vIFByb3BhZ2F0ZSByZXBsYWNlbWVudHMgZm9yIHJlcGxhY2VkIHJlc291cmNlc1xuICAgIGRpZFByb3BhZ2F0ZVJlZmVyZW5jZUNoYW5nZXMgPSBmYWxzZTtcbiAgICBpZiAoZGlmZldpdGhSZXBsYWNlbWVudHMucmVzb3VyY2VzKSB7XG4gICAgICBkaWZmV2l0aFJlcGxhY2VtZW50cy5yZXNvdXJjZXMuZm9yRWFjaERpZmZlcmVuY2UoKGxvZ2ljYWxJZCwgY2hhbmdlKSA9PiB7XG4gICAgICAgIGlmIChjaGFuZ2UuY2hhbmdlSW1wYWN0ID09PSB0eXBlcy5SZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0UpIHtcbiAgICAgICAgICBpZiAocHJvcGFnYXRlUmVwbGFjZWRSZWZlcmVuY2VzKG5ld1RlbXBsYXRlQ29weSwgbG9naWNhbElkKSkge1xuICAgICAgICAgICAgZGlkUHJvcGFnYXRlUmVmZXJlbmNlQ2hhbmdlcyA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0gd2hpbGUgKGRpZFByb3BhZ2F0ZVJlZmVyZW5jZUNoYW5nZXMpO1xuXG4gIC8vIENvcHkgXCJyZXBsYWNlZFwiIHN0YXRlcyBmcm9tIGBkaWZmV2l0aFJlcGxhY2VtZW50c2AgdG8gYHRoZURpZmZgLlxuICBkaWZmV2l0aFJlcGxhY2VtZW50cy5yZXNvdXJjZXNcbiAgICAuZmlsdGVyKHIgPT4gaXNSZXBsYWNlbWVudChyIS5jaGFuZ2VJbXBhY3QpKVxuICAgIC5mb3JFYWNoRGlmZmVyZW5jZSgobG9naWNhbElkLCBkb3duc3RyZWFtUmVwbGFjZW1lbnQpID0+IHtcbiAgICAgIGNvbnN0IHJlc291cmNlID0gdGhlRGlmZi5yZXNvdXJjZXMuZ2V0KGxvZ2ljYWxJZCk7XG5cbiAgICAgIGlmIChyZXNvdXJjZS5jaGFuZ2VJbXBhY3QgIT09IGRvd25zdHJlYW1SZXBsYWNlbWVudC5jaGFuZ2VJbXBhY3QpIHtcbiAgICAgICAgcHJvcGFnYXRlUHJvcGVydHlSZXBsYWNlbWVudChkb3duc3RyZWFtUmVwbGFjZW1lbnQsIHJlc291cmNlKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICByZXR1cm4gdGhlRGlmZjtcbn1cblxuZnVuY3Rpb24gaXNSZXBsYWNlbWVudChpbXBhY3Q6IHR5cGVzLlJlc291cmNlSW1wYWN0KSB7XG4gIHJldHVybiBpbXBhY3QgPT09IHR5cGVzLlJlc291cmNlSW1wYWN0Lk1BWV9SRVBMQUNFIHx8IGltcGFjdCA9PT0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuV0lMTF9SRVBMQUNFO1xufVxuXG4vKipcbiAqIEZvciBhbGwgcHJvcGVydGllcyBpbiAnc291cmNlJyB0aGF0IGhhdmUgYSBcInJlcGxhY2VtZW50XCIgaW1wYWN0LCBwcm9wYWdhdGUgdGhhdCBpbXBhY3QgdG8gXCJkZXN0XCJcbiAqL1xuZnVuY3Rpb24gcHJvcGFnYXRlUHJvcGVydHlSZXBsYWNlbWVudChzb3VyY2U6IHR5cGVzLlJlc291cmNlRGlmZmVyZW5jZSwgZGVzdDogdHlwZXMuUmVzb3VyY2VEaWZmZXJlbmNlKSB7XG4gIGZvciAoY29uc3QgW3Byb3BlcnR5TmFtZSwgZGlmZl0gb2YgT2JqZWN0LmVudHJpZXMoc291cmNlLnByb3BlcnR5VXBkYXRlcykpIHtcbiAgICBpZiAoZGlmZi5jaGFuZ2VJbXBhY3QgJiYgaXNSZXBsYWNlbWVudChkaWZmLmNoYW5nZUltcGFjdCkpIHtcbiAgICAgIC8vIFVzZSB0aGUgcHJvcGVydHlkaWZmIG9mIHNvdXJjZSBpbiB0YXJnZXQuIFRoZSByZXN1bHQgb2YgdGhpcyBoYXBwZW5zIHRvIGJlIGNsZWFyIGVub3VnaC5cbiAgICAgIGRlc3Quc2V0UHJvcGVydHlDaGFuZ2UocHJvcGVydHlOYW1lLCBkaWZmKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY2FsY3VsYXRlVGVtcGxhdGVEaWZmKGN1cnJlbnRUZW1wbGF0ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSwgbmV3VGVtcGxhdGU6IHsgW2tleTogc3RyaW5nXTogYW55IH0pOiB0eXBlcy5UZW1wbGF0ZURpZmYge1xuICBjb25zdCBkaWZmZXJlbmNlczogdHlwZXMuSVRlbXBsYXRlRGlmZiA9IHt9O1xuICBjb25zdCB1bmtub3duOiB7IFtrZXk6IHN0cmluZ106IHR5cGVzLkRpZmZlcmVuY2U8YW55PiB9ID0ge307XG4gIGZvciAoY29uc3Qga2V5IG9mIHVuaW9uT2YoT2JqZWN0LmtleXMoY3VycmVudFRlbXBsYXRlKSwgT2JqZWN0LmtleXMobmV3VGVtcGxhdGUpKS5zb3J0KCkpIHtcbiAgICBjb25zdCBvbGRWYWx1ZSA9IGN1cnJlbnRUZW1wbGF0ZVtrZXldO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gbmV3VGVtcGxhdGVba2V5XTtcbiAgICBpZiAoZGVlcEVxdWFsKG9sZFZhbHVlLCBuZXdWYWx1ZSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCBoYW5kbGVyOiBEaWZmSGFuZGxlciA9IERJRkZfSEFORExFUlNba2V5XVxuICAgICAgICAgICAgICAgICAgfHwgKChfZGlmZiwgb2xkViwgbmV3VikgPT4gdW5rbm93bltrZXldID0gaW1wbC5kaWZmVW5rbm93bihvbGRWLCBuZXdWKSk7XG4gICAgaGFuZGxlcihkaWZmZXJlbmNlcywgb2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgfVxuICBpZiAoT2JqZWN0LmtleXModW5rbm93bikubGVuZ3RoID4gMCkge1xuICAgIGRpZmZlcmVuY2VzLnVua25vd24gPSBuZXcgdHlwZXMuRGlmZmVyZW5jZUNvbGxlY3Rpb24odW5rbm93bik7XG4gIH1cblxuICByZXR1cm4gbmV3IHR5cGVzLlRlbXBsYXRlRGlmZihkaWZmZXJlbmNlcyk7XG59XG5cbi8qKlxuICogQ29tcGFyZSB0d28gQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2VzIGFuZCByZXR1cm4gc2VtYW50aWMgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGVtXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkaWZmUmVzb3VyY2Uob2xkVmFsdWU6IHR5cGVzLlJlc291cmNlLCBuZXdWYWx1ZTogdHlwZXMuUmVzb3VyY2UpOiB0eXBlcy5SZXNvdXJjZURpZmZlcmVuY2Uge1xuICByZXR1cm4gaW1wbC5kaWZmUmVzb3VyY2Uob2xkVmFsdWUsIG5ld1ZhbHVlKTtcbn1cblxuLyoqXG4gKiBSZXBsYWNlIGFsbCByZWZlcmVuY2VzIHRvIHRoZSBnaXZlbiBsb2dpY2FsSUQgb24gdGhlIGdpdmVuIHRlbXBsYXRlLCBpbi1wbGFjZVxuICpcbiAqIFJldHVybnMgdHJ1ZSBpZmYgYW55IHJlZmVyZW5jZXMgd2VyZSByZXBsYWNlZC5cbiAqL1xuZnVuY3Rpb24gcHJvcGFnYXRlUmVwbGFjZWRSZWZlcmVuY2VzKHRlbXBsYXRlOiBvYmplY3QsIGxvZ2ljYWxJZDogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGxldCByZXQgPSBmYWxzZTtcblxuICBmdW5jdGlvbiByZWN1cnNlKG9iajogYW55KSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkob2JqKSkge1xuICAgICAgb2JqLmZvckVhY2gocmVjdXJzZSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvYmogPT09ICdvYmplY3QnICYmIG9iaiAhPT0gbnVsbCkge1xuICAgICAgaWYgKCFyZXBsYWNlUmVmZXJlbmNlKG9iaikpIHtcbiAgICAgICAgT2JqZWN0LnZhbHVlcyhvYmopLmZvckVhY2gocmVjdXJzZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVwbGFjZVJlZmVyZW5jZShvYmo6IGFueSkge1xuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgIGlmIChrZXlzLmxlbmd0aCAhPT0gMSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBjb25zdCBrZXkgPSBrZXlzWzBdO1xuXG4gICAgaWYgKGtleSA9PT0gJ1JlZicpIHtcbiAgICAgIGlmIChvYmouUmVmID09PSBsb2dpY2FsSWQpIHtcbiAgICAgICAgb2JqLlJlZiA9IGxvZ2ljYWxJZCArICcgKHJlcGxhY2VkKSc7XG4gICAgICAgIHJldCA9IHRydWU7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoa2V5LnN0YXJ0c1dpdGgoJ0ZuOjonKSkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2JqW2tleV0pICYmIG9ialtrZXldLmxlbmd0aCA+IDAgJiYgb2JqW2tleV1bMF0gPT09IGxvZ2ljYWxJZCkge1xuICAgICAgICBvYmpba2V5XVswXSA9IGxvZ2ljYWxJZCArICcocmVwbGFjZWQpJztcbiAgICAgICAgcmV0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJlY3Vyc2UodGVtcGxhdGUpO1xuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBkZWVwQ29weSh4OiBhbnkpOiBhbnkge1xuICBpZiAoQXJyYXkuaXNBcnJheSh4KSkge1xuICAgIHJldHVybiB4Lm1hcChkZWVwQ29weSk7XG4gIH1cblxuICBpZiAodHlwZW9mIHggPT09ICdvYmplY3QnICYmIHggIT09IG51bGwpIHtcbiAgICBjb25zdCByZXQ6IGFueSA9IHt9O1xuICAgIGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHgpKSB7XG4gICAgICByZXRba2V5XSA9IGRlZXBDb3B5KHhba2V5XSk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICByZXR1cm4geDtcbn1cblxuZnVuY3Rpb24gYWRkSW1wb3J0SW5mb3JtYXRpb24oZGlmZjogdHlwZXMuVGVtcGxhdGVEaWZmLCBjaGFuZ2VTZXQ6IERlc2NyaWJlQ2hhbmdlU2V0T3V0cHV0KSB7XG4gIGNvbnN0IGltcG9ydHMgPSBmaW5kUmVzb3VyY2VJbXBvcnRzKGNoYW5nZVNldCk7XG4gIGRpZmYucmVzb3VyY2VzLmZvckVhY2hEaWZmZXJlbmNlKChsb2dpY2FsSWQ6IHN0cmluZywgY2hhbmdlOiB0eXBlcy5SZXNvdXJjZURpZmZlcmVuY2UpID0+IHtcbiAgICBpZiAoaW1wb3J0cy5pbmNsdWRlcyhsb2dpY2FsSWQpKSB7XG4gICAgICBjaGFuZ2UuaXNJbXBvcnQgPSB0cnVlO1xuICAgIH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIG1ha2VBbGxSZXNvdXJjZUNoYW5nZXNJbXBvcnRzKGRpZmY6IHR5cGVzLlRlbXBsYXRlRGlmZikge1xuICBkaWZmLnJlc291cmNlcy5mb3JFYWNoRGlmZmVyZW5jZSgoX2xvZ2ljYWxJZDogc3RyaW5nLCBjaGFuZ2U6IHR5cGVzLlJlc291cmNlRGlmZmVyZW5jZSkgPT4ge1xuICAgIGNoYW5nZS5pc0ltcG9ydCA9IHRydWU7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBmaWx0ZXJGYWxzZVBvc2l0aXZlcyhkaWZmOiB0eXBlcy5UZW1wbGF0ZURpZmYsIGNoYW5nZVNldDogRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXQpIHtcbiAgY29uc3QgcmVwbGFjZW1lbnRzID0gZmluZFJlc291cmNlUmVwbGFjZW1lbnRzKGNoYW5nZVNldCk7XG4gIGRpZmYucmVzb3VyY2VzLmZvckVhY2hEaWZmZXJlbmNlKChsb2dpY2FsSWQ6IHN0cmluZywgY2hhbmdlOiB0eXBlcy5SZXNvdXJjZURpZmZlcmVuY2UpID0+IHtcbiAgICBpZiAoY2hhbmdlLnJlc291cmNlVHlwZS5pbmNsdWRlcygnQVdTOjpTZXJ2ZXJsZXNzJykpIHtcbiAgICAgIC8vIENGTiBhcHBsaWVzIHRoZSBTQU0gdHJhbnNmb3JtIGJlZm9yZSBjcmVhdGluZyB0aGUgY2hhbmdlc2V0LCBzbyB0aGUgY2hhbmdlc2V0IGNvbnRhaW5zIG5vIGluZm9ybWF0aW9uIGFib3V0IFNBTSByZXNvdXJjZXNcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY2hhbmdlLmZvckVhY2hEaWZmZXJlbmNlKCh0eXBlOiAnUHJvcGVydHknIHwgJ090aGVyJywgbmFtZTogc3RyaW5nLCB2YWx1ZTogdHlwZXMuRGlmZmVyZW5jZTxhbnk+IHwgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pID0+IHtcbiAgICAgIGlmICh0eXBlID09PSAnUHJvcGVydHknKSB7XG4gICAgICAgIGlmICghcmVwbGFjZW1lbnRzW2xvZ2ljYWxJZF0pIHtcbiAgICAgICAgICAodmFsdWUgYXMgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pLmNoYW5nZUltcGFjdCA9IHR5cGVzLlJlc291cmNlSW1wYWN0Lk5PX0NIQU5HRTtcbiAgICAgICAgICAodmFsdWUgYXMgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pLmlzRGlmZmVyZW50ID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAocmVwbGFjZW1lbnRzW2xvZ2ljYWxJZF0ucHJvcGVydGllc1JlcGxhY2VkW25hbWVdKSB7XG4gICAgICAgICAgY2FzZSAnQWx3YXlzJzpcbiAgICAgICAgICAgICh2YWx1ZSBhcyB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikuY2hhbmdlSW1wYWN0ID0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuV0lMTF9SRVBMQUNFO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnTmV2ZXInOlxuICAgICAgICAgICAgKHZhbHVlIGFzIHR5cGVzLlByb3BlcnR5RGlmZmVyZW5jZTxhbnk+KS5jaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5XSUxMX1VQREFURTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ0NvbmRpdGlvbmFsbHknOlxuICAgICAgICAgICAgKHZhbHVlIGFzIHR5cGVzLlByb3BlcnR5RGlmZmVyZW5jZTxhbnk+KS5jaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5NQVlfUkVQTEFDRTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgdW5kZWZpbmVkOlxuICAgICAgICAgICAgKHZhbHVlIGFzIHR5cGVzLlByb3BlcnR5RGlmZmVyZW5jZTxhbnk+KS5jaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5OT19DSEFOR0U7XG4gICAgICAgICAgICAodmFsdWUgYXMgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pLmlzRGlmZmVyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAvLyBvdGhlcndpc2UsIGRlZmVyIHRvIHRoZSBjaGFuZ2VJbXBhY3QgZnJvbSBgZGlmZlRlbXBsYXRlYFxuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdPdGhlcicpIHtcbiAgICAgICAgc3dpdGNoIChuYW1lKSB7XG4gICAgICAgICAgY2FzZSAnTWV0YWRhdGEnOlxuICAgICAgICAgICAgY2hhbmdlLnNldE90aGVyQ2hhbmdlKCdNZXRhZGF0YScsIG5ldyB0eXBlcy5EaWZmZXJlbmNlPHN0cmluZz4odmFsdWUubmV3VmFsdWUsIHZhbHVlLm5ld1ZhbHVlKSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZmluZFJlc291cmNlSW1wb3J0cyhjaGFuZ2VTZXQ6IERlc2NyaWJlQ2hhbmdlU2V0T3V0cHV0KTogc3RyaW5nW10ge1xuICBjb25zdCBpbXBvcnRlZFJlc291cmNlTG9naWNhbElkcyA9IFtdO1xuICBmb3IgKGNvbnN0IHJlc291cmNlQ2hhbmdlIG9mIGNoYW5nZVNldC5DaGFuZ2VzID8/IFtdKSB7XG4gICAgaWYgKHJlc291cmNlQ2hhbmdlLlJlc291cmNlQ2hhbmdlPy5BY3Rpb24gPT09ICdJbXBvcnQnKSB7XG4gICAgICBpbXBvcnRlZFJlc291cmNlTG9naWNhbElkcy5wdXNoKHJlc291cmNlQ2hhbmdlLlJlc291cmNlQ2hhbmdlLkxvZ2ljYWxSZXNvdXJjZUlkISk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGltcG9ydGVkUmVzb3VyY2VMb2dpY2FsSWRzO1xufVxuXG5mdW5jdGlvbiBmaW5kUmVzb3VyY2VSZXBsYWNlbWVudHMoY2hhbmdlU2V0OiBEZXNjcmliZUNoYW5nZVNldE91dHB1dCk6IHR5cGVzLlJlc291cmNlUmVwbGFjZW1lbnRzIHtcbiAgY29uc3QgcmVwbGFjZW1lbnRzOiB0eXBlcy5SZXNvdXJjZVJlcGxhY2VtZW50cyA9IHt9O1xuICBmb3IgKGNvbnN0IHJlc291cmNlQ2hhbmdlIG9mIGNoYW5nZVNldC5DaGFuZ2VzID8/IFtdKSB7XG4gICAgY29uc3QgcHJvcGVydGllc1JlcGxhY2VkOiB7IFtwcm9wTmFtZTogc3RyaW5nXTogdHlwZXMuQ2hhbmdlU2V0UmVwbGFjZW1lbnQgfSA9IHt9O1xuICAgIGZvciAoY29uc3QgcHJvcGVydHlDaGFuZ2Ugb2YgcmVzb3VyY2VDaGFuZ2UuUmVzb3VyY2VDaGFuZ2U/LkRldGFpbHMgPz8gW10pIHtcbiAgICAgIGlmIChwcm9wZXJ0eUNoYW5nZS5UYXJnZXQ/LkF0dHJpYnV0ZSA9PT0gJ1Byb3BlcnRpZXMnKSB7XG4gICAgICAgIGNvbnN0IHJlcXVpcmVzUmVwbGFjZW1lbnQgPSBwcm9wZXJ0eUNoYW5nZS5UYXJnZXQuUmVxdWlyZXNSZWNyZWF0aW9uID09PSAnQWx3YXlzJztcbiAgICAgICAgaWYgKHJlcXVpcmVzUmVwbGFjZW1lbnQgJiYgcHJvcGVydHlDaGFuZ2UuRXZhbHVhdGlvbiA9PT0gJ1N0YXRpYycpIHtcbiAgICAgICAgICBwcm9wZXJ0aWVzUmVwbGFjZWRbcHJvcGVydHlDaGFuZ2UuVGFyZ2V0Lk5hbWUhXSA9ICdBbHdheXMnO1xuICAgICAgICB9IGVsc2UgaWYgKHJlcXVpcmVzUmVwbGFjZW1lbnQgJiYgcHJvcGVydHlDaGFuZ2UuRXZhbHVhdGlvbiA9PT0gJ0R5bmFtaWMnKSB7XG4gICAgICAgICAgLy8gSWYgRXZhbHVhdGlvbiBpcyAnRHluYW1pYycsIHRoZW4gdGhpcyBtYXkgY2F1c2UgcmVwbGFjZW1lbnQsIG9yIGl0IG1heSBub3QuXG4gICAgICAgICAgLy8gc2VlICdSZXBsYWNlbWVudCc6IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9SZXNvdXJjZUNoYW5nZS5odG1sXG4gICAgICAgICAgcHJvcGVydGllc1JlcGxhY2VkW3Byb3BlcnR5Q2hhbmdlLlRhcmdldC5OYW1lIV0gPSAnQ29uZGl0aW9uYWxseSc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJvcGVydGllc1JlcGxhY2VkW3Byb3BlcnR5Q2hhbmdlLlRhcmdldC5OYW1lIV0gPSBwcm9wZXJ0eUNoYW5nZS5UYXJnZXQuUmVxdWlyZXNSZWNyZWF0aW9uIGFzIHR5cGVzLkNoYW5nZVNldFJlcGxhY2VtZW50O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJlcGxhY2VtZW50c1tyZXNvdXJjZUNoYW5nZS5SZXNvdXJjZUNoYW5nZT8uTG9naWNhbFJlc291cmNlSWQhXSA9IHtcbiAgICAgIHJlc291cmNlUmVwbGFjZWQ6IHJlc291cmNlQ2hhbmdlLlJlc291cmNlQ2hhbmdlPy5SZXBsYWNlbWVudCA9PT0gJ1RydWUnLFxuICAgICAgcHJvcGVydGllc1JlcGxhY2VkLFxuICAgIH07XG4gIH1cblxuICByZXR1cm4gcmVwbGFjZW1lbnRzO1xufVxuXG5mdW5jdGlvbiBub3JtYWxpemUodGVtcGxhdGU6IGFueSkge1xuICBpZiAodHlwZW9mIHRlbXBsYXRlID09PSAnb2JqZWN0Jykge1xuICAgIGZvciAoY29uc3Qga2V5IG9mIChPYmplY3Qua2V5cyh0ZW1wbGF0ZSA/PyB7fSkpKSB7XG4gICAgICBpZiAoa2V5ID09PSAnRm46OkdldEF0dCcgJiYgdHlwZW9mIHRlbXBsYXRlW2tleV0gPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRlbXBsYXRlW2tleV0gPSB0ZW1wbGF0ZVtrZXldLnNwbGl0KCcuJyk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfSBlbHNlIGlmIChrZXkgPT09ICdEZXBlbmRzT24nKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdGVtcGxhdGVba2V5XSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICB0ZW1wbGF0ZVtrZXldID0gW3RlbXBsYXRlW2tleV1dO1xuICAgICAgICB9IGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodGVtcGxhdGVba2V5XSkpIHtcbiAgICAgICAgICB0ZW1wbGF0ZVtrZXldID0gdGVtcGxhdGVba2V5XS5zb3J0KCk7XG4gICAgICAgIH1cbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRlbXBsYXRlW2tleV0pKSB7XG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiAodGVtcGxhdGVba2V5XSkpIHtcbiAgICAgICAgICBub3JtYWxpemUoZWxlbWVudCk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5vcm1hbGl6ZSh0ZW1wbGF0ZVtrZXldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.diffUnknown = exports.diffResource = exports.diffParameter = exports.diffOutput = exports.diffMetadata = exports.diffMapping = exports.diffCondition = exports.diffAttribute = void 0;\nconst types = require(\"./types\");\nconst util_1 = require(\"./util\");\nfunction diffAttribute(oldValue, newValue) {\n return new types.Difference(_asString(oldValue), _asString(newValue));\n}\nexports.diffAttribute = diffAttribute;\nfunction diffCondition(oldValue, newValue) {\n return new types.ConditionDifference(oldValue, newValue);\n}\nexports.diffCondition = diffCondition;\nfunction diffMapping(oldValue, newValue) {\n return new types.MappingDifference(oldValue, newValue);\n}\nexports.diffMapping = diffMapping;\nfunction diffMetadata(oldValue, newValue) {\n return new types.MetadataDifference(oldValue, newValue);\n}\nexports.diffMetadata = diffMetadata;\nfunction diffOutput(oldValue, newValue) {\n return new types.OutputDifference(oldValue, newValue);\n}\nexports.diffOutput = diffOutput;\nfunction diffParameter(oldValue, newValue) {\n return new types.ParameterDifference(oldValue, newValue);\n}\nexports.diffParameter = diffParameter;\nfunction diffResource(oldValue, newValue) {\n const resourceType = {\n oldType: oldValue && oldValue.Type,\n newType: newValue && newValue.Type,\n };\n let propertyDiffs = {};\n let otherDiffs = {};\n if (resourceType.oldType !== undefined && resourceType.oldType === resourceType.newType) {\n // Only makes sense to inspect deeper if the types stayed the same\n const impl = (0, util_1.loadResourceModel)(resourceType.oldType);\n propertyDiffs = (0, util_1.diffKeyedEntities)(oldValue.Properties, newValue.Properties, (oldVal, newVal, key) => _diffProperty(oldVal, newVal, key, impl));\n otherDiffs = (0, util_1.diffKeyedEntities)(oldValue, newValue, _diffOther);\n delete otherDiffs.Properties;\n }\n return new types.ResourceDifference(oldValue, newValue, {\n resourceType, propertyDiffs, otherDiffs,\n });\n function _diffProperty(oldV, newV, key, resourceSpec) {\n let changeImpact = types.ResourceImpact.NO_CHANGE;\n const spec = resourceSpec?.properties?.[key];\n if (spec && !(0, util_1.deepEqual)(oldV, newV)) {\n switch (spec.causesReplacement) {\n case 'yes':\n changeImpact = types.ResourceImpact.WILL_REPLACE;\n break;\n case 'maybe':\n changeImpact = types.ResourceImpact.MAY_REPLACE;\n break;\n default:\n // In those cases, whatever is the current value is what we should keep\n changeImpact = types.ResourceImpact.WILL_UPDATE;\n }\n }\n return new types.PropertyDifference(oldV, newV, { changeImpact });\n }\n function _diffOther(oldV, newV) {\n return new types.Difference(oldV, newV);\n }\n}\nexports.diffResource = diffResource;\nfunction diffUnknown(oldValue, newValue) {\n return new types.Difference(oldValue, newValue);\n}\nexports.diffUnknown = diffUnknown;\n/**\n * Coerces a given value to +string | undefined+.\n *\n * @param value the value to be coerced.\n *\n * @returns +undefined+ if +value+ is +null+ or +undefined+,\n * +value+ if it is a +string+,\n * a compact JSON representation of +value+ otherwise.\n */\nfunction _asString(value) {\n if (value == null) {\n return undefined;\n }\n if (typeof value === 'string') {\n return value;\n }\n return JSON.stringify(value);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxpQ0FBaUM7QUFDakMsaUNBQXlFO0FBRXpFLFNBQWdCLGFBQWEsQ0FBQyxRQUFhLEVBQUUsUUFBYTtJQUN4RCxPQUFPLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBUyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUZELHNDQUVDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLFFBQXlCLEVBQUUsUUFBeUI7SUFDaEYsT0FBTyxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUZELHNDQUVDO0FBRUQsU0FBZ0IsV0FBVyxDQUFDLFFBQXVCLEVBQUUsUUFBdUI7SUFDMUUsT0FBTyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDekQsQ0FBQztBQUZELGtDQUVDO0FBRUQsU0FBZ0IsWUFBWSxDQUFDLFFBQXdCLEVBQUUsUUFBd0I7SUFDN0UsT0FBTyxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUZELG9DQUVDO0FBRUQsU0FBZ0IsVUFBVSxDQUFDLFFBQXNCLEVBQUUsUUFBc0I7SUFDdkUsT0FBTyxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUZELGdDQUVDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLFFBQXlCLEVBQUUsUUFBeUI7SUFDaEYsT0FBTyxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUZELHNDQUVDO0FBRUQsU0FBZ0IsWUFB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Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tICdAYXdzLWNkay9zZXJ2aWNlLXNwZWMtdHlwZXMnO1xuaW1wb3J0ICogYXMgdHlwZXMgZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBkZWVwRXF1YWwsIGRpZmZLZXllZEVudGl0aWVzLCBsb2FkUmVzb3VyY2VNb2RlbCB9IGZyb20gJy4vdXRpbCc7XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmQXR0cmlidXRlKG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpOiB0eXBlcy5EaWZmZXJlbmNlPHN0cmluZz4ge1xuICByZXR1cm4gbmV3IHR5cGVzLkRpZmZlcmVuY2U8c3RyaW5nPihfYXNTdHJpbmcob2xkVmFsdWUpLCBfYXNTdHJpbmcobmV3VmFsdWUpKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZDb25kaXRpb24ob2xkVmFsdWU6IHR5cGVzLkNvbmRpdGlvbiwgbmV3VmFsdWU6IHR5cGVzLkNvbmRpdGlvbik6IHR5cGVzLkNvbmRpdGlvbkRpZmZlcmVuY2Uge1xuICByZXR1cm4gbmV3IHR5cGVzLkNvbmRpdGlvbkRpZmZlcmVuY2Uob2xkVmFsdWUsIG5ld1ZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZNYXBwaW5nKG9sZFZhbHVlOiB0eXBlcy5NYXBwaW5nLCBuZXdWYWx1ZTogdHlwZXMuTWFwcGluZyk6IHR5cGVzLk1hcHBpbmdEaWZmZXJlbmNlIHtcbiAgcmV0dXJuIG5ldyB0eXBlcy5NYXBwaW5nRGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZk1ldGFkYXRhKG9sZFZhbHVlOiB0eXBlcy5NZXRhZGF0YSwgbmV3VmFsdWU6IHR5cGVzLk1ldGFkYXRhKTogdHlwZXMuTWV0YWRhdGFEaWZmZXJlbmNlIHtcbiAgcmV0dXJuIG5ldyB0eXBlcy5NZXRhZGF0YURpZmZlcmVuY2Uob2xkVmFsdWUsIG5ld1ZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZPdXRwdXQob2xkVmFsdWU6IHR5cGVzLk91dHB1dCwgbmV3VmFsdWU6IHR5cGVzLk91dHB1dCk6IHR5cGVzLk91dHB1dERpZmZlcmVuY2Uge1xuICByZXR1cm4gbmV3IHR5cGVzLk91dHB1dERpZmZlcmVuY2Uob2xkVmFsdWUsIG5ld1ZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZQYXJhbWV0ZXIob2xkVmFsdWU6IHR5cGVzLlBhcmFtZXRlciwgbmV3VmFsdWU6IHR5cGVzLlBhcmFtZXRlcik6IHR5cGVzLlBhcmFtZXRlckRpZmZlcmVuY2Uge1xuICByZXR1cm4gbmV3IHR5cGVzLlBhcmFtZXRlckRpZmZlcmVuY2Uob2xkVmFsdWUsIG5ld1ZhbHVlKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZSZXNvdXJjZShvbGRWYWx1ZT86IHR5cGVzLlJlc291cmNlLCBuZXdWYWx1ZT86IHR5cGVzLlJlc291cmNlKTogdHlwZXMuUmVzb3VyY2VEaWZmZXJlbmNlIHtcbiAgY29uc3QgcmVzb3VyY2VUeXBlID0ge1xuICAgIG9sZFR5cGU6IG9sZFZhbHVlICYmIG9sZFZhbHVlLlR5cGUsXG4gICAgbmV3VHlwZTogbmV3VmFsdWUgJiYgbmV3VmFsdWUuVHlwZSxcbiAgfTtcbiAgbGV0IHByb3BlcnR5RGlmZnM6IHsgW2tleTogc3RyaW5nXTogdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4gfSA9IHt9O1xuICBsZXQgb3RoZXJEaWZmczogeyBba2V5OiBzdHJpbmddOiB0eXBlcy5EaWZmZXJlbmNlPGFueT4gfSA9IHt9O1xuXG4gIGlmIChyZXNvdXJjZVR5cGUub2xkVHlwZSAhPT0gdW5kZWZpbmVkICYmIHJlc291cmNlVHlwZS5vbGRUeXBlID09PSByZXNvdXJjZVR5cGUubmV3VHlwZSkge1xuICAgIC8vIE9ubHkgbWFrZXMgc2Vuc2UgdG8gaW5zcGVjdCBkZWVwZXIgaWYgdGhlIHR5cGVzIHN0YXllZCB0aGUgc2FtZVxuICAgIGNvbnN0IGltcGwgPSBsb2FkUmVzb3VyY2VNb2RlbChyZXNvdXJjZVR5cGUub2xkVHlwZSk7XG4gICAgcHJvcGVydHlEaWZmcyA9IGRpZmZLZXllZEVudGl0aWVzKG9sZFZhbHVlIS5Qcm9wZXJ0aWVzLFxuICAgICAgbmV3VmFsdWUhLlByb3BlcnRpZXMsXG4gICAgICAob2xkVmFsLCBuZXdWYWwsIGtleSkgPT4gX2RpZmZQcm9wZXJ0eShvbGRWYWwsIG5ld1ZhbCwga2V5LCBpbXBsKSk7XG5cbiAgICBvdGhlckRpZmZzID0gZGlmZktleWVkRW50aXRpZXMob2xkVmFsdWUsIG5ld1ZhbHVlLCBfZGlmZk90aGVyKTtcbiAgICBkZWxldGUgb3RoZXJEaWZmcy5Qcm9wZXJ0aWVzO1xuICB9XG5cbiAgcmV0dXJuIG5ldyB0eXBlcy5SZXNvdXJjZURpZmZlcmVuY2Uob2xkVmFsdWUsIG5ld1ZhbHVlLCB7XG4gICAgcmVzb3VyY2VUeXBlLCBwcm9wZXJ0eURpZmZzLCBvdGhlckRpZmZzLFxuICB9KTtcblxuICBmdW5jdGlvbiBfZGlmZlByb3BlcnR5KG9sZFY6IGFueSwgbmV3VjogYW55LCBrZXk6IHN0cmluZywgcmVzb3VyY2VTcGVjPzogUmVzb3VyY2UpIHtcbiAgICBsZXQgY2hhbmdlSW1wYWN0ID0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuTk9fQ0hBTkdFO1xuXG4gICAgY29uc3Qgc3BlYyA9IHJlc291cmNlU3BlYz8ucHJvcGVydGllcz8uW2tleV07XG4gICAgaWYgKHNwZWMgJiYgIWRlZXBFcXVhbChvbGRWLCBuZXdWKSkge1xuICAgICAgc3dpdGNoIChzcGVjLmNhdXNlc1JlcGxhY2VtZW50KSB7XG4gICAgICAgIGNhc2UgJ3llcyc6XG4gICAgICAgICAgY2hhbmdlSW1wYWN0ID0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuV0lMTF9SRVBMQUNFO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdtYXliZSc6XG4gICAgICAgICAgY2hhbmdlSW1wYWN0ID0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuTUFZX1JFUExBQ0U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgLy8gSW4gdGhvc2UgY2FzZXMsIHdoYXRldmVyIGlzIHRoZSBjdXJyZW50IHZhbHVlIGlzIHdoYXQgd2Ugc2hvdWxkIGtlZXBcbiAgICAgICAgICBjaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5XSUxMX1VQREFURTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IHR5cGVzLlByb3BlcnR5RGlmZmVyZW5jZShvbGRWLCBuZXdWLCB7IGNoYW5nZUltcGFjdCB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIF9kaWZmT3RoZXIob2xkVjogYW55LCBuZXdWOiBhbnkpIHtcbiAgICByZXR1cm4gbmV3IHR5cGVzLkRpZmZlcmVuY2Uob2xkViwgbmV3Vik7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZVbmtub3duKG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpOiB0eXBlcy5EaWZmZXJlbmNlPGFueT4ge1xuICByZXR1cm4gbmV3IHR5cGVzLkRpZmZlcmVuY2Uob2xkVmFsdWUsIG5ld1ZhbHVlKTtcbn1cblxuLyoqXG4gKiBDb2VyY2VzIGEgZ2l2ZW4gdmFsdWUgdG8gK3N0cmluZyB8IHVuZGVmaW5lZCsuXG4gKlxuICogQHBhcmFtIHZhbHVlIHRoZSB2YWx1ZSB0byBiZSBjb2VyY2VkLlxuICpcbiAqIEByZXR1cm5zICt1bmRlZmluZWQrIGlmICt2YWx1ZSsgaXMgK251bGwrIG9yICt1bmRlZmluZWQrLFxuICogICAgICArdmFsdWUrIGlmIGl0IGlzIGEgK3N0cmluZyssXG4gKiAgICAgIGEgY29tcGFjdCBKU09OIHJlcHJlc2VudGF0aW9uIG9mICt2YWx1ZSsgb3RoZXJ3aXNlLlxuICovXG5mdW5jdGlvbiBfYXNTdHJpbmcodmFsdWU6IGFueSk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZSBhcyBzdHJpbmc7XG4gIH1cbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHZhbHVlKTtcbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mkUnparseable = exports.mkParsed = void 0;\nfunction mkParsed(value) {\n return { type: 'parsed', value };\n}\nexports.mkParsed = mkParsed;\nfunction mkUnparseable(value) {\n return {\n type: 'unparseable',\n repr: typeof value === 'string' ? value : JSON.stringify(value),\n };\n}\nexports.mkUnparseable = mkUnparseable;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF5YmUtcGFyc2VkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWF5YmUtcGFyc2VkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWVBLFNBQWdCLFFBQVEsQ0FBSSxLQUFRO0lBQ2xDLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ25DLENBQUM7QUFGRCw0QkFFQztBQUVELFNBQWdCLGFBQWEsQ0FBQyxLQUFVO0lBQ3RDLE9BQU87UUFDTCxJQUFJLEVBQUUsYUFBYTtRQUNuQixJQUFJLEVBQUUsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO0tBQ2hFLENBQUM7QUFDSixDQUFDO0FBTEQsc0NBS0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgdmFsdWUgdGhhdCBtYXkgb3IgbWF5IG5vdCBiZSBwYXJzZWFibGVcbiAqL1xuZXhwb3J0IHR5cGUgTWF5YmVQYXJzZWQ8QT4gPSBQYXJzZWQ8QT4gfCBVbnBhcnNlYWJsZUNmbjtcblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZWQ8QT4ge1xuICByZWFkb25seSB0eXBlOiAncGFyc2VkJztcbiAgcmVhZG9ubHkgdmFsdWU6IEE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVW5wYXJzZWFibGVDZm4ge1xuICByZWFkb25seSB0eXBlOiAndW5wYXJzZWFibGUnO1xuICByZWFkb25seSByZXByOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBta1BhcnNlZDxBPih2YWx1ZTogQSk6IFBhcnNlZDxBPiB7XG4gIHJldHVybiB7IHR5cGU6ICdwYXJzZWQnLCB2YWx1ZSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWtVbnBhcnNlYWJsZSh2YWx1ZTogYW55KTogVW5wYXJzZWFibGVDZm4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICd1bnBhcnNlYWJsZScsXG4gICAgcmVwcjogdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpLFxuICB9O1xufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isPropertyDifference = exports.ResourceDifference = exports.ResourceImpact = exports.ParameterDifference = exports.OutputDifference = exports.MetadataDifference = exports.MappingDifference = exports.ConditionDifference = exports.DifferenceCollection = exports.PropertyDifference = exports.Difference = exports.TemplateDiff = void 0;\nconst assert_1 = require(\"assert\");\nconst service_spec_types_1 = require(\"@aws-cdk/service-spec-types\");\nconst util_1 = require(\"./util\");\nconst iam_changes_1 = require(\"../iam/iam-changes\");\nconst security_group_changes_1 = require(\"../network/security-group-changes\");\n/** Semantic differences between two CloudFormation templates. */\nclass TemplateDiff {\n constructor(args) {\n if (args.awsTemplateFormatVersion !== undefined) {\n this.awsTemplateFormatVersion = args.awsTemplateFormatVersion;\n }\n if (args.description !== undefined) {\n this.description = args.description;\n }\n if (args.transform !== undefined) {\n this.transform = args.transform;\n }\n this.conditions = args.conditions || new DifferenceCollection({});\n this.mappings = args.mappings || new DifferenceCollection({});\n this.metadata = args.metadata || new DifferenceCollection({});\n this.outputs = args.outputs || new DifferenceCollection({});\n this.parameters = args.parameters || new DifferenceCollection({});\n this.resources = args.resources || new DifferenceCollection({});\n this.unknown = args.unknown || new DifferenceCollection({});\n this.iamChanges = new iam_changes_1.IamChanges({\n propertyChanges: this.scrutinizablePropertyChanges(iam_changes_1.IamChanges.IamPropertyScrutinies),\n resourceChanges: this.scrutinizableResourceChanges(iam_changes_1.IamChanges.IamResourceScrutinies),\n });\n this.securityGroupChanges = new security_group_changes_1.SecurityGroupChanges({\n egressRulePropertyChanges: this.scrutinizablePropertyChanges([service_spec_types_1.PropertyScrutinyType.EgressRules]),\n ingressRulePropertyChanges: this.scrutinizablePropertyChanges([service_spec_types_1.PropertyScrutinyType.IngressRules]),\n egressRuleResourceChanges: this.scrutinizableResourceChanges([service_spec_types_1.ResourceScrutinyType.EgressRuleResource]),\n ingressRuleResourceChanges: this.scrutinizableResourceChanges([service_spec_types_1.ResourceScrutinyType.IngressRuleResource]),\n });\n }\n get differenceCount() {\n let count = 0;\n if (this.awsTemplateFormatVersion !== undefined) {\n count += 1;\n }\n if (this.description !== undefined) {\n count += 1;\n }\n if (this.transform !== undefined) {\n count += 1;\n }\n count += this.conditions.differenceCount;\n count += this.mappings.differenceCount;\n count += this.metadata.differenceCount;\n count += this.outputs.differenceCount;\n count += this.parameters.differenceCount;\n count += this.resources.differenceCount;\n count += this.unknown.differenceCount;\n return count;\n }\n get isEmpty() {\n return this.differenceCount === 0;\n }\n /**\n * Return true if any of the permissions objects involve a broadening of permissions\n */\n get permissionsBroadened() {\n return this.iamChanges.permissionsBroadened || this.securityGroupChanges.rulesAdded;\n }\n /**\n * Return true if any of the permissions objects have changed\n */\n get permissionsAnyChanges() {\n return this.iamChanges.hasChanges || this.securityGroupChanges.hasChanges;\n }\n /**\n * Return all property changes of a given scrutiny type\n *\n * We don't just look at property updates; we also look at resource additions and deletions (in which\n * case there is no further detail on property values), and resource type changes.\n */\n scrutinizablePropertyChanges(scrutinyTypes) {\n const ret = new Array();\n for (const [resourceLogicalId, resourceChange] of Object.entries(this.resources.changes)) {\n if (resourceChange.resourceTypeChanged) {\n // we ignore resource type changes here, and handle them in scrutinizableResourceChanges()\n continue;\n }\n if (!resourceChange.newResourceType) {\n continue;\n }\n const newTypeProps = (0, util_1.loadResourceModel)(resourceChange.newResourceType)?.properties || {};\n for (const [propertyName, prop] of Object.entries(newTypeProps)) {\n const propScrutinyType = prop.scrutinizable || service_spec_types_1.PropertyScrutinyType.None;\n if (scrutinyTypes.includes(propScrutinyType)) {\n ret.push({\n resourceLogicalId,\n propertyName,\n resourceType: resourceChange.resourceType,\n scrutinyType: propScrutinyType,\n oldValue: resourceChange.oldProperties?.[propertyName],\n newValue: resourceChange.newProperties?.[propertyName],\n });\n }\n }\n }\n return ret;\n }\n /**\n * Return all resource changes of a given scrutiny type\n *\n * We don't just look at resource updates; we also look at resource additions and deletions (in which\n * case there is no further detail on property values), and resource type changes.\n */\n scrutinizableResourceChanges(scrutinyTypes) {\n const ret = new Array();\n for (const [resourceLogicalId, resourceChange] of Object.entries(this.resources.changes)) {\n if (!resourceChange) {\n continue;\n }\n const commonProps = {\n oldProperties: resourceChange.oldProperties,\n newProperties: resourceChange.newProperties,\n resourceLogicalId,\n };\n // changes to the Type of resources can happen when migrating from CFN templates that use Transforms\n if (resourceChange.resourceTypeChanged) {\n // Treat as DELETE+ADD\n if (resourceChange.oldResourceType) {\n const oldResourceModel = (0, util_1.loadResourceModel)(resourceChange.oldResourceType);\n if (oldResourceModel && this.resourceIsScrutinizable(oldResourceModel, scrutinyTypes)) {\n ret.push({\n ...commonProps,\n newProperties: undefined,\n resourceType: resourceChange.oldResourceType,\n scrutinyType: oldResourceModel.scrutinizable,\n });\n }\n }\n if (resourceChange.newResourceType) {\n const newResourceModel = (0, util_1.loadResourceModel)(resourceChange.newResourceType);\n if (newResourceModel && this.resourceIsScrutinizable(newResourceModel, scrutinyTypes)) {\n ret.push({\n ...commonProps,\n oldProperties: undefined,\n resourceType: resourceChange.newResourceType,\n scrutinyType: newResourceModel.scrutinizable,\n });\n }\n }\n }\n else {\n const resourceModel = (0, util_1.loadResourceModel)(resourceChange.resourceType);\n if (resourceModel && this.resourceIsScrutinizable(resourceModel, scrutinyTypes)) {\n ret.push({\n ...commonProps,\n resourceType: resourceChange.resourceType,\n scrutinyType: resourceModel.scrutinizable,\n });\n }\n }\n }\n return ret;\n }\n resourceIsScrutinizable(res, scrutinyTypes) {\n return scrutinyTypes.includes(res.scrutinizable || service_spec_types_1.ResourceScrutinyType.None);\n }\n}\nexports.TemplateDiff = TemplateDiff;\n/**\n * Models an entity that changed between two versions of a CloudFormation template.\n */\nclass Difference {\n /**\n * @param oldValue the old value, cannot be equal (to the sense of +deepEqual+) to +newValue+.\n * @param newValue the new value, cannot be equal (to the sense of +deepEqual+) to +oldValue+.\n */\n constructor(oldValue, newValue) {\n this.oldValue = oldValue;\n this.newValue = newValue;\n if (oldValue === undefined && newValue === undefined) {\n throw new assert_1.AssertionError({ message: 'oldValue and newValue are both undefined!' });\n }\n this.isDifferent = !(0, util_1.deepEqual)(oldValue, newValue);\n }\n /** @returns +true+ if the element is new to the template. */\n get isAddition() {\n return this.oldValue === undefined;\n }\n /** @returns +true+ if the element was removed from the template. */\n get isRemoval() {\n return this.newValue === undefined;\n }\n /** @returns +true+ if the element was already in the template and is updated. */\n get isUpdate() {\n return this.oldValue !== undefined\n && this.newValue !== undefined;\n }\n}\nexports.Difference = Difference;\nclass PropertyDifference extends Difference {\n constructor(oldValue, newValue, args) {\n super(oldValue, newValue);\n this.changeImpact = args.changeImpact;\n }\n}\nexports.PropertyDifference = PropertyDifference;\nclass DifferenceCollection {\n constructor(diffs) {\n this.diffs = diffs;\n }\n get changes() {\n return onlyChanges(this.diffs);\n }\n get differenceCount() {\n return Object.values(this.changes).length;\n }\n get(logicalId) {\n const ret = this.diffs[logicalId];\n if (!ret) {\n throw new Error(`No object with logical ID '${logicalId}'`);\n }\n return ret;\n }\n remove(logicalId) {\n delete this.diffs[logicalId];\n }\n get logicalIds() {\n return Object.keys(this.changes);\n }\n /**\n * Returns a new TemplateDiff which only contains changes for which `predicate`\n * returns `true`.\n */\n filter(predicate) {\n const newChanges = {};\n for (const id of Object.keys(this.changes)) {\n const diff = this.changes[id];\n if (predicate(diff)) {\n newChanges[id] = diff;\n }\n }\n return new DifferenceCollection(newChanges);\n }\n /**\n * Invokes `cb` for all changes in this collection.\n *\n * Changes will be sorted as follows:\n * - Removed\n * - Added\n * - Updated\n * - Others\n *\n * @param cb\n */\n forEachDifference(cb) {\n const removed = new Array();\n const added = new Array();\n const updated = new Array();\n const others = new Array();\n for (const logicalId of this.logicalIds) {\n const change = this.changes[logicalId];\n if (change.isAddition) {\n added.push({ logicalId, change });\n }\n else if (change.isRemoval) {\n removed.push({ logicalId, change });\n }\n else if (change.isUpdate) {\n updated.push({ logicalId, change });\n }\n else if (change.isDifferent) {\n others.push({ logicalId, change });\n }\n }\n removed.forEach(v => cb(v.logicalId, v.change));\n added.forEach(v => cb(v.logicalId, v.change));\n updated.forEach(v => cb(v.logicalId, v.change));\n others.forEach(v => cb(v.logicalId, v.change));\n }\n}\nexports.DifferenceCollection = DifferenceCollection;\nclass ConditionDifference extends Difference {\n}\nexports.ConditionDifference = ConditionDifference;\nclass MappingDifference extends Difference {\n}\nexports.MappingDifference = MappingDifference;\nclass MetadataDifference extends Difference {\n}\nexports.MetadataDifference = MetadataDifference;\nclass OutputDifference extends Difference {\n}\nexports.OutputDifference = OutputDifference;\nclass ParameterDifference extends Difference {\n}\nexports.ParameterDifference = ParameterDifference;\nvar ResourceImpact;\n(function (ResourceImpact) {\n /** The existing physical resource will be updated */\n ResourceImpact[\"WILL_UPDATE\"] = \"WILL_UPDATE\";\n /** A new physical resource will be created */\n ResourceImpact[\"WILL_CREATE\"] = \"WILL_CREATE\";\n /** The existing physical resource will be replaced */\n ResourceImpact[\"WILL_REPLACE\"] = \"WILL_REPLACE\";\n /** The existing physical resource may be replaced */\n ResourceImpact[\"MAY_REPLACE\"] = \"MAY_REPLACE\";\n /** The existing physical resource will be destroyed */\n ResourceImpact[\"WILL_DESTROY\"] = \"WILL_DESTROY\";\n /** The existing physical resource will be removed from CloudFormation supervision */\n ResourceImpact[\"WILL_ORPHAN\"] = \"WILL_ORPHAN\";\n /** The existing physical resource will be added to CloudFormation supervision */\n ResourceImpact[\"WILL_IMPORT\"] = \"WILL_IMPORT\";\n /** There is no change in this resource */\n ResourceImpact[\"NO_CHANGE\"] = \"NO_CHANGE\";\n})(ResourceImpact || (exports.ResourceImpact = ResourceImpact = {}));\n/**\n * This function can be used as a reducer to obtain the resource-level impact of a list\n * of property-level impacts.\n * @param one the current worst impact so far.\n * @param two the new impact being considered (can be undefined, as we may not always be\n * able to determine some peroperty's impact).\n */\nfunction worstImpact(one, two) {\n if (!two) {\n return one;\n }\n const badness = {\n [ResourceImpact.NO_CHANGE]: 0,\n [ResourceImpact.WILL_IMPORT]: 0,\n [ResourceImpact.WILL_UPDATE]: 1,\n [ResourceImpact.WILL_CREATE]: 2,\n [ResourceImpact.WILL_ORPHAN]: 3,\n [ResourceImpact.MAY_REPLACE]: 4,\n [ResourceImpact.WILL_REPLACE]: 5,\n [ResourceImpact.WILL_DESTROY]: 6,\n };\n return badness[one] > badness[two] ? one : two;\n}\n/**\n * Change to a single resource between two CloudFormation templates\n *\n * This class can be mutated after construction.\n */\nclass ResourceDifference {\n constructor(oldValue, newValue, args) {\n this.oldValue = oldValue;\n this.newValue = newValue;\n this.resourceTypes = args.resourceType;\n this.propertyDiffs = args.propertyDiffs;\n this.otherDiffs = args.otherDiffs;\n this.isAddition = oldValue === undefined;\n this.isRemoval = newValue === undefined;\n this.isImport = undefined;\n }\n get oldProperties() {\n return this.oldValue && this.oldValue.Properties;\n }\n get newProperties() {\n return this.newValue && this.newValue.Properties;\n }\n /**\n * Whether this resource was modified at all\n */\n get isDifferent() {\n return this.differenceCount > 0 || this.oldResourceType !== this.newResourceType;\n }\n /**\n * Whether the resource was updated in-place\n */\n get isUpdate() {\n return this.isDifferent && !this.isAddition && !this.isRemoval;\n }\n get oldResourceType() {\n return this.resourceTypes.oldType;\n }\n get newResourceType() {\n return this.resourceTypes.newType;\n }\n /**\n * All actual property updates\n */\n get propertyUpdates() {\n return onlyChanges(this.propertyDiffs);\n }\n /**\n * All actual \"other\" updates\n */\n get otherChanges() {\n return onlyChanges(this.otherDiffs);\n }\n /**\n * Return whether the resource type was changed in this diff\n *\n * This is not a valid operation in CloudFormation but to be defensive we're going\n * to be aware of it anyway.\n */\n get resourceTypeChanged() {\n return (this.resourceTypes.oldType !== undefined\n && this.resourceTypes.newType !== undefined\n && this.resourceTypes.oldType !== this.resourceTypes.newType);\n }\n /**\n * Return the resource type if it was unchanged\n *\n * If the resource type was changed, it's an error to call this.\n */\n get resourceType() {\n if (this.resourceTypeChanged) {\n throw new Error('Cannot get .resourceType, because the type was changed');\n }\n return this.resourceTypes.oldType || this.resourceTypes.newType;\n }\n /**\n * Replace a PropertyChange in this object\n *\n * This affects the property diff as it is summarized to users, but it DOES\n * NOT affect either the \"oldValue\" or \"newValue\" values; those still contain\n * the actual template values as provided by the user (they might still be\n * used for downstream processing).\n */\n setPropertyChange(propertyName, change) {\n this.propertyDiffs[propertyName] = change;\n }\n /**\n * Replace a OtherChange in this object\n *\n * This affects the property diff as it is summarized to users, but it DOES\n * NOT affect either the \"oldValue\" or \"newValue\" values; those still contain\n * the actual template values as provided by the user (they might still be\n * used for downstream processing).\n */\n setOtherChange(otherName, change) {\n this.otherDiffs[otherName] = change;\n }\n get changeImpact() {\n if (this.isImport) {\n return ResourceImpact.WILL_IMPORT;\n }\n // Check the Type first\n if (this.resourceTypes.oldType !== this.resourceTypes.newType) {\n if (this.resourceTypes.oldType === undefined) {\n return ResourceImpact.WILL_CREATE;\n }\n if (this.resourceTypes.newType === undefined) {\n return this.oldValue.DeletionPolicy === 'Retain'\n ? ResourceImpact.WILL_ORPHAN\n : ResourceImpact.WILL_DESTROY;\n }\n return ResourceImpact.WILL_REPLACE;\n }\n // Base impact (before we mix in the worst of the property impacts);\n // WILL_UPDATE if we have \"other\" changes, NO_CHANGE if there are no \"other\" changes.\n const baseImpact = Object.keys(this.otherChanges).length > 0 ? ResourceImpact.WILL_UPDATE : ResourceImpact.NO_CHANGE;\n return Object.values(this.propertyDiffs)\n .map(elt => elt.changeImpact)\n .reduce(worstImpact, baseImpact);\n }\n /**\n * Count of actual differences (not of elements)\n */\n get differenceCount() {\n return Object.values(this.propertyUpdates).length\n + Object.values(this.otherChanges).length;\n }\n /**\n * Invoke a callback for each actual difference\n */\n forEachDifference(cb) {\n for (const key of Object.keys(this.propertyUpdates).sort()) {\n cb('Property', key, this.propertyUpdates[key]);\n }\n for (const key of Object.keys(this.otherChanges).sort()) {\n cb('Other', key, this.otherDiffs[key]);\n }\n }\n}\nexports.ResourceDifference = ResourceDifference;\nfunction isPropertyDifference(diff) {\n return diff.changeImpact !== undefined;\n}\nexports.isPropertyDifference = isPropertyDifference;\n/**\n * Filter a map of IDifferences down to only retain the actual changes\n */\nfunction onlyChanges(xs) {\n const ret = {};\n for (const [key, diff] of Object.entries(xs)) {\n if (diff.isDifferent) {\n ret[key] = diff;\n }\n }\n return ret;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBd0M7QUFDeEMsb0VBQW9IO0FBQ3BILGlDQUFzRDtBQUN0RCxvREFBZ0Q7QUFDaEQsOEVBQXlFO0FBYXpFLGlFQUFpRTtBQUNqRSxNQUFhLFlBQVk7SUF1QnZCLFlBQVksSUFBbUI7UUFDN0IsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEtBQUssU0FBUyxFQUFFO1lBQy9DLElBQUksQ0FBQyx3QkFBd0IsR0FBRyxJQUFJLENBQUMsd0JBQXdCLENBQUM7U0FDL0Q7UUFDRCxJQUFJLElBQUksQ0FBQyxXQUFXLEtBQUssU0FBUyxFQUFFO1lBQ2xDLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztTQUNyQztRQUNELElBQUksSUFBSSxDQUFDLFNBQVMsS0FBSyxTQUFTLEVBQUU7WUFDaEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ2pDO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFNBQVMs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QUFHLENBQUMsQ0FBQyxDQUFDO1NBQ2hEO1FBQ0QsS0FBSyxNQUFNLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUN2RCxFQUFFLENBQUMsT0FBTyxFQUFFLEdBQUcsRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDeEM7SUFDSCxDQUFDO0NBQ0Y7QUFsTEQsZ0RBa0xDO0FBRUQsU0FBZ0Isb0JBQW9CLENBQUksSUFBbUI7SUFDekQsT0FBUSxJQUE4QixDQUFDLFlBQVksS0FBSyxTQUFTLENBQUM7QUFDcEUsQ0FBQztBQUZELG9EQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFdBQVcsQ0FBOEIsRUFBc0I7SUFDdEUsTUFBTSxHQUFHLEdBQXlCLEVBQUUsQ0FBQztJQUNyQyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsRUFBRTtRQUM1QyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUU7WUFDcEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLElBQUksQ0FBQztTQUNqQjtLQUNGO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXNzZXJ0aW9uRXJyb3IgfSBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgUHJvcGVydHlTY3J1dGlueVR5cGUsIFJlc291cmNlU2NydXRpbnlUeXBlLCBSZXNvdXJjZSBhcyBSZXNvdXJjZU1vZGVsIH0gZnJvbSAnQGF3cy1jZGsvc2VydmljZS1zcGVjLXR5cGVzJztcbmltcG9ydCB7IGRlZXBFcXVhbCwgbG9hZFJlc291cmNlTW9kZWwgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgSWFtQ2hhbmdlcyB9IGZyb20gJy4uL2lhbS9pYW0tY2hhbmdlcyc7XG5pbXBvcnQgeyBTZWN1cml0eUdyb3VwQ2hhbmdlcyB9IGZyb20gJy4uL25ldHdvcmsvc2VjdXJpdHktZ3JvdXAtY2hhbmdlcyc7XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5TWFwID0ge1trZXk6IHN0cmluZ106IGFueSB9O1xuXG5leHBvcnQgdHlwZSBSZXNvdXJjZVJlcGxhY2VtZW50cyA9IHsgW2xvZ2ljYWxJZDogc3RyaW5nXTogUmVzb3VyY2VSZXBsYWNlbWVudCB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlUmVwbGFjZW1lbnQge1xuICByZXNvdXJjZVJlcGxhY2VkOiBib29sZWFuO1xuICBwcm9wZXJ0aWVzUmVwbGFjZWQ6IHsgW3Byb3BlcnR5TmFtZTogc3RyaW5nXTogQ2hhbmdlU2V0UmVwbGFjZW1lbnQgfTtcbn1cblxuZXhwb3J0IHR5cGUgQ2hhbmdlU2V0UmVwbGFjZW1lbnQgPSAnQWx3YXlzJyB8ICdOZXZlcicgfCAnQ29uZGl0aW9uYWxseSc7XG5cbi8qKiBTZW1hbnRpYyBkaWZmZXJlbmNlcyBiZXR3ZWVuIHR3byBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZXMuICovXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVEaWZmIGltcGxlbWVudHMgSVRlbXBsYXRlRGlmZiB7XG4gIHB1YmxpYyBhd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24/OiBEaWZmZXJlbmNlPHN0cmluZz47XG4gIHB1YmxpYyBkZXNjcmlwdGlvbj86IERpZmZlcmVuY2U8c3RyaW5nPjtcbiAgcHVibGljIHRyYW5zZm9ybT86IERpZmZlcmVuY2U8c3RyaW5nPjtcbiAgcHVibGljIGNvbmRpdGlvbnM6IERpZmZlcmVuY2VDb2xsZWN0aW9uPENvbmRpdGlvbiwgQ29uZGl0aW9uRGlmZmVyZW5jZT47XG4gIHB1YmxpYyBtYXBwaW5nczogRGlmZmVyZW5jZUNvbGxlY3Rpb248TWFwcGluZywgTWFwcGluZ0RpZmZlcmVuY2U+O1xuICBwdWJsaWMgbWV0YWRhdGE6IERpZmZlcmVuY2VDb2xsZWN0aW9uPE1ldGFkYXRhLCBNZXRhZGF0YURpZmZlcmVuY2U+O1xuICBwdWJsaWMgb3V0cHV0czogRGlmZmVyZW5jZUNvbGxlY3Rpb248T3V0cHV0LCBPdXRwdXREaWZmZXJlbmNlPjtcbiAgcHVibGljIHBhcmFtZXRlcnM6IERpZmZlcmVuY2VDb2xsZWN0aW9uPFBhcmFtZXRlciwgUGFyYW1ldGVyRGlmZmVyZW5jZT47XG4gIHB1YmxpYyByZXNvdXJjZXM6IERpZmZlcmVuY2VDb2xsZWN0aW9uPFJlc291cmNlLCBSZXNvdXJjZURpZmZlcmVuY2U+O1xuICAvKiogVGhlIGRpZmZlcmVuY2VzIGluIHVua25vd24vdW5leHBlY3RlZCBwYXJ0cyBvZiB0aGUgdGVtcGxhdGUgKi9cbiAgcHVibGljIHVua25vd246IERpZmZlcmVuY2VDb2xsZWN0aW9uPGFueSwgRGlmZmVyZW5jZTxhbnk+PjtcblxuICAvKipcbiAgICogQ2hhbmdlcyB0byBJQU0gcG9saWNpZXNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpYW1DaGFuZ2VzOiBJYW1DaGFuZ2VzO1xuXG4gIC8qKlxuICAgKiBDaGFuZ2VzIHRvIFNlY3VyaXR5IEdyb3VwIGluZ3Jlc3MgYW5kIGVncmVzcyBydWxlc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBDaGFuZ2VzOiBTZWN1cml0eUdyb3VwQ2hhbmdlcztcblxuICBjb25zdHJ1Y3RvcihhcmdzOiBJVGVtcGxhdGVEaWZmKSB7XG4gICAgaWYgKGFyZ3MuYXdzVGVtcGxhdGVGb3JtYXRWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuYXdzVGVtcGxhdGVGb3JtYXRWZXJzaW9uID0gYXJncy5hd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb247XG4gICAgfVxuICAgIGlmIChhcmdzLmRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSBhcmdzLmRlc2NyaXB0aW9uO1xuICAgIH1cbiAgICBpZiAoYXJncy50cmFuc2Zvcm0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy50cmFuc2Zvcm0gPSBhcmdzLnRyYW5zZm9ybTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmRpdGlvbnMgPSBhcmdzLmNvbmRpdGlvbnMgfHwgbmV3IERpZmZlcmVuY2VDb2xsZWN0aW9uKHt9KTtcbiAgICB0aGlzLm1hcHBpbmdzID0gYXJncy5tYXBwaW5ncyB8fCBuZXcgRGlmZmVyZW5jZUNvbGxlY3Rpb24oe30pO1xuICAgIHRoaXMubWV0YWRhdGEgPSBhcmdzLm1ldGFkYXRhIHx8IG5ldyBEaWZmZXJlbmNlQ29sbGVjdGlvbih7fSk7XG4gICAgdGhpcy5vdXRwdXRzID0gYXJncy5vdXRwdXRzIHx8IG5ldyBEaWZmZXJlbmNlQ29sbGVjdGlvbih7fSk7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gYXJncy5wYXJhbWV0ZXJzIHx8IG5ldyBEaWZmZXJlbmNlQ29sbGVjdGlvbih7fSk7XG4gICAgdGhpcy5yZXNvdXJjZXMgPSBhcmdzLnJlc291cmNlcyB8fCBuZXcgRGlmZmVyZW5jZUNvbGxlY3Rpb24oe30pO1xuICAgIHRoaXMudW5rbm93biA9IGFyZ3MudW5rbm93biB8fCBuZXcgRGlmZmVyZW5jZUNvbGxlY3Rpb24oe30pO1xuXG4gICAgdGhpcy5pYW1DaGFuZ2VzID0gbmV3IElhbUNoYW5nZXMoe1xuICAgICAgcHJvcGVydHlDaGFuZ2VzOiB0aGlzLnNjcnV0aW5pemFibGVQcm9wZXJ0eUNoYW5nZXMoSWFtQ2hhbmdlcy5JYW1Qcm9wZXJ0eVNjcnV0aW5pZXMpLFxuICAgICAgcmVzb3VyY2VDaGFuZ2VzOiB0aGlzLnNjcnV0aW5pemFibGVSZXNvdXJjZUNoYW5nZXMoSWFtQ2hhbmdlcy5JYW1SZXNvdXJjZVNjcnV0aW5pZXMpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zZWN1cml0eUdyb3VwQ2hhbmdlcyA9IG5ldyBTZWN1cml0eUdyb3VwQ2hhbmdlcyh7XG4gICAgICBlZ3Jlc3NSdWxlUHJvcGVydHlDaGFuZ2VzOiB0aGlzLnNjcnV0aW5pemFibGVQcm9wZXJ0eUNoYW5nZXMoW1Byb3BlcnR5U2NydXRpbnlUeXBlLkVncmVzc1J1bGVzXSksXG4gICAgICBpbmdyZXNzUnVsZVByb3BlcnR5Q2hhbmdlczogdGhpcy5zY3J1dGluaXphYmxlUHJvcGVydHlDaGFuZ2VzKFtQcm9wZXJ0eVNjcnV0aW55VHlwZS5JbmdyZXNzUnVsZXNdKSxcbiAgICAgIGVncmVzc1J1bGVSZXNvdXJjZUNoYW5nZXM6IHRoaXMuc2NydXRpbml6YWJsZVJlc291cmNlQ2hhbmdlcyhbUmVzb3VyY2VTY3J1dGlueVR5cGUuRWdyZXNzUnVsZVJlc291cmNlXSksXG4gICAgICBpbmdyZXNzUnVsZVJlc291cmNlQ2hhbmdlczogdGhpcy5zY3J1dGluaXphYmxlUmVzb3VyY2VDaGFuZ2VzKFtSZXNvdXJjZVNjcnV0aW55VHlwZS5JbmdyZXNzUnVsZVJlc291cmNlXSksXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpZmZlcmVuY2VDb3VudCgpIHtcbiAgICBsZXQgY291bnQgPSAwO1xuXG4gICAgaWYgKHRoaXMuYXdzVGVtcGxhdGVGb3JtYXRWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvdW50ICs9IDE7XG4gICAgfVxuICAgIGlmICh0aGlzLmRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvdW50ICs9IDE7XG4gICAgfVxuICAgIGlmICh0aGlzLnRyYW5zZm9ybSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb3VudCArPSAxO1xuICAgIH1cblxuICAgIGNvdW50ICs9IHRoaXMuY29uZGl0aW9ucy5kaWZmZXJlbmNlQ291bnQ7XG4gICAgY291bnQgKz0gdGhpcy5tYXBwaW5ncy5kaWZmZXJlbmNlQ291bnQ7XG4gICAgY291bnQgKz0gdGhpcy5tZXRhZGF0YS5kaWZmZXJlbmNlQ291bnQ7XG4gICAgY291bnQgKz0gdGhpcy5vdXRwdXRzLmRpZmZlcmVuY2VDb3VudDtcbiAgICBjb3VudCArPSB0aGlzLnBhcmFtZXRlcnMuZGlmZmVyZW5jZUNvdW50O1xuICAgIGNvdW50ICs9IHRoaXMucmVzb3VyY2VzLmRpZmZlcmVuY2VDb3VudDtcbiAgICBjb3VudCArPSB0aGlzLnVua25vd24uZGlmZmVyZW5jZUNvdW50O1xuXG4gICAgcmV0dXJuIGNvdW50O1xuICB9XG5cbiAgcHVibGljIGdldCBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpZmZlcmVuY2VDb3VudCA9PT0gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdHJ1ZSBpZiBhbnkgb2YgdGhlIHBlcm1pc3Npb25zIG9iamVjdHMgaW52b2x2ZSBhIGJyb2FkZW5pbmcgb2YgcGVybWlzc2lvbnNcbiAgICovXG4gIHB1YmxpYyBnZXQgcGVybWlzc2lvbnNCcm9hZGVuZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaWFtQ2hhbmdlcy5wZXJtaXNzaW9uc0Jyb2FkZW5lZCB8fCB0aGlzLnNlY3VyaXR5R3JvdXBDaGFuZ2VzLnJ1bGVzQWRkZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRydWUgaWYgYW55IG9mIHRoZSBwZXJtaXNzaW9ucyBvYmplY3RzIGhhdmUgY2hhbmdlZFxuICAgKi9cbiAgcHVibGljIGdldCBwZXJtaXNzaW9uc0FueUNoYW5nZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaWFtQ2hhbmdlcy5oYXNDaGFuZ2VzIHx8IHRoaXMuc2VjdXJpdHlHcm91cENoYW5nZXMuaGFzQ2hhbmdlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYWxsIHByb3BlcnR5IGNoYW5nZXMgb2YgYSBnaXZlbiBzY3J1dGlueSB0eXBlXG4gICAqXG4gICAqIFdlIGRvbid0IGp1c3QgbG9vayBhdCBwcm9wZXJ0eSB1cGRhdGVzOyB3ZSBhbHNvIGxvb2sgYXQgcmVzb3VyY2UgYWRkaXRpb25zIGFuZCBkZWxldGlvbnMgKGluIHdoaWNoXG4gICAqIGNhc2UgdGhlcmUgaXMgbm8gZnVydGhlciBkZXRhaWwgb24gcHJvcGVydHkgdmFsdWVzKSwgYW5kIHJlc291cmNlIHR5cGUgY2hhbmdlcy5cbiAgICovXG4gIHByaXZhdGUgc2NydXRpbml6YWJsZVByb3BlcnR5Q2hhbmdlcyhzY3J1dGlueVR5cGVzOiBQcm9wZXJ0eVNjcnV0aW55VHlwZVtdKTogUHJvcGVydHlDaGFuZ2VbXSB7XG4gICAgY29uc3QgcmV0ID0gbmV3IEFycmF5PFByb3BlcnR5Q2hhbmdlPigpO1xuXG4gICAgZm9yIChjb25zdCBbcmVzb3VyY2VMb2dpY2FsSWQsIHJlc291cmNlQ2hhbmdlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnJlc291cmNlcy5jaGFuZ2VzKSkge1xuICAgICAgaWYgKHJlc291cmNlQ2hhbmdlLnJlc291cmNlVHlwZUNoYW5nZWQpIHtcbiAgICAgICAgLy8gd2UgaWdub3JlIHJlc291cmNlIHR5cGUgY2hhbmdlcyBoZXJlLCBhbmQgaGFuZGxlIHRoZW0gaW4gc2NydXRpbml6YWJsZVJlc291cmNlQ2hhbmdlcygpXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXJlc291cmNlQ2hhbmdlLm5ld1Jlc291cmNlVHlwZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3VHlwZVByb3BzID0gbG9hZFJlc291cmNlTW9kZWwocmVzb3VyY2VDaGFuZ2UubmV3UmVzb3VyY2VUeXBlKT8ucHJvcGVydGllcyB8fCB7fTtcbiAgICAgIGZvciAoY29uc3QgW3Byb3BlcnR5TmFtZSwgcHJvcF0gb2YgT2JqZWN0LmVudHJpZXMobmV3VHlwZVByb3BzKSkge1xuICAgICAgICBjb25zdCBwcm9wU2NydXRpbnlUeXBlID0gcHJvcC5zY3J1dGluaXphYmxlIHx8IFByb3BlcnR5U2NydXRpbnlUeXBlLk5vbmU7XG4gICAgICAgIGlmIChzY3J1dGlueVR5cGVzLmluY2x1ZGVzKHByb3BTY3J1dGlueVR5cGUpKSB7XG4gICAgICAgICAgcmV0LnB1c2goe1xuICAgICAgICAgICAgcmVzb3VyY2VMb2dpY2FsSWQsXG4gICAgICAgICAgICBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICByZXNvdXJjZVR5cGU6IHJlc291cmNlQ2hhbmdlLnJlc291cmNlVHlwZSxcbiAgICAgICAgICAgIHNjcnV0aW55VHlwZTogcHJvcFNjcnV0aW55VHlwZSxcbiAgICAgICAgICAgIG9sZFZhbHVlOiByZXNvdXJjZUNoYW5nZS5vbGRQcm9wZXJ0aWVzPy5bcHJvcGVydHlOYW1lXSxcbiAgICAgICAgICAgIG5ld1ZhbHVlOiByZXNvdXJjZUNoYW5nZS5uZXdQcm9wZXJ0aWVzPy5bcHJvcGVydHlOYW1lXSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFsbCByZXNvdXJjZSBjaGFuZ2VzIG9mIGEgZ2l2ZW4gc2NydXRpbnkgdHlwZVxuICAgKlxuICAgKiBXZSBkb24ndCBqdXN0IGxvb2sgYXQgcmVzb3VyY2UgdXBkYXRlczsgd2UgYWxzbyBsb29rIGF0IHJlc291cmNlIGFkZGl0aW9ucyBhbmQgZGVsZXRpb25zIChpbiB3aGljaFxuICAgKiBjYXNlIHRoZXJlIGlzIG5vIGZ1cnRoZXIgZGV0YWlsIG9uIHByb3BlcnR5IHZhbHVlcyksIGFuZCByZXNvdXJjZSB0eXBlIGNoYW5nZXMuXG4gICAqL1xuICBwcml2YXRlIHNjcnV0aW5pemFibGVSZXNvdXJjZUNoYW5nZXMoc2NydXRpbnlUeXBlczogUmVzb3VyY2VTY3J1dGlueVR5cGVbXSk6IFJlc291cmNlQ2hhbmdlW10ge1xuICAgIGNvbnN0IHJldCA9IG5ldyBBcnJheTxSZXNvdXJjZUNoYW5nZT4oKTtcblxuICAgIGZvciAoY29uc3QgW3Jlc291cmNlTG9naWNhbElkLCByZXNvdXJjZUNoYW5nZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5yZXNvdXJjZXMuY2hhbmdlcykpIHtcbiAgICAgIGlmICghcmVzb3VyY2VDaGFuZ2UpIHsgY29udGludWU7IH1cblxuICAgICAgY29uc3QgY29tbW9uUHJvcHMgPSB7XG4gICAgICAgIG9sZFByb3BlcnRpZXM6IHJlc291cmNlQ2hhbmdlLm9sZFByb3BlcnRpZXMsXG4gICAgICAgIG5ld1Byb3BlcnRpZXM6IHJlc291cmNlQ2hhbmdlLm5ld1Byb3BlcnRpZXMsXG4gICAgICAgIHJlc291cmNlTG9naWNhbElkLFxuICAgICAgfTtcblxuICAgICAgLy8gY2hhbmdlcyB0byB0aGUgVHlwZSBvZiByZXNvdXJjZXMgY2FuIGhhcHBlbiB3aGVuIG1pZ3JhdGluZyBmcm9tIENGTiB0ZW1wbGF0ZXMgdGhhdCB1c2UgVHJhbnNmb3Jtc1xuICAgICAgaWYgKHJlc291cmNlQ2hhbmdlLnJlc291cmNlVHlwZUNoYW5nZWQpIHtcbiAgICAgICAgLy8gVHJlYXQgYXMgREVMRVRFK0FERFxuICAgICAgICBpZiAocmVzb3VyY2VDaGFuZ2Uub2xkUmVzb3VyY2VUeXBlKSB7XG4gICAgICAgICAgY29uc3Qgb2xkUmVzb3VyY2VNb2RlbCA9IGxvYWRSZXNvdXJjZU1vZGVsKHJlc291cmNlQ2hhbmdlLm9sZFJlc291cmNlVHlwZSk7XG4gICAgICAgICAgaWYgKG9sZFJlc291cmNlTW9kZWwgJiYgdGhpcy5yZXNvdXJjZUlzU2NydXRpbml6YWJsZShvbGRSZXNvdXJjZU1vZGVsLCBzY3J1dGlueVR5cGVzKSkge1xuICAgICAgICAgICAgcmV0LnB1c2goe1xuICAgICAgICAgICAgICAuLi5jb21tb25Qcm9wcyxcbiAgICAgICAgICAgICAgbmV3UHJvcGVydGllczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IHJlc291cmNlQ2hhbmdlLm9sZFJlc291cmNlVHlwZSEsXG4gICAgICAgICAgICAgIHNjcnV0aW55VHlwZTogb2xkUmVzb3VyY2VNb2RlbC5zY3J1dGluaXphYmxlISxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXNvdXJjZUNoYW5nZS5uZXdSZXNvdXJjZVR5cGUpIHtcbiAgICAgICAgICBjb25zdCBuZXdSZXNvdXJjZU1vZGVsID0gbG9hZFJlc291cmNlTW9kZWwocmVzb3VyY2VDaGFuZ2UubmV3UmVzb3VyY2VUeXBlKTtcbiAgICAgICAgICBpZiAobmV3UmVzb3VyY2VNb2RlbCAmJiB0aGlzLnJlc291cmNlSXNTY3J1dGluaXphYmxlKG5ld1Jlc291cmNlTW9kZWwsIHNjcnV0aW55VHlwZXMpKSB7XG4gICAgICAgICAgICByZXQucHVzaCh7XG4gICAgICAgICAgICAgIC4uLmNvbW1vblByb3BzLFxuICAgICAgICAgICAgICBvbGRQcm9wZXJ0aWVzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIHJlc291cmNlVHlwZTogcmVzb3VyY2VDaGFuZ2UubmV3UmVzb3VyY2VUeXBlISxcbiAgICAgICAgICAgICAgc2NydXRpbnlUeXBlOiBuZXdSZXNvdXJjZU1vZGVsLnNjcnV0aW5pemFibGUhLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZXNvdXJjZU1vZGVsID0gbG9hZFJlc291cmNlTW9kZWwocmVzb3VyY2VDaGFuZ2UucmVzb3VyY2VUeXBlKTtcbiAgICAgICAgaWYgKHJlc291cmNlTW9kZWwgJiYgdGhpcy5yZXNvdXJjZUlzU2NydXRpbml6YWJsZShyZXNvdXJjZU1vZGVsLCBzY3J1dGlueVR5cGVzKSkge1xuICAgICAgICAgIHJldC5wdXNoKHtcbiAgICAgICAgICAgIC4uLmNvbW1vblByb3BzLFxuICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiByZXNvdXJjZUNoYW5nZS5yZXNvdXJjZVR5cGUsXG4gICAgICAgICAgICBzY3J1dGlueVR5cGU6IHJlc291cmNlTW9kZWwuc2NydXRpbml6YWJsZSEsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvdXJjZUlzU2NydXRpbml6YWJsZShyZXM6IFJlc291cmNlTW9kZWwsIHNjcnV0aW55VHlwZXM6IEFycmF5PFJlc291cmNlU2NydXRpbnlUeXBlPik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzY3J1dGlueVR5cGVzLmluY2x1ZGVzKHJlcy5zY3J1dGluaXphYmxlIHx8IFJlc291cmNlU2NydXRpbnlUeXBlLk5vbmUpO1xuICB9XG59XG5cbi8qKlxuICogQSBjaGFuZ2UgaW4gcHJvcGVydHkgdmFsdWVzXG4gKlxuICogTm90IG5lY2Vzc2FyaWx5IGFuIHVwZGF0ZSwgaXQgY291bGQgYmUgdGhhdCB0aGVyZSB1c2VkIHRvIGJlIG5vIHZhbHVlIHRoZXJlXG4gKiBiZWNhdXNlIHRoZXJlIHdhcyBubyByZXNvdXJjZSwgYW5kIG5vdyB0aGVyZSBpcyAob3IgdmljZSB2ZXJzYSkuXG4gKlxuICogVGhlcmVmb3JlLCB3ZSBqdXN0IGNvbnRhaW4gcGxhaW4gdmFsdWVzIGFuZCBub3QgYSBQcm9wZXJ0eURpZmZlcmVuY2U8YW55Pi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9wZXJ0eUNoYW5nZSB7XG4gIC8qKlxuICAgKiBMb2dpY2FsIElEIG9mIHRoZSByZXNvdXJjZSB3aGVyZSB0aGlzIHByb3BlcnR5IGNoYW5nZSB3YXMgZm91bmRcbiAgICovXG4gIHJlc291cmNlTG9naWNhbElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFR5cGUgb2YgdGhlIHJlc291cmNlXG4gICAqL1xuICByZXNvdXJjZVR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogU2NydXRpbnkgdHlwZSBmb3IgdGhpcyBwcm9wZXJ0eSBjaGFuZ2VcbiAgICovXG4gIHNjcnV0aW55VHlwZTogUHJvcGVydHlTY3J1dGlueVR5cGU7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHByb3BlcnR5IHRoYXQgaXMgY2hhbmdpbmdcbiAgICovXG4gIHByb3BlcnR5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgb2xkIHByb3BlcnR5IHZhbHVlXG4gICAqL1xuICBvbGRWYWx1ZT86IGFueTtcblxuICAvKipcbiAgICogVGhlIG5ldyBwcm9wZXJ0eSB2YWx1ZVxuICAgKi9cbiAgbmV3VmFsdWU/OiBhbnk7XG59XG5cbi8qKlxuICogQSByZXNvdXJjZSBjaGFuZ2VcbiAqXG4gKiBFaXRoZXIgYSBjcmVhdGlvbiwgZGVsZXRpb24gb3IgdXBkYXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlQ2hhbmdlIHtcbiAgLyoqXG4gICAqIExvZ2ljYWwgSUQgb2YgdGhlIHJlc291cmNlIHdoZXJlIHRoaXMgcHJvcGVydHkgY2hhbmdlIHdhcyBmb3VuZFxuICAgKi9cbiAgcmVzb3VyY2VMb2dpY2FsSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogU2NydXRpbnkgdHlwZSBmb3IgdGhpcyByZXNvdXJjZSBjaGFuZ2VcbiAgICovXG4gIHNjcnV0aW55VHlwZTogUmVzb3VyY2VTY3J1dGlueVR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSByZXNvdXJjZVxuICAgKi9cbiAgcmVzb3VyY2VUeXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvbGQgcHJvcGVydGllcyB2YWx1ZSAobWlnaHQgYmUgdW5kZWZpbmVkIGluIGNhc2Ugb2YgY3JlYXRpb24pXG4gICAqL1xuICBvbGRQcm9wZXJ0aWVzPzogUHJvcGVydHlNYXA7XG5cbiAgLyoqXG4gICAqIFRoZSBuZXcgcHJvcGVydGllcyB2YWx1ZSAobWlnaHQgYmUgdW5kZWZpbmVkIGluIGNhc2Ugb2YgZGVsZXRpb24pXG4gICAqL1xuICBuZXdQcm9wZXJ0aWVzPzogUHJvcGVydHlNYXA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURpZmZlcmVuY2U8VmFsdWVUeXBlPiB7XG4gIHJlYWRvbmx5IG9sZFZhbHVlOiBWYWx1ZVR5cGUgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IG5ld1ZhbHVlOiBWYWx1ZVR5cGUgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGlzRGlmZmVyZW50OiBib29sZWFuO1xuICByZWFkb25seSBpc0FkZGl0aW9uOiBib29sZWFuO1xuICByZWFkb25seSBpc1JlbW92YWw6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGlzVXBkYXRlOiBib29sZWFuO1xufVxuXG4vKipcbiAqIE1vZGVscyBhbiBlbnRpdHkgdGhhdCBjaGFuZ2VkIGJldHdlZW4gdHdvIHZlcnNpb25zIG9mIGEgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBEaWZmZXJlbmNlPFZhbHVlVHlwZT4gaW1wbGVtZW50cyBJRGlmZmVyZW5jZTxWYWx1ZVR5cGU+IHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBpcyBhbiBhY3R1YWwgZGlmZmVyZW50IG9yIHRoZSB2YWx1ZXMgYXJlIGFjdHVhbGx5IHRoZSBzYW1lXG4gICAqXG4gICAqIGlzRGlmZmVyZW50ID0+IChpc1VwZGF0ZSB8IGlzUmVtb3ZlZCB8IGlzVXBkYXRlKVxuICAgKi9cbiAgcHVibGljIGlzRGlmZmVyZW50OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gb2xkVmFsdWUgdGhlIG9sZCB2YWx1ZSwgY2Fubm90IGJlIGVxdWFsICh0byB0aGUgc2Vuc2Ugb2YgK2RlZXBFcXVhbCspIHRvICtuZXdWYWx1ZSsuXG4gICAqIEBwYXJhbSBuZXdWYWx1ZSB0aGUgbmV3IHZhbHVlLCBjYW5ub3QgYmUgZXF1YWwgKHRvIHRoZSBzZW5zZSBvZiArZGVlcEVxdWFsKykgdG8gK29sZFZhbHVlKy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBvbGRWYWx1ZTogVmFsdWVUeXBlIHwgdW5kZWZpbmVkLCBwdWJsaWMgcmVhZG9ubHkgbmV3VmFsdWU6IFZhbHVlVHlwZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmIChvbGRWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcih7IG1lc3NhZ2U6ICdvbGRWYWx1ZSBhbmQgbmV3VmFsdWUgYXJlIGJvdGggdW5kZWZpbmVkIScgfSk7XG4gICAgfVxuICAgIHRoaXMuaXNEaWZmZXJlbnQgPSAhZGVlcEVxdWFsKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICAvKiogQHJldHVybnMgK3RydWUrIGlmIHRoZSBlbGVtZW50IGlzIG5ldyB0byB0aGUgdGVtcGxhdGUuICovXG4gIHB1YmxpYyBnZXQgaXNBZGRpdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vbGRWYWx1ZSA9PT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqIEByZXR1cm5zICt0cnVlKyBpZiB0aGUgZWxlbWVudCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSB0ZW1wbGF0ZS4gKi9cbiAgcHVibGljIGdldCBpc1JlbW92YWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmV3VmFsdWUgPT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyArdHJ1ZSsgaWYgdGhlIGVsZW1lbnQgd2FzIGFscmVhZHkgaW4gdGhlIHRlbXBsYXRlIGFuZCBpcyB1cGRhdGVkLiAqL1xuICBwdWJsaWMgZ2V0IGlzVXBkYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9sZFZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgICYmIHRoaXMubmV3VmFsdWUgIT09IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvcGVydHlEaWZmZXJlbmNlPFZhbHVlVHlwZT4gZXh0ZW5kcyBEaWZmZXJlbmNlPFZhbHVlVHlwZT4ge1xuICBwdWJsaWMgY2hhbmdlSW1wYWN0PzogUmVzb3VyY2VJbXBhY3Q7XG5cbiAgY29uc3RydWN0b3Iob2xkVmFsdWU6IFZhbHVlVHlwZSB8IHVuZGVmaW5lZCwgbmV3VmFsdWU6IFZhbHVlVHlwZSB8IHVuZGVmaW5lZCwgYXJnczogeyBjaGFuZ2VJbXBhY3Q/OiBSZXNvdXJjZUltcGFjdCB9KSB7XG4gICAgc3VwZXIob2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICB0aGlzLmNoYW5nZUltcGFjdCA9IGFyZ3MuY2hhbmdlSW1wYWN0O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEaWZmZXJlbmNlQ29sbGVjdGlvbjxWLCBUIGV4dGVuZHMgSURpZmZlcmVuY2U8Vj4+IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkaWZmczogeyBbbG9naWNhbElkOiBzdHJpbmddOiBUIH0pIHt9XG5cbiAgcHVibGljIGdldCBjaGFuZ2VzKCk6IHsgW2xvZ2ljYWxJZDogc3RyaW5nXTogVCB9IHtcbiAgICByZXR1cm4gb25seUNoYW5nZXModGhpcy5kaWZmcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpZmZlcmVuY2VDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMuY2hhbmdlcykubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIGdldChsb2dpY2FsSWQ6IHN0cmluZyk6IFQge1xuICAgIGNvbnN0IHJldCA9IHRoaXMuZGlmZnNbbG9naWNhbElkXTtcbiAgICBpZiAoIXJldCkgeyB0aHJvdyBuZXcgRXJyb3IoYE5vIG9iamVjdCB3aXRoIGxvZ2ljYWwgSUQgJyR7bG9naWNhbElkfSdgKTsgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlKGxvZ2ljYWxJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgZGVsZXRlIHRoaXMuZGlmZnNbbG9naWNhbElkXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG9naWNhbElkcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY2hhbmdlcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIG5ldyBUZW1wbGF0ZURpZmYgd2hpY2ggb25seSBjb250YWlucyBjaGFuZ2VzIGZvciB3aGljaCBgcHJlZGljYXRlYFxuICAgKiByZXR1cm5zIGB0cnVlYC5cbiAgICovXG4gIHB1YmxpYyBmaWx0ZXIocHJlZGljYXRlOiAoZGlmZjogVCB8IHVuZGVmaW5lZCkgPT4gYm9vbGVhbik6IERpZmZlcmVuY2VDb2xsZWN0aW9uPFYsIFQ+IHtcbiAgICBjb25zdCBuZXdDaGFuZ2VzOiB7IFtsb2dpY2FsSWQ6IHN0cmluZ106IFQgfSA9IHsgfTtcbiAgICBmb3IgKGNvbnN0IGlkIG9mIE9iamVjdC5rZXlzKHRoaXMuY2hhbmdlcykpIHtcbiAgICAgIGNvbnN0IGRpZmYgPSB0aGlzLmNoYW5nZXNbaWRdO1xuXG4gICAgICBpZiAocHJlZGljYXRlKGRpZmYpKSB7XG4gICAgICAgIG5ld0NoYW5nZXNbaWRdID0gZGlmZjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERpZmZlcmVuY2VDb2xsZWN0aW9uPFYsIFQ+KG5ld0NoYW5nZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEludm9rZXMgYGNiYCBmb3IgYWxsIGNoYW5nZXMgaW4gdGhpcyBjb2xsZWN0aW9uLlxuICAgKlxuICAgKiBDaGFuZ2VzIHdpbGwgYmUgc29ydGVkIGFzIGZvbGxvd3M6XG4gICAqICAtIFJlbW92ZWRcbiAgICogIC0gQWRkZWRcbiAgICogIC0gVXBkYXRlZFxuICAgKiAgLSBPdGhlcnNcbiAgICpcbiAgICogQHBhcmFtIGNiXG4gICAqL1xuICBwdWJsaWMgZm9yRWFjaERpZmZlcmVuY2UoY2I6IChsb2dpY2FsSWQ6IHN0cmluZywgY2hhbmdlOiBUKSA9PiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCByZW1vdmVkID0gbmV3IEFycmF5PHsgbG9naWNhbElkOiBzdHJpbmc7IGNoYW5nZTogVCB9PigpO1xuICAgIGNvbnN0IGFkZGVkID0gbmV3IEFycmF5PHsgbG9naWNhbElkOiBzdHJpbmc7IGNoYW5nZTogVCB9PigpO1xuICAgIGNvbnN0IHVwZGF0ZWQgPSBuZXcgQXJyYXk8eyBsb2dpY2FsSWQ6IHN0cmluZzsgY2hhbmdlOiBUIH0+KCk7XG4gICAgY29uc3Qgb3RoZXJzID0gbmV3IEFycmF5PHsgbG9naWNhbElkOiBzdHJpbmc7IGNoYW5nZTogVCB9PigpO1xuXG4gICAgZm9yIChjb25zdCBsb2dpY2FsSWQgb2YgdGhpcy5sb2dpY2FsSWRzKSB7XG4gICAgICBjb25zdCBjaGFuZ2U6IFQgPSB0aGlzLmNoYW5nZXNbbG9naWNhbElkXSE7XG4gICAgICBpZiAoY2hhbmdlLmlzQWRkaXRpb24pIHtcbiAgICAgICAgYWRkZWQucHVzaCh7IGxvZ2ljYWxJZCwgY2hhbmdlIH0pO1xuICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuaXNSZW1vdmFsKSB7XG4gICAgICAgIHJlbW92ZWQucHVzaCh7IGxvZ2ljYWxJZCwgY2hhbmdlIH0pO1xuICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuaXNVcGRhdGUpIHtcbiAgICAgICAgdXBkYXRlZC5wdXNoKHsgbG9naWNhbElkLCBjaGFuZ2UgfSk7XG4gICAgICB9IGVsc2UgaWYgKGNoYW5nZS5pc0RpZmZlcmVudCkge1xuICAgICAgICBvdGhlcnMucHVzaCh7IGxvZ2ljYWxJZCwgY2hhbmdlIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJlbW92ZWQuZm9yRWFjaCh2ID0+IGNiKHYubG9naWNhbElkLCB2LmNoYW5nZSkpO1xuICAgIGFkZGVkLmZvckVhY2godiA9PiBjYih2LmxvZ2ljYWxJZCwgdi5jaGFuZ2UpKTtcbiAgICB1cGRhdGVkLmZvckVhY2godiA9PiBjYih2LmxvZ2ljYWxJZCwgdi5jaGFuZ2UpKTtcbiAgICBvdGhlcnMuZm9yRWFjaCh2ID0+IGNiKHYubG9naWNhbElkLCB2LmNoYW5nZSkpO1xuICB9XG59XG5cbi8qKlxuICogQXJndW1lbnRzIGV4cGVjdGVkIGJ5IHRoZSBjb25zdHJ1Y3RvciBvZiArVGVtcGxhdGVEaWZmKywgZXh0cmFjdGVkIGFzIGFuIGludGVyZmFjZSBmb3IgdGhlIHNha2VcbiAqIG9mIChyZWxhdGl2ZSkgY29uY2lzZW5lc3Mgb2YgdGhlIGNvbnN0cnVjdG9yJ3Mgc2lnbmF0dXJlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElUZW1wbGF0ZURpZmYge1xuICBhd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24/OiBJRGlmZmVyZW5jZTxzdHJpbmc+O1xuICBkZXNjcmlwdGlvbj86IElEaWZmZXJlbmNlPHN0cmluZz47XG4gIHRyYW5zZm9ybT86IElEaWZmZXJlbmNlPHN0cmluZz47XG5cbiAgY29uZGl0aW9ucz86IERpZmZlcmVuY2VDb2xsZWN0aW9uPENvbmRpdGlvbiwgQ29uZGl0aW9uRGlmZmVyZW5jZT47XG4gIG1hcHBpbmdzPzogRGlmZmVyZW5jZUNvbGxlY3Rpb248TWFwcGluZywgTWFwcGluZ0RpZmZlcmVuY2U+O1xuICBtZXRhZGF0YT86IERpZmZlcmVuY2VDb2xsZWN0aW9uPE1ldGFkYXRhLCBNZXRhZGF0YURpZmZlcmVuY2U+O1xuICBvdXRwdXRzPzogRGlmZmVyZW5jZUNvbGxlY3Rpb248T3V0cHV0LCBPdXRwdXREaWZmZXJlbmNlPjtcbiAgcGFyYW1ldGVycz86IERpZmZlcmVuY2VDb2xsZWN0aW9uPFBhcmFtZXRlciwgUGFyYW1ldGVyRGlmZmVyZW5jZT47XG4gIHJlc291cmNlcz86IERpZmZlcmVuY2VDb2xsZWN0aW9uPFJlc291cmNlLCBSZXNvdXJjZURpZmZlcmVuY2U+O1xuXG4gIHVua25vd24/OiBEaWZmZXJlbmNlQ29sbGVjdGlvbjxhbnksIElEaWZmZXJlbmNlPGFueT4+O1xufVxuXG5leHBvcnQgdHlwZSBDb25kaXRpb24gPSBhbnk7XG5leHBvcnQgY2xhc3MgQ29uZGl0aW9uRGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8Q29uZGl0aW9uPiB7XG4gIC8vIFRPRE86IGRlZmluZSBzcGVjaWZpYyBkaWZmZXJlbmNlIGF0dHJpYnV0ZXNcbn1cblxuZXhwb3J0IHR5cGUgTWFwcGluZyA9IGFueTtcbmV4cG9ydCBjbGFzcyBNYXBwaW5nRGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8TWFwcGluZz4ge1xuICAvLyBUT0RPOiBkZWZpbmUgc3BlY2lmaWMgZGlmZmVyZW5jZSBhdHRyaWJ1dGVzXG59XG5cbmV4cG9ydCB0eXBlIE1ldGFkYXRhID0gYW55O1xuZXhwb3J0IGNsYXNzIE1ldGFkYXRhRGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8TWV0YWRhdGE+IHtcbiAgLy8gVE9ETzogZGVmaW5lIHNwZWNpZmljIGRpZmZlcmVuY2UgYXR0cmlidXRlc1xufVxuXG5leHBvcnQgdHlwZSBPdXRwdXQgPSBhbnk7XG5leHBvcnQgY2xhc3MgT3V0cHV0RGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8T3V0cHV0PiB7XG4gIC8vIFRPRE86IGRlZmluZSBzcGVjaWZpYyBkaWZmZXJlbmNlIGF0dHJpYnV0ZXNcbn1cblxuZXhwb3J0IHR5cGUgUGFyYW1ldGVyID0gYW55O1xuZXhwb3J0IGNsYXNzIFBhcmFtZXRlckRpZmZlcmVuY2UgZXh0ZW5kcyBEaWZmZXJlbmNlPFBhcmFtZXRlcj4ge1xuICAvLyBUT0RPOiBkZWZpbmUgc3BlY2lmaWMgZGlmZmVyZW5jZSBhdHRyaWJ1dGVzXG59XG5cbmV4cG9ydCBlbnVtIFJlc291cmNlSW1wYWN0IHtcbiAgLyoqIFRoZSBleGlzdGluZyBwaHlzaWNhbCByZXNvdXJjZSB3aWxsIGJlIHVwZGF0ZWQgKi9cbiAgV0lMTF9VUERBVEUgPSAnV0lMTF9VUERBVEUnLFxuICAvKiogQSBuZXcgcGh5c2ljYWwgcmVzb3VyY2Ugd2lsbCBiZSBjcmVhdGVkICovXG4gIFdJTExfQ1JFQVRFID0gJ1dJTExfQ1JFQVRFJyxcbiAgLyoqIFRoZSBleGlzdGluZyBwaHlzaWNhbCByZXNvdXJjZSB3aWxsIGJlIHJlcGxhY2VkICovXG4gIFdJTExfUkVQTEFDRSA9ICdXSUxMX1JFUExBQ0UnLFxuICAvKiogVGhlIGV4aXN0aW5nIHBoeXNpY2FsIHJlc291cmNlIG1heSBiZSByZXBsYWNlZCAqL1xuICBNQVlfUkVQTEFDRSA9ICdNQVlfUkVQTEFDRScsXG4gIC8qKiBUaGUgZXhpc3RpbmcgcGh5c2ljYWwgcmVzb3VyY2Ugd2lsbCBiZSBkZXN0cm95ZWQgKi9cbiAgV0lMTF9ERVNUUk9ZID0gJ1dJTExfREVTVFJPWScsXG4gIC8qKiBUaGUgZXhpc3RpbmcgcGh5c2ljYWwgcmVzb3VyY2Ugd2lsbCBiZSByZW1vdmVkIGZyb20gQ2xvdWRGb3JtYXRpb24gc3VwZXJ2aXNpb24gKi9cbiAgV0lMTF9PUlBIQU4gPSAnV0lMTF9PUlBIQU4nLFxuICAvKiogVGhlIGV4aXN0aW5nIHBoeXNpY2FsIHJlc291cmNlIHdpbGwgYmUgYWRkZWQgdG8gQ2xvdWRGb3JtYXRpb24gc3VwZXJ2aXNpb24gKi9cbiAgV0lMTF9JTVBPUlQgPSAnV0lMTF9JTVBPUlQnLFxuICAvKiogVGhlcmUgaXMgbm8gY2hhbmdlIGluIHRoaXMgcmVzb3VyY2UgKi9cbiAgTk9fQ0hBTkdFID0gJ05PX0NIQU5HRScsXG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBhcyBhIHJlZHVjZXIgdG8gb2J0YWluIHRoZSByZXNvdXJjZS1sZXZlbCBpbXBhY3Qgb2YgYSBsaXN0XG4gKiBvZiBwcm9wZXJ0eS1sZXZlbCBpbXBhY3RzLlxuICogQHBhcmFtIG9uZSB0aGUgY3VycmVudCB3b3JzdCBpbXBhY3Qgc28gZmFyLlxuICogQHBhcmFtIHR3byB0aGUgbmV3IGltcGFjdCBiZWluZyBjb25zaWRlcmVkIChjYW4gYmUgdW5kZWZpbmVkLCBhcyB3ZSBtYXkgbm90IGFsd2F5cyBiZVxuICogICAgICBhYmxlIHRvIGRldGVybWluZSBzb21lIHBlcm9wZXJ0eSdzIGltcGFjdCkuXG4gKi9cbmZ1bmN0aW9uIHdvcnN0SW1wYWN0KG9uZTogUmVzb3VyY2VJbXBhY3QsIHR3bz86IFJlc291cmNlSW1wYWN0KTogUmVzb3VyY2VJbXBhY3Qge1xuICBpZiAoIXR3bykgeyByZXR1cm4gb25lOyB9XG4gIGNvbnN0IGJhZG5lc3MgPSB7XG4gICAgW1Jlc291cmNlSW1wYWN0Lk5PX0NIQU5HRV06IDAsXG4gICAgW1Jlc291cmNlSW1wYWN0LldJTExfSU1QT1JUXTogMCxcbiAgICBbUmVzb3VyY2VJbXBhY3QuV0lMTF9VUERBVEVdOiAxLFxuICAgIFtSZXNvdXJjZUltcGFjdC5XSUxMX0NSRUFURV06IDIsXG4gICAgW1Jlc291cmNlSW1wYWN0LldJTExfT1JQSEFOXTogMyxcbiAgICBbUmVzb3VyY2VJbXBhY3QuTUFZX1JFUExBQ0VdOiA0LFxuICAgIFtSZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0VdOiA1LFxuICAgIFtSZXNvdXJjZUltcGFjdC5XSUxMX0RFU1RST1ldOiA2LFxuICB9O1xuICByZXR1cm4gYmFkbmVzc1tvbmVdID4gYmFkbmVzc1t0d29dID8gb25lIDogdHdvO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlIHtcbiAgVHlwZTogc3RyaW5nO1xuICBQcm9wZXJ0aWVzPzogeyBbbmFtZTogc3RyaW5nXTogYW55IH07XG5cbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG4vKipcbiAqIENoYW5nZSB0byBhIHNpbmdsZSByZXNvdXJjZSBiZXR3ZWVuIHR3byBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZXNcbiAqXG4gKiBUaGlzIGNsYXNzIGNhbiBiZSBtdXRhdGVkIGFmdGVyIGNvbnN0cnVjdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlc291cmNlRGlmZmVyZW5jZSBpbXBsZW1lbnRzIElEaWZmZXJlbmNlPFJlc291cmNlPiB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcmVzb3VyY2Ugd2FzIGFkZGVkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXNBZGRpdGlvbjogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHJlc291cmNlIHdhcyByZW1vdmVkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXNSZW1vdmFsOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcmVzb3VyY2Ugd2FzIGltcG9ydGVkXG4gICAqL1xuICBwdWJsaWMgaXNJbXBvcnQ/OiBib29sZWFuO1xuXG4gIC8qKiBQcm9wZXJ0eS1sZXZlbCBjaGFuZ2VzIG9uIHRoZSByZXNvdXJjZSAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3BlcnR5RGlmZnM6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4gfTtcblxuICAvKiogQ2hhbmdlcyB0byBub24tcHJvcGVydHkgbGV2ZWwgYXR0cmlidXRlcyBvZiB0aGUgcmVzb3VyY2UgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBvdGhlckRpZmZzOiB7IFtrZXk6IHN0cmluZ106IERpZmZlcmVuY2U8YW55PiB9O1xuXG4gIC8qKiBUaGUgcmVzb3VyY2UgdHlwZSAob3Igb2xkIGFuZCBuZXcgdHlwZSBpZiBpdCBoYXMgY2hhbmdlZCkgKi9cbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZVR5cGVzOiB7IHJlYWRvbmx5IG9sZFR5cGU/OiBzdHJpbmc7IHJlYWRvbmx5IG5ld1R5cGU/OiBzdHJpbmcgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgb2xkVmFsdWU6IFJlc291cmNlIHwgdW5kZWZpbmVkLFxuICAgIHB1YmxpYyByZWFkb25seSBuZXdWYWx1ZTogUmVzb3VyY2UgfCB1bmRlZmluZWQsXG4gICAgYXJnczoge1xuICAgICAgcmVzb3VyY2VUeXBlOiB7IG9sZFR5cGU/OiBzdHJpbmc7IG5ld1R5cGU/OiBzdHJpbmcgfTtcbiAgICAgIHByb3BlcnR5RGlmZnM6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4gfTtcbiAgICAgIG90aGVyRGlmZnM6IHsgW2tleTogc3RyaW5nXTogRGlmZmVyZW5jZTxhbnk+IH07XG4gICAgfSxcbiAgKSB7XG4gICAgdGhpcy5yZXNvdXJjZVR5cGVzID0gYXJncy5yZXNvdXJjZVR5cGU7XG4gICAgdGhpcy5wcm9wZXJ0eURpZmZzID0gYXJncy5wcm9wZXJ0eURpZmZzO1xuICAgIHRoaXMub3RoZXJEaWZmcyA9IGFyZ3Mub3RoZXJEaWZmcztcblxuICAgIHRoaXMuaXNBZGRpdGlvbiA9IG9sZFZhbHVlID09PSB1bmRlZmluZWQ7XG4gICAgdGhpcy5pc1JlbW92YWwgPSBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkO1xuICAgIHRoaXMuaXNJbXBvcnQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9sZFByb3BlcnRpZXMoKTogUHJvcGVydHlNYXAgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm9sZFZhbHVlICYmIHRoaXMub2xkVmFsdWUuUHJvcGVydGllcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmV3UHJvcGVydGllcygpOiBQcm9wZXJ0eU1hcCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubmV3VmFsdWUgJiYgdGhpcy5uZXdWYWx1ZS5Qcm9wZXJ0aWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyByZXNvdXJjZSB3YXMgbW9kaWZpZWQgYXQgYWxsXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzRGlmZmVyZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpZmZlcmVuY2VDb3VudCA+IDAgfHwgdGhpcy5vbGRSZXNvdXJjZVR5cGUgIT09IHRoaXMubmV3UmVzb3VyY2VUeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJlc291cmNlIHdhcyB1cGRhdGVkIGluLXBsYWNlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzVXBkYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRGlmZmVyZW50ICYmICF0aGlzLmlzQWRkaXRpb24gJiYgIXRoaXMuaXNSZW1vdmFsO1xuICB9XG5cbiAgcHVibGljIGdldCBvbGRSZXNvdXJjZVR5cGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5ld1Jlc291cmNlVHlwZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGwgYWN0dWFsIHByb3BlcnR5IHVwZGF0ZXNcbiAgICovXG4gIHB1YmxpYyBnZXQgcHJvcGVydHlVcGRhdGVzKCk6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4gfSB7XG4gICAgcmV0dXJuIG9ubHlDaGFuZ2VzKHRoaXMucHJvcGVydHlEaWZmcyk7XG4gIH1cblxuICAvKipcbiAgICogQWxsIGFjdHVhbCBcIm90aGVyXCIgdXBkYXRlc1xuICAgKi9cbiAgcHVibGljIGdldCBvdGhlckNoYW5nZXMoKTogeyBba2V5OiBzdHJpbmddOiBEaWZmZXJlbmNlPGFueT4gfSB7XG4gICAgcmV0dXJuIG9ubHlDaGFuZ2VzKHRoaXMub3RoZXJEaWZmcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIHJlc291cmNlIHR5cGUgd2FzIGNoYW5nZWQgaW4gdGhpcyBkaWZmXG4gICAqXG4gICAqIFRoaXMgaXMgbm90IGEgdmFsaWQgb3BlcmF0aW9uIGluIENsb3VkRm9ybWF0aW9uIGJ1dCB0byBiZSBkZWZlbnNpdmUgd2UncmUgZ29pbmdcbiAgICogdG8gYmUgYXdhcmUgb2YgaXQgYW55d2F5LlxuICAgKi9cbiAgcHVibGljIGdldCByZXNvdXJjZVR5cGVDaGFuZ2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGUgIT09IHVuZGVmaW5lZFxuICAgICAgICAmJiB0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICYmIHRoaXMucmVzb3VyY2VUeXBlcy5vbGRUeXBlICE9PSB0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSByZXNvdXJjZSB0eXBlIGlmIGl0IHdhcyB1bmNoYW5nZWRcbiAgICpcbiAgICogSWYgdGhlIHJlc291cmNlIHR5cGUgd2FzIGNoYW5nZWQsIGl0J3MgYW4gZXJyb3IgdG8gY2FsbCB0aGlzLlxuICAgKi9cbiAgcHVibGljIGdldCByZXNvdXJjZVR5cGUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5yZXNvdXJjZVR5cGVDaGFuZ2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBnZXQgLnJlc291cmNlVHlwZSwgYmVjYXVzZSB0aGUgdHlwZSB3YXMgY2hhbmdlZCcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGUgfHwgdGhpcy5yZXNvdXJjZVR5cGVzLm5ld1R5cGUhO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgYSBQcm9wZXJ0eUNoYW5nZSBpbiB0aGlzIG9iamVjdFxuICAgKlxuICAgKiBUaGlzIGFmZmVjdHMgdGhlIHByb3BlcnR5IGRpZmYgYXMgaXQgaXMgc3VtbWFyaXplZCB0byB1c2VycywgYnV0IGl0IERPRVNcbiAgICogTk9UIGFmZmVjdCBlaXRoZXIgdGhlIFwib2xkVmFsdWVcIiBvciBcIm5ld1ZhbHVlXCIgdmFsdWVzOyB0aG9zZSBzdGlsbCBjb250YWluXG4gICAqIHRoZSBhY3R1YWwgdGVtcGxhdGUgdmFsdWVzIGFzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyICh0aGV5IG1pZ2h0IHN0aWxsIGJlXG4gICAqIHVzZWQgZm9yIGRvd25zdHJlYW0gcHJvY2Vzc2luZykuXG4gICAqL1xuICBwdWJsaWMgc2V0UHJvcGVydHlDaGFuZ2UocHJvcGVydHlOYW1lOiBzdHJpbmcsIGNoYW5nZTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pIHtcbiAgICB0aGlzLnByb3BlcnR5RGlmZnNbcHJvcGVydHlOYW1lXSA9IGNoYW5nZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlIGEgT3RoZXJDaGFuZ2UgaW4gdGhpcyBvYmplY3RcbiAgICpcbiAgICogVGhpcyBhZmZlY3RzIHRoZSBwcm9wZXJ0eSBkaWZmIGFzIGl0IGlzIHN1bW1hcml6ZWQgdG8gdXNlcnMsIGJ1dCBpdCBET0VTXG4gICAqIE5PVCBhZmZlY3QgZWl0aGVyIHRoZSBcIm9sZFZhbHVlXCIgb3IgXCJuZXdWYWx1ZVwiIHZhbHVlczsgdGhvc2Ugc3RpbGwgY29udGFpblxuICAgKiB0aGUgYWN0dWFsIHRlbXBsYXRlIHZhbHVlcyBhcyBwcm92aWRlZCBieSB0aGUgdXNlciAodGhleSBtaWdodCBzdGlsbCBiZVxuICAgKiB1c2VkIGZvciBkb3duc3RyZWFtIHByb2Nlc3NpbmcpLlxuICAgKi9cbiAgcHVibGljIHNldE90aGVyQ2hhbmdlKG90aGVyTmFtZTogc3RyaW5nLCBjaGFuZ2U6IFByb3BlcnR5RGlmZmVyZW5jZTxhbnk+KSB7XG4gICAgdGhpcy5vdGhlckRpZmZzW290aGVyTmFtZV0gPSBjaGFuZ2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNoYW5nZUltcGFjdCgpOiBSZXNvdXJjZUltcGFjdCB7XG4gICAgaWYgKHRoaXMuaXNJbXBvcnQpIHtcbiAgICAgIHJldHVybiBSZXNvdXJjZUltcGFjdC5XSUxMX0lNUE9SVDtcbiAgICB9XG4gICAgLy8gQ2hlY2sgdGhlIFR5cGUgZmlyc3RcbiAgICBpZiAodGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGUgIT09IHRoaXMucmVzb3VyY2VUeXBlcy5uZXdUeXBlKSB7XG4gICAgICBpZiAodGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGUgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gUmVzb3VyY2VJbXBhY3QuV0lMTF9DUkVBVEU7IH1cbiAgICAgIGlmICh0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9sZFZhbHVlIS5EZWxldGlvblBvbGljeSA9PT0gJ1JldGFpbidcbiAgICAgICAgICA/IFJlc291cmNlSW1wYWN0LldJTExfT1JQSEFOXG4gICAgICAgICAgOiBSZXNvdXJjZUltcGFjdC5XSUxMX0RFU1RST1k7XG4gICAgICB9XG4gICAgICByZXR1cm4gUmVzb3VyY2VJbXBhY3QuV0lMTF9SRVBMQUNFO1xuICAgIH1cblxuICAgIC8vIEJhc2UgaW1wYWN0IChiZWZvcmUgd2UgbWl4IGluIHRoZSB3b3JzdCBvZiB0aGUgcHJvcGVydHkgaW1wYWN0cyk7XG4gICAgLy8gV0lMTF9VUERBVEUgaWYgd2UgaGF2ZSBcIm90aGVyXCIgY2hhbmdlcywgTk9fQ0hBTkdFIGlmIHRoZXJlIGFyZSBubyBcIm90aGVyXCIgY2hhbmdlcy5cbiAgICBjb25zdCBiYXNlSW1wYWN0ID0gT2JqZWN0LmtleXModGhpcy5vdGhlckNoYW5nZXMpLmxlbmd0aCA+IDAgPyBSZXNvdXJjZUltcGFjdC5XSUxMX1VQREFURSA6IFJlc291cmNlSW1wYWN0Lk5PX0NIQU5HRTtcblxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMucHJvcGVydHlEaWZmcylcbiAgICAgIC5tYXAoZWx0ID0+IGVsdC5jaGFuZ2VJbXBhY3QpXG4gICAgICAucmVkdWNlKHdvcnN0SW1wYWN0LCBiYXNlSW1wYWN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb3VudCBvZiBhY3R1YWwgZGlmZmVyZW5jZXMgKG5vdCBvZiBlbGVtZW50cylcbiAgICovXG4gIHB1YmxpYyBnZXQgZGlmZmVyZW5jZUNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5wcm9wZXJ0eVVwZGF0ZXMpLmxlbmd0aFxuICAgICAgKyBPYmplY3QudmFsdWVzKHRoaXMub3RoZXJDaGFuZ2VzKS5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogSW52b2tlIGEgY2FsbGJhY2sgZm9yIGVhY2ggYWN0dWFsIGRpZmZlcmVuY2VcbiAgICovXG4gIHB1YmxpYyBmb3JFYWNoRGlmZmVyZW5jZShjYjogKHR5cGU6ICdQcm9wZXJ0eScgfCAnT3RoZXInLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBEaWZmZXJlbmNlPGFueT4gfCBQcm9wZXJ0eURpZmZlcmVuY2U8YW55PikgPT4gYW55KSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5wcm9wZXJ0eVVwZGF0ZXMpLnNvcnQoKSkge1xuICAgICAgY2IoJ1Byb3BlcnR5Jywga2V5LCB0aGlzLnByb3BlcnR5VXBkYXRlc1trZXldKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5vdGhlckNoYW5nZXMpLnNvcnQoKSkge1xuICAgICAgY2IoJ090aGVyJywga2V5LCB0aGlzLm90aGVyRGlmZnNba2V5XSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb3BlcnR5RGlmZmVyZW5jZTxUPihkaWZmOiBEaWZmZXJlbmNlPFQ+KTogZGlmZiBpcyBQcm9wZXJ0eURpZmZlcmVuY2U8VD4ge1xuICByZXR1cm4gKGRpZmYgYXMgUHJvcGVydHlEaWZmZXJlbmNlPFQ+KS5jaGFuZ2VJbXBhY3QgIT09IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBGaWx0ZXIgYSBtYXAgb2YgSURpZmZlcmVuY2VzIGRvd24gdG8gb25seSByZXRhaW4gdGhlIGFjdHVhbCBjaGFuZ2VzXG4gKi9cbmZ1bmN0aW9uIG9ubHlDaGFuZ2VzPFYsIFQgZXh0ZW5kcyBJRGlmZmVyZW5jZTxWPj4oeHM6IHtba2V5OiBzdHJpbmddOiBUfSk6IHtba2V5OiBzdHJpbmddOiBUfSB7XG4gIGNvbnN0IHJldDogeyBba2V5OiBzdHJpbmddOiBUIH0gPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCBkaWZmXSBvZiBPYmplY3QuZW50cmllcyh4cykpIHtcbiAgICBpZiAoZGlmZi5pc0RpZmZlcmVudCkge1xuICAgICAgcmV0W2tleV0gPSBkaWZmO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmV0O1xufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadResourceModel = exports.mangleLikeCloudFormation = exports.unionOf = exports.diffKeyedEntities = exports.deepEqual = void 0;\nconst aws_service_spec_1 = require(\"@aws-cdk/aws-service-spec\");\n/**\n * Compares two objects for equality, deeply. The function handles arguments that are\n * +null+, +undefined+, arrays and objects. For objects, the function will not take the\n * object prototype into account for the purpose of the comparison, only the values of\n * properties reported by +Object.keys+.\n *\n * If both operands can be parsed to equivalent numbers, will return true.\n * This makes diff consistent with CloudFormation, where a numeric 10 and a literal \"10\"\n * are considered equivalent.\n *\n * @param lvalue the left operand of the equality comparison.\n * @param rvalue the right operand of the equality comparison.\n *\n * @returns +true+ if both +lvalue+ and +rvalue+ are equivalent to each other.\n */\nfunction deepEqual(lvalue, rvalue) {\n if (lvalue === rvalue) {\n return true;\n }\n // CloudFormation allows passing strings into boolean-typed fields\n if (((typeof lvalue === 'string' && typeof rvalue === 'boolean') ||\n (typeof lvalue === 'boolean' && typeof rvalue === 'string')) &&\n lvalue.toString() === rvalue.toString()) {\n return true;\n }\n // allows a numeric 10 and a literal \"10\" to be equivalent;\n // this is consistent with CloudFormation.\n if ((typeof lvalue === 'string' || typeof rvalue === 'string') &&\n safeParseFloat(lvalue) === safeParseFloat(rvalue)) {\n return true;\n }\n if (typeof lvalue !== typeof rvalue) {\n return false;\n }\n if (Array.isArray(lvalue) !== Array.isArray(rvalue)) {\n return false;\n }\n if (Array.isArray(lvalue) /* && Array.isArray(rvalue) */) {\n if (lvalue.length !== rvalue.length) {\n return false;\n }\n for (let i = 0; i < lvalue.length; i++) {\n if (!deepEqual(lvalue[i], rvalue[i])) {\n return false;\n }\n }\n return true;\n }\n if (typeof lvalue === 'object' /* && typeof rvalue === 'object' */) {\n if (lvalue === null || rvalue === null) {\n // If both were null, they'd have been ===\n return false;\n }\n const keys = Object.keys(lvalue);\n if (keys.length !== Object.keys(rvalue).length) {\n return false;\n }\n for (const key of keys) {\n if (!rvalue.hasOwnProperty(key)) {\n return false;\n }\n if (key === 'DependsOn') {\n if (!dependsOnEqual(lvalue[key], rvalue[key])) {\n return false;\n }\n ;\n // check differences other than `DependsOn`\n continue;\n }\n if (!deepEqual(lvalue[key], rvalue[key])) {\n return false;\n }\n }\n return true;\n }\n // Neither object, nor array: I deduce this is primitive type\n // Primitive type and not ===, so I deduce not deepEqual\n return false;\n}\nexports.deepEqual = deepEqual;\n/**\n * Compares two arguments to DependsOn for equality.\n *\n * @param lvalue the left operand of the equality comparison.\n * @param rvalue the right operand of the equality comparison.\n *\n * @returns +true+ if both +lvalue+ and +rvalue+ are equivalent to each other.\n */\nfunction dependsOnEqual(lvalue, rvalue) {\n // allows ['Value'] and 'Value' to be equal\n if (Array.isArray(lvalue) !== Array.isArray(rvalue)) {\n const array = Array.isArray(lvalue) ? lvalue : rvalue;\n const nonArray = Array.isArray(lvalue) ? rvalue : lvalue;\n if (array.length === 1 && deepEqual(array[0], nonArray)) {\n return true;\n }\n return false;\n }\n // allows arrays passed to DependsOn to be equivalent irrespective of element order\n if (Array.isArray(lvalue) && Array.isArray(rvalue)) {\n if (lvalue.length !== rvalue.length) {\n return false;\n }\n for (let i = 0; i < lvalue.length; i++) {\n for (let j = 0; j < lvalue.length; j++) {\n if ((!deepEqual(lvalue[i], rvalue[j])) && (j === lvalue.length - 1)) {\n return false;\n }\n break;\n }\n }\n return true;\n }\n return false;\n}\n/**\n * Produce the differences between two maps, as a map, using a specified diff function.\n *\n * @param oldValue the old map.\n * @param newValue the new map.\n * @param elementDiff the diff function.\n *\n * @returns a map representing the differences between +oldValue+ and +newValue+.\n */\nfunction diffKeyedEntities(oldValue, newValue, elementDiff) {\n const result = {};\n for (const logicalId of unionOf(Object.keys(oldValue || {}), Object.keys(newValue || {}))) {\n const oldElement = oldValue && oldValue[logicalId];\n const newElement = newValue && newValue[logicalId];\n if (oldElement === undefined && newElement === undefined) {\n // Shouldn't happen in reality, but may happen in tests. Skip.\n continue;\n }\n result[logicalId] = elementDiff(oldElement, newElement, logicalId);\n }\n return result;\n}\nexports.diffKeyedEntities = diffKeyedEntities;\n/**\n * Computes the union of two sets of strings.\n *\n * @param lv the left set of strings.\n * @param rv the right set of strings.\n *\n * @returns a new array containing all elemebts from +lv+ and +rv+, with no duplicates.\n */\nfunction unionOf(lv, rv) {\n const result = new Set(lv);\n for (const v of rv) {\n result.add(v);\n }\n return new Array(...result);\n}\nexports.unionOf = unionOf;\n/**\n * GetStackTemplate flattens any codepoint greater than \"\\u7f\" to \"?\". This is\n * true even for codepoints in the supplemental planes which are represented\n * in JS as surrogate pairs, all the way up to \"\\u{10ffff}\".\n *\n * This function implements the same mangling in order to provide diagnostic\n * information in `cdk diff`.\n */\nfunction mangleLikeCloudFormation(payload) {\n return payload.replace(/[\\u{80}-\\u{10ffff}]/gu, '?');\n}\nexports.mangleLikeCloudFormation = mangleLikeCloudFormation;\n/**\n * A parseFloat implementation that does the right thing for\n * strings like '0.0.0'\n * (for which JavaScript's parseFloat() returns 0).\n * We return NaN for all of these strings that do not represent numbers,\n * and so comparing them fails,\n * and doesn't short-circuit the diff logic.\n */\nfunction safeParseFloat(str) {\n return Number(str);\n}\n/**\n * Lazily load the service spec database and cache the loaded db\n*/\nlet DATABASE;\nfunction database() {\n if (!DATABASE) {\n DATABASE = (0, aws_service_spec_1.loadAwsServiceSpecSync)();\n }\n return DATABASE;\n}\n/**\n * Load a Resource model from the Service Spec Database\n *\n * The database is loaded lazily and cached across multiple calls to `loadResourceModel`.\n */\nfunction loadResourceModel(type) {\n return database().lookup('resource', 'cloudFormationType', 'equals', type)[0];\n}\nexports.loadResourceModel = loadResourceModel;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0VBQW1FO0FBR25FOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsU0FBZ0IsU0FBUyxDQUFDLE1BQVcsRUFBRSxNQUFXO0lBQ2hELElBQUksTUFBTSxLQUFLLE1BQU0sRUFBRTtRQUFFLE9BQU8sSUFBSSxDQUFDO0tBQUU7SUFDdkMsa0VBQWtFO0lBQ2xFLElBQUksQ0FBQyxDQUFDLE9BQU8sTUFBTSxLQUFLLFFBQVEsSUFBSSxPQUFPLE1BQU0sS0FBSyxTQUFTLENBQUM7UUFDNUQsQ0FBQyxPQUFPLE1BQU0sS0FBSyxTQUFTLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUM7UUFDNUQsTUFBTSxDQUFDLFFBQVEsRUFBRSxLQUFLLE1BQU0sQ0FBQyxRQUFRLEVBQUUsRUFBRTtRQUMzQyxPQUFPLElBQUksQ0FBQztLQUNiO0lBQ0QsMkRBQTJEO0lBQzNELDBDQUEwQztJQUMxQyxJQUFJLENBQUMsT0FBTyxNQUFNLEtBQUssUUFBUSxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQztRQUMxRCxjQUFjLENBQUMsTUFBTSxDQUFDLEtBQUssY0FBYyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3JELE9BQU8sSUFBSSxDQUFDO0tBQ2I7SUFDRCxJQUFJLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxFQUFFO1FBQUUsT0FBTyxLQUFLLENBQUM7S0FBRTtJQUN0RCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRTtRQUFFLE9BQU8sS0FBSyxDQUFDO0tBQUU7SUFDdEUsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLDhCQUE4QixFQUFFO1FBQ3hELElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsTUFB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RUFBMEI7SUFDNUUsTUFBTSxNQUFNLEdBQUcsSUFBSSxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDM0IsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDbEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUNmO0lBQ0QsT0FBTyxJQUFJLEtBQUssQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0FBQzlCLENBQUM7QUFORCwwQkFNQztBQUVEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQix3QkFBd0IsQ0FBQyxPQUFlO0lBQ3RELE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRkQsNERBRUM7QUFFRDs7Ozs7OztHQU9HO0FBQ0gsU0FBUyxjQUFjLENBQUMsR0FBVztJQUNqQyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNyQixDQUFDO0FBRUQ7O0VBRUU7QUFDRixJQUFJLFFBQWtDLENBQUM7QUFDdkMsU0FBUyxRQUFRO0lBQ2YsSUFBSSxDQUFDLFFBQVEsRUFBRTtRQUNiLFFBQVEsR0FBRyxJQUFBLHlDQUFzQixHQUFFLENBQUM7S0FDckM7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDO0FBRUQ7Ozs7R0FJRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLElBQVk7SUFDNUMsT0FBTyxRQUFRLEVBQUUsQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoRixDQUFDO0FBRkQsOENBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsb2FkQXdzU2VydmljZVNwZWNTeW5jIH0gZnJvbSAnQGF3cy1jZGsvYXdzLXNlcnZpY2Utc3BlYyc7XG5pbXBvcnQgeyBSZXNvdXJjZSwgU3BlY0RhdGFiYXNlIH0gZnJvbSAnQGF3cy1jZGsvc2VydmljZS1zcGVjLXR5cGVzJztcblxuLyoqXG4gKiBDb21wYXJlcyB0d28gb2JqZWN0cyBmb3IgZXF1YWxpdHksIGRlZXBseS4gVGhlIGZ1bmN0aW9uIGhhbmRsZXMgYXJndW1lbnRzIHRoYXQgYXJlXG4gKiArbnVsbCssICt1bmRlZmluZWQrLCBhcnJheXMgYW5kIG9iamVjdHMuIEZvciBvYmplY3RzLCB0aGUgZnVuY3Rpb24gd2lsbCBub3QgdGFrZSB0aGVcbiAqIG9iamVjdCBwcm90b3R5cGUgaW50byBhY2NvdW50IGZvciB0aGUgcHVycG9zZSBvZiB0aGUgY29tcGFyaXNvbiwgb25seSB0aGUgdmFsdWVzIG9mXG4gKiBwcm9wZXJ0aWVzIHJlcG9ydGVkIGJ5ICtPYmplY3Qua2V5cysuXG4gKlxuICogSWYgYm90aCBvcGVyYW5kcyBjYW4gYmUgcGFyc2VkIHRvIGVxdWl2YWxlbnQgbnVtYmVycywgd2lsbCByZXR1cm4gdHJ1ZS5cbiAqIFRoaXMgbWFrZXMgZGlmZiBjb25zaXN0ZW50IHdpdGggQ2xvdWRGb3JtYXRpb24sIHdoZXJlIGEgbnVtZXJpYyAxMCBhbmQgYSBsaXRlcmFsIFwiMTBcIlxuICogYXJlIGNvbnNpZGVyZWQgZXF1aXZhbGVudC5cbiAqXG4gKiBAcGFyYW0gbHZhbHVlIHRoZSBsZWZ0IG9wZXJhbmQgb2YgdGhlIGVxdWFsaXR5IGNvbXBhcmlzb24uXG4gKiBAcGFyYW0gcnZhbHVlIHRoZSByaWdodCBvcGVyYW5kIG9mIHRoZSBlcXVhbGl0eSBjb21wYXJpc29uLlxuICpcbiAqIEByZXR1cm5zICt0cnVlKyBpZiBib3RoICtsdmFsdWUrIGFuZCArcnZhbHVlKyBhcmUgZXF1aXZhbGVudCB0byBlYWNoIG90aGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVlcEVxdWFsKGx2YWx1ZTogYW55LCBydmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICBpZiAobHZhbHVlID09PSBydmFsdWUpIHsgcmV0dXJuIHRydWU7IH1cbiAgLy8gQ2xvdWRGb3JtYXRpb24gYWxsb3dzIHBhc3Npbmcgc3RyaW5ncyBpbnRvIGJvb2xlYW4tdHlwZWQgZmllbGRzXG4gIGlmICgoKHR5cGVvZiBsdmFsdWUgPT09ICdzdHJpbmcnICYmIHR5cGVvZiBydmFsdWUgPT09ICdib29sZWFuJykgfHxcbiAgICAgICh0eXBlb2YgbHZhbHVlID09PSAnYm9vbGVhbicgJiYgdHlwZW9mIHJ2YWx1ZSA9PT0gJ3N0cmluZycpKSAmJlxuICAgICAgbHZhbHVlLnRvU3RyaW5nKCkgPT09IHJ2YWx1ZS50b1N0cmluZygpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy8gYWxsb3dzIGEgbnVtZXJpYyAxMCBhbmQgYSBsaXRlcmFsIFwiMTBcIiB0byBiZSBlcXVpdmFsZW50O1xuICAvLyB0aGlzIGlzIGNvbnNpc3RlbnQgd2l0aCBDbG91ZEZvcm1hdGlvbi5cbiAgaWYgKCh0eXBlb2YgbHZhbHVlID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgcnZhbHVlID09PSAnc3RyaW5nJykgJiZcbiAgICAgIHNhZmVQYXJzZUZsb2F0KGx2YWx1ZSkgPT09IHNhZmVQYXJzZUZsb2F0KHJ2YWx1ZSkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodHlwZW9mIGx2YWx1ZSAhPT0gdHlwZW9mIHJ2YWx1ZSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgaWYgKEFycmF5LmlzQXJyYXkobHZhbHVlKSAhPT0gQXJyYXkuaXNBcnJheShydmFsdWUpKSB7IHJldHVybiBmYWxzZTsgfVxuICBpZiAoQXJyYXkuaXNBcnJheShsdmFsdWUpIC8qICYmIEFycmF5LmlzQXJyYXkocnZhbHVlKSAqLykge1xuICAgIGlmIChsdmFsdWUubGVuZ3RoICE9PSBydmFsdWUubGVuZ3RoKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIGZvciAobGV0IGkgPSAwIDsgaSA8IGx2YWx1ZS5sZW5ndGggOyBpKyspIHtcbiAgICAgIGlmICghZGVlcEVxdWFsKGx2YWx1ZVtpXSwgcnZhbHVlW2ldKSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHR5cGVvZiBsdmFsdWUgPT09ICdvYmplY3QnIC8qICYmIHR5cGVvZiBydmFsdWUgPT09ICdvYmplY3QnICovKSB7XG4gICAgaWYgKGx2YWx1ZSA9PT0gbnVsbCB8fCBydmFsdWUgPT09IG51bGwpIHtcbiAgICAgIC8vIElmIGJvdGggd2VyZSBudWxsLCB0aGV5J2QgaGF2ZSBiZWVuID09PVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMobHZhbHVlKTtcbiAgICBpZiAoa2V5cy5sZW5ndGggIT09IE9iamVjdC5rZXlzKHJ2YWx1ZSkubGVuZ3RoKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICAgIGlmICghcnZhbHVlLmhhc093blByb3BlcnR5KGtleSkpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgICBpZiAoa2V5ID09PSAnRGVwZW5kc09uJykge1xuICAgICAgICBpZiAoIWRlcGVuZHNPbkVxdWFsKGx2YWx1ZVtrZXldLCBydmFsdWVba2V5XSkpIHsgcmV0dXJuIGZhbHNlOyB9O1xuICAgICAgICAvLyBjaGVjayBkaWZmZXJlbmNlcyBvdGhlciB0aGFuIGBEZXBlbmRzT25gXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFkZWVwRXF1YWwobHZhbHVlW2tleV0sIHJ2YWx1ZVtrZXldKSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgLy8gTmVpdGhlciBvYmplY3QsIG5vciBhcnJheTogSSBkZWR1Y2UgdGhpcyBpcyBwcmltaXRpdmUgdHlwZVxuICAvLyBQcmltaXRpdmUgdHlwZSBhbmQgbm90ID09PSwgc28gSSBkZWR1Y2Ugbm90IGRlZXBFcXVhbFxuICByZXR1cm4gZmFsc2U7XG59XG5cbi8qKlxuICogQ29tcGFyZXMgdHdvIGFyZ3VtZW50cyB0byBEZXBlbmRzT24gZm9yIGVxdWFsaXR5LlxuICpcbiAqIEBwYXJhbSBsdmFsdWUgdGhlIGxlZnQgb3BlcmFuZCBvZiB0aGUgZXF1YWxpdHkgY29tcGFyaXNvbi5cbiAqIEBwYXJhbSBydmFsdWUgdGhlIHJpZ2h0IG9wZXJhbmQgb2YgdGhlIGVxdWFsaXR5IGNvbXBhcmlzb24uXG4gKlxuICogQHJldHVybnMgK3RydWUrIGlmIGJvdGggK2x2YWx1ZSsgYW5kICtydmFsdWUrIGFyZSBlcXVpdmFsZW50IHRvIGVhY2ggb3RoZXIuXG4gKi9cbmZ1bmN0aW9uIGRlcGVuZHNPbkVxdWFsKGx2YWx1ZTogYW55LCBydmFsdWU6IGFueSk6IGJvb2xlYW4ge1xuICAvLyBhbGxvd3MgWydWYWx1ZSddIGFuZCAnVmFsdWUnIHRvIGJlIGVxdWFsXG4gIGlmIChBcnJheS5pc0FycmF5KGx2YWx1ZSkgIT09IEFycmF5LmlzQXJyYXkocnZhbHVlKSkge1xuICAgIGNvbnN0IGFycmF5ID0gQXJyYXkuaXNBcnJheShsdmFsdWUpID8gbHZhbHVlIDogcnZhbHVlO1xuICAgIGNvbnN0IG5vbkFycmF5ID0gQXJyYXkuaXNBcnJheShsdmFsdWUpID8gcnZhbHVlIDogbHZhbHVlO1xuXG4gICAgaWYgKGFycmF5Lmxlbmd0aCA9PT0gMSAmJiBkZWVwRXF1YWwoYXJyYXlbMF0sIG5vbkFycmF5KSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8vIGFsbG93cyBhcnJheXMgcGFzc2VkIHRvIERlcGVuZHNPbiB0byBiZSBlcXVpdmFsZW50IGlycmVzcGVjdGl2ZSBvZiBlbGVtZW50IG9yZGVyXG4gIGlmIChBcnJheS5pc0FycmF5KGx2YWx1ZSkgJiYgQXJyYXkuaXNBcnJheShydmFsdWUpKSB7XG4gICAgaWYgKGx2YWx1ZS5sZW5ndGggIT09IHJ2YWx1ZS5sZW5ndGgpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgZm9yIChsZXQgaSA9IDAgOyBpIDwgbHZhbHVlLmxlbmd0aCA7IGkrKykge1xuICAgICAgZm9yIChsZXQgaiA9IDAgOyBqIDwgbHZhbHVlLmxlbmd0aCA7IGorKykge1xuICAgICAgICBpZiAoKCFkZWVwRXF1YWwobHZhbHVlW2ldLCBydmFsdWVbal0pKSAmJiAoaiA9PT0gbHZhbHVlLmxlbmd0aCAtIDEpKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBQcm9kdWNlIHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHR3byBtYXBzLCBhcyBhIG1hcCwgdXNpbmcgYSBzcGVjaWZpZWQgZGlmZiBmdW5jdGlvbi5cbiAqXG4gKiBAcGFyYW0gb2xkVmFsdWUgIHRoZSBvbGQgbWFwLlxuICogQHBhcmFtIG5ld1ZhbHVlICB0aGUgbmV3IG1hcC5cbiAqIEBwYXJhbSBlbGVtZW50RGlmZiB0aGUgZGlmZiBmdW5jdGlvbi5cbiAqXG4gKiBAcmV0dXJucyBhIG1hcCByZXByZXNlbnRpbmcgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gK29sZFZhbHVlKyBhbmQgK25ld1ZhbHVlKy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZLZXllZEVudGl0aWVzPFQ+KFxuICBvbGRWYWx1ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IHVuZGVmaW5lZCxcbiAgbmV3VmFsdWU6IHsgW2tleTogc3RyaW5nXTogYW55IH0gfCB1bmRlZmluZWQsXG4gIGVsZW1lbnREaWZmOiAob2xkRWxlbWVudDogYW55LCBuZXdFbGVtZW50OiBhbnksIGtleTogc3RyaW5nKSA9PiBUKTogeyBbbmFtZTogc3RyaW5nXTogVCB9IHtcbiAgY29uc3QgcmVzdWx0OiB7IFtuYW1lOiBzdHJpbmddOiBUIH0gPSB7fTtcbiAgZm9yIChjb25zdCBsb2dpY2FsSWQgb2YgdW5pb25PZihPYmplY3Qua2V5cyhvbGRWYWx1ZSB8fCB7fSksIE9iamVjdC5rZXlzKG5ld1ZhbHVlIHx8IHt9KSkpIHtcbiAgICBjb25zdCBvbGRFbGVtZW50ID0gb2xkVmFsdWUgJiYgb2xkVmFsdWVbbG9naWNhbElkXTtcbiAgICBjb25zdCBuZXdFbGVtZW50ID0gbmV3VmFsdWUgJiYgbmV3VmFsdWVbbG9naWNhbElkXTtcblxuICAgIGlmIChvbGRFbGVtZW50ID09PSB1bmRlZmluZWQgJiYgbmV3RWxlbWVudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBTaG91bGRuJ3QgaGFwcGVuIGluIHJlYWxpdHksIGJ1dCBtYXkgaGFwcGVuIGluIHRlc3RzLiBTa2lwLlxuICAgICAgY29udGludWU7XG4gICAgfVxuXG4gICAgcmVzdWx0W2xvZ2ljYWxJZF0gPSBlbGVtZW50RGlmZihvbGRFbGVtZW50LCBuZXdFbGVtZW50LCBsb2dpY2FsSWQpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIHVuaW9uIG9mIHR3byBzZXRzIG9mIHN0cmluZ3MuXG4gKlxuICogQHBhcmFtIGx2IHRoZSBsZWZ0IHNldCBvZiBzdHJpbmdzLlxuICogQHBhcmFtIHJ2IHRoZSByaWdodCBzZXQgb2Ygc3RyaW5ncy5cbiAqXG4gKiBAcmV0dXJucyBhIG5ldyBhcnJheSBjb250YWluaW5nIGFsbCBlbGVtZWJ0cyBmcm9tICtsdisgYW5kICtydissIHdpdGggbm8gZHVwbGljYXRlcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHVuaW9uT2YobHY6IHN0cmluZ1tdIHwgU2V0PHN0cmluZz4sIHJ2OiBzdHJpbmdbXSB8IFNldDxzdHJpbmc+KTogc3RyaW5nW10ge1xuICBjb25zdCByZXN1bHQgPSBuZXcgU2V0KGx2KTtcbiAgZm9yIChjb25zdCB2IG9mIHJ2KSB7XG4gICAgcmVzdWx0LmFkZCh2KTtcbiAgfVxuICByZXR1cm4gbmV3IEFycmF5KC4uLnJlc3VsdCk7XG59XG5cbi8qKlxuICogR2V0U3RhY2tUZW1wbGF0ZSBmbGF0dGVucyBhbnkgY29kZXBvaW50IGdyZWF0ZXIgdGhhbiBcIlxcdTdmXCIgdG8gXCI/XCIuIFRoaXMgaXNcbiAqIHRydWUgZXZlbiBmb3IgY29kZXBvaW50cyBpbiB0aGUgc3VwcGxlbWVudGFsIHBsYW5lcyB3aGljaCBhcmUgcmVwcmVzZW50ZWRcbiAqIGluIEpTIGFzIHN1cnJvZ2F0ZSBwYWlycywgYWxsIHRoZSB3YXkgdXAgdG8gXCJcXHV7MTBmZmZmfVwiLlxuICpcbiAqIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyB0aGUgc2FtZSBtYW5nbGluZyBpbiBvcmRlciB0byBwcm92aWRlIGRpYWdub3N0aWNcbiAqIGluZm9ybWF0aW9uIGluIGBjZGsgZGlmZmAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYW5nbGVMaWtlQ2xvdWRGb3JtYXRpb24ocGF5bG9hZDogc3RyaW5nKSB7XG4gIHJldHVybiBwYXlsb2FkLnJlcGxhY2UoL1tcXHV7ODB9LVxcdXsxMGZmZmZ9XS9ndSwgJz8nKTtcbn1cblxuLyoqXG4gKiBBIHBhcnNlRmxvYXQgaW1wbGVtZW50YXRpb24gdGhhdCBkb2VzIHRoZSByaWdodCB0aGluZyBmb3JcbiAqIHN0cmluZ3MgbGlrZSAnMC4wLjAnXG4gKiAoZm9yIHdoaWNoIEphdmFTY3JpcHQncyBwYXJzZUZsb2F0KCkgcmV0dXJucyAwKS5cbiAqIFdlIHJldHVybiBOYU4gZm9yIGFsbCBvZiB0aGVzZSBzdHJpbmdzIHRoYXQgZG8gbm90IHJlcHJlc2VudCBudW1iZXJzLFxuICogYW5kIHNvIGNvbXBhcmluZyB0aGVtIGZhaWxzLFxuICogYW5kIGRvZXNuJ3Qgc2hvcnQtY2lyY3VpdCB0aGUgZGlmZiBsb2dpYy5cbiAqL1xuZnVuY3Rpb24gc2FmZVBhcnNlRmxvYXQoc3RyOiBzdHJpbmcpOiBudW1iZXIge1xuICByZXR1cm4gTnVtYmVyKHN0cik7XG59XG5cbi8qKlxuICogTGF6aWx5IGxvYWQgdGhlIHNlcnZpY2Ugc3BlYyBkYXRhYmFzZSBhbmQgY2FjaGUgdGhlIGxvYWRlZCBkYlxuKi9cbmxldCBEQVRBQkFTRTogU3BlY0RhdGFiYXNlIHwgdW5kZWZpbmVkO1xuZnVuY3Rpb24gZGF0YWJhc2UoKTogU3BlY0RhdGFiYXNlIHtcbiAgaWYgKCFEQVRBQkFTRSkge1xuICAgIERBVEFCQVNFID0gbG9hZEF3c1NlcnZpY2VTcGVjU3luYygpO1xuICB9XG4gIHJldHVybiBEQVRBQkFTRTtcbn1cblxuLyoqXG4gKiBMb2FkIGEgUmVzb3VyY2UgbW9kZWwgZnJvbSB0aGUgU2VydmljZSBTcGVjIERhdGFiYXNlXG4gKlxuICogVGhlIGRhdGFiYXNlIGlzIGxvYWRlZCBsYXppbHkgYW5kIGNhY2hlZCBhY3Jvc3MgbXVsdGlwbGUgY2FsbHMgdG8gYGxvYWRSZXNvdXJjZU1vZGVsYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvYWRSZXNvdXJjZU1vZGVsKHR5cGU6IHN0cmluZyk6IFJlc291cmNlIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIGRhdGFiYXNlKCkubG9va3VwKCdyZXNvdXJjZScsICdjbG91ZEZvcm1hdGlvblR5cGUnLCAnZXF1YWxzJywgdHlwZSlbMF07XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiffableCollection = void 0;\n/**\n * Calculate differences of immutable elements\n */\nclass DiffableCollection {\n constructor() {\n this.additions = [];\n this.removals = [];\n this.oldElements = [];\n this.newElements = [];\n }\n addOld(...elements) {\n this.oldElements.push(...elements);\n }\n addNew(...elements) {\n this.newElements.push(...elements);\n }\n calculateDiff() {\n this.additions.push(...difference(this.newElements, this.oldElements));\n this.removals.push(...difference(this.oldElements, this.newElements));\n }\n get hasChanges() {\n return this.additions.length + this.removals.length > 0;\n }\n get hasAdditions() {\n return this.additions.length > 0;\n }\n get hasRemovals() {\n return this.removals.length > 0;\n }\n}\nexports.DiffableCollection = DiffableCollection;\n/**\n * Whether a collection contains some element (by value)\n */\nfunction contains(element, xs) {\n return xs.some(x => x.equal(element));\n}\n/**\n * Return collection except for elements\n */\nfunction difference(collection, elements) {\n return collection.filter(x => !contains(x, elements));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZmFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILE1BQWEsa0JBQWtCO0lBQS9CO1FBQ2tCLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFDcEIsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUVsQixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUN0QixnQkFBVyxHQUFRLEVBQUUsQ0FBQztJQTBCekMsQ0FBQztJQXhCUSxNQUFNLENBQUMsR0FBRyxRQUFhO1FBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxHQUFHLFFBQWE7UUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU0sYUFBYTtRQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQUNGO0FBL0JELGdEQStCQztBQVNEOztHQUVHO0FBQ0gsU0FBUyxRQUFRLENBQWtCLE9BQVUsRUFBRSxFQUFPO0lBQ3BELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFVBQVUsQ0FBa0IsVUFBZSxFQUFFLFFBQWE7SUFDakUsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2FsY3VsYXRlIGRpZmZlcmVuY2VzIG9mIGltbXV0YWJsZSBlbGVtZW50c1xuICovXG5leHBvcnQgY2xhc3MgRGlmZmFibGVDb2xsZWN0aW9uPFQgZXh0ZW5kcyBFcTxUPj4ge1xuICBwdWJsaWMgcmVhZG9ubHkgYWRkaXRpb25zOiBUW10gPSBbXTtcbiAgcHVibGljIHJlYWRvbmx5IHJlbW92YWxzOiBUW10gPSBbXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG9sZEVsZW1lbnRzOiBUW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBuZXdFbGVtZW50czogVFtdID0gW107XG5cbiAgcHVibGljIGFkZE9sZCguLi5lbGVtZW50czogVFtdKSB7XG4gICAgdGhpcy5vbGRFbGVtZW50cy5wdXNoKC4uLmVsZW1lbnRzKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGROZXcoLi4uZWxlbWVudHM6IFRbXSkge1xuICAgIHRoaXMubmV3RWxlbWVudHMucHVzaCguLi5lbGVtZW50cyk7XG4gIH1cblxuICBwdWJsaWMgY2FsY3VsYXRlRGlmZigpIHtcbiAgICB0aGlzLmFkZGl0aW9ucy5wdXNoKC4uLmRpZmZlcmVuY2UodGhpcy5uZXdFbGVtZW50cywgdGhpcy5vbGRFbGVtZW50cykpO1xuICAgIHRoaXMucmVtb3ZhbHMucHVzaCguLi5kaWZmZXJlbmNlKHRoaXMub2xkRWxlbWVudHMsIHRoaXMubmV3RWxlbWVudHMpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzQ2hhbmdlcygpIHtcbiAgICByZXR1cm4gdGhpcy5hZGRpdGlvbnMubGVuZ3RoICsgdGhpcy5yZW1vdmFscy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNBZGRpdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkaXRpb25zLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1JlbW92YWxzKCkge1xuICAgIHJldHVybiB0aGlzLnJlbW92YWxzLmxlbmd0aCA+IDA7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGluZ3MgdGhhdCBjYW4gYmUgY29tcGFyZWQgdG8gdGhlbXNlbHZlcyAoYnkgdmFsdWUpXG4gKi9cbmludGVyZmFjZSBFcTxUPiB7XG4gIGVxdWFsKG90aGVyOiBUKTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGEgY29sbGVjdGlvbiBjb250YWlucyBzb21lIGVsZW1lbnQgKGJ5IHZhbHVlKVxuICovXG5mdW5jdGlvbiBjb250YWluczxUIGV4dGVuZHMgRXE8VD4+KGVsZW1lbnQ6IFQsIHhzOiBUW10pOiBib29sZWFuIHtcbiAgcmV0dXJuIHhzLnNvbWUoeCA9PiB4LmVxdWFsKGVsZW1lbnQpKTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gY29sbGVjdGlvbiBleGNlcHQgZm9yIGVsZW1lbnRzXG4gKi9cbmZ1bmN0aW9uIGRpZmZlcmVuY2U8VCBleHRlbmRzIEVxPFQ+Pihjb2xsZWN0aW9uOiBUW10sIGVsZW1lbnRzOiBUW10pOiBUW10ge1xuICByZXR1cm4gY29sbGVjdGlvbi5maWx0ZXIoeCA9PiAhY29udGFpbnMoeCwgZWxlbWVudHMpKTtcbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formatTable = void 0;\nconst chalk = require(\"chalk\");\nconst string_width_1 = require(\"string-width\");\nconst table = require(\"table\");\n/**\n * Render a two-dimensional array to a visually attractive table\n *\n * First row is considered the table header.\n */\nfunction formatTable(cells, columns) {\n return table.table(cells, {\n border: TABLE_BORDER_CHARACTERS,\n columns: buildColumnConfig(columns !== undefined ? calculateColumnWidths(cells, columns) : undefined),\n drawHorizontalLine: (line) => {\n // Numbering like this: [line 0] [header = row[0]] [line 1] [row 1] [line 2] [content 2] [line 3]\n return (line < 2 || line === cells.length) || lineBetween(cells[line - 1], cells[line]);\n },\n }).trimRight();\n}\nexports.formatTable = formatTable;\n/**\n * Whether we should draw a line between two rows\n *\n * Draw horizontal line if 2nd column values are different.\n */\nfunction lineBetween(rowA, rowB) {\n return rowA[1] !== rowB[1];\n}\nfunction buildColumnConfig(widths) {\n if (widths === undefined) {\n return undefined;\n }\n const ret = {};\n widths.forEach((width, i) => {\n if (width === undefined) {\n return;\n }\n ret[i] = { width };\n });\n return ret;\n}\n/**\n * Calculate column widths given a terminal width\n *\n * We do this by calculating a fair share for every column. Extra width smaller\n * than the fair share is evenly distributed over all columns that exceed their\n * fair share.\n */\nfunction calculateColumnWidths(rows, terminalWidth) {\n // The terminal is sometimes reported to be 0. Also if the terminal is VERY narrow,\n // just assume a reasonable minimum size.\n terminalWidth = Math.max(terminalWidth, 40);\n // use 'string-width' to not count ANSI chars as actual character width\n const columns = rows[0].map((_, i) => Math.max(...rows.map(row => (0, string_width_1.default)(String(row[i])))));\n // If we have no terminal width, do nothing\n const contentWidth = terminalWidth - 2 - columns.length * 3;\n // If we don't exceed the terminal width, do nothing\n if (sum(columns) <= contentWidth) {\n return columns;\n }\n const fairShare = Math.min(contentWidth / columns.length);\n const smallColumns = columns.filter(w => w < fairShare);\n let distributableWidth = contentWidth - sum(smallColumns);\n const fairDistributable = Math.floor(distributableWidth / (columns.length - smallColumns.length));\n const ret = new Array();\n for (const requestedWidth of columns) {\n if (requestedWidth < fairShare) {\n // Small column gets what they want\n ret.push(requestedWidth);\n }\n else {\n // Last column gets all remaining, otherwise get fair redist share\n const width = distributableWidth < 2 * fairDistributable ? distributableWidth : fairDistributable;\n ret.push(width);\n distributableWidth -= width;\n }\n }\n return ret;\n}\nfunction sum(xs) {\n let total = 0;\n for (const x of xs) {\n total += x;\n }\n return total;\n}\n// What color the table is going to be\nconst tableColor = chalk.gray;\n// Unicode table characters with a color\nconst TABLE_BORDER_CHARACTERS = {\n topBody: tableColor('─'),\n topJoin: tableColor('┬'),\n topLeft: tableColor('┌'),\n topRight: tableColor('┐'),\n bottomBody: tableColor('─'),\n bottomJoin: tableColor('┴'),\n bottomLeft: tableColor('└'),\n bottomRight: tableColor('┘'),\n bodyLeft: tableColor('│'),\n bodyRight: tableColor('│'),\n bodyJoin: tableColor('│'),\n joinBody: tableColor('─'),\n joinLeft: tableColor('├'),\n joinRight: tableColor('┤'),\n joinJoin: tableColor('┼'),\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZm9ybWF0LXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUMvQiwrQ0FBdUM7QUFDdkMsK0JBQStCO0FBRS9COzs7O0dBSUc7QUFDSCxTQUFnQixXQUFXLENBQUMsS0FBaUIsRUFBRSxPQUEyQjtJQUN4RSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFO1FBQ3hCLE1BQU0sRUFBRSx1QkFBdUI7UUFDL0IsT0FBTyxFQUFFLGlCQUFpQixDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3JHLGtCQUFrQixFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDM0IsaUdBQWlHO1lBQ2pHLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksS0FBSyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDMUYsQ0FBQztLQUNGLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUNqQixDQUFDO0FBVEQsa0NBU0M7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxXQUFXLENBQUMsSUFBYyxFQUFFLElBQWM7SUFDakQsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLE1BQTRCO0lBQ3JELElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtRQUFFLE9BQU8sU0FBUyxDQUFDO0tBQUU7SUFFL0MsTUFBTSxHQUFHLEdBQWdELEVBQUUsQ0FBQztJQUM1RCxNQUFNLENBQUMsT0FBTyxDQUFD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LENBQUM7SUFDeEIsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDekIsVUFBVSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDM0IsVUFBVSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDM0IsVUFBVSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDM0IsV0FBVyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDNUIsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDekIsU0FBUyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDMUIsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDekIsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDekIsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDekIsU0FBUyxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7SUFDMUIsUUFBUSxFQUFFLFVBQVUsQ0FBQyxHQUFHLENBQUM7Q0FDMUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCBzdHJpbmdXaWR0aCBmcm9tICdzdHJpbmctd2lkdGgnO1xuaW1wb3J0ICogYXMgdGFibGUgZnJvbSAndGFibGUnO1xuXG4vKipcbiAqIFJlbmRlciBhIHR3by1kaW1lbnNpb25hbCBhcnJheSB0byBhIHZpc3VhbGx5IGF0dHJhY3RpdmUgdGFibGVcbiAqXG4gKiBGaXJzdCByb3cgaXMgY29uc2lkZXJlZCB0aGUgdGFibGUgaGVhZGVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VGFibGUoY2VsbHM6IHN0cmluZ1tdW10sIGNvbHVtbnM6IG51bWJlciB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gIHJldHVybiB0YWJsZS50YWJsZShjZWxscywge1xuICAgIGJvcmRlcjogVEFCTEVfQk9SREVSX0NIQVJBQ1RFUlMsXG4gICAgY29sdW1uczogYnVpbGRDb2x1bW5Db25maWcoY29sdW1ucyAhPT0gdW5kZWZpbmVkID8gY2FsY3VsYXRlQ29sdW1uV2lkdGhzKGNlbGxzLCBjb2x1bW5zKSA6IHVuZGVmaW5lZCksXG4gICAgZHJhd0hvcml6b250YWxMaW5lOiAobGluZSkgPT4ge1xuICAgICAgLy8gTnVtYmVyaW5nIGxpa2UgdGhpczogW2xpbmUgMF0gW2hlYWRlciA9IHJvd1swXV0gW2xpbmUgMV0gW3JvdyAxXSBbbGluZSAyXSBbY29udGVudCAyXSBbbGluZSAzXVxuICAgICAgcmV0dXJuIChsaW5lIDwgMiB8fCBsaW5lID09PSBjZWxscy5sZW5ndGgpIHx8IGxpbmVCZXR3ZWVuKGNlbGxzW2xpbmUgLSAxXSwgY2VsbHNbbGluZV0pO1xuICAgIH0sXG4gIH0pLnRyaW1SaWdodCgpO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgd2Ugc2hvdWxkIGRyYXcgYSBsaW5lIGJldHdlZW4gdHdvIHJvd3NcbiAqXG4gKiBEcmF3IGhvcml6b250YWwgbGluZSBpZiAybmQgY29sdW1uIHZhbHVlcyBhcmUgZGlmZmVyZW50LlxuICovXG5mdW5jdGlvbiBsaW5lQmV0d2Vlbihyb3dBOiBzdHJpbmdbXSwgcm93Qjogc3RyaW5nW10pIHtcbiAgcmV0dXJuIHJvd0FbMV0gIT09IHJvd0JbMV07XG59XG5cbmZ1bmN0aW9uIGJ1aWxkQ29sdW1uQ29uZmlnKHdpZHRoczogbnVtYmVyW10gfCB1bmRlZmluZWQpOiB7IFtpbmRleDogbnVtYmVyXTogdGFibGUuQ29sdW1uVXNlckNvbmZpZyB9IHwgdW5kZWZpbmVkIHtcbiAgaWYgKHdpZHRocyA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cblxuICBjb25zdCByZXQ6IHsgW2luZGV4OiBudW1iZXJdOiB0YWJsZS5Db2x1bW5Vc2VyQ29uZmlnIH0gPSB7fTtcbiAgd2lkdGhzLmZvckVhY2goKHdpZHRoLCBpKSA9PiB7XG4gICAgaWYgKHdpZHRoID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcmV0W2ldID0geyB3aWR0aCB9O1xuICB9KTtcblxuICByZXR1cm4gcmV0O1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBjb2x1bW4gd2lkdGhzIGdpdmVuIGEgdGVybWluYWwgd2lkdGhcbiAqXG4gKiBXZSBkbyB0aGlzIGJ5IGNhbGN1bGF0aW5nIGEgZmFpciBzaGFyZSBmb3IgZXZlcnkgY29sdW1uLiBFeHRyYSB3aWR0aCBzbWFsbGVyXG4gKiB0aGFuIHRoZSBmYWlyIHNoYXJlIGlzIGV2ZW5seSBkaXN0cmlidXRlZCBvdmVyIGFsbCBjb2x1bW5zIHRoYXQgZXhjZWVkIHRoZWlyXG4gKiBmYWlyIHNoYXJlLlxuICovXG5mdW5jdGlvbiBjYWxjdWxhdGVDb2x1bW5XaWR0aHMocm93czogc3RyaW5nW11bXSwgdGVybWluYWxXaWR0aDogbnVtYmVyKTogbnVtYmVyW10ge1xuICAvLyBUaGUgdGVybWluYWwgaXMgc29tZXRpbWVzIHJlcG9ydGVkIHRvIGJlIDAuIEFsc28gaWYgdGhlIHRlcm1pbmFsIGlzIFZFUlkgbmFycm93LFxuICAvLyBqdXN0IGFzc3VtZSBhIHJlYXNvbmFibGUgbWluaW11bSBzaXplLlxuICB0ZXJtaW5hbFdpZHRoID0gTWF0aC5tYXgodGVybWluYWxXaWR0aCwgNDApO1xuXG4gIC8vIHVzZSAnc3RyaW5nLXdpZHRoJyB0byBub3QgY291bnQgQU5TSSBjaGFycyBhcyBhY3R1YWwgY2hhcmFjdGVyIHdpZHRoXG4gIGNvbnN0IGNvbHVtbnMgPSByb3dzWzBdLm1hcCgoXywgaSkgPT4gTWF0aC5tYXgoLi4ucm93cy5tYXAocm93ID0+IHN0cmluZ1dpZHRoKFN0cmluZyhyb3dbaV0pKSkpKTtcblxuICAvLyBJZiB3ZSBoYXZlIG5vIHRlcm1pbmFsIHdpZHRoLCBkbyBub3RoaW5nXG4gIGNvbnN0IGNvbnRlbnRXaWR0aCA9IHRlcm1pbmFsV2lkdGggLSAyIC0gY29sdW1ucy5sZW5ndGggKiAzO1xuXG4gIC8vIElmIHdlIGRvbid0IGV4Y2VlZCB0aGUgdGVybWluYWwgd2lkdGgsIGRvIG5vdGhpbmdcbiAgaWYgKHN1bShjb2x1bW5zKSA8PSBjb250ZW50V2lkdGgpIHsgcmV0dXJuIGNvbHVtbnM7IH1cblxuICBjb25zdCBmYWlyU2hhcmUgPSBNYXRoLm1pbihjb250ZW50V2lkdGggLyBjb2x1bW5zLmxlbmd0aCk7XG4gIGNvbnN0IHNtYWxsQ29sdW1ucyA9IGNvbHVtbnMuZmlsdGVyKHcgPT4gdyA8IGZhaXJTaGFyZSk7XG5cbiAgbGV0IGRpc3RyaWJ1dGFibGVXaWR0aCA9IGNvbnRlbnRXaWR0aCAtIHN1bShzbWFsbENvbHVtbnMpO1xuICBjb25zdCBmYWlyRGlzdHJpYnV0YWJsZSA9IE1hdGguZmxvb3IoZGlzdHJpYnV0YWJsZVdpZHRoIC8gKGNvbHVtbnMubGVuZ3RoIC0gc21hbGxDb2x1bW5zLmxlbmd0aCkpO1xuXG4gIGNvbnN0IHJldCA9IG5ldyBBcnJheTxudW1iZXI+KCk7XG4gIGZvciAoY29uc3QgcmVxdWVzdGVkV2lkdGggb2YgY29sdW1ucykge1xuICAgIGlmIChyZXF1ZXN0ZWRXaWR0aCA8IGZhaXJTaGFyZSkge1xuICAgICAgLy8gU21hbGwgY29sdW1uIGdldHMgd2hhdCB0aGV5IHdhbnRcbiAgICAgIHJldC5wdXNoKHJlcXVlc3RlZFdpZHRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gTGFzdCBjb2x1bW4gZ2V0cyBhbGwgcmVtYWluaW5nLCBvdGhlcndpc2UgZ2V0IGZhaXIgcmVkaXN0IHNoYXJlXG4gICAgICBjb25zdCB3aWR0aCA9IGRpc3RyaWJ1dGFibGVXaWR0aCA8IDIgKiBmYWlyRGlzdHJpYnV0YWJsZSA/IGRpc3RyaWJ1dGFibGVXaWR0aCA6IGZhaXJEaXN0cmlidXRhYmxlO1xuICAgICAgcmV0LnB1c2god2lkdGgpO1xuICAgICAgZGlzdHJpYnV0YWJsZVdpZHRoIC09IHdpZHRoO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIHN1bSh4czogbnVtYmVyW10pOiBudW1iZXIge1xuICBsZXQgdG90YWwgPSAwO1xuICBmb3IgKGNvbnN0IHggb2YgeHMpIHtcbiAgICB0b3RhbCArPSB4O1xuICB9XG4gIHJldHVybiB0b3RhbDtcbn1cblxuLy8gV2hhdCBjb2xvciB0aGUgdGFibGUgaXMgZ29pbmcgdG8gYmVcbmNvbnN0IHRhYmxlQ29sb3IgPSBjaGFsay5ncmF5O1xuXG4vLyBVbmljb2RlIHRhYmxlIGNoYXJhY3RlcnMgd2l0aCBhIGNvbG9yXG5jb25zdCBUQUJMRV9CT1JERVJfQ0hBUkFDVEVSUyA9IHtcbiAgdG9wQm9keTogdGFibGVDb2xvcign4pSAJyksXG4gIHRvcEpvaW46IHRhYmxlQ29sb3IoJ+KUrCcpLFxuICB0b3BMZWZ0OiB0YWJsZUNvbG9yKCfilIwnKSxcbiAgdG9wUmlnaHQ6IHRhYmxlQ29sb3IoJ+KUkCcpLFxuICBib3R0b21Cb2R5OiB0YWJsZUNvbG9yKCfilIAnKSxcbiAgYm90dG9tSm9pbjogdGFibGVDb2xvcign4pS0JyksXG4gIGJvdHRvbUxlZnQ6IHRhYmxlQ29sb3IoJ+KUlCcpLFxuICBib3R0b21SaWdodDogdGFibGVDb2xvcign4pSYJyksXG4gIGJvZHlMZWZ0OiB0YWJsZUNvbG9yKCfilIInKSxcbiAgYm9keVJpZ2h0OiB0YWJsZUNvbG9yKCfilIInKSxcbiAgYm9keUpvaW46IHRhYmxlQ29sb3IoJ+KUgicpLFxuICBqb2luQm9keTogdGFibGVDb2xvcign4pSAJyksXG4gIGpvaW5MZWZ0OiB0YWJsZUNvbG9yKCfilJwnKSxcbiAgam9pblJpZ2h0OiB0YWJsZUNvbG9yKCfilKQnKSxcbiAgam9pbkpvaW46IHRhYmxlQ29sb3IoJ+KUvCcpLFxufTtcbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formatSecurityChanges = exports.formatDifferences = void 0;\nconst util_1 = require(\"util\");\nconst chalk = require(\"chalk\");\nconst util_2 = require(\"./diff/util\");\nconst diff_template_1 = require(\"./diff-template\");\nconst format_table_1 = require(\"./format-table\");\n// from cx-api\nconst PATH_METADATA_KEY = 'aws:cdk:path';\n/* eslint-disable @typescript-eslint/no-require-imports */\nconst { structuredPatch } = require('diff');\n/**\n * Renders template differences to the process' console.\n *\n * @param stream The IO stream where to output the rendered diff.\n * @param templateDiff TemplateDiff to be rendered to the console.\n * @param logicalToPathMap A map from logical ID to construct path. Useful in\n * case there is no aws:cdk:path metadata in the template.\n * @param context the number of context lines to use in arbitrary JSON diff (defaults to 3).\n */\nfunction formatDifferences(stream, templateDiff, logicalToPathMap = {}, context = 3) {\n const formatter = new Formatter(stream, logicalToPathMap, templateDiff, context);\n if (templateDiff.awsTemplateFormatVersion || templateDiff.transform || templateDiff.description) {\n formatter.printSectionHeader('Template');\n formatter.formatDifference('AWSTemplateFormatVersion', 'AWSTemplateFormatVersion', templateDiff.awsTemplateFormatVersion);\n formatter.formatDifference('Transform', 'Transform', templateDiff.transform);\n formatter.formatDifference('Description', 'Description', templateDiff.description);\n formatter.printSectionFooter();\n }\n formatSecurityChangesWithBanner(formatter, templateDiff);\n formatter.formatSection('Parameters', 'Parameter', templateDiff.parameters);\n formatter.formatSection('Metadata', 'Metadata', templateDiff.metadata);\n formatter.formatSection('Mappings', 'Mapping', templateDiff.mappings);\n formatter.formatSection('Conditions', 'Condition', templateDiff.conditions);\n formatter.formatSection('Resources', 'Resource', templateDiff.resources, formatter.formatResourceDifference.bind(formatter));\n formatter.formatSection('Outputs', 'Output', templateDiff.outputs);\n formatter.formatSection('Other Changes', 'Unknown', templateDiff.unknown);\n}\nexports.formatDifferences = formatDifferences;\n/**\n * Renders a diff of security changes to the given stream\n */\nfunction formatSecurityChanges(stream, templateDiff, logicalToPathMap = {}, context) {\n const formatter = new Formatter(stream, logicalToPathMap, templateDiff, context);\n formatSecurityChangesWithBanner(formatter, templateDiff);\n}\nexports.formatSecurityChanges = formatSecurityChanges;\nfunction formatSecurityChangesWithBanner(formatter, templateDiff) {\n if (!templateDiff.iamChanges.hasChanges && !templateDiff.securityGroupChanges.hasChanges) {\n return;\n }\n formatter.formatIamChanges(templateDiff.iamChanges);\n formatter.formatSecurityGroupChanges(templateDiff.securityGroupChanges);\n formatter.warning('(NOTE: There may be security-related changes not in this list. See https://github.com/aws/aws-cdk/issues/1299)');\n formatter.printSectionFooter();\n}\nconst ADDITION = chalk.green('[+]');\nconst CONTEXT = chalk.grey('[ ]');\nconst UPDATE = chalk.yellow('[~]');\nconst REMOVAL = chalk.red('[-]');\nconst IMPORT = chalk.blue('[←]');\nclass Formatter {\n constructor(stream, logicalToPathMap, diff, context = 3) {\n this.stream = stream;\n this.logicalToPathMap = logicalToPathMap;\n this.context = context;\n // Read additional construct paths from the diff if it is supplied\n if (diff) {\n this.readConstructPathsFrom(diff);\n }\n }\n print(fmt, ...args) {\n this.stream.write(chalk.white((0, util_1.format)(fmt, ...args)) + '\\n');\n }\n warning(fmt, ...args) {\n this.stream.write(chalk.yellow((0, util_1.format)(fmt, ...args)) + '\\n');\n }\n formatSection(title, entryType, collection, formatter = this.formatDifference.bind(this)) {\n if (collection.differenceCount === 0) {\n return;\n }\n this.printSectionHeader(title);\n collection.forEachDifference((id, diff) => formatter(entryType, id, diff));\n this.printSectionFooter();\n }\n printSectionHeader(title) {\n this.print(chalk.underline(chalk.bold(title)));\n }\n printSectionFooter() {\n this.print('');\n }\n /**\n * Print a simple difference for a given named entity.\n *\n * @param logicalId the name of the entity that is different.\n * @param diff the difference to be rendered.\n */\n formatDifference(type, logicalId, diff) {\n if (!diff || !diff.isDifferent) {\n return;\n }\n let value;\n const oldValue = this.formatValue(diff.oldValue, chalk.red);\n const newValue = this.formatValue(diff.newValue, chalk.green);\n if (diff.isAddition) {\n value = newValue;\n }\n else if (diff.isUpdate) {\n value = `${oldValue} to ${newValue}`;\n }\n else if (diff.isRemoval) {\n value = oldValue;\n }\n this.print(`${this.formatPrefix(diff)} ${chalk.cyan(type)} ${this.formatLogicalId(logicalId)}: ${value}`);\n }\n /**\n * Print a resource difference for a given logical ID.\n *\n * @param logicalId the logical ID of the resource that changed.\n * @param diff the change to be rendered.\n */\n formatResourceDifference(_type, logicalId, diff) {\n if (!diff.isDifferent) {\n return;\n }\n const resourceType = diff.isRemoval ? diff.oldResourceType : diff.newResourceType;\n // eslint-disable-next-line max-len\n this.print(`${this.formatResourcePrefix(diff)} ${this.formatValue(resourceType, chalk.cyan)} ${this.formatLogicalId(logicalId)} ${this.formatImpact(diff.changeImpact)}`);\n if (diff.isUpdate) {\n const differenceCount = diff.differenceCount;\n let processedCount = 0;\n diff.forEachDifference((_, name, values) => {\n processedCount += 1;\n this.formatTreeDiff(name, values, processedCount === differenceCount);\n });\n }\n }\n formatResourcePrefix(diff) {\n if (diff.isImport) {\n return IMPORT;\n }\n return this.formatPrefix(diff);\n }\n formatPrefix(diff) {\n if (diff.isAddition) {\n return ADDITION;\n }\n if (diff.isUpdate) {\n return UPDATE;\n }\n if (diff.isRemoval) {\n return REMOVAL;\n }\n return chalk.white('[?]');\n }\n /**\n * @param value the value to be formatted.\n * @param color the color to be used.\n *\n * @returns the formatted string, with color applied.\n */\n formatValue(value, color) {\n if (value == null) {\n return undefined;\n }\n if (typeof value === 'string') {\n return color(value);\n }\n return color(JSON.stringify(value));\n }\n /**\n * @param impact the impact to be formatted\n * @returns a user-friendly, colored string representing the impact.\n */\n formatImpact(impact) {\n switch (impact) {\n case diff_template_1.ResourceImpact.MAY_REPLACE:\n return chalk.italic(chalk.yellow('may be replaced'));\n case diff_template_1.ResourceImpact.WILL_REPLACE:\n return chalk.italic(chalk.bold(chalk.red('replace')));\n case diff_template_1.ResourceImpact.WILL_DESTROY:\n return chalk.italic(chalk.bold(chalk.red('destroy')));\n case diff_template_1.ResourceImpact.WILL_ORPHAN:\n return chalk.italic(chalk.yellow('orphan'));\n case diff_template_1.ResourceImpact.WILL_IMPORT:\n return chalk.italic(chalk.blue('import'));\n case diff_template_1.ResourceImpact.WILL_UPDATE:\n case diff_template_1.ResourceImpact.WILL_CREATE:\n case diff_template_1.ResourceImpact.NO_CHANGE:\n return ''; // no extra info is gained here\n }\n }\n /**\n * Renders a tree of differences under a particular name.\n * @param name the name of the root of the tree.\n * @param diff the difference on the tree.\n * @param last whether this is the last node of a parent tree.\n */\n formatTreeDiff(name, diff, last) {\n let additionalInfo = '';\n if ((0, diff_template_1.isPropertyDifference)(diff)) {\n if (diff.changeImpact === diff_template_1.ResourceImpact.MAY_REPLACE) {\n additionalInfo = ' (may cause replacement)';\n }\n else if (diff.changeImpact === diff_template_1.ResourceImpact.WILL_REPLACE) {\n additionalInfo = ' (requires replacement)';\n }\n }\n this.print(' %s─ %s %s%s', last ? '└' : '├', this.changeTag(diff.oldValue, diff.newValue), name, additionalInfo);\n return this.formatObjectDiff(diff.oldValue, diff.newValue, ` ${last ? ' ' : '│'}`);\n }\n /**\n * Renders the difference between two objects, looking for the differences as deep as possible,\n * and rendering a tree graph of the path until the difference is found.\n *\n * @param oldObject the old object.\n * @param newObject the new object.\n * @param linePrefix a prefix (indent-like) to be used on every line.\n */\n formatObjectDiff(oldObject, newObject, linePrefix) {\n if ((typeof oldObject !== typeof newObject) || Array.isArray(oldObject) || typeof oldObject === 'string' || typeof oldObject === 'number') {\n if (oldObject !== undefined && newObject !== undefined) {\n if (typeof oldObject === 'object' || typeof newObject === 'object') {\n const oldStr = JSON.stringify(oldObject, null, 2);\n const newStr = JSON.stringify(newObject, null, 2);\n const diff = _diffStrings(oldStr, newStr, this.context);\n for (let i = 0; i < diff.length; i++) {\n this.print('%s %s %s', linePrefix, i === 0 ? '└─' : ' ', diff[i]);\n }\n }\n else {\n this.print('%s ├─ %s %s', linePrefix, REMOVAL, this.formatValue(oldObject, chalk.red));\n this.print('%s └─ %s %s', linePrefix, ADDITION, this.formatValue(newObject, chalk.green));\n }\n }\n else if (oldObject !== undefined /* && newObject === undefined */) {\n this.print('%s └─ %s', linePrefix, this.formatValue(oldObject, chalk.red));\n }\n else /* if (oldObject === undefined && newObject !== undefined) */ {\n this.print('%s └─ %s', linePrefix, this.formatValue(newObject, chalk.green));\n }\n return;\n }\n const keySet = new Set(Object.keys(oldObject));\n Object.keys(newObject).forEach(k => keySet.add(k));\n const keys = new Array(...keySet).filter(k => !(0, util_2.deepEqual)(oldObject[k], newObject[k])).sort();\n const lastKey = keys[keys.length - 1];\n for (const key of keys) {\n const oldValue = oldObject[key];\n const newValue = newObject[key];\n const treePrefix = key === lastKey ? '└' : '├';\n if (oldValue !== undefined && newValue !== undefined) {\n this.print('%s %s─ %s %s:', linePrefix, treePrefix, this.changeTag(oldValue, newValue), chalk.blue(`.${key}`));\n this.formatObjectDiff(oldValue, newValue, `${linePrefix} ${key === lastKey ? ' ' : '│'}`);\n }\n else if (oldValue !== undefined /* && newValue === undefined */) {\n this.print('%s %s─ %s Removed: %s', linePrefix, treePrefix, REMOVAL, chalk.blue(`.${key}`));\n }\n else /* if (oldValue === undefined && newValue !== undefined */ {\n this.print('%s %s─ %s Added: %s', linePrefix, treePrefix, ADDITION, chalk.blue(`.${key}`));\n }\n }\n }\n /**\n * @param oldValue the old value of a difference.\n * @param newValue the new value of a difference.\n *\n * @returns a tag to be rendered in the diff, reflecting whether the difference\n * was an ADDITION, UPDATE or REMOVAL.\n */\n changeTag(oldValue, newValue) {\n if (oldValue !== undefined && newValue !== undefined) {\n return UPDATE;\n }\n else if (oldValue !== undefined /* && newValue === undefined*/) {\n return REMOVAL;\n }\n else /* if (oldValue === undefined && newValue !== undefined) */ {\n return ADDITION;\n }\n }\n /**\n * Find 'aws:cdk:path' metadata in the diff and add it to the logicalToPathMap\n *\n * There are multiple sources of logicalID -> path mappings: synth metadata\n * and resource metadata, and we combine all sources into a single map.\n */\n readConstructPathsFrom(templateDiff) {\n for (const [logicalId, resourceDiff] of Object.entries(templateDiff.resources)) {\n if (!resourceDiff) {\n continue;\n }\n const oldPathMetadata = resourceDiff.oldValue?.Metadata?.[PATH_METADATA_KEY];\n if (oldPathMetadata && !(logicalId in this.logicalToPathMap)) {\n this.logicalToPathMap[logicalId] = oldPathMetadata;\n }\n const newPathMetadata = resourceDiff.newValue?.Metadata?.[PATH_METADATA_KEY];\n if (newPathMetadata && !(logicalId in this.logicalToPathMap)) {\n this.logicalToPathMap[logicalId] = newPathMetadata;\n }\n }\n }\n formatLogicalId(logicalId) {\n // if we have a path in the map, return it\n const normalized = this.normalizedLogicalIdPath(logicalId);\n if (normalized) {\n return `${normalized} ${chalk.gray(logicalId)}`;\n }\n return logicalId;\n }\n normalizedLogicalIdPath(logicalId) {\n // if we have a path in the map, return it\n const path = this.logicalToPathMap[logicalId];\n return path ? normalizePath(path) : undefined;\n /**\n * Path is supposed to start with \"/stack-name\". If this is the case (i.e. path has more than\n * two components, we remove the first part. Otherwise, we just use the full path.\n * @param p\n */\n function normalizePath(p) {\n if (p.startsWith('/')) {\n p = p.slice(1);\n }\n let parts = p.split('/');\n if (parts.length > 1) {\n parts = parts.slice(1);\n // remove the last component if it's \"Resource\" or \"Default\" (if we have more than a single component)\n if (parts.length > 1) {\n const last = parts[parts.length - 1];\n if (last === 'Resource' || last === 'Default') {\n parts = parts.slice(0, parts.length - 1);\n }\n }\n p = parts.join('/');\n }\n return p;\n }\n }\n formatIamChanges(changes) {\n if (!changes.hasChanges) {\n return;\n }\n if (changes.statements.hasChanges) {\n this.printSectionHeader('IAM Statement Changes');\n this.print((0, format_table_1.formatTable)(this.deepSubstituteBracedLogicalIds(changes.summarizeStatements()), this.stream.columns));\n }\n if (changes.managedPolicies.hasChanges) {\n this.printSectionHeader('IAM Policy Changes');\n this.print((0, format_table_1.formatTable)(this.deepSubstituteBracedLogicalIds(changes.summarizeManagedPolicies()), this.stream.columns));\n }\n }\n formatSecurityGroupChanges(changes) {\n if (!changes.hasChanges) {\n return;\n }\n this.printSectionHeader('Security Group Changes');\n this.print((0, format_table_1.formatTable)(this.deepSubstituteBracedLogicalIds(changes.summarize()), this.stream.columns));\n }\n deepSubstituteBracedLogicalIds(rows) {\n return rows.map(row => row.map(this.substituteBracedLogicalIds.bind(this)));\n }\n /**\n * Substitute all strings like ${LogId.xxx} with the path instead of the logical ID\n */\n substituteBracedLogicalIds(source) {\n return source.replace(/\\$\\{([^.}]+)(.[^}]+)?\\}/ig, (_match, logId, suffix) => {\n return '${' + (this.normalizedLogicalIdPath(logId) || logId) + (suffix || '') + '}';\n });\n }\n}\n/**\n * Creates a unified diff of two strings.\n *\n * @param oldStr the \"old\" version of the string.\n * @param newStr the \"new\" version of the string.\n * @param context the number of context lines to use in arbitrary JSON diff.\n *\n * @returns an array of diff lines.\n */\nfunction _diffStrings(oldStr, newStr, context) {\n const patch = structuredPatch(null, null, oldStr, newStr, null, null, { context });\n const result = new Array();\n for (const hunk of patch.hunks) {\n result.push(chalk.magenta(`@@ -${hunk.oldStart},${hunk.oldLines} +${hunk.newStart},${hunk.newLines} @@`));\n const baseIndent = _findIndent(hunk.lines);\n for (const line of hunk.lines) {\n // Don't care about termination newline.\n if (line === '\\\\ No newline at end of file') {\n continue;\n }\n const marker = line.charAt(0);\n const text = line.slice(1 + baseIndent);\n switch (marker) {\n case ' ':\n result.push(`${CONTEXT} ${text}`);\n break;\n case '+':\n result.push(chalk.bold(`${ADDITION} ${chalk.green(text)}`));\n break;\n case '-':\n result.push(chalk.bold(`${REMOVAL} ${chalk.red(text)}`));\n break;\n default:\n throw new Error(`Unexpected diff marker: ${marker} (full line: ${line})`);\n }\n }\n }\n return result;\n function _findIndent(lines) {\n let indent = Number.MAX_SAFE_INTEGER;\n for (const line of lines) {\n for (let i = 1; i < line.length; i++) {\n if (line.charAt(i) !== ' ') {\n indent = indent > i - 1 ? i - 1 : indent;\n break;\n }\n }\n }\n return indent;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZm9ybWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUE4QjtBQUM5QiwrQkFBK0I7QUFFL0Isc0NBQXdDO0FBQ3hDLG1EQUF1RztBQUN2RyxpREFBNkM7QUFJN0MsY0FBYztBQUNkLE1BQU0saUJBQWlCLEdBQUcsY0FBYyxDQUFDO0FBRXpDLDBEQUEwRDtBQUMxRCxNQUFNLEVBQUUsZUFBZSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBTzVDOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQy9CLE1BQW9CLEVBQ3BCLFlBQTBCLEVBQzFCLG1CQUFvRCxFQUFFLEVBQ3RELFVBQWtCLENBQUM7SUFDbkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVqRixJQUFJLFlBQVksQ0FBQyx3QkFBd0IsSUFBSSxZQUFZLENBQUMsU0FBUyxJQUFJLFlBQVksQ0FBQyxXQUFXLEVBQUU7UUFDL0YsU0FBUyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3pDLFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQywwQkFBMEIsRUFBRSwwQkFBMEIsRUFBRSxZQUFZLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUMxSCxTQUFTLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxZQUFZLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDN0UsU0FBUyxDQUFDLGdCQUFnQixDQUFDLGFBQWEsRUFBRSxhQUFhLEVBQUUsWUFBWSxDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBQ25GLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0tBQ2hDO0lBRUQsK0JBQStCLENBQUMsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBRXpELFNBQVMsQ0FBQyxhQUFhLENBQUMs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QUFJLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztvQkFDNUQsTUFBTTtnQkFDUixLQUFLLEdBQUc7b0JBQ04sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7b0JBQ3pELE1BQU07Z0JBQ1I7b0JBQ0UsTUFBTSxJQUFJLEtBQUssQ0FBQywyQkFBMkIsTUFBTSxnQkFBZ0IsSUFBSSxHQUFHLENBQUMsQ0FBQzthQUM3RTtTQUNGO0tBQ0Y7SUFDRCxPQUFPLE1BQU0sQ0FBQztJQUVkLFNBQVMsV0FBVyxDQUFDLEtBQWU7UUFDbEMsSUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLGdCQUFnQixDQUFDO1FBQ3JDLEtBQUssTUFBTSxJQUFJLElBQUksS0FBSyxFQUFFO1lBQ3hCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUNwQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxFQUFFO29CQUMxQixNQUFNLEdBQUcsTUFBTSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztvQkFDekMsTUFBTTtpQkFDUDthQUNGO1NBQ0Y7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZvcm1hdCB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHsgRGlmZmVyZW5jZUNvbGxlY3Rpb24sIFRlbXBsYXRlRGlmZiB9IGZyb20gJy4vZGlmZi90eXBlcyc7XG5pbXBvcnQgeyBkZWVwRXF1YWwgfSBmcm9tICcuL2RpZmYvdXRpbCc7XG5pbXBvcnQgeyBEaWZmZXJlbmNlLCBpc1Byb3BlcnR5RGlmZmVyZW5jZSwgUmVzb3VyY2VEaWZmZXJlbmNlLCBSZXNvdXJjZUltcGFjdCB9IGZyb20gJy4vZGlmZi10ZW1wbGF0ZSc7XG5pbXBvcnQgeyBmb3JtYXRUYWJsZSB9IGZyb20gJy4vZm9ybWF0LXRhYmxlJztcbmltcG9ydCB7IElhbUNoYW5nZXMgfSBmcm9tICcuL2lhbS9pYW0tY2hhbmdlcyc7XG5pbXBvcnQgeyBTZWN1cml0eUdyb3VwQ2hhbmdlcyB9IGZyb20gJy4vbmV0d29yay9zZWN1cml0eS1ncm91cC1jaGFuZ2VzJztcblxuLy8gZnJvbSBjeC1hcGlcbmNvbnN0IFBBVEhfTUVUQURBVEFfS0VZID0gJ2F3czpjZGs6cGF0aCc7XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHMgKi9cbmNvbnN0IHsgc3RydWN0dXJlZFBhdGNoIH0gPSByZXF1aXJlKCdkaWZmJyk7XG4vKiBlc2xpbnQtZW5hYmxlICovXG5cbmV4cG9ydCBpbnRlcmZhY2UgRm9ybWF0U3RyZWFtIGV4dGVuZHMgTm9kZUpTLldyaXRhYmxlU3RyZWFtIHtcbiAgY29sdW1ucz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIHRlbXBsYXRlIGRpZmZlcmVuY2VzIHRvIHRoZSBwcm9jZXNzJyBjb25zb2xlLlxuICpcbiAqIEBwYXJhbSBzdHJlYW0gICAgICAgICAgIFRoZSBJTyBzdHJlYW0gd2hlcmUgdG8gb3V0cHV0IHRoZSByZW5kZXJlZCBkaWZmLlxuICogQHBhcmFtIHRlbXBsYXRlRGlmZiAgICAgVGVtcGxhdGVEaWZmIHRvIGJlIHJlbmRlcmVkIHRvIHRoZSBjb25zb2xlLlxuICogQHBhcmFtIGxvZ2ljYWxUb1BhdGhNYXAgQSBtYXAgZnJvbSBsb2dpY2FsIElEIHRvIGNvbnN0cnVjdCBwYXRoLiBVc2VmdWwgaW5cbiAqICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgdGhlcmUgaXMgbm8gYXdzOmNkazpwYXRoIG1ldGFkYXRhIGluIHRoZSB0ZW1wbGF0ZS5cbiAqIEBwYXJhbSBjb250ZXh0ICAgICAgICAgIHRoZSBudW1iZXIgb2YgY29udGV4dCBsaW5lcyB0byB1c2UgaW4gYXJiaXRyYXJ5IEpTT04gZGlmZiAoZGVmYXVsdHMgdG8gMykuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXREaWZmZXJlbmNlcyhcbiAgc3RyZWFtOiBGb3JtYXRTdHJlYW0sXG4gIHRlbXBsYXRlRGlmZjogVGVtcGxhdGVEaWZmLFxuICBsb2dpY2FsVG9QYXRoTWFwOiB7IFtsb2dpY2FsSWQ6IHN0cmluZ106IHN0cmluZyB9ID0ge30sXG4gIGNvbnRleHQ6IG51bWJlciA9IDMpIHtcbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEZvcm1hdHRlcihzdHJlYW0sIGxvZ2ljYWxUb1BhdGhNYXAsIHRlbXBsYXRlRGlmZiwgY29udGV4dCk7XG5cbiAgaWYgKHRlbXBsYXRlRGlmZi5hd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24gfHwgdGVtcGxhdGVEaWZmLnRyYW5zZm9ybSB8fCB0ZW1wbGF0ZURpZmYuZGVzY3JpcHRpb24pIHtcbiAgICBmb3JtYXR0ZXIucHJpbnRTZWN0aW9uSGVhZGVyKCdUZW1wbGF0ZScpO1xuICAgIGZvcm1hdHRlci5mb3JtYXREaWZmZXJlbmNlKCdBV1NUZW1wbGF0ZUZvcm1hdFZlcnNpb24nLCAnQVdTVGVtcGxhdGVGb3JtYXRWZXJzaW9uJywgdGVtcGxhdGVEaWZmLmF3c1RlbXBsYXRlRm9ybWF0VmVyc2lvbik7XG4gICAgZm9ybWF0dGVyLmZvcm1hdERpZmZlcmVuY2UoJ1RyYW5zZm9ybScsICdUcmFuc2Zvcm0nLCB0ZW1wbGF0ZURpZmYudHJhbnNmb3JtKTtcbiAgICBmb3JtYXR0ZXIuZm9ybWF0RGlmZmVyZW5jZSgnRGVzY3JpcHRpb24nLCAnRGVzY3JpcHRpb24nLCB0ZW1wbGF0ZURpZmYuZGVzY3JpcHRpb24pO1xuICAgIGZvcm1hdHRlci5wcmludFNlY3Rpb25Gb290ZXIoKTtcbiAgfVxuXG4gIGZvcm1hdFNlY3VyaXR5Q2hhbmdlc1dpdGhCYW5uZXIoZm9ybWF0dGVyLCB0ZW1wbGF0ZURpZmYpO1xuXG4gIGZvcm1hdHRlci5mb3JtYXRTZWN0aW9uKCdQYXJhbWV0ZXJzJywgJ1BhcmFtZXRlcicsIHRlbXBsYXRlRGlmZi5wYXJhbWV0ZXJzKTtcbiAgZm9ybWF0dGVyLmZvcm1hdFNlY3Rpb24oJ01ldGFkYXRhJywgJ01ldGFkYXRhJywgdGVtcGxhdGVEaWZmLm1ldGFkYXRhKTtcbiAgZm9ybWF0dGVyLmZvcm1hdFNlY3Rpb24oJ01hcHBpbmdzJywgJ01hcHBpbmcnLCB0ZW1wbGF0ZURpZmYubWFwcGluZ3MpO1xuICBmb3JtYXR0ZXIuZm9ybWF0U2VjdGlvbignQ29uZGl0aW9ucycsICdDb25kaXRpb24nLCB0ZW1wbGF0ZURpZmYuY29uZGl0aW9ucyk7XG4gIGZvcm1hdHRlci5mb3JtYXRTZWN0aW9uKCdSZXNvdXJjZXMnLCAnUmVzb3VyY2UnLCB0ZW1wbGF0ZURpZmYucmVzb3VyY2VzLCBmb3JtYXR0ZXIuZm9ybWF0UmVzb3VyY2VEaWZmZXJlbmNlLmJpbmQoZm9ybWF0dGVyKSk7XG4gIGZvcm1hdHRlci5mb3JtYXRTZWN0aW9uKCdPdXRwdXRzJywgJ091dHB1dCcsIHRlbXBsYXRlRGlmZi5vdXRwdXRzKTtcbiAgZm9ybWF0dGVyLmZvcm1hdFNlY3Rpb24oJ090aGVyIENoYW5nZXMnLCAnVW5rbm93bicsIHRlbXBsYXRlRGlmZi51bmtub3duKTtcbn1cblxuLyoqXG4gKiBSZW5kZXJzIGEgZGlmZiBvZiBzZWN1cml0eSBjaGFuZ2VzIHRvIHRoZSBnaXZlbiBzdHJlYW1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFNlY3VyaXR5Q2hhbmdlcyhcbiAgc3RyZWFtOiBOb2RlSlMuV3JpdGFibGVTdHJlYW0sXG4gIHRlbXBsYXRlRGlmZjogVGVtcGxhdGVEaWZmLFxuICBsb2dpY2FsVG9QYXRoTWFwOiB7IFtsb2dpY2FsSWQ6IHN0cmluZ106IHN0cmluZyB9ID0ge30sXG4gIGNvbnRleHQ/OiBudW1iZXIpIHtcbiAgY29uc3QgZm9ybWF0dGVyID0gbmV3IEZvcm1hdHRlcihzdHJlYW0sIGxvZ2ljYWxUb1BhdGhNYXAsIHRlbXBsYXRlRGlmZiwgY29udGV4dCk7XG5cbiAgZm9ybWF0U2VjdXJpdHlDaGFuZ2VzV2l0aEJhbm5lcihmb3JtYXR0ZXIsIHRlbXBsYXRlRGlmZik7XG59XG5cbmZ1bmN0aW9uIGZvcm1hdFNlY3VyaXR5Q2hhbmdlc1dpdGhCYW5uZXIoZm9ybWF0dGVyOiBGb3JtYXR0ZXIsIHRlbXBsYXRlRGlmZjogVGVtcGxhdGVEaWZmKSB7XG4gIGlmICghdGVtcGxhdGVEaWZmLmlhbUNoYW5nZXMuaGFzQ2hhbmdlcyAmJiAhdGVtcGxhdGVEaWZmLnNlY3VyaXR5R3JvdXBDaGFuZ2VzLmhhc0NoYW5nZXMpIHsgcmV0dXJuOyB9XG4gIGZvcm1hdHRlci5mb3JtYXRJYW1DaGFuZ2VzKHRlbXBsYXRlRGlmZi5pYW1DaGFuZ2VzKTtcbiAgZm9ybWF0dGVyLmZvcm1hdFNlY3VyaXR5R3JvdXBDaGFuZ2VzKHRlbXBsYXRlRGlmZi5zZWN1cml0eUdyb3VwQ2hhbmdlcyk7XG5cbiAgZm9ybWF0dGVyLndhcm5pbmcoJyhOT1RFOiBUaGVyZSBtYXkgYmUgc2VjdXJpdHktcmVsYXRlZCBjaGFuZ2VzIG5vdCBpbiB0aGlzIGxpc3QuIFNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzEyOTkpJyk7XG4gIGZvcm1hdHRlci5wcmludFNlY3Rpb25Gb290ZXIoKTtcbn1cblxuY29uc3QgQURESVRJT04gPSBjaGFsay5ncmVlbignWytdJyk7XG5jb25zdCBDT05URVhUID0gY2hhbGsuZ3JleSgnWyBdJyk7XG5jb25zdCBVUERBVEUgPSBjaGFsay55ZWxsb3coJ1t+XScpO1xuY29uc3QgUkVNT1ZBTCA9IGNoYWxrLnJlZCgnWy1dJyk7XG5jb25zdCBJTVBPUlQgPSBjaGFsay5ibHVlKCdb4oaQXScpO1xuXG5jbGFzcyBGb3JtYXR0ZXIge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0cmVhbTogRm9ybWF0U3RyZWFtLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbG9naWNhbFRvUGF0aE1hcDogeyBbbG9naWNhbElkOiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICBkaWZmPzogVGVtcGxhdGVEaWZmLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgY29udGV4dDogbnVtYmVyID0gMykge1xuICAgIC8vIFJlYWQgYWRkaXRpb25hbCBjb25zdHJ1Y3QgcGF0aHMgZnJvbSB0aGUgZGlmZiBpZiBpdCBpcyBzdXBwbGllZFxuICAgIGlmIChkaWZmKSB7XG4gICAgICB0aGlzLnJlYWRDb25zdHJ1Y3RQYXRoc0Zyb20oZGlmZik7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHByaW50KGZtdDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHRoaXMuc3RyZWFtLndyaXRlKGNoYWxrLndoaXRlKGZvcm1hdChmbXQsIC4uLmFyZ3MpKSArICdcXG4nKTtcbiAgfVxuXG4gIHB1YmxpYyB3YXJuaW5nKGZtdDogc3RyaW5nLCAuLi5hcmdzOiBhbnlbXSkge1xuICAgIHRoaXMuc3RyZWFtLndyaXRlKGNoYWxrLnllbGxvdyhmb3JtYXQoZm10LCAuLi5hcmdzKSkgKyAnXFxuJyk7XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0U2VjdGlvbjxWLCBUIGV4dGVuZHMgRGlmZmVyZW5jZTxWPj4oXG4gICAgdGl0bGU6IHN0cmluZyxcbiAgICBlbnRyeVR5cGU6IHN0cmluZyxcbiAgICBjb2xsZWN0aW9uOiBEaWZmZXJlbmNlQ29sbGVjdGlvbjxWLCBUPixcbiAgICBmb3JtYXR0ZXI6ICh0eXBlOiBzdHJpbmcsIGlkOiBzdHJpbmcsIGRpZmY6IFQpID0+IHZvaWQgPSB0aGlzLmZvcm1hdERpZmZlcmVuY2UuYmluZCh0aGlzKSkge1xuXG4gICAgaWYgKGNvbGxlY3Rpb24uZGlmZmVyZW5jZUNvdW50ID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5wcmludFNlY3Rpb25IZWFkZXIodGl0bGUpO1xuICAgIGNvbGxlY3Rpb24uZm9yRWFjaERpZmZlcmVuY2UoKGlkLCBkaWZmKSA9PiBmb3JtYXR0ZXIoZW50cnlUeXBlLCBpZCwgZGlmZikpO1xuICAgIHRoaXMucHJpbnRTZWN0aW9uRm9vdGVyKCk7XG4gIH1cblxuICBwdWJsaWMgcHJpbnRTZWN0aW9uSGVhZGVyKHRpdGxlOiBzdHJpbmcpIHtcbiAgICB0aGlzLnByaW50KGNoYWxrLnVuZGVybGluZShjaGFsay5ib2xkKHRpdGxlKSkpO1xuICB9XG5cbiAgcHVibGljIHByaW50U2VjdGlvbkZvb3RlcigpIHtcbiAgICB0aGlzLnByaW50KCcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmludCBhIHNpbXBsZSBkaWZmZXJlbmNlIGZvciBhIGdpdmVuIG5hbWVkIGVudGl0eS5cbiAgICpcbiAgICogQHBhcmFtIGxvZ2ljYWxJZCB0aGUgbmFtZSBvZiB0aGUgZW50aXR5IHRoYXQgaXMgZGlmZmVyZW50LlxuICAgKiBAcGFyYW0gZGlmZiB0aGUgZGlmZmVyZW5jZSB0byBiZSByZW5kZXJlZC5cbiAgICovXG4gIHB1YmxpYyBmb3JtYXREaWZmZXJlbmNlKHR5cGU6IHN0cmluZywgbG9naWNhbElkOiBzdHJpbmcsIGRpZmY6IERpZmZlcmVuY2U8YW55PiB8IHVuZGVmaW5lZCkge1xuICAgIGlmICghZGlmZiB8fCAhZGlmZi5pc0RpZmZlcmVudCkgeyByZXR1cm47IH1cblxuICAgIGxldCB2YWx1ZTtcblxuICAgIGNvbnN0IG9sZFZhbHVlID0gdGhpcy5mb3JtYXRWYWx1ZShkaWZmLm9sZFZhbHVlLCBjaGFsay5yZWQpO1xuICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5mb3JtYXRWYWx1ZShkaWZmLm5ld1ZhbHVlLCBjaGFsay5ncmVlbik7XG4gICAgaWYgKGRpZmYuaXNBZGRpdGlvbikge1xuICAgICAgdmFsdWUgPSBuZXdWYWx1ZTtcbiAgICB9IGVsc2UgaWYgKGRpZmYuaXNVcGRhdGUpIHtcbiAgICAgIHZhbHVlID0gYCR7b2xkVmFsdWV9IHRvICR7bmV3VmFsdWV9YDtcbiAgICB9IGVsc2UgaWYgKGRpZmYuaXNSZW1vdmFsKSB7XG4gICAgICB2YWx1ZSA9IG9sZFZhbHVlO1xuICAgIH1cblxuICAgIHRoaXMucHJpbnQoYCR7dGhpcy5mb3JtYXRQcmVmaXgoZGlmZil9ICR7Y2hhbGsuY3lhbih0eXBlKX0gJHt0aGlzLmZvcm1hdExvZ2ljYWxJZChsb2dpY2FsSWQpfTogJHt2YWx1ZX1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQcmludCBhIHJlc291cmNlIGRpZmZlcmVuY2UgZm9yIGEgZ2l2ZW4gbG9naWNhbCBJRC5cbiAgICpcbiAgICogQHBhcmFtIGxvZ2ljYWxJZCB0aGUgbG9naWNhbCBJRCBvZiB0aGUgcmVzb3VyY2UgdGhhdCBjaGFuZ2VkLlxuICAgKiBAcGFyYW0gZGlmZiAgICAgIHRoZSBjaGFuZ2UgdG8gYmUgcmVuZGVyZWQuXG4gICAqL1xuICBwdWJsaWMgZm9ybWF0UmVzb3VyY2VEaWZmZXJlbmNlKF90eXBlOiBzdHJpbmcsIGxvZ2ljYWxJZDogc3RyaW5nLCBkaWZmOiBSZXNvdXJjZURpZmZlcmVuY2UpIHtcbiAgICBpZiAoIWRpZmYuaXNEaWZmZXJlbnQpIHsgcmV0dXJuOyB9XG5cbiAgICBjb25zdCByZXNvdXJjZVR5cGUgPSBkaWZmLmlzUmVtb3ZhbCA/IGRpZmYub2xkUmVzb3VyY2VUeXBlIDogZGlmZi5uZXdSZXNvdXJjZVR5cGU7XG5cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgIHRoaXMucHJpbnQoYCR7dGhpcy5mb3JtYXRSZXNvdXJjZVByZWZpeChkaWZmKX0gJHt0aGlzLmZvcm1hdFZhbHVlKHJlc291cmNlVHlwZSwgY2hhbGsuY3lhbil9ICR7dGhpcy5mb3JtYXRMb2dpY2FsSWQobG9naWNhbElkKX0gJHt0aGlzLmZvcm1hdEltcGFjdChkaWZmLmNoYW5nZUltcGFjdCl9YCk7XG5cbiAgICBpZiAoZGlmZi5pc1VwZGF0ZSkge1xuICAgICAgY29uc3QgZGlmZmVyZW5jZUNvdW50ID0gZGlmZi5kaWZmZXJlbmNlQ291bnQ7XG4gICAgICBsZXQgcHJvY2Vzc2VkQ291bnQgPSAwO1xuICAgICAgZGlmZi5mb3JFYWNoRGlmZmVyZW5jZSgoXywgbmFtZSwgdmFsdWVzKSA9PiB7XG4gICAgICAgIHByb2Nlc3NlZENvdW50ICs9IDE7XG4gICAgICAgIHRoaXMuZm9ybWF0VHJlZURpZmYobmFtZSwgdmFsdWVzLCBwcm9jZXNzZWRDb3VudCA9PT0gZGlmZmVyZW5jZUNvdW50KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXRSZXNvdXJjZVByZWZpeChkaWZmOiBSZXNvdXJjZURpZmZlcmVuY2UpIHtcbiAgICBpZiAoZGlmZi5pc0ltcG9ydCkgeyByZXR1cm4gSU1QT1JUOyB9XG5cbiAgICByZXR1cm4gdGhpcy5mb3JtYXRQcmVmaXgoZGlmZik7XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0UHJlZml4PFQ+KGRpZmY6IERpZmZlcmVuY2U8VD4pIHtcbiAgICBpZiAoZGlmZi5pc0FkZGl0aW9uKSB7IHJldHVybiBBRERJVElPTjsgfVxuICAgIGlmIChkaWZmLmlzVXBkYXRlKSB7IHJldHVybiBVUERBVEU7IH1cbiAgICBpZiAoZGlmZi5pc1JlbW92YWwpIHsgcmV0dXJuIFJFTU9WQUw7IH1cbiAgICByZXR1cm4gY2hhbGsud2hpdGUoJ1s/XScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB2YWx1ZSB0aGUgdmFsdWUgdG8gYmUgZm9ybWF0dGVkLlxuICAgKiBAcGFyYW0gY29sb3IgdGhlIGNvbG9yIHRvIGJlIHVzZWQuXG4gICAqXG4gICAqIEByZXR1cm5zIHRoZSBmb3JtYXR0ZWQgc3RyaW5nLCB3aXRoIGNvbG9yIGFwcGxpZWQuXG4gICAqL1xuICBwdWJsaWMgZm9ybWF0VmFsdWUodmFsdWU6IGFueSwgY29sb3I6IChzdHI6IHN0cmluZykgPT4gc3RyaW5nKSB7XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7IHJldHVybiBjb2xvcih2YWx1ZSk7IH1cbiAgICByZXR1cm4gY29sb3IoSlNPTi5zdHJpbmdpZnkodmFsdWUpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gaW1wYWN0IHRoZSBpbXBhY3QgdG8gYmUgZm9ybWF0dGVkXG4gICAqIEByZXR1cm5zIGEgdXNlci1mcmllbmRseSwgY29sb3JlZCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBpbXBhY3QuXG4gICAqL1xuICBwdWJsaWMgZm9ybWF0SW1wYWN0KGltcGFjdDogUmVzb3VyY2VJbXBhY3QpIHtcbiAgICBzd2l0Y2ggKGltcGFjdCkge1xuICAgICAgY2FzZSBSZXNvdXJjZUltcGFjdC5NQVlfUkVQTEFDRTpcbiAgICAgICAgcmV0dXJuIGNoYWxrLml0YWxpYyhjaGFsay55ZWxsb3coJ21heSBiZSByZXBsYWNlZCcpKTtcbiAgICAgIGNhc2UgUmVzb3VyY2VJbXBhY3QuV0lMTF9SRVBMQUNFOlxuICAgICAgICByZXR1cm4gY2hhbGsuaXRhbGljKGNoYWxrLmJvbGQoY2hhbGsucmVkKCdyZXBsYWNlJykpKTtcbiAgICAgIGNhc2UgUmVzb3VyY2VJbXBhY3QuV0lMTF9ERVNUUk9ZOlxuICAgICAgICByZXR1cm4gY2hhbGsuaXRhbGljKGNoYWxrLmJvbGQoY2hhbGsucmVkKCdkZXN0cm95JykpKTtcbiAgICAgIGNhc2UgUmVzb3VyY2VJbXBhY3QuV0lMTF9PUlBIQU46XG4gICAgICAgIHJldHVybiBjaGFsay5pdGFsaWMoY2hhbGsueWVsbG93KCdvcnBoYW4nKSk7XG4gICAgICBjYXNlIFJlc291cmNlSW1wYWN0LldJTExfSU1QT1JUOlxuICAgICAgICByZXR1cm4gY2hhbGsuaXRhbGljKGNoYWxrLmJsdWUoJ2ltcG9ydCcpKTtcbiAgICAgIGNhc2UgUmVzb3VyY2VJbXBhY3QuV0lMTF9VUERBVEU6XG4gICAgICBjYXNlIFJlc291cmNlSW1wYWN0LldJTExfQ1JFQVRFOlxuICAgICAgY2FzZSBSZXNvdXJjZUltcGFjdC5OT19DSEFOR0U6XG4gICAgICAgIHJldHVybiAnJzsgLy8gbm8gZXh0cmEgaW5mbyBpcyBnYWluZWQgaGVyZVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIGEgdHJlZSBvZiBkaWZmZXJlbmNlcyB1bmRlciBhIHBhcnRpY3VsYXIgbmFtZS5cbiAgICogQHBhcmFtIG5hbWUgICAgdGhlIG5hbWUgb2YgdGhlIHJvb3Qgb2YgdGhlIHRyZWUuXG4gICAqIEBwYXJhbSBkaWZmICAgIHRoZSBkaWZmZXJlbmNlIG9uIHRoZSB0cmVlLlxuICAgKiBAcGFyYW0gbGFzdCAgICB3aGV0aGVyIHRoaXMgaXMgdGhlIGxhc3Qgbm9kZSBvZiBhIHBhcmVudCB0cmVlLlxuICAgKi9cbiAgcHVibGljIGZvcm1hdFRyZWVEaWZmKG5hbWU6IHN0cmluZywgZGlmZjogRGlmZmVyZW5jZTxhbnk+LCBsYXN0OiBib29sZWFuKSB7XG4gICAgbGV0IGFkZGl0aW9uYWxJbmZvID0gJyc7XG4gICAgaWYgKGlzUHJvcGVydHlEaWZmZXJlbmNlKGRpZmYpKSB7XG4gICAgICBpZiAoZGlmZi5jaGFuZ2VJbXBhY3QgPT09IFJlc291cmNlSW1wYWN0Lk1BWV9SRVBMQUNFKSB7XG4gICAgICAgIGFkZGl0aW9uYWxJbmZvID0gJyAobWF5IGNhdXNlIHJlcGxhY2VtZW50KSc7XG4gICAgICB9IGVsc2UgaWYgKGRpZmYuY2hhbmdlSW1wYWN0ID09PSBSZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0UpIHtcbiAgICAgICAgYWRkaXRpb25hbEluZm8gPSAnIChyZXF1aXJlcyByZXBsYWNlbWVudCknO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnByaW50KCcgJXPilIAgJXMgJXMlcycsIGxhc3QgPyAn4pSUJyA6ICfilJwnLCB0aGlzLmNoYW5nZVRhZyhkaWZmLm9sZFZhbHVlLCBkaWZmLm5ld1ZhbHVlKSwgbmFtZSwgYWRkaXRpb25hbEluZm8pO1xuICAgIHJldHVybiB0aGlzLmZvcm1hdE9iamVjdERpZmYoZGlmZi5vbGRWYWx1ZSwgZGlmZi5uZXdWYWx1ZSwgYCAke2xhc3QgPyAnICcgOiAn4pSCJ31gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdHdvIG9iamVjdHMsIGxvb2tpbmcgZm9yIHRoZSBkaWZmZXJlbmNlcyBhcyBkZWVwIGFzIHBvc3NpYmxlLFxuICAgKiBhbmQgcmVuZGVyaW5nIGEgdHJlZSBncmFwaCBvZiB0aGUgcGF0aCB1bnRpbCB0aGUgZGlmZmVyZW5jZSBpcyBmb3VuZC5cbiAgICpcbiAgICogQHBhcmFtIG9sZE9iamVjdCAgdGhlIG9sZCBvYmplY3QuXG4gICAqIEBwYXJhbSBuZXdPYmplY3QgIHRoZSBuZXcgb2JqZWN0LlxuICAgKiBAcGFyYW0gbGluZVByZWZpeCBhIHByZWZpeCAoaW5kZW50LWxpa2UpIHRvIGJlIHVzZWQgb24gZXZlcnkgbGluZS5cbiAgICovXG4gIHB1YmxpYyBmb3JtYXRPYmplY3REaWZmKG9sZE9iamVjdDogYW55LCBuZXdPYmplY3Q6IGFueSwgbGluZVByZWZpeDogc3RyaW5nKSB7XG4gICAgaWYgKCh0eXBlb2Ygb2xkT2JqZWN0ICE9PSB0eXBlb2YgbmV3T2JqZWN0KSB8fCBBcnJheS5pc0FycmF5KG9sZE9iamVjdCkgfHwgdHlwZW9mIG9sZE9iamVjdCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIG9sZE9iamVjdCA9PT0gJ251bWJlcicpIHtcbiAgICAgIGlmIChvbGRPYmplY3QgIT09IHVuZGVmaW5lZCAmJiBuZXdPYmplY3QgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAodHlwZW9mIG9sZE9iamVjdCA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIG5ld09iamVjdCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBjb25zdCBvbGRTdHIgPSBKU09OLnN0cmluZ2lmeShvbGRPYmplY3QsIG51bGwsIDIpO1xuICAgICAgICAgIGNvbnN0IG5ld1N0ciA9IEpTT04uc3RyaW5naWZ5KG5ld09iamVjdCwgbnVsbCwgMik7XG4gICAgICAgICAgY29uc3QgZGlmZiA9IF9kaWZmU3RyaW5ncyhvbGRTdHIsIG5ld1N0ciwgdGhpcy5jb250ZXh0KTtcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRpZmYubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIHRoaXMucHJpbnQoJyVzICAgJXMgJXMnLCBsaW5lUHJlZml4LCBpID09PSAwID8gJ+KUlOKUgCcgOiAnICAnLCBkaWZmW2ldKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5wcmludCgnJXMgICDilJzilIAgJXMgJXMnLCBsaW5lUHJlZml4LCBSRU1PVkFMLCB0aGlzLmZvcm1hdFZhbHVlKG9sZE9iamVjdCwgY2hhbGsucmVkKSk7XG4gICAgICAgICAgdGhpcy5wcmludCgnJXMgICDilJTilIAgJXMgJXMnLCBsaW5lUHJlZml4LCBBRERJVElPTiwgdGhpcy5mb3JtYXRWYWx1ZShuZXdPYmplY3QsIGNoYWxrLmdyZWVuKSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAob2xkT2JqZWN0ICE9PSB1bmRlZmluZWQgLyogJiYgbmV3T2JqZWN0ID09PSB1bmRlZmluZWQgKi8pIHtcbiAgICAgICAgdGhpcy5wcmludCgnJXMgICDilJTilIAgJXMnLCBsaW5lUHJlZml4LCB0aGlzLmZvcm1hdFZhbHVlKG9sZE9iamVjdCwgY2hhbGsucmVkKSk7XG4gICAgICB9IGVsc2UgLyogaWYgKG9sZE9iamVjdCA9PT0gdW5kZWZpbmVkICYmIG5ld09iamVjdCAhPT0gdW5kZWZpbmVkKSAqLyB7XG4gICAgICAgIHRoaXMucHJpbnQoJyVzICAg4pSU4pSAICVzJywgbGluZVByZWZpeCwgdGhpcy5mb3JtYXRWYWx1ZShuZXdPYmplY3QsIGNoYWxrLmdyZWVuKSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGtleVNldCA9IG5ldyBTZXQoT2JqZWN0LmtleXMob2xkT2JqZWN0KSk7XG4gICAgT2JqZWN0LmtleXMobmV3T2JqZWN0KS5mb3JFYWNoKGsgPT4ga2V5U2V0LmFkZChrKSk7XG4gICAgY29uc3Qga2V5cyA9IG5ldyBBcnJheSguLi5rZXlTZXQpLmZpbHRlcihrID0+ICFkZWVwRXF1YWwob2xkT2JqZWN0W2tdLCBuZXdPYmplY3Rba10pKS5zb3J0KCk7XG4gICAgY29uc3QgbGFzdEtleSA9IGtleXNba2V5cy5sZW5ndGggLSAxXTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBrZXlzKSB7XG4gICAgICBjb25zdCBvbGRWYWx1ZSA9IG9sZE9iamVjdFtrZXldO1xuICAgICAgY29uc3QgbmV3VmFsdWUgPSBuZXdPYmplY3Rba2V5XTtcbiAgICAgIGNvbnN0IHRyZWVQcmVmaXggPSBrZXkgPT09IGxhc3RLZXkgPyAn4pSUJyA6ICfilJwnO1xuICAgICAgaWYgKG9sZFZhbHVlICE9PSB1bmRlZmluZWQgJiYgbmV3VmFsdWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aGlzLnByaW50KCclcyAgICVz4pSAICVzICVzOicsIGxpbmVQcmVmaXgsIHRyZWVQcmVmaXgsIHRoaXMuY2hhbmdlVGFnKG9sZFZhbHVlLCBuZXdWYWx1ZSksIGNoYWxrLmJsdWUoYC4ke2tleX1gKSk7XG4gICAgICAgIHRoaXMuZm9ybWF0T2JqZWN0RGlmZihvbGRWYWx1ZSwgbmV3VmFsdWUsIGAke2xpbmVQcmVmaXh9ICAgJHtrZXkgPT09IGxhc3RLZXkgPyAnICcgOiAn4pSCJ31gKTtcbiAgICAgIH0gZWxzZSBpZiAob2xkVmFsdWUgIT09IHVuZGVmaW5lZCAvKiAmJiBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkICovKSB7XG4gICAgICAgIHRoaXMucHJpbnQoJyVzICAgJXPilIAgJXMgUmVtb3ZlZDogJXMnLCBsaW5lUHJlZml4LCB0cmVlUHJlZml4LCBSRU1PVkFMLCBjaGFsay5ibHVlKGAuJHtrZXl9YCkpO1xuICAgICAgfSBlbHNlIC8qIGlmIChvbGRWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIG5ld1ZhbHVlICE9PSB1bmRlZmluZWQgKi8ge1xuICAgICAgICB0aGlzLnByaW50KCclcyAgICVz4pSAICVzIEFkZGVkOiAlcycsIGxpbmVQcmVmaXgsIHRyZWVQcmVmaXgsIEFERElUSU9OLCBjaGFsay5ibHVlKGAuJHtrZXl9YCkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gb2xkVmFsdWUgdGhlIG9sZCB2YWx1ZSBvZiBhIGRpZmZlcmVuY2UuXG4gICAqIEBwYXJhbSBuZXdWYWx1ZSB0aGUgbmV3IHZhbHVlIG9mIGEgZGlmZmVyZW5jZS5cbiAgICpcbiAgICogQHJldHVybnMgYSB0YWcgdG8gYmUgcmVuZGVyZWQgaW4gdGhlIGRpZmYsIHJlZmxlY3Rpbmcgd2hldGhlciB0aGUgZGlmZmVyZW5jZVxuICAgKiAgICAgIHdhcyBhbiBBRERJVElPTiwgVVBEQVRFIG9yIFJFTU9WQUwuXG4gICAqL1xuICBwdWJsaWMgY2hhbmdlVGFnKG9sZFZhbHVlOiBhbnkgfCB1bmRlZmluZWQsIG5ld1ZhbHVlOiBhbnkgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICAgIGlmIChvbGRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIG5ld1ZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBVUERBVEU7XG4gICAgfSBlbHNlIGlmIChvbGRWYWx1ZSAhPT0gdW5kZWZpbmVkIC8qICYmIG5ld1ZhbHVlID09PSB1bmRlZmluZWQqLykge1xuICAgICAgcmV0dXJuIFJFTU9WQUw7XG4gICAgfSBlbHNlIC8qIGlmIChvbGRWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIG5ld1ZhbHVlICE9PSB1bmRlZmluZWQpICovIHtcbiAgICAgIHJldHVybiBBRERJVElPTjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRmluZCAnYXdzOmNkazpwYXRoJyBtZXRhZGF0YSBpbiB0aGUgZGlmZiBhbmQgYWRkIGl0IHRvIHRoZSBsb2dpY2FsVG9QYXRoTWFwXG4gICAqXG4gICAqIFRoZXJlIGFyZSBtdWx0aXBsZSBzb3VyY2VzIG9mIGxvZ2ljYWxJRCAtPiBwYXRoIG1hcHBpbmdzOiBzeW50aCBtZXRhZGF0YVxuICAgKiBhbmQgcmVzb3VyY2UgbWV0YWRhdGEsIGFuZCB3ZSBjb21iaW5lIGFsbCBzb3VyY2VzIGludG8gYSBzaW5nbGUgbWFwLlxuICAgKi9cbiAgcHVibGljIHJlYWRDb25zdHJ1Y3RQYXRoc0Zyb20odGVtcGxhdGVEaWZmOiBUZW1wbGF0ZURpZmYpIHtcbiAgICBmb3IgKGNvbnN0IFtsb2dpY2FsSWQsIHJlc291cmNlRGlmZl0gb2YgT2JqZWN0LmVudHJpZXModGVtcGxhdGVEaWZmLnJlc291cmNlcykpIHtcbiAgICAgIGlmICghcmVzb3VyY2VEaWZmKSB7IGNvbnRpbnVlOyB9XG5cbiAgICAgIGNvbnN0IG9sZFBhdGhNZXRhZGF0YSA9IHJlc291cmNlRGlmZi5vbGRWYWx1ZT8uTWV0YWRhdGE/LltQQVRIX01FVEFEQVRBX0tFWV07XG4gICAgICBpZiAob2xkUGF0aE1ldGFkYXRhICYmICEobG9naWNhbElkIGluIHRoaXMubG9naWNhbFRvUGF0aE1hcCkpIHtcbiAgICAgICAgdGhpcy5sb2dpY2FsVG9QYXRoTWFwW2xvZ2ljYWxJZF0gPSBvbGRQYXRoTWV0YWRhdGE7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG5ld1BhdGhNZXRhZGF0YSA9IHJlc291cmNlRGlmZi5uZXdWYWx1ZT8uTWV0YWRhdGE/LltQQVRIX01FVEFEQVRBX0tFWV07XG4gICAgICBpZiAobmV3UGF0aE1ldGFkYXRhICYmICEobG9naWNhbElkIGluIHRoaXMubG9naWNhbFRvUGF0aE1hcCkpIHtcbiAgICAgICAgdGhpcy5sb2dpY2FsVG9QYXRoTWFwW2xvZ2ljYWxJZF0gPSBuZXdQYXRoTWV0YWRhdGE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZvcm1hdExvZ2ljYWxJZChsb2dpY2FsSWQ6IHN0cmluZykge1xuICAgIC8vIGlmIHdlIGhhdmUgYSBwYXRoIGluIHRoZSBtYXAsIHJldHVybiBpdFxuICAgIGNvbnN0IG5vcm1hbGl6ZWQgPSB0aGlzLm5vcm1hbGl6ZWRMb2dpY2FsSWRQYXRoKGxvZ2ljYWxJZCk7XG5cbiAgICBpZiAobm9ybWFsaXplZCkge1xuICAgICAgcmV0dXJuIGAke25vcm1hbGl6ZWR9ICR7Y2hhbGsuZ3JheShsb2dpY2FsSWQpfWA7XG4gICAgfVxuXG4gICAgcmV0dXJuIGxvZ2ljYWxJZDtcbiAgfVxuXG4gIHB1YmxpYyBub3JtYWxpemVkTG9naWNhbElkUGF0aChsb2dpY2FsSWQ6IHN0cmluZyk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgLy8gaWYgd2UgaGF2ZSBhIHBhdGggaW4gdGhlIG1hcCwgcmV0dXJuIGl0XG4gICAgY29uc3QgcGF0aCA9IHRoaXMubG9naWNhbFRvUGF0aE1hcFtsb2dpY2FsSWRdO1xuICAgIHJldHVybiBwYXRoID8gbm9ybWFsaXplUGF0aChwYXRoKSA6IHVuZGVmaW5lZDtcblxuICAgIC8qKlxuICAgICAqIFBhdGggaXMgc3VwcG9zZWQgdG8gc3RhcnQgd2l0aCBcIi9zdGFjay1uYW1lXCIuIElmIHRoaXMgaXMgdGhlIGNhc2UgKGkuZS4gcGF0aCBoYXMgbW9yZSB0aGFuXG4gICAgICogdHdvIGNvbXBvbmVudHMsIHdlIHJlbW92ZSB0aGUgZmlyc3QgcGFydC4gT3RoZXJ3aXNlLCB3ZSBqdXN0IHVzZSB0aGUgZnVsbCBwYXRoLlxuICAgICAqIEBwYXJhbSBwXG4gICAgICovXG4gICAgZnVuY3Rpb24gbm9ybWFsaXplUGF0aChwOiBzdHJpbmcpIHtcbiAgICAgIGlmIChwLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgICBwID0gcC5zbGljZSgxKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHBhcnRzID0gcC5zcGxpdCgnLycpO1xuICAgICAgaWYgKHBhcnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgcGFydHMgPSBwYXJ0cy5zbGljZSgxKTtcblxuICAgICAgICAvLyByZW1vdmUgdGhlIGxhc3QgY29tcG9uZW50IGlmIGl0J3MgXCJSZXNvdXJjZVwiIG9yIFwiRGVmYXVsdFwiIChpZiB3ZSBoYXZlIG1vcmUgdGhhbiBhIHNpbmdsZSBjb21wb25lbnQpXG4gICAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgY29uc3QgbGFzdCA9IHBhcnRzW3BhcnRzLmxlbmd0aCAtIDFdO1xuICAgICAgICAgIGlmIChsYXN0ID09PSAnUmVzb3VyY2UnIHx8IGxhc3QgPT09ICdEZWZhdWx0Jykge1xuICAgICAgICAgICAgcGFydHMgPSBwYXJ0cy5zbGljZSgwLCBwYXJ0cy5sZW5ndGggLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBwID0gcGFydHMuam9pbignLycpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHA7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZvcm1hdElhbUNoYW5nZXMoY2hhbmdlczogSWFtQ2hhbmdlcykge1xuICAgIGlmICghY2hhbmdlcy5oYXNDaGFuZ2VzKSB7IHJldHVybjsgfVxuXG4gICAgaWYgKGNoYW5nZXMuc3RhdGVtZW50cy5oYXNDaGFuZ2VzKSB7XG4gICAgICB0aGlzLnByaW50U2VjdGlvbkhlYWRlcignSUFNIFN0YXRlbWVudCBDaGFuZ2VzJyk7XG4gICAgICB0aGlzLnByaW50KGZvcm1hdFRhYmxlKHRoaXMuZGVlcFN1YnN0aXR1dGVCcmFjZWRMb2dpY2FsSWRzKGNoYW5nZXMuc3VtbWFyaXplU3RhdGVtZW50cygpKSwgdGhpcy5zdHJlYW0uY29sdW1ucykpO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLm1hbmFnZWRQb2xpY2llcy5oYXNDaGFuZ2VzKSB7XG4gICAgICB0aGlzLnByaW50U2VjdGlvbkhlYWRlcignSUFNIFBvbGljeSBDaGFuZ2VzJyk7XG4gICAgICB0aGlzLnByaW50KGZvcm1hdFRhYmxlKHRoaXMuZGVlcFN1YnN0aXR1dGVCcmFjZWRMb2dpY2FsSWRzKGNoYW5nZXMuc3VtbWFyaXplTWFuYWdlZFBvbGljaWVzKCkpLCB0aGlzLnN0cmVhbS5jb2x1bW5zKSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGZvcm1hdFNlY3VyaXR5R3JvdXBDaGFuZ2VzKGNoYW5nZXM6IFNlY3VyaXR5R3JvdXBDaGFuZ2VzKSB7XG4gICAgaWYgKCFjaGFuZ2VzLmhhc0NoYW5nZXMpIHsgcmV0dXJuOyB9XG5cbiAgICB0aGlzLnByaW50U2VjdGlvbkhlYWRlcignU2VjdXJpdHkgR3JvdXAgQ2hhbmdlcycpO1xuICAgIHRoaXMucHJpbnQoZm9ybWF0VGFibGUodGhpcy5kZWVwU3Vic3RpdHV0ZUJyYWNlZExvZ2ljYWxJZHMoY2hhbmdlcy5zdW1tYXJpemUoKSksIHRoaXMuc3RyZWFtLmNvbHVtbnMpKTtcbiAgfVxuXG4gIHB1YmxpYyBkZWVwU3Vic3RpdHV0ZUJyYWNlZExvZ2ljYWxJZHMocm93czogc3RyaW5nW11bXSk6IHN0cmluZ1tdW10ge1xuICAgIHJldHVybiByb3dzLm1hcChyb3cgPT4gcm93Lm1hcCh0aGlzLnN1YnN0aXR1dGVCcmFjZWRMb2dpY2FsSWRzLmJpbmQodGhpcykpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdWJzdGl0dXRlIGFsbCBzdHJpbmdzIGxpa2UgJHtMb2dJZC54eHh9IHdpdGggdGhlIHBhdGggaW5zdGVhZCBvZiB0aGUgbG9naWNhbCBJRFxuICAgKi9cbiAgcHVibGljIHN1YnN0aXR1dGVCcmFjZWRMb2dpY2FsSWRzKHNvdXJjZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gc291cmNlLnJlcGxhY2UoL1xcJFxceyhbXi59XSspKC5bXn1dKyk/XFx9L2lnLCAoX21hdGNoLCBsb2dJZCwgc3VmZml4KSA9PiB7XG4gICAgICByZXR1cm4gJyR7JyArICh0aGlzLm5vcm1hbGl6ZWRMb2dpY2FsSWRQYXRoKGxvZ0lkKSB8fCBsb2dJZCkgKyAoc3VmZml4IHx8ICcnKSArICd9JztcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIEEgcGF0Y2ggYXMgcmV0dXJuZWQgYnkgYGBkaWZmLnN0cnVjdHVyZWRQYXRjaGBgLlxuICovXG5pbnRlcmZhY2UgUGF0Y2gge1xuICAvKipcbiAgICogSHVua3MgaW4gdGhlIHBhdGNoLlxuICAgKi9cbiAgaHVua3M6IFJlYWRvbmx5QXJyYXk8UGF0Y2hIdW5rPjtcbn1cblxuLyoqXG4gKiBBIGh1bmsgaW4gYSBwYXRjaCBwcm9kdWNlZCBieSBgYGRpZmYuc3RydWN0dXJlZFBhdGNoYGAuXG4gKi9cbmludGVyZmFjZSBQYXRjaEh1bmsge1xuICBvbGRTdGFydDogbnVtYmVyO1xuICBvbGRMaW5lczogbnVtYmVyO1xuICBuZXdTdGFydDogbnVtYmVyO1xuICBuZXdMaW5lczogbnVtYmVyO1xuICBsaW5lczogc3RyaW5nW107XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHVuaWZpZWQgZGlmZiBvZiB0d28gc3RyaW5ncy5cbiAqXG4gKiBAcGFyYW0gb2xkU3RyICB0aGUgXCJvbGRcIiB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcuXG4gKiBAcGFyYW0gbmV3U3RyICB0aGUgXCJuZXdcIiB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcuXG4gKiBAcGFyYW0gY29udGV4dCB0aGUgbnVtYmVyIG9mIGNvbnRleHQgbGluZXMgdG8gdXNlIGluIGFyYml0cmFyeSBKU09OIGRpZmYuXG4gKlxuICogQHJldHVybnMgYW4gYXJyYXkgb2YgZGlmZiBsaW5lcy5cbiAqL1xuZnVuY3Rpb24gX2RpZmZTdHJpbmdzKG9sZFN0cjogc3RyaW5nLCBuZXdTdHI6IHN0cmluZywgY29udGV4dDogbnVtYmVyKTogc3RyaW5nW10ge1xuICBjb25zdCBwYXRjaDogUGF0Y2ggPSBzdHJ1Y3R1cmVkUGF0Y2gobnVsbCwgbnVsbCwgb2xkU3RyLCBuZXdTdHIsIG51bGwsIG51bGwsIHsgY29udGV4dCB9KTtcbiAgY29uc3QgcmVzdWx0ID0gbmV3IEFycmF5PHN0cmluZz4oKTtcbiAgZm9yIChjb25zdCBodW5rIG9mIHBhdGNoLmh1bmtzKSB7XG4gICAgcmVzdWx0LnB1c2goY2hhbGsubWFnZW50YShgQEAgLSR7aHVuay5vbGRTdGFydH0sJHtodW5rLm9sZExpbmVzfSArJHtodW5rLm5ld1N0YXJ0fSwke2h1bmsubmV3TGluZXN9IEBAYCkpO1xuICAgIGNvbnN0IGJhc2VJbmRlbnQgPSBfZmluZEluZGVudChodW5rLmxpbmVzKTtcbiAgICBmb3IgKGNvbnN0IGxpbmUgb2YgaHVuay5saW5lcykge1xuICAgICAgLy8gRG9uJ3QgY2FyZSBhYm91dCB0ZXJtaW5hdGlvbiBuZXdsaW5lLlxuICAgICAgaWYgKGxpbmUgPT09ICdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKSB7IGNvbnRpbnVlOyB9XG4gICAgICBjb25zdCBtYXJrZXIgPSBsaW5lLmNoYXJBdCgwKTtcbiAgICAgIGNvbnN0IHRleHQgPSBsaW5lLnNsaWNlKDEgKyBiYXNlSW5kZW50KTtcbiAgICAgIHN3aXRjaCAobWFya2VyKSB7XG4gICAgICAgIGNhc2UgJyAnOlxuICAgICAgICAgIHJlc3VsdC5wdXNoKGAke0NPTlRFWFR9ICR7dGV4dH1gKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnKyc6XG4gICAgICAgICAgcmVzdWx0LnB1c2goY2hhbGsuYm9sZChgJHtBRERJVElPTn0gJHtjaGFsay5ncmVlbih0ZXh0KX1gKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJy0nOlxuICAgICAgICAgIHJlc3VsdC5wdXNoKGNoYWxrLmJvbGQoYCR7UkVNT1ZBTH0gJHtjaGFsay5yZWQodGV4dCl9YCkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBkaWZmIG1hcmtlcjogJHttYXJrZXJ9IChmdWxsIGxpbmU6ICR7bGluZX0pYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiByZXN1bHQ7XG5cbiAgZnVuY3Rpb24gX2ZpbmRJbmRlbnQobGluZXM6IHN0cmluZ1tdKTogbnVtYmVyIHtcbiAgICBsZXQgaW5kZW50ID0gTnVtYmVyLk1BWF9TQUZFX0lOVEVHRVI7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICBmb3IgKGxldCBpID0gMTsgaSA8IGxpbmUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgaWYgKGxpbmUuY2hhckF0KGkpICE9PSAnICcpIHtcbiAgICAgICAgICBpbmRlbnQgPSBpbmRlbnQgPiBpIC0gMSA/IGkgLSAxIDogaW5kZW50O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBpbmRlbnQ7XG4gIH1cbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IamChanges = void 0;\nconst service_spec_types_1 = require(\"@aws-cdk/service-spec-types\");\nconst chalk = require(\"chalk\");\nconst managed_policy_1 = require(\"./managed-policy\");\nconst statement_1 = require(\"./statement\");\nconst diffable_1 = require(\"../diffable\");\nconst render_intrinsics_1 = require(\"../render-intrinsics\");\nconst util_1 = require(\"../util\");\n/**\n * Changes to IAM statements\n */\nclass IamChanges {\n constructor(props) {\n this.statements = new diffable_1.DiffableCollection();\n this.managedPolicies = new diffable_1.DiffableCollection();\n for (const propertyChange of props.propertyChanges) {\n this.readPropertyChange(propertyChange);\n }\n for (const resourceChange of props.resourceChanges) {\n this.readResourceChange(resourceChange);\n }\n this.statements.calculateDiff();\n this.managedPolicies.calculateDiff();\n }\n get hasChanges() {\n return this.statements.hasChanges || this.managedPolicies.hasChanges;\n }\n /**\n * Return whether the changes include broadened permissions\n *\n * Permissions are broadened if positive statements are added or\n * negative statements are removed, or if managed policies are added.\n */\n get permissionsBroadened() {\n return this.statements.additions.some(s => !s.isNegativeStatement)\n || this.statements.removals.some(s => s.isNegativeStatement)\n || this.managedPolicies.hasAdditions;\n }\n /**\n * Return a summary table of changes\n */\n summarizeStatements() {\n const ret = [];\n const header = ['', 'Resource', 'Effect', 'Action', 'Principal', 'Condition'];\n // First generate all lines, then sort on Resource so that similar resources are together\n for (const statement of this.statements.additions) {\n const renderedStatement = statement.render();\n ret.push([\n '+',\n renderedStatement.resource,\n renderedStatement.effect,\n renderedStatement.action,\n renderedStatement.principal,\n renderedStatement.condition,\n ].map(s => chalk.green(s)));\n }\n for (const statement of this.statements.removals) {\n const renderedStatement = statement.render();\n ret.push([\n chalk.red('-'),\n renderedStatement.resource,\n renderedStatement.effect,\n renderedStatement.action,\n renderedStatement.principal,\n renderedStatement.condition,\n ].map(s => chalk.red(s)));\n }\n // Sort by 2nd column\n ret.sort((0, util_1.makeComparator)((row) => [row[1]]));\n ret.splice(0, 0, header);\n return ret;\n }\n summarizeManagedPolicies() {\n const ret = [];\n const header = ['', 'Resource', 'Managed Policy ARN'];\n for (const att of this.managedPolicies.additions) {\n ret.push([\n '+',\n att.identityArn,\n att.managedPolicyArn,\n ].map(s => chalk.green(s)));\n }\n for (const att of this.managedPolicies.removals) {\n ret.push([\n '-',\n att.identityArn,\n att.managedPolicyArn,\n ].map(s => chalk.red(s)));\n }\n // Sort by 2nd column\n ret.sort((0, util_1.makeComparator)((row) => [row[1]]));\n ret.splice(0, 0, header);\n return ret;\n }\n /**\n * Return a machine-readable version of the changes.\n * This is only used in tests.\n *\n * @internal\n */\n _toJson() {\n return (0, util_1.deepRemoveUndefined)({\n statementAdditions: (0, util_1.dropIfEmpty)(this.statements.additions.map(s => s._toJson())),\n statementRemovals: (0, util_1.dropIfEmpty)(this.statements.removals.map(s => s._toJson())),\n managedPolicyAdditions: (0, util_1.dropIfEmpty)(this.managedPolicies.additions.map(s => s._toJson())),\n managedPolicyRemovals: (0, util_1.dropIfEmpty)(this.managedPolicies.removals.map(s => s._toJson())),\n });\n }\n readPropertyChange(propertyChange) {\n switch (propertyChange.scrutinyType) {\n case service_spec_types_1.PropertyScrutinyType.InlineIdentityPolicies:\n // AWS::IAM::{ Role | User | Group }.Policies\n this.statements.addOld(...this.readIdentityPolicies(propertyChange.oldValue, propertyChange.resourceLogicalId));\n this.statements.addNew(...this.readIdentityPolicies(propertyChange.newValue, propertyChange.resourceLogicalId));\n break;\n case service_spec_types_1.PropertyScrutinyType.InlineResourcePolicy:\n // Any PolicyDocument on a resource (including AssumeRolePolicyDocument)\n this.statements.addOld(...this.readResourceStatements(propertyChange.oldValue, propertyChange.resourceLogicalId));\n this.statements.addNew(...this.readResourceStatements(propertyChange.newValue, propertyChange.resourceLogicalId));\n break;\n case service_spec_types_1.PropertyScrutinyType.ManagedPolicies:\n // Just a list of managed policies\n this.managedPolicies.addOld(...this.readManagedPolicies(propertyChange.oldValue, propertyChange.resourceLogicalId));\n this.managedPolicies.addNew(...this.readManagedPolicies(propertyChange.newValue, propertyChange.resourceLogicalId));\n break;\n }\n }\n readResourceChange(resourceChange) {\n switch (resourceChange.scrutinyType) {\n case service_spec_types_1.ResourceScrutinyType.IdentityPolicyResource:\n // AWS::IAM::Policy\n this.statements.addOld(...this.readIdentityPolicyResource(resourceChange.oldProperties));\n this.statements.addNew(...this.readIdentityPolicyResource(resourceChange.newProperties));\n break;\n case service_spec_types_1.ResourceScrutinyType.ResourcePolicyResource:\n // AWS::*::{Bucket,Queue,Topic}Policy\n this.statements.addOld(...this.readResourcePolicyResource(resourceChange.oldProperties));\n this.statements.addNew(...this.readResourcePolicyResource(resourceChange.newProperties));\n break;\n case service_spec_types_1.ResourceScrutinyType.LambdaPermission:\n this.statements.addOld(...this.readLambdaStatements(resourceChange.oldProperties));\n this.statements.addNew(...this.readLambdaStatements(resourceChange.newProperties));\n break;\n }\n }\n /**\n * Parse a list of policies on an identity\n */\n readIdentityPolicies(policies, logicalId) {\n if (policies === undefined || !Array.isArray(policies)) {\n return [];\n }\n const appliesToPrincipal = 'AWS:${' + logicalId + '}';\n return (0, util_1.flatMap)(policies, (policy) => {\n // check if the Policy itself is not an intrinsic, like an Fn::If\n const unparsedStatement = policy.PolicyDocument?.Statement\n ? policy.PolicyDocument.Statement\n : policy;\n return defaultPrincipal(appliesToPrincipal, (0, statement_1.parseStatements)((0, render_intrinsics_1.renderIntrinsics)(unparsedStatement)));\n });\n }\n /**\n * Parse an IAM::Policy resource\n */\n readIdentityPolicyResource(properties) {\n if (properties === undefined) {\n return [];\n }\n properties = (0, render_intrinsics_1.renderIntrinsics)(properties);\n const principals = (properties.Groups || []).concat(properties.Users || []).concat(properties.Roles || []);\n return (0, util_1.flatMap)(principals, (principal) => {\n const ref = 'AWS:' + principal;\n return defaultPrincipal(ref, (0, statement_1.parseStatements)(properties.PolicyDocument.Statement));\n });\n }\n readResourceStatements(policy, logicalId) {\n if (policy === undefined) {\n return [];\n }\n const appliesToResource = '${' + logicalId + '.Arn}';\n return defaultResource(appliesToResource, (0, statement_1.parseStatements)((0, render_intrinsics_1.renderIntrinsics)(policy.Statement)));\n }\n /**\n * Parse an AWS::*::{Bucket,Topic,Queue}policy\n */\n readResourcePolicyResource(properties) {\n if (properties === undefined) {\n return [];\n }\n properties = (0, render_intrinsics_1.renderIntrinsics)(properties);\n const policyKeys = Object.keys(properties).filter(key => key.indexOf('Policy') > -1);\n // Find the key that identifies the resource(s) this policy applies to\n const resourceKeys = Object.keys(properties).filter(key => !policyKeys.includes(key) && !key.endsWith('Name'));\n let resources = resourceKeys.length === 1 ? properties[resourceKeys[0]] : ['???'];\n // For some resources, this is a singleton string, for some it's an array\n if (!Array.isArray(resources)) {\n resources = [resources];\n }\n return (0, util_1.flatMap)(resources, (resource) => {\n return defaultResource(resource, (0, statement_1.parseStatements)(properties[policyKeys[0]].Statement));\n });\n }\n readManagedPolicies(policyArns, logicalId) {\n if (!policyArns) {\n return [];\n }\n const rep = '${' + logicalId + '}';\n return managed_policy_1.ManagedPolicyAttachment.parseManagedPolicies(rep, (0, render_intrinsics_1.renderIntrinsics)(policyArns));\n }\n readLambdaStatements(properties) {\n if (!properties) {\n return [];\n }\n return [(0, statement_1.parseLambdaPermission)((0, render_intrinsics_1.renderIntrinsics)(properties))];\n }\n}\nexports.IamChanges = IamChanges;\nIamChanges.IamPropertyScrutinies = [\n service_spec_types_1.PropertyScrutinyType.InlineIdentityPolicies,\n service_spec_types_1.PropertyScrutinyType.InlineResourcePolicy,\n service_spec_types_1.PropertyScrutinyType.ManagedPolicies,\n];\nIamChanges.IamResourceScrutinies = [\n service_spec_types_1.ResourceScrutinyType.ResourcePolicyResource,\n service_spec_types_1.ResourceScrutinyType.IdentityPolicyResource,\n service_spec_types_1.ResourceScrutinyType.LambdaPermission,\n];\n/**\n * Set an undefined or wildcarded principal on these statements\n */\nfunction defaultPrincipal(principal, statements) {\n statements.forEach(s => s.principals.replaceEmpty(principal));\n statements.forEach(s => s.principals.replaceStar(principal));\n return statements;\n}\n/**\n * Set an undefined or wildcarded resource on these statements\n */\nfunction defaultResource(resource, statements) {\n statements.forEach(s => s.resources.replaceEmpty(resource));\n statements.forEach(s => s.resources.replaceStar(resource));\n return statements;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFtLWNoYW5nZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpYW0tY2hhbmdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvRUFBeUY7QUFDekYsK0JBQStCO0FBQy9CLHFEQUE4RTtBQUM5RSwyQ0FBK0Y7QUFHL0YsMENBQWlEO0FBQ2pELDREQUF3RDtBQUN4RCxrQ0FBb0Y7QUFPcEY7O0dBRUc7QUFDSCxNQUFhLFVBQVU7SUFnQnJCLFlBQVksS0FBc0I7UUFIbEIsZUFBVSxHQUFHLElBQUksNkJBQWtCLEVBQWEsQ0FBQztRQUNqRCxvQkFBZSxHQUFHLElBQUksNkJBQWtCLEVBQTJCLENBQUM7UUFHbEYsS0FBSyxNQUFNLGNBQWMsSUFBSSxLQUFLLENBQUMsZUFBZSxFQUFFO1lBQ2xELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxjQUFjLENBQUMsQ0FBQztTQUN6QztRQUNELEtBQUssTUFBTSxjQUFjLElBQUksS0FBSyxDQUFDLGVBQWUsRUFBRTtZQUNsRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDekM7UUFFRCxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDdkMsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDO0lBQ3ZFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILElBQVcsb0JBQW9CO1FBQzdCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsbUJBQW1CLENBQUM7ZUFDM0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixDQUFDO2VBQ3pELElBQUksQ0FBQyxlQUFlLENBQUMsWUFBWSxDQUFDO0lBQzNDLENBQUM7SUFFRDs7T0FFRztJQUNJLG1CQUFtQjtRQUN4QixNQUFNLEdBQUcsR0FBZSxFQUFFLENBQUM7UUFFM0IsTUFBTSxNQUFNLEdBQUcsQ0FBQyxFQUFFLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBRTlFLHlGQUF5RjtRQUN6RixLQUFLLE1BQU0sU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFO1lBQ2pELE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdDLEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0JBQ1AsR0FBRztnQkFDSCxpQkFBaUIsQ0FBQyxRQUFRO2dCQUMxQixpQkFBaUIsQ0FBQyxNQUFNO2dCQUN4QixpQkFBaUIsQ0FBQyxNQUFNO2dCQUN4QixpQkFBaUIsQ0FBQyxTQUFTO2dCQUMzQixpQkFBaUIsQ0FBQyxTQUFTO2FBQzVCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDN0I7UUFDRCxLQUFLLE1BQU0sU0FBUyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFO1lBQ2hELE1BQU0saUJBQWlCLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzdDLEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0JBQ1AsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUM7Z0JBQ2QsaUJBQWlCLENBQUMsUUFBUTtnQkFDMUIsaUJBQWlCLENBQUMsTUFBTTtnQkFDeEIsaUJBQWlCLENBQUMsTUFBTTtnQkFDeEIsaUJBQWlCLENBQUMsU0FBUztnQkFDM0IsaUJBQWlCLENBQUMsU0FBUzthQUM1QixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzNCO1FBRUQscUJBQXFCO1FBQ3JCLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBQSxxQkFBYyxFQUFDLENBQUMsR0FBYSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUV0RCxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFFekIsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBRU0sd0JBQXdCO1FBQzdCLE1BQU0sR0FBRyxHQUFlLEVBQUUsQ0FBQztRQUMzQixNQUFNLE1BQU0sR0FBRyxDQUFDLEVBQUUsRUFBRSxVQUFVLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUV0RCxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxFQUFFO1lBQ2hELEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0JBQ1AsR0FBRztnQkFDSCxHQUFHLENBQUMsV0FBVztnQkFDZixHQUFHLENBQUMsZ0JBQWdCO2FBQ3JCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDN0I7UUFDRCxLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxFQUFFO1lBQy9DLEdBQUcsQ0FBQyxJQUFJLENBQUM7Z0JBQ1AsR0FBRztnQkFDSCxHQUFHLENBQUMsV0FBVztnQkFDZixHQUFHLENBQUMsZ0JBQWdCO2FBQ3JCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDM0I7UUFFRCxxQkFBcUI7UUFDckIsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFBLHFCQUFjLEVBQUMsQ0FBQyxHQUFhLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXRELEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNLENBQUMsQ0FBQztRQUV6QixPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE9BQU87UUFDWixPQUFPLElBQUEsMEJBQW1CLEVBQUM7WUFDekIsa0JBQWtCLEVBQUUsSUFBQSxrQkFBVyxFQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1lBQ2hGLGlCQUFpQixFQUFFLElBQUEsa0JBQVcsRUFBQyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztZQUM5RSxzQkFBc0IsRUFBRSxJQUFBLGtCQUFXLEVBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDekYscUJBQXFCLEVBQUUsSUFBQSxrQkFBVyxFQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQ3hGLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxrQkFBa0IsQ0FBQyxjQUE4QjtRQUN2RCxRQUFRLGNBQWMsQ0FBQyxZQUFZLEVBQUU7WUFDbkMsS0FBSyx5Q0FBb0IsQ0FBQyxzQkFBc0I7Z0JBQzlDLDZDQUE2QztnQkFDN0MsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxjQUFjLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO2dCQUNoSCxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7Z0JBQ2hILE1BQU07WUFDUixLQUFLLHlDQUFvQixDQUFDLG9CQUFvQjtnQkFDNUMsd0VBQXdFO2dCQUN4RSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7Z0JBQ2xILElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztnQkFDbEgsTUFBTTtZQUNSLEtBQUsseUNBQW9CLENBQUMsZUFBZTtnQkFDdkMsa0NBQWtDO2dCQUNsQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxjQUFjLENBQUMsUUFBUSxFQUFFLGNBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BILElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztnQkFDcEgsTUFBTTtTQUNUO0lBQ0gsQ0FBQztJQUVPLGtCQUFrQixDQUFDLGNBQThCO1FBQ3ZELFFBQVEsY0FBYyxDQUFDLFlBQVksRUFBRTtZQUNuQyxLQUFLLHlDQUFvQixDQUFDLHNCQUFzQjtnQkFDOUMsbUJBQW1CO2dCQUNuQixJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztnQkFDekYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pGLE1BQU07WUFDUixLQUFLLHlDQUFvQixDQUFDLHNCQUFzQjtnQkFDOUMscUNBQXFDO2dCQUNyQyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztnQkFDekYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsMEJBQTBCLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7Z0JBQ3pGLE1BQU07WUFDUixLQUFLLHlDQUFvQixDQUFDLGdCQUFnQjtnQkFDeEMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsY0FBYyxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7Z0JBQ25GLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLG9CQUFvQixDQUFDLGNBQWMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO2dCQUNuRixNQUFNO1NBQ1Q7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSyxvQkFBb0IsQ0FBQyxRQUFhLEVBQUUsU0FBaUI7UUFDM0QsSUFBSSxRQUFRLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUFFLE9BQU8sRUFBRSxDQUFDO1NBQUU7UUFFdEUsTUFBTSxrQkFBa0IsR0FBRyxRQUFRLEdBQUcsU0FBUyxHQUFHLEdBQUcsQ0FBQztRQUV0RCxPQUFPLElBQUEsY0FBTyxFQUFDLFFBQVEsRUFBRSxDQUFDLE1BQVcsRUFBRSxFQUFFO1lBQ3ZDLGlFQUFpRTtZQUNqRSxNQUFNLGlCQUFpQixHQUFHLE1BQU0sQ0FBQyxjQUFjLEVBQUUsU0FBUztnQkFDeEQsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBUztnQkFDakMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztZQUNYLE9BQU8sZ0JBQWdCLENBQUMsa0JBQWtCLEVBQUUsSUFBQSwyQkFBZSxFQUFDLElBQUEsb0NBQWdCLEVBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDcEcsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSywwQkFBMEIsQ0FBQyxVQUFlO1FBQ2hELElBQUksVUFBVSxLQUFLLFNBQVMsRUFBRTtZQUFFLE9BQU8sRUFBRSxDQUFDO1NBQUU7UUFFNUMsVUFBVSxHQUFHLElBQUEsb0NBQWdCLEVBQUMsVUFBVSxDQUFDLENBQUM7UUFFMUMsTUFBTSxVQUFVLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzNHLE9BQU8sSUFBQSxjQUFPLEVBQUMsVUFBVSxFQUFFLENBQUMsU0FBaUIsRUFBRSxFQUFFO1lBQy9DLE1BQU0sR0FBRyxHQUFHLE1BQU0sR0FBRyxTQUFTLENBQUM7WUFDL0IsT0FBTyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUUsSUFBQSwyQkFBZSxFQUFDLFVBQVUsQ0FBQyxjQUFjLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUNyRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxNQUFXLEVBQUUsU0FBaUI7UUFDM0QsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFFO1lBQUUsT0FBTyxFQUFFLENBQUM7U0FBRTtRQUV4QyxNQUFNLGlCQUFpQixHQUFHLElBQUksR0FBRyxTQUFTLEdBQUcsT0FBTyxDQUFDO1FBQ3JELE9BQU8sZUFBZSxDQUFDLGlCQUFpQixFQUFFLElBQUEsMkJBQWUsRUFBQyxJQUFBLG9DQUFnQixFQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakcsQ0FBQztJQUVEOztPQUVHO0lBQ0ssMEJBQTBCLENBQUMsVUFBZTtRQUNoRCxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUU7WUFBRSxPQUFPLEVBQUUsQ0FBQztTQUFFO1FBRTVDLFVBQVUsR0FBRyxJQUFBLG9DQUFnQixFQUFDLFVBQVUsQ0FBQyxDQUFDO1FBRTFDLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXJGLHNFQUFzRTtRQUN0RSxNQUFNLFlBQVksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMvRyxJQUFJLFNBQVMsR0FBRyxZQUFZLENBQUMsTUFBTSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRWxGLHlFQUF5RTtRQUN6RSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtZQUM3QixTQUFTLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUN6QjtRQUVELE9BQU8sSUFBQSxjQUFPLEVBQUMsU0FBUyxFQUFFLENBQUMsUUFBZ0IsRUFBRSxFQUFFO1lBQzdDLE9BQU8sZUFBZSxDQUFDLFFBQVEsRUFBRSxJQUFBLDJCQUFlLEVBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDekYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsVUFBZSxFQUFFLFNBQWlCO1FBQzVELElBQUksQ0FBQyxVQUFVLEVBQUU7WUFBRSxPQUFPLEVBQUUsQ0FBQztTQUFFO1FBRS9CLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxTQUFTLEdBQUcsR0FBRyxDQUFDO1FBQ25DLE9BQU8sd0NBQXVCLENBQUMsb0JBQW9CLENBQUMsR0FBRyxFQUFFLElBQUEsb0NBQWdCLEVBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQztJQUN6RixDQUFDO0lBRU8sb0JBQW9CLENBQUMsVUFBd0I7UUFDbkQsSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUFFLE9BQU8sRUFBRSxDQUFDO1NBQUU7UUFFL0IsT0FBTyxDQUFDLElBQUEsaUNBQXFCLEVBQUMsSUFBQSxvQ0FBZ0IsRUFBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQzs7QUEvT0gsZ0NBZ1BDO0FBL09lLGdDQUFxQixHQUFHO0lBQ3BDLHlDQUFvQixDQUFDLHNCQUFzQjtJQUMzQyx5Q0FBb0IsQ0FBQyxvQkFBb0I7SUFDekMseUNBQW9CLENBQUMsZUFBZTtDQUNyQyxBQUprQyxDQUlqQztBQUVZLGdDQUFxQixHQUFHO0lBQ3BDLHlDQUFvQixDQUFDLHNCQUFzQjtJQUMzQyx5Q0FBb0IsQ0FBQyxzQkFBc0I7SUFDM0MseUNBQW9CLENBQUMsZ0JBQWdCO0NBQ3RDLEFBSmtDLENBSWpDO0FBdU9KOztHQUVHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FBQyxTQUFpQixFQUFFLFVBQXVCO0lBQ2xFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzlELFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzdELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsZUFBZSxDQUFDLFFBQWdCLEVBQUUsVUFBdUI7SUFDaEUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDNUQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDM0QsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3BlcnR5U2NydXRpbnlUeXBlLCBSZXNvdXJjZVNjcnV0aW55VHlwZSB9IGZyb20gJ0Bhd3MtY2RrL3NlcnZpY2Utc3BlYy10eXBlcyc7XG5pbXBvcnQgKiBhcyBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgeyBNYW5hZ2VkUG9saWN5QXR0YWNobWVudCwgTWFuYWdlZFBvbGljeUpzb24gfSBmcm9tICcuL21hbmFnZWQtcG9saWN5JztcbmltcG9ydCB7IHBhcnNlTGFtYmRhUGVybWlzc2lvbiwgcGFyc2VTdGF0ZW1lbnRzLCBTdGF0ZW1lbnQsIFN0YXRlbWVudEpzb24gfSBmcm9tICcuL3N0YXRlbWVudCc7XG5pbXBvcnQgeyBNYXliZVBhcnNlZCB9IGZyb20gJy4uL2RpZmYvbWF5YmUtcGFyc2VkJztcbmltcG9ydCB7IFByb3BlcnR5Q2hhbmdlLCBQcm9wZXJ0eU1hcCwgUmVzb3VyY2VDaGFuZ2UgfSBmcm9tICcuLi9kaWZmL3R5cGVzJztcbmltcG9ydCB7IERpZmZhYmxlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2RpZmZhYmxlJztcbmltcG9ydCB7IHJlbmRlckludHJpbnNpY3MgfSBmcm9tICcuLi9yZW5kZXItaW50cmluc2ljcyc7XG5pbXBvcnQgeyBkZWVwUmVtb3ZlVW5kZWZpbmVkLCBkcm9wSWZFbXB0eSwgZmxhdE1hcCwgbWFrZUNvbXBhcmF0b3IgfSBmcm9tICcuLi91dGlsJztcblxuZXhwb3J0IGludGVyZmFjZSBJYW1DaGFuZ2VzUHJvcHMge1xuICBwcm9wZXJ0eUNoYW5nZXM6IFByb3BlcnR5Q2hhbmdlW107XG4gIHJlc291cmNlQ2hhbmdlczogUmVzb3VyY2VDaGFuZ2VbXTtcbn1cblxuLyoqXG4gKiBDaGFuZ2VzIHRvIElBTSBzdGF0ZW1lbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBJYW1DaGFuZ2VzIHtcbiAgcHVibGljIHN0YXRpYyBJYW1Qcm9wZXJ0eVNjcnV0aW5pZXMgPSBbXG4gICAgUHJvcGVydHlTY3J1dGlueVR5cGUuSW5saW5lSWRlbnRpdHlQb2xpY2llcyxcbiAgICBQcm9wZXJ0eVNjcnV0aW55VHlwZS5JbmxpbmVSZXNvdXJjZVBvbGljeSxcbiAgICBQcm9wZXJ0eVNjcnV0aW55VHlwZS5NYW5hZ2VkUG9saWNpZXMsXG4gIF07XG5cbiAgcHVibGljIHN0YXRpYyBJYW1SZXNvdXJjZVNjcnV0aW5pZXMgPSBbXG4gICAgUmVzb3VyY2VTY3J1dGlueVR5cGUuUmVzb3VyY2VQb2xpY3lSZXNvdXJjZSxcbiAgICBSZXNvdXJjZVNjcnV0aW55VHlwZS5JZGVudGl0eVBvbGljeVJlc291cmNlLFxuICAgIFJlc291cmNlU2NydXRpbnlUeXBlLkxhbWJkYVBlcm1pc3Npb24sXG4gIF07XG5cbiAgcHVibGljIHJlYWRvbmx5IHN0YXRlbWVudHMgPSBuZXcgRGlmZmFibGVDb2xsZWN0aW9uPFN0YXRlbWVudD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IG1hbmFnZWRQb2xpY2llcyA9IG5ldyBEaWZmYWJsZUNvbGxlY3Rpb248TWFuYWdlZFBvbGljeUF0dGFjaG1lbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IElhbUNoYW5nZXNQcm9wcykge1xuICAgIGZvciAoY29uc3QgcHJvcGVydHlDaGFuZ2Ugb2YgcHJvcHMucHJvcGVydHlDaGFuZ2VzKSB7XG4gICAgICB0aGlzLnJlYWRQcm9wZXJ0eUNoYW5nZShwcm9wZXJ0eUNoYW5nZSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgcmVzb3VyY2VDaGFuZ2Ugb2YgcHJvcHMucmVzb3VyY2VDaGFuZ2VzKSB7XG4gICAgICB0aGlzLnJlYWRSZXNvdXJjZUNoYW5nZShyZXNvdXJjZUNoYW5nZSk7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZW1lbnRzLmNhbGN1bGF0ZURpZmYoKTtcbiAgICB0aGlzLm1hbmFnZWRQb2xpY2llcy5jYWxjdWxhdGVEaWZmKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0NoYW5nZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50cy5oYXNDaGFuZ2VzIHx8IHRoaXMubWFuYWdlZFBvbGljaWVzLmhhc0NoYW5nZXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGNoYW5nZXMgaW5jbHVkZSBicm9hZGVuZWQgcGVybWlzc2lvbnNcbiAgICpcbiAgICogUGVybWlzc2lvbnMgYXJlIGJyb2FkZW5lZCBpZiBwb3NpdGl2ZSBzdGF0ZW1lbnRzIGFyZSBhZGRlZCBvclxuICAgKiBuZWdhdGl2ZSBzdGF0ZW1lbnRzIGFyZSByZW1vdmVkLCBvciBpZiBtYW5hZ2VkIHBvbGljaWVzIGFyZSBhZGRlZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgcGVybWlzc2lvbnNCcm9hZGVuZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50cy5hZGRpdGlvbnMuc29tZShzID0+ICFzLmlzTmVnYXRpdmVTdGF0ZW1lbnQpXG4gICAgICAgIHx8IHRoaXMuc3RhdGVtZW50cy5yZW1vdmFscy5zb21lKHMgPT4gcy5pc05lZ2F0aXZlU3RhdGVtZW50KVxuICAgICAgICB8fCB0aGlzLm1hbmFnZWRQb2xpY2llcy5oYXNBZGRpdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgc3VtbWFyeSB0YWJsZSBvZiBjaGFuZ2VzXG4gICAqL1xuICBwdWJsaWMgc3VtbWFyaXplU3RhdGVtZW50cygpOiBzdHJpbmdbXVtdIHtcbiAgICBjb25zdCByZXQ6IHN0cmluZ1tdW10gPSBbXTtcblxuICAgIGNvbnN0IGhlYWRlciA9IFsnJywgJ1Jlc291cmNlJywgJ0VmZmVjdCcsICdBY3Rpb24nLCAnUHJpbmNpcGFsJywgJ0NvbmRpdGlvbiddO1xuXG4gICAgLy8gRmlyc3QgZ2VuZXJhdGUgYWxsIGxpbmVzLCB0aGVuIHNvcnQgb24gUmVzb3VyY2Ugc28gdGhhdCBzaW1pbGFyIHJlc291cmNlcyBhcmUgdG9nZXRoZXJcbiAgICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiB0aGlzLnN0YXRlbWVudHMuYWRkaXRpb25zKSB7XG4gICAgICBjb25zdCByZW5kZXJlZFN0YXRlbWVudCA9IHN0YXRlbWVudC5yZW5kZXIoKTtcbiAgICAgIHJldC5wdXNoKFtcbiAgICAgICAgJysnLFxuICAgICAgICByZW5kZXJlZFN0YXRlbWVudC5yZXNvdXJjZSxcbiAgICAgICAgcmVuZGVyZWRTdGF0ZW1lbnQuZWZmZWN0LFxuICAgICAgICByZW5kZXJlZFN0YXRlbWVudC5hY3Rpb24sXG4gICAgICAgIHJlbmRlcmVkU3RhdGVtZW50LnByaW5jaXBhbCxcbiAgICAgICAgcmVuZGVyZWRTdGF0ZW1lbnQuY29uZGl0aW9uLFxuICAgICAgXS5tYXAocyA9PiBjaGFsay5ncmVlbihzKSkpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiB0aGlzLnN0YXRlbWVudHMucmVtb3ZhbHMpIHtcbiAgICAgIGNvbnN0IHJlbmRlcmVkU3RhdGVtZW50ID0gc3RhdGVtZW50LnJlbmRlcigpO1xuICAgICAgcmV0LnB1c2goW1xuICAgICAgICBjaGFsay5yZWQoJy0nKSxcbiAgICAgICAgcmVuZGVyZWRTdGF0ZW1lbnQucmVzb3VyY2UsXG4gICAgICAgIHJlbmRlcmVkU3RhdGVtZW50LmVmZmVjdCxcbiAgICAgICAgcmVuZGVyZWRTdGF0ZW1lbnQuYWN0aW9uLFxuICAgICAgICByZW5kZXJlZFN0YXRlbWVudC5wcmluY2lwYWwsXG4gICAgICAgIHJlbmRlcmVkU3RhdGVtZW50LmNvbmRpdGlvbixcbiAgICAgIF0ubWFwKHMgPT4gY2hhbGsucmVkKHMpKSk7XG4gICAgfVxuXG4gICAgLy8gU29ydCBieSAybmQgY29sdW1uXG4gICAgcmV0LnNvcnQobWFrZUNvbXBhcmF0b3IoKHJvdzogc3RyaW5nW10pID0+IFtyb3dbMV1dKSk7XG5cbiAgICByZXQuc3BsaWNlKDAsIDAsIGhlYWRlcik7XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHVibGljIHN1bW1hcml6ZU1hbmFnZWRQb2xpY2llcygpOiBzdHJpbmdbXVtdIHtcbiAgICBjb25zdCByZXQ6IHN0cmluZ1tdW10gPSBbXTtcbiAgICBjb25zdCBoZWFkZXIgPSBbJycsICdSZXNvdXJjZScsICdNYW5hZ2VkIFBvbGljeSBBUk4nXTtcblxuICAgIGZvciAoY29uc3QgYXR0IG9mIHRoaXMubWFuYWdlZFBvbGljaWVzLmFkZGl0aW9ucykge1xuICAgICAgcmV0LnB1c2goW1xuICAgICAgICAnKycsXG4gICAgICAgIGF0dC5pZGVudGl0eUFybixcbiAgICAgICAgYXR0Lm1hbmFnZWRQb2xpY3lBcm4sXG4gICAgICBdLm1hcChzID0+IGNoYWxrLmdyZWVuKHMpKSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgYXR0IG9mIHRoaXMubWFuYWdlZFBvbGljaWVzLnJlbW92YWxzKSB7XG4gICAgICByZXQucHVzaChbXG4gICAgICAgICctJyxcbiAgICAgICAgYXR0LmlkZW50aXR5QXJuLFxuICAgICAgICBhdHQubWFuYWdlZFBvbGljeUFybixcbiAgICAgIF0ubWFwKHMgPT4gY2hhbGsucmVkKHMpKSk7XG4gICAgfVxuXG4gICAgLy8gU29ydCBieSAybmQgY29sdW1uXG4gICAgcmV0LnNvcnQobWFrZUNvbXBhcmF0b3IoKHJvdzogc3RyaW5nW10pID0+IFtyb3dbMV1dKSk7XG5cbiAgICByZXQuc3BsaWNlKDAsIDAsIGhlYWRlcik7XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1hY2hpbmUtcmVhZGFibGUgdmVyc2lvbiBvZiB0aGUgY2hhbmdlcy5cbiAgICogVGhpcyBpcyBvbmx5IHVzZWQgaW4gdGVzdHMuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF90b0pzb24oKTogSWFtQ2hhbmdlc0pzb24ge1xuICAgIHJldHVybiBkZWVwUmVtb3ZlVW5kZWZpbmVkKHtcbiAgICAgIHN0YXRlbWVudEFkZGl0aW9uczogZHJvcElmRW1wdHkodGhpcy5zdGF0ZW1lbnRzLmFkZGl0aW9ucy5tYXAocyA9PiBzLl90b0pzb24oKSkpLFxuICAgICAgc3RhdGVtZW50UmVtb3ZhbHM6IGRyb3BJZkVtcHR5KHRoaXMuc3RhdGVtZW50cy5yZW1vdmFscy5tYXAocyA9PiBzLl90b0pzb24oKSkpLFxuICAgICAgbWFuYWdlZFBvbGljeUFkZGl0aW9uczogZHJvcElmRW1wdHkodGhpcy5tYW5hZ2VkUG9saWNpZXMuYWRkaXRpb25zLm1hcChzID0+IHMuX3RvSnNvbigpKSksXG4gICAgICBtYW5hZ2VkUG9saWN5UmVtb3ZhbHM6IGRyb3BJZkVtcHR5KHRoaXMubWFuYWdlZFBvbGljaWVzLnJlbW92YWxzLm1hcChzID0+IHMuX3RvSnNvbigpKSksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRQcm9wZXJ0eUNoYW5nZShwcm9wZXJ0eUNoYW5nZTogUHJvcGVydHlDaGFuZ2UpIHtcbiAgICBzd2l0Y2ggKHByb3BlcnR5Q2hhbmdlLnNjcnV0aW55VHlwZSkge1xuICAgICAgY2FzZSBQcm9wZXJ0eVNjcnV0aW55VHlwZS5JbmxpbmVJZGVudGl0eVBvbGljaWVzOlxuICAgICAgICAvLyBBV1M6OklBTTo6eyBSb2xlIHwgVXNlciB8IEdyb3VwIH0uUG9saWNpZXNcbiAgICAgICAgdGhpcy5zdGF0ZW1lbnRzLmFkZE9sZCguLi50aGlzLnJlYWRJZGVudGl0eVBvbGljaWVzKHByb3BlcnR5Q2hhbmdlLm9sZFZhbHVlLCBwcm9wZXJ0eUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkTmV3KC4uLnRoaXMucmVhZElkZW50aXR5UG9saWNpZXMocHJvcGVydHlDaGFuZ2UubmV3VmFsdWUsIHByb3BlcnR5Q2hhbmdlLnJlc291cmNlTG9naWNhbElkKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQcm9wZXJ0eVNjcnV0aW55VHlwZS5JbmxpbmVSZXNvdXJjZVBvbGljeTpcbiAgICAgICAgLy8gQW55IFBvbGljeURvY3VtZW50IG9uIGEgcmVzb3VyY2UgKGluY2x1ZGluZyBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQpXG4gICAgICAgIHRoaXMuc3RhdGVtZW50cy5hZGRPbGQoLi4udGhpcy5yZWFkUmVzb3VyY2VTdGF0ZW1lbnRzKHByb3BlcnR5Q2hhbmdlLm9sZFZhbHVlLCBwcm9wZXJ0eUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkTmV3KC4uLnRoaXMucmVhZFJlc291cmNlU3RhdGVtZW50cyhwcm9wZXJ0eUNoYW5nZS5uZXdWYWx1ZSwgcHJvcGVydHlDaGFuZ2UucmVzb3VyY2VMb2dpY2FsSWQpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFByb3BlcnR5U2NydXRpbnlUeXBlLk1hbmFnZWRQb2xpY2llczpcbiAgICAgICAgLy8gSnVzdCBhIGxpc3Qgb2YgbWFuYWdlZCBwb2xpY2llc1xuICAgICAgICB0aGlzLm1hbmFnZWRQb2xpY2llcy5hZGRPbGQoLi4udGhpcy5yZWFkTWFuYWdlZFBvbGljaWVzKHByb3BlcnR5Q2hhbmdlLm9sZFZhbHVlLCBwcm9wZXJ0eUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICB0aGlzLm1hbmFnZWRQb2xpY2llcy5hZGROZXcoLi4udGhpcy5yZWFkTWFuYWdlZFBvbGljaWVzKHByb3BlcnR5Q2hhbmdlLm5ld1ZhbHVlLCBwcm9wZXJ0eUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlYWRSZXNvdXJjZUNoYW5nZShyZXNvdXJjZUNoYW5nZTogUmVzb3VyY2VDaGFuZ2UpIHtcbiAgICBzd2l0Y2ggKHJlc291cmNlQ2hhbmdlLnNjcnV0aW55VHlwZSkge1xuICAgICAgY2FzZSBSZXNvdXJjZVNjcnV0aW55VHlwZS5JZGVudGl0eVBvbGljeVJlc291cmNlOlxuICAgICAgICAvLyBBV1M6OklBTTo6UG9saWN5XG4gICAgICAgIHRoaXMuc3RhdGVtZW50cy5hZGRPbGQoLi4udGhpcy5yZWFkSWRlbnRpdHlQb2xpY3lSZXNvdXJjZShyZXNvdXJjZUNoYW5nZS5vbGRQcm9wZXJ0aWVzKSk7XG4gICAgICAgIHRoaXMuc3RhdGVtZW50cy5hZGROZXcoLi4udGhpcy5yZWFkSWRlbnRpdHlQb2xpY3lSZXNvdXJjZShyZXNvdXJjZUNoYW5nZS5uZXdQcm9wZXJ0aWVzKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBSZXNvdXJjZVNjcnV0aW55VHlwZS5SZXNvdXJjZVBvbGljeVJlc291cmNlOlxuICAgICAgICAvLyBBV1M6Oio6OntCdWNrZXQsUXVldWUsVG9waWN9UG9saWN5XG4gICAgICAgIHRoaXMuc3RhdGVtZW50cy5hZGRPbGQoLi4udGhpcy5yZWFkUmVzb3VyY2VQb2xpY3lSZXNvdXJjZShyZXNvdXJjZUNoYW5nZS5vbGRQcm9wZXJ0aWVzKSk7XG4gICAgICAgIHRoaXMuc3RhdGVtZW50cy5hZGROZXcoLi4udGhpcy5yZWFkUmVzb3VyY2VQb2xpY3lSZXNvdXJjZShyZXNvdXJjZUNoYW5nZS5uZXdQcm9wZXJ0aWVzKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBSZXNvdXJjZVNjcnV0aW55VHlwZS5MYW1iZGFQZXJtaXNzaW9uOlxuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkT2xkKC4uLnRoaXMucmVhZExhbWJkYVN0YXRlbWVudHMocmVzb3VyY2VDaGFuZ2Uub2xkUHJvcGVydGllcykpO1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkTmV3KC4uLnRoaXMucmVhZExhbWJkYVN0YXRlbWVudHMocmVzb3VyY2VDaGFuZ2UubmV3UHJvcGVydGllcykpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgYSBsaXN0IG9mIHBvbGljaWVzIG9uIGFuIGlkZW50aXR5XG4gICAqL1xuICBwcml2YXRlIHJlYWRJZGVudGl0eVBvbGljaWVzKHBvbGljaWVzOiBhbnksIGxvZ2ljYWxJZDogc3RyaW5nKTogU3RhdGVtZW50W10ge1xuICAgIGlmIChwb2xpY2llcyA9PT0gdW5kZWZpbmVkIHx8ICFBcnJheS5pc0FycmF5KHBvbGljaWVzKSkgeyByZXR1cm4gW107IH1cblxuICAgIGNvbnN0IGFwcGxpZXNUb1ByaW5jaXBhbCA9ICdBV1M6JHsnICsgbG9naWNhbElkICsgJ30nO1xuXG4gICAgcmV0dXJuIGZsYXRNYXAocG9saWNpZXMsIChwb2xpY3k6IGFueSkgPT4ge1xuICAgICAgLy8gY2hlY2sgaWYgdGhlIFBvbGljeSBpdHNlbGYgaXMgbm90IGFuIGludHJpbnNpYywgbGlrZSBhbiBGbjo6SWZcbiAgICAgIGNvbnN0IHVucGFyc2VkU3RhdGVtZW50ID0gcG9saWN5LlBvbGljeURvY3VtZW50Py5TdGF0ZW1lbnRcbiAgICAgICAgPyBwb2xpY3kuUG9saWN5RG9jdW1lbnQuU3RhdGVtZW50XG4gICAgICAgIDogcG9saWN5O1xuICAgICAgcmV0dXJuIGRlZmF1bHRQcmluY2lwYWwoYXBwbGllc1RvUHJpbmNpcGFsLCBwYXJzZVN0YXRlbWVudHMocmVuZGVySW50cmluc2ljcyh1bnBhcnNlZFN0YXRlbWVudCkpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBhbiBJQU06OlBvbGljeSByZXNvdXJjZVxuICAgKi9cbiAgcHJpdmF0ZSByZWFkSWRlbnRpdHlQb2xpY3lSZXNvdXJjZShwcm9wZXJ0aWVzOiBhbnkpOiBTdGF0ZW1lbnRbXSB7XG4gICAgaWYgKHByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gW107IH1cblxuICAgIHByb3BlcnRpZXMgPSByZW5kZXJJbnRyaW5zaWNzKHByb3BlcnRpZXMpO1xuXG4gICAgY29uc3QgcHJpbmNpcGFscyA9IChwcm9wZXJ0aWVzLkdyb3VwcyB8fCBbXSkuY29uY2F0KHByb3BlcnRpZXMuVXNlcnMgfHwgW10pLmNvbmNhdChwcm9wZXJ0aWVzLlJvbGVzIHx8IFtdKTtcbiAgICByZXR1cm4gZmxhdE1hcChwcmluY2lwYWxzLCAocHJpbmNpcGFsOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHJlZiA9ICdBV1M6JyArIHByaW5jaXBhbDtcbiAgICAgIHJldHVybiBkZWZhdWx0UHJpbmNpcGFsKHJlZiwgcGFyc2VTdGF0ZW1lbnRzKHByb3BlcnRpZXMuUG9saWN5RG9jdW1lbnQuU3RhdGVtZW50KSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRSZXNvdXJjZVN0YXRlbWVudHMocG9saWN5OiBhbnksIGxvZ2ljYWxJZDogc3RyaW5nKTogU3RhdGVtZW50W10ge1xuICAgIGlmIChwb2xpY3kgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gW107IH1cblxuICAgIGNvbnN0IGFwcGxpZXNUb1Jlc291cmNlID0gJyR7JyArIGxvZ2ljYWxJZCArICcuQXJufSc7XG4gICAgcmV0dXJuIGRlZmF1bHRSZXNvdXJjZShhcHBsaWVzVG9SZXNvdXJjZSwgcGFyc2VTdGF0ZW1lbnRzKHJlbmRlckludHJpbnNpY3MocG9saWN5LlN0YXRlbWVudCkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBhbiBBV1M6Oio6OntCdWNrZXQsVG9waWMsUXVldWV9cG9saWN5XG4gICAqL1xuICBwcml2YXRlIHJlYWRSZXNvdXJjZVBvbGljeVJlc291cmNlKHByb3BlcnRpZXM6IGFueSk6IFN0YXRlbWVudFtdIHtcbiAgICBpZiAocHJvcGVydGllcyA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBbXTsgfVxuXG4gICAgcHJvcGVydGllcyA9IHJlbmRlckludHJpbnNpY3MocHJvcGVydGllcyk7XG5cbiAgICBjb25zdCBwb2xpY3lLZXlzID0gT2JqZWN0LmtleXMocHJvcGVydGllcykuZmlsdGVyKGtleSA9PiBrZXkuaW5kZXhPZignUG9saWN5JykgPiAtMSk7XG5cbiAgICAvLyBGaW5kIHRoZSBrZXkgdGhhdCBpZGVudGlmaWVzIHRoZSByZXNvdXJjZShzKSB0aGlzIHBvbGljeSBhcHBsaWVzIHRvXG4gICAgY29uc3QgcmVzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMocHJvcGVydGllcykuZmlsdGVyKGtleSA9PiAhcG9saWN5S2V5cy5pbmNsdWRlcyhrZXkpICYmICFrZXkuZW5kc1dpdGgoJ05hbWUnKSk7XG4gICAgbGV0IHJlc291cmNlcyA9IHJlc291cmNlS2V5cy5sZW5ndGggPT09IDEgPyBwcm9wZXJ0aWVzW3Jlc291cmNlS2V5c1swXV0gOiBbJz8/PyddO1xuXG4gICAgLy8gRm9yIHNvbWUgcmVzb3VyY2VzLCB0aGlzIGlzIGEgc2luZ2xldG9uIHN0cmluZywgZm9yIHNvbWUgaXQncyBhbiBhcnJheVxuICAgIGlmICghQXJyYXkuaXNBcnJheShyZXNvdXJjZXMpKSB7XG4gICAgICByZXNvdXJjZXMgPSBbcmVzb3VyY2VzXTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmxhdE1hcChyZXNvdXJjZXMsIChyZXNvdXJjZTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gZGVmYXVsdFJlc291cmNlKHJlc291cmNlLCBwYXJzZVN0YXRlbWVudHMocHJvcGVydGllc1twb2xpY3lLZXlzWzBdXS5TdGF0ZW1lbnQpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZE1hbmFnZWRQb2xpY2llcyhwb2xpY3lBcm5zOiBhbnksIGxvZ2ljYWxJZDogc3RyaW5nKTogTWFuYWdlZFBvbGljeUF0dGFjaG1lbnRbXSB7XG4gICAgaWYgKCFwb2xpY3lBcm5zKSB7IHJldHVybiBbXTsgfVxuXG4gICAgY29uc3QgcmVwID0gJyR7JyArIGxvZ2ljYWxJZCArICd9JztcbiAgICByZXR1cm4gTWFuYWdlZFBvbGljeUF0dGFjaG1lbnQucGFyc2VNYW5hZ2VkUG9saWNpZXMocmVwLCByZW5kZXJJbnRyaW5zaWNzKHBvbGljeUFybnMpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZExhbWJkYVN0YXRlbWVudHMocHJvcGVydGllcz86IFByb3BlcnR5TWFwKTogU3RhdGVtZW50W10ge1xuICAgIGlmICghcHJvcGVydGllcykgeyByZXR1cm4gW107IH1cblxuICAgIHJldHVybiBbcGFyc2VMYW1iZGFQZXJtaXNzaW9uKHJlbmRlckludHJpbnNpY3MocHJvcGVydGllcykpXTtcbiAgfVxufVxuXG4vKipcbiAqIFNldCBhbiB1bmRlZmluZWQgb3Igd2lsZGNhcmRlZCBwcmluY2lwYWwgb24gdGhlc2Ugc3RhdGVtZW50c1xuICovXG5mdW5jdGlvbiBkZWZhdWx0UHJpbmNpcGFsKHByaW5jaXBhbDogc3RyaW5nLCBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSkge1xuICBzdGF0ZW1lbnRzLmZvckVhY2gocyA9PiBzLnByaW5jaXBhbHMucmVwbGFjZUVtcHR5KHByaW5jaXBhbCkpO1xuICBzdGF0ZW1lbnRzLmZvckVhY2gocyA9PiBzLnByaW5jaXBhbHMucmVwbGFjZVN0YXIocHJpbmNpcGFsKSk7XG4gIHJldHVybiBzdGF0ZW1lbnRzO1xufVxuXG4vKipcbiAqIFNldCBhbiB1bmRlZmluZWQgb3Igd2lsZGNhcmRlZCByZXNvdXJjZSBvbiB0aGVzZSBzdGF0ZW1lbnRzXG4gKi9cbmZ1bmN0aW9uIGRlZmF1bHRSZXNvdXJjZShyZXNvdXJjZTogc3RyaW5nLCBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSkge1xuICBzdGF0ZW1lbnRzLmZvckVhY2gocyA9PiBzLnJlc291cmNlcy5yZXBsYWNlRW1wdHkocmVzb3VyY2UpKTtcbiAgc3RhdGVtZW50cy5mb3JFYWNoKHMgPT4gcy5yZXNvdXJjZXMucmVwbGFjZVN0YXIocmVzb3VyY2UpKTtcbiAgcmV0dXJuIHN0YXRlbWVudHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWFtQ2hhbmdlc0pzb24ge1xuICBzdGF0ZW1lbnRBZGRpdGlvbnM/OiBBcnJheTxNYXliZVBhcnNlZDxTdGF0ZW1lbnRKc29uPj47XG4gIHN0YXRlbWVudFJlbW92YWxzPzogQXJyYXk8TWF5YmVQYXJzZWQ8U3RhdGVtZW50SnNvbj4+O1xuICBtYW5hZ2VkUG9saWN5QWRkaXRpb25zPzogQXJyYXk8TWF5YmVQYXJzZWQ8TWFuYWdlZFBvbGljeUpzb24+PjtcbiAgbWFuYWdlZFBvbGljeVJlbW92YWxzPzogQXJyYXk8TWF5YmVQYXJzZWQ8TWFuYWdlZFBvbGljeUpzb24+Pjtcbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ManagedPolicyAttachment = void 0;\nconst maybe_parsed_1 = require(\"../diff/maybe-parsed\");\nclass ManagedPolicyAttachment {\n static parseManagedPolicies(identityArn, arns) {\n return typeof arns === 'string'\n ? [new ManagedPolicyAttachment(identityArn, arns)]\n : arns.map((arn) => new ManagedPolicyAttachment(identityArn, arn));\n }\n constructor(identityArn, managedPolicyArn) {\n this.identityArn = identityArn;\n this.managedPolicyArn = managedPolicyArn;\n }\n equal(other) {\n return this.identityArn === other.identityArn\n && this.managedPolicyArn === other.managedPolicyArn;\n }\n /**\n * Return a machine-readable version of the changes.\n * This is only used in tests.\n *\n * @internal\n */\n _toJson() {\n return (0, maybe_parsed_1.mkParsed)({\n identityArn: this.identityArn,\n managedPolicyArn: this.managedPolicyArn,\n });\n }\n}\nexports.ManagedPolicyAttachment = ManagedPolicyAttachment;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZC1wb2xpY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtYW5hZ2VkLXBvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1REFBNkQ7QUFFN0QsTUFBYSx1QkFBdUI7SUFDM0IsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFdBQW1CLEVBQUUsSUFBdUI7UUFDN0UsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRO1lBQzdCLENBQUMsQ0FBQyxDQUFDLElBQUksdUJBQXVCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2xELENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxZQUE0QixXQUFtQixFQUFrQixnQkFBd0I7UUFBN0QsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFBa0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFRO0lBQ3pGLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBOEI7UUFDekMsT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLEtBQUssQ0FBQyxXQUFXO2VBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksT0FBTztRQUNaLE9BQU8sSUFBQSx1QkFBUSxFQUFDO1lBQ2QsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7U0FDeEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBM0JELDBEQTJCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1heWJlUGFyc2VkLCBta1BhcnNlZCB9IGZyb20gJy4uL2RpZmYvbWF5YmUtcGFyc2VkJztcblxuZXhwb3J0IGNsYXNzIE1hbmFnZWRQb2xpY3lBdHRhY2htZW50IHtcbiAgcHVibGljIHN0YXRpYyBwYXJzZU1hbmFnZWRQb2xpY2llcyhpZGVudGl0eUFybjogc3RyaW5nLCBhcm5zOiBzdHJpbmcgfCBzdHJpbmdbXSk6IE1hbmFnZWRQb2xpY3lBdHRhY2htZW50W10ge1xuICAgIHJldHVybiB0eXBlb2YgYXJucyA9PT0gJ3N0cmluZydcbiAgICAgID8gW25ldyBNYW5hZ2VkUG9saWN5QXR0YWNobWVudChpZGVudGl0eUFybiwgYXJucyldXG4gICAgICA6IGFybnMubWFwKChhcm46IHN0cmluZykgPT4gbmV3IE1hbmFnZWRQb2xpY3lBdHRhY2htZW50KGlkZW50aXR5QXJuLCBhcm4pKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBpZGVudGl0eUFybjogc3RyaW5nLCBwdWJsaWMgcmVhZG9ubHkgbWFuYWdlZFBvbGljeUFybjogc3RyaW5nKSB7XG4gIH1cblxuICBwdWJsaWMgZXF1YWwob3RoZXI6IE1hbmFnZWRQb2xpY3lBdHRhY2htZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaWRlbnRpdHlBcm4gPT09IG90aGVyLmlkZW50aXR5QXJuXG4gICAgICAgICYmIHRoaXMubWFuYWdlZFBvbGljeUFybiA9PT0gb3RoZXIubWFuYWdlZFBvbGljeUFybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtYWNoaW5lLXJlYWRhYmxlIHZlcnNpb24gb2YgdGhlIGNoYW5nZXMuXG4gICAqIFRoaXMgaXMgb25seSB1c2VkIGluIHRlc3RzLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfdG9Kc29uKCk6IE1heWJlUGFyc2VkPE1hbmFnZWRQb2xpY3lKc29uPiB7XG4gICAgcmV0dXJuIG1rUGFyc2VkKHtcbiAgICAgIGlkZW50aXR5QXJuOiB0aGlzLmlkZW50aXR5QXJuLFxuICAgICAgbWFuYWdlZFBvbGljeUFybjogdGhpcy5tYW5hZ2VkUG9saWN5QXJuLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFuYWdlZFBvbGljeUpzb24ge1xuICBpZGVudGl0eUFybjogc3RyaW5nO1xuICBtYW5hZ2VkUG9saWN5QXJuOiBzdHJpbmc7XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.renderCondition = exports.Effect = exports.Targets = exports.parseLambdaPermission = exports.parseStatements = exports.Statement = void 0;\nconst maybe_parsed_1 = require(\"../diff/maybe-parsed\");\nconst util_1 = require(\"../util\");\n// namespace object imports won't work in the bundle for function exports\n// eslint-disable-next-line @typescript-eslint/no-require-imports\nconst deepEqual = require('fast-deep-equal');\nclass Statement {\n constructor(statement) {\n if (typeof statement === 'string') {\n this.sid = undefined;\n this.effect = Effect.Unknown;\n this.resources = new Targets({}, '', '');\n this.actions = new Targets({}, '', '');\n this.principals = new Targets({}, '', '');\n this.condition = undefined;\n this.serializedIntrinsic = statement;\n }\n else {\n this.sid = expectString(statement.Sid);\n this.effect = expectEffect(statement.Effect);\n this.resources = new Targets(statement, 'Resource', 'NotResource');\n this.actions = new Targets(statement, 'Action', 'NotAction');\n this.principals = new Targets(statement, 'Principal', 'NotPrincipal');\n this.condition = statement.Condition;\n this.serializedIntrinsic = undefined;\n }\n }\n /**\n * Whether this statement is equal to the other statement\n */\n equal(other) {\n return (this.sid === other.sid\n && this.effect === other.effect\n && this.serializedIntrinsic === other.serializedIntrinsic\n && this.resources.equal(other.resources)\n && this.actions.equal(other.actions)\n && this.principals.equal(other.principals)\n && deepEqual(this.condition, other.condition));\n }\n render() {\n return this.serializedIntrinsic\n ? {\n resource: this.serializedIntrinsic,\n effect: '',\n action: '',\n principal: this.principals.render(),\n condition: '',\n }\n : {\n resource: this.resources.render(),\n effect: this.effect,\n action: this.actions.render(),\n principal: this.principals.render(),\n condition: renderCondition(this.condition),\n };\n }\n /**\n * Return a machine-readable version of the changes.\n * This is only used in tests.\n *\n * @internal\n */\n _toJson() {\n return this.serializedIntrinsic\n ? (0, maybe_parsed_1.mkUnparseable)(this.serializedIntrinsic)\n : (0, maybe_parsed_1.mkParsed)((0, util_1.deepRemoveUndefined)({\n sid: this.sid,\n effect: this.effect,\n resources: this.resources._toJson(),\n principals: this.principals._toJson(),\n actions: this.actions._toJson(),\n condition: this.condition,\n }));\n }\n /**\n * Whether this is a negative statement\n *\n * A statement is negative if any of its targets are negative, inverted\n * if the Effect is Deny.\n */\n get isNegativeStatement() {\n const notTarget = this.actions.not || this.principals.not || this.resources.not;\n return this.effect === Effect.Allow ? notTarget : !notTarget;\n }\n}\nexports.Statement = Statement;\n/**\n * Parse a list of statements from undefined, a Statement, or a list of statements\n */\nfunction parseStatements(x) {\n if (x === undefined) {\n x = [];\n }\n if (!Array.isArray(x)) {\n x = [x];\n }\n return x.map((s) => new Statement(s));\n}\nexports.parseStatements = parseStatements;\n/**\n * Parse a Statement from a Lambda::Permission object\n *\n * This is actually what Lambda adds to the policy document if you call AddPermission.\n */\nfunction parseLambdaPermission(x) {\n // Construct a statement from\n const statement = {\n Effect: 'Allow',\n Action: x.Action,\n Resource: x.FunctionName,\n };\n if (x.Principal !== undefined) {\n if (x.Principal === '*') {\n // *\n statement.Principal = '*';\n }\n else if (/^\\d{12}$/.test(x.Principal)) {\n // Account number\n // eslint-disable-next-line @aws-cdk/no-literal-partition\n statement.Principal = { AWS: `arn:aws:iam::${x.Principal}:root` };\n }\n else {\n // Assume it's a service principal\n // We might get this wrong vs. the previous one for tokens. Nothing to be done\n // about that. It's only for human readable consumption after all.\n statement.Principal = { Service: x.Principal };\n }\n }\n if (x.SourceArn !== undefined) {\n if (statement.Condition === undefined) {\n statement.Condition = {};\n }\n statement.Condition.ArnLike = { 'AWS:SourceArn': x.SourceArn };\n }\n if (x.SourceAccount !== undefined) {\n if (statement.Condition === undefined) {\n statement.Condition = {};\n }\n statement.Condition.StringEquals = { 'AWS:SourceAccount': x.SourceAccount };\n }\n if (x.EventSourceToken !== undefined) {\n if (statement.Condition === undefined) {\n statement.Condition = {};\n }\n statement.Condition.StringEquals = { 'lambda:EventSourceToken': x.EventSourceToken };\n }\n return new Statement(statement);\n}\nexports.parseLambdaPermission = parseLambdaPermission;\n/**\n * Targets for a field\n */\nclass Targets {\n constructor(statement, positiveKey, negativeKey) {\n if (negativeKey in statement) {\n this.values = forceListOfStrings(statement[negativeKey]);\n this.not = true;\n }\n else {\n this.values = forceListOfStrings(statement[positiveKey]);\n this.not = false;\n }\n this.values.sort();\n }\n get empty() {\n return this.values.length === 0;\n }\n /**\n * Whether this set of targets is equal to the other set of targets\n */\n equal(other) {\n return this.not === other.not && deepEqual(this.values.sort(), other.values.sort());\n }\n /**\n * If the current value set is empty, put this in it\n */\n replaceEmpty(replacement) {\n if (this.empty) {\n this.values.push(replacement);\n }\n }\n /**\n * If the actions contains a '*', replace with this string.\n */\n replaceStar(replacement) {\n for (let i = 0; i < this.values.length; i++) {\n if (this.values[i] === '*') {\n this.values[i] = replacement;\n }\n }\n this.values.sort();\n }\n /**\n * Render into a summary table cell\n */\n render() {\n return this.not\n ? this.values.map(s => `NOT ${s}`).join('\\n')\n : this.values.join('\\n');\n }\n /**\n * Return a machine-readable version of the changes.\n * This is only used in tests.\n *\n * @internal\n */\n _toJson() {\n return { not: this.not, values: this.values };\n }\n}\nexports.Targets = Targets;\nvar Effect;\n(function (Effect) {\n Effect[\"Unknown\"] = \"Unknown\";\n Effect[\"Allow\"] = \"Allow\";\n Effect[\"Deny\"] = \"Deny\";\n})(Effect || (exports.Effect = Effect = {}));\nfunction expectString(x) {\n return typeof x === 'string' ? x : undefined;\n}\nfunction expectEffect(x) {\n if (x === Effect.Allow || x === Effect.Deny) {\n return x;\n }\n return Effect.Unknown;\n}\nfunction forceListOfStrings(x) {\n if (typeof x === 'string') {\n return [x];\n }\n if (typeof x === 'undefined' || x === null) {\n return [];\n }\n if (Array.isArray(x)) {\n return x.map(e => forceListOfStrings(e).join(','));\n }\n if (typeof x === 'object' && x !== null) {\n const ret = [];\n for (const [key, value] of Object.entries(x)) {\n ret.push(...forceListOfStrings(value).map(s => `${key}:${s}`));\n }\n return ret;\n }\n return [`${x}`];\n}\n/**\n * Render the Condition column\n */\nfunction renderCondition(condition) {\n if (!condition || Object.keys(condition).length === 0) {\n return '';\n }\n const jsonRepresentation = JSON.stringify(condition, undefined, 2);\n // The JSON representation looks like this:\n //\n // {\n // \"ArnLike\": {\n // \"AWS:SourceArn\": \"${MyTopic86869434}\"\n // }\n // }\n //\n // We can make it more compact without losing information by getting rid of the outermost braces\n // and the indentation.\n const lines = jsonRepresentation.split('\\n');\n return lines.slice(1, lines.length - 1).map(s => s.slice(2)).join('\\n');\n}\nexports.renderCondition = renderCondition;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RhdGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUE0RTtBQUM1RSxrQ0FBOEM7QUFFOUMseUVBQXlFO0FBQ3pFLGlFQUFpRTtBQUNqRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUU3QyxNQUFhLFNBQVM7SUFpQ3BCLFlBQVksU0FBOEI7UUFDeEMsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUU7WUFDakMsSUFBSSxDQUFDLEdBQUcsR0FBRyxTQUFTLENBQUM7WUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO1lBQzdCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN6QyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDdkMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQzFDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1lBQzNCLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUM7U0FDdEM7YUFBTTtZQUNMLElBQUksQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ25FLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxPQUFP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QUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMxRSxDQUFDO0FBaEJELDBDQWdCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1heWJlUGFyc2VkLCBta1BhcnNlZCwgbWtVbnBhcnNlYWJsZSB9IGZyb20gJy4uL2RpZmYvbWF5YmUtcGFyc2VkJztcbmltcG9ydCB7IGRlZXBSZW1vdmVVbmRlZmluZWQgfSBmcm9tICcuLi91dGlsJztcblxuLy8gbmFtZXNwYWNlIG9iamVjdCBpbXBvcnRzIHdvbid0IHdvcmsgaW4gdGhlIGJ1bmRsZSBmb3IgZnVuY3Rpb24gZXhwb3J0c1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbmNvbnN0IGRlZXBFcXVhbCA9IHJlcXVpcmUoJ2Zhc3QtZGVlcC1lcXVhbCcpO1xuXG5leHBvcnQgY2xhc3MgU3RhdGVtZW50IHtcbiAgLyoqXG4gICAqIFN0YXRlbWVudCBJRFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNpZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIC8qKlxuICAgKiBTdGF0ZW1lbnQgZWZmZWN0XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZWZmZWN0OiBFZmZlY3Q7XG5cbiAgLyoqXG4gICAqIFJlc291cmNlc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlczogVGFyZ2V0cztcblxuICAvKipcbiAgICogUHJpbmNpcGFsc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByaW5jaXBhbHM6IFRhcmdldHM7XG5cbiAgLyoqXG4gICAqIEFjdGlvbnNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhY3Rpb25zOiBUYXJnZXRzO1xuXG4gIC8qKlxuICAgKiBPYmplY3Qgd2l0aCBjb25kaXRpb25zXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgY29uZGl0aW9uPzogYW55O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VyaWFsaXplZEludHJpbnNpYzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKHN0YXRlbWVudDogVW5rbm93bk1hcCB8IHN0cmluZykge1xuICAgIGlmICh0eXBlb2Ygc3RhdGVtZW50ID09PSAnc3RyaW5nJykge1xuICAgICAgdGhpcy5zaWQgPSB1bmRlZmluZWQ7XG4gICAgICB0aGlzLmVmZmVjdCA9IEVmZmVjdC5Vbmtub3duO1xuICAgICAgdGhpcy5yZXNvdXJjZXMgPSBuZXcgVGFyZ2V0cyh7fSwgJycsICcnKTtcbiAgICAgIHRoaXMuYWN0aW9ucyA9IG5ldyBUYXJnZXRzKHt9LCAnJywgJycpO1xuICAgICAgdGhpcy5wcmluY2lwYWxzID0gbmV3IFRhcmdldHMoe30sICcnLCAnJyk7XG4gICAgICB0aGlzLmNvbmRpdGlvbiA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuc2VyaWFsaXplZEludHJpbnNpYyA9IHN0YXRlbWVudDtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaWQgPSBleHBlY3RTdHJpbmcoc3RhdGVtZW50LlNpZCk7XG4gICAgICB0aGlzLmVmZmVjdCA9IGV4cGVjdEVmZmVjdChzdGF0ZW1lbnQuRWZmZWN0KTtcbiAgICAgIHRoaXMucmVzb3VyY2VzID0gbmV3IFRhcmdldHMoc3RhdGVtZW50LCAnUmVzb3VyY2UnLCAnTm90UmVzb3VyY2UnKTtcbiAgICAgIHRoaXMuYWN0aW9ucyA9IG5ldyBUYXJnZXRzKHN0YXRlbWVudCwgJ0FjdGlvbicsICdOb3RBY3Rpb24nKTtcbiAgICAgIHRoaXMucHJpbmNpcGFscyA9IG5ldyBUYXJnZXRzKHN0YXRlbWVudCwgJ1ByaW5jaXBhbCcsICdOb3RQcmluY2lwYWwnKTtcbiAgICAgIHRoaXMuY29uZGl0aW9uID0gc3RhdGVtZW50LkNvbmRpdGlvbjtcbiAgICAgIHRoaXMuc2VyaWFsaXplZEludHJpbnNpYyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHN0YXRlbWVudCBpcyBlcXVhbCB0byB0aGUgb3RoZXIgc3RhdGVtZW50XG4gICAqL1xuICBwdWJsaWMgZXF1YWwob3RoZXI6IFN0YXRlbWVudCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5zaWQgPT09IG90aGVyLnNpZFxuICAgICAgJiYgdGhpcy5lZmZlY3QgPT09IG90aGVyLmVmZmVjdFxuICAgICAgJiYgdGhpcy5zZXJpYWxpemVkSW50cmluc2ljID09PSBvdGhlci5zZXJpYWxpemVkSW50cmluc2ljXG4gICAgICAmJiB0aGlzLnJlc291cmNlcy5lcXVhbChvdGhlci5yZXNvdXJjZXMpXG4gICAgICAmJiB0aGlzLmFjdGlvbnMuZXF1YWwob3RoZXIuYWN0aW9ucylcbiAgICAgICYmIHRoaXMucHJpbmNpcGFscy5lcXVhbChvdGhlci5wcmluY2lwYWxzKVxuICAgICAgJiYgZGVlcEVxdWFsKHRoaXMuY29uZGl0aW9uLCBvdGhlci5jb25kaXRpb24pKTtcbiAgfVxuXG4gIHB1YmxpYyByZW5kZXIoKTogUmVuZGVyZWRTdGF0ZW1lbnQge1xuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZWRJbnRyaW5zaWNcbiAgICAgID8ge1xuICAgICAgICByZXNvdXJjZTogdGhpcy5zZXJpYWxpemVkSW50cmluc2ljLFxuICAgICAgICBlZmZlY3Q6ICcnLFxuICAgICAgICBhY3Rpb246ICcnLFxuICAgICAgICBwcmluY2lwYWw6IHRoaXMucHJpbmNpcGFscy5yZW5kZXIoKSwgLy8gdGhlc2Ugd2lsbCBiZSByZXBsYWNlZCBieSB0aGUgY2FsbCB0byByZXBsYWNlRW1wdHkoKSBmcm9tIElhbUNoYW5nZXNcbiAgICAgICAgY29uZGl0aW9uOiAnJyxcbiAgICAgIH1cbiAgICAgIDoge1xuICAgICAgICByZXNvdXJjZTogdGhpcy5yZXNvdXJjZXMucmVuZGVyKCksXG4gICAgICAgIGVmZmVjdDogdGhpcy5lZmZlY3QsXG4gICAgICAgIGFjdGlvbjogdGhpcy5hY3Rpb25zLnJlbmRlcigpLFxuICAgICAgICBwcmluY2lwYWw6IHRoaXMucHJpbmNpcGFscy5yZW5kZXIoKSxcbiAgICAgICAgY29uZGl0aW9uOiByZW5kZXJDb25kaXRpb24odGhpcy5jb25kaXRpb24pLFxuICAgICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtYWNoaW5lLXJlYWRhYmxlIHZlcnNpb24gb2YgdGhlIGNoYW5nZXMuXG4gICAqIFRoaXMgaXMgb25seSB1c2VkIGluIHRlc3RzLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfdG9Kc29uKCk6IE1heWJlUGFyc2VkPFN0YXRlbWVudEpzb24+IHtcbiAgICByZXR1cm4gdGhpcy5zZXJpYWxpemVkSW50cmluc2ljXG4gICAgICA/IG1rVW5wYXJzZWFibGUodGhpcy5zZXJpYWxpemVkSW50cmluc2ljKVxuICAgICAgOiBta1BhcnNlZChkZWVwUmVtb3ZlVW5kZWZpbmVkKHtcbiAgICAgICAgc2lkOiB0aGlzLnNpZCxcbiAgICAgICAgZWZmZWN0OiB0aGlzLmVmZmVjdCxcbiAgICAgICAgcmVzb3VyY2VzOiB0aGlzLnJlc291cmNlcy5fdG9Kc29uKCksXG4gICAgICAgIHByaW5jaXBhbHM6IHRoaXMucHJpbmNpcGFscy5fdG9Kc29uKCksXG4gICAgICAgIGFjdGlvbnM6IHRoaXMuYWN0aW9ucy5fdG9Kc29uKCksXG4gICAgICAgIGNvbmRpdGlvbjogdGhpcy5jb25kaXRpb24sXG4gICAgICB9KSk7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGlzIGEgbmVnYXRpdmUgc3RhdGVtZW50XG4gICAqXG4gICAqIEEgc3RhdGVtZW50IGlzIG5lZ2F0aXZlIGlmIGFueSBvZiBpdHMgdGFyZ2V0cyBhcmUgbmVnYXRpdmUsIGludmVydGVkXG4gICAqIGlmIHRoZSBFZmZlY3QgaXMgRGVueS5cbiAgICovXG4gIHB1YmxpYyBnZXQgaXNOZWdhdGl2ZVN0YXRlbWVudCgpOiBib29sZWFuIHtcbiAgICBjb25zdCBub3RUYXJnZXQgPSB0aGlzLmFjdGlvbnMubm90IHx8IHRoaXMucHJpbmNpcGFscy5ub3QgfHwgdGhpcy5yZXNvdXJjZXMubm90O1xuICAgIHJldHVybiB0aGlzLmVmZmVjdCA9PT0gRWZmZWN0LkFsbG93ID8gbm90VGFyZ2V0IDogIW5vdFRhcmdldDtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlbmRlcmVkU3RhdGVtZW50IHtcbiAgcmVhZG9ubHkgcmVzb3VyY2U6IHN0cmluZztcbiAgcmVhZG9ubHkgZWZmZWN0OiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFjdGlvbjogc3RyaW5nO1xuICByZWFkb25seSBwcmluY2lwYWw6IHN0cmluZztcbiAgcmVhZG9ubHkgY29uZGl0aW9uOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhdGVtZW50SnNvbiB7XG4gIHNpZD86IHN0cmluZztcbiAgZWZmZWN0OiBzdHJpbmc7XG4gIHJlc291cmNlczogVGFyZ2V0c0pzb247XG4gIGFjdGlvbnM6IFRhcmdldHNKc29uO1xuICBwcmluY2lwYWxzOiBUYXJnZXRzSnNvbjtcbiAgY29uZGl0aW9uPzogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRhcmdldHNKc29uIHtcbiAgbm90OiBib29sZWFuO1xuICB2YWx1ZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgbGlzdCBvZiBzdGF0ZW1lbnRzIGZyb20gdW5kZWZpbmVkLCBhIFN0YXRlbWVudCwgb3IgYSBsaXN0IG9mIHN0YXRlbWVudHNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU3RhdGVtZW50cyh4OiBhbnkpOiBTdGF0ZW1lbnRbXSB7XG4gIGlmICh4ID09PSB1bmRlZmluZWQpIHsgeCA9IFtdOyB9XG4gIGlmICghQXJyYXkuaXNBcnJheSh4KSkgeyB4ID0gW3hdOyB9XG4gIHJldHVybiB4Lm1hcCgoczogYW55KSA9PiBuZXcgU3RhdGVtZW50KHMpKTtcbn1cblxuLyoqXG4gKiBQYXJzZSBhIFN0YXRlbWVudCBmcm9tIGEgTGFtYmRhOjpQZXJtaXNzaW9uIG9iamVjdFxuICpcbiAqIFRoaXMgaXMgYWN0dWFsbHkgd2hhdCBMYW1iZGEgYWRkcyB0byB0aGUgcG9saWN5IGRvY3VtZW50IGlmIHlvdSBjYWxsIEFkZFBlcm1pc3Npb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUxhbWJkYVBlcm1pc3Npb24oeDogYW55KTogU3RhdGVtZW50IHtcbiAgLy8gQ29uc3RydWN0IGEgc3RhdGVtZW50IGZyb21cbiAgY29uc3Qgc3RhdGVtZW50OiBhbnkgPSB7XG4gICAgRWZmZWN0OiAnQWxsb3cnLFxuICAgIEFjdGlvbjogeC5BY3Rpb24sXG4gICAgUmVzb3VyY2U6IHguRnVuY3Rpb25OYW1lLFxuICB9O1xuXG4gIGlmICh4LlByaW5jaXBhbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHguUHJpbmNpcGFsID09PSAnKicpIHtcbiAgICAgIC8vICpcbiAgICAgIHN0YXRlbWVudC5QcmluY2lwYWwgPSAnKic7XG4gICAgfSBlbHNlIGlmICgvXlxcZHsxMn0kLy50ZXN0KHguUHJpbmNpcGFsKSkge1xuICAgICAgLy8gQWNjb3VudCBudW1iZXJcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAYXdzLWNkay9uby1saXRlcmFsLXBhcnRpdGlvblxuICAgICAgc3RhdGVtZW50LlByaW5jaXBhbCA9IHsgQVdTOiBgYXJuOmF3czppYW06OiR7eC5QcmluY2lwYWx9OnJvb3RgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEFzc3VtZSBpdCdzIGEgc2VydmljZSBwcmluY2lwYWxcbiAgICAgIC8vIFdlIG1pZ2h0IGdldCB0aGlzIHdyb25nIHZzLiB0aGUgcHJldmlvdXMgb25lIGZvciB0b2tlbnMuIE5vdGhpbmcgdG8gYmUgZG9uZVxuICAgICAgLy8gYWJvdXQgdGhhdC4gSXQncyBvbmx5IGZvciBodW1hbiByZWFkYWJsZSBjb25zdW1wdGlvbiBhZnRlciBhbGwuXG4gICAgICBzdGF0ZW1lbnQuUHJpbmNpcGFsID0geyBTZXJ2aWNlOiB4LlByaW5jaXBhbCB9O1xuICAgIH1cbiAgfVxuICBpZiAoeC5Tb3VyY2VBcm4gIT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChzdGF0ZW1lbnQuQ29uZGl0aW9uID09PSB1bmRlZmluZWQpIHsgc3RhdGVtZW50LkNvbmRpdGlvbiA9IHt9OyB9XG4gICAgc3RhdGVtZW50LkNvbmRpdGlvbi5Bcm5MaWtlID0geyAnQVdTOlNvdXJjZUFybic6IHguU291cmNlQXJuIH07XG4gIH1cbiAgaWYgKHguU291cmNlQWNjb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHN0YXRlbWVudC5Db25kaXRpb24gPT09IHVuZGVmaW5lZCkgeyBzdGF0ZW1lbnQuQ29uZGl0aW9uID0ge307IH1cbiAgICBzdGF0ZW1lbnQuQ29uZGl0aW9uLlN0cmluZ0VxdWFscyA9IHsgJ0FXUzpTb3VyY2VBY2NvdW50JzogeC5Tb3VyY2VBY2NvdW50IH07XG4gIH1cbiAgaWYgKHguRXZlbnRTb3VyY2VUb2tlbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHN0YXRlbWVudC5Db25kaXRpb24gPT09IHVuZGVmaW5lZCkgeyBzdGF0ZW1lbnQuQ29uZGl0aW9uID0ge307IH1cbiAgICBzdGF0ZW1lbnQuQ29uZGl0aW9uLlN0cmluZ0VxdWFscyA9IHsgJ2xhbWJkYTpFdmVudFNvdXJjZVRva2VuJzogeC5FdmVudFNvdXJjZVRva2VuIH07XG4gIH1cblxuICByZXR1cm4gbmV3IFN0YXRlbWVudChzdGF0ZW1lbnQpO1xufVxuXG4vKipcbiAqIFRhcmdldHMgZm9yIGEgZmllbGRcbiAqL1xuZXhwb3J0IGNsYXNzIFRhcmdldHMge1xuICAvKipcbiAgICogVGhlIHZhbHVlcyBvZiB0aGUgdGFyZ2V0c1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZhbHVlczogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgcG9zaXRpdmUgb3IgbmVnYXRpdmUgbWF0Y2hlcnNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBub3Q6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioc3RhdGVtZW50OiBVbmtub3duTWFwLCBwb3NpdGl2ZUtleTogc3RyaW5nLCBuZWdhdGl2ZUtleTogc3RyaW5nKSB7XG4gICAgaWYgKG5lZ2F0aXZlS2V5IGluIHN0YXRlbWVudCkge1xuICAgICAgdGhpcy52YWx1ZXMgPSBmb3JjZUxpc3RPZlN0cmluZ3Moc3RhdGVtZW50W25lZ2F0aXZlS2V5XSk7XG4gICAgICB0aGlzLm5vdCA9IHRydWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudmFsdWVzID0gZm9yY2VMaXN0T2ZTdHJpbmdzKHN0YXRlbWVudFtwb3NpdGl2ZUtleV0pO1xuICAgICAgdGhpcy5ub3QgPSBmYWxzZTtcbiAgICB9XG4gICAgdGhpcy52YWx1ZXMuc29ydCgpO1xuICB9XG5cbiAgcHVibGljIGdldCBlbXB0eSgpIHtcbiAgICByZXR1cm4gdGhpcy52YWx1ZXMubGVuZ3RoID09PSAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBzZXQgb2YgdGFyZ2V0cyBpcyBlcXVhbCB0byB0aGUgb3RoZXIgc2V0IG9mIHRhcmdldHNcbiAgICovXG4gIHB1YmxpYyBlcXVhbChvdGhlcjogVGFyZ2V0cykge1xuICAgIHJldHVybiB0aGlzLm5vdCA9PT0gb3RoZXIubm90ICYmIGRlZXBFcXVhbCh0aGlzLnZhbHVlcy5zb3J0KCksIG90aGVyLnZhbHVlcy5zb3J0KCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIElmIHRoZSBjdXJyZW50IHZhbHVlIHNldCBpcyBlbXB0eSwgcHV0IHRoaXMgaW4gaXRcbiAgICovXG4gIHB1YmxpYyByZXBsYWNlRW1wdHkocmVwbGFjZW1lbnQ6IHN0cmluZykge1xuICAgIGlmICh0aGlzLmVtcHR5KSB7XG4gICAgICB0aGlzLnZhbHVlcy5wdXNoKHJlcGxhY2VtZW50KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGFjdGlvbnMgY29udGFpbnMgYSAnKicsIHJlcGxhY2Ugd2l0aCB0aGlzIHN0cmluZy5cbiAgICovXG4gIHB1YmxpYyByZXBsYWNlU3RhcihyZXBsYWNlbWVudDogc3RyaW5nKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLnZhbHVlcy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHRoaXMudmFsdWVzW2ldID09PSAnKicpIHtcbiAgICAgICAgdGhpcy52YWx1ZXNbaV0gPSByZXBsYWNlbWVudDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy52YWx1ZXMuc29ydCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlciBpbnRvIGEgc3VtbWFyeSB0YWJsZSBjZWxsXG4gICAqL1xuICBwdWJsaWMgcmVuZGVyKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMubm90XG4gICAgICA/IHRoaXMudmFsdWVzLm1hcChzID0+IGBOT1QgJHtzfWApLmpvaW4oJ1xcbicpXG4gICAgICA6IHRoaXMudmFsdWVzLmpvaW4oJ1xcbicpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1hY2hpbmUtcmVhZGFibGUgdmVyc2lvbiBvZiB0aGUgY2hhbmdlcy5cbiAgICogVGhpcyBpcyBvbmx5IHVzZWQgaW4gdGVzdHMuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF90b0pzb24oKTogVGFyZ2V0c0pzb24ge1xuICAgIHJldHVybiB7IG5vdDogdGhpcy5ub3QsIHZhbHVlczogdGhpcy52YWx1ZXMgfTtcbiAgfVxufVxuXG50eXBlIFVua25vd25NYXAgPSB7W2tleTogc3RyaW5nXTogdW5rbm93bn07XG5cbmV4cG9ydCBlbnVtIEVmZmVjdCB7XG4gIFVua25vd24gPSAnVW5rbm93bicsXG4gIEFsbG93ID0gJ0FsbG93JyxcbiAgRGVueSA9ICdEZW55Jyxcbn1cblxuZnVuY3Rpb24gZXhwZWN0U3RyaW5nKHg6IHVua25vd24pOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICByZXR1cm4gdHlwZW9mIHggPT09ICdzdHJpbmcnID8geCA6IHVuZGVmaW5lZDtcbn1cblxuZnVuY3Rpb24gZXhwZWN0RWZmZWN0KHg6IHVua25vd24pOiBFZmZlY3Qge1xuICBpZiAoeCA9PT0gRWZmZWN0LkFsbG93IHx8IHggPT09IEVmZmVjdC5EZW55KSB7IHJldHVybiB4IGFzIEVmZmVjdDsgfVxuICByZXR1cm4gRWZmZWN0LlVua25vd247XG59XG5cbmZ1bmN0aW9uIGZvcmNlTGlzdE9mU3RyaW5ncyh4OiB1bmtub3duKTogc3RyaW5nW10ge1xuICBpZiAodHlwZW9mIHggPT09ICdzdHJpbmcnKSB7IHJldHVybiBbeF07IH1cbiAgaWYgKHR5cGVvZiB4ID09PSAndW5kZWZpbmVkJyB8fCB4ID09PSBudWxsKSB7IHJldHVybiBbXTsgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHgpKSB7XG4gICAgcmV0dXJuIHgubWFwKGUgPT4gZm9yY2VMaXN0T2ZTdHJpbmdzKGUpLmpvaW4oJywnKSk7XG4gIH1cblxuICBpZiAodHlwZW9mIHggPT09ICdvYmplY3QnICYmIHggIT09IG51bGwpIHtcbiAgICBjb25zdCByZXQ6IHN0cmluZ1tdID0gW107XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoeCkpIHtcbiAgICAgIHJldC5wdXNoKC4uLmZvcmNlTGlzdE9mU3RyaW5ncyh2YWx1ZSkubWFwKHMgPT4gYCR7a2V5fToke3N9YCkpO1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcmV0dXJuIFtgJHt4fWBdO1xufVxuXG4vKipcbiAqIFJlbmRlciB0aGUgQ29uZGl0aW9uIGNvbHVtblxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyQ29uZGl0aW9uKGNvbmRpdGlvbjogYW55KTogc3RyaW5nIHtcbiAgaWYgKCFjb25kaXRpb24gfHwgT2JqZWN0LmtleXMoY29uZGl0aW9uKS5sZW5ndGggPT09IDApIHsgcmV0dXJuICcnOyB9XG4gIGNvbnN0IGpzb25SZXByZXNlbnRhdGlvbiA9IEpTT04uc3RyaW5naWZ5KGNvbmRpdGlvbiwgdW5kZWZpbmVkLCAyKTtcblxuICAvLyBUaGUgSlNPTiByZXByZXNlbnRhdGlvbiBsb29rcyBsaWtlIHRoaXM6XG4gIC8vXG4gIC8vICB7XG4gIC8vICAgIFwiQXJuTGlrZVwiOiB7XG4gIC8vICAgICAgXCJBV1M6U291cmNlQXJuXCI6IFwiJHtNeVRvcGljODY4Njk0MzR9XCJcbiAgLy8gICAgfVxuICAvLyAgfVxuICAvL1xuICAvLyBXZSBjYW4gbWFrZSBpdCBtb3JlIGNvbXBhY3Qgd2l0aG91dCBsb3NpbmcgaW5mb3JtYXRpb24gYnkgZ2V0dGluZyByaWQgb2YgdGhlIG91dGVybW9zdCBicmFjZXNcbiAgLy8gYW5kIHRoZSBpbmRlbnRhdGlvbi5cbiAgY29uc3QgbGluZXMgPSBqc29uUmVwcmVzZW50YXRpb24uc3BsaXQoJ1xcbicpO1xuICByZXR1cm4gbGluZXMuc2xpY2UoMSwgbGluZXMubGVuZ3RoIC0gMSkubWFwKHMgPT4gcy5zbGljZSgyKSkuam9pbignXFxuJyk7XG59XG4iXX0=","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mangleLikeCloudFormation = exports.deepEqual = void 0;\n__exportStar(require(\"./diff-template\"), exports);\n__exportStar(require(\"./format\"), exports);\n__exportStar(require(\"./format-table\"), exports);\nvar util_1 = require(\"./diff/util\");\nObject.defineProperty(exports, \"deepEqual\", { enumerable: true, get: function () { return util_1.deepEqual; } });\nObject.defineProperty(exports, \"mangleLikeCloudFormation\", { enumerable: true, get: function () { return util_1.mangleLikeCloudFormation; } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtEQUFnQztBQUNoQywyQ0FBeUI7QUFDekIsaURBQStCO0FBQy9CLG9DQUFrRTtBQUF6RCxpR0FBQSxTQUFTLE9BQUE7QUFBRSxnSEFBQSx3QkFBd0IsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGlmZi10ZW1wbGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm1hdCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm1hdC10YWJsZSc7XG5leHBvcnQgeyBkZWVwRXF1YWwsIG1hbmdsZUxpa2VDbG91ZEZvcm1hdGlvbiB9IGZyb20gJy4vZGlmZi91dGlsJztcbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SecurityGroupChanges = void 0;\nconst chalk = require(\"chalk\");\nconst security_group_rule_1 = require(\"./security-group-rule\");\nconst diffable_1 = require(\"../diffable\");\nconst render_intrinsics_1 = require(\"../render-intrinsics\");\nconst util_1 = require(\"../util\");\n/**\n * Changes to IAM statements\n */\nclass SecurityGroupChanges {\n constructor(props) {\n this.ingress = new diffable_1.DiffableCollection();\n this.egress = new diffable_1.DiffableCollection();\n // Group rules\n for (const ingressProp of props.ingressRulePropertyChanges) {\n this.ingress.addOld(...this.readInlineRules(ingressProp.oldValue, ingressProp.resourceLogicalId));\n this.ingress.addNew(...this.readInlineRules(ingressProp.newValue, ingressProp.resourceLogicalId));\n }\n for (const egressProp of props.egressRulePropertyChanges) {\n this.egress.addOld(...this.readInlineRules(egressProp.oldValue, egressProp.resourceLogicalId));\n this.egress.addNew(...this.readInlineRules(egressProp.newValue, egressProp.resourceLogicalId));\n }\n // Rule resources\n for (const ingressRes of props.ingressRuleResourceChanges) {\n this.ingress.addOld(...this.readRuleResource(ingressRes.oldProperties));\n this.ingress.addNew(...this.readRuleResource(ingressRes.newProperties));\n }\n for (const egressRes of props.egressRuleResourceChanges) {\n this.egress.addOld(...this.readRuleResource(egressRes.oldProperties));\n this.egress.addNew(...this.readRuleResource(egressRes.newProperties));\n }\n this.ingress.calculateDiff();\n this.egress.calculateDiff();\n }\n get hasChanges() {\n return this.ingress.hasChanges || this.egress.hasChanges;\n }\n /**\n * Return a summary table of changes\n */\n summarize() {\n const ret = [];\n const header = ['', 'Group', 'Dir', 'Protocol', 'Peer'];\n const inWord = 'In';\n const outWord = 'Out';\n // Render a single rule to the table (curried function so we can map it across rules easily--thank you JavaScript!)\n const renderRule = (plusMin, inOut) => (rule) => [\n plusMin,\n rule.groupId,\n inOut,\n rule.describeProtocol(),\n rule.describePeer(),\n ].map(s => plusMin === '+' ? chalk.green(s) : chalk.red(s));\n // First generate all lines, sort later\n ret.push(...this.ingress.additions.map(renderRule('+', inWord)));\n ret.push(...this.egress.additions.map(renderRule('+', outWord)));\n ret.push(...this.ingress.removals.map(renderRule('-', inWord)));\n ret.push(...this.egress.removals.map(renderRule('-', outWord)));\n // Sort by group name then ingress/egress (ingress first)\n ret.sort((0, util_1.makeComparator)((row) => [row[1], row[2].indexOf(inWord) > -1 ? 0 : 1]));\n ret.splice(0, 0, header);\n return ret;\n }\n toJson() {\n return (0, util_1.deepRemoveUndefined)({\n ingressRuleAdditions: (0, util_1.dropIfEmpty)(this.ingress.additions.map(s => s.toJson())),\n ingressRuleRemovals: (0, util_1.dropIfEmpty)(this.ingress.removals.map(s => s.toJson())),\n egressRuleAdditions: (0, util_1.dropIfEmpty)(this.egress.additions.map(s => s.toJson())),\n egressRuleRemovals: (0, util_1.dropIfEmpty)(this.egress.removals.map(s => s.toJson())),\n });\n }\n get rulesAdded() {\n return this.ingress.hasAdditions\n || this.egress.hasAdditions;\n }\n readInlineRules(rules, logicalId) {\n if (!rules || !Array.isArray(rules)) {\n return [];\n }\n // UnCloudFormation so the parser works in an easier domain\n const ref = '${' + logicalId + '.GroupId}';\n return rules.flatMap((r) => {\n const rendered = (0, render_intrinsics_1.renderIntrinsics)(r);\n // SecurityGroupRule is not robust against unparsed objects\n return typeof rendered === 'object' ? [new security_group_rule_1.SecurityGroupRule(rendered, ref)] : [];\n });\n }\n readRuleResource(resource) {\n if (!resource) {\n return [];\n }\n // UnCloudFormation so the parser works in an easier domain\n return [new security_group_rule_1.SecurityGroupRule((0, render_intrinsics_1.renderIntrinsics)(resource))];\n }\n}\nexports.SecurityGroupChanges = SecurityGroupChanges;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktZ3JvdXAtY2hhbmdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlY3VyaXR5LWdyb3VwLWNoYW5nZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStCO0FBQy9CLCtEQUFvRTtBQUVwRSwwQ0FBaUQ7QUFDakQsNERBQXdEO0FBQ3hELGtDQUEyRTtBQVMzRTs7R0FFRztBQUNILE1BQWEsb0JBQW9CO0lBSS9CLFlBQVksS0FBZ0M7UUFINUIsWUFBTyxHQUFHLElBQUksNkJBQWtCLEVBQXFCLENBQUM7UUFDdEQsV0FBTSxHQUFHLElBQUksNkJBQWtCLEVBQXFCLENBQUM7UUFHbkUsY0FBYztRQUNkLEtBQUssTUFBTSxXQUFXLElBQUksS0FBSyxDQUFDLDBCQUEwQixFQUFFO1lBQzFELElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxXQUFXLENBQUMsUUFBUSxFQUFFLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFDbEcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztTQUNuRztRQUNELEtBQUssTUFBTSxVQUFVLElBQUksS0FBSyxDQUFDLHlCQUF5QixFQUFFO1lBQ3hELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFDL0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztTQUNoRztRQUVELGlCQUFpQjtR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QUFJLENBQUMsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUFFLE9BQU8sRUFBRSxDQUFDO1NBQUU7UUFFbkQsMkRBQTJEO1FBRTNELE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxTQUFTLEdBQUcsV0FBVyxDQUFDO1FBQzNDLE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFO1lBQzlCLE1BQU0sUUFBUSxHQUFHLElBQUEsb0NBQWdCLEVBQUMsQ0FBQyxDQUFDLENBQUM7WUFDckMsMkRBQTJEO1lBQzNELE9BQU8sT0FBTyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksdUNBQWlCLENBQUMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUNwRixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTyxnQkFBZ0IsQ0FBQyxRQUFhO1FBQ3BDLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFBRSxPQUFPLEVBQUUsQ0FBQztTQUFFO1FBRTdCLDJEQUEyRDtRQUUzRCxPQUFPLENBQUMsSUFBSSx1Q0FBaUIsQ0FBQyxJQUFBLG9DQUFnQixFQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0NBQ0Y7QUFyR0Qsb0RBcUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHsgUnVsZUpzb24sIFNlY3VyaXR5R3JvdXBSdWxlIH0gZnJvbSAnLi9zZWN1cml0eS1ncm91cC1ydWxlJztcbmltcG9ydCB7IFByb3BlcnR5Q2hhbmdlLCBSZXNvdXJjZUNoYW5nZSB9IGZyb20gJy4uL2RpZmYvdHlwZXMnO1xuaW1wb3J0IHsgRGlmZmFibGVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vZGlmZmFibGUnO1xuaW1wb3J0IHsgcmVuZGVySW50cmluc2ljcyB9IGZyb20gJy4uL3JlbmRlci1pbnRyaW5zaWNzJztcbmltcG9ydCB7IGRlZXBSZW1vdmVVbmRlZmluZWQsIGRyb3BJZkVtcHR5LCBtYWtlQ29tcGFyYXRvciB9IGZyb20gJy4uL3V0aWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBDaGFuZ2VzUHJvcHMge1xuICBpbmdyZXNzUnVsZVByb3BlcnR5Q2hhbmdlczogUHJvcGVydHlDaGFuZ2VbXTtcbiAgaW5ncmVzc1J1bGVSZXNvdXJjZUNoYW5nZXM6IFJlc291cmNlQ2hhbmdlW107XG4gIGVncmVzc1J1bGVSZXNvdXJjZUNoYW5nZXM6IFJlc291cmNlQ2hhbmdlW107XG4gIGVncmVzc1J1bGVQcm9wZXJ0eUNoYW5nZXM6IFByb3BlcnR5Q2hhbmdlW107XG59XG5cbi8qKlxuICogQ2hhbmdlcyB0byBJQU0gc3RhdGVtZW50c1xuICovXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlHcm91cENoYW5nZXMge1xuICBwdWJsaWMgcmVhZG9ubHkgaW5ncmVzcyA9IG5ldyBEaWZmYWJsZUNvbGxlY3Rpb248U2VjdXJpdHlHcm91cFJ1bGU+KCk7XG4gIHB1YmxpYyByZWFkb25seSBlZ3Jlc3MgPSBuZXcgRGlmZmFibGVDb2xsZWN0aW9uPFNlY3VyaXR5R3JvdXBSdWxlPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBTZWN1cml0eUdyb3VwQ2hhbmdlc1Byb3BzKSB7XG4gICAgLy8gR3JvdXAgcnVsZXNcbiAgICBmb3IgKGNvbnN0IGluZ3Jlc3NQcm9wIG9mIHByb3BzLmluZ3Jlc3NSdWxlUHJvcGVydHlDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmluZ3Jlc3MuYWRkT2xkKC4uLnRoaXMucmVhZElubGluZVJ1bGVzKGluZ3Jlc3NQcm9wLm9sZFZhbHVlLCBpbmdyZXNzUHJvcC5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgdGhpcy5pbmdyZXNzLmFkZE5ldyguLi50aGlzLnJlYWRJbmxpbmVSdWxlcyhpbmdyZXNzUHJvcC5uZXdWYWx1ZSwgaW5ncmVzc1Byb3AucmVzb3VyY2VMb2dpY2FsSWQpKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBlZ3Jlc3NQcm9wIG9mIHByb3BzLmVncmVzc1J1bGVQcm9wZXJ0eUNoYW5nZXMpIHtcbiAgICAgIHRoaXMuZWdyZXNzLmFkZE9sZCguLi50aGlzLnJlYWRJbmxpbmVSdWxlcyhlZ3Jlc3NQcm9wLm9sZFZhbHVlLCBlZ3Jlc3NQcm9wLnJlc291cmNlTG9naWNhbElkKSk7XG4gICAgICB0aGlzLmVncmVzcy5hZGROZXcoLi4udGhpcy5yZWFkSW5saW5lUnVsZXMoZWdyZXNzUHJvcC5uZXdWYWx1ZSwgZWdyZXNzUHJvcC5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgIH1cblxuICAgIC8vIFJ1bGUgcmVzb3VyY2VzXG4gICAgZm9yIChjb25zdCBpbmdyZXNzUmVzIG9mIHByb3BzLmluZ3Jlc3NSdWxlUmVzb3VyY2VDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmluZ3Jlc3MuYWRkT2xkKC4uLnRoaXMucmVhZFJ1bGVSZXNvdXJjZShpbmdyZXNzUmVzLm9sZFByb3BlcnRpZXMpKTtcbiAgICAgIHRoaXMuaW5ncmVzcy5hZGROZXcoLi4udGhpcy5yZWFkUnVsZVJlc291cmNlKGluZ3Jlc3NSZXMubmV3UHJvcGVydGllcykpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGVncmVzc1JlcyBvZiBwcm9wcy5lZ3Jlc3NSdWxlUmVzb3VyY2VDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmVncmVzcy5hZGRPbGQoLi4udGhpcy5yZWFkUnVsZVJlc291cmNlKGVncmVzc1Jlcy5vbGRQcm9wZXJ0aWVzKSk7XG4gICAgICB0aGlzLmVncmVzcy5hZGROZXcoLi4udGhpcy5yZWFkUnVsZVJlc291cmNlKGVncmVzc1Jlcy5uZXdQcm9wZXJ0aWVzKSk7XG4gICAgfVxuXG4gICAgdGhpcy5pbmdyZXNzLmNhbGN1bGF0ZURpZmYoKTtcbiAgICB0aGlzLmVncmVzcy5jYWxjdWxhdGVEaWZmKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0NoYW5nZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5ncmVzcy5oYXNDaGFuZ2VzIHx8IHRoaXMuZWdyZXNzLmhhc0NoYW5nZXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgc3VtbWFyeSB0YWJsZSBvZiBjaGFuZ2VzXG4gICAqL1xuICBwdWJsaWMgc3VtbWFyaXplKCk6IHN0cmluZ1tdW10ge1xuICAgIGNvbnN0IHJldDogc3RyaW5nW11bXSA9IFtdO1xuXG4gICAgY29uc3QgaGVhZGVyID0gWycnLCAnR3JvdXAnLCAnRGlyJywgJ1Byb3RvY29sJywgJ1BlZXInXTtcblxuICAgIGNvbnN0IGluV29yZCA9ICdJbic7XG4gICAgY29uc3Qgb3V0V29yZCA9ICdPdXQnO1xuXG4gICAgLy8gUmVuZGVyIGEgc2luZ2xlIHJ1bGUgdG8gdGhlIHRhYmxlIChjdXJyaWVkIGZ1bmN0aW9uIHNvIHdlIGNhbiBtYXAgaXQgYWNyb3NzIHJ1bGVzIGVhc2lseS0tdGhhbmsgeW91IEphdmFTY3JpcHQhKVxuICAgIGNvbnN0IHJlbmRlclJ1bGUgPSAocGx1c01pbjogc3RyaW5nLCBpbk91dDogc3RyaW5nKSA9PiAocnVsZTogU2VjdXJpdHlHcm91cFJ1bGUpID0+IFtcbiAgICAgIHBsdXNNaW4sXG4gICAgICBydWxlLmdyb3VwSWQsXG4gICAgICBpbk91dCxcbiAgICAgIHJ1bGUuZGVzY3JpYmVQcm90b2NvbCgpLFxuICAgICAgcnVsZS5kZXNjcmliZVBlZXIoKSxcbiAgICBdLm1hcChzID0+IHBsdXNNaW4gPT09ICcrJyA/IGNoYWxrLmdyZWVuKHMpIDogY2hhbGsucmVkKHMpKTtcblxuICAgIC8vIEZpcnN0IGdlbmVyYXRlIGFsbCBsaW5lcywgc29ydCBsYXRlclxuICAgIHJldC5wdXNoKC4uLnRoaXMuaW5ncmVzcy5hZGRpdGlvbnMubWFwKHJlbmRlclJ1bGUoJysnLCBpbldvcmQpKSk7XG4gICAgcmV0LnB1c2goLi4udGhpcy5lZ3Jlc3MuYWRkaXRpb25zLm1hcChyZW5kZXJSdWxlKCcrJywgb3V0V29yZCkpKTtcbiAgICByZXQucHVzaCguLi50aGlzLmluZ3Jlc3MucmVtb3ZhbHMubWFwKHJlbmRlclJ1bGUoJy0nLCBpbldvcmQpKSk7XG4gICAgcmV0LnB1c2goLi4udGhpcy5lZ3Jlc3MucmVtb3ZhbHMubWFwKHJlbmRlclJ1bGUoJy0nLCBvdXRXb3JkKSkpO1xuXG4gICAgLy8gU29ydCBieSBncm91cCBuYW1lIHRoZW4gaW5ncmVzcy9lZ3Jlc3MgKGluZ3Jlc3MgZmlyc3QpXG4gICAgcmV0LnNvcnQobWFrZUNvbXBhcmF0b3IoKHJvdzogc3RyaW5nW10pID0+IFtyb3dbMV0sIHJvd1syXS5pbmRleE9mKGluV29yZCkgPiAtMSA/IDAgOiAxXSkpO1xuXG4gICAgcmV0LnNwbGljZSgwLCAwLCBoZWFkZXIpO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIHB1YmxpYyB0b0pzb24oKTogU2VjdXJpdHlHcm91cENoYW5nZXNKc29uIHtcbiAgICByZXR1cm4gZGVlcFJlbW92ZVVuZGVmaW5lZCh7XG4gICAgICBpbmdyZXNzUnVsZUFkZGl0aW9uczogZHJvcElmRW1wdHkodGhpcy5pbmdyZXNzLmFkZGl0aW9ucy5tYXAocyA9PiBzLnRvSnNvbigpKSksXG4gICAgICBpbmdyZXNzUnVsZVJlbW92YWxzOiBkcm9wSWZFbXB0eSh0aGlzLmluZ3Jlc3MucmVtb3ZhbHMubWFwKHMgPT4gcy50b0pzb24oKSkpLFxuICAgICAgZWdyZXNzUnVsZUFkZGl0aW9uczogZHJvcElmRW1wdHkodGhpcy5lZ3Jlc3MuYWRkaXRpb25zLm1hcChzID0+IHMudG9Kc29uKCkpKSxcbiAgICAgIGVncmVzc1J1bGVSZW1vdmFsczogZHJvcElmRW1wdHkodGhpcy5lZ3Jlc3MucmVtb3ZhbHMubWFwKHMgPT4gcy50b0pzb24oKSkpLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBydWxlc0FkZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmluZ3Jlc3MuaGFzQWRkaXRpb25zXG4gICAgICAgIHx8IHRoaXMuZWdyZXNzLmhhc0FkZGl0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgcmVhZElubGluZVJ1bGVzKHJ1bGVzOiBhbnksIGxvZ2ljYWxJZDogc3RyaW5nKTogU2VjdXJpdHlHcm91cFJ1bGVbXSB7XG4gICAgaWYgKCFydWxlcyB8fCAhQXJyYXkuaXNBcnJheShydWxlcykpIHsgcmV0dXJuIFtdOyB9XG5cbiAgICAvLyBVbkNsb3VkRm9ybWF0aW9uIHNvIHRoZSBwYXJzZXIgd29ya3MgaW4gYW4gZWFzaWVyIGRvbWFpblxuXG4gICAgY29uc3QgcmVmID0gJyR7JyArIGxvZ2ljYWxJZCArICcuR3JvdXBJZH0nO1xuICAgIHJldHVybiBydWxlcy5mbGF0TWFwKChyOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHJlbmRlcmVkID0gcmVuZGVySW50cmluc2ljcyhyKTtcbiAgICAgIC8vIFNlY3VyaXR5R3JvdXBSdWxlIGlzIG5vdCByb2J1c3QgYWdhaW5zdCB1bnBhcnNlZCBvYmplY3RzXG4gICAgICByZXR1cm4gdHlwZW9mIHJlbmRlcmVkID09PSAnb2JqZWN0JyA/IFtuZXcgU2VjdXJpdHlHcm91cFJ1bGUocmVuZGVyZWQsIHJlZildIDogW107XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRSdWxlUmVzb3VyY2UocmVzb3VyY2U6IGFueSk6IFNlY3VyaXR5R3JvdXBSdWxlW10ge1xuICAgIGlmICghcmVzb3VyY2UpIHsgcmV0dXJuIFtdOyB9XG5cbiAgICAvLyBVbkNsb3VkRm9ybWF0aW9uIHNvIHRoZSBwYXJzZXIgd29ya3MgaW4gYW4gZWFzaWVyIGRvbWFpblxuXG4gICAgcmV0dXJuIFtuZXcgU2VjdXJpdHlHcm91cFJ1bGUocmVuZGVySW50cmluc2ljcyhyZXNvdXJjZSkpXTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBDaGFuZ2VzSnNvbiB7XG4gIGluZ3Jlc3NSdWxlQWRkaXRpb25zPzogUnVsZUpzb25bXTtcbiAgaW5ncmVzc1J1bGVSZW1vdmFscz86IFJ1bGVKc29uW107XG4gIGVncmVzc1J1bGVBZGRpdGlvbnM/OiBSdWxlSnNvbltdO1xuICBlZ3Jlc3NSdWxlUmVtb3ZhbHM/OiBSdWxlSnNvbltdO1xufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SecurityGroupRule = void 0;\n/**\n * A single security group rule, either egress or ingress\n */\nclass SecurityGroupRule {\n constructor(ruleObject, groupRef) {\n this.ipProtocol = ruleObject.IpProtocol?.toString() || '*unknown*';\n this.fromPort = ruleObject.FromPort;\n this.toPort = ruleObject.ToPort;\n this.groupId = ruleObject.GroupId || groupRef || '*unknown*'; // In case of an inline rule\n this.peer =\n findFirst(ruleObject, ['CidrIp', 'CidrIpv6'], (ip) => ({ kind: 'cidr-ip', ip }))\n ||\n findFirst(ruleObject, ['DestinationSecurityGroupId', 'SourceSecurityGroupId'], (securityGroupId) => ({ kind: 'security-group', securityGroupId }))\n ||\n findFirst(ruleObject, ['DestinationPrefixListId', 'SourcePrefixListId'], (prefixListId) => ({ kind: 'prefix-list', prefixListId }));\n }\n equal(other) {\n return this.ipProtocol === other.ipProtocol\n && this.fromPort === other.fromPort\n && this.toPort === other.toPort\n && peerEqual(this.peer, other.peer);\n }\n describeProtocol() {\n if (this.ipProtocol === '-1') {\n return 'Everything';\n }\n const ipProtocol = this.ipProtocol.toUpperCase();\n if (this.fromPort === -1) {\n return `All ${ipProtocol}`;\n }\n if (this.fromPort === this.toPort) {\n return `${ipProtocol} ${this.fromPort}`;\n }\n return `${ipProtocol} ${this.fromPort}-${this.toPort}`;\n }\n describePeer() {\n if (this.peer) {\n switch (this.peer.kind) {\n case 'cidr-ip':\n if (this.peer.ip === '0.0.0.0/0') {\n return 'Everyone (IPv4)';\n }\n if (this.peer.ip === '::/0') {\n return 'Everyone (IPv6)';\n }\n return `${this.peer.ip}`;\n case 'prefix-list': return `${this.peer.prefixListId}`;\n case 'security-group': return `${this.peer.securityGroupId}`;\n }\n }\n return '?';\n }\n toJson() {\n return {\n groupId: this.groupId,\n ipProtocol: this.ipProtocol,\n fromPort: this.fromPort,\n toPort: this.toPort,\n peer: this.peer,\n };\n }\n}\nexports.SecurityGroupRule = SecurityGroupRule;\nfunction peerEqual(a, b) {\n if ((a === undefined) !== (b === undefined)) {\n return false;\n }\n if (a === undefined) {\n return true;\n }\n if (a.kind !== b.kind) {\n return false;\n }\n switch (a.kind) {\n case 'cidr-ip': return a.ip === b.ip;\n case 'security-group': return a.securityGroupId === b.securityGroupId;\n case 'prefix-list': return a.prefixListId === b.prefixListId;\n }\n}\nfunction findFirst(obj, keys, fn) {\n for (const key of keys) {\n try {\n if (key in obj) {\n return fn(obj[key]);\n }\n }\n catch (e) {\n debugger;\n }\n }\n return undefined;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktZ3JvdXAtcnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlY3VyaXR5LWdyb3VwLXJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxNQUFhLGlCQUFpQjtJQTBCNUIsWUFBWSxVQUFlLEVBQUUsUUFBaUI7UUFDNUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLFdBQVcsQ0FBQztRQUNuRSxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUM7UUFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sSUFBSSxRQUFRLElBQUksV0FBVyxDQUFDLENBQUMsNEJBQTRCO1FBRTFGLElBQUksQ0FBQyxJQUFJO1lBQ0wsU0FBUyxDQUFDLFVBQVUsRUFDbEIsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEVBQ3RCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQWlCLENBQUEsQ0FBQzs7b0JBRWxELFNBQVMsQ0FBQyxVQUFVLEVBQ2xCLENBQUMsNEJBQTRCLEVBQUUsdUJBQXVCLENBQUMsRUFDdkQsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUF3QixDQUFBLENBQUM7O29CQUUxRixTQUFTLENBQUMsVUFBVSxFQUNsQixDQUFDLHlCQUF5QixFQUFFLG9CQUFvQixDQUFDLEVBQ2pELENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQXFCLENBQUEsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBd0I7UUFDbkMs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YyxDQUFDLFlBQVksQ0FBQztLQUM1RTtBQUNILENBQUM7QUFFRCxTQUFTLFNBQVMsQ0FBSSxHQUFRLEVBQUUsSUFBYyxFQUFFLEVBQW9CO0lBQ2xFLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1FBQ3RCLElBQUk7WUFDRixJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUU7Z0JBQ2QsT0FBTyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDckI7U0FDRjtRQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ1YsUUFBUSxDQUFDO1NBQ1Y7S0FDRjtJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgc2luZ2xlIHNlY3VyaXR5IGdyb3VwIHJ1bGUsIGVpdGhlciBlZ3Jlc3Mgb3IgaW5ncmVzc1xuICovXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlHcm91cFJ1bGUge1xuICAvKipcbiAgICogR3JvdXAgSUQgb2YgdGhlIGdyb3VwIHRoaXMgcnVsZSBhcHBsaWVzIHRvXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JvdXBJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJUCBwcm90b2NvbCB0aGlzIHJ1bGUgYXBwbGllcyB0b1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlwUHJvdG9jb2w6IHN0cmluZztcblxuICAvKipcbiAgICogU3RhcnQgb2YgcG9ydCByYW5nZSB0aGlzIHJ1bGUgYXBwbGllcyB0bywgb3IgSUNNUCB0eXBlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZnJvbVBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEVuZCBvZiBwb3J0IHJhbmdlIHRoaXMgcnVsZSBhcHBsaWVzIHRvLCBvciBJQ01QIGNvZGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0b1BvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFBlZXIgb2YgdGhpcyBydWxlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGVlcj86IFJ1bGVQZWVyO1xuXG4gIGNvbnN0cnVjdG9yKHJ1bGVPYmplY3Q6IGFueSwgZ3JvdXBSZWY/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmlwUHJvdG9jb2wgPSBydWxlT2JqZWN0LklwUHJvdG9jb2w/LnRvU3RyaW5nKCkgfHwgJyp1bmtub3duKic7XG4gICAgdGhpcy5mcm9tUG9ydCA9IHJ1bGVPYmplY3QuRnJvbVBvcnQ7XG4gICAgdGhpcy50b1BvcnQgPSBydWxlT2JqZWN0LlRvUG9ydDtcbiAgICB0aGlzLmdyb3VwSWQgPSBydWxlT2JqZWN0Lkdyb3VwSWQgfHwgZ3JvdXBSZWYgfHwgJyp1bmtub3duKic7IC8vIEluIGNhc2Ugb2YgYW4gaW5saW5lIHJ1bGVcblxuICAgIHRoaXMucGVlciA9XG4gICAgICAgIGZpbmRGaXJzdChydWxlT2JqZWN0LFxuICAgICAgICAgIFsnQ2lkcklwJywgJ0NpZHJJcHY2J10sXG4gICAgICAgICAgKGlwKSA9PiAoeyBraW5kOiAnY2lkci1pcCcsIGlwIH0gYXMgQ2lkcklwUGVlcikpXG4gICAgICAgIHx8XG4gICAgICAgIGZpbmRGaXJzdChydWxlT2JqZWN0LFxuICAgICAgICAgIFsnRGVzdGluYXRpb25TZWN1cml0eUdyb3VwSWQnLCAnU291cmNlU2VjdXJpdHlHcm91cElkJ10sXG4gICAgICAgICAgKHNlY3VyaXR5R3JvdXBJZCkgPT4gKHsga2luZDogJ3NlY3VyaXR5LWdyb3VwJywgc2VjdXJpdHlHcm91cElkIH0gYXMgU2VjdXJpdHlHcm91cFBlZXIpKVxuICAgICAgICB8fFxuICAgICAgICBmaW5kRmlyc3QocnVsZU9iamVjdCxcbiAgICAgICAgICBbJ0Rlc3RpbmF0aW9uUHJlZml4TGlzdElkJywgJ1NvdXJjZVByZWZpeExpc3RJZCddLFxuICAgICAgICAgIChwcmVmaXhMaXN0SWQpID0+ICh7IGtpbmQ6ICdwcmVmaXgtbGlzdCcsIHByZWZpeExpc3RJZCB9IGFzIFByZWZpeExpc3RQZWVyKSk7XG4gIH1cblxuICBwdWJsaWMgZXF1YWwob3RoZXI6IFNlY3VyaXR5R3JvdXBSdWxlKSB7XG4gICAgcmV0dXJuIHRoaXMuaXBQcm90b2NvbCA9PT0gb3RoZXIuaXBQcm90b2NvbFxuICAgICAgICAmJiB0aGlzLmZyb21Qb3J0ID09PSBvdGhlci5mcm9tUG9ydFxuICAgICAgICAmJiB0aGlzLnRvUG9ydCA9PT0gb3RoZXIudG9Qb3J0XG4gICAgICAgICYmIHBlZXJFcXVhbCh0aGlzLnBlZXIsIG90aGVyLnBlZXIpO1xuICB9XG5cbiAgcHVibGljIGRlc2NyaWJlUHJvdG9jb2woKSB7XG4gICAgaWYgKHRoaXMuaXBQcm90b2NvbCA9PT0gJy0xJykgeyByZXR1cm4gJ0V2ZXJ5dGhpbmcnOyB9XG5cbiAgICBjb25zdCBpcFByb3RvY29sID0gdGhpcy5pcFByb3RvY29sLnRvVXBwZXJDYXNlKCk7XG5cbiAgICBpZiAodGhpcy5mcm9tUG9ydCA9PT0gLTEpIHsgcmV0dXJuIGBBbGwgJHtpcFByb3RvY29sfWA7IH1cbiAgICBpZiAodGhpcy5mcm9tUG9ydCA9PT0gdGhpcy50b1BvcnQpIHsgcmV0dXJuIGAke2lwUHJvdG9jb2x9ICR7dGhpcy5mcm9tUG9ydH1gOyB9XG4gICAgcmV0dXJuIGAke2lwUHJvdG9jb2x9ICR7dGhpcy5mcm9tUG9ydH0tJHt0aGlzLnRvUG9ydH1gO1xuICB9XG5cbiAgcHVibGljIGRlc2NyaWJlUGVlcigpIHtcbiAgICBpZiAodGhpcy5wZWVyKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMucGVlci5raW5kKSB7XG4gICAgICAgIGNhc2UgJ2NpZHItaXAnOlxuICAgICAgICAgIGlmICh0aGlzLnBlZXIuaXAgPT09ICcwLjAuMC4wLzAnKSB7IHJldHVybiAnRXZlcnlvbmUgKElQdjQpJzsgfVxuICAgICAgICAgIGlmICh0aGlzLnBlZXIuaXAgPT09ICc6Oi8wJykgeyByZXR1cm4gJ0V2ZXJ5b25lIChJUHY2KSc7IH1cbiAgICAgICAgICByZXR1cm4gYCR7dGhpcy5wZWVyLmlwfWA7XG4gICAgICAgIGNhc2UgJ3ByZWZpeC1saXN0JzogcmV0dXJuIGAke3RoaXMucGVlci5wcmVmaXhMaXN0SWR9YDtcbiAgICAgICAgY2FzZSAnc2VjdXJpdHktZ3JvdXAnOiByZXR1cm4gYCR7dGhpcy5wZWVyLnNlY3VyaXR5R3JvdXBJZH1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAnPyc7XG4gIH1cblxuICBwdWJsaWMgdG9Kc29uKCk6IFJ1bGVKc29uIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3JvdXBJZDogdGhpcy5ncm91cElkLFxuICAgICAgaXBQcm90b2NvbDogdGhpcy5pcFByb3RvY29sLFxuICAgICAgZnJvbVBvcnQ6IHRoaXMuZnJvbVBvcnQsXG4gICAgICB0b1BvcnQ6IHRoaXMudG9Qb3J0LFxuICAgICAgcGVlcjogdGhpcy5wZWVyLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaWRySXBQZWVyIHtcbiAga2luZDogJ2NpZHItaXAnO1xuICBpcDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBQZWVyIHtcbiAga2luZDogJ3NlY3VyaXR5LWdyb3VwJztcbiAgc2VjdXJpdHlHcm91cElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlZml4TGlzdFBlZXIge1xuICBraW5kOiAncHJlZml4LWxpc3QnO1xuICBwcmVmaXhMaXN0SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgUnVsZVBlZXIgPSBDaWRySXBQZWVyIHwgU2VjdXJpdHlHcm91cFBlZXIgfCBQcmVmaXhMaXN0UGVlcjtcblxuZnVuY3Rpb24gcGVlckVxdWFsKGE/OiBSdWxlUGVlciwgYj86IFJ1bGVQZWVyKSB7XG4gIGlmICgoYSA9PT0gdW5kZWZpbmVkKSAhPT0gKGIgPT09IHVuZGVmaW5lZCkpIHsgcmV0dXJuIGZhbHNlOyB9XG4gIGlmIChhID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHRydWU7IH1cblxuICBpZiAoYS5raW5kICE9PSBiIS5raW5kKSB7IHJldHVybiBmYWxzZTsgfVxuICBzd2l0Y2ggKGEua2luZCkge1xuICAgIGNhc2UgJ2NpZHItaXAnOiByZXR1cm4gYS5pcCA9PT0gKGIgYXMgdHlwZW9mIGEpLmlwO1xuICAgIGNhc2UgJ3NlY3VyaXR5LWdyb3VwJzogcmV0dXJuIGEuc2VjdXJpdHlHcm91cElkID09PSAoYiBhcyB0eXBlb2YgYSkuc2VjdXJpdHlHcm91cElkO1xuICAgIGNhc2UgJ3ByZWZpeC1saXN0JzogcmV0dXJuIGEucHJlZml4TGlzdElkID09PSAoYiBhcyB0eXBlb2YgYSkucHJlZml4TGlzdElkO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmRGaXJzdDxUPihvYmo6IGFueSwga2V5czogc3RyaW5nW10sIGZuOiAoeDogc3RyaW5nKSA9PiBUKTogVCB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKGtleSBpbiBvYmopIHtcbiAgICAgICAgcmV0dXJuIGZuKG9ialtrZXldKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBkZWJ1Z2dlcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdWxlSnNvbiB7XG4gIGdyb3VwSWQ6IHN0cmluZztcbiAgaXBQcm90b2NvbDogc3RyaW5nO1xuICBmcm9tUG9ydD86IG51bWJlcjtcbiAgdG9Qb3J0PzogbnVtYmVyO1xuICBwZWVyPzogUnVsZVBlZXI7XG59Il19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.renderIntrinsics = void 0;\n/**\n * Turn CloudFormation intrinsics into strings\n *\n * ------\n *\n * This stringification is not intended to be mechanically reversible! It's intended\n * to be understood by humans!\n *\n * ------\n *\n * Turns Fn::GetAtt and Fn::Ref objects into the same strings that can be\n * parsed by Fn::Sub, but without the surrounding intrinsics.\n *\n * Evaluates Fn::Join directly if the second argument is a literal list of strings.\n *\n * Removes list and object values evaluating to { Ref: 'AWS::NoValue' }.\n *\n * For other intrinsics we choose a string representation that CloudFormation\n * cannot actually parse, but is comprehensible to humans.\n */\nfunction renderIntrinsics(x) {\n if (Array.isArray(x)) {\n return x.filter(el => !isNoValue(el)).map(renderIntrinsics);\n }\n if (isNoValue(x)) {\n return undefined;\n }\n const intrinsic = getIntrinsic(x);\n if (intrinsic) {\n if (intrinsic.fn === 'Ref') {\n return '${' + intrinsic.args + '}';\n }\n if (intrinsic.fn === 'Fn::GetAtt') {\n return '${' + intrinsic.args[0] + '.' + intrinsic.args[1] + '}';\n }\n if (intrinsic.fn === 'Fn::Join') {\n return unCloudFormationFnJoin(intrinsic.args[0], intrinsic.args[1]);\n }\n return stringifyIntrinsic(intrinsic.fn, intrinsic.args);\n }\n if (typeof x === 'object' && x !== null) {\n const ret = {};\n for (const [key, value] of Object.entries(x)) {\n if (!isNoValue(value)) {\n ret[key] = renderIntrinsics(value);\n }\n }\n return ret;\n }\n return x;\n}\nexports.renderIntrinsics = renderIntrinsics;\nfunction unCloudFormationFnJoin(separator, args) {\n if (Array.isArray(args)) {\n return args.filter(el => !isNoValue(el)).map(renderIntrinsics).join(separator);\n }\n return stringifyIntrinsic('Fn::Join', [separator, args]);\n}\nfunction stringifyIntrinsic(fn, args) {\n return JSON.stringify({ [fn]: renderIntrinsics(args) });\n}\nfunction getIntrinsic(x) {\n if (x === undefined || x === null || Array.isArray(x)) {\n return undefined;\n }\n if (typeof x !== 'object') {\n return undefined;\n }\n const keys = Object.keys(x);\n return keys.length === 1 && (keys[0] === 'Ref' || keys[0].startsWith('Fn::')) ? { fn: keys[0], args: x[keys[0]] } : undefined;\n}\nfunction isNoValue(x) {\n const int = getIntrinsic(x);\n return int && int.fn === 'Ref' && int.args === 'AWS::NoValue';\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWludHJpbnNpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZW5kZXItaW50cmluc2ljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLENBQU07SUFDckMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQ3BCLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUM7S0FDN0Q7SUFFRCxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUFFLE9BQU8sU0FBUyxDQUFDO0tBQUU7SUFFdkMsTUFBTSxTQUFTLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xDLElBQUksU0FBUyxFQUFFO1FBQ2IsSUFBSSxTQUFTLENBQUMsRUFBRSxLQUFLLEtBQUssRUFBRTtZQUFFLE9BQU8sSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1NBQUU7UUFDbkUsSUFBSSxTQUFTLENBQUMsRUFBRSxLQUFLLFlBQVksRUFBRTtZQUFFLE9BQU8sSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO1NBQUU7UUFDdkcsSUFBSSxTQUFTLENBQUMsRUFBRSxLQUFLLFVBQVUsRUFBRTtZQUFFLE9BQU8sc0JBQXNCLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FBRTtRQUN6RyxPQUFPLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxFQUFFLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3pEO0lBRUQsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtRQUN2QyxNQUFNLEdBQUcsR0FBUSxFQUFFLENBQUM7UUFDcEIsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFDckIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO2FBQ3BDO1NBQ0Y7UUFDRCxPQUFPLEdBQUcsQ0FBQztLQUNaO0lBQ0QsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBekJELDRDQXlCQztBQUVELFNBQVMsc0JBQXNCLENBQUMsU0FBaUIsRUFBRSxJQUFTO0lBQzFELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUN2QixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztLQUNoRjtJQUNELE9BQU8sa0JBQWtCLENBQUMsVUFBVSxFQUFFLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUVELFNBQVMsa0JBQWtCLENBQUMsRUFBVSxFQUFFLElBQVM7SUFDL0MsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUVELFNBQVMsWUFBWSxDQUFDLENBQU07SUFDMUIsSUFBSSxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtRQUFFLE9BQU8sU0FBUyxDQUFDO0tBQUU7SUFDNUUsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEVBQUU7UUFBRSxPQUFPLFNBQVMsQ0FBQztLQUFFO0lBQ2hELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDaEksQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLENBQU07SUFDdkIsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEtBQUssS0FBSyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDO0FBQ2hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFR1cm4gQ2xvdWRGb3JtYXRpb24gaW50cmluc2ljcyBpbnRvIHN0cmluZ3NcbiAqXG4gKiAtLS0tLS1cbiAqXG4gKiBUaGlzIHN0cmluZ2lmaWNhdGlvbiBpcyBub3QgaW50ZW5kZWQgdG8gYmUgbWVjaGFuaWNhbGx5IHJldmVyc2libGUhIEl0J3MgaW50ZW5kZWRcbiAqIHRvIGJlIHVuZGVyc3Rvb2QgYnkgaHVtYW5zIVxuICpcbiAqIC0tLS0tLVxuICpcbiAqIFR1cm5zIEZuOjpHZXRBdHQgYW5kIEZuOjpSZWYgb2JqZWN0cyBpbnRvIHRoZSBzYW1lIHN0cmluZ3MgdGhhdCBjYW4gYmVcbiAqIHBhcnNlZCBieSBGbjo6U3ViLCBidXQgd2l0aG91dCB0aGUgc3Vycm91bmRpbmcgaW50cmluc2ljcy5cbiAqXG4gKiBFdmFsdWF0ZXMgRm46OkpvaW4gZGlyZWN0bHkgaWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBhIGxpdGVyYWwgbGlzdCBvZiBzdHJpbmdzLlxuICpcbiAqIFJlbW92ZXMgbGlzdCBhbmQgb2JqZWN0IHZhbHVlcyBldmFsdWF0aW5nIHRvIHsgUmVmOiAnQVdTOjpOb1ZhbHVlJyB9LlxuICpcbiAqIEZvciBvdGhlciBpbnRyaW5zaWNzIHdlIGNob29zZSBhIHN0cmluZyByZXByZXNlbnRhdGlvbiB0aGF0IENsb3VkRm9ybWF0aW9uXG4gKiBjYW5ub3QgYWN0dWFsbHkgcGFyc2UsIGJ1dCBpcyBjb21wcmVoZW5zaWJsZSB0byBodW1hbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJJbnRyaW5zaWNzKHg6IGFueSk6IGFueSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHgpKSB7XG4gICAgcmV0dXJuIHguZmlsdGVyKGVsID0+ICFpc05vVmFsdWUoZWwpKS5tYXAocmVuZGVySW50cmluc2ljcyk7XG4gIH1cblxuICBpZiAoaXNOb1ZhbHVlKHgpKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cblxuICBjb25zdCBpbnRyaW5zaWMgPSBnZXRJbnRyaW5zaWMoeCk7XG4gIGlmIChpbnRyaW5zaWMpIHtcbiAgICBpZiAoaW50cmluc2ljLmZuID09PSAnUmVmJykgeyByZXR1cm4gJyR7JyArIGludHJpbnNpYy5hcmdzICsgJ30nOyB9XG4gICAgaWYgKGludHJpbnNpYy5mbiA9PT0gJ0ZuOjpHZXRBdHQnKSB7IHJldHVybiAnJHsnICsgaW50cmluc2ljLmFyZ3NbMF0gKyAnLicgKyBpbnRyaW5zaWMuYXJnc1sxXSArICd9JzsgfVxuICAgIGlmIChpbnRyaW5zaWMuZm4gPT09ICdGbjo6Sm9pbicpIHsgcmV0dXJuIHVuQ2xvdWRGb3JtYXRpb25GbkpvaW4oaW50cmluc2ljLmFyZ3NbMF0sIGludHJpbnNpYy5hcmdzWzFdKTsgfVxuICAgIHJldHVybiBzdHJpbmdpZnlJbnRyaW5zaWMoaW50cmluc2ljLmZuLCBpbnRyaW5zaWMuYXJncyk7XG4gIH1cblxuICBpZiAodHlwZW9mIHggPT09ICdvYmplY3QnICYmIHggIT09IG51bGwpIHtcbiAgICBjb25zdCByZXQ6IGFueSA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHgpKSB7XG4gICAgICBpZiAoIWlzTm9WYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0W2tleV0gPSByZW5kZXJJbnRyaW5zaWNzKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuICByZXR1cm4geDtcbn1cblxuZnVuY3Rpb24gdW5DbG91ZEZvcm1hdGlvbkZuSm9pbihzZXBhcmF0b3I6IHN0cmluZywgYXJnczogYW55KSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFyZ3MpKSB7XG4gICAgcmV0dXJuIGFyZ3MuZmlsdGVyKGVsID0+ICFpc05vVmFsdWUoZWwpKS5tYXAocmVuZGVySW50cmluc2ljcykuam9pbihzZXBhcmF0b3IpO1xuICB9XG4gIHJldHVybiBzdHJpbmdpZnlJbnRyaW5zaWMoJ0ZuOjpKb2luJywgW3NlcGFyYXRvciwgYXJnc10pO1xufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlJbnRyaW5zaWMoZm46IHN0cmluZywgYXJnczogYW55KSB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeSh7IFtmbl06IHJlbmRlckludHJpbnNpY3MoYXJncykgfSk7XG59XG5cbmZ1bmN0aW9uIGdldEludHJpbnNpYyh4OiBhbnkpOiBJbnRyaW5zaWMgfCB1bmRlZmluZWQge1xuICBpZiAoeCA9PT0gdW5kZWZpbmVkIHx8IHggPT09IG51bGwgfHwgQXJyYXkuaXNBcnJheSh4KSkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGlmICh0eXBlb2YgeCAhPT0gJ29iamVjdCcpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoeCk7XG4gIHJldHVybiBrZXlzLmxlbmd0aCA9PT0gMSAmJiAoa2V5c1swXSA9PT0gJ1JlZicgfHwga2V5c1swXS5zdGFydHNXaXRoKCdGbjo6JykpID8geyBmbjoga2V5c1swXSwgYXJnczogeFtrZXlzWzBdXSB9IDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc05vVmFsdWUoeDogYW55KSB7XG4gIGNvbnN0IGludCA9IGdldEludHJpbnNpYyh4KTtcbiAgcmV0dXJuIGludCAmJiBpbnQuZm4gPT09ICdSZWYnICYmIGludC5hcmdzID09PSAnQVdTOjpOb1ZhbHVlJztcbn1cblxuaW50ZXJmYWNlIEludHJpbnNpYyB7XG4gIGZuOiBzdHJpbmc7XG4gIGFyZ3M6IGFueTtcbn0iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.flatMap = exports.deepRemoveUndefined = exports.dropIfEmpty = exports.makeComparator = void 0;\n/**\n * Turn a (multi-key) extraction function into a comparator for use in Array.sort()\n */\nfunction makeComparator(keyFn) {\n return (a, b) => {\n const keyA = keyFn(a);\n const keyB = keyFn(b);\n const len = Math.min(keyA.length, keyB.length);\n for (let i = 0; i < len; i++) {\n const c = compare(keyA[i], keyB[i]);\n if (c !== 0) {\n return c;\n }\n }\n // Arrays are the same up to the min length -- shorter array sorts first\n return keyA.length - keyB.length;\n };\n}\nexports.makeComparator = makeComparator;\nfunction compare(a, b) {\n if (a < b) {\n return -1;\n }\n if (b < a) {\n return 1;\n }\n return 0;\n}\nfunction dropIfEmpty(xs) {\n return xs.length > 0 ? xs : undefined;\n}\nexports.dropIfEmpty = dropIfEmpty;\nfunction deepRemoveUndefined(x) {\n if (typeof x === undefined || x === null) {\n return x;\n }\n if (Array.isArray(x)) {\n return x.map(deepRemoveUndefined);\n }\n if (typeof x === 'object') {\n for (const [key, value] of Object.entries(x)) {\n x[key] = deepRemoveUndefined(value);\n if (x[key] === undefined) {\n delete x[key];\n }\n }\n return x;\n }\n return x;\n}\nexports.deepRemoveUndefined = deepRemoveUndefined;\nfunction flatMap(xs, f) {\n const ret = new Array();\n for (const x of xs) {\n ret.push(...f(x));\n }\n return ret;\n}\nexports.flatMap = flatMap;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxTQUFnQixjQUFjLENBQU8sS0FBb0I7SUFDdkQsT0FBTyxDQUFDLENBQUksRUFBRSxDQUFJLEVBQUUsRUFBRTtRQUNwQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFL0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUM1QixNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFBRSxPQUFPLENBQUMsQ0FBQzthQUFFO1NBQzNCO1FBRUQsd0VBQXdFO1FBQ3hFLE9BQU8sSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ25DLENBQUMsQ0FBQztBQUNKLENBQUM7QUFkRCx3Q0FjQztBQUVELFNBQVMsT0FBTyxDQUFJLENBQUksRUFBRSxDQUFJO0lBQzVCLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7S0FBRTtJQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFBRSxPQUFPLENBQUMsQ0FBQztLQUFFO0lBQ3hCLE9BQU8sQ0FBQyxDQUFDO0FBQ1gsQ0FBQztBQUVELFNBQWdCLFdBQVcsQ0FBSSxFQUFPO0lBQ3BDLE9BQU8sRUFBRSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3hDLENBQUM7QUFGRCxrQ0FFQztBQUVELFNBQWdCLG1CQUFtQixDQUFDLENBQU07SUFDeEMsSUFBSSxPQUFPLENBQUMsS0FBSyxTQUFTLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRTtRQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQUU7SUFDdkQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFO1FBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLG1CQUFtQixDQUFDLENBQUM7S0FBRTtJQUM1RCxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRTtRQUN6QixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUM1QyxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsbUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEtBQUssU0FBUyxFQUFFO2dCQUFFLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO2FBQUU7U0FDN0M7UUFDRCxPQUFPLENBQUMsQ0FBQztLQUNWO0lBQ0QsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBWEQsa0RBV0M7QUFFRCxTQUFnQixPQUFPLENBQU8sRUFBTyxFQUFFLENBQWdCO0lBQ3JELE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFLLENBQUM7SUFDM0IsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUU7UUFDbEIsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0tBQ25CO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBTkQsMEJBTUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFR1cm4gYSAobXVsdGkta2V5KSBleHRyYWN0aW9uIGZ1bmN0aW9uIGludG8gYSBjb21wYXJhdG9yIGZvciB1c2UgaW4gQXJyYXkuc29ydCgpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBtYWtlQ29tcGFyYXRvcjxULCBVPihrZXlGbjogKHg6IFQpID0+IFVbXSkge1xuICByZXR1cm4gKGE6IFQsIGI6IFQpID0+IHtcbiAgICBjb25zdCBrZXlBID0ga2V5Rm4oYSk7XG4gICAgY29uc3Qga2V5QiA9IGtleUZuKGIpO1xuICAgIGNvbnN0IGxlbiA9IE1hdGgubWluKGtleUEubGVuZ3RoLCBrZXlCLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBjb25zdCBjID0gY29tcGFyZShrZXlBW2ldLCBrZXlCW2ldKTtcbiAgICAgIGlmIChjICE9PSAwKSB7IHJldHVybiBjOyB9XG4gICAgfVxuXG4gICAgLy8gQXJyYXlzIGFyZSB0aGUgc2FtZSB1cCB0byB0aGUgbWluIGxlbmd0aCAtLSBzaG9ydGVyIGFycmF5IHNvcnRzIGZpcnN0XG4gICAgcmV0dXJuIGtleUEubGVuZ3RoIC0ga2V5Qi5sZW5ndGg7XG4gIH07XG59XG5cbmZ1bmN0aW9uIGNvbXBhcmU8VD4oYTogVCwgYjogVCkge1xuICBpZiAoYSA8IGIpIHsgcmV0dXJuIC0xOyB9XG4gIGlmIChiIDwgYSkgeyByZXR1cm4gMTsgfVxuICByZXR1cm4gMDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRyb3BJZkVtcHR5PFQ+KHhzOiBUW10pOiBUW10gfCB1bmRlZmluZWQge1xuICByZXR1cm4geHMubGVuZ3RoID4gMCA/IHhzIDogdW5kZWZpbmVkO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGVlcFJlbW92ZVVuZGVmaW5lZCh4OiBhbnkpOiBhbnkge1xuICBpZiAodHlwZW9mIHggPT09IHVuZGVmaW5lZCB8fCB4ID09PSBudWxsKSB7IHJldHVybiB4OyB9XG4gIGlmIChBcnJheS5pc0FycmF5KHgpKSB7IHJldHVybiB4Lm1hcChkZWVwUmVtb3ZlVW5kZWZpbmVkKTsgfVxuICBpZiAodHlwZW9mIHggPT09ICdvYmplY3QnKSB7XG4gICAgZm9yIChjb25zdCBba2V5LCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMoeCkpIHtcbiAgICAgIHhba2V5XSA9IGRlZXBSZW1vdmVVbmRlZmluZWQodmFsdWUpO1xuICAgICAgaWYgKHhba2V5XSA9PT0gdW5kZWZpbmVkKSB7IGRlbGV0ZSB4W2tleV07IH1cbiAgICB9XG4gICAgcmV0dXJuIHg7XG4gIH1cbiAgcmV0dXJuIHg7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmbGF0TWFwPFQsIFU+KHhzOiBUW10sIGY6ICh4OiBUKSA9PiBVW10pOiBVW10ge1xuICBjb25zdCByZXQgPSBuZXcgQXJyYXk8VT4oKTtcbiAgZm9yIChjb25zdCB4IG9mIHhzKSB7XG4gICAgcmV0LnB1c2goLi4uZih4KSk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cbiJdfQ==","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./types/database\"), exports);\n__exportStar(require(\"./types/resource\"), exports);\n__exportStar(require(\"./types/augmentations\"), exports);\n__exportStar(require(\"./types/metrics\"), exports);\n__exportStar(require(\"./types/diff\"), exports);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFpQztBQUNqQyxtREFBaUM7QUFDakMsd0RBQXNDO0FBQ3RDLGtEQUFnQztBQUNoQywrQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3R5cGVzL2RhdGFiYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvcmVzb3VyY2UnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy9hdWdtZW50YXRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvbWV0cmljcyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL2RpZmYnO1xuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVnbWVudGF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9hdWdtZW50YXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlbGF0aW9uc2hpcCB9IGZyb20gJ0BjZGtsYWJzL3Rza2InO1xuaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tICcuL3Jlc291cmNlJztcblxuLyoqXG4gKiBBdWdtZW50YXRpb25zIGZvciBhIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGVcbiAqXG4gKiBBdWdtZW50YXRpb25zIGFyZSBhIGRlcHJlY2F0ZWQgbWVjaGFuaXNtIGZvciBhdXRvbWF0aWNhbGx5IGdlbmVyYXRpbmcgbWV0cmljc1xuICogZnVuY3Rpb25zIGZvciBjZXJ0YWluIHJlc291cmNlcywgdXRpbGl6aW5nIFR5cGVTY3JpcHQgbWl4aW5zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlQXVnbWVudGF0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgLyoqXG4gICAqIE1ldHJpYyBhdWdtZW50YXRpb25zIGZvciB0aGlzIHJlc291cmNlIHR5cGVcbiAgICovXG4gIG1ldHJpY3M/OiBSZXNvdXJjZU1ldHJpY0F1Z21lbnRhdGlvbnM7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGNsYXNzIHRvIGJlIFwiYXVnbWVudGVkXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGtlYmFiIGNhc2VkIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIG5hbWUgKyAnLWJhc2UnXG4gICAqL1xuICBiYXNlQ2xhc3NGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY2xhc3MgdG8gYmUgXCJhdWdtZW50ZWRcIi5cbiAgICpcbiAgICogQGRlZmF1bHQgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgbmFtZSArICdCYXNlJ1xuICAgKi9cbiAgYmFzZUNsYXNzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBpbnRlcmZhY2UgdG8gYmUgXCJhdWdtZW50ZWRcIi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBzYW1lIGFzIGBgY2xhc3NGaWxlYGAuXG4gICAqL1xuICBpbnRlcmZhY2VGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW50ZXJmYWNlIHRvIGJlIFwiYXVnbWVudGVkXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdJJyArIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIG5hbWVcbiAgICovXG4gIGludGVyZmFjZT86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSXNBdWdtZW50ZWRSZXNvdXJjZSA9IFJlbGF0aW9uc2hpcDxSZXNvdXJjZSwgUmVzb3VyY2VBdWdtZW50YXRpb24+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlTWV0cmljQXVnbWVudGF0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIG9mIG1ldHJpY3MgZm9yIHRoaXMgc2VydmljZVxuICAgKi9cbiAgbmFtZXNwYWNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9wZXJ0aWVzIG9mIHRoZSByZXNvdXJjZSBjbGFzcyB0aGF0IHByb3ZpZGUgdmFsdWVzIGZvciB0aGUgZGltZW5zaW9uc1xuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgYHsgUXVldWVOYW1lOiAncXVldWVOYW1lJyB9YCBzYXlzIHRoYXQgdGhlIG1ldHJpYyBoYXMgYSBgUXVldWVOYW1lYFxuICAgKiBkaW1lbnNpb24sIGZvciB3aGljaCB0aGUgdmFsdWUgY2FuIGJlIG9idGFpbmVkIGJ5IHJlYWRpbmcgYHRoaXMucXVldWVOYW1lYC5cbiAgICovXG4gIGRpbWVuc2lvbnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRyaWNzIGZvciB0aGlzIHJlc291cmNlXG4gICAqL1xuICBtZXRyaWNzOiBSZXNvdXJjZU1ldHJpY1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlTWV0cmljIHtcbiAgLyoqXG4gICAqIFVwcGVyY2FzZS1maXJzdCBtZXRyaWMgbmFtZVxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEb2N1bWVudGF0aW9uIGxpbmVcbiAgICovXG4gIGRvY3VtZW50YXRpb246IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGlzIGFuIGV2ZW4gY291bnQgKDEgZ2V0cyBlbWl0dGVkIGV2ZXJ5IHRpbWUgc29tZXRoaW5nIG9jY3VycylcbiAgICpcbiAgICogQGRlZmF1bHQgTWV0cmljVHlwZS5BdHRyaWJcbiAgICovXG4gIHR5cGU/OiBNZXRyaWNUeXBlO1xufVxuXG5leHBvcnQgdHlwZSBNZXRyaWNUeXBlID1cbiAgLyoqXG4gICAqIFRoaXMgbWV0cmljIGlzIGVtaXR0ZWQgZm9yIGV2ZW50cywgbWVhc3VyaW5nIGEgYXR0cmlidXRlIG9mIHRoZSBldmVudC5cbiAgICpcbiAgICogVHlwaWNhbCBleGFtcGxlcyBvZiB0aGlzIHdvdWxkIGJlIGR1cmF0aW9uLCBvciByZXF1ZXN0IHNpemUsIG9yIHNpbWlsYXIuXG4gICAqXG4gICAqIFRoZSBkZWZhdWx0IGFnZ3JlZ2F0ZSBmb3IgdGhpcyB0eXBlIG9mIGV2ZW50IGlzIFwiQXZnXCIuXG4gICAqL1xuICB8ICdhdHRyaWInXG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0cmljIGlzIGVtaXR0ZWQgZm9yIGV2ZW50cywgYW5kIHRoZSB2YWx1ZSBpcyBhbHdheXMgYDFgLlxuICAgKlxuICAgKiBPbmx5IFwiU3VtXCIgaXMgYSBtZWFuaW5nZnVsIGFnZ3JlZ2F0ZSBvZiB0aGlzIHR5cGUgb2YgbWV0cmljOyBhbGwgb3RoZXJcbiAgICogYWdncmVnYXRpb25zIHdpbGwgb25seSBldmVyIHByb2R1Y2UgdGhlIHZhbHVlIGAxYC5cbiAgICovXG4gIHwgJ2NvdW50J1xuXG4gIC8qKlxuICAgKiBUaGlzIG1ldHJpYyBpcyBlbWl0dGVkIHBlcmlvZGljYWxseSwgcmVwcmVzZW50aW5nIGEgc3lzdGVtIHByb3BlcnR5LlxuICAgKlxuICAgKiBUaGUgbWV0cmljIG1lYXN1cmVzIHNvbWUgZ2xvYmFsIGV2ZXItY2hhbmdpbmcgcHJvcGVydHksIGFuZCBkb2VzIG5vdFxuICAgKiBtZWFzdXJlIGV2ZW50cy4gVGhlIG1vc3QgdXNlZnVsIGFnZ3JlZ2F0ZSBvZiB0aGlzIHR5cGUgb2YgbWV0cmljIGlzIFwiTWF4XCIuXG4gICAqL1xuICB8ICdnYXVnZSc7XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RichSpecDatabase = exports.loadDatabase = exports.emptyDatabase = void 0;\nconst fs_1 = require(\"fs\");\nconst zlib_1 = require(\"zlib\");\nconst tskb_1 = require(\"@cdklabs/tskb\");\nfunction emptyDatabase() {\n return new tskb_1.Database({\n resource: (0, tskb_1.entityCollection)().index({\n cloudFormationType: (0, tskb_1.fieldIndex)('cloudFormationType', tskb_1.stringCmp),\n }),\n region: (0, tskb_1.entityCollection)().index({\n name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp),\n }),\n service: (0, tskb_1.entityCollection)().index({\n name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp),\n cloudFormationNamespace: (0, tskb_1.fieldIndex)('cloudFormationNamespace', tskb_1.stringCmp),\n }),\n typeDefinition: (0, tskb_1.entityCollection)(),\n augmentations: (0, tskb_1.entityCollection)(),\n metric: (0, tskb_1.entityCollection)().index({\n name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp),\n namespace: (0, tskb_1.fieldIndex)('namespace', tskb_1.stringCmp),\n dedupKey: (0, tskb_1.fieldIndex)('dedupKey', tskb_1.stringCmp),\n }),\n dimensionSet: (0, tskb_1.entityCollection)().index({\n dedupKey: (0, tskb_1.fieldIndex)('dedupKey', tskb_1.stringCmp),\n }),\n }, (r) => ({\n hasResource: r.relationship('service', 'resource'),\n regionHasResource: r.relationship('region', 'resource'),\n regionHasService: r.relationship('region', 'service'),\n usesType: r.relationship('resource', 'typeDefinition'),\n isAugmented: r.relationship('resource', 'augmentations'),\n usesDimensionSet: r.relationship('metric', 'dimensionSet'),\n resourceHasMetric: r.relationship('resource', 'metric'),\n serviceHasMetric: r.relationship('service', 'metric'),\n resourceHasDimensionSet: r.relationship('resource', 'dimensionSet'),\n serviceHasDimensionSet: r.relationship('service', 'dimensionSet'),\n }));\n}\nexports.emptyDatabase = emptyDatabase;\nasync function loadDatabase(pathToDb) {\n const db = emptyDatabase();\n const contents = await fs_1.promises.readFile(pathToDb);\n const json = pathToDb.endsWith('.gz') ? (0, zlib_1.gunzipSync)(contents).toString('utf-8') : contents.toString('utf-8');\n db.load(JSON.parse(json));\n return db;\n}\nexports.loadDatabase = loadDatabase;\n/**\n * Helpers for working with a SpecDatabase\n */\nclass RichSpecDatabase {\n constructor(db) {\n this.db = db;\n }\n /**\n * Find all resources of a given type\n */\n resourceByType(cfnType, operation = 'resourceByType') {\n const res = this.db.lookup('resource', 'cloudFormationType', 'equals', cfnType);\n if (res.length === 0) {\n throw new Error(`${operation}: no such resource: ${cfnType}`);\n }\n return res[0];\n }\n /**\n * All type definitions used by a certain resource\n */\n resourceTypeDefs(cfnType) {\n const resource = this.db.lookup('resource', 'cloudFormationType', 'equals', cfnType).only();\n return this.db.follow('usesType', resource).map((x) => x.entity);\n }\n /**\n * Find a type definition from a given property type\n */\n tryFindDef(type) {\n return type.type === 'ref' ? this.db.get('typeDefinition', type.reference.$ref) : undefined;\n }\n}\nexports.RichSpecDatabase = RichSpecDatabase;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkJBQW9DO0FBQ3BDLCtCQUFrQztBQUNsQyx3Q0FBa0Y7QUF1QmxGLFNBQWdCLGFBQWE7SUFDM0IsT0FBTyxJQUFJLGVBQVEsQ0FDakI7UUFDRSxRQUFRLEVBQUUsSUFBQSx1QkFBZ0IsR0FBWSxDQUFDLEtBQUssQ0FBQztZQUMzQyxrQkFBa0IsRUFBRSxJQUFBLGlCQUFVLEVBQUMsb0JBQW9CLEVBQUUsZ0JBQVMsQ0FBQztTQUNoRSxDQUFDO1FBQ0YsTUFBTSxFQUFFLElBQUEsdUJBQWdCLEdBQVUsQ0FBQyxLQUFLLENBQUM7WUFDdkMsSUFBSSxFQUFFLElBQUEsaUJBQVUsRUFBQyxNQUFNLEVBQUUsZ0JBQVMsQ0FBQztTQUNwQyxDQUFDO1FBQ0YsT0FBTyxFQUFFLElBQUEsdUJBQWdCLEdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDekMsSUFBSSxFQUFFLElBQUEsaUJBQVUsRUFBQyxNQUFNLEVBQUUsZ0JBQVMsQ0FBQztZQUNuQyx1QkFBdUIsRUFBRSxJQUFBLGlCQUFVLEVBQUMseUJBQXlCLEVBQUUsZ0JBQVMsQ0FBQztTQUMxRSxDQUFDO1FBQ0YsY0FBYyxFQUFFLElBQUEsdUJBQWdCLEdBQWtCO1FBQ2xELGFBQWEsRUFBRSxJQUFBLHVCQUFnQixHQUF3QjtRQUN2RCxNQUFNLEVBQUUsSUFBQSx1QkFBZ0IsR0FBVSxDQUFDLEtBQUssQ0FBQztZQUN2QyxJQUFJLEVBQUUsSUFBQSxpQkFBVSxFQUFDLE1BQU0sRUFBRSxnQkFBUyxDQUFDO1lBQ25DLFNBQVMsRUFBRSxJQUFBLGlCQUFVLEVBQUMsV0FBVyxFQUFFLGdCQUFTLENBQUM7WUFDN0MsUUFBUSxFQUFFLElBQUEsaUJBQVUsRUFBQyxVQUFVLEVBQUUsZ0JBQVMsQ0FBQztTQUM1QyxDQUFDO1FBQ0YsWUFBWSxFQUFFLElBQUEs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QUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksVUFBVSxDQUFDLElBQWtCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUM5RixDQUFDO0NBQ0Y7QUE1QkQsNENBNEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBndW56aXBTeW5jIH0gZnJvbSAnemxpYic7XG5pbXBvcnQgeyBEYXRhYmFzZSwgZW50aXR5Q29sbGVjdGlvbiwgZmllbGRJbmRleCwgc3RyaW5nQ21wIH0gZnJvbSAnQGNka2xhYnMvdHNrYic7XG5pbXBvcnQgeyBJc0F1Z21lbnRlZFJlc291cmNlLCBSZXNvdXJjZUF1Z21lbnRhdGlvbiB9IGZyb20gJy4vYXVnbWVudGF0aW9ucyc7XG5pbXBvcnQge1xuICBEaW1lbnNpb25TZXQsXG4gIE1ldHJpYyxcbiAgUmVzb3VyY2VIYXNEaW1lbnNpb25TZXQsXG4gIFNlcnZpY2VIYXNEaW1lbnNpb25TZXQsXG4gIFVzZXNEaW1lbnNpb25TZXQsXG4gIFJlc291cmNlSGFzTWV0cmljLFxuICBTZXJ2aWNlSGFzTWV0cmljLFxufSBmcm9tICcuL21ldHJpY3MnO1xuaW1wb3J0IHtcbiAgUmVzb3VyY2UsXG4gIFNlcnZpY2UsXG4gIFR5cGVEZWZpbml0aW9uLFxuICBQcm9wZXJ0eVR5cGUsXG4gIFJlZ2lvbixcbiAgSGFzUmVzb3VyY2UsXG4gIFJlZ2lvbkhhc1Jlc291cmNlLFxuICBSZWdpb25IYXNTZXJ2aWNlLFxuICBVc2VzVHlwZSxcbn0gZnJvbSAnLi9yZXNvdXJjZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbXB0eURhdGFiYXNlKCkge1xuICByZXR1cm4gbmV3IERhdGFiYXNlKFxuICAgIHtcbiAgICAgIHJlc291cmNlOiBlbnRpdHlDb2xsZWN0aW9uPFJlc291cmNlPigpLmluZGV4KHtcbiAgICAgICAgY2xvdWRGb3JtYXRpb25UeXBlOiBmaWVsZEluZGV4KCdjbG91ZEZvcm1hdGlvblR5cGUnLCBzdHJpbmdDbXApLFxuICAgICAgfSksXG4gICAgICByZWdpb246IGVudGl0eUNvbGxlY3Rpb248UmVnaW9uPigpLmluZGV4KHtcbiAgICAgICAgbmFtZTogZmllbGRJbmRleCgnbmFtZScsIHN0cmluZ0NtcCksXG4gICAgICB9KSxcbiAgICAgIHNlcnZpY2U6IGVudGl0eUNvbGxlY3Rpb248U2VydmljZT4oKS5pbmRleCh7XG4gICAgICAgIG5hbWU6IGZpZWxkSW5kZXgoJ25hbWUnLCBzdHJpbmdDbXApLFxuICAgICAgICBjbG91ZEZvcm1hdGlvbk5hbWVzcGFjZTogZmllbGRJbmRleCgnY2xvdWRGb3JtYXRpb25OYW1lc3BhY2UnLCBzdHJpbmdDbXApLFxuICAgICAgfSksXG4gICAgICB0eXBlRGVmaW5pdGlvbjogZW50aXR5Q29sbGVjdGlvbjxUeXBlRGVmaW5pdGlvbj4oKSxcbiAgICAgIGF1Z21lbnRhdGlvbnM6IGVudGl0eUNvbGxlY3Rpb248UmVzb3VyY2VBdWdtZW50YXRpb24+KCksXG4gICAgICBtZXRyaWM6IGVudGl0eUNvbGxlY3Rpb248TWV0cmljPigpLmluZGV4KHtcbiAgICAgICAgbmFtZTogZmllbGRJbmRleCgnbmFtZScsIHN0cmluZ0NtcCksXG4gICAgICAgIG5hbWVzcGFjZTogZmllbGRJbmRleCgnbmFtZXNwYWNlJywgc3RyaW5nQ21wKSxcbiAgICAgICAgZGVkdXBLZXk6IGZpZWxkSW5kZXgoJ2RlZHVwS2V5Jywgc3RyaW5nQ21wKSxcbiAgICAgIH0pLFxuICAgICAgZGltZW5zaW9uU2V0OiBlbnRpdHlDb2xsZWN0aW9uPERpbWVuc2lvblNldD4oKS5pbmRleCh7XG4gICAgICAgIGRlZHVwS2V5OiBmaWVsZEluZGV4KCdkZWR1cEtleScsIHN0cmluZ0NtcCksXG4gICAgICB9KSxcbiAgICB9LFxuICAgIChyKSA9PiAoe1xuICAgICAgaGFzUmVzb3VyY2U6IHIucmVsYXRpb25zaGlwPEhhc1Jlc291cmNlPignc2VydmljZScsICdyZXNvdXJjZScpLFxuICAgICAgcmVnaW9uSGFzUmVzb3VyY2U6IHIucmVsYXRpb25zaGlwPFJlZ2lvbkhhc1Jlc291cmNlPigncmVnaW9uJywgJ3Jlc291cmNlJyksXG4gICAgICByZWdpb25IYXNTZXJ2aWNlOiByLnJlbGF0aW9uc2hpcDxSZWdpb25IYXNTZXJ2aWNlPigncmVnaW9uJywgJ3NlcnZpY2UnKSxcbiAgICAgIHVzZXNUeXBlOiByLnJlbGF0aW9uc2hpcDxVc2VzVHlwZT4oJ3Jlc291cmNlJywgJ3R5cGVEZWZpbml0aW9uJyksXG4gICAgICBpc0F1Z21lbnRlZDogci5yZWxhdGlvbnNoaXA8SXNBdWdtZW50ZWRSZXNvdXJjZT4oJ3Jlc291cmNlJywgJ2F1Z21lbnRhdGlvbnMnKSxcbiAgICAgIHVzZXNEaW1lbnNpb25TZXQ6IHIucmVsYXRpb25zaGlwPFVzZXNEaW1lbnNpb25TZXQ+KCdtZXRyaWMnLCAnZGltZW5zaW9uU2V0JyksXG4gICAgICByZXNvdXJjZUhhc01ldHJpYzogci5yZWxhdGlvbnNoaXA8UmVzb3VyY2VIYXNNZXRyaWM+KCdyZXNvdXJjZScsICdtZXRyaWMnKSxcbiAgICAgIHNlcnZpY2VIYXNNZXRyaWM6IHIucmVsYXRpb25zaGlwPFNlcnZpY2VIYXNNZXRyaWM+KCdzZXJ2aWNlJywgJ21ldHJpYycpLFxuICAgICAgcmVzb3VyY2VIYXNEaW1lbnNpb25TZXQ6IHIucmVsYXRpb25zaGlwPFJlc291cmNlSGFzRGltZW5zaW9uU2V0PigncmVzb3VyY2UnLCAnZGltZW5zaW9uU2V0JyksXG4gICAgICBzZXJ2aWNlSGFzRGltZW5zaW9uU2V0OiByLnJlbGF0aW9uc2hpcDxTZXJ2aWNlSGFzRGltZW5zaW9uU2V0Pignc2VydmljZScsICdkaW1lbnNpb25TZXQnKSxcbiAgICB9KSxcbiAgKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWREYXRhYmFzZShwYXRoVG9EYjogc3RyaW5nKSB7XG4gIGNvbnN0IGRiID0gZW1wdHlEYXRhYmFzZSgpO1xuICBjb25zdCBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKHBhdGhUb0RiKTtcbiAgY29uc3QganNvbiA9IHBhdGhUb0RiLmVuZHNXaXRoKCcuZ3onKSA/IGd1bnppcFN5bmMoY29udGVudHMpLnRvU3RyaW5nKCd1dGYtOCcpIDogY29udGVudHMudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gIGRiLmxvYWQoSlNPTi5wYXJzZShqc29uKSk7XG4gIHJldHVybiBkYjtcbn1cblxuZXhwb3J0IHR5cGUgU3BlY0RhdGFiYXNlID0gUmV0dXJuVHlwZTx0eXBlb2YgZW1wdHlEYXRhYmFzZT47XG5cbi8qKlxuICogSGVscGVycyBmb3Igd29ya2luZyB3aXRoIGEgU3BlY0RhdGFiYXNlXG4gKi9cbmV4cG9ydCBjbGFzcyBSaWNoU3BlY0RhdGFiYXNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkYjogU3BlY0RhdGFiYXNlKSB7fVxuXG4gIC8qKlxuICAgKiBGaW5kIGFsbCByZXNvdXJjZXMgb2YgYSBnaXZlbiB0eXBlXG4gICAqL1xuICBwdWJsaWMgcmVzb3VyY2VCeVR5cGUoY2ZuVHlwZTogc3RyaW5nLCBvcGVyYXRpb24gPSAncmVzb3VyY2VCeVR5cGUnKTogUmVzb3VyY2Uge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuZGIubG9va3VwKCdyZXNvdXJjZScsICdjbG91ZEZvcm1hdGlvblR5cGUnLCAnZXF1YWxzJywgY2ZuVHlwZSk7XG4gICAgaWYgKHJlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtvcGVyYXRpb259OiBubyBzdWNoIHJlc291cmNlOiAke2NmblR5cGV9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXNbMF07XG4gIH1cblxuICAvKipcbiAgICogQWxsIHR5cGUgZGVmaW5pdGlvbnMgdXNlZCBieSBhIGNlcnRhaW4gcmVzb3VyY2VcbiAgICovXG4gIHB1YmxpYyByZXNvdXJjZVR5cGVEZWZzKGNmblR5cGU6IHN0cmluZyk6IHJlYWRvbmx5IFR5cGVEZWZpbml0aW9uW10ge1xuICAgIGNvbnN0IHJlc291cmNlID0gdGhpcy5kYi5sb29rdXAoJ3Jlc291cmNlJywgJ2Nsb3VkRm9ybWF0aW9uVHlwZScsICdlcXVhbHMnLCBjZm5UeXBlKS5vbmx5KCk7XG4gICAgcmV0dXJuIHRoaXMuZGIuZm9sbG93KCd1c2VzVHlwZScsIHJlc291cmNlKS5tYXAoKHgpID0+IHguZW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIGEgdHlwZSBkZWZpbml0aW9uIGZyb20gYSBnaXZlbiBwcm9wZXJ0eSB0eXBlXG4gICAqL1xuICBwdWJsaWMgdHJ5RmluZERlZih0eXBlOiBQcm9wZXJ0eVR5cGUpOiBUeXBlRGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHR5cGUudHlwZSA9PT0gJ3JlZicgPyB0aGlzLmRiLmdldCgndHlwZURlZmluaXRpb24nLCB0eXBlLnJlZmVyZW5jZS4kcmVmKSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGUsIFByb3BlcnR5LCBSZXNvdXJjZSwgU2VydmljZSwgVHlwZURlZmluaXRpb24gfSBmcm9tICcuL3Jlc291cmNlJztcblxuZXhwb3J0IGludGVyZmFjZSBTcGVjRGF0YWJhc2VEaWZmIHtcbiAgc2VydmljZXM6IE1hcERpZmY8U2VydmljZSwgVXBkYXRlZFNlcnZpY2U+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3REaWZmPEUsIEVEPiB7XG4gIHJlYWRvbmx5IGFkZGVkPzogRVtdO1xuICByZWFkb25seSByZW1vdmVkPzogRVtdO1xuICByZWFkb25seSB1cGRhdGVkPzogRURbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBEaWZmPEUsIEVEPiB7XG4gIHJlYWRvbmx5IGFkZGVkPzogUmVjb3JkPHN0cmluZywgRT47XG4gIHJlYWRvbmx5IHJlbW92ZWQ/OiBSZWNvcmQ8c3RyaW5nLCBFPjtcbiAgcmVhZG9ubHkgdXBkYXRlZD86IFJlY29yZDxzdHJpbmcsIEVEPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkU2VydmljZSB7XG4gIHJlYWRvbmx5IG5hbWU/OiBTY2FsYXJEaWZmPFNlcnZpY2VbJ25hbWUnXT47XG4gIHJlYWRvbmx5IHNob3J0TmFtZT86IFNjYWxhckRpZmY8U2VydmljZVsnc2hvcnROYW1lJ10+O1xuICByZWFkb25seSBjYXBpdGFsaXplZD86IFNjYWxhckRpZmY8U2VydmljZVsnY2FwaXRhbGl6ZWQnXT47XG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uTmFtZXNwYWNlPzogU2NhbGFyRGlmZjxTZXJ2aWNlWydjbG91ZEZvcm1hdGlvbk5hbWVzcGFjZSddPjtcbiAgcmVhZG9ubHkgcmVzb3VyY2VEaWZmPzogTWFwRGlmZjxSZXNvdXJjZSwgVXBkYXRlZFJlc291cmNlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkUmVzb3VyY2Uge1xuICByZWFkb25seSBuYW1lPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvblR5cGU/OiBTY2FsYXJEaWZmPHN0cmluZz47XG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uVHJhbnNmb3JtPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBkb2N1bWVudGF0aW9uPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogTWFwRGlmZjxQcm9wZXJ0eSwgVXBkYXRlZFByb3BlcnR5PjtcbiAgcmVhZG9ubHkgYXR0cmlidXRlcz86IE1hcERpZmY8QXR0cmlidXRlLCBVcGRhdGVkQXR0cmlidXRlPjtcbiAgcmVhZG9ubHkgaWRlbnRpZmllcj86IFNjYWxhckRpZmY8UmVzb3VyY2VbJ2lkZW50aWZpZXInXT47XG4gIHJlYWRvbmx5IGlzU3RhdGVmdWw/OiBTY2FsYXJEaWZmPGJvb2xlYW4+O1xuICByZWFkb25seSB0YWdJbmZvcm1hdGlvbj86IFNjYWxhckRpZmY8UmVzb3VyY2VbJ3RhZ0luZm9ybWF0aW9uJ10+O1xuICByZWFkb25seSBzY3J1dGluaXphYmxlPzogU2NhbGFyRGlmZjxSZXNvdXJjZVsnc2NydXRpbml6YWJsZSddPjtcbiAgcmVhZG9ubHkgdHlwZURlZmluaXRpb25EaWZmPzogTWFwRGlmZjxUeXBlRGVmaW5pdGlvbiwgVXBkYXRlZFR5cGVEZWZpbml0aW9uPjtcbiAgcmVhZG9ubHkgcHJpbWFyeUlkZW50aWZpZXI/OiBMaXN0RGlmZjxzdHJpbmcsIHZvaWQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZWRQcm9wZXJ0eSB7XG4gIHJlYWRvbmx5IG9sZDogUHJvcGVydHk7XG4gIHJlYWRvbmx5IG5ldzogUHJvcGVydHk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlZEF0dHJpYnV0ZSB7XG4gIHJlYWRvbmx5IG9sZDogQXR0cmlidXRlO1xuICByZWFkb25seSBuZXc6IEF0dHJpYnV0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkVHlwZURlZmluaXRpb24ge1xuICByZWFkb25seSBuYW1lPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBkb2N1bWVudGF0aW9uPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogTWFwRGlmZjxQcm9wZXJ0eSwgVXBkYXRlZFByb3BlcnR5PjtcbiAgcmVhZG9ubHkgbXVzdFJlbmRlckZvckJ3Q29tcGF0PzogU2NhbGFyRGlmZjxib29sZWFuPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2FsYXJEaWZmPEE+IHtcbiAgcmVhZG9ubHkgb2xkPzogQTtcbiAgcmVhZG9ubHkgbmV3PzogQTtcbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlbGF0aW9uc2hpcCB9IGZyb20gJ0BjZGtsYWJzL3Rza2InO1xuaW1wb3J0IHsgUmVzb3VyY2UsIFNlcnZpY2UgfSBmcm9tICcuL3Jlc291cmNlJztcblxuLyoqXG4gKiBBIE1ldHJpYyBEaW1lbnNpb24gKG5vdCBhbiBlbnRpdHkpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGltZW5zaW9uIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGRpbWVuc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQSBwb3RlbnRpYWwgdmFsdWUgZm9yIHRoaXMgZGltZW5zaW9uXG4gICAqL1xuICByZWFkb25seSB2YWx1ZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHNldCBvZiBNZXRyaWMgRGltZW5zaW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGltZW5zaW9uU2V0IGV4dGVuZHMgRW50aXR5IHtcbiAgLyoqXG4gICAqIEEgdW5pcXVlIHZhbHVlIHVzZWQgdG8gZGVkdXBsaWNhdGUgdGhlIGVudGl0eVxuICAgKi9cbiAgZGVkdXBLZXk6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBkaW1lbnNpb25zIGluIHRoaXMgc2V0XG4gICAqL1xuICBkaW1lbnNpb25zOiBEaW1lbnNpb25bXTtcbn1cbmV4cG9ydCB0eXBlIFJlc291cmNlSGFzRGltZW5zaW9uU2V0ID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBEaW1lbnNpb25TZXQ+O1xuZXhwb3J0IHR5cGUgU2VydmljZUhhc0RpbWVuc2lvblNldCA9IFJlbGF0aW9uc2hpcDxTZXJ2aWNlLCBEaW1lbnNpb25TZXQ+O1xuXG4vKipcbiAqIEEgQ2xvdWRXYXRjaCBNZXRyaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRyaWMgZXh0ZW5kcyBFbnRpdHkge1xuICAvKipcbiAgICogTWV0cmljIG5hbWVzcGFjZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBtZXRyaWNcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIERlZmF1bHQgKHN1Z2dlc3RlZCkgc3RhdGlzdGljIGZvciB0aGlzIG1ldHJpY1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGlzdGljOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIHVuaXF1ZSB2YWx1ZSB1c2VkIHRvIGRlZHVwbGljYXRlIHRoZSBlbnRpdHlcbiAgICovXG4gIHJlYWRvbmx5IGRlZHVwS2V5OiBzdHJpbmc7XG59XG5leHBvcnQgdHlwZSBVc2VzRGltZW5zaW9uU2V0ID0gUmVsYXRpb25zaGlwPE1ldHJpYywgRGltZW5zaW9uU2V0PjtcbmV4cG9ydCB0eXBlIFJlc291cmNlSGFzTWV0cmljID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBNZXRyaWM+O1xuZXhwb3J0IHR5cGUgU2VydmljZUhhc01ldHJpYyA9IFJlbGF0aW9uc2hpcDxTZXJ2aWNlLCBNZXRyaWM+O1xuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RichPropertyType = exports.PropertyScrutinyType = exports.ResourceScrutinyType = exports.isCollectionType = exports.Deprecation = exports.RichAttribute = exports.RichProperty = exports.RichTypedField = void 0;\nconst sorting_1 = require(\"../util/sorting\");\nclass RichTypedField {\n constructor(field) {\n this.field = field;\n if (field === undefined) {\n throw new Error('Field is undefined');\n }\n }\n types() {\n var _a;\n return [...((_a = this.field.previousTypes) !== null && _a !== void 0 ? _a : []), this.field.type];\n }\n /**\n * Update the type of this property with a new type\n *\n * Only if it's not in the set of types already.\n */\n updateType(type) {\n const richType = new RichPropertyType(type);\n // Only add this type if we don't already have it. We are only doing comparisons where 'integer' and 'number'\n // are treated the same, for all other types we need strict equality. We used to use 'assignableTo' as a\n // condition, but these types will be rendered in both co- and contravariant positions, and so we really can't\n // do much better than full equality.\n if (this.types().some((t) => richType.equals(t))) {\n // Nothing to do, type is already in there.\n return false;\n }\n // Special case: if the new type is `string` and the old type is `date-time`, we assume this is\n // the same type but we dropped some formatting information. No need to make this a separate type.\n if (type.type === 'string' && this.types().some((t) => t.type === 'date-time')) {\n return false;\n }\n if (!this.field.previousTypes) {\n this.field.previousTypes = [];\n }\n this.field.previousTypes.push(this.field.type);\n this.field.type = type;\n return true;\n }\n}\nexports.RichTypedField = RichTypedField;\nclass RichProperty extends RichTypedField {\n constructor(property) {\n super(property);\n }\n}\nexports.RichProperty = RichProperty;\nclass RichAttribute extends RichTypedField {\n constructor(attr) {\n super(attr);\n }\n}\nexports.RichAttribute = RichAttribute;\nvar Deprecation;\n(function (Deprecation) {\n /**\n * Not deprecated\n */\n Deprecation[\"NONE\"] = \"NONE\";\n /**\n * Warn about use\n */\n Deprecation[\"WARN\"] = \"WARN\";\n /**\n * Do not emit the value at all\n *\n * (Handle properties that were incorrectly added to the spec)\n */\n Deprecation[\"IGNORE\"] = \"IGNORE\";\n})(Deprecation = exports.Deprecation || (exports.Deprecation = {}));\nfunction isCollectionType(x) {\n return x.type === 'array' || x.type === 'map';\n}\nexports.isCollectionType = isCollectionType;\n/**\n * Mark a resource as a resource that needs additional scrutiy when added, removed or changed\n *\n * Used to mark resources that represent security policies.\n */\nvar ResourceScrutinyType;\n(function (ResourceScrutinyType) {\n /**\n * No additional scrutiny\n */\n ResourceScrutinyType[\"None\"] = \"None\";\n /**\n * An externally attached policy document to a resource\n *\n * (Common for SQS, SNS, S3, ...)\n */\n ResourceScrutinyType[\"ResourcePolicyResource\"] = \"ResourcePolicyResource\";\n /**\n * This is an IAM policy on an identity resource\n *\n * (Basically saying: this is AWS::IAM::Policy)\n */\n ResourceScrutinyType[\"IdentityPolicyResource\"] = \"IdentityPolicyResource\";\n /**\n * This is a Lambda Permission policy\n */\n ResourceScrutinyType[\"LambdaPermission\"] = \"LambdaPermission\";\n /**\n * An ingress rule object\n */\n ResourceScrutinyType[\"IngressRuleResource\"] = \"IngressRuleResource\";\n /**\n * A set of egress rules\n */\n ResourceScrutinyType[\"EgressRuleResource\"] = \"EgressRuleResource\";\n})(ResourceScrutinyType = exports.ResourceScrutinyType || (exports.ResourceScrutinyType = {}));\n/**\n * Mark a property as a property that needs additional scrutiny when it changes\n *\n * Used to mark sensitive properties that have security-related implications.\n */\nvar PropertyScrutinyType;\n(function (PropertyScrutinyType) {\n /**\n * No additional scrutiny\n */\n PropertyScrutinyType[\"None\"] = \"None\";\n /**\n * This is an IAM policy directly on a resource\n */\n PropertyScrutinyType[\"InlineResourcePolicy\"] = \"InlineResourcePolicy\";\n /**\n * Either an AssumeRolePolicyDocument or a dictionary of policy documents\n */\n PropertyScrutinyType[\"InlineIdentityPolicies\"] = \"InlineIdentityPolicies\";\n /**\n * A list of managed policies (on an identity resource)\n */\n PropertyScrutinyType[\"ManagedPolicies\"] = \"ManagedPolicies\";\n /**\n * A set of ingress rules (on a security group)\n */\n PropertyScrutinyType[\"IngressRules\"] = \"IngressRules\";\n /**\n * A set of egress rules (on a security group)\n */\n PropertyScrutinyType[\"EgressRules\"] = \"EgressRules\";\n})(PropertyScrutinyType = exports.PropertyScrutinyType || (exports.PropertyScrutinyType = {}));\nclass RichPropertyType {\n constructor(type) {\n this.type = type;\n }\n equals(rhs) {\n switch (this.type.type) {\n case 'integer':\n case 'boolean':\n case 'date-time':\n case 'json':\n case 'null':\n case 'number':\n case 'string':\n case 'tag':\n return rhs.type === this.type.type;\n case 'array':\n case 'map':\n return rhs.type === this.type.type && new RichPropertyType(this.type.element).equals(rhs.element);\n case 'ref':\n return rhs.type === 'ref' && this.type.reference.$ref === rhs.reference.$ref;\n case 'union':\n const lhsKey = this.sortKey();\n const rhsKey = new RichPropertyType(rhs).sortKey();\n return lhsKey.length === rhsKey.length && lhsKey.every((l, i) => l === rhsKey[i]);\n }\n }\n /**\n * Whether the current type is JavaScript-equal to the RHS type\n *\n * Same as normal equality, but consider `integer` and `number` the same types.\n */\n javascriptEquals(rhs) {\n switch (this.type.type) {\n case 'number':\n case 'integer':\n // Widening\n return rhs.type === 'integer' || rhs.type === 'number';\n case 'array':\n case 'map':\n return rhs.type === this.type.type && new RichPropertyType(this.type.element).javascriptEquals(rhs.element);\n case 'union':\n if (rhs.type !== 'union') {\n return false;\n }\n // Every type in this union needs to be equal one type in RHS\n return this.type.types.every((t1) => rhs.types.some((t2) => new RichPropertyType(t1).javascriptEquals(t2)));\n default:\n // For anything else, need strict equality\n return this.equals(rhs);\n }\n }\n /**\n * Whether the current type is assignable to the RHS type.\n *\n * This is means every type member of the LHS must be present in the RHS type\n */\n assignableTo(rhs) {\n const extractMembers = (type) => (type.type == 'union' ? type.types : [type]);\n const asRichType = (type) => new RichPropertyType(type);\n const rhsMembers = extractMembers(rhs);\n for (const lhsMember of extractMembers(this.type).map(asRichType)) {\n if (!rhsMembers.some((type) => lhsMember.equals(type))) {\n return false;\n }\n }\n return true;\n }\n /**\n * Return a version of this type, but with all type unions in a regularized order\n */\n normalize(db) {\n switch (this.type.type) {\n case 'array':\n case 'map':\n return new RichPropertyType({\n type: this.type.type,\n element: new RichPropertyType(this.type.element).normalize(db).type,\n });\n case 'union':\n const types = this.type.types\n .map((t) => new RichPropertyType(t).normalize(db))\n .map((t) => [t, t.sortKey(db)]);\n types.sort((0, sorting_1.sortKeyComparator)(([_, sortKey]) => sortKey));\n return new RichPropertyType({\n type: 'union',\n types: types.map(([t, _]) => t.type),\n });\n default:\n return this;\n }\n }\n stringify(db, withId = true) {\n switch (this.type.type) {\n case 'integer':\n case 'boolean':\n case 'date-time':\n case 'json':\n case 'null':\n case 'number':\n case 'string':\n case 'tag':\n return this.type.type;\n case 'array':\n return `Array<${new RichPropertyType(this.type.element).stringify(db, withId)}>`;\n case 'map':\n return `Map`;\n case 'ref':\n const type = db.get('typeDefinition', this.type.reference);\n return withId ? `${type.name}(${this.type.reference.$ref})` : type.name;\n case 'union':\n return this.type.types.map((t) => new RichPropertyType(t).stringify(db, withId)).join(' | ');\n }\n }\n /**\n * Return a sortable key based on this type\n *\n * If a database is given, type definitions will be sorted based on type name,\n * otherwise on identifier\n */\n sortKey(db) {\n var _a, _b;\n switch (this.type.type) {\n case 'integer':\n case 'boolean':\n case 'date-time':\n case 'json':\n case 'null':\n case 'number':\n case 'string':\n case 'tag':\n return ['0', this.type.type];\n case 'array':\n case 'map':\n return ['1', this.type.type, ...new RichPropertyType(this.type.element).sortKey(db)];\n case 'ref':\n return ['2', this.type.type, (_b = (_a = db === null || db === void 0 ? void 0 : db.get('typeDefinition', this.type.reference)) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : this.type.reference.$ref];\n case 'union':\n const typeKeys = this.type.types.map((t) => new RichPropertyType(t).sortKey(db));\n typeKeys.sort((0, sorting_1.sortKeyComparator)((x) => x));\n return ['3', this.type.type, ...typeKeys.flatMap((x) => x)];\n }\n }\n}\nexports.RichPropertyType = RichPropertyType;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvcmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsNkNBQW9EO0FBdUtwRCxNQUFhLGNBQWM7SUFDekIsWUFBNkIsS0FBK0M7UUFBL0MsVUFBSyxHQUFMLEtBQUssQ0FBMEM7UUFDMUUsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFTSxLQUFLOztRQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsbUNBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFVBQVUsQ0FBQyxJQUFrQjtRQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVDLDZHQUE2RztRQUM3Ryx3R0FBd0c7UUFDeEcsOEdBQThHO1FBQzlHLHFDQUFxQztRQUNyQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNoRCwyQ0FBMkM7WUFDM0MsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELCtGQUErRjtRQUMvRixrR0FBa0c7UUFDbEcsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxFQUFFO1lBQzlFLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJ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akYsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFBLDJCQUFpQixFQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvRDtJQUNILENBQUM7Q0FDRjtBQXRKRCw0Q0FzSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlZmVyZW5jZSwgUmVsYXRpb25zaGlwIH0gZnJvbSAnQGNka2xhYnMvdHNrYic7XG5pbXBvcnQgeyBTcGVjRGF0YWJhc2UgfSBmcm9tICcuL2RhdGFiYXNlJztcbmltcG9ydCB7IHNvcnRLZXlDb21wYXJhdG9yIH0gZnJvbSAnLi4vdXRpbC9zb3J0aW5nJztcblxuZXhwb3J0IGludGVyZmFjZSBQYXJ0aXRpb24gZXh0ZW5kcyBFbnRpdHkge1xuICByZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSGFzUmVnaW9uID0gUmVsYXRpb25zaGlwPFBhcnRpdGlvbiwgUmVnaW9uLCB7IGlzUHJpbWFyeT86IGJvb2xlYW4gfT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZSBleHRlbmRzIEVudGl0eSB7XG4gIC8qKlxuICAgKiBUaGUgZnVsbCBuYW1lIG9mIHRoZSBzZXJ2aWNlIGluY2x1ZGluZyB0aGUgZ3JvdXAgcHJlZml4LCBsb3dlcmNhc2VkIGFuZCBoeXBoZW5hdGVkLlxuICAgKlxuICAgKiBFLmcuIGBBV1M6OkR5bmFtb0RCYCAtPiBgYXdzLWR5bmFtb2RiYFxuICAgKlxuICAgKiBAZXhhbXBsZSBhd3MtZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIE9ubHkgdGhlIHNlcnZpY2UgcGFydCBvZiB0aGUgbmFtZSwgbG93ZXJjYXNlZC5cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYGR5bmFtb2RiYFxuICAgKlxuICAgKiBAZXhhbXBsZSBkeW5hbW9kYlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvcnROYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc2hvcnRuYW1lIG9mIHRoZSBzZXJ2aWNlIGluIGNhcGl0YWxpemVkIGZvcm1cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYER5bmFtb0RCYFxuICAgKlxuICAgKiBAZXhhbXBsZSBkeW5hbW9kYlxuICAgKi9cbiAgcmVhZG9ubHkgY2FwaXRhbGl6ZWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjb21wbGV0ZSBjbG91ZGZvcm1hdGlvbiBzdHlsZSBuYW1lc3BhY2Ugb2YgdGhlIHNlcnZpY2VcbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmBcbiAgICpcbiAgICogQGV4YW1wbGUgZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uTmFtZXNwYWNlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudGF0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbWFya2Rvd246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZSBleHRlbmRzIEVudGl0eSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25UeXBlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJZiBzZXQsIHRoaXMgQ2xvdWRGb3JtYXRpb24gVHJhbnNmb3JtIGlzIHJlcXVpcmVkIGJ5IHRoZSByZXNvdXJjZVxuICAgKi9cbiAgY2xvdWRGb3JtYXRpb25UcmFuc2Zvcm0/OiBzdHJpbmc7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IHByb3BlcnRpZXM6IFJlc291cmNlUHJvcGVydGllcztcbiAgcmVhZG9ubHkgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgQXR0cmlidXRlPjtcbiAgcmVhZG9ubHkgdmFsaWRhdGlvbnM/OiB1bmtub3duO1xuICBpZGVudGlmaWVyPzogUmVzb3VyY2VJZGVudGlmaWVyO1xuICBpc1N0YXRlZnVsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5mb3JtYXRpb24gYWJvdXQgdGhlIHRhZ2dhYmlsaXR5IG9mIHRoaXMgcmVzb3VyY2VcbiAgICpcbiAgICogVW5kZWZpbmVkIGlmIHRoZSByZXNvdXJjZSBpcyBub3QgdGFnZ2FibGUuXG4gICAqL1xuICB0YWdJbmZvcm1hdGlvbj86IFRhZ0luZm9ybWF0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGNoYW5nZXMgdG8gdGhpcyByZXNvdXJjZSBuZWVkIHRvIGJlIHNjcnV0aW5pemVkXG4gICAqXG4gICAqIEBkZWZhdWx0IFJlc291cmNlU2NydXRpbnlUeXBlLk5PTkVcbiAgICovXG4gIHNjcnV0aW5pemFibGU/OiBSZXNvdXJjZVNjcnV0aW55VHlwZTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBwYXRocyB0byBwcm9wZXJ0aWVzIHRoYXQgYWxzbyBjYXVzZSByZXBsYWNlbWVudC5cbiAgICpcbiAgICogVGhpcyBpcyB0byBpbmRpY2F0ZSB0aGF0IGNlcnRhaW4gcHJvcGVydHkgcGF0aHMgaW50byB0aGlzIHJlc291cmNlXG4gICAqIHdpbGwgY2F1c2UgcmVwbGFjZW1lbnQ7IG9ubHkgcmVwbGFjZW1lbnRzIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkXG4gICAqIGJ5IHRhZ2dpbmcgdGhlIHByb3BlcnR5IGluIGEgdHlwZSBkZWZpbml0aW9uIHdpbGwgYmUgaW5jbHVkZWQgaGVyZVxuICAgKiAoZm9yIGV4YW1wbGUsIGJlY2F1c2UgdGhlIHRhZ2dlZCBwcm9wZXJ0eSB3b3VsZCBiZSBpbiBhIHByZWRlZmluZWRcbiAgICogdHlwZSBsaWtlIGB0YWdgKS5cbiAgICpcbiAgICogQWxsIHByb3BlcnRpZXMgaW4gdGhpcyBsaXN0IHNob3VsZCBiZSB0cmVhdGVkIGFzIGBjYXVzZXNSZXBsYWNlbWVudDogJ3llcydgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtXG4gICAqL1xuICBhZGRpdGlvbmFsUmVwbGFjZW1lbnRQcm9wZXJ0aWVzPzogc3RyaW5nW11bXTtcbn1cblxuZXhwb3J0IHR5cGUgUmVzb3VyY2VQcm9wZXJ0aWVzID0gUmVjb3JkPHN0cmluZywgUHJvcGVydHk+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVEZWZpbml0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xuICByZWFkb25seSBwcm9wZXJ0aWVzOiBSZXNvdXJjZVByb3BlcnRpZXM7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHJlbmRlciB0aGlzIHR5cGUgZXZlbiBpZiBpdCBpcyB1bnVzZWQuXG4gICAqL1xuICBtdXN0UmVuZGVyRm9yQndDb21wYXQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5IHtcbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIG9mIHRoZSBwcm9wZXJ0eVxuICAgKi9cbiAgZG9jdW1lbnRhdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogSXMgdGhpcyBwcm9wZXJ0eSByZXF1aXJlZFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCB0eXBlIG9mIHRoaXMgcHJvcGVydHlcbiAgICovXG4gIHR5cGU6IFByb3BlcnR5VHlwZTtcblxuICAvKipcbiAgICogQW4gb3JkZXJlZCBsaXN0IG9mIHByZXZpb3VzIHR5cGVzIG9mIHRoaXMgcHJvcGVydHkgaW4gYXNjZW5kaW5nIG9yZGVyXG4gICAqXG4gICAqIERvZXMgbm90IGluY2x1ZGUgdGhlIGN1cnJlbnQgdHlwZSwgdXNlIGB0eXBlYCBmb3IgdGhpcy5cbiAgICovXG4gIHByZXZpb3VzVHlwZXM/OiBQcm9wZXJ0eVR5cGVbXTtcblxuICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0eVxuICAgKlxuICAgKiBUaGlzIHZhbHVlIGlzIG5vdCBkaXJlY3RseSBmdW5jdGlvbmFsOyBpdCBkZXNjcmliZXMgaG93IHRoZSB1bmRlcmx5aW5nIHJlc291cmNlXG4gICAqIHdpbGwgYmVoYXZlIGlmIHRoZSB2YWx1ZSBpcyBub3Qgc3BlY2lmaWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgdW5rbm93blxuICAgKi9cbiAgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcHJvcGVydHkgaXMgZGVwcmVjYXRlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vdCBkZXByZWNhdGVkXG4gICAqL1xuICBkZXByZWNhdGVkPzogRGVwcmVjYXRpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgY2hhbmdlcyB0byB0aGlzIHByb3BlcnR5IG5lZWRzIHRvIGJlIHNjcnV0aW5pemVkIHNwZWNpYWxseVxuICAgKlxuICAgKiBAZGVmYXVsdCBQcm9wZXJ0eVNjcnV0aW55VHlwZS5OT05FXG4gICAqL1xuICBzY3J1dGluaXphYmxlPzogUHJvcGVydHlTY3J1dGlueVR5cGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNvbnRhaW5pbmcgcmVzb3VyY2Ugd2lsbCBiZSByZXBsYWNlZCBpZiB0aGlzIHByb3BlcnR5IGlzIGNoYW5nZWRcbiAgICpcbiAgICogQGRlZmF1bHQgJ25vJ1xuICAgKi9cbiAgY2F1c2VzUmVwbGFjZW1lbnQ/OiAneWVzJyB8ICdubycgfCAnbWF5YmUnO1xufVxuXG5leHBvcnQgY2xhc3MgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpZWxkOiBQaWNrPFByb3BlcnR5LCAndHlwZScgfCAncHJldmlvdXNUeXBlcyc+KSB7XG4gICAgaWYgKGZpZWxkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmllbGQgaXMgdW5kZWZpbmVkJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHR5cGVzKCk6IFByb3BlcnR5VHlwZVtdIHtcbiAgICByZXR1cm4gWy4uLih0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMgPz8gW10pLCB0aGlzLmZpZWxkLnR5cGVdO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgdHlwZSBvZiB0aGlzIHByb3BlcnR5IHdpdGggYSBuZXcgdHlwZVxuICAgKlxuICAgKiBPbmx5IGlmIGl0J3Mgbm90IGluIHRoZSBzZXQgb2YgdHlwZXMgYWxyZWFkeS5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVUeXBlKHR5cGU6IFByb3BlcnR5VHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJpY2hUeXBlID0gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodHlwZSk7XG5cbiAgICAvLyBPbmx5IGFkZCB0aGlzIHR5cGUgaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIGl0LiBXZSBhcmUgb25seSBkb2luZyBjb21wYXJpc29ucyB3aGVyZSAnaW50ZWdlcicgYW5kICdudW1iZXInXG4gICAgLy8gYXJlIHRyZWF0ZWQgdGhlIHNhbWUsIGZvciBhbGwgb3RoZXIgdHlwZXMgd2UgbmVlZCBzdHJpY3QgZXF1YWxpdHkuIFdlIHVzZWQgdG8gdXNlICdhc3NpZ25hYmxlVG8nIGFzIGFcbiAgICAvLyBjb25kaXRpb24sIGJ1dCB0aGVzZSB0eXBlcyB3aWxsIGJlIHJlbmRlcmVkIGluIGJvdGggY28tIGFuZCBjb250cmF2YXJpYW50IHBvc2l0aW9ucywgYW5kIHNvIHdlIHJlYWxseSBjYW4ndFxuICAgIC8vIGRvIG11Y2ggYmV0dGVyIHRoYW4gZnVsbCBlcXVhbGl0eS5cbiAgICBpZiAodGhpcy50eXBlcygpLnNvbWUoKHQpID0+IHJpY2hUeXBlLmVxdWFscyh0KSkpIHtcbiAgICAgIC8vIE5vdGhpbmcgdG8gZG8sIHR5cGUgaXMgYWxyZWFkeSBpbiB0aGVyZS5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTcGVjaWFsIGNhc2U6IGlmIHRoZSBuZXcgdHlwZSBpcyBgc3RyaW5nYCBhbmQgdGhlIG9sZCB0eXBlIGlzIGBkYXRlLXRpbWVgLCB3ZSBhc3N1bWUgdGhpcyBpc1xuICAgIC8vIHRoZSBzYW1lIHR5cGUgYnV0IHdlIGRyb3BwZWQgc29tZSBmb3JtYXR0aW5nIGluZm9ybWF0aW9uLiBObyBuZWVkIHRvIG1ha2UgdGhpcyBhIHNlcGFyYXRlIHR5cGUuXG4gICAgaWYgKHR5cGUudHlwZSA9PT0gJ3N0cmluZycgJiYgdGhpcy50eXBlcygpLnNvbWUoKHQpID0+IHQudHlwZSA9PT0gJ2RhdGUtdGltZScpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMpIHtcbiAgICAgIHRoaXMuZmllbGQucHJldmlvdXNUeXBlcyA9IFtdO1xuICAgIH1cbiAgICB0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMucHVzaCh0aGlzLmZpZWxkLnR5cGUpO1xuICAgIHRoaXMuZmllbGQudHlwZSA9IHR5cGU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJpY2hQcm9wZXJ0eSBleHRlbmRzIFJpY2hUeXBlZEZpZWxkIHtcbiAgY29uc3RydWN0b3IocHJvcGVydHk6IFByb3BlcnR5KSB7XG4gICAgc3VwZXIocHJvcGVydHkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSaWNoQXR0cmlidXRlIGV4dGVuZHMgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3RvcihhdHRyOiBBdHRyaWJ1dGUpIHtcbiAgICBzdXBlcihhdHRyKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZSB7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHR5cGU6IFByb3BlcnR5VHlwZTtcbiAgLyoqXG4gICAqIEFuIG9yZGVyZWQgbGlzdCBvZiBwcmV2aW91cyB0eXBlcyBvZiB0aGlzIHByb3BlcnR5IGluIGFzY2VuZGluZyBvcmRlclxuICAgKlxuICAgKiBEb2VzIG5vdCBpbmNsdWRlIHRoZSBjdXJyZW50IHR5cGUsIHVzZSBgdHlwZWAgZm9yIHRoaXMuXG4gICAqL1xuICBwcmV2aW91c1R5cGVzPzogUHJvcGVydHlUeXBlW107XG59XG5cbmV4cG9ydCBlbnVtIERlcHJlY2F0aW9uIHtcbiAgLyoqXG4gICAqIE5vdCBkZXByZWNhdGVkXG4gICAqL1xuICBOT05FID0gJ05PTkUnLFxuXG4gIC8qKlxuICAgKiBXYXJuIGFib3V0IHVzZVxuICAgKi9cbiAgV0FSTiA9ICdXQVJOJyxcblxuICAvKipcbiAgICogRG8gbm90IGVtaXQgdGhlIHZhbHVlIGF0IGFsbFxuICAgKlxuICAgKiAoSGFuZGxlIHByb3BlcnRpZXMgdGhhdCB3ZXJlIGluY29ycmVjdGx5IGFkZGVkIHRvIHRoZSBzcGVjKVxuICAgKi9cbiAgSUdOT1JFID0gJ0lHTk9SRScsXG59XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5VHlwZSA9XG4gIHwgUHJpbWl0aXZlVHlwZVxuICB8IERlZmluaXRpb25SZWZlcmVuY2VcbiAgfCBCdWlsdGluVGFnVHlwZVxuICB8IEFycmF5VHlwZTxQcm9wZXJ0eVR5cGU+XG4gIHwgTWFwVHlwZTxQcm9wZXJ0eVR5cGU+XG4gIHwgVHlwZVVuaW9uPFByb3BlcnR5VHlwZT47XG5cbmV4cG9ydCB0eXBlIFByaW1pdGl2ZVR5cGUgPVxuICB8IFN0cmluZ1R5cGVcbiAgfCBOdW1iZXJUeXBlXG4gIHwgSW50ZWdlclR5cGVcbiAgfCBCb29sZWFuVHlwZVxuICB8IEpzb25UeXBlXG4gIHwgRGF0ZVRpbWVUeXBlXG4gIHwgTnVsbFR5cGVcbiAgfCBCdWlsdGluVGFnVHlwZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29sbGVjdGlvblR5cGUoeDogUHJvcGVydHlUeXBlKTogeCBpcyBBcnJheVR5cGU8YW55PiB8IE1hcFR5cGU8YW55PiB7XG4gIHJldHVybiB4LnR5cGUgPT09ICdhcnJheScgfHwgeC50eXBlID09PSAnbWFwJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWdJbmZvcm1hdGlvbiB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBwcm9wZXJ0eSB0aGF0IGhvbGRzIHRoZSB0YWdzXG4gICAqL1xuICByZWFkb25seSB0YWdQcm9wZXJ0eU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVXNlZCB0byBpbnN0cnVjdCBjZGsuVGFnTWFuYWdlciBob3cgdG8gaGFuZGxlIHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHZhcmlhbnQ6IFRhZ1ZhcmlhbnQ7XG59XG5cbmV4cG9ydCB0eXBlIFRhZ1ZhcmlhbnQgPSAnc3RhbmRhcmQnIHwgJ2FzZycgfCAnbWFwJztcblxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3N0cmluZyc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEJ1aWx0aW5UYWdUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3RhZyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVtYmVyVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdudW1iZXInO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVnZXJUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2ludGVnZXInO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5UeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2Jvb2xlYW4nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25UeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2pzb24nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE51bGxUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ251bGwnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVUaW1lVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdkYXRlLXRpbWUnO1xufVxuXG4vKipcbiAqIFRoZSBcImxlZ2FjeVwiIHRhZyB0eXBlICh1c2VkIGluIHRoZSBvbGQgcmVzb3VyY2Ugc3BlYylcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsdGluVGFnVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICd0YWcnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlZmluaXRpb25SZWZlcmVuY2Uge1xuICByZWFkb25seSB0eXBlOiAncmVmJztcbiAgcmVhZG9ubHkgcmVmZXJlbmNlOiBSZWZlcmVuY2U8VHlwZURlZmluaXRpb24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFycmF5VHlwZTxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdhcnJheSc7XG4gIHJlYWRvbmx5IGVsZW1lbnQ6IEU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwVHlwZTxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdtYXAnO1xuICByZWFkb25seSBlbGVtZW50OiBFO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVVbmlvbjxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICd1bmlvbic7XG4gIHJlYWRvbmx5IHR5cGVzOiBFW107XG59XG5cbmV4cG9ydCB0eXBlIEhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFNlcnZpY2UsIFJlc291cmNlPjtcbmV4cG9ydCB0eXBlIFJlZ2lvbkhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFJlZ2lvbiwgUmVzb3VyY2U+O1xuZXhwb3J0IHR5cGUgUmVnaW9uSGFzU2VydmljZSA9IFJlbGF0aW9uc2hpcDxSZWdpb24sIFNlcnZpY2U+O1xuZXhwb3J0IHR5cGUgUmVzb3VyY2VEb2MgPSBSZWxhdGlvbnNoaXA8UmVzb3VyY2UsIERvY3VtZW50YXRpb24+O1xuXG5leHBvcnQgdHlwZSBTZXJ2aWNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBTZXJ2aWNlPjtcbmV4cG9ydCB0eXBlIFJlc291cmNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBSZXNvdXJjZT47XG5cbmV4cG9ydCB0eXBlIFVzZXNUeXBlID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBUeXBlRGVmaW5pdGlvbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VJZGVudGlmaWVyIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgYXJuVGVtcGxhdGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogTWFyayBhIHJlc291cmNlIGFzIGEgcmVzb3VyY2UgdGhhdCBuZWVkcyBhZGRpdGlvbmFsIHNjcnV0aXkgd2hlbiBhZGRlZCwgcmVtb3ZlZCBvciBjaGFuZ2VkXG4gKlxuICogVXNlZCB0byBtYXJrIHJlc291cmNlcyB0aGF0IHJlcHJlc2VudCBzZWN1cml0eSBwb2xpY2llcy5cbiAqL1xuZXhwb3J0IGVudW0gUmVzb3VyY2VTY3J1dGlueVR5cGUge1xuICAvKipcbiAgICogTm8gYWRkaXRpb25hbCBzY3J1dGlueVxuICAgKi9cbiAgTm9uZSA9ICdOb25lJyxcblxuICAvKipcbiAgICogQW4gZXh0ZXJuYWxseSBhdHRhY2hlZCBwb2xpY3kgZG9jdW1lbnQgdG8gYSByZXNvdXJjZVxuICAgKlxuICAgKiAoQ29tbW9uIGZvciBTUVMsIFNOUywgUzMsIC4uLilcbiAgICovXG4gIFJlc291cmNlUG9saWN5UmVzb3VyY2UgPSAnUmVzb3VyY2VQb2xpY3lSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gSUFNIHBvbGljeSBvbiBhbiBpZGVudGl0eSByZXNvdXJjZVxuICAgKlxuICAgKiAoQmFzaWNhbGx5IHNheWluZzogdGhpcyBpcyBBV1M6OklBTTo6UG9saWN5KVxuICAgKi9cbiAgSWRlbnRpdHlQb2xpY3lSZXNvdXJjZSA9ICdJZGVudGl0eVBvbGljeVJlc291cmNlJyxcblxuICAvKipcbiAgICogVGhpcyBpcyBhIExhbWJkYSBQZXJtaXNzaW9uIHBvbGljeVxuICAgKi9cbiAgTGFtYmRhUGVybWlzc2lvbiA9ICdMYW1iZGFQZXJtaXNzaW9uJyxcblxuICAvKipcbiAgICogQW4gaW5ncmVzcyBydWxlIG9iamVjdFxuICAgKi9cbiAgSW5ncmVzc1J1bGVSZXNvdXJjZSA9ICdJbmdyZXNzUnVsZVJlc291cmNlJyxcblxuICAvKipcbiAgICogQSBzZXQgb2YgZWdyZXNzIHJ1bGVzXG4gICAqL1xuICBFZ3Jlc3NSdWxlUmVzb3VyY2UgPSAnRWdyZXNzUnVsZVJlc291cmNlJyxcbn1cblxuLyoqXG4gKiBNYXJrIGEgcHJvcGVydHkgYXMgYSBwcm9wZXJ0eSB0aGF0IG5lZWRzIGFkZGl0aW9uYWwgc2NydXRpbnkgd2hlbiBpdCBjaGFuZ2VzXG4gKlxuICogVXNlZCB0byBtYXJrIHNlbnNpdGl2ZSBwcm9wZXJ0aWVzIHRoYXQgaGF2ZSBzZWN1cml0eS1yZWxhdGVkIGltcGxpY2F0aW9ucy5cbiAqL1xuZXhwb3J0IGVudW0gUHJvcGVydHlTY3J1dGlueVR5cGUge1xuICAvKipcbiAgICogTm8gYWRkaXRpb25hbCBzY3J1dGlueVxuICAgKi9cbiAgTm9uZSA9ICdOb25lJyxcblxuICAvKipcbiAgICogVGhpcyBpcyBhbiBJQU0gcG9saWN5IGRpcmVjdGx5IG9uIGEgcmVzb3VyY2VcbiAgICovXG4gIElubGluZVJlc291cmNlUG9saWN5ID0gJ0lubGluZVJlc291cmNlUG9saWN5JyxcblxuICAvKipcbiAgICogRWl0aGVyIGFuIEFzc3VtZVJvbGVQb2xpY3lEb2N1bWVudCBvciBhIGRpY3Rpb25hcnkgb2YgcG9saWN5IGRvY3VtZW50c1xuICAgKi9cbiAgSW5saW5lSWRlbnRpdHlQb2xpY2llcyA9ICdJbmxpbmVJZGVudGl0eVBvbGljaWVzJyxcblxuICAvKipcbiAgICogQSBsaXN0IG9mIG1hbmFnZWQgcG9saWNpZXMgKG9uIGFuIGlkZW50aXR5IHJlc291cmNlKVxuICAgKi9cbiAgTWFuYWdlZFBvbGljaWVzID0gJ01hbmFnZWRQb2xpY2llcycsXG5cbiAgLyoqXG4gICAqIEEgc2V0IG9mIGluZ3Jlc3MgcnVsZXMgKG9uIGEgc2VjdXJpdHkgZ3JvdXApXG4gICAqL1xuICBJbmdyZXNzUnVsZXMgPSAnSW5ncmVzc1J1bGVzJyxcblxuICAvKipcbiAgICogQSBzZXQgb2YgZWdyZXNzIHJ1bGVzIChvbiBhIHNlY3VyaXR5IGdyb3VwKVxuICAgKi9cbiAgRWdyZXNzUnVsZXMgPSAnRWdyZXNzUnVsZXMnLFxufVxuXG5leHBvcnQgY2xhc3MgUmljaFByb3BlcnR5VHlwZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgdHlwZTogUHJvcGVydHlUeXBlKSB7fVxuXG4gIHB1YmxpYyBlcXVhbHMocmhzOiBQcm9wZXJ0eVR5cGUpOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnZGF0ZS10aW1lJzpcbiAgICAgIGNhc2UgJ2pzb24nOlxuICAgICAgY2FzZSAnbnVsbCc6XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3RhZyc6XG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gdGhpcy50eXBlLnR5cGU7XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICBjYXNlICdtYXAnOlxuICAgICAgICByZXR1cm4gcmhzLnR5cGUgPT09IHRoaXMudHlwZS50eXBlICYmIG5ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5lcXVhbHMocmhzLmVsZW1lbnQpO1xuICAgICAgY2FzZSAncmVmJzpcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSAncmVmJyAmJiB0aGlzLnR5cGUucmVmZXJlbmNlLiRyZWYgPT09IHJocy5yZWZlcmVuY2UuJHJlZjtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgY29uc3QgbGhzS2V5ID0gdGhpcy5zb3J0S2V5KCk7XG4gICAgICAgIGNvbnN0IHJoc0tleSA9IG5ldyBSaWNoUHJvcGVydHlUeXBlKHJocykuc29ydEtleSgpO1xuICAgICAgICByZXR1cm4gbGhzS2V5Lmxlbmd0aCA9PT0gcmhzS2V5Lmxlbmd0aCAmJiBsaHNLZXkuZXZlcnkoKGwsIGkpID0+IGwgPT09IHJoc0tleVtpXSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGN1cnJlbnQgdHlwZSBpcyBKYXZhU2NyaXB0LWVxdWFsIHRvIHRoZSBSSFMgdHlwZVxuICAgKlxuICAgKiBTYW1lIGFzIG5vcm1hbCBlcXVhbGl0eSwgYnV0IGNvbnNpZGVyIGBpbnRlZ2VyYCBhbmQgYG51bWJlcmAgdGhlIHNhbWUgdHlwZXMuXG4gICAqL1xuICBwdWJsaWMgamF2YXNjcmlwdEVxdWFscyhyaHM6IFByb3BlcnR5VHlwZSk6IGJvb2xlYW4ge1xuICAgIHN3aXRjaCAodGhpcy50eXBlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgICAgLy8gV2lkZW5pbmdcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSAnaW50ZWdlcicgfHwgcmhzLnR5cGUgPT09ICdudW1iZXInO1xuXG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICBjYXNlICdtYXAnOlxuICAgICAgICByZXR1cm4gcmhzLnR5cGUgPT09IHRoaXMudHlwZS50eXBlICYmIG5ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5qYXZhc2NyaXB0RXF1YWxzKHJocy5lbGVtZW50KTtcblxuICAgICAgY2FzZSAndW5pb24nOlxuICAgICAgICBpZiAocmhzLnR5cGUgIT09ICd1bmlvbicpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgLy8gRXZlcnkgdHlwZSBpbiB0aGlzIHVuaW9uIG5lZWRzIHRvIGJlIGVxdWFsIG9uZSB0eXBlIGluIFJIU1xuICAgICAgICByZXR1cm4gdGhpcy50eXBlLnR5cGVzLmV2ZXJ5KCh0MSkgPT4gcmhzLnR5cGVzLnNvbWUoKHQyKSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0MSkuamF2YXNjcmlwdEVxdWFscyh0MikpKTtcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgLy8gRm9yIGFueXRoaW5nIGVsc2UsIG5lZWQgc3RyaWN0IGVxdWFsaXR5XG4gICAgICAgIHJldHVybiB0aGlzLmVxdWFscyhyaHMpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjdXJyZW50IHR5cGUgaXMgYXNzaWduYWJsZSB0byB0aGUgUkhTIHR5cGUuXG4gICAqXG4gICAqIFRoaXMgaXMgbWVhbnMgZXZlcnkgdHlwZSBtZW1iZXIgb2YgdGhlIExIUyBtdXN0IGJlIHByZXNlbnQgaW4gdGhlIFJIUyB0eXBlXG4gICAqL1xuICBwdWJsaWMgYXNzaWduYWJsZVRvKHJoczogUHJvcGVydHlUeXBlKTogYm9vbGVhbiB7XG4gICAgY29uc3QgZXh0cmFjdE1lbWJlcnMgPSAodHlwZTogUHJvcGVydHlUeXBlKTogUHJvcGVydHlUeXBlW10gPT4gKHR5cGUudHlwZSA9PSAndW5pb24nID8gdHlwZS50eXBlcyA6IFt0eXBlXSk7XG4gICAgY29uc3QgYXNSaWNoVHlwZSA9ICh0eXBlOiBQcm9wZXJ0eVR5cGUpOiBSaWNoUHJvcGVydHlUeXBlID0+IG5ldyBSaWNoUHJvcGVydHlUeXBlKHR5cGUpO1xuXG4gICAgY29uc3QgcmhzTWVtYmVycyA9IGV4dHJhY3RNZW1iZXJzKHJocyk7XG4gICAgZm9yIChjb25zdCBsaHNNZW1iZXIgb2YgZXh0cmFjdE1lbWJlcnModGhpcy50eXBlKS5tYXAoYXNSaWNoVHlwZSkpIHtcbiAgICAgIGlmICghcmhzTWVtYmVycy5zb21lKCh0eXBlKSA9PiBsaHNNZW1iZXIuZXF1YWxzKHR5cGUpKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgdmVyc2lvbiBvZiB0aGlzIHR5cGUsIGJ1dCB3aXRoIGFsbCB0eXBlIHVuaW9ucyBpbiBhIHJlZ3VsYXJpemVkIG9yZGVyXG4gICAqL1xuICBwdWJsaWMgbm9ybWFsaXplKGRiOiBTcGVjRGF0YWJhc2UpOiBSaWNoUHJvcGVydHlUeXBlIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICBjYXNlICdtYXAnOlxuICAgICAgICByZXR1cm4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUoe1xuICAgICAgICAgIHR5cGU6IHRoaXMudHlwZS50eXBlLFxuICAgICAgICAgIGVsZW1lbnQ6IG5ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5ub3JtYWxpemUoZGIpLnR5cGUsXG4gICAgICAgIH0pO1xuICAgICAgY2FzZSAndW5pb24nOlxuICAgICAgICBjb25zdCB0eXBlcyA9IHRoaXMudHlwZS50eXBlc1xuICAgICAgICAgIC5tYXAoKHQpID0+IG5ldyBSaWNoUHJvcGVydHlUeXBlKHQpLm5vcm1hbGl6ZShkYikpXG4gICAgICAgICAgLm1hcCgodCkgPT4gW3QsIHQuc29ydEtleShkYildIGFzIGNvbnN0KTtcbiAgICAgICAgdHlwZXMuc29ydChzb3J0S2V5Q29tcGFyYXRvcigoW18sIHNvcnRLZXldKSA9PiBzb3J0S2V5KSk7XG4gICAgICAgIHJldHVybiBuZXcgUmljaFByb3BlcnR5VHlwZSh7XG4gICAgICAgICAgdHlwZTogJ3VuaW9uJyxcbiAgICAgICAgICB0eXBlczogdHlwZXMubWFwKChbdCwgX10pID0+IHQudHlwZSksXG4gICAgICAgIH0pO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0cmluZ2lmeShkYjogU3BlY0RhdGFiYXNlLCB3aXRoSWQgPSB0cnVlKTogc3RyaW5nIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnZGF0ZS10aW1lJzpcbiAgICAgIGNhc2UgJ2pzb24nOlxuICAgICAgY2FzZSAnbnVsbCc6XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3RhZyc6XG4gICAgICAgIHJldHVybiB0aGlzLnR5cGUudHlwZTtcbiAgICAgIGNhc2UgJ2FycmF5JzpcbiAgICAgICAgcmV0dXJuIGBBcnJheTwke25ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5zdHJpbmdpZnkoZGIsIHdpdGhJZCl9PmA7XG4gICAgICBjYXNlICdtYXAnOlxuICAgICAgICByZXR1cm4gYE1hcDxzdHJpbmcsICR7bmV3IFJpY2hQcm9wZXJ0eVR5cGUodGhpcy50eXBlLmVsZW1lbnQpLnN0cmluZ2lmeShkYiwgd2l0aElkKX0+YDtcbiAgICAgIGNhc2UgJ3JlZic6XG4gICAgICAgIGNvbnN0IHR5cGUgPSBkYi5nZXQoJ3R5cGVEZWZpbml0aW9uJywgdGhpcy50eXBlLnJlZmVyZW5jZSk7XG4gICAgICAgIHJldHVybiB3aXRoSWQgPyBgJHt0eXBlLm5hbWV9KCR7dGhpcy50eXBlLnJlZmVyZW5jZS4kcmVmfSlgIDogdHlwZS5uYW1lO1xuICAgICAgY2FzZSAndW5pb24nOlxuICAgICAgICByZXR1cm4gdGhpcy50eXBlLnR5cGVzLm1hcCgodCkgPT4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodCkuc3RyaW5naWZ5KGRiLCB3aXRoSWQpKS5qb2luKCcgfCAnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgc29ydGFibGUga2V5IGJhc2VkIG9uIHRoaXMgdHlwZVxuICAgKlxuICAgKiBJZiBhIGRhdGFiYXNlIGlzIGdpdmVuLCB0eXBlIGRlZmluaXRpb25zIHdpbGwgYmUgc29ydGVkIGJhc2VkIG9uIHR5cGUgbmFtZSxcbiAgICogb3RoZXJ3aXNlIG9uIGlkZW50aWZpZXJcbiAgICovXG4gIHB1YmxpYyBzb3J0S2V5KGRiPzogU3BlY0RhdGFiYXNlKTogc3RyaW5nW10ge1xuICAgIHN3aXRjaCAodGhpcy50eXBlLnR5cGUpIHtcbiAgICAgIGNhc2UgJ2ludGVnZXInOlxuICAgICAgY2FzZSAnYm9vbGVhbic6XG4gICAgICBjYXNlICdkYXRlLXRpbWUnOlxuICAgICAgY2FzZSAnanNvbic6XG4gICAgICBjYXNlICdudWxsJzpcbiAgICAgIGNhc2UgJ251bWJlcic6XG4gICAgICBjYXNlICdzdHJpbmcnOlxuICAgICAgY2FzZSAndGFnJzpcbiAgICAgICAgcmV0dXJuIFsnMCcsIHRoaXMudHlwZS50eXBlXTtcbiAgICAgIGNhc2UgJ2FycmF5JzpcbiAgICAgIGNhc2UgJ21hcCc6XG4gICAgICAgIHJldHVybiBbJzEnLCB0aGlzLnR5cGUudHlwZSwgLi4ubmV3IFJpY2hQcm9wZXJ0eVR5cGUodGhpcy50eXBlLmVsZW1lbnQpLnNvcnRLZXkoZGIpXTtcbiAgICAgIGNhc2UgJ3JlZic6XG4gICAgICAgIHJldHVybiBbJzInLCB0aGlzLnR5cGUudHlwZSwgZGI/LmdldCgndHlwZURlZmluaXRpb24nLCB0aGlzLnR5cGUucmVmZXJlbmNlKT8ubmFtZSA/PyB0aGlzLnR5cGUucmVmZXJlbmNlLiRyZWZdO1xuICAgICAgY2FzZSAndW5pb24nOlxuICAgICAgICBjb25zdCB0eXBlS2V5cyA9IHRoaXMudHlwZS50eXBlcy5tYXAoKHQpID0+IG5ldyBSaWNoUHJvcGVydHlUeXBlKHQpLnNvcnRLZXkoZGIpKTtcbiAgICAgICAgdHlwZUtleXMuc29ydChzb3J0S2V5Q29tcGFyYXRvcigoeCkgPT4geCkpO1xuICAgICAgICByZXR1cm4gWyczJywgdGhpcy50eXBlLnR5cGUsIC4uLnR5cGVLZXlzLmZsYXRNYXAoKHgpID0+IHgpXTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sortKeyComparator = void 0;\n/**\n * Make a sorting comparator that will sort by a given sort key\n */\nfunction sortKeyComparator(keyFn) {\n return (a, b) => {\n const ak = keyFn(a);\n const bk = keyFn(b);\n for (let i = 0; i < ak.length && i < bk.length; i++) {\n const av = ak[i];\n const bv = bk[i];\n let diff = 0;\n if (typeof av === 'number' && typeof bv === 'number') {\n diff = av - bv;\n }\n else if (typeof av === 'string' && typeof bv === 'string') {\n diff = av.localeCompare(bv);\n }\n if (diff !== 0) {\n return diff;\n }\n }\n return bk.length - ak.length;\n };\n}\nexports.sortKeyComparator = sortKeyComparator;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3NvcnRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxTQUFnQixpQkFBaUIsQ0FBSSxLQUF1QztJQUMxRSxPQUFPLENBQUMsQ0FBSSxFQUFFLENBQUksRUFBVSxFQUFFO1FBQzVCLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbkQsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVqQixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7WUFDYixJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQUU7Z0JBQ3BELElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQ2hCO2lCQUFNLElBQUksT0FBTyxFQUFFLEtBQUssUUFBUSxJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRTtnQkFDM0QsSUFBSSxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDN0I7WUFFRCxJQUFJLElBQUksS0FBSyxDQUFDLEVBQUU7Z0JBQ2QsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBRUQsT0FBTyxFQUFFLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDL0IsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQXZCRCw4Q0F1QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1ha2UgYSBzb3J0aW5nIGNvbXBhcmF0b3IgdGhhdCB3aWxsIHNvcnQgYnkgYSBnaXZlbiBzb3J0IGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydEtleUNvbXBhcmF0b3I8QT4oa2V5Rm46ICh4OiBBKSA9PiBBcnJheTxzdHJpbmcgfCBudW1iZXI+KSB7XG4gIHJldHVybiAoYTogQSwgYjogQSk6IG51bWJlciA9PiB7XG4gICAgY29uc3QgYWsgPSBrZXlGbihhKTtcbiAgICBjb25zdCBiayA9IGtleUZuKGIpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhay5sZW5ndGggJiYgaSA8IGJrLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBhdiA9IGFrW2ldO1xuICAgICAgY29uc3QgYnYgPSBia1tpXTtcblxuICAgICAgbGV0IGRpZmYgPSAwO1xuICAgICAgaWYgKHR5cGVvZiBhdiA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGJ2ID09PSAnbnVtYmVyJykge1xuICAgICAgICBkaWZmID0gYXYgLSBidjtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGF2ID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgYnYgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGRpZmYgPSBhdi5sb2NhbGVDb21wYXJlKGJ2KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpZmYgIT09IDApIHtcbiAgICAgICAgcmV0dXJuIGRpZmY7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGJrLmxlbmd0aCAtIGFrLmxlbmd0aDtcbiAgfTtcbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveHttpAuthSchemeConfig = exports.defaultCloudFormationHttpAuthSchemeProvider = exports.defaultCloudFormationHttpAuthSchemeParametersProvider = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_middleware_1 = require(\"@smithy/util-middleware\");\nconst defaultCloudFormationHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: (0, util_middleware_1.getSmithyContext)(context).operation,\n region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) ||\n (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nexports.defaultCloudFormationHttpAuthSchemeParametersProvider = defaultCloudFormationHttpAuthSchemeParametersProvider;\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"cloudformation\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nconst defaultCloudFormationHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nexports.defaultCloudFormationHttpAuthSchemeProvider = defaultCloudFormationHttpAuthSchemeProvider;\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = (0, core_1.resolveAwsSdkSigV4Config)(config);\n return {\n ...config_0,\n };\n};\nexports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultEndpointResolver = void 0;\nconst util_endpoints_1 = require(\"@aws-sdk/util-endpoints\");\nconst util_endpoints_2 = require(\"@smithy/util-endpoints\");\nconst ruleset_1 = require(\"./ruleset\");\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n });\n};\nexports.defaultEndpointResolver = defaultEndpointResolver;\nutil_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ruleSet = void 0;\nconst u = \"required\", v = \"fn\", w = \"argv\", x = \"ref\";\nconst a = true, b = \"isSet\", c = \"booleanEquals\", d = \"error\", e = \"endpoint\", f = \"tree\", g = \"PartitionResult\", h = \"getAttr\", i = { [u]: false, \"type\": \"String\" }, j = { [u]: true, \"default\": false, \"type\": \"Boolean\" }, k = { [x]: \"Endpoint\" }, l = { [v]: c, [w]: [{ [x]: \"UseFIPS\" }, true] }, m = { [v]: c, [w]: [{ [x]: \"UseDualStack\" }, true] }, n = {}, o = { [v]: h, [w]: [{ [x]: g }, \"supportsFIPS\"] }, p = { [x]: g }, q = { [v]: c, [w]: [true, { [v]: h, [w]: [p, \"supportsDualStack\"] }] }, r = [l], s = [m], t = [{ [x]: \"Region\" }];\nconst _data = { version: \"1.0\", parameters: { Region: i, UseDualStack: j, UseFIPS: j, Endpoint: i }, rules: [{ conditions: [{ [v]: b, [w]: [k] }], rules: [{ conditions: r, error: \"Invalid Configuration: FIPS and custom endpoint are not supported\", type: d }, { conditions: s, error: \"Invalid Configuration: Dualstack and custom endpoint are not supported\", type: d }, { endpoint: { url: k, properties: n, headers: n }, type: e }], type: f }, { conditions: [{ [v]: b, [w]: t }], rules: [{ conditions: [{ [v]: \"aws.partition\", [w]: t, assign: g }], rules: [{ conditions: [l, m], rules: [{ conditions: [{ [v]: c, [w]: [a, o] }, q], rules: [{ endpoint: { url: \"https://cloudformation-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"FIPS and DualStack are enabled, but this partition does not support one or both\", type: d }], type: f }, { conditions: r, rules: [{ conditions: [{ [v]: c, [w]: [o, a] }], rules: [{ conditions: [{ [v]: \"stringEquals\", [w]: [{ [v]: h, [w]: [p, \"name\"] }, \"aws-us-gov\"] }], endpoint: { url: \"https://cloudformation.{Region}.amazonaws.com\", properties: n, headers: n }, type: e }, { endpoint: { url: \"https://cloudformation-fips.{Region}.{PartitionResult#dnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"FIPS is enabled but this partition does not support FIPS\", type: d }], type: f }, { conditions: s, rules: [{ conditions: [q], rules: [{ endpoint: { url: \"https://cloudformation.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"DualStack is enabled but this partition does not support DualStack\", type: d }], type: f }, { endpoint: { url: \"https://cloudformation.{Region}.{PartitionResult#dnsSuffix}\", properties: n, headers: n }, type: e }], type: f }], type: f }, { error: \"Invalid Configuration: Missing Region\", type: d }] };\nexports.ruleSet = _data;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AccountFilterType: () => AccountFilterType,\n AccountGateStatus: () => AccountGateStatus,\n ActivateOrganizationsAccessCommand: () => ActivateOrganizationsAccessCommand,\n ActivateTypeCommand: () => ActivateTypeCommand,\n AlreadyExistsException: () => AlreadyExistsException,\n AttributeChangeType: () => AttributeChangeType,\n BatchDescribeTypeConfigurationsCommand: () => BatchDescribeTypeConfigurationsCommand,\n CFNRegistryException: () => CFNRegistryException,\n CallAs: () => CallAs,\n CancelUpdateStackCommand: () => CancelUpdateStackCommand,\n Capability: () => Capability,\n Category: () => Category,\n ChangeAction: () => ChangeAction,\n ChangeSetHooksStatus: () => ChangeSetHooksStatus,\n ChangeSetNotFoundException: () => ChangeSetNotFoundException,\n ChangeSetStatus: () => ChangeSetStatus,\n ChangeSetType: () => ChangeSetType,\n ChangeSource: () => ChangeSource,\n ChangeType: () => ChangeType,\n CloudFormation: () => CloudFormation,\n CloudFormationClient: () => CloudFormationClient,\n CloudFormationServiceException: () => CloudFormationServiceException,\n ConcurrencyMode: () => ConcurrencyMode,\n ConcurrentResourcesLimitExceededException: () => ConcurrentResourcesLimitExceededException,\n ContinueUpdateRollbackCommand: () => ContinueUpdateRollbackCommand,\n CreateChangeSetCommand: () => CreateChangeSetCommand,\n CreateGeneratedTemplateCommand: () => CreateGeneratedTemplateCommand,\n CreateStackCommand: () => CreateStackCommand,\n CreateStackInstancesCommand: () => CreateStackInstancesCommand,\n CreateStackSetCommand: () => CreateStackSetCommand,\n CreatedButModifiedException: () => CreatedButModifiedException,\n DeactivateOrganizationsAccessCommand: () => DeactivateOrganizationsAccessCommand,\n DeactivateTypeCommand: () => DeactivateTypeCommand,\n DeleteChangeSetCommand: () => DeleteChangeSetCommand,\n DeleteGeneratedTemplateCommand: () => DeleteGeneratedTemplateCommand,\n DeleteStackCommand: () => DeleteStackCommand,\n DeleteStackInstancesCommand: () => DeleteStackInstancesCommand,\n DeleteStackSetCommand: () => DeleteStackSetCommand,\n DeprecatedStatus: () => DeprecatedStatus,\n DeregisterTypeCommand: () => DeregisterTypeCommand,\n DescribeAccountLimitsCommand: () => DescribeAccountLimitsCommand,\n DescribeChangeSetCommand: () => DescribeChangeSetCommand,\n DescribeChangeSetHooksCommand: () => DescribeChangeSetHooksCommand,\n DescribeGeneratedTemplateCommand: () => DescribeGeneratedTemplateCommand,\n DescribeOrganizationsAccessCommand: () => DescribeOrganizationsAccessCommand,\n DescribePublisherCommand: () => DescribePublisherCommand,\n DescribeResourceScanCommand: () => DescribeResourceScanCommand,\n DescribeStackDriftDetectionStatusCommand: () => DescribeStackDriftDetectionStatusCommand,\n DescribeStackEventsCommand: () => DescribeStackEventsCommand,\n DescribeStackInstanceCommand: () => DescribeStackInstanceCommand,\n DescribeStackResourceCommand: () => DescribeStackResourceCommand,\n DescribeStackResourceDriftsCommand: () => DescribeStackResourceDriftsCommand,\n DescribeStackResourcesCommand: () => DescribeStackResourcesCommand,\n DescribeStackSetCommand: () => DescribeStackSetCommand,\n DescribeStackSetOperationCommand: () => DescribeStackSetOperationCommand,\n DescribeStacksCommand: () => DescribeStacksCommand,\n DescribeTypeCommand: () => DescribeTypeCommand,\n DescribeTypeRegistrationCommand: () => DescribeTypeRegistrationCommand,\n DetailedStatus: () => DetailedStatus,\n DetectStackDriftCommand: () => DetectStackDriftCommand,\n DetectStackResourceDriftCommand: () => DetectStackResourceDriftCommand,\n DetectStackSetDriftCommand: () => DetectStackSetDriftCommand,\n DifferenceType: () => DifferenceType,\n EstimateTemplateCostCommand: () => EstimateTemplateCostCommand,\n EvaluationType: () => EvaluationType,\n ExecuteChangeSetCommand: () => ExecuteChangeSetCommand,\n ExecutionStatus: () => ExecutionStatus,\n GeneratedTemplateDeletionPolicy: () => GeneratedTemplateDeletionPolicy,\n GeneratedTemplateNotFoundException: () => GeneratedTemplateNotFoundException,\n GeneratedTemplateResourceStatus: () => GeneratedTemplateResourceStatus,\n GeneratedTemplateStatus: () => GeneratedTemplateStatus,\n GeneratedTemplateUpdateReplacePolicy: () => GeneratedTemplateUpdateReplacePolicy,\n GetGeneratedTemplateCommand: () => GetGeneratedTemplateCommand,\n GetStackPolicyCommand: () => GetStackPolicyCommand,\n GetTemplateCommand: () => GetTemplateCommand,\n GetTemplateSummaryCommand: () => GetTemplateSummaryCommand,\n HandlerErrorCode: () => HandlerErrorCode,\n HookFailureMode: () => HookFailureMode,\n HookInvocationPoint: () => HookInvocationPoint,\n HookStatus: () => HookStatus,\n HookTargetType: () => HookTargetType,\n IdentityProvider: () => IdentityProvider,\n ImportStacksToStackSetCommand: () => ImportStacksToStackSetCommand,\n InsufficientCapabilitiesException: () => InsufficientCapabilitiesException,\n InvalidChangeSetStatusException: () => InvalidChangeSetStatusException,\n InvalidOperationException: () => InvalidOperationException,\n InvalidStateTransitionException: () => InvalidStateTransitionException,\n LimitExceededException: () => LimitExceededException,\n ListChangeSetsCommand: () => ListChangeSetsCommand,\n ListExportsCommand: () => ListExportsCommand,\n ListGeneratedTemplatesCommand: () => ListGeneratedTemplatesCommand,\n ListImportsCommand: () => ListImportsCommand,\n ListResourceScanRelatedResourcesCommand: () => ListResourceScanRelatedResourcesCommand,\n ListResourceScanResourcesCommand: () => ListResourceScanResourcesCommand,\n ListResourceScansCommand: () => ListResourceScansCommand,\n ListStackInstanceResourceDriftsCommand: () => ListStackInstanceResourceDriftsCommand,\n ListStackInstancesCommand: () => ListStackInstancesCommand,\n ListStackResourcesCommand: () => ListStackResourcesCommand,\n ListStackSetAutoDeploymentTargetsCommand: () => ListStackSetAutoDeploymentTargetsCommand,\n ListStackSetOperationResultsCommand: () => ListStackSetOperationResultsCommand,\n ListStackSetOperationsCommand: () => ListStackSetOperationsCommand,\n ListStackSetsCommand: () => ListStackSetsCommand,\n ListStacksCommand: () => ListStacksCommand,\n ListTypeRegistrationsCommand: () => ListTypeRegistrationsCommand,\n ListTypeVersionsCommand: () => ListTypeVersionsCommand,\n ListTypesCommand: () => ListTypesCommand,\n NameAlreadyExistsException: () => NameAlreadyExistsException,\n OnFailure: () => OnFailure,\n OnStackFailure: () => OnStackFailure,\n OperationIdAlreadyExistsException: () => OperationIdAlreadyExistsException,\n OperationInProgressException: () => OperationInProgressException,\n OperationNotFoundException: () => OperationNotFoundException,\n OperationResultFilterName: () => OperationResultFilterName,\n OperationStatus: () => OperationStatus,\n OperationStatusCheckFailedException: () => OperationStatusCheckFailedException,\n OrganizationStatus: () => OrganizationStatus,\n PermissionModels: () => PermissionModels,\n PolicyAction: () => PolicyAction,\n ProvisioningType: () => ProvisioningType,\n PublishTypeCommand: () => PublishTypeCommand,\n PublisherStatus: () => PublisherStatus,\n RecordHandlerProgressCommand: () => RecordHandlerProgressCommand,\n RegionConcurrencyType: () => RegionConcurrencyType,\n RegisterPublisherCommand: () => RegisterPublisherCommand,\n RegisterTypeCommand: () => RegisterTypeCommand,\n RegistrationStatus: () => RegistrationStatus,\n RegistryType: () => RegistryType,\n Replacement: () => Replacement,\n RequiresRecreation: () => RequiresRecreation,\n ResourceAttribute: () => ResourceAttribute,\n ResourceScanInProgressException: () => ResourceScanInProgressException,\n ResourceScanLimitExceededException: () => ResourceScanLimitExceededException,\n ResourceScanNotFoundException: () => ResourceScanNotFoundException,\n ResourceScanStatus: () => ResourceScanStatus,\n ResourceSignalStatus: () => ResourceSignalStatus,\n ResourceStatus: () => ResourceStatus,\n RollbackStackCommand: () => RollbackStackCommand,\n SetStackPolicyCommand: () => SetStackPolicyCommand,\n SetTypeConfigurationCommand: () => SetTypeConfigurationCommand,\n SetTypeDefaultVersionCommand: () => SetTypeDefaultVersionCommand,\n SignalResourceCommand: () => SignalResourceCommand,\n StackDriftDetectionStatus: () => StackDriftDetectionStatus,\n StackDriftStatus: () => StackDriftStatus,\n StackInstanceDetailedStatus: () => StackInstanceDetailedStatus,\n StackInstanceFilterName: () => StackInstanceFilterName,\n StackInstanceNotFoundException: () => StackInstanceNotFoundException,\n StackInstanceStatus: () => StackInstanceStatus,\n StackNotFoundException: () => StackNotFoundException,\n StackResourceDriftStatus: () => StackResourceDriftStatus,\n StackSetDriftDetectionStatus: () => StackSetDriftDetectionStatus,\n StackSetDriftStatus: () => StackSetDriftStatus,\n StackSetNotEmptyException: () => StackSetNotEmptyException,\n StackSetNotFoundException: () => StackSetNotFoundException,\n StackSetOperationAction: () => StackSetOperationAction,\n StackSetOperationResultStatus: () => StackSetOperationResultStatus,\n StackSetOperationStatus: () => StackSetOperationStatus,\n StackSetStatus: () => StackSetStatus,\n StackStatus: () => StackStatus,\n StaleRequestException: () => StaleRequestException,\n StartResourceScanCommand: () => StartResourceScanCommand,\n StopStackSetOperationCommand: () => StopStackSetOperationCommand,\n TemplateFormat: () => TemplateFormat,\n TemplateStage: () => TemplateStage,\n TestTypeCommand: () => TestTypeCommand,\n ThirdPartyType: () => ThirdPartyType,\n TokenAlreadyExistsException: () => TokenAlreadyExistsException,\n TypeConfigurationNotFoundException: () => TypeConfigurationNotFoundException,\n TypeNotFoundException: () => TypeNotFoundException,\n TypeTestsStatus: () => TypeTestsStatus,\n UpdateGeneratedTemplateCommand: () => UpdateGeneratedTemplateCommand,\n UpdateStackCommand: () => UpdateStackCommand,\n UpdateStackInstancesCommand: () => UpdateStackInstancesCommand,\n UpdateStackSetCommand: () => UpdateStackSetCommand,\n UpdateTerminationProtectionCommand: () => UpdateTerminationProtectionCommand,\n ValidateTemplateCommand: () => ValidateTemplateCommand,\n VersionBump: () => VersionBump,\n Visibility: () => Visibility,\n WarningType: () => WarningType,\n __Client: () => import_smithy_client.Client,\n paginateDescribeAccountLimits: () => paginateDescribeAccountLimits,\n paginateDescribeStackEvents: () => paginateDescribeStackEvents,\n paginateDescribeStackResourceDrifts: () => paginateDescribeStackResourceDrifts,\n paginateDescribeStacks: () => paginateDescribeStacks,\n paginateListChangeSets: () => paginateListChangeSets,\n paginateListExports: () => paginateListExports,\n paginateListGeneratedTemplates: () => paginateListGeneratedTemplates,\n paginateListImports: () => paginateListImports,\n paginateListResourceScanRelatedResources: () => paginateListResourceScanRelatedResources,\n paginateListResourceScanResources: () => paginateListResourceScanResources,\n paginateListResourceScans: () => paginateListResourceScans,\n paginateListStackInstances: () => paginateListStackInstances,\n paginateListStackResources: () => paginateListStackResources,\n paginateListStackSetOperationResults: () => paginateListStackSetOperationResults,\n paginateListStackSetOperations: () => paginateListStackSetOperations,\n paginateListStackSets: () => paginateListStackSets,\n paginateListStacks: () => paginateListStacks,\n paginateListTypeRegistrations: () => paginateListTypeRegistrations,\n paginateListTypeVersions: () => paginateListTypeVersions,\n paginateListTypes: () => paginateListTypes,\n waitForChangeSetCreateComplete: () => waitForChangeSetCreateComplete,\n waitForStackCreateComplete: () => waitForStackCreateComplete,\n waitForStackDeleteComplete: () => waitForStackDeleteComplete,\n waitForStackExists: () => waitForStackExists,\n waitForStackImportComplete: () => waitForStackImportComplete,\n waitForStackRollbackComplete: () => waitForStackRollbackComplete,\n waitForStackUpdateComplete: () => waitForStackUpdateComplete,\n waitForTypeRegistrationComplete: () => waitForTypeRegistrationComplete,\n waitUntilChangeSetCreateComplete: () => waitUntilChangeSetCreateComplete,\n waitUntilStackCreateComplete: () => waitUntilStackCreateComplete,\n waitUntilStackDeleteComplete: () => waitUntilStackDeleteComplete,\n waitUntilStackExists: () => waitUntilStackExists,\n waitUntilStackImportComplete: () => waitUntilStackImportComplete,\n waitUntilStackRollbackComplete: () => waitUntilStackRollbackComplete,\n waitUntilStackUpdateComplete: () => waitUntilStackUpdateComplete,\n waitUntilTypeRegistrationComplete: () => waitUntilTypeRegistrationComplete\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/CloudFormationClient.ts\nvar import_middleware_host_header = require(\"@aws-sdk/middleware-host-header\");\nvar import_middleware_logger = require(\"@aws-sdk/middleware-logger\");\nvar import_middleware_recursion_detection = require(\"@aws-sdk/middleware-recursion-detection\");\nvar import_middleware_user_agent = require(\"@aws-sdk/middleware-user-agent\");\nvar import_config_resolver = require(\"@smithy/config-resolver\");\nvar import_core = require(\"@smithy/core\");\nvar import_middleware_content_length = require(\"@smithy/middleware-content-length\");\nvar import_middleware_endpoint = require(\"@smithy/middleware-endpoint\");\nvar import_middleware_retry = require(\"@smithy/middleware-retry\");\n\nvar import_httpAuthSchemeProvider = require(\"./auth/httpAuthSchemeProvider\");\n\n// src/endpoint/EndpointParameters.ts\nvar resolveClientEndpointParameters = /* @__PURE__ */ __name((options) => {\n return {\n ...options,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"cloudformation\"\n };\n}, \"resolveClientEndpointParameters\");\nvar commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" }\n};\n\n// src/CloudFormationClient.ts\nvar import_runtimeConfig = require(\"././runtimeConfig\");\n\n// src/runtimeExtensions.ts\nvar import_region_config_resolver = require(\"@aws-sdk/region-config-resolver\");\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar import_smithy_client = require(\"@smithy/smithy-client\");\n\n// src/auth/httpAuthExtensionConfiguration.ts\nvar getHttpAuthExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n } else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n }\n };\n}, \"getHttpAuthExtensionConfiguration\");\nvar resolveHttpAuthRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials()\n };\n}, \"resolveHttpAuthRuntimeConfig\");\n\n// src/runtimeExtensions.ts\nvar asPartial = /* @__PURE__ */ __name((t) => t, \"asPartial\");\nvar resolveRuntimeExtensions = /* @__PURE__ */ __name((runtimeConfig, extensions) => {\n const extensionConfiguration = {\n ...asPartial((0, import_region_config_resolver.getAwsRegionExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_smithy_client.getDefaultExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_protocol_http.getHttpHandlerExtensionConfiguration)(runtimeConfig)),\n ...asPartial(getHttpAuthExtensionConfiguration(runtimeConfig))\n };\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return {\n ...runtimeConfig,\n ...(0, import_region_config_resolver.resolveAwsRegionExtensionConfiguration)(extensionConfiguration),\n ...(0, import_smithy_client.resolveDefaultRuntimeConfig)(extensionConfiguration),\n ...(0, import_protocol_http.resolveHttpHandlerRuntimeConfig)(extensionConfiguration),\n ...resolveHttpAuthRuntimeConfig(extensionConfiguration)\n };\n}, \"resolveRuntimeExtensions\");\n\n// src/CloudFormationClient.ts\nvar _CloudFormationClient = class _CloudFormationClient extends import_smithy_client.Client {\n constructor(...[configuration]) {\n const _config_0 = (0, import_runtimeConfig.getRuntimeConfig)(configuration || {});\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = (0, import_config_resolver.resolveRegionConfig)(_config_1);\n const _config_3 = (0, import_middleware_endpoint.resolveEndpointConfig)(_config_2);\n const _config_4 = (0, import_middleware_retry.resolveRetryConfig)(_config_3);\n const _config_5 = (0, import_middleware_host_header.resolveHostHeaderConfig)(_config_4);\n const _config_6 = (0, import_middleware_user_agent.resolveUserAgentConfig)(_config_5);\n const _config_7 = (0, import_httpAuthSchemeProvider.resolveHttpAuthSchemeConfig)(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, (configuration == null ? void 0 : configuration.extensions) || []);\n super(_config_8);\n this.config = _config_8;\n this.middlewareStack.use((0, import_middleware_retry.getRetryPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_content_length.getContentLengthPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_host_header.getHostHeaderPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_logger.getLoggerPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_recursion_detection.getRecursionDetectionPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_user_agent.getUserAgentPlugin)(this.config));\n this.middlewareStack.use(\n (0, import_core.getHttpAuthSchemeEndpointRuleSetPlugin)(this.config, {\n httpAuthSchemeParametersProvider: this.getDefaultHttpAuthSchemeParametersProvider(),\n identityProviderConfigProvider: this.getIdentityProviderConfigProvider()\n })\n );\n this.middlewareStack.use((0, import_core.getHttpSigningPlugin)(this.config));\n }\n /**\n * Destroy underlying resources, like sockets. It's usually not necessary to do this.\n * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed.\n * Otherwise, sockets might stay open for quite a long time before the server terminates them.\n */\n destroy() {\n super.destroy();\n }\n getDefaultHttpAuthSchemeParametersProvider() {\n return import_httpAuthSchemeProvider.defaultCloudFormationHttpAuthSchemeParametersProvider;\n }\n getIdentityProviderConfigProvider() {\n return async (config) => new import_core.DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials\n });\n }\n};\n__name(_CloudFormationClient, \"CloudFormationClient\");\nvar CloudFormationClient = _CloudFormationClient;\n\n// src/CloudFormation.ts\n\n\n// src/commands/ActivateOrganizationsAccessCommand.ts\n\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\n\nvar import_types = require(\"@smithy/types\");\n\n// src/protocols/Aws_query.ts\nvar import_core2 = require(\"@aws-sdk/core\");\n\n\nvar import_uuid = require(\"uuid\");\n\n// src/models/CloudFormationServiceException.ts\n\nvar _CloudFormationServiceException = class _CloudFormationServiceException extends import_smithy_client.ServiceException {\n /**\n * @internal\n */\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, _CloudFormationServiceException.prototype);\n }\n};\n__name(_CloudFormationServiceException, \"CloudFormationServiceException\");\nvar CloudFormationServiceException = _CloudFormationServiceException;\n\n// src/models/models_0.ts\nvar AccountFilterType = {\n DIFFERENCE: \"DIFFERENCE\",\n INTERSECTION: \"INTERSECTION\",\n NONE: \"NONE\",\n UNION: \"UNION\"\n};\nvar AccountGateStatus = {\n FAILED: \"FAILED\",\n SKIPPED: \"SKIPPED\",\n SUCCEEDED: \"SUCCEEDED\"\n};\nvar _InvalidOperationException = class _InvalidOperationException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidOperationException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidOperationException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidOperationException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_InvalidOperationException, \"InvalidOperationException\");\nvar InvalidOperationException = _InvalidOperationException;\nvar _OperationNotFoundException = class _OperationNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"OperationNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"OperationNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _OperationNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_OperationNotFoundException, \"OperationNotFoundException\");\nvar OperationNotFoundException = _OperationNotFoundException;\nvar ThirdPartyType = {\n HOOK: \"HOOK\",\n MODULE: \"MODULE\",\n RESOURCE: \"RESOURCE\"\n};\nvar VersionBump = {\n MAJOR: \"MAJOR\",\n MINOR: \"MINOR\"\n};\nvar _CFNRegistryException = class _CFNRegistryException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"CFNRegistryException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"CFNRegistryException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _CFNRegistryException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_CFNRegistryException, \"CFNRegistryException\");\nvar CFNRegistryException = _CFNRegistryException;\nvar _TypeNotFoundException = class _TypeNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"TypeNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"TypeNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _TypeNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_TypeNotFoundException, \"TypeNotFoundException\");\nvar TypeNotFoundException = _TypeNotFoundException;\nvar _AlreadyExistsException = class _AlreadyExistsException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"AlreadyExistsException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"AlreadyExistsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _AlreadyExistsException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_AlreadyExistsException, \"AlreadyExistsException\");\nvar AlreadyExistsException = _AlreadyExistsException;\nvar AttributeChangeType = {\n Add: \"Add\",\n Modify: \"Modify\",\n Remove: \"Remove\"\n};\nvar _TypeConfigurationNotFoundException = class _TypeConfigurationNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"TypeConfigurationNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"TypeConfigurationNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _TypeConfigurationNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_TypeConfigurationNotFoundException, \"TypeConfigurationNotFoundException\");\nvar TypeConfigurationNotFoundException = _TypeConfigurationNotFoundException;\nvar CallAs = {\n DELEGATED_ADMIN: \"DELEGATED_ADMIN\",\n SELF: \"SELF\"\n};\nvar _TokenAlreadyExistsException = class _TokenAlreadyExistsException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"TokenAlreadyExistsException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"TokenAlreadyExistsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _TokenAlreadyExistsException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_TokenAlreadyExistsException, \"TokenAlreadyExistsException\");\nvar TokenAlreadyExistsException = _TokenAlreadyExistsException;\nvar Capability = {\n CAPABILITY_AUTO_EXPAND: \"CAPABILITY_AUTO_EXPAND\",\n CAPABILITY_IAM: \"CAPABILITY_IAM\",\n CAPABILITY_NAMED_IAM: \"CAPABILITY_NAMED_IAM\"\n};\nvar Category = {\n ACTIVATED: \"ACTIVATED\",\n AWS_TYPES: \"AWS_TYPES\",\n REGISTERED: \"REGISTERED\",\n THIRD_PARTY: \"THIRD_PARTY\"\n};\nvar ChangeAction = {\n Add: \"Add\",\n Dynamic: \"Dynamic\",\n Import: \"Import\",\n Modify: \"Modify\",\n Remove: \"Remove\"\n};\nvar ChangeSource = {\n Automatic: \"Automatic\",\n DirectModification: \"DirectModification\",\n ParameterReference: \"ParameterReference\",\n ResourceAttribute: \"ResourceAttribute\",\n ResourceReference: \"ResourceReference\"\n};\nvar EvaluationType = {\n Dynamic: \"Dynamic\",\n Static: \"Static\"\n};\nvar ResourceAttribute = {\n CreationPolicy: \"CreationPolicy\",\n DeletionPolicy: \"DeletionPolicy\",\n Metadata: \"Metadata\",\n Properties: \"Properties\",\n Tags: \"Tags\",\n UpdatePolicy: \"UpdatePolicy\",\n UpdateReplacePolicy: \"UpdateReplacePolicy\"\n};\nvar RequiresRecreation = {\n Always: \"Always\",\n Conditionally: \"Conditionally\",\n Never: \"Never\"\n};\nvar PolicyAction = {\n Delete: \"Delete\",\n ReplaceAndDelete: \"ReplaceAndDelete\",\n ReplaceAndRetain: \"ReplaceAndRetain\",\n ReplaceAndSnapshot: \"ReplaceAndSnapshot\",\n Retain: \"Retain\",\n Snapshot: \"Snapshot\"\n};\nvar Replacement = {\n Conditional: \"Conditional\",\n False: \"False\",\n True: \"True\"\n};\nvar ChangeType = {\n Resource: \"Resource\"\n};\nvar HookFailureMode = {\n FAIL: \"FAIL\",\n WARN: \"WARN\"\n};\nvar HookInvocationPoint = {\n PRE_PROVISION: \"PRE_PROVISION\"\n};\nvar HookTargetType = {\n RESOURCE: \"RESOURCE\"\n};\nvar ChangeSetHooksStatus = {\n PLANNED: \"PLANNED\",\n PLANNING: \"PLANNING\",\n UNAVAILABLE: \"UNAVAILABLE\"\n};\nvar _ChangeSetNotFoundException = class _ChangeSetNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ChangeSetNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ChangeSetNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ChangeSetNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_ChangeSetNotFoundException, \"ChangeSetNotFoundException\");\nvar ChangeSetNotFoundException = _ChangeSetNotFoundException;\nvar ChangeSetStatus = {\n CREATE_COMPLETE: \"CREATE_COMPLETE\",\n CREATE_IN_PROGRESS: \"CREATE_IN_PROGRESS\",\n CREATE_PENDING: \"CREATE_PENDING\",\n DELETE_COMPLETE: \"DELETE_COMPLETE\",\n DELETE_FAILED: \"DELETE_FAILED\",\n DELETE_IN_PROGRESS: \"DELETE_IN_PROGRESS\",\n DELETE_PENDING: \"DELETE_PENDING\",\n FAILED: \"FAILED\"\n};\nvar ExecutionStatus = {\n AVAILABLE: \"AVAILABLE\",\n EXECUTE_COMPLETE: \"EXECUTE_COMPLETE\",\n EXECUTE_FAILED: \"EXECUTE_FAILED\",\n EXECUTE_IN_PROGRESS: \"EXECUTE_IN_PROGRESS\",\n OBSOLETE: \"OBSOLETE\",\n UNAVAILABLE: \"UNAVAILABLE\"\n};\nvar ChangeSetType = {\n CREATE: \"CREATE\",\n IMPORT: \"IMPORT\",\n UPDATE: \"UPDATE\"\n};\nvar OnStackFailure = {\n DELETE: \"DELETE\",\n DO_NOTHING: \"DO_NOTHING\",\n ROLLBACK: \"ROLLBACK\"\n};\nvar _InsufficientCapabilitiesException = class _InsufficientCapabilitiesException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InsufficientCapabilitiesException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InsufficientCapabilitiesException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InsufficientCapabilitiesException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_InsufficientCapabilitiesException, \"InsufficientCapabilitiesException\");\nvar InsufficientCapabilitiesException = _InsufficientCapabilitiesException;\nvar _LimitExceededException = class _LimitExceededException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"LimitExceededException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"LimitExceededException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _LimitExceededException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_LimitExceededException, \"LimitExceededException\");\nvar LimitExceededException = _LimitExceededException;\nvar _ConcurrentResourcesLimitExceededException = class _ConcurrentResourcesLimitExceededException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ConcurrentResourcesLimitExceededException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ConcurrentResourcesLimitExceededException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ConcurrentResourcesLimitExceededException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_ConcurrentResourcesLimitExceededException, \"ConcurrentResourcesLimitExceededException\");\nvar ConcurrentResourcesLimitExceededException = _ConcurrentResourcesLimitExceededException;\nvar GeneratedTemplateDeletionPolicy = {\n DELETE: \"DELETE\",\n RETAIN: \"RETAIN\"\n};\nvar GeneratedTemplateUpdateReplacePolicy = {\n DELETE: \"DELETE\",\n RETAIN: \"RETAIN\"\n};\nvar OnFailure = {\n DELETE: \"DELETE\",\n DO_NOTHING: \"DO_NOTHING\",\n ROLLBACK: \"ROLLBACK\"\n};\nvar ConcurrencyMode = {\n SOFT_FAILURE_TOLERANCE: \"SOFT_FAILURE_TOLERANCE\",\n STRICT_FAILURE_TOLERANCE: \"STRICT_FAILURE_TOLERANCE\"\n};\nvar RegionConcurrencyType = {\n PARALLEL: \"PARALLEL\",\n SEQUENTIAL: \"SEQUENTIAL\"\n};\nvar _OperationIdAlreadyExistsException = class _OperationIdAlreadyExistsException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"OperationIdAlreadyExistsException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"OperationIdAlreadyExistsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _OperationIdAlreadyExistsException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_OperationIdAlreadyExistsException, \"OperationIdAlreadyExistsException\");\nvar OperationIdAlreadyExistsException = _OperationIdAlreadyExistsException;\nvar _OperationInProgressException = class _OperationInProgressException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"OperationInProgressException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"OperationInProgressException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _OperationInProgressException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_OperationInProgressException, \"OperationInProgressException\");\nvar OperationInProgressException = _OperationInProgressException;\nvar _StackSetNotFoundException = class _StackSetNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"StackSetNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"StackSetNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _StackSetNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_StackSetNotFoundException, \"StackSetNotFoundException\");\nvar StackSetNotFoundException = _StackSetNotFoundException;\nvar _StaleRequestException = class _StaleRequestException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"StaleRequestException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"StaleRequestException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _StaleRequestException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_StaleRequestException, \"StaleRequestException\");\nvar StaleRequestException = _StaleRequestException;\nvar _CreatedButModifiedException = class _CreatedButModifiedException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"CreatedButModifiedException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"CreatedButModifiedException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _CreatedButModifiedException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_CreatedButModifiedException, \"CreatedButModifiedException\");\nvar CreatedButModifiedException = _CreatedButModifiedException;\nvar PermissionModels = {\n SELF_MANAGED: \"SELF_MANAGED\",\n SERVICE_MANAGED: \"SERVICE_MANAGED\"\n};\nvar _NameAlreadyExistsException = class _NameAlreadyExistsException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"NameAlreadyExistsException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"NameAlreadyExistsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _NameAlreadyExistsException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_NameAlreadyExistsException, \"NameAlreadyExistsException\");\nvar NameAlreadyExistsException = _NameAlreadyExistsException;\nvar _InvalidChangeSetStatusException = class _InvalidChangeSetStatusException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidChangeSetStatusException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidChangeSetStatusException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidChangeSetStatusException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_InvalidChangeSetStatusException, \"InvalidChangeSetStatusException\");\nvar InvalidChangeSetStatusException = _InvalidChangeSetStatusException;\nvar _GeneratedTemplateNotFoundException = class _GeneratedTemplateNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"GeneratedTemplateNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"GeneratedTemplateNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _GeneratedTemplateNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_GeneratedTemplateNotFoundException, \"GeneratedTemplateNotFoundException\");\nvar GeneratedTemplateNotFoundException = _GeneratedTemplateNotFoundException;\nvar _StackSetNotEmptyException = class _StackSetNotEmptyException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"StackSetNotEmptyException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"StackSetNotEmptyException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _StackSetNotEmptyException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_StackSetNotEmptyException, \"StackSetNotEmptyException\");\nvar StackSetNotEmptyException = _StackSetNotEmptyException;\nvar RegistryType = {\n HOOK: \"HOOK\",\n MODULE: \"MODULE\",\n RESOURCE: \"RESOURCE\"\n};\nvar GeneratedTemplateResourceStatus = {\n COMPLETE: \"COMPLETE\",\n FAILED: \"FAILED\",\n IN_PROGRESS: \"IN_PROGRESS\",\n PENDING: \"PENDING\"\n};\nvar WarningType = {\n MUTUALLY_EXCLUSIVE_PROPERTIES: \"MUTUALLY_EXCLUSIVE_PROPERTIES\",\n MUTUALLY_EXCLUSIVE_TYPES: \"MUTUALLY_EXCLUSIVE_TYPES\",\n UNSUPPORTED_PROPERTIES: \"UNSUPPORTED_PROPERTIES\"\n};\nvar GeneratedTemplateStatus = {\n COMPLETE: \"COMPLETE\",\n CREATE_IN_PROGRESS: \"CREATE_IN_PROGRESS\",\n CREATE_PENDING: \"CREATE_PENDING\",\n DELETE_IN_PROGRESS: \"DELETE_IN_PROGRESS\",\n DELETE_PENDING: \"DELETE_PENDING\",\n FAILED: \"FAILED\",\n UPDATE_IN_PROGRESS: \"UPDATE_IN_PROGRESS\",\n UPDATE_PENDING: \"UPDATE_PENDING\"\n};\nvar OrganizationStatus = {\n DISABLED: \"DISABLED\",\n DISABLED_PERMANENTLY: \"DISABLED_PERMANENTLY\",\n ENABLED: \"ENABLED\"\n};\nvar IdentityProvider = {\n AWS_Marketplace: \"AWS_Marketplace\",\n Bitbucket: \"Bitbucket\",\n GitHub: \"GitHub\"\n};\nvar PublisherStatus = {\n UNVERIFIED: \"UNVERIFIED\",\n VERIFIED: \"VERIFIED\"\n};\nvar ResourceScanStatus = {\n COMPLETE: \"COMPLETE\",\n EXPIRED: \"EXPIRED\",\n FAILED: \"FAILED\",\n IN_PROGRESS: \"IN_PROGRESS\"\n};\nvar _ResourceScanNotFoundException = class _ResourceScanNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ResourceScanNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ResourceScanNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ResourceScanNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_ResourceScanNotFoundException, \"ResourceScanNotFoundException\");\nvar ResourceScanNotFoundException = _ResourceScanNotFoundException;\nvar StackDriftDetectionStatus = {\n DETECTION_COMPLETE: \"DETECTION_COMPLETE\",\n DETECTION_FAILED: \"DETECTION_FAILED\",\n DETECTION_IN_PROGRESS: \"DETECTION_IN_PROGRESS\"\n};\nvar StackDriftStatus = {\n DRIFTED: \"DRIFTED\",\n IN_SYNC: \"IN_SYNC\",\n NOT_CHECKED: \"NOT_CHECKED\",\n UNKNOWN: \"UNKNOWN\"\n};\nvar DetailedStatus = {\n CONFIGURATION_COMPLETE: \"CONFIGURATION_COMPLETE\",\n VALIDATION_FAILED: \"VALIDATION_FAILED\"\n};\nvar HookStatus = {\n HOOK_COMPLETE_FAILED: \"HOOK_COMPLETE_FAILED\",\n HOOK_COMPLETE_SUCCEEDED: \"HOOK_COMPLETE_SUCCEEDED\",\n HOOK_FAILED: \"HOOK_FAILED\",\n HOOK_IN_PROGRESS: \"HOOK_IN_PROGRESS\"\n};\nvar ResourceStatus = {\n CREATE_COMPLETE: \"CREATE_COMPLETE\",\n CREATE_FAILED: \"CREATE_FAILED\",\n CREATE_IN_PROGRESS: \"CREATE_IN_PROGRESS\",\n DELETE_COMPLETE: \"DELETE_COMPLETE\",\n DELETE_FAILED: \"DELETE_FAILED\",\n DELETE_IN_PROGRESS: \"DELETE_IN_PROGRESS\",\n DELETE_SKIPPED: \"DELETE_SKIPPED\",\n IMPORT_COMPLETE: \"IMPORT_COMPLETE\",\n IMPORT_FAILED: \"IMPORT_FAILED\",\n IMPORT_IN_PROGRESS: \"IMPORT_IN_PROGRESS\",\n IMPORT_ROLLBACK_COMPLETE: \"IMPORT_ROLLBACK_COMPLETE\",\n IMPORT_ROLLBACK_FAILED: \"IMPORT_ROLLBACK_FAILED\",\n IMPORT_ROLLBACK_IN_PROGRESS: \"IMPORT_ROLLBACK_IN_PROGRESS\",\n ROLLBACK_COMPLETE: \"ROLLBACK_COMPLETE\",\n ROLLBACK_FAILED: \"ROLLBACK_FAILED\",\n ROLLBACK_IN_PROGRESS: \"ROLLBACK_IN_PROGRESS\",\n UPDATE_COMPLETE: \"UPDATE_COMPLETE\",\n UPDATE_FAILED: \"UPDATE_FAILED\",\n UPDATE_IN_PROGRESS: \"UPDATE_IN_PROGRESS\",\n UPDATE_ROLLBACK_COMPLETE: \"UPDATE_ROLLBACK_COMPLETE\",\n UPDATE_ROLLBACK_FAILED: \"UPDATE_ROLLBACK_FAILED\",\n UPDATE_ROLLBACK_IN_PROGRESS: \"UPDATE_ROLLBACK_IN_PROGRESS\"\n};\nvar StackInstanceDetailedStatus = {\n CANCELLED: \"CANCELLED\",\n FAILED: \"FAILED\",\n FAILED_IMPORT: \"FAILED_IMPORT\",\n INOPERABLE: \"INOPERABLE\",\n PENDING: \"PENDING\",\n RUNNING: \"RUNNING\",\n SKIPPED_SUSPENDED_ACCOUNT: \"SKIPPED_SUSPENDED_ACCOUNT\",\n SUCCEEDED: \"SUCCEEDED\"\n};\nvar StackInstanceStatus = {\n CURRENT: \"CURRENT\",\n INOPERABLE: \"INOPERABLE\",\n OUTDATED: \"OUTDATED\"\n};\nvar _StackInstanceNotFoundException = class _StackInstanceNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"StackInstanceNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"StackInstanceNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _StackInstanceNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_StackInstanceNotFoundException, \"StackInstanceNotFoundException\");\nvar StackInstanceNotFoundException = _StackInstanceNotFoundException;\nvar StackResourceDriftStatus = {\n DELETED: \"DELETED\",\n IN_SYNC: \"IN_SYNC\",\n MODIFIED: \"MODIFIED\",\n NOT_CHECKED: \"NOT_CHECKED\"\n};\nvar DifferenceType = {\n ADD: \"ADD\",\n NOT_EQUAL: \"NOT_EQUAL\",\n REMOVE: \"REMOVE\"\n};\nvar StackStatus = {\n CREATE_COMPLETE: \"CREATE_COMPLETE\",\n CREATE_FAILED: \"CREATE_FAILED\",\n CREATE_IN_PROGRESS: \"CREATE_IN_PROGRESS\",\n DELETE_COMPLETE: \"DELETE_COMPLETE\",\n DELETE_FAILED: \"DELETE_FAILED\",\n DELETE_IN_PROGRESS: \"DELETE_IN_PROGRESS\",\n IMPORT_COMPLETE: \"IMPORT_COMPLETE\",\n IMPORT_IN_PROGRESS: \"IMPORT_IN_PROGRESS\",\n IMPORT_ROLLBACK_COMPLETE: \"IMPORT_ROLLBACK_COMPLETE\",\n IMPORT_ROLLBACK_FAILED: \"IMPORT_ROLLBACK_FAILED\",\n IMPORT_ROLLBACK_IN_PROGRESS: \"IMPORT_ROLLBACK_IN_PROGRESS\",\n REVIEW_IN_PROGRESS: \"REVIEW_IN_PROGRESS\",\n ROLLBACK_COMPLETE: \"ROLLBACK_COMPLETE\",\n ROLLBACK_FAILED: \"ROLLBACK_FAILED\",\n ROLLBACK_IN_PROGRESS: \"ROLLBACK_IN_PROGRESS\",\n UPDATE_COMPLETE: \"UPDATE_COMPLETE\",\n UPDATE_COMPLETE_CLEANUP_IN_PROGRESS: \"UPDATE_COMPLETE_CLEANUP_IN_PROGRESS\",\n UPDATE_FAILED: \"UPDATE_FAILED\",\n UPDATE_IN_PROGRESS: \"UPDATE_IN_PROGRESS\",\n UPDATE_ROLLBACK_COMPLETE: \"UPDATE_ROLLBACK_COMPLETE\",\n UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS: \"UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS\",\n UPDATE_ROLLBACK_FAILED: \"UPDATE_ROLLBACK_FAILED\",\n UPDATE_ROLLBACK_IN_PROGRESS: \"UPDATE_ROLLBACK_IN_PROGRESS\"\n};\nvar StackSetDriftDetectionStatus = {\n COMPLETED: \"COMPLETED\",\n FAILED: \"FAILED\",\n IN_PROGRESS: \"IN_PROGRESS\",\n PARTIAL_SUCCESS: \"PARTIAL_SUCCESS\",\n STOPPED: \"STOPPED\"\n};\nvar StackSetDriftStatus = {\n DRIFTED: \"DRIFTED\",\n IN_SYNC: \"IN_SYNC\",\n NOT_CHECKED: \"NOT_CHECKED\"\n};\nvar StackSetStatus = {\n ACTIVE: \"ACTIVE\",\n DELETED: \"DELETED\"\n};\nvar StackSetOperationAction = {\n CREATE: \"CREATE\",\n DELETE: \"DELETE\",\n DETECT_DRIFT: \"DETECT_DRIFT\",\n UPDATE: \"UPDATE\"\n};\nvar StackSetOperationStatus = {\n FAILED: \"FAILED\",\n QUEUED: \"QUEUED\",\n RUNNING: \"RUNNING\",\n STOPPED: \"STOPPED\",\n STOPPING: \"STOPPING\",\n SUCCEEDED: \"SUCCEEDED\"\n};\nvar DeprecatedStatus = {\n DEPRECATED: \"DEPRECATED\",\n LIVE: \"LIVE\"\n};\nvar ProvisioningType = {\n FULLY_MUTABLE: \"FULLY_MUTABLE\",\n IMMUTABLE: \"IMMUTABLE\",\n NON_PROVISIONABLE: \"NON_PROVISIONABLE\"\n};\nvar TypeTestsStatus = {\n FAILED: \"FAILED\",\n IN_PROGRESS: \"IN_PROGRESS\",\n NOT_TESTED: \"NOT_TESTED\",\n PASSED: \"PASSED\"\n};\nvar Visibility = {\n PRIVATE: \"PRIVATE\",\n PUBLIC: \"PUBLIC\"\n};\nvar RegistrationStatus = {\n COMPLETE: \"COMPLETE\",\n FAILED: \"FAILED\",\n IN_PROGRESS: \"IN_PROGRESS\"\n};\nvar TemplateFormat = {\n JSON: \"JSON\",\n YAML: \"YAML\"\n};\nvar TemplateStage = {\n Original: \"Original\",\n Processed: \"Processed\"\n};\nvar _StackNotFoundException = class _StackNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"StackNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"StackNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _StackNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_StackNotFoundException, \"StackNotFoundException\");\nvar StackNotFoundException = _StackNotFoundException;\nvar _ResourceScanInProgressException = class _ResourceScanInProgressException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ResourceScanInProgressException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ResourceScanInProgressException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ResourceScanInProgressException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_ResourceScanInProgressException, \"ResourceScanInProgressException\");\nvar ResourceScanInProgressException = _ResourceScanInProgressException;\nvar StackInstanceFilterName = {\n DETAILED_STATUS: \"DETAILED_STATUS\",\n DRIFT_STATUS: \"DRIFT_STATUS\",\n LAST_OPERATION_ID: \"LAST_OPERATION_ID\"\n};\nvar OperationResultFilterName = {\n OPERATION_RESULT_STATUS: \"OPERATION_RESULT_STATUS\"\n};\nvar StackSetOperationResultStatus = {\n CANCELLED: \"CANCELLED\",\n FAILED: \"FAILED\",\n PENDING: \"PENDING\",\n RUNNING: \"RUNNING\",\n SUCCEEDED: \"SUCCEEDED\"\n};\nvar _InvalidStateTransitionException = class _InvalidStateTransitionException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidStateTransitionException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidStateTransitionException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidStateTransitionException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_InvalidStateTransitionException, \"InvalidStateTransitionException\");\nvar InvalidStateTransitionException = _InvalidStateTransitionException;\nvar _OperationStatusCheckFailedException = class _OperationStatusCheckFailedException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"OperationStatusCheckFailedException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"OperationStatusCheckFailedException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _OperationStatusCheckFailedException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_OperationStatusCheckFailedException, \"OperationStatusCheckFailedException\");\nvar OperationStatusCheckFailedException = _OperationStatusCheckFailedException;\nvar OperationStatus = {\n FAILED: \"FAILED\",\n IN_PROGRESS: \"IN_PROGRESS\",\n PENDING: \"PENDING\",\n SUCCESS: \"SUCCESS\"\n};\nvar HandlerErrorCode = {\n AccessDenied: \"AccessDenied\",\n AlreadyExists: \"AlreadyExists\",\n GeneralServiceException: \"GeneralServiceException\",\n HandlerInternalFailure: \"HandlerInternalFailure\",\n InternalFailure: \"InternalFailure\",\n InvalidCredentials: \"InvalidCredentials\",\n InvalidRequest: \"InvalidRequest\",\n InvalidTypeConfiguration: \"InvalidTypeConfiguration\",\n NetworkFailure: \"NetworkFailure\",\n NonCompliant: \"NonCompliant\",\n NotFound: \"NotFound\",\n NotUpdatable: \"NotUpdatable\",\n ResourceConflict: \"ResourceConflict\",\n ServiceInternalError: \"ServiceInternalError\",\n ServiceLimitExceeded: \"ServiceLimitExceeded\",\n ServiceTimeout: \"NotStabilized\",\n Throttling: \"Throttling\",\n Unknown: \"Unknown\",\n UnsupportedTarget: \"UnsupportedTarget\"\n};\n\n// src/models/models_1.ts\nvar ResourceSignalStatus = {\n FAILURE: \"FAILURE\",\n SUCCESS: \"SUCCESS\"\n};\nvar _ResourceScanLimitExceededException = class _ResourceScanLimitExceededException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ResourceScanLimitExceededException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ResourceScanLimitExceededException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ResourceScanLimitExceededException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_ResourceScanLimitExceededException, \"ResourceScanLimitExceededException\");\nvar ResourceScanLimitExceededException = _ResourceScanLimitExceededException;\n\n// src/protocols/Aws_query.ts\nvar se_ActivateOrganizationsAccessCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ActivateOrganizationsAccessInput(input, context),\n [_A]: _AOA,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ActivateOrganizationsAccessCommand\");\nvar se_ActivateTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ActivateTypeInput(input, context),\n [_A]: _AT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ActivateTypeCommand\");\nvar se_BatchDescribeTypeConfigurationsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_BatchDescribeTypeConfigurationsInput(input, context),\n [_A]: _BDTC,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_BatchDescribeTypeConfigurationsCommand\");\nvar se_CancelUpdateStackCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_CancelUpdateStackInput(input, context),\n [_A]: _CUS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CancelUpdateStackCommand\");\nvar se_ContinueUpdateRollbackCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ContinueUpdateRollbackInput(input, context),\n [_A]: _CUR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ContinueUpdateRollbackCommand\");\nvar se_CreateChangeSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_CreateChangeSetInput(input, context),\n [_A]: _CCS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CreateChangeSetCommand\");\nvar se_CreateGeneratedTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_CreateGeneratedTemplateInput(input, context),\n [_A]: _CGT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CreateGeneratedTemplateCommand\");\nvar se_CreateStackCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_CreateStackInput(input, context),\n [_A]: _CS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CreateStackCommand\");\nvar se_CreateStackInstancesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_CreateStackInstancesInput(input, context),\n [_A]: _CSI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CreateStackInstancesCommand\");\nvar se_CreateStackSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_CreateStackSetInput(input, context),\n [_A]: _CSS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CreateStackSetCommand\");\nvar se_DeactivateOrganizationsAccessCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeactivateOrganizationsAccessInput(input, context),\n [_A]: _DOA,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeactivateOrganizationsAccessCommand\");\nvar se_DeactivateTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeactivateTypeInput(input, context),\n [_A]: _DT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeactivateTypeCommand\");\nvar se_DeleteChangeSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeleteChangeSetInput(input, context),\n [_A]: _DCS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteChangeSetCommand\");\nvar se_DeleteGeneratedTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeleteGeneratedTemplateInput(input, context),\n [_A]: _DGT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteGeneratedTemplateCommand\");\nvar se_DeleteStackCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeleteStackInput(input, context),\n [_A]: _DS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteStackCommand\");\nvar se_DeleteStackInstancesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeleteStackInstancesInput(input, context),\n [_A]: _DSI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteStackInstancesCommand\");\nvar se_DeleteStackSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeleteStackSetInput(input, context),\n [_A]: _DSS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteStackSetCommand\");\nvar se_DeregisterTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeregisterTypeInput(input, context),\n [_A]: _DTe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeregisterTypeCommand\");\nvar se_DescribeAccountLimitsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeAccountLimitsInput(input, context),\n [_A]: _DAL,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeAccountLimitsCommand\");\nvar se_DescribeChangeSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeChangeSetInput(input, context),\n [_A]: _DCSe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeChangeSetCommand\");\nvar se_DescribeChangeSetHooksCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeChangeSetHooksInput(input, context),\n [_A]: _DCSH,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeChangeSetHooksCommand\");\nvar se_DescribeGeneratedTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeGeneratedTemplateInput(input, context),\n [_A]: _DGTe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeGeneratedTemplateCommand\");\nvar se_DescribeOrganizationsAccessCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeOrganizationsAccessInput(input, context),\n [_A]: _DOAe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeOrganizationsAccessCommand\");\nvar se_DescribePublisherCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribePublisherInput(input, context),\n [_A]: _DP,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribePublisherCommand\");\nvar se_DescribeResourceScanCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeResourceScanInput(input, context),\n [_A]: _DRS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeResourceScanCommand\");\nvar se_DescribeStackDriftDetectionStatusCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackDriftDetectionStatusInput(input, context),\n [_A]: _DSDDS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackDriftDetectionStatusCommand\");\nvar se_DescribeStackEventsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackEventsInput(input, context),\n [_A]: _DSE,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackEventsCommand\");\nvar se_DescribeStackInstanceCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackInstanceInput(input, context),\n [_A]: _DSIe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackInstanceCommand\");\nvar se_DescribeStackResourceCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackResourceInput(input, context),\n [_A]: _DSR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackResourceCommand\");\nvar se_DescribeStackResourceDriftsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackResourceDriftsInput(input, context),\n [_A]: _DSRD,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackResourceDriftsCommand\");\nvar se_DescribeStackResourcesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackResourcesInput(input, context),\n [_A]: _DSRe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackResourcesCommand\");\nvar se_DescribeStacksCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStacksInput(input, context),\n [_A]: _DSe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStacksCommand\");\nvar se_DescribeStackSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackSetInput(input, context),\n [_A]: _DSSe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackSetCommand\");\nvar se_DescribeStackSetOperationCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackSetOperationInput(input, context),\n [_A]: _DSSO,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackSetOperationCommand\");\nvar se_DescribeTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeTypeInput(input, context),\n [_A]: _DTes,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeTypeCommand\");\nvar se_DescribeTypeRegistrationCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeTypeRegistrationInput(input, context),\n [_A]: _DTR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeTypeRegistrationCommand\");\nvar se_DetectStackDriftCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DetectStackDriftInput(input, context),\n [_A]: _DSD,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DetectStackDriftCommand\");\nvar se_DetectStackResourceDriftCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DetectStackResourceDriftInput(input, context),\n [_A]: _DSRDe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DetectStackResourceDriftCommand\");\nvar se_DetectStackSetDriftCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DetectStackSetDriftInput(input, context),\n [_A]: _DSSD,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DetectStackSetDriftCommand\");\nvar se_EstimateTemplateCostCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_EstimateTemplateCostInput(input, context),\n [_A]: _ETC,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_EstimateTemplateCostCommand\");\nvar se_ExecuteChangeSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ExecuteChangeSetInput(input, context),\n [_A]: _ECS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ExecuteChangeSetCommand\");\nvar se_GetGeneratedTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetGeneratedTemplateInput(input, context),\n [_A]: _GGT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetGeneratedTemplateCommand\");\nvar se_GetStackPolicyCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetStackPolicyInput(input, context),\n [_A]: _GSP,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetStackPolicyCommand\");\nvar se_GetTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetTemplateInput(input, context),\n [_A]: _GT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetTemplateCommand\");\nvar se_GetTemplateSummaryCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetTemplateSummaryInput(input, context),\n [_A]: _GTS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetTemplateSummaryCommand\");\nvar se_ImportStacksToStackSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ImportStacksToStackSetInput(input, context),\n [_A]: _ISTSS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ImportStacksToStackSetCommand\");\nvar se_ListChangeSetsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListChangeSetsInput(input, context),\n [_A]: _LCS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListChangeSetsCommand\");\nvar se_ListExportsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListExportsInput(input, context),\n [_A]: _LE,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListExportsCommand\");\nvar se_ListGeneratedTemplatesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListGeneratedTemplatesInput(input, context),\n [_A]: _LGT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListGeneratedTemplatesCommand\");\nvar se_ListImportsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListImportsInput(input, context),\n [_A]: _LI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListImportsCommand\");\nvar se_ListResourceScanRelatedResourcesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListResourceScanRelatedResourcesInput(input, context),\n [_A]: _LRSRR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListResourceScanRelatedResourcesCommand\");\nvar se_ListResourceScanResourcesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListResourceScanResourcesInput(input, context),\n [_A]: _LRSR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListResourceScanResourcesCommand\");\nvar se_ListResourceScansCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListResourceScansInput(input, context),\n [_A]: _LRS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListResourceScansCommand\");\nvar se_ListStackInstanceResourceDriftsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackInstanceResourceDriftsInput(input, context),\n [_A]: _LSIRD,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackInstanceResourceDriftsCommand\");\nvar se_ListStackInstancesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackInstancesInput(input, context),\n [_A]: _LSI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackInstancesCommand\");\nvar se_ListStackResourcesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackResourcesInput(input, context),\n [_A]: _LSR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackResourcesCommand\");\nvar se_ListStacksCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStacksInput(input, context),\n [_A]: _LS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStacksCommand\");\nvar se_ListStackSetAutoDeploymentTargetsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackSetAutoDeploymentTargetsInput(input, context),\n [_A]: _LSSADT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackSetAutoDeploymentTargetsCommand\");\nvar se_ListStackSetOperationResultsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackSetOperationResultsInput(input, context),\n [_A]: _LSSOR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackSetOperationResultsCommand\");\nvar se_ListStackSetOperationsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackSetOperationsInput(input, context),\n [_A]: _LSSO,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackSetOperationsCommand\");\nvar se_ListStackSetsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackSetsInput(input, context),\n [_A]: _LSS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackSetsCommand\");\nvar se_ListTypeRegistrationsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListTypeRegistrationsInput(input, context),\n [_A]: _LTR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListTypeRegistrationsCommand\");\nvar se_ListTypesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListTypesInput(input, context),\n [_A]: _LT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListTypesCommand\");\nvar se_ListTypeVersionsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListTypeVersionsInput(input, context),\n [_A]: _LTV,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListTypeVersionsCommand\");\nvar se_PublishTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_PublishTypeInput(input, context),\n [_A]: _PT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_PublishTypeCommand\");\nvar se_RecordHandlerProgressCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_RecordHandlerProgressInput(input, context),\n [_A]: _RHP,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_RecordHandlerProgressCommand\");\nvar se_RegisterPublisherCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_RegisterPublisherInput(input, context),\n [_A]: _RP,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_RegisterPublisherCommand\");\nvar se_RegisterTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_RegisterTypeInput(input, context),\n [_A]: _RT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_RegisterTypeCommand\");\nvar se_RollbackStackCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_RollbackStackInput(input, context),\n [_A]: _RS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_RollbackStackCommand\");\nvar se_SetStackPolicyCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_SetStackPolicyInput(input, context),\n [_A]: _SSP,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_SetStackPolicyCommand\");\nvar se_SetTypeConfigurationCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_SetTypeConfigurationInput(input, context),\n [_A]: _STC,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_SetTypeConfigurationCommand\");\nvar se_SetTypeDefaultVersionCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_SetTypeDefaultVersionInput(input, context),\n [_A]: _STDV,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_SetTypeDefaultVersionCommand\");\nvar se_SignalResourceCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_SignalResourceInput(input, context),\n [_A]: _SR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_SignalResourceCommand\");\nvar se_StartResourceScanCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_StartResourceScanInput(input, context),\n [_A]: _SRS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_StartResourceScanCommand\");\nvar se_StopStackSetOperationCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_StopStackSetOperationInput(input, context),\n [_A]: _SSSO,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_StopStackSetOperationCommand\");\nvar se_TestTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_TestTypeInput(input, context),\n [_A]: _TT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_TestTypeCommand\");\nvar se_UpdateGeneratedTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_UpdateGeneratedTemplateInput(input, context),\n [_A]: _UGT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UpdateGeneratedTemplateCommand\");\nvar se_UpdateStackCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_UpdateStackInput(input, context),\n [_A]: _US,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UpdateStackCommand\");\nvar se_UpdateStackInstancesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_UpdateStackInstancesInput(input, context),\n [_A]: _USI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UpdateStackInstancesCommand\");\nvar se_UpdateStackSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_UpdateStackSetInput(input, context),\n [_A]: _USS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UpdateStackSetCommand\");\nvar se_UpdateTerminationProtectionCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_UpdateTerminationProtectionInput(input, context),\n [_A]: _UTP,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UpdateTerminationProtectionCommand\");\nvar se_ValidateTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ValidateTemplateInput(input, context),\n [_A]: _VT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ValidateTemplateCommand\");\nvar de_ActivateOrganizationsAccessCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ActivateOrganizationsAccessOutput(data.ActivateOrganizationsAccessResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ActivateOrganizationsAccessCommand\");\nvar de_ActivateTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ActivateTypeOutput(data.ActivateTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ActivateTypeCommand\");\nvar de_BatchDescribeTypeConfigurationsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_BatchDescribeTypeConfigurationsOutput(data.BatchDescribeTypeConfigurationsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_BatchDescribeTypeConfigurationsCommand\");\nvar de_CancelUpdateStackCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_CancelUpdateStackCommand\");\nvar de_ContinueUpdateRollbackCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ContinueUpdateRollbackOutput(data.ContinueUpdateRollbackResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ContinueUpdateRollbackCommand\");\nvar de_CreateChangeSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_CreateChangeSetOutput(data.CreateChangeSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_CreateChangeSetCommand\");\nvar de_CreateGeneratedTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_CreateGeneratedTemplateOutput(data.CreateGeneratedTemplateResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_CreateGeneratedTemplateCommand\");\nvar de_CreateStackCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_CreateStackOutput(data.CreateStackResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_CreateStackCommand\");\nvar de_CreateStackInstancesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_CreateStackInstancesOutput(data.CreateStackInstancesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_CreateStackInstancesCommand\");\nvar de_CreateStackSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_CreateStackSetOutput(data.CreateStackSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_CreateStackSetCommand\");\nvar de_DeactivateOrganizationsAccessCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DeactivateOrganizationsAccessOutput(data.DeactivateOrganizationsAccessResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeactivateOrganizationsAccessCommand\");\nvar de_DeactivateTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DeactivateTypeOutput(data.DeactivateTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeactivateTypeCommand\");\nvar de_DeleteChangeSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DeleteChangeSetOutput(data.DeleteChangeSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeleteChangeSetCommand\");\nvar de_DeleteGeneratedTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_DeleteGeneratedTemplateCommand\");\nvar de_DeleteStackCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_DeleteStackCommand\");\nvar de_DeleteStackInstancesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DeleteStackInstancesOutput(data.DeleteStackInstancesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeleteStackInstancesCommand\");\nvar de_DeleteStackSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DeleteStackSetOutput(data.DeleteStackSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeleteStackSetCommand\");\nvar de_DeregisterTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DeregisterTypeOutput(data.DeregisterTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeregisterTypeCommand\");\nvar de_DescribeAccountLimitsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeAccountLimitsOutput(data.DescribeAccountLimitsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeAccountLimitsCommand\");\nvar de_DescribeChangeSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeChangeSetOutput(data.DescribeChangeSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeChangeSetCommand\");\nvar de_DescribeChangeSetHooksCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeChangeSetHooksOutput(data.DescribeChangeSetHooksResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeChangeSetHooksCommand\");\nvar de_DescribeGeneratedTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeGeneratedTemplateOutput(data.DescribeGeneratedTemplateResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeGeneratedTemplateCommand\");\nvar de_DescribeOrganizationsAccessCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeOrganizationsAccessOutput(data.DescribeOrganizationsAccessResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeOrganizationsAccessCommand\");\nvar de_DescribePublisherCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribePublisherOutput(data.DescribePublisherResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribePublisherCommand\");\nvar de_DescribeResourceScanCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeResourceScanOutput(data.DescribeResourceScanResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeResourceScanCommand\");\nvar de_DescribeStackDriftDetectionStatusCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackDriftDetectionStatusOutput(data.DescribeStackDriftDetectionStatusResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackDriftDetectionStatusCommand\");\nvar de_DescribeStackEventsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackEventsOutput(data.DescribeStackEventsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackEventsCommand\");\nvar de_DescribeStackInstanceCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackInstanceOutput(data.DescribeStackInstanceResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackInstanceCommand\");\nvar de_DescribeStackResourceCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackResourceOutput(data.DescribeStackResourceResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackResourceCommand\");\nvar de_DescribeStackResourceDriftsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackResourceDriftsOutput(data.DescribeStackResourceDriftsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackResourceDriftsCommand\");\nvar de_DescribeStackResourcesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackResourcesOutput(data.DescribeStackResourcesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackResourcesCommand\");\nvar de_DescribeStacksCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStacksOutput(data.DescribeStacksResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStacksCommand\");\nvar de_DescribeStackSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackSetOutput(data.DescribeStackSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackSetCommand\");\nvar de_DescribeStackSetOperationCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackSetOperationOutput(data.DescribeStackSetOperationResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackSetOperationCommand\");\nvar de_DescribeTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeTypeOutput(data.DescribeTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeTypeCommand\");\nvar de_DescribeTypeRegistrationCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeTypeRegistrationOutput(data.DescribeTypeRegistrationResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeTypeRegistrationCommand\");\nvar de_DetectStackDriftCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DetectStackDriftOutput(data.DetectStackDriftResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DetectStackDriftCommand\");\nvar de_DetectStackResourceDriftCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DetectStackResourceDriftOutput(data.DetectStackResourceDriftResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DetectStackResourceDriftCommand\");\nvar de_DetectStackSetDriftCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DetectStackSetDriftOutput(data.DetectStackSetDriftResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DetectStackSetDriftCommand\");\nvar de_EstimateTemplateCostCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_EstimateTemplateCostOutput(data.EstimateTemplateCostResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_EstimateTemplateCostCommand\");\nvar de_ExecuteChangeSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ExecuteChangeSetOutput(data.ExecuteChangeSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ExecuteChangeSetCommand\");\nvar de_GetGeneratedTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetGeneratedTemplateOutput(data.GetGeneratedTemplateResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetGeneratedTemplateCommand\");\nvar de_GetStackPolicyCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetStackPolicyOutput(data.GetStackPolicyResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetStackPolicyCommand\");\nvar de_GetTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetTemplateOutput(data.GetTemplateResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetTemplateCommand\");\nvar de_GetTemplateSummaryCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetTemplateSummaryOutput(data.GetTemplateSummaryResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetTemplateSummaryCommand\");\nvar de_ImportStacksToStackSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ImportStacksToStackSetOutput(data.ImportStacksToStackSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ImportStacksToStackSetCommand\");\nvar de_ListChangeSetsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListChangeSetsOutput(data.ListChangeSetsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListChangeSetsCommand\");\nvar de_ListExportsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListExportsOutput(data.ListExportsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListExportsCommand\");\nvar de_ListGeneratedTemplatesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListGeneratedTemplatesOutput(data.ListGeneratedTemplatesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListGeneratedTemplatesCommand\");\nvar de_ListImportsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListImportsOutput(data.ListImportsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListImportsCommand\");\nvar de_ListResourceScanRelatedResourcesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListResourceScanRelatedResourcesOutput(data.ListResourceScanRelatedResourcesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListResourceScanRelatedResourcesCommand\");\nvar de_ListResourceScanResourcesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListResourceScanResourcesOutput(data.ListResourceScanResourcesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListResourceScanResourcesCommand\");\nvar de_ListResourceScansCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListResourceScansOutput(data.ListResourceScansResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListResourceScansCommand\");\nvar de_ListStackInstanceResourceDriftsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackInstanceResourceDriftsOutput(data.ListStackInstanceResourceDriftsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackInstanceResourceDriftsCommand\");\nvar de_ListStackInstancesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackInstancesOutput(data.ListStackInstancesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackInstancesCommand\");\nvar de_ListStackResourcesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackResourcesOutput(data.ListStackResourcesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackResourcesCommand\");\nvar de_ListStacksCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStacksOutput(data.ListStacksResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStacksCommand\");\nvar de_ListStackSetAutoDeploymentTargetsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackSetAutoDeploymentTargetsOutput(data.ListStackSetAutoDeploymentTargetsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackSetAutoDeploymentTargetsCommand\");\nvar de_ListStackSetOperationResultsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackSetOperationResultsOutput(data.ListStackSetOperationResultsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackSetOperationResultsCommand\");\nvar de_ListStackSetOperationsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackSetOperationsOutput(data.ListStackSetOperationsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackSetOperationsCommand\");\nvar de_ListStackSetsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackSetsOutput(data.ListStackSetsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackSetsCommand\");\nvar de_ListTypeRegistrationsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListTypeRegistrationsOutput(data.ListTypeRegistrationsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListTypeRegistrationsCommand\");\nvar de_ListTypesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListTypesOutput(data.ListTypesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListTypesCommand\");\nvar de_ListTypeVersionsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListTypeVersionsOutput(data.ListTypeVersionsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListTypeVersionsCommand\");\nvar de_PublishTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_PublishTypeOutput(data.PublishTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_PublishTypeCommand\");\nvar de_RecordHandlerProgressCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_RecordHandlerProgressOutput(data.RecordHandlerProgressResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_RecordHandlerProgressCommand\");\nvar de_RegisterPublisherCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_RegisterPublisherOutput(data.RegisterPublisherResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_RegisterPublisherCommand\");\nvar de_RegisterTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_RegisterTypeOutput(data.RegisterTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_RegisterTypeCommand\");\nvar de_RollbackStackCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_RollbackStackOutput(data.RollbackStackResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_RollbackStackCommand\");\nvar de_SetStackPolicyCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_SetStackPolicyCommand\");\nvar de_SetTypeConfigurationCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_SetTypeConfigurationOutput(data.SetTypeConfigurationResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_SetTypeConfigurationCommand\");\nvar de_SetTypeDefaultVersionCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_SetTypeDefaultVersionOutput(data.SetTypeDefaultVersionResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_SetTypeDefaultVersionCommand\");\nvar de_SignalResourceCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_SignalResourceCommand\");\nvar de_StartResourceScanCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_StartResourceScanOutput(data.StartResourceScanResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_StartResourceScanCommand\");\nvar de_StopStackSetOperationCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_StopStackSetOperationOutput(data.StopStackSetOperationResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_StopStackSetOperationCommand\");\nvar de_TestTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_TestTypeOutput(data.TestTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_TestTypeCommand\");\nvar de_UpdateGeneratedTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_UpdateGeneratedTemplateOutput(data.UpdateGeneratedTemplateResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UpdateGeneratedTemplateCommand\");\nvar de_UpdateStackCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_UpdateStackOutput(data.UpdateStackResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UpdateStackCommand\");\nvar de_UpdateStackInstancesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_UpdateStackInstancesOutput(data.UpdateStackInstancesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UpdateStackInstancesCommand\");\nvar de_UpdateStackSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_UpdateStackSetOutput(data.UpdateStackSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UpdateStackSetCommand\");\nvar de_UpdateTerminationProtectionCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_UpdateTerminationProtectionOutput(data.UpdateTerminationProtectionResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UpdateTerminationProtectionCommand\");\nvar de_ValidateTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ValidateTemplateOutput(data.ValidateTemplateResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ValidateTemplateCommand\");\nvar de_CommandError = /* @__PURE__ */ __name(async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await (0, import_core2.parseXmlErrorBody)(output.body, context)\n };\n const errorCode = loadQueryErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"InvalidOperationException\":\n case \"com.amazonaws.cloudformation#InvalidOperationException\":\n throw await de_InvalidOperationExceptionRes(parsedOutput, context);\n case \"OperationNotFoundException\":\n case \"com.amazonaws.cloudformation#OperationNotFoundException\":\n throw await de_OperationNotFoundExceptionRes(parsedOutput, context);\n case \"CFNRegistryException\":\n case \"com.amazonaws.cloudformation#CFNRegistryException\":\n throw await de_CFNRegistryExceptionRes(parsedOutput, context);\n case \"TypeNotFoundException\":\n case \"com.amazonaws.cloudformation#TypeNotFoundException\":\n throw await de_TypeNotFoundExceptionRes(parsedOutput, context);\n case \"TypeConfigurationNotFoundException\":\n case \"com.amazonaws.cloudformation#TypeConfigurationNotFoundException\":\n throw await de_TypeConfigurationNotFoundExceptionRes(parsedOutput, context);\n case \"TokenAlreadyExistsException\":\n case \"com.amazonaws.cloudformation#TokenAlreadyExistsException\":\n throw await de_TokenAlreadyExistsExceptionRes(parsedOutput, context);\n case \"AlreadyExistsException\":\n case \"com.amazonaws.cloudformation#AlreadyExistsException\":\n throw await de_AlreadyExistsExceptionRes(parsedOutput, context);\n case \"InsufficientCapabilitiesException\":\n case \"com.amazonaws.cloudformation#InsufficientCapabilitiesException\":\n throw await de_InsufficientCapabilitiesExceptionRes(parsedOutput, context);\n case \"LimitExceededException\":\n case \"com.amazonaws.cloudformation#LimitExceededException\":\n throw await de_LimitExceededExceptionRes(parsedOutput, context);\n case \"ConcurrentResourcesLimitExceeded\":\n case \"com.amazonaws.cloudformation#ConcurrentResourcesLimitExceededException\":\n throw await de_ConcurrentResourcesLimitExceededExceptionRes(parsedOutput, context);\n case \"OperationIdAlreadyExistsException\":\n case \"com.amazonaws.cloudformation#OperationIdAlreadyExistsException\":\n throw await de_OperationIdAlreadyExistsExceptionRes(parsedOutput, context);\n case \"OperationInProgressException\":\n case \"com.amazonaws.cloudformation#OperationInProgressException\":\n throw await de_OperationInProgressExceptionRes(parsedOutput, context);\n case \"StackSetNotFoundException\":\n case \"com.amazonaws.cloudformation#StackSetNotFoundException\":\n throw await de_StackSetNotFoundExceptionRes(parsedOutput, context);\n case \"StaleRequestException\":\n case \"com.amazonaws.cloudformation#StaleRequestException\":\n throw await de_StaleRequestExceptionRes(parsedOutput, context);\n case \"CreatedButModifiedException\":\n case \"com.amazonaws.cloudformation#CreatedButModifiedException\":\n throw await de_CreatedButModifiedExceptionRes(parsedOutput, context);\n case \"NameAlreadyExistsException\":\n case \"com.amazonaws.cloudformation#NameAlreadyExistsException\":\n throw await de_NameAlreadyExistsExceptionRes(parsedOutput, context);\n case \"InvalidChangeSetStatus\":\n case \"com.amazonaws.cloudformation#InvalidChangeSetStatusException\":\n throw await de_InvalidChangeSetStatusExceptionRes(parsedOutput, context);\n case \"GeneratedTemplateNotFound\":\n case \"com.amazonaws.cloudformation#GeneratedTemplateNotFoundException\":\n throw await de_GeneratedTemplateNotFoundExceptionRes(parsedOutput, context);\n case \"StackSetNotEmptyException\":\n case \"com.amazonaws.cloudformation#StackSetNotEmptyException\":\n throw await de_StackSetNotEmptyExceptionRes(parsedOutput, context);\n case \"ChangeSetNotFound\":\n case \"com.amazonaws.cloudformation#ChangeSetNotFoundException\":\n throw await de_ChangeSetNotFoundExceptionRes(parsedOutput, context);\n case \"ResourceScanNotFound\":\n case \"com.amazonaws.cloudformation#ResourceScanNotFoundException\":\n throw await de_ResourceScanNotFoundExceptionRes(parsedOutput, context);\n case \"StackInstanceNotFoundException\":\n case \"com.amazonaws.cloudformation#StackInstanceNotFoundException\":\n throw await de_StackInstanceNotFoundExceptionRes(parsedOutput, context);\n case \"StackNotFoundException\":\n case \"com.amazonaws.cloudformation#StackNotFoundException\":\n throw await de_StackNotFoundExceptionRes(parsedOutput, context);\n case \"ResourceScanInProgress\":\n case \"com.amazonaws.cloudformation#ResourceScanInProgressException\":\n throw await de_ResourceScanInProgressExceptionRes(parsedOutput, context);\n case \"ConditionalCheckFailed\":\n case \"com.amazonaws.cloudformation#OperationStatusCheckFailedException\":\n throw await de_OperationStatusCheckFailedExceptionRes(parsedOutput, context);\n case \"InvalidStateTransition\":\n case \"com.amazonaws.cloudformation#InvalidStateTransitionException\":\n throw await de_InvalidStateTransitionExceptionRes(parsedOutput, context);\n case \"ResourceScanLimitExceeded\":\n case \"com.amazonaws.cloudformation#ResourceScanLimitExceededException\":\n throw await de_ResourceScanLimitExceededExceptionRes(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n return throwDefaultError({\n output,\n parsedBody: parsedBody.Error,\n errorCode\n });\n }\n}, \"de_CommandError\");\nvar de_AlreadyExistsExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_AlreadyExistsException(body.Error, context);\n const exception = new AlreadyExistsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_AlreadyExistsExceptionRes\");\nvar de_CFNRegistryExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_CFNRegistryException(body.Error, context);\n const exception = new CFNRegistryException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_CFNRegistryExceptionRes\");\nvar de_ChangeSetNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_ChangeSetNotFoundException(body.Error, context);\n const exception = new ChangeSetNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ChangeSetNotFoundExceptionRes\");\nvar de_ConcurrentResourcesLimitExceededExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_ConcurrentResourcesLimitExceededException(body.Error, context);\n const exception = new ConcurrentResourcesLimitExceededException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ConcurrentResourcesLimitExceededExceptionRes\");\nvar de_CreatedButModifiedExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_CreatedButModifiedException(body.Error, context);\n const exception = new CreatedButModifiedException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_CreatedButModifiedExceptionRes\");\nvar de_GeneratedTemplateNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_GeneratedTemplateNotFoundException(body.Error, context);\n const exception = new GeneratedTemplateNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_GeneratedTemplateNotFoundExceptionRes\");\nvar de_InsufficientCapabilitiesExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_InsufficientCapabilitiesException(body.Error, context);\n const exception = new InsufficientCapabilitiesException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InsufficientCapabilitiesExceptionRes\");\nvar de_InvalidChangeSetStatusExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_InvalidChangeSetStatusException(body.Error, context);\n const exception = new InvalidChangeSetStatusException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidChangeSetStatusExceptionRes\");\nvar de_InvalidOperationExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_InvalidOperationException(body.Error, context);\n const exception = new InvalidOperationException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidOperationExceptionRes\");\nvar de_InvalidStateTransitionExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_InvalidStateTransitionException(body.Error, context);\n const exception = new InvalidStateTransitionException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidStateTransitionExceptionRes\");\nvar de_LimitExceededExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_LimitExceededException(body.Error, context);\n const exception = new LimitExceededException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_LimitExceededExceptionRes\");\nvar de_NameAlreadyExistsExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_NameAlreadyExistsException(body.Error, context);\n const exception = new NameAlreadyExistsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_NameAlreadyExistsExceptionRes\");\nvar de_OperationIdAlreadyExistsExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_OperationIdAlreadyExistsException(body.Error, context);\n const exception = new OperationIdAlreadyExistsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_OperationIdAlreadyExistsExceptionRes\");\nvar de_OperationInProgressExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_OperationInProgressException(body.Error, context);\n const exception = new OperationInProgressException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_OperationInProgressExceptionRes\");\nvar de_OperationNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_OperationNotFoundException(body.Error, context);\n const exception = new OperationNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_OperationNotFoundExceptionRes\");\nvar de_OperationStatusCheckFailedExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_OperationStatusCheckFailedException(body.Error, context);\n const exception = new OperationStatusCheckFailedException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_OperationStatusCheckFailedExceptionRes\");\nvar de_ResourceScanInProgressExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_ResourceScanInProgressException(body.Error, context);\n const exception = new ResourceScanInProgressException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ResourceScanInProgressExceptionRes\");\nvar de_ResourceScanLimitExceededExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_ResourceScanLimitExceededException(body.Error, context);\n const exception = new ResourceScanLimitExceededException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ResourceScanLimitExceededExceptionRes\");\nvar de_ResourceScanNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_ResourceScanNotFoundException(body.Error, context);\n const exception = new ResourceScanNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ResourceScanNotFoundExceptionRes\");\nvar de_StackInstanceNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_StackInstanceNotFoundException(body.Error, context);\n const exception = new StackInstanceNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_StackInstanceNotFoundExceptionRes\");\nvar de_StackNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_StackNotFoundException(body.Error, context);\n const exception = new StackNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_StackNotFoundExceptionRes\");\nvar de_StackSetNotEmptyExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_StackSetNotEmptyException(body.Error, context);\n const exception = new StackSetNotEmptyException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_StackSetNotEmptyExceptionRes\");\nvar de_StackSetNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_StackSetNotFoundException(body.Error, context);\n const exception = new StackSetNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_StackSetNotFoundExceptionRes\");\nvar de_StaleRequestExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_StaleRequestException(body.Error, context);\n const exception = new StaleRequestException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_StaleRequestExceptionRes\");\nvar de_TokenAlreadyExistsExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_TokenAlreadyExistsException(body.Error, context);\n const exception = new TokenAlreadyExistsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_TokenAlreadyExistsExceptionRes\");\nvar de_TypeConfigurationNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_TypeConfigurationNotFoundException(body.Error, context);\n const exception = new TypeConfigurationNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_TypeConfigurationNotFoundExceptionRes\");\nvar de_TypeNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_TypeNotFoundException(body.Error, context);\n const exception = new TypeNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_TypeNotFoundExceptionRes\");\nvar se_AccountList = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_AccountList\");\nvar se_ActivateOrganizationsAccessInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n return entries;\n}, \"se_ActivateOrganizationsAccessInput\");\nvar se_ActivateTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_PTA] != null) {\n entries[_PTA] = input[_PTA];\n }\n if (input[_PI] != null) {\n entries[_PI] = input[_PI];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_TNA] != null) {\n entries[_TNA] = input[_TNA];\n }\n if (input[_AU] != null) {\n entries[_AU] = input[_AU];\n }\n if (input[_LC] != null) {\n const memberEntries = se_LoggingConfig(input[_LC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `LoggingConfig.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_ERA] != null) {\n entries[_ERA] = input[_ERA];\n }\n if (input[_VB] != null) {\n entries[_VB] = input[_VB];\n }\n if (input[_MV] != null) {\n entries[_MV] = input[_MV];\n }\n return entries;\n}, \"se_ActivateTypeInput\");\nvar se_AutoDeployment = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_E] != null) {\n entries[_E] = input[_E];\n }\n if (input[_RSOAR] != null) {\n entries[_RSOAR] = input[_RSOAR];\n }\n return entries;\n}, \"se_AutoDeployment\");\nvar se_BatchDescribeTypeConfigurationsInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_TCI] != null) {\n const memberEntries = se_TypeConfigurationIdentifiers(input[_TCI], context);\n if (((_a = input[_TCI]) == null ? void 0 : _a.length) === 0) {\n entries.TypeConfigurationIdentifiers = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `TypeConfigurationIdentifiers.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_BatchDescribeTypeConfigurationsInput\");\nvar se_CancelUpdateStackInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n return entries;\n}, \"se_CancelUpdateStackInput\");\nvar se_Capabilities = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_Capabilities\");\nvar se_ContinueUpdateRollbackInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_RARN] != null) {\n entries[_RARN] = input[_RARN];\n }\n if (input[_RTS] != null) {\n const memberEntries = se_ResourcesToSkip(input[_RTS], context);\n if (((_a = input[_RTS]) == null ? void 0 : _a.length) === 0) {\n entries.ResourcesToSkip = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourcesToSkip.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n return entries;\n}, \"se_ContinueUpdateRollbackInput\");\nvar se_CreateChangeSetInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c, _d, _e2, _f;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_UPT] != null) {\n entries[_UPT] = input[_UPT];\n }\n if (input[_P] != null) {\n const memberEntries = se_Parameters(input[_P], context);\n if (((_a = input[_P]) == null ? void 0 : _a.length) === 0) {\n entries.Parameters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Parameters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_C] != null) {\n const memberEntries = se_Capabilities(input[_C], context);\n if (((_b = input[_C]) == null ? void 0 : _b.length) === 0) {\n entries.Capabilities = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Capabilities.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RTe] != null) {\n const memberEntries = se_ResourceTypes(input[_RTe], context);\n if (((_c = input[_RTe]) == null ? void 0 : _c.length) === 0) {\n entries.ResourceTypes = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourceTypes.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RARN] != null) {\n entries[_RARN] = input[_RARN];\n }\n if (input[_RC] != null) {\n const memberEntries = se_RollbackConfiguration(input[_RC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RollbackConfiguration.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_NARN] != null) {\n const memberEntries = se_NotificationARNs(input[_NARN], context);\n if (((_d = input[_NARN]) == null ? void 0 : _d.length) === 0) {\n entries.NotificationARNs = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `NotificationARNs.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Ta] != null) {\n const memberEntries = se_Tags(input[_Ta], context);\n if (((_e2 = input[_Ta]) == null ? void 0 : _e2.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_CSN] != null) {\n entries[_CSN] = input[_CSN];\n }\n if (input[_CT] != null) {\n entries[_CT] = input[_CT];\n }\n if (input[_D] != null) {\n entries[_D] = input[_D];\n }\n if (input[_CST] != null) {\n entries[_CST] = input[_CST];\n }\n if (input[_RTI] != null) {\n const memberEntries = se_ResourcesToImport(input[_RTI], context);\n if (((_f = input[_RTI]) == null ? void 0 : _f.length) === 0) {\n entries.ResourcesToImport = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourcesToImport.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_INS] != null) {\n entries[_INS] = input[_INS];\n }\n if (input[_OSF] != null) {\n entries[_OSF] = input[_OSF];\n }\n if (input[_IER] != null) {\n entries[_IER] = input[_IER];\n }\n return entries;\n}, \"se_CreateChangeSetInput\");\nvar se_CreateGeneratedTemplateInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_R] != null) {\n const memberEntries = se_ResourceDefinitions(input[_R], context);\n if (((_a = input[_R]) == null ? void 0 : _a.length) === 0) {\n entries.Resources = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Resources.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_GTN] != null) {\n entries[_GTN] = input[_GTN];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_TC] != null) {\n const memberEntries = se_TemplateConfiguration(input[_TC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `TemplateConfiguration.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_CreateGeneratedTemplateInput\");\nvar se_CreateStackInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c, _d, _e2;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_P] != null) {\n const memberEntries = se_Parameters(input[_P], context);\n if (((_a = input[_P]) == null ? void 0 : _a.length) === 0) {\n entries.Parameters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Parameters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_DR] != null) {\n entries[_DR] = input[_DR];\n }\n if (input[_RC] != null) {\n const memberEntries = se_RollbackConfiguration(input[_RC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RollbackConfiguration.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_TIM] != null) {\n entries[_TIM] = input[_TIM];\n }\n if (input[_NARN] != null) {\n const memberEntries = se_NotificationARNs(input[_NARN], context);\n if (((_b = input[_NARN]) == null ? void 0 : _b.length) === 0) {\n entries.NotificationARNs = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `NotificationARNs.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_C] != null) {\n const memberEntries = se_Capabilities(input[_C], context);\n if (((_c = input[_C]) == null ? void 0 : _c.length) === 0) {\n entries.Capabilities = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Capabilities.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RTe] != null) {\n const memberEntries = se_ResourceTypes(input[_RTe], context);\n if (((_d = input[_RTe]) == null ? void 0 : _d.length) === 0) {\n entries.ResourceTypes = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourceTypes.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RARN] != null) {\n entries[_RARN] = input[_RARN];\n }\n if (input[_OF] != null) {\n entries[_OF] = input[_OF];\n }\n if (input[_SPB] != null) {\n entries[_SPB] = input[_SPB];\n }\n if (input[_SPURL] != null) {\n entries[_SPURL] = input[_SPURL];\n }\n if (input[_Ta] != null) {\n const memberEntries = se_Tags(input[_Ta], context);\n if (((_e2 = input[_Ta]) == null ? void 0 : _e2.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n if (input[_ETP] != null) {\n entries[_ETP] = input[_ETP];\n }\n if (input[_REOC] != null) {\n entries[_REOC] = input[_REOC];\n }\n return entries;\n}, \"se_CreateStackInput\");\nvar se_CreateStackInstancesInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_Ac] != null) {\n const memberEntries = se_AccountList(input[_Ac], context);\n if (((_a = input[_Ac]) == null ? void 0 : _a.length) === 0) {\n entries.Accounts = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Accounts.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_DTep] != null) {\n const memberEntries = se_DeploymentTargets(input[_DTep], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `DeploymentTargets.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Re] != null) {\n const memberEntries = se_RegionList(input[_Re], context);\n if (((_b = input[_Re]) == null ? void 0 : _b.length) === 0) {\n entries.Regions = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Regions.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_PO] != null) {\n const memberEntries = se_Parameters(input[_PO], context);\n if (((_c = input[_PO]) == null ? void 0 : _c.length) === 0) {\n entries.ParameterOverrides = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ParameterOverrides.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OP] != null) {\n const memberEntries = se_StackSetOperationPreferences(input[_OP], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OperationPreferences.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OI] === void 0) {\n input[_OI] = (0, import_uuid.v4)();\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_CreateStackInstancesInput\");\nvar se_CreateStackSetInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_D] != null) {\n entries[_D] = input[_D];\n }\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_SI] != null) {\n entries[_SI] = input[_SI];\n }\n if (input[_P] != null) {\n const memberEntries = se_Parameters(input[_P], context);\n if (((_a = input[_P]) == null ? void 0 : _a.length) === 0) {\n entries.Parameters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Parameters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_C] != null) {\n const memberEntries = se_Capabilities(input[_C], context);\n if (((_b = input[_C]) == null ? void 0 : _b.length) === 0) {\n entries.Capabilities = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Capabilities.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Ta] != null) {\n const memberEntries = se_Tags(input[_Ta], context);\n if (((_c = input[_Ta]) == null ? void 0 : _c.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_ARARN] != null) {\n entries[_ARARN] = input[_ARARN];\n }\n if (input[_ERN] != null) {\n entries[_ERN] = input[_ERN];\n }\n if (input[_PM] != null) {\n entries[_PM] = input[_PM];\n }\n if (input[_AD] != null) {\n const memberEntries = se_AutoDeployment(input[_AD], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `AutoDeployment.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n if (input[_CRT] === void 0) {\n input[_CRT] = (0, import_uuid.v4)();\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n if (input[_ME] != null) {\n const memberEntries = se_ManagedExecution(input[_ME], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ManagedExecution.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_CreateStackSetInput\");\nvar se_DeactivateOrganizationsAccessInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n return entries;\n}, \"se_DeactivateOrganizationsAccessInput\");\nvar se_DeactivateTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n return entries;\n}, \"se_DeactivateTypeInput\");\nvar se_DeleteChangeSetInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_CSN] != null) {\n entries[_CSN] = input[_CSN];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n return entries;\n}, \"se_DeleteChangeSetInput\");\nvar se_DeleteGeneratedTemplateInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_GTN] != null) {\n entries[_GTN] = input[_GTN];\n }\n return entries;\n}, \"se_DeleteGeneratedTemplateInput\");\nvar se_DeleteStackInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_RR] != null) {\n const memberEntries = se_RetainResources(input[_RR], context);\n if (((_a = input[_RR]) == null ? void 0 : _a.length) === 0) {\n entries.RetainResources = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RetainResources.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RARN] != null) {\n entries[_RARN] = input[_RARN];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n return entries;\n}, \"se_DeleteStackInput\");\nvar se_DeleteStackInstancesInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_Ac] != null) {\n const memberEntries = se_AccountList(input[_Ac], context);\n if (((_a = input[_Ac]) == null ? void 0 : _a.length) === 0) {\n entries.Accounts = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Accounts.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_DTep] != null) {\n const memberEntries = se_DeploymentTargets(input[_DTep], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `DeploymentTargets.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Re] != null) {\n const memberEntries = se_RegionList(input[_Re], context);\n if (((_b = input[_Re]) == null ? void 0 : _b.length) === 0) {\n entries.Regions = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Regions.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OP] != null) {\n const memberEntries = se_StackSetOperationPreferences(input[_OP], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OperationPreferences.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RSe] != null) {\n entries[_RSe] = input[_RSe];\n }\n if (input[_OI] === void 0) {\n input[_OI] = (0, import_uuid.v4)();\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DeleteStackInstancesInput\");\nvar se_DeleteStackSetInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DeleteStackSetInput\");\nvar se_DeploymentTargets = /* @__PURE__ */ __name((input, context) => {\n var _a, _b;\n const entries = {};\n if (input[_Ac] != null) {\n const memberEntries = se_AccountList(input[_Ac], context);\n if (((_a = input[_Ac]) == null ? void 0 : _a.length) === 0) {\n entries.Accounts = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Accounts.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_AUc] != null) {\n entries[_AUc] = input[_AUc];\n }\n if (input[_OUI] != null) {\n const memberEntries = se_OrganizationalUnitIdList(input[_OUI], context);\n if (((_b = input[_OUI]) == null ? void 0 : _b.length) === 0) {\n entries.OrganizationalUnitIds = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OrganizationalUnitIds.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_AFT] != null) {\n entries[_AFT] = input[_AFT];\n }\n return entries;\n}, \"se_DeploymentTargets\");\nvar se_DeregisterTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_VI] != null) {\n entries[_VI] = input[_VI];\n }\n return entries;\n}, \"se_DeregisterTypeInput\");\nvar se_DescribeAccountLimitsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_DescribeAccountLimitsInput\");\nvar se_DescribeChangeSetHooksInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_CSN] != null) {\n entries[_CSN] = input[_CSN];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n return entries;\n}, \"se_DescribeChangeSetHooksInput\");\nvar se_DescribeChangeSetInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_CSN] != null) {\n entries[_CSN] = input[_CSN];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_IPV] != null) {\n entries[_IPV] = input[_IPV];\n }\n return entries;\n}, \"se_DescribeChangeSetInput\");\nvar se_DescribeGeneratedTemplateInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_GTN] != null) {\n entries[_GTN] = input[_GTN];\n }\n return entries;\n}, \"se_DescribeGeneratedTemplateInput\");\nvar se_DescribeOrganizationsAccessInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DescribeOrganizationsAccessInput\");\nvar se_DescribePublisherInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_PI] != null) {\n entries[_PI] = input[_PI];\n }\n return entries;\n}, \"se_DescribePublisherInput\");\nvar se_DescribeResourceScanInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_RSI] != null) {\n entries[_RSI] = input[_RSI];\n }\n return entries;\n}, \"se_DescribeResourceScanInput\");\nvar se_DescribeStackDriftDetectionStatusInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SDDI] != null) {\n entries[_SDDI] = input[_SDDI];\n }\n return entries;\n}, \"se_DescribeStackDriftDetectionStatusInput\");\nvar se_DescribeStackEventsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_DescribeStackEventsInput\");\nvar se_DescribeStackInstanceInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_SIA] != null) {\n entries[_SIA] = input[_SIA];\n }\n if (input[_SIR] != null) {\n entries[_SIR] = input[_SIR];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DescribeStackInstanceInput\");\nvar se_DescribeStackResourceDriftsInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_SRDSF] != null) {\n const memberEntries = se_StackResourceDriftStatusFilters(input[_SRDSF], context);\n if (((_a = input[_SRDSF]) == null ? void 0 : _a.length) === 0) {\n entries.StackResourceDriftStatusFilters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `StackResourceDriftStatusFilters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n return entries;\n}, \"se_DescribeStackResourceDriftsInput\");\nvar se_DescribeStackResourceInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n return entries;\n}, \"se_DescribeStackResourceInput\");\nvar se_DescribeStackResourcesInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n if (input[_PRI] != null) {\n entries[_PRI] = input[_PRI];\n }\n return entries;\n}, \"se_DescribeStackResourcesInput\");\nvar se_DescribeStackSetInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DescribeStackSetInput\");\nvar se_DescribeStackSetOperationInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DescribeStackSetOperationInput\");\nvar se_DescribeStacksInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_DescribeStacksInput\");\nvar se_DescribeTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_VI] != null) {\n entries[_VI] = input[_VI];\n }\n if (input[_PI] != null) {\n entries[_PI] = input[_PI];\n }\n if (input[_PVN] != null) {\n entries[_PVN] = input[_PVN];\n }\n return entries;\n}, \"se_DescribeTypeInput\");\nvar se_DescribeTypeRegistrationInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_RTeg] != null) {\n entries[_RTeg] = input[_RTeg];\n }\n return entries;\n}, \"se_DescribeTypeRegistrationInput\");\nvar se_DetectStackDriftInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_LRIo] != null) {\n const memberEntries = se_LogicalResourceIds(input[_LRIo], context);\n if (((_a = input[_LRIo]) == null ? void 0 : _a.length) === 0) {\n entries.LogicalResourceIds = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `LogicalResourceIds.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_DetectStackDriftInput\");\nvar se_DetectStackResourceDriftInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n return entries;\n}, \"se_DetectStackResourceDriftInput\");\nvar se_DetectStackSetDriftInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_OP] != null) {\n const memberEntries = se_StackSetOperationPreferences(input[_OP], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OperationPreferences.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OI] === void 0) {\n input[_OI] = (0, import_uuid.v4)();\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DetectStackSetDriftInput\");\nvar se_EstimateTemplateCostInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_P] != null) {\n const memberEntries = se_Parameters(input[_P], context);\n if (((_a = input[_P]) == null ? void 0 : _a.length) === 0) {\n entries.Parameters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Parameters.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_EstimateTemplateCostInput\");\nvar se_ExecuteChangeSetInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_CSN] != null) {\n entries[_CSN] = input[_CSN];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n if (input[_DR] != null) {\n entries[_DR] = input[_DR];\n }\n if (input[_REOC] != null) {\n entries[_REOC] = input[_REOC];\n }\n return entries;\n}, \"se_ExecuteChangeSetInput\");\nvar se_GetGeneratedTemplateInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_F] != null) {\n entries[_F] = input[_F];\n }\n if (input[_GTN] != null) {\n entries[_GTN] = input[_GTN];\n }\n return entries;\n}, \"se_GetGeneratedTemplateInput\");\nvar se_GetStackPolicyInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n return entries;\n}, \"se_GetStackPolicyInput\");\nvar se_GetTemplateInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_CSN] != null) {\n entries[_CSN] = input[_CSN];\n }\n if (input[_TS] != null) {\n entries[_TS] = input[_TS];\n }\n return entries;\n}, \"se_GetTemplateInput\");\nvar se_GetTemplateSummaryInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n if (input[_TSC] != null) {\n const memberEntries = se_TemplateSummaryConfig(input[_TSC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `TemplateSummaryConfig.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_GetTemplateSummaryInput\");\nvar se_ImportStacksToStackSetInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_SIt] != null) {\n const memberEntries = se_StackIdList(input[_SIt], context);\n if (((_a = input[_SIt]) == null ? void 0 : _a.length) === 0) {\n entries.StackIds = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `StackIds.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_SIU] != null) {\n entries[_SIU] = input[_SIU];\n }\n if (input[_OUI] != null) {\n const memberEntries = se_OrganizationalUnitIdList(input[_OUI], context);\n if (((_b = input[_OUI]) == null ? void 0 : _b.length) === 0) {\n entries.OrganizationalUnitIds = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OrganizationalUnitIds.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OP] != null) {\n const memberEntries = se_StackSetOperationPreferences(input[_OP], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OperationPreferences.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OI] === void 0) {\n input[_OI] = (0, import_uuid.v4)();\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ImportStacksToStackSetInput\");\nvar se_JazzLogicalResourceIds = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_JazzLogicalResourceIds\");\nvar se_JazzResourceIdentifierProperties = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n Object.keys(input).filter((key) => input[key] != null).forEach((key) => {\n entries[`entry.${counter}.key`] = key;\n entries[`entry.${counter}.value`] = input[key];\n counter++;\n });\n return entries;\n}, \"se_JazzResourceIdentifierProperties\");\nvar se_ListChangeSetsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_ListChangeSetsInput\");\nvar se_ListExportsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_ListExportsInput\");\nvar se_ListGeneratedTemplatesInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n return entries;\n}, \"se_ListGeneratedTemplatesInput\");\nvar se_ListImportsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_EN] != null) {\n entries[_EN] = input[_EN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_ListImportsInput\");\nvar se_ListResourceScanRelatedResourcesInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_RSI] != null) {\n entries[_RSI] = input[_RSI];\n }\n if (input[_R] != null) {\n const memberEntries = se_ScannedResourceIdentifiers(input[_R], context);\n if (((_a = input[_R]) == null ? void 0 : _a.length) === 0) {\n entries.Resources = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Resources.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n return entries;\n}, \"se_ListResourceScanRelatedResourcesInput\");\nvar se_ListResourceScanResourcesInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_RSI] != null) {\n entries[_RSI] = input[_RSI];\n }\n if (input[_RI] != null) {\n entries[_RI] = input[_RI];\n }\n if (input[_RTP] != null) {\n entries[_RTP] = input[_RTP];\n }\n if (input[_TK] != null) {\n entries[_TK] = input[_TK];\n }\n if (input[_TV] != null) {\n entries[_TV] = input[_TV];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n return entries;\n}, \"se_ListResourceScanResourcesInput\");\nvar se_ListResourceScansInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n return entries;\n}, \"se_ListResourceScansInput\");\nvar se_ListStackInstanceResourceDriftsInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_SIRDS] != null) {\n const memberEntries = se_StackResourceDriftStatusFilters(input[_SIRDS], context);\n if (((_a = input[_SIRDS]) == null ? void 0 : _a.length) === 0) {\n entries.StackInstanceResourceDriftStatuses = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `StackInstanceResourceDriftStatuses.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_SIA] != null) {\n entries[_SIA] = input[_SIA];\n }\n if (input[_SIR] != null) {\n entries[_SIR] = input[_SIR];\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ListStackInstanceResourceDriftsInput\");\nvar se_ListStackInstancesInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_Fi] != null) {\n const memberEntries = se_StackInstanceFilters(input[_Fi], context);\n if (((_a = input[_Fi]) == null ? void 0 : _a.length) === 0) {\n entries.Filters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Filters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_SIA] != null) {\n entries[_SIA] = input[_SIA];\n }\n if (input[_SIR] != null) {\n entries[_SIR] = input[_SIR];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ListStackInstancesInput\");\nvar se_ListStackResourcesInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_ListStackResourcesInput\");\nvar se_ListStackSetAutoDeploymentTargetsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ListStackSetAutoDeploymentTargetsInput\");\nvar se_ListStackSetOperationResultsInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n if (input[_Fi] != null) {\n const memberEntries = se_OperationResultFilters(input[_Fi], context);\n if (((_a = input[_Fi]) == null ? void 0 : _a.length) === 0) {\n entries.Filters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Filters.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_ListStackSetOperationResultsInput\");\nvar se_ListStackSetOperationsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ListStackSetOperationsInput\");\nvar se_ListStackSetsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_S] != null) {\n entries[_S] = input[_S];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ListStackSetsInput\");\nvar se_ListStacksInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_SSF] != null) {\n const memberEntries = se_StackStatusFilter(input[_SSF], context);\n if (((_a = input[_SSF]) == null ? void 0 : _a.length) === 0) {\n entries.StackStatusFilter = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `StackStatusFilter.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_ListStacksInput\");\nvar se_ListTypeRegistrationsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_TA] != null) {\n entries[_TA] = input[_TA];\n }\n if (input[_RSF] != null) {\n entries[_RSF] = input[_RSF];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_ListTypeRegistrationsInput\");\nvar se_ListTypesInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Vi] != null) {\n entries[_Vi] = input[_Vi];\n }\n if (input[_PTr] != null) {\n entries[_PTr] = input[_PTr];\n }\n if (input[_DSep] != null) {\n entries[_DSep] = input[_DSep];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_Fi] != null) {\n const memberEntries = se_TypeFilters(input[_Fi], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Filters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_ListTypesInput\");\nvar se_ListTypeVersionsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_DSep] != null) {\n entries[_DSep] = input[_DSep];\n }\n if (input[_PI] != null) {\n entries[_PI] = input[_PI];\n }\n return entries;\n}, \"se_ListTypeVersionsInput\");\nvar se_LoggingConfig = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_LRA] != null) {\n entries[_LRA] = input[_LRA];\n }\n if (input[_LGN] != null) {\n entries[_LGN] = input[_LGN];\n }\n return entries;\n}, \"se_LoggingConfig\");\nvar se_LogicalResourceIds = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_LogicalResourceIds\");\nvar se_ManagedExecution = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Act] != null) {\n entries[_Act] = input[_Act];\n }\n return entries;\n}, \"se_ManagedExecution\");\nvar se_NotificationARNs = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_NotificationARNs\");\nvar se_OperationResultFilter = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_N] != null) {\n entries[_N] = input[_N];\n }\n if (input[_Va] != null) {\n entries[_Va] = input[_Va];\n }\n return entries;\n}, \"se_OperationResultFilter\");\nvar se_OperationResultFilters = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_OperationResultFilter(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_OperationResultFilters\");\nvar se_OrganizationalUnitIdList = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_OrganizationalUnitIdList\");\nvar se_Parameter = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_PK] != null) {\n entries[_PK] = input[_PK];\n }\n if (input[_PV] != null) {\n entries[_PV] = input[_PV];\n }\n if (input[_UPV] != null) {\n entries[_UPV] = input[_UPV];\n }\n if (input[_RV] != null) {\n entries[_RV] = input[_RV];\n }\n return entries;\n}, \"se_Parameter\");\nvar se_Parameters = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_Parameter(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_Parameters\");\nvar se_PublishTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_PVN] != null) {\n entries[_PVN] = input[_PVN];\n }\n return entries;\n}, \"se_PublishTypeInput\");\nvar se_RecordHandlerProgressInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_BT] != null) {\n entries[_BT] = input[_BT];\n }\n if (input[_OS] != null) {\n entries[_OS] = input[_OS];\n }\n if (input[_COS] != null) {\n entries[_COS] = input[_COS];\n }\n if (input[_SM] != null) {\n entries[_SM] = input[_SM];\n }\n if (input[_EC] != null) {\n entries[_EC] = input[_EC];\n }\n if (input[_RM] != null) {\n entries[_RM] = input[_RM];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n return entries;\n}, \"se_RecordHandlerProgressInput\");\nvar se_RegionList = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_RegionList\");\nvar se_RegisterPublisherInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_ATAC] != null) {\n entries[_ATAC] = input[_ATAC];\n }\n if (input[_CAo] != null) {\n entries[_CAo] = input[_CAo];\n }\n return entries;\n}, \"se_RegisterPublisherInput\");\nvar se_RegisterTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_SHP] != null) {\n entries[_SHP] = input[_SHP];\n }\n if (input[_LC] != null) {\n const memberEntries = se_LoggingConfig(input[_LC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `LoggingConfig.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_ERA] != null) {\n entries[_ERA] = input[_ERA];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n return entries;\n}, \"se_RegisterTypeInput\");\nvar se_ResourceDefinition = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_RTes] != null) {\n entries[_RTes] = input[_RTes];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n if (input[_RI] != null) {\n const memberEntries = se_ResourceIdentifierProperties(input[_RI], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourceIdentifier.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_ResourceDefinition\");\nvar se_ResourceDefinitions = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_ResourceDefinition(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_ResourceDefinitions\");\nvar se_ResourceIdentifierProperties = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n Object.keys(input).filter((key) => input[key] != null).forEach((key) => {\n entries[`entry.${counter}.key`] = key;\n entries[`entry.${counter}.value`] = input[key];\n counter++;\n });\n return entries;\n}, \"se_ResourceIdentifierProperties\");\nvar se_ResourcesToImport = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_ResourceToImport(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_ResourcesToImport\");\nvar se_ResourcesToSkip = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_ResourcesToSkip\");\nvar se_ResourceToImport = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_RTes] != null) {\n entries[_RTes] = input[_RTes];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n if (input[_RI] != null) {\n const memberEntries = se_ResourceIdentifierProperties(input[_RI], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourceIdentifier.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_ResourceToImport\");\nvar se_ResourceTypes = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_ResourceTypes\");\nvar se_RetainResources = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_RetainResources\");\nvar se_RollbackConfiguration = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_RTo] != null) {\n const memberEntries = se_RollbackTriggers(input[_RTo], context);\n if (((_a = input[_RTo]) == null ? void 0 : _a.length) === 0) {\n entries.RollbackTriggers = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RollbackTriggers.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_MTIM] != null) {\n entries[_MTIM] = input[_MTIM];\n }\n return entries;\n}, \"se_RollbackConfiguration\");\nvar se_RollbackStackInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_RARN] != null) {\n entries[_RARN] = input[_RARN];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n if (input[_REOC] != null) {\n entries[_REOC] = input[_REOC];\n }\n return entries;\n}, \"se_RollbackStackInput\");\nvar se_RollbackTrigger = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n return entries;\n}, \"se_RollbackTrigger\");\nvar se_RollbackTriggers = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_RollbackTrigger(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_RollbackTriggers\");\nvar se_ScannedResourceIdentifier = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_RTes] != null) {\n entries[_RTes] = input[_RTes];\n }\n if (input[_RI] != null) {\n const memberEntries = se_JazzResourceIdentifierProperties(input[_RI], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourceIdentifier.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_ScannedResourceIdentifier\");\nvar se_ScannedResourceIdentifiers = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_ScannedResourceIdentifier(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_ScannedResourceIdentifiers\");\nvar se_SetStackPolicyInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_SPB] != null) {\n entries[_SPB] = input[_SPB];\n }\n if (input[_SPURL] != null) {\n entries[_SPURL] = input[_SPURL];\n }\n return entries;\n}, \"se_SetStackPolicyInput\");\nvar se_SetTypeConfigurationInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_TA] != null) {\n entries[_TA] = input[_TA];\n }\n if (input[_Co] != null) {\n entries[_Co] = input[_Co];\n }\n if (input[_CAon] != null) {\n entries[_CAon] = input[_CAon];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n return entries;\n}, \"se_SetTypeConfigurationInput\");\nvar se_SetTypeDefaultVersionInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_VI] != null) {\n entries[_VI] = input[_VI];\n }\n return entries;\n}, \"se_SetTypeDefaultVersionInput\");\nvar se_SignalResourceInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n if (input[_UI] != null) {\n entries[_UI] = input[_UI];\n }\n if (input[_S] != null) {\n entries[_S] = input[_S];\n }\n return entries;\n}, \"se_SignalResourceInput\");\nvar se_StackIdList = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_StackIdList\");\nvar se_StackInstanceFilter = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_N] != null) {\n entries[_N] = input[_N];\n }\n if (input[_Va] != null) {\n entries[_Va] = input[_Va];\n }\n return entries;\n}, \"se_StackInstanceFilter\");\nvar se_StackInstanceFilters = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_StackInstanceFilter(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_StackInstanceFilters\");\nvar se_StackResourceDriftStatusFilters = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_StackResourceDriftStatusFilters\");\nvar se_StackSetOperationPreferences = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_RCT] != null) {\n entries[_RCT] = input[_RCT];\n }\n if (input[_RO] != null) {\n const memberEntries = se_RegionList(input[_RO], context);\n if (((_a = input[_RO]) == null ? void 0 : _a.length) === 0) {\n entries.RegionOrder = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RegionOrder.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_FTC] != null) {\n entries[_FTC] = input[_FTC];\n }\n if (input[_FTP] != null) {\n entries[_FTP] = input[_FTP];\n }\n if (input[_MCC] != null) {\n entries[_MCC] = input[_MCC];\n }\n if (input[_MCP] != null) {\n entries[_MCP] = input[_MCP];\n }\n if (input[_CM] != null) {\n entries[_CM] = input[_CM];\n }\n return entries;\n}, \"se_StackSetOperationPreferences\");\nvar se_StackStatusFilter = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_StackStatusFilter\");\nvar se_StartResourceScanInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n return entries;\n}, \"se_StartResourceScanInput\");\nvar se_StopStackSetOperationInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_StopStackSetOperationInput\");\nvar se_Tag = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_K] != null) {\n entries[_K] = input[_K];\n }\n if (input[_Val] != null) {\n entries[_Val] = input[_Val];\n }\n return entries;\n}, \"se_Tag\");\nvar se_Tags = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_Tag(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_Tags\");\nvar se_TemplateConfiguration = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_DPe] != null) {\n entries[_DPe] = input[_DPe];\n }\n if (input[_URP] != null) {\n entries[_URP] = input[_URP];\n }\n return entries;\n}, \"se_TemplateConfiguration\");\nvar se_TemplateSummaryConfig = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_TURTAW] != null) {\n entries[_TURTAW] = input[_TURTAW];\n }\n return entries;\n}, \"se_TemplateSummaryConfig\");\nvar se_TestTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_VI] != null) {\n entries[_VI] = input[_VI];\n }\n if (input[_LDB] != null) {\n entries[_LDB] = input[_LDB];\n }\n return entries;\n}, \"se_TestTypeInput\");\nvar se_TypeConfigurationIdentifier = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_TA] != null) {\n entries[_TA] = input[_TA];\n }\n if (input[_TCA] != null) {\n entries[_TCA] = input[_TCA];\n }\n if (input[_TCAy] != null) {\n entries[_TCAy] = input[_TCAy];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n return entries;\n}, \"se_TypeConfigurationIdentifier\");\nvar se_TypeConfigurationIdentifiers = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_TypeConfigurationIdentifier(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_TypeConfigurationIdentifiers\");\nvar se_TypeFilters = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Ca] != null) {\n entries[_Ca] = input[_Ca];\n }\n if (input[_PI] != null) {\n entries[_PI] = input[_PI];\n }\n if (input[_TNP] != null) {\n entries[_TNP] = input[_TNP];\n }\n return entries;\n}, \"se_TypeFilters\");\nvar se_UpdateGeneratedTemplateInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b;\n const entries = {};\n if (input[_GTN] != null) {\n entries[_GTN] = input[_GTN];\n }\n if (input[_NGTN] != null) {\n entries[_NGTN] = input[_NGTN];\n }\n if (input[_AR] != null) {\n const memberEntries = se_ResourceDefinitions(input[_AR], context);\n if (((_a = input[_AR]) == null ? void 0 : _a.length) === 0) {\n entries.AddResources = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `AddResources.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RRe] != null) {\n const memberEntries = se_JazzLogicalResourceIds(input[_RRe], context);\n if (((_b = input[_RRe]) == null ? void 0 : _b.length) === 0) {\n entries.RemoveResources = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RemoveResources.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RAR] != null) {\n entries[_RAR] = input[_RAR];\n }\n if (input[_TC] != null) {\n const memberEntries = se_TemplateConfiguration(input[_TC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `TemplateConfiguration.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_UpdateGeneratedTemplateInput\");\nvar se_UpdateStackInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c, _d, _e2;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_UPT] != null) {\n entries[_UPT] = input[_UPT];\n }\n if (input[_SPDUB] != null) {\n entries[_SPDUB] = input[_SPDUB];\n }\n if (input[_SPDUURL] != null) {\n entries[_SPDUURL] = input[_SPDUURL];\n }\n if (input[_P] != null) {\n const memberEntries = se_Parameters(input[_P], context);\n if (((_a = input[_P]) == null ? void 0 : _a.length) === 0) {\n entries.Parameters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Parameters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_C] != null) {\n const memberEntries = se_Capabilities(input[_C], context);\n if (((_b = input[_C]) == null ? void 0 : _b.length) === 0) {\n entries.Capabilities = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Capabilities.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RTe] != null) {\n const memberEntries = se_ResourceTypes(input[_RTe], context);\n if (((_c = input[_RTe]) == null ? void 0 : _c.length) === 0) {\n entries.ResourceTypes = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourceTypes.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RARN] != null) {\n entries[_RARN] = input[_RARN];\n }\n if (input[_RC] != null) {\n const memberEntries = se_RollbackConfiguration(input[_RC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RollbackConfiguration.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_SPB] != null) {\n entries[_SPB] = input[_SPB];\n }\n if (input[_SPURL] != null) {\n entries[_SPURL] = input[_SPURL];\n }\n if (input[_NARN] != null) {\n const memberEntries = se_NotificationARNs(input[_NARN], context);\n if (((_d = input[_NARN]) == null ? void 0 : _d.length) === 0) {\n entries.NotificationARNs = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `NotificationARNs.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Ta] != null) {\n const memberEntries = se_Tags(input[_Ta], context);\n if (((_e2 = input[_Ta]) == null ? void 0 : _e2.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_DR] != null) {\n entries[_DR] = input[_DR];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n if (input[_REOC] != null) {\n entries[_REOC] = input[_REOC];\n }\n return entries;\n}, \"se_UpdateStackInput\");\nvar se_UpdateStackInstancesInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_Ac] != null) {\n const memberEntries = se_AccountList(input[_Ac], context);\n if (((_a = input[_Ac]) == null ? void 0 : _a.length) === 0) {\n entries.Accounts = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Accounts.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_DTep] != null) {\n const memberEntries = se_DeploymentTargets(input[_DTep], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `DeploymentTargets.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Re] != null) {\n const memberEntries = se_RegionList(input[_Re], context);\n if (((_b = input[_Re]) == null ? void 0 : _b.length) === 0) {\n entries.Regions = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Regions.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_PO] != null) {\n const memberEntries = se_Parameters(input[_PO], context);\n if (((_c = input[_PO]) == null ? void 0 : _c.length) === 0) {\n entries.ParameterOverrides = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ParameterOverrides.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OP] != null) {\n const memberEntries = se_StackSetOperationPreferences(input[_OP], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OperationPreferences.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OI] === void 0) {\n input[_OI] = (0, import_uuid.v4)();\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_UpdateStackInstancesInput\");\nvar se_UpdateStackSetInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c, _d, _e2;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_D] != null) {\n entries[_D] = input[_D];\n }\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_UPT] != null) {\n entries[_UPT] = input[_UPT];\n }\n if (input[_P] != null) {\n const memberEntries = se_Parameters(input[_P], context);\n if (((_a = input[_P]) == null ? void 0 : _a.length) === 0) {\n entries.Parameters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Parameters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_C] != null) {\n const memberEntries = se_Capabilities(input[_C], context);\n if (((_b = input[_C]) == null ? void 0 : _b.length) === 0) {\n entries.Capabilities = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Capabilities.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Ta] != null) {\n const memberEntries = se_Tags(input[_Ta], context);\n if (((_c = input[_Ta]) == null ? void 0 : _c.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OP] != null) {\n const memberEntries = se_StackSetOperationPreferences(input[_OP], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OperationPreferences.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_ARARN] != null) {\n entries[_ARARN] = input[_ARARN];\n }\n if (input[_ERN] != null) {\n entries[_ERN] = input[_ERN];\n }\n if (input[_DTep] != null) {\n const memberEntries = se_DeploymentTargets(input[_DTep], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `DeploymentTargets.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_PM] != null) {\n entries[_PM] = input[_PM];\n }\n if (input[_AD] != null) {\n const memberEntries = se_AutoDeployment(input[_AD], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `AutoDeployment.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OI] === void 0) {\n input[_OI] = (0, import_uuid.v4)();\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_Ac] != null) {\n const memberEntries = se_AccountList(input[_Ac], context);\n if (((_d = input[_Ac]) == null ? void 0 : _d.length) === 0) {\n entries.Accounts = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Accounts.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Re] != null) {\n const memberEntries = se_RegionList(input[_Re], context);\n if (((_e2 = input[_Re]) == null ? void 0 : _e2.length) === 0) {\n entries.Regions = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Regions.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n if (input[_ME] != null) {\n const memberEntries = se_ManagedExecution(input[_ME], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ManagedExecution.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_UpdateStackSetInput\");\nvar se_UpdateTerminationProtectionInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_ETP] != null) {\n entries[_ETP] = input[_ETP];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n return entries;\n}, \"se_UpdateTerminationProtectionInput\");\nvar se_ValidateTemplateInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n return entries;\n}, \"se_ValidateTemplateInput\");\nvar de_AccountGateResult = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n return contents;\n}, \"de_AccountGateResult\");\nvar de_AccountLimit = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_N] != null) {\n contents[_N] = (0, import_smithy_client.expectString)(output[_N]);\n }\n if (output[_Val] != null) {\n contents[_Val] = (0, import_smithy_client.strictParseInt32)(output[_Val]);\n }\n return contents;\n}, \"de_AccountLimit\");\nvar de_AccountLimitList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_AccountLimit(entry, context);\n });\n}, \"de_AccountLimitList\");\nvar de_AccountList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_AccountList\");\nvar de_ActivateOrganizationsAccessOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_ActivateOrganizationsAccessOutput\");\nvar de_ActivateTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n return contents;\n}, \"de_ActivateTypeOutput\");\nvar de_AllowedValues = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_AllowedValues\");\nvar de_AlreadyExistsException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_AlreadyExistsException\");\nvar de_AutoDeployment = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_E] != null) {\n contents[_E] = (0, import_smithy_client.parseBoolean)(output[_E]);\n }\n if (output[_RSOAR] != null) {\n contents[_RSOAR] = (0, import_smithy_client.parseBoolean)(output[_RSOAR]);\n }\n return contents;\n}, \"de_AutoDeployment\");\nvar de_BatchDescribeTypeConfigurationsError = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_EC] != null) {\n contents[_EC] = (0, import_smithy_client.expectString)(output[_EC]);\n }\n if (output[_EM] != null) {\n contents[_EM] = (0, import_smithy_client.expectString)(output[_EM]);\n }\n if (output[_TCIy] != null) {\n contents[_TCIy] = de_TypeConfigurationIdentifier(output[_TCIy], context);\n }\n return contents;\n}, \"de_BatchDescribeTypeConfigurationsError\");\nvar de_BatchDescribeTypeConfigurationsErrors = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_BatchDescribeTypeConfigurationsError(entry, context);\n });\n}, \"de_BatchDescribeTypeConfigurationsErrors\");\nvar de_BatchDescribeTypeConfigurationsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Errors === \"\") {\n contents[_Er] = [];\n } else if (output[_Er] != null && output[_Er][_m] != null) {\n contents[_Er] = de_BatchDescribeTypeConfigurationsErrors((0, import_smithy_client.getArrayIfSingleItem)(output[_Er][_m]), context);\n }\n if (output.UnprocessedTypeConfigurations === \"\") {\n contents[_UTC] = [];\n } else if (output[_UTC] != null && output[_UTC][_m] != null) {\n contents[_UTC] = de_UnprocessedTypeConfigurations((0, import_smithy_client.getArrayIfSingleItem)(output[_UTC][_m]), context);\n }\n if (output.TypeConfigurations === \"\") {\n contents[_TCy] = [];\n } else if (output[_TCy] != null && output[_TCy][_m] != null) {\n contents[_TCy] = de_TypeConfigurationDetailsList((0, import_smithy_client.getArrayIfSingleItem)(output[_TCy][_m]), context);\n }\n return contents;\n}, \"de_BatchDescribeTypeConfigurationsOutput\");\nvar de_Capabilities = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_Capabilities\");\nvar de_CFNRegistryException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_CFNRegistryException\");\nvar de_Change = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n if (output[_HIC] != null) {\n contents[_HIC] = (0, import_smithy_client.strictParseInt32)(output[_HIC]);\n }\n if (output[_RCe] != null) {\n contents[_RCe] = de_ResourceChange(output[_RCe], context);\n }\n return contents;\n}, \"de_Change\");\nvar de_Changes = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_Change(entry, context);\n });\n}, \"de_Changes\");\nvar de_ChangeSetHook = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_IP] != null) {\n contents[_IP] = (0, import_smithy_client.expectString)(output[_IP]);\n }\n if (output[_FM] != null) {\n contents[_FM] = (0, import_smithy_client.expectString)(output[_FM]);\n }\n if (output[_TN] != null) {\n contents[_TN] = (0, import_smithy_client.expectString)(output[_TN]);\n }\n if (output[_TVI] != null) {\n contents[_TVI] = (0, import_smithy_client.expectString)(output[_TVI]);\n }\n if (output[_TCVI] != null) {\n contents[_TCVI] = (0, import_smithy_client.expectString)(output[_TCVI]);\n }\n if (output[_TD] != null) {\n contents[_TD] = de_ChangeSetHookTargetDetails(output[_TD], context);\n }\n return contents;\n}, \"de_ChangeSetHook\");\nvar de_ChangeSetHookResourceTargetDetails = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_RA] != null) {\n contents[_RA] = (0, import_smithy_client.expectString)(output[_RA]);\n }\n return contents;\n}, \"de_ChangeSetHookResourceTargetDetails\");\nvar de_ChangeSetHooks = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ChangeSetHook(entry, context);\n });\n}, \"de_ChangeSetHooks\");\nvar de_ChangeSetHookTargetDetails = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_TTa] != null) {\n contents[_TTa] = (0, import_smithy_client.expectString)(output[_TTa]);\n }\n if (output[_RTD] != null) {\n contents[_RTD] = de_ChangeSetHookResourceTargetDetails(output[_RTD], context);\n }\n return contents;\n}, \"de_ChangeSetHookTargetDetails\");\nvar de_ChangeSetNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_ChangeSetNotFoundException\");\nvar de_ChangeSetSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ChangeSetSummary(entry, context);\n });\n}, \"de_ChangeSetSummaries\");\nvar de_ChangeSetSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_CSIh] != null) {\n contents[_CSIh] = (0, import_smithy_client.expectString)(output[_CSIh]);\n }\n if (output[_CSN] != null) {\n contents[_CSN] = (0, import_smithy_client.expectString)(output[_CSN]);\n }\n if (output[_ES] != null) {\n contents[_ES] = (0, import_smithy_client.expectString)(output[_ES]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_CTr] != null) {\n contents[_CTr] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTr]));\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_INS] != null) {\n contents[_INS] = (0, import_smithy_client.parseBoolean)(output[_INS]);\n }\n if (output[_PCSI] != null) {\n contents[_PCSI] = (0, import_smithy_client.expectString)(output[_PCSI]);\n }\n if (output[_RCSI] != null) {\n contents[_RCSI] = (0, import_smithy_client.expectString)(output[_RCSI]);\n }\n if (output[_IER] != null) {\n contents[_IER] = (0, import_smithy_client.parseBoolean)(output[_IER]);\n }\n return contents;\n}, \"de_ChangeSetSummary\");\nvar de_ConcurrentResourcesLimitExceededException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_ConcurrentResourcesLimitExceededException\");\nvar de_ContinueUpdateRollbackOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_ContinueUpdateRollbackOutput\");\nvar de_CreateChangeSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_I] != null) {\n contents[_I] = (0, import_smithy_client.expectString)(output[_I]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_CreateChangeSetOutput\");\nvar de_CreatedButModifiedException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_CreatedButModifiedException\");\nvar de_CreateGeneratedTemplateOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_GTI] != null) {\n contents[_GTI] = (0, import_smithy_client.expectString)(output[_GTI]);\n }\n return contents;\n}, \"de_CreateGeneratedTemplateOutput\");\nvar de_CreateStackInstancesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n return contents;\n}, \"de_CreateStackInstancesOutput\");\nvar de_CreateStackOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_CreateStackOutput\");\nvar de_CreateStackSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SSI] != null) {\n contents[_SSI] = (0, import_smithy_client.expectString)(output[_SSI]);\n }\n return contents;\n}, \"de_CreateStackSetOutput\");\nvar de_DeactivateOrganizationsAccessOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_DeactivateOrganizationsAccessOutput\");\nvar de_DeactivateTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_DeactivateTypeOutput\");\nvar de_DeleteChangeSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_DeleteChangeSetOutput\");\nvar de_DeleteStackInstancesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n return contents;\n}, \"de_DeleteStackInstancesOutput\");\nvar de_DeleteStackSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_DeleteStackSetOutput\");\nvar de_DeploymentTargets = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Accounts === \"\") {\n contents[_Ac] = [];\n } else if (output[_Ac] != null && output[_Ac][_m] != null) {\n contents[_Ac] = de_AccountList((0, import_smithy_client.getArrayIfSingleItem)(output[_Ac][_m]), context);\n }\n if (output[_AUc] != null) {\n contents[_AUc] = (0, import_smithy_client.expectString)(output[_AUc]);\n }\n if (output.OrganizationalUnitIds === \"\") {\n contents[_OUI] = [];\n } else if (output[_OUI] != null && output[_OUI][_m] != null) {\n contents[_OUI] = de_OrganizationalUnitIdList((0, import_smithy_client.getArrayIfSingleItem)(output[_OUI][_m]), context);\n }\n if (output[_AFT] != null) {\n contents[_AFT] = (0, import_smithy_client.expectString)(output[_AFT]);\n }\n return contents;\n}, \"de_DeploymentTargets\");\nvar de_DeregisterTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_DeregisterTypeOutput\");\nvar de_DescribeAccountLimitsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.AccountLimits === \"\") {\n contents[_AL] = [];\n } else if (output[_AL] != null && output[_AL][_m] != null) {\n contents[_AL] = de_AccountLimitList((0, import_smithy_client.getArrayIfSingleItem)(output[_AL][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_DescribeAccountLimitsOutput\");\nvar de_DescribeChangeSetHooksOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_CSIh] != null) {\n contents[_CSIh] = (0, import_smithy_client.expectString)(output[_CSIh]);\n }\n if (output[_CSN] != null) {\n contents[_CSN] = (0, import_smithy_client.expectString)(output[_CSN]);\n }\n if (output.Hooks === \"\") {\n contents[_H] = [];\n } else if (output[_H] != null && output[_H][_m] != null) {\n contents[_H] = de_ChangeSetHooks((0, import_smithy_client.getArrayIfSingleItem)(output[_H][_m]), context);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n return contents;\n}, \"de_DescribeChangeSetHooksOutput\");\nvar de_DescribeChangeSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_CSN] != null) {\n contents[_CSN] = (0, import_smithy_client.expectString)(output[_CSN]);\n }\n if (output[_CSIh] != null) {\n contents[_CSIh] = (0, import_smithy_client.expectString)(output[_CSIh]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output.Parameters === \"\") {\n contents[_P] = [];\n } else if (output[_P] != null && output[_P][_m] != null) {\n contents[_P] = de_Parameters((0, import_smithy_client.getArrayIfSingleItem)(output[_P][_m]), context);\n }\n if (output[_CTr] != null) {\n contents[_CTr] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTr]));\n }\n if (output[_ES] != null) {\n contents[_ES] = (0, import_smithy_client.expectString)(output[_ES]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output.NotificationARNs === \"\") {\n contents[_NARN] = [];\n } else if (output[_NARN] != null && output[_NARN][_m] != null) {\n contents[_NARN] = de_NotificationARNs((0, import_smithy_client.getArrayIfSingleItem)(output[_NARN][_m]), context);\n }\n if (output[_RC] != null) {\n contents[_RC] = de_RollbackConfiguration(output[_RC], context);\n }\n if (output.Capabilities === \"\") {\n contents[_C] = [];\n } else if (output[_C] != null && output[_C][_m] != null) {\n contents[_C] = de_Capabilities((0, import_smithy_client.getArrayIfSingleItem)(output[_C][_m]), context);\n }\n if (output.Tags === \"\") {\n contents[_Ta] = [];\n } else if (output[_Ta] != null && output[_Ta][_m] != null) {\n contents[_Ta] = de_Tags((0, import_smithy_client.getArrayIfSingleItem)(output[_Ta][_m]), context);\n }\n if (output.Changes === \"\") {\n contents[_Ch] = [];\n } else if (output[_Ch] != null && output[_Ch][_m] != null) {\n contents[_Ch] = de_Changes((0, import_smithy_client.getArrayIfSingleItem)(output[_Ch][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n if (output[_INS] != null) {\n contents[_INS] = (0, import_smithy_client.parseBoolean)(output[_INS]);\n }\n if (output[_PCSI] != null) {\n contents[_PCSI] = (0, import_smithy_client.expectString)(output[_PCSI]);\n }\n if (output[_RCSI] != null) {\n contents[_RCSI] = (0, import_smithy_client.expectString)(output[_RCSI]);\n }\n if (output[_OSF] != null) {\n contents[_OSF] = (0, import_smithy_client.expectString)(output[_OSF]);\n }\n if (output[_IER] != null) {\n contents[_IER] = (0, import_smithy_client.parseBoolean)(output[_IER]);\n }\n return contents;\n}, \"de_DescribeChangeSetOutput\");\nvar de_DescribeGeneratedTemplateOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_GTI] != null) {\n contents[_GTI] = (0, import_smithy_client.expectString)(output[_GTI]);\n }\n if (output[_GTN] != null) {\n contents[_GTN] = (0, import_smithy_client.expectString)(output[_GTN]);\n }\n if (output.Resources === \"\") {\n contents[_R] = [];\n } else if (output[_R] != null && output[_R][_m] != null) {\n contents[_R] = de_ResourceDetails((0, import_smithy_client.getArrayIfSingleItem)(output[_R][_m]), context);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_CTr] != null) {\n contents[_CTr] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTr]));\n }\n if (output[_LUT] != null) {\n contents[_LUT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LUT]));\n }\n if (output[_Pr] != null) {\n contents[_Pr] = de_TemplateProgress(output[_Pr], context);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_TC] != null) {\n contents[_TC] = de_TemplateConfiguration(output[_TC], context);\n }\n if (output[_TW] != null) {\n contents[_TW] = (0, import_smithy_client.strictParseInt32)(output[_TW]);\n }\n return contents;\n}, \"de_DescribeGeneratedTemplateOutput\");\nvar de_DescribeOrganizationsAccessOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n return contents;\n}, \"de_DescribeOrganizationsAccessOutput\");\nvar de_DescribePublisherOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PI] != null) {\n contents[_PI] = (0, import_smithy_client.expectString)(output[_PI]);\n }\n if (output[_PS] != null) {\n contents[_PS] = (0, import_smithy_client.expectString)(output[_PS]);\n }\n if (output[_IPd] != null) {\n contents[_IPd] = (0, import_smithy_client.expectString)(output[_IPd]);\n }\n if (output[_PP] != null) {\n contents[_PP] = (0, import_smithy_client.expectString)(output[_PP]);\n }\n return contents;\n}, \"de_DescribePublisherOutput\");\nvar de_DescribeResourceScanOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RSI] != null) {\n contents[_RSI] = (0, import_smithy_client.expectString)(output[_RSI]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_ST] != null) {\n contents[_ST] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_ST]));\n }\n if (output[_ET] != null) {\n contents[_ET] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_ET]));\n }\n if (output[_PC] != null) {\n contents[_PC] = (0, import_smithy_client.strictParseFloat)(output[_PC]);\n }\n if (output.ResourceTypes === \"\") {\n contents[_RTe] = [];\n } else if (output[_RTe] != null && output[_RTe][_m] != null) {\n contents[_RTe] = de_ResourceTypes((0, import_smithy_client.getArrayIfSingleItem)(output[_RTe][_m]), context);\n }\n if (output[_RSes] != null) {\n contents[_RSes] = (0, import_smithy_client.strictParseInt32)(output[_RSes]);\n }\n if (output[_RRes] != null) {\n contents[_RRes] = (0, import_smithy_client.strictParseInt32)(output[_RRes]);\n }\n return contents;\n}, \"de_DescribeResourceScanOutput\");\nvar de_DescribeStackDriftDetectionStatusOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_SDDI] != null) {\n contents[_SDDI] = (0, import_smithy_client.expectString)(output[_SDDI]);\n }\n if (output[_SDS] != null) {\n contents[_SDS] = (0, import_smithy_client.expectString)(output[_SDS]);\n }\n if (output[_DSet] != null) {\n contents[_DSet] = (0, import_smithy_client.expectString)(output[_DSet]);\n }\n if (output[_DSRet] != null) {\n contents[_DSRet] = (0, import_smithy_client.expectString)(output[_DSRet]);\n }\n if (output[_DSRC] != null) {\n contents[_DSRC] = (0, import_smithy_client.strictParseInt32)(output[_DSRC]);\n }\n if (output[_Ti] != null) {\n contents[_Ti] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_Ti]));\n }\n return contents;\n}, \"de_DescribeStackDriftDetectionStatusOutput\");\nvar de_DescribeStackEventsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.StackEvents === \"\") {\n contents[_SE] = [];\n } else if (output[_SE] != null && output[_SE][_m] != null) {\n contents[_SE] = de_StackEvents((0, import_smithy_client.getArrayIfSingleItem)(output[_SE][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_DescribeStackEventsOutput\");\nvar de_DescribeStackInstanceOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SIta] != null) {\n contents[_SIta] = de_StackInstance(output[_SIta], context);\n }\n return contents;\n}, \"de_DescribeStackInstanceOutput\");\nvar de_DescribeStackResourceDriftsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.StackResourceDrifts === \"\") {\n contents[_SRD] = [];\n } else if (output[_SRD] != null && output[_SRD][_m] != null) {\n contents[_SRD] = de_StackResourceDrifts((0, import_smithy_client.getArrayIfSingleItem)(output[_SRD][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_DescribeStackResourceDriftsOutput\");\nvar de_DescribeStackResourceOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SRDt] != null) {\n contents[_SRDt] = de_StackResourceDetail(output[_SRDt], context);\n }\n return contents;\n}, \"de_DescribeStackResourceOutput\");\nvar de_DescribeStackResourcesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.StackResources === \"\") {\n contents[_SRta] = [];\n } else if (output[_SRta] != null && output[_SRta][_m] != null) {\n contents[_SRta] = de_StackResources((0, import_smithy_client.getArrayIfSingleItem)(output[_SRta][_m]), context);\n }\n return contents;\n}, \"de_DescribeStackResourcesOutput\");\nvar de_DescribeStackSetOperationOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SSO] != null) {\n contents[_SSO] = de_StackSetOperation(output[_SSO], context);\n }\n return contents;\n}, \"de_DescribeStackSetOperationOutput\");\nvar de_DescribeStackSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SS] != null) {\n contents[_SS] = de_StackSet(output[_SS], context);\n }\n return contents;\n}, \"de_DescribeStackSetOutput\");\nvar de_DescribeStacksOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Stacks === \"\") {\n contents[_St] = [];\n } else if (output[_St] != null && output[_St][_m] != null) {\n contents[_St] = de_Stacks((0, import_smithy_client.getArrayIfSingleItem)(output[_St][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_DescribeStacksOutput\");\nvar de_DescribeTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n if (output[_TN] != null) {\n contents[_TN] = (0, import_smithy_client.expectString)(output[_TN]);\n }\n if (output[_DVI] != null) {\n contents[_DVI] = (0, import_smithy_client.expectString)(output[_DVI]);\n }\n if (output[_IDV] != null) {\n contents[_IDV] = (0, import_smithy_client.parseBoolean)(output[_IDV]);\n }\n if (output[_TTS] != null) {\n contents[_TTS] = (0, import_smithy_client.expectString)(output[_TTS]);\n }\n if (output[_TTSD] != null) {\n contents[_TTSD] = (0, import_smithy_client.expectString)(output[_TTSD]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_Sc] != null) {\n contents[_Sc] = (0, import_smithy_client.expectString)(output[_Sc]);\n }\n if (output[_PTr] != null) {\n contents[_PTr] = (0, import_smithy_client.expectString)(output[_PTr]);\n }\n if (output[_DSep] != null) {\n contents[_DSep] = (0, import_smithy_client.expectString)(output[_DSep]);\n }\n if (output[_LC] != null) {\n contents[_LC] = de_LoggingConfig(output[_LC], context);\n }\n if (output.RequiredActivatedTypes === \"\") {\n contents[_RAT] = [];\n } else if (output[_RAT] != null && output[_RAT][_m] != null) {\n contents[_RAT] = de_RequiredActivatedTypes((0, import_smithy_client.getArrayIfSingleItem)(output[_RAT][_m]), context);\n }\n if (output[_ERA] != null) {\n contents[_ERA] = (0, import_smithy_client.expectString)(output[_ERA]);\n }\n if (output[_Vi] != null) {\n contents[_Vi] = (0, import_smithy_client.expectString)(output[_Vi]);\n }\n if (output[_SU] != null) {\n contents[_SU] = (0, import_smithy_client.expectString)(output[_SU]);\n }\n if (output[_DU] != null) {\n contents[_DU] = (0, import_smithy_client.expectString)(output[_DU]);\n }\n if (output[_LU] != null) {\n contents[_LU] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LU]));\n }\n if (output[_TCi] != null) {\n contents[_TCi] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_TCi]));\n }\n if (output[_CSo] != null) {\n contents[_CSo] = (0, import_smithy_client.expectString)(output[_CSo]);\n }\n if (output[_PI] != null) {\n contents[_PI] = (0, import_smithy_client.expectString)(output[_PI]);\n }\n if (output[_OTN] != null) {\n contents[_OTN] = (0, import_smithy_client.expectString)(output[_OTN]);\n }\n if (output[_OTA] != null) {\n contents[_OTA] = (0, import_smithy_client.expectString)(output[_OTA]);\n }\n if (output[_PVN] != null) {\n contents[_PVN] = (0, import_smithy_client.expectString)(output[_PVN]);\n }\n if (output[_LPV] != null) {\n contents[_LPV] = (0, import_smithy_client.expectString)(output[_LPV]);\n }\n if (output[_IA] != null) {\n contents[_IA] = (0, import_smithy_client.parseBoolean)(output[_IA]);\n }\n if (output[_AU] != null) {\n contents[_AU] = (0, import_smithy_client.parseBoolean)(output[_AU]);\n }\n return contents;\n}, \"de_DescribeTypeOutput\");\nvar de_DescribeTypeRegistrationOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PSr] != null) {\n contents[_PSr] = (0, import_smithy_client.expectString)(output[_PSr]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_TA] != null) {\n contents[_TA] = (0, import_smithy_client.expectString)(output[_TA]);\n }\n if (output[_TVA] != null) {\n contents[_TVA] = (0, import_smithy_client.expectString)(output[_TVA]);\n }\n return contents;\n}, \"de_DescribeTypeRegistrationOutput\");\nvar de_DetectStackDriftOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SDDI] != null) {\n contents[_SDDI] = (0, import_smithy_client.expectString)(output[_SDDI]);\n }\n return contents;\n}, \"de_DetectStackDriftOutput\");\nvar de_DetectStackResourceDriftOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SRDta] != null) {\n contents[_SRDta] = de_StackResourceDrift(output[_SRDta], context);\n }\n return contents;\n}, \"de_DetectStackResourceDriftOutput\");\nvar de_DetectStackSetDriftOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n return contents;\n}, \"de_DetectStackSetDriftOutput\");\nvar de_EstimateTemplateCostOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_U] != null) {\n contents[_U] = (0, import_smithy_client.expectString)(output[_U]);\n }\n return contents;\n}, \"de_EstimateTemplateCostOutput\");\nvar de_ExecuteChangeSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_ExecuteChangeSetOutput\");\nvar de_Export = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_ESI] != null) {\n contents[_ESI] = (0, import_smithy_client.expectString)(output[_ESI]);\n }\n if (output[_N] != null) {\n contents[_N] = (0, import_smithy_client.expectString)(output[_N]);\n }\n if (output[_Val] != null) {\n contents[_Val] = (0, import_smithy_client.expectString)(output[_Val]);\n }\n return contents;\n}, \"de_Export\");\nvar de_Exports = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_Export(entry, context);\n });\n}, \"de_Exports\");\nvar de_GeneratedTemplateNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_GeneratedTemplateNotFoundException\");\nvar de_GetGeneratedTemplateOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_TB] != null) {\n contents[_TB] = (0, import_smithy_client.expectString)(output[_TB]);\n }\n return contents;\n}, \"de_GetGeneratedTemplateOutput\");\nvar de_GetStackPolicyOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SPB] != null) {\n contents[_SPB] = (0, import_smithy_client.expectString)(output[_SPB]);\n }\n return contents;\n}, \"de_GetStackPolicyOutput\");\nvar de_GetTemplateOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_TB] != null) {\n contents[_TB] = (0, import_smithy_client.expectString)(output[_TB]);\n }\n if (output.StagesAvailable === \"\") {\n contents[_SA] = [];\n } else if (output[_SA] != null && output[_SA][_m] != null) {\n contents[_SA] = de_StageList((0, import_smithy_client.getArrayIfSingleItem)(output[_SA][_m]), context);\n }\n return contents;\n}, \"de_GetTemplateOutput\");\nvar de_GetTemplateSummaryOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Parameters === \"\") {\n contents[_P] = [];\n } else if (output[_P] != null && output[_P][_m] != null) {\n contents[_P] = de_ParameterDeclarations((0, import_smithy_client.getArrayIfSingleItem)(output[_P][_m]), context);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output.Capabilities === \"\") {\n contents[_C] = [];\n } else if (output[_C] != null && output[_C][_m] != null) {\n contents[_C] = de_Capabilities((0, import_smithy_client.getArrayIfSingleItem)(output[_C][_m]), context);\n }\n if (output[_CR] != null) {\n contents[_CR] = (0, import_smithy_client.expectString)(output[_CR]);\n }\n if (output.ResourceTypes === \"\") {\n contents[_RTe] = [];\n } else if (output[_RTe] != null && output[_RTe][_m] != null) {\n contents[_RTe] = de_ResourceTypes((0, import_smithy_client.getArrayIfSingleItem)(output[_RTe][_m]), context);\n }\n if (output[_V] != null) {\n contents[_V] = (0, import_smithy_client.expectString)(output[_V]);\n }\n if (output[_Me] != null) {\n contents[_Me] = (0, import_smithy_client.expectString)(output[_Me]);\n }\n if (output.DeclaredTransforms === \"\") {\n contents[_DTec] = [];\n } else if (output[_DTec] != null && output[_DTec][_m] != null) {\n contents[_DTec] = de_TransformsList((0, import_smithy_client.getArrayIfSingleItem)(output[_DTec][_m]), context);\n }\n if (output.ResourceIdentifierSummaries === \"\") {\n contents[_RIS] = [];\n } else if (output[_RIS] != null && output[_RIS][_m] != null) {\n contents[_RIS] = de_ResourceIdentifierSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_RIS][_m]), context);\n }\n if (output[_W] != null) {\n contents[_W] = de_Warnings(output[_W], context);\n }\n return contents;\n}, \"de_GetTemplateSummaryOutput\");\nvar de_Imports = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_Imports\");\nvar de_ImportStacksToStackSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n return contents;\n}, \"de_ImportStacksToStackSetOutput\");\nvar de_InsufficientCapabilitiesException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_InsufficientCapabilitiesException\");\nvar de_InvalidChangeSetStatusException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_InvalidChangeSetStatusException\");\nvar de_InvalidOperationException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_InvalidOperationException\");\nvar de_InvalidStateTransitionException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_InvalidStateTransitionException\");\nvar de_JazzResourceIdentifierProperties = /* @__PURE__ */ __name((output, context) => {\n return output.reduce((acc, pair) => {\n if (pair[\"value\"] === null) {\n return acc;\n }\n acc[pair[\"key\"]] = (0, import_smithy_client.expectString)(pair[\"value\"]);\n return acc;\n }, {});\n}, \"de_JazzResourceIdentifierProperties\");\nvar de_LimitExceededException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_LimitExceededException\");\nvar de_ListChangeSetsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_ChangeSetSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListChangeSetsOutput\");\nvar de_ListExportsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Exports === \"\") {\n contents[_Ex] = [];\n } else if (output[_Ex] != null && output[_Ex][_m] != null) {\n contents[_Ex] = de_Exports((0, import_smithy_client.getArrayIfSingleItem)(output[_Ex][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListExportsOutput\");\nvar de_ListGeneratedTemplatesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_TemplateSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListGeneratedTemplatesOutput\");\nvar de_ListImportsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Imports === \"\") {\n contents[_Im] = [];\n } else if (output[_Im] != null && output[_Im][_m] != null) {\n contents[_Im] = de_Imports((0, import_smithy_client.getArrayIfSingleItem)(output[_Im][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListImportsOutput\");\nvar de_ListResourceScanRelatedResourcesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.RelatedResources === \"\") {\n contents[_RRel] = [];\n } else if (output[_RRel] != null && output[_RRel][_m] != null) {\n contents[_RRel] = de_RelatedResources((0, import_smithy_client.getArrayIfSingleItem)(output[_RRel][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListResourceScanRelatedResourcesOutput\");\nvar de_ListResourceScanResourcesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Resources === \"\") {\n contents[_R] = [];\n } else if (output[_R] != null && output[_R][_m] != null) {\n contents[_R] = de_ScannedResources((0, import_smithy_client.getArrayIfSingleItem)(output[_R][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListResourceScanResourcesOutput\");\nvar de_ListResourceScansOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.ResourceScanSummaries === \"\") {\n contents[_RSS] = [];\n } else if (output[_RSS] != null && output[_RSS][_m] != null) {\n contents[_RSS] = de_ResourceScanSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_RSS][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListResourceScansOutput\");\nvar de_ListStackInstanceResourceDriftsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_StackInstanceResourceDriftsSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackInstanceResourceDriftsOutput\");\nvar de_ListStackInstancesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_StackInstanceSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackInstancesOutput\");\nvar de_ListStackResourcesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.StackResourceSummaries === \"\") {\n contents[_SRSt] = [];\n } else if (output[_SRSt] != null && output[_SRSt][_m] != null) {\n contents[_SRSt] = de_StackResourceSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_SRSt][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackResourcesOutput\");\nvar de_ListStackSetAutoDeploymentTargetsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_StackSetAutoDeploymentTargetSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackSetAutoDeploymentTargetsOutput\");\nvar de_ListStackSetOperationResultsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_StackSetOperationResultSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackSetOperationResultsOutput\");\nvar de_ListStackSetOperationsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_StackSetOperationSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackSetOperationsOutput\");\nvar de_ListStackSetsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_StackSetSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackSetsOutput\");\nvar de_ListStacksOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.StackSummaries === \"\") {\n contents[_SSt] = [];\n } else if (output[_SSt] != null && output[_SSt][_m] != null) {\n contents[_SSt] = de_StackSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_SSt][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStacksOutput\");\nvar de_ListTypeRegistrationsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.RegistrationTokenList === \"\") {\n contents[_RTL] = [];\n } else if (output[_RTL] != null && output[_RTL][_m] != null) {\n contents[_RTL] = de_RegistrationTokenList((0, import_smithy_client.getArrayIfSingleItem)(output[_RTL][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListTypeRegistrationsOutput\");\nvar de_ListTypesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.TypeSummaries === \"\") {\n contents[_TSy] = [];\n } else if (output[_TSy] != null && output[_TSy][_m] != null) {\n contents[_TSy] = de_TypeSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_TSy][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListTypesOutput\");\nvar de_ListTypeVersionsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.TypeVersionSummaries === \"\") {\n contents[_TVS] = [];\n } else if (output[_TVS] != null && output[_TVS][_m] != null) {\n contents[_TVS] = de_TypeVersionSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_TVS][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListTypeVersionsOutput\");\nvar de_LoggingConfig = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_LRA] != null) {\n contents[_LRA] = (0, import_smithy_client.expectString)(output[_LRA]);\n }\n if (output[_LGN] != null) {\n contents[_LGN] = (0, import_smithy_client.expectString)(output[_LGN]);\n }\n return contents;\n}, \"de_LoggingConfig\");\nvar de_LogicalResourceIds = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_LogicalResourceIds\");\nvar de_ManagedExecution = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Act] != null) {\n contents[_Act] = (0, import_smithy_client.parseBoolean)(output[_Act]);\n }\n return contents;\n}, \"de_ManagedExecution\");\nvar de_ModuleInfo = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_TH] != null) {\n contents[_TH] = (0, import_smithy_client.expectString)(output[_TH]);\n }\n if (output[_LIH] != null) {\n contents[_LIH] = (0, import_smithy_client.expectString)(output[_LIH]);\n }\n return contents;\n}, \"de_ModuleInfo\");\nvar de_NameAlreadyExistsException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_NameAlreadyExistsException\");\nvar de_NotificationARNs = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_NotificationARNs\");\nvar de_OperationIdAlreadyExistsException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_OperationIdAlreadyExistsException\");\nvar de_OperationInProgressException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_OperationInProgressException\");\nvar de_OperationNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_OperationNotFoundException\");\nvar de_OperationStatusCheckFailedException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_OperationStatusCheckFailedException\");\nvar de_OrganizationalUnitIdList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_OrganizationalUnitIdList\");\nvar de_Output = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OK] != null) {\n contents[_OK] = (0, import_smithy_client.expectString)(output[_OK]);\n }\n if (output[_OV] != null) {\n contents[_OV] = (0, import_smithy_client.expectString)(output[_OV]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_EN] != null) {\n contents[_EN] = (0, import_smithy_client.expectString)(output[_EN]);\n }\n return contents;\n}, \"de_Output\");\nvar de_Outputs = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_Output(entry, context);\n });\n}, \"de_Outputs\");\nvar de_Parameter = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PK] != null) {\n contents[_PK] = (0, import_smithy_client.expectString)(output[_PK]);\n }\n if (output[_PV] != null) {\n contents[_PV] = (0, import_smithy_client.expectString)(output[_PV]);\n }\n if (output[_UPV] != null) {\n contents[_UPV] = (0, import_smithy_client.parseBoolean)(output[_UPV]);\n }\n if (output[_RV] != null) {\n contents[_RV] = (0, import_smithy_client.expectString)(output[_RV]);\n }\n return contents;\n}, \"de_Parameter\");\nvar de_ParameterConstraints = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.AllowedValues === \"\") {\n contents[_AV] = [];\n } else if (output[_AV] != null && output[_AV][_m] != null) {\n contents[_AV] = de_AllowedValues((0, import_smithy_client.getArrayIfSingleItem)(output[_AV][_m]), context);\n }\n return contents;\n}, \"de_ParameterConstraints\");\nvar de_ParameterDeclaration = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PK] != null) {\n contents[_PK] = (0, import_smithy_client.expectString)(output[_PK]);\n }\n if (output[_DV] != null) {\n contents[_DV] = (0, import_smithy_client.expectString)(output[_DV]);\n }\n if (output[_PTa] != null) {\n contents[_PTa] = (0, import_smithy_client.expectString)(output[_PTa]);\n }\n if (output[_NE] != null) {\n contents[_NE] = (0, import_smithy_client.parseBoolean)(output[_NE]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_PCa] != null) {\n contents[_PCa] = de_ParameterConstraints(output[_PCa], context);\n }\n return contents;\n}, \"de_ParameterDeclaration\");\nvar de_ParameterDeclarations = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ParameterDeclaration(entry, context);\n });\n}, \"de_ParameterDeclarations\");\nvar de_Parameters = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_Parameter(entry, context);\n });\n}, \"de_Parameters\");\nvar de_PhysicalResourceIdContext = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_PhysicalResourceIdContextKeyValuePair(entry, context);\n });\n}, \"de_PhysicalResourceIdContext\");\nvar de_PhysicalResourceIdContextKeyValuePair = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_K] != null) {\n contents[_K] = (0, import_smithy_client.expectString)(output[_K]);\n }\n if (output[_Val] != null) {\n contents[_Val] = (0, import_smithy_client.expectString)(output[_Val]);\n }\n return contents;\n}, \"de_PhysicalResourceIdContextKeyValuePair\");\nvar de_PropertyDifference = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PPr] != null) {\n contents[_PPr] = (0, import_smithy_client.expectString)(output[_PPr]);\n }\n if (output[_EV] != null) {\n contents[_EV] = (0, import_smithy_client.expectString)(output[_EV]);\n }\n if (output[_AVc] != null) {\n contents[_AVc] = (0, import_smithy_client.expectString)(output[_AVc]);\n }\n if (output[_DTi] != null) {\n contents[_DTi] = (0, import_smithy_client.expectString)(output[_DTi]);\n }\n return contents;\n}, \"de_PropertyDifference\");\nvar de_PropertyDifferences = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_PropertyDifference(entry, context);\n });\n}, \"de_PropertyDifferences\");\nvar de_PublishTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PTA] != null) {\n contents[_PTA] = (0, import_smithy_client.expectString)(output[_PTA]);\n }\n return contents;\n}, \"de_PublishTypeOutput\");\nvar de_RecordHandlerProgressOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_RecordHandlerProgressOutput\");\nvar de_RegionList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_RegionList\");\nvar de_RegisterPublisherOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PI] != null) {\n contents[_PI] = (0, import_smithy_client.expectString)(output[_PI]);\n }\n return contents;\n}, \"de_RegisterPublisherOutput\");\nvar de_RegisterTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RTeg] != null) {\n contents[_RTeg] = (0, import_smithy_client.expectString)(output[_RTeg]);\n }\n return contents;\n}, \"de_RegisterTypeOutput\");\nvar de_RegistrationTokenList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_RegistrationTokenList\");\nvar de_RelatedResources = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ScannedResource(entry, context);\n });\n}, \"de_RelatedResources\");\nvar de_RequiredActivatedType = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_TNA] != null) {\n contents[_TNA] = (0, import_smithy_client.expectString)(output[_TNA]);\n }\n if (output[_OTN] != null) {\n contents[_OTN] = (0, import_smithy_client.expectString)(output[_OTN]);\n }\n if (output[_PI] != null) {\n contents[_PI] = (0, import_smithy_client.expectString)(output[_PI]);\n }\n if (output.SupportedMajorVersions === \"\") {\n contents[_SMV] = [];\n } else if (output[_SMV] != null && output[_SMV][_m] != null) {\n contents[_SMV] = de_SupportedMajorVersions((0, import_smithy_client.getArrayIfSingleItem)(output[_SMV][_m]), context);\n }\n return contents;\n}, \"de_RequiredActivatedType\");\nvar de_RequiredActivatedTypes = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_RequiredActivatedType(entry, context);\n });\n}, \"de_RequiredActivatedTypes\");\nvar de_ResourceChange = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PA] != null) {\n contents[_PA] = (0, import_smithy_client.expectString)(output[_PA]);\n }\n if (output[_A] != null) {\n contents[_A] = (0, import_smithy_client.expectString)(output[_A]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_Rep] != null) {\n contents[_Rep] = (0, import_smithy_client.expectString)(output[_Rep]);\n }\n if (output.Scope === \"\") {\n contents[_Sco] = [];\n } else if (output[_Sco] != null && output[_Sco][_m] != null) {\n contents[_Sco] = de_Scope((0, import_smithy_client.getArrayIfSingleItem)(output[_Sco][_m]), context);\n }\n if (output.Details === \"\") {\n contents[_De] = [];\n } else if (output[_De] != null && output[_De][_m] != null) {\n contents[_De] = de_ResourceChangeDetails((0, import_smithy_client.getArrayIfSingleItem)(output[_De][_m]), context);\n }\n if (output[_CSIh] != null) {\n contents[_CSIh] = (0, import_smithy_client.expectString)(output[_CSIh]);\n }\n if (output[_MI] != null) {\n contents[_MI] = de_ModuleInfo(output[_MI], context);\n }\n if (output[_BC] != null) {\n contents[_BC] = (0, import_smithy_client.expectString)(output[_BC]);\n }\n if (output[_AC] != null) {\n contents[_AC] = (0, import_smithy_client.expectString)(output[_AC]);\n }\n return contents;\n}, \"de_ResourceChange\");\nvar de_ResourceChangeDetail = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Tar] != null) {\n contents[_Tar] = de_ResourceTargetDefinition(output[_Tar], context);\n }\n if (output[_Ev] != null) {\n contents[_Ev] = (0, import_smithy_client.expectString)(output[_Ev]);\n }\n if (output[_CSh] != null) {\n contents[_CSh] = (0, import_smithy_client.expectString)(output[_CSh]);\n }\n if (output[_CE] != null) {\n contents[_CE] = (0, import_smithy_client.expectString)(output[_CE]);\n }\n return contents;\n}, \"de_ResourceChangeDetail\");\nvar de_ResourceChangeDetails = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ResourceChangeDetail(entry, context);\n });\n}, \"de_ResourceChangeDetails\");\nvar de_ResourceDetail = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output.ResourceIdentifier === \"\") {\n contents[_RI] = {};\n } else if (output[_RI] != null && output[_RI][_e] != null) {\n contents[_RI] = de_ResourceIdentifierProperties((0, import_smithy_client.getArrayIfSingleItem)(output[_RI][_e]), context);\n }\n if (output[_RSeso] != null) {\n contents[_RSeso] = (0, import_smithy_client.expectString)(output[_RSeso]);\n }\n if (output[_RSR] != null) {\n contents[_RSR] = (0, import_smithy_client.expectString)(output[_RSR]);\n }\n if (output.Warnings === \"\") {\n contents[_W] = [];\n } else if (output[_W] != null && output[_W][_m] != null) {\n contents[_W] = de_WarningDetails((0, import_smithy_client.getArrayIfSingleItem)(output[_W][_m]), context);\n }\n return contents;\n}, \"de_ResourceDetail\");\nvar de_ResourceDetails = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ResourceDetail(entry, context);\n });\n}, \"de_ResourceDetails\");\nvar de_ResourceIdentifierProperties = /* @__PURE__ */ __name((output, context) => {\n return output.reduce((acc, pair) => {\n if (pair[\"value\"] === null) {\n return acc;\n }\n acc[pair[\"key\"]] = (0, import_smithy_client.expectString)(pair[\"value\"]);\n return acc;\n }, {});\n}, \"de_ResourceIdentifierProperties\");\nvar de_ResourceIdentifiers = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_ResourceIdentifiers\");\nvar de_ResourceIdentifierSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ResourceIdentifierSummary(entry, context);\n });\n}, \"de_ResourceIdentifierSummaries\");\nvar de_ResourceIdentifierSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output.LogicalResourceIds === \"\") {\n contents[_LRIo] = [];\n } else if (output[_LRIo] != null && output[_LRIo][_m] != null) {\n contents[_LRIo] = de_LogicalResourceIds((0, import_smithy_client.getArrayIfSingleItem)(output[_LRIo][_m]), context);\n }\n if (output.ResourceIdentifiers === \"\") {\n contents[_RIe] = [];\n } else if (output[_RIe] != null && output[_RIe][_m] != null) {\n contents[_RIe] = de_ResourceIdentifiers((0, import_smithy_client.getArrayIfSingleItem)(output[_RIe][_m]), context);\n }\n return contents;\n}, \"de_ResourceIdentifierSummary\");\nvar de_ResourceScanInProgressException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_ResourceScanInProgressException\");\nvar de_ResourceScanLimitExceededException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_ResourceScanLimitExceededException\");\nvar de_ResourceScanNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_ResourceScanNotFoundException\");\nvar de_ResourceScanSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ResourceScanSummary(entry, context);\n });\n}, \"de_ResourceScanSummaries\");\nvar de_ResourceScanSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RSI] != null) {\n contents[_RSI] = (0, import_smithy_client.expectString)(output[_RSI]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_ST] != null) {\n contents[_ST] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_ST]));\n }\n if (output[_ET] != null) {\n contents[_ET] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_ET]));\n }\n if (output[_PC] != null) {\n contents[_PC] = (0, import_smithy_client.strictParseFloat)(output[_PC]);\n }\n return contents;\n}, \"de_ResourceScanSummary\");\nvar de_ResourceTargetDefinition = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_At] != null) {\n contents[_At] = (0, import_smithy_client.expectString)(output[_At]);\n }\n if (output[_N] != null) {\n contents[_N] = (0, import_smithy_client.expectString)(output[_N]);\n }\n if (output[_RReq] != null) {\n contents[_RReq] = (0, import_smithy_client.expectString)(output[_RReq]);\n }\n if (output[_Pa] != null) {\n contents[_Pa] = (0, import_smithy_client.expectString)(output[_Pa]);\n }\n if (output[_BV] != null) {\n contents[_BV] = (0, import_smithy_client.expectString)(output[_BV]);\n }\n if (output[_AVf] != null) {\n contents[_AVf] = (0, import_smithy_client.expectString)(output[_AVf]);\n }\n if (output[_ACT] != null) {\n contents[_ACT] = (0, import_smithy_client.expectString)(output[_ACT]);\n }\n return contents;\n}, \"de_ResourceTargetDefinition\");\nvar de_ResourceTypes = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_ResourceTypes\");\nvar de_RollbackConfiguration = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.RollbackTriggers === \"\") {\n contents[_RTo] = [];\n } else if (output[_RTo] != null && output[_RTo][_m] != null) {\n contents[_RTo] = de_RollbackTriggers((0, import_smithy_client.getArrayIfSingleItem)(output[_RTo][_m]), context);\n }\n if (output[_MTIM] != null) {\n contents[_MTIM] = (0, import_smithy_client.strictParseInt32)(output[_MTIM]);\n }\n return contents;\n}, \"de_RollbackConfiguration\");\nvar de_RollbackStackOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_RollbackStackOutput\");\nvar de_RollbackTrigger = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n return contents;\n}, \"de_RollbackTrigger\");\nvar de_RollbackTriggers = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_RollbackTrigger(entry, context);\n });\n}, \"de_RollbackTriggers\");\nvar de_ScannedResource = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output.ResourceIdentifier === \"\") {\n contents[_RI] = {};\n } else if (output[_RI] != null && output[_RI][_e] != null) {\n contents[_RI] = de_JazzResourceIdentifierProperties((0, import_smithy_client.getArrayIfSingleItem)(output[_RI][_e]), context);\n }\n if (output[_MBS] != null) {\n contents[_MBS] = (0, import_smithy_client.parseBoolean)(output[_MBS]);\n }\n return contents;\n}, \"de_ScannedResource\");\nvar de_ScannedResources = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ScannedResource(entry, context);\n });\n}, \"de_ScannedResources\");\nvar de_Scope = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_Scope\");\nvar de_SetTypeConfigurationOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_CAonf] != null) {\n contents[_CAonf] = (0, import_smithy_client.expectString)(output[_CAonf]);\n }\n return contents;\n}, \"de_SetTypeConfigurationOutput\");\nvar de_SetTypeDefaultVersionOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_SetTypeDefaultVersionOutput\");\nvar de_Stack = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_CSIh] != null) {\n contents[_CSIh] = (0, import_smithy_client.expectString)(output[_CSIh]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output.Parameters === \"\") {\n contents[_P] = [];\n } else if (output[_P] != null && output[_P][_m] != null) {\n contents[_P] = de_Parameters((0, import_smithy_client.getArrayIfSingleItem)(output[_P][_m]), context);\n }\n if (output[_CTr] != null) {\n contents[_CTr] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTr]));\n }\n if (output[_DTel] != null) {\n contents[_DTel] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_DTel]));\n }\n if (output[_LUT] != null) {\n contents[_LUT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LUT]));\n }\n if (output[_RC] != null) {\n contents[_RC] = de_RollbackConfiguration(output[_RC], context);\n }\n if (output[_SSta] != null) {\n contents[_SSta] = (0, import_smithy_client.expectString)(output[_SSta]);\n }\n if (output[_SSR] != null) {\n contents[_SSR] = (0, import_smithy_client.expectString)(output[_SSR]);\n }\n if (output[_DR] != null) {\n contents[_DR] = (0, import_smithy_client.parseBoolean)(output[_DR]);\n }\n if (output.NotificationARNs === \"\") {\n contents[_NARN] = [];\n } else if (output[_NARN] != null && output[_NARN][_m] != null) {\n contents[_NARN] = de_NotificationARNs((0, import_smithy_client.getArrayIfSingleItem)(output[_NARN][_m]), context);\n }\n if (output[_TIM] != null) {\n contents[_TIM] = (0, import_smithy_client.strictParseInt32)(output[_TIM]);\n }\n if (output.Capabilities === \"\") {\n contents[_C] = [];\n } else if (output[_C] != null && output[_C][_m] != null) {\n contents[_C] = de_Capabilities((0, import_smithy_client.getArrayIfSingleItem)(output[_C][_m]), context);\n }\n if (output.Outputs === \"\") {\n contents[_O] = [];\n } else if (output[_O] != null && output[_O][_m] != null) {\n contents[_O] = de_Outputs((0, import_smithy_client.getArrayIfSingleItem)(output[_O][_m]), context);\n }\n if (output[_RARN] != null) {\n contents[_RARN] = (0, import_smithy_client.expectString)(output[_RARN]);\n }\n if (output.Tags === \"\") {\n contents[_Ta] = [];\n } else if (output[_Ta] != null && output[_Ta][_m] != null) {\n contents[_Ta] = de_Tags((0, import_smithy_client.getArrayIfSingleItem)(output[_Ta][_m]), context);\n }\n if (output[_ETP] != null) {\n contents[_ETP] = (0, import_smithy_client.parseBoolean)(output[_ETP]);\n }\n if (output[_PIa] != null) {\n contents[_PIa] = (0, import_smithy_client.expectString)(output[_PIa]);\n }\n if (output[_RIo] != null) {\n contents[_RIo] = (0, import_smithy_client.expectString)(output[_RIo]);\n }\n if (output[_DI] != null) {\n contents[_DI] = de_StackDriftInformation(output[_DI], context);\n }\n if (output[_REOC] != null) {\n contents[_REOC] = (0, import_smithy_client.parseBoolean)(output[_REOC]);\n }\n if (output[_DSeta] != null) {\n contents[_DSeta] = (0, import_smithy_client.expectString)(output[_DSeta]);\n }\n return contents;\n}, \"de_Stack\");\nvar de_StackDriftInformation = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SDS] != null) {\n contents[_SDS] = (0, import_smithy_client.expectString)(output[_SDS]);\n }\n if (output[_LCT] != null) {\n contents[_LCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LCT]));\n }\n return contents;\n}, \"de_StackDriftInformation\");\nvar de_StackDriftInformationSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SDS] != null) {\n contents[_SDS] = (0, import_smithy_client.expectString)(output[_SDS]);\n }\n if (output[_LCT] != null) {\n contents[_LCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LCT]));\n }\n return contents;\n}, \"de_StackDriftInformationSummary\");\nvar de_StackEvent = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_EI] != null) {\n contents[_EI] = (0, import_smithy_client.expectString)(output[_EI]);\n }\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_Ti] != null) {\n contents[_Ti] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_Ti]));\n }\n if (output[_RSeso] != null) {\n contents[_RSeso] = (0, import_smithy_client.expectString)(output[_RSeso]);\n }\n if (output[_RSR] != null) {\n contents[_RSR] = (0, import_smithy_client.expectString)(output[_RSR]);\n }\n if (output[_RPe] != null) {\n contents[_RPe] = (0, import_smithy_client.expectString)(output[_RPe]);\n }\n if (output[_CRT] != null) {\n contents[_CRT] = (0, import_smithy_client.expectString)(output[_CRT]);\n }\n if (output[_HT] != null) {\n contents[_HT] = (0, import_smithy_client.expectString)(output[_HT]);\n }\n if (output[_HS] != null) {\n contents[_HS] = (0, import_smithy_client.expectString)(output[_HS]);\n }\n if (output[_HSR] != null) {\n contents[_HSR] = (0, import_smithy_client.expectString)(output[_HSR]);\n }\n if (output[_HIP] != null) {\n contents[_HIP] = (0, import_smithy_client.expectString)(output[_HIP]);\n }\n if (output[_HFM] != null) {\n contents[_HFM] = (0, import_smithy_client.expectString)(output[_HFM]);\n }\n if (output[_DSeta] != null) {\n contents[_DSeta] = (0, import_smithy_client.expectString)(output[_DSeta]);\n }\n return contents;\n}, \"de_StackEvent\");\nvar de_StackEvents = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackEvent(entry, context);\n });\n}, \"de_StackEvents\");\nvar de_StackInstance = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SSI] != null) {\n contents[_SSI] = (0, import_smithy_client.expectString)(output[_SSI]);\n }\n if (output[_Reg] != null) {\n contents[_Reg] = (0, import_smithy_client.expectString)(output[_Reg]);\n }\n if (output[_Acc] != null) {\n contents[_Acc] = (0, import_smithy_client.expectString)(output[_Acc]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output.ParameterOverrides === \"\") {\n contents[_PO] = [];\n } else if (output[_PO] != null && output[_PO][_m] != null) {\n contents[_PO] = de_Parameters((0, import_smithy_client.getArrayIfSingleItem)(output[_PO][_m]), context);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SIS] != null) {\n contents[_SIS] = de_StackInstanceComprehensiveStatus(output[_SIS], context);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_OUIr] != null) {\n contents[_OUIr] = (0, import_smithy_client.expectString)(output[_OUIr]);\n }\n if (output[_DSr] != null) {\n contents[_DSr] = (0, import_smithy_client.expectString)(output[_DSr]);\n }\n if (output[_LDCT] != null) {\n contents[_LDCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LDCT]));\n }\n if (output[_LOI] != null) {\n contents[_LOI] = (0, import_smithy_client.expectString)(output[_LOI]);\n }\n return contents;\n}, \"de_StackInstance\");\nvar de_StackInstanceComprehensiveStatus = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_DSeta] != null) {\n contents[_DSeta] = (0, import_smithy_client.expectString)(output[_DSeta]);\n }\n return contents;\n}, \"de_StackInstanceComprehensiveStatus\");\nvar de_StackInstanceNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_StackInstanceNotFoundException\");\nvar de_StackInstanceResourceDriftsSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackInstanceResourceDriftsSummary(entry, context);\n });\n}, \"de_StackInstanceResourceDriftsSummaries\");\nvar de_StackInstanceResourceDriftsSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output.PhysicalResourceIdContext === \"\") {\n contents[_PRIC] = [];\n } else if (output[_PRIC] != null && output[_PRIC][_m] != null) {\n contents[_PRIC] = de_PhysicalResourceIdContext((0, import_smithy_client.getArrayIfSingleItem)(output[_PRIC][_m]), context);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output.PropertyDifferences === \"\") {\n contents[_PD] = [];\n } else if (output[_PD] != null && output[_PD][_m] != null) {\n contents[_PD] = de_PropertyDifferences((0, import_smithy_client.getArrayIfSingleItem)(output[_PD][_m]), context);\n }\n if (output[_SRDS] != null) {\n contents[_SRDS] = (0, import_smithy_client.expectString)(output[_SRDS]);\n }\n if (output[_Ti] != null) {\n contents[_Ti] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_Ti]));\n }\n return contents;\n}, \"de_StackInstanceResourceDriftsSummary\");\nvar de_StackInstanceSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackInstanceSummary(entry, context);\n });\n}, \"de_StackInstanceSummaries\");\nvar de_StackInstanceSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SSI] != null) {\n contents[_SSI] = (0, import_smithy_client.expectString)(output[_SSI]);\n }\n if (output[_Reg] != null) {\n contents[_Reg] = (0, import_smithy_client.expectString)(output[_Reg]);\n }\n if (output[_Acc] != null) {\n contents[_Acc] = (0, import_smithy_client.expectString)(output[_Acc]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_SIS] != null) {\n contents[_SIS] = de_StackInstanceComprehensiveStatus(output[_SIS], context);\n }\n if (output[_OUIr] != null) {\n contents[_OUIr] = (0, import_smithy_client.expectString)(output[_OUIr]);\n }\n if (output[_DSr] != null) {\n contents[_DSr] = (0, import_smithy_client.expectString)(output[_DSr]);\n }\n if (output[_LDCT] != null) {\n contents[_LDCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LDCT]));\n }\n if (output[_LOI] != null) {\n contents[_LOI] = (0, import_smithy_client.expectString)(output[_LOI]);\n }\n return contents;\n}, \"de_StackInstanceSummary\");\nvar de_StackNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_StackNotFoundException\");\nvar de_StackResource = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_Ti] != null) {\n contents[_Ti] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_Ti]));\n }\n if (output[_RSeso] != null) {\n contents[_RSeso] = (0, import_smithy_client.expectString)(output[_RSeso]);\n }\n if (output[_RSR] != null) {\n contents[_RSR] = (0, import_smithy_client.expectString)(output[_RSR]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_DI] != null) {\n contents[_DI] = de_StackResourceDriftInformation(output[_DI], context);\n }\n if (output[_MI] != null) {\n contents[_MI] = de_ModuleInfo(output[_MI], context);\n }\n return contents;\n}, \"de_StackResource\");\nvar de_StackResourceDetail = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_LUTa] != null) {\n contents[_LUTa] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LUTa]));\n }\n if (output[_RSeso] != null) {\n contents[_RSeso] = (0, import_smithy_client.expectString)(output[_RSeso]);\n }\n if (output[_RSR] != null) {\n contents[_RSR] = (0, import_smithy_client.expectString)(output[_RSR]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_Me] != null) {\n contents[_Me] = (0, import_smithy_client.expectString)(output[_Me]);\n }\n if (output[_DI] != null) {\n contents[_DI] = de_StackResourceDriftInformation(output[_DI], context);\n }\n if (output[_MI] != null) {\n contents[_MI] = de_ModuleInfo(output[_MI], context);\n }\n return contents;\n}, \"de_StackResourceDetail\");\nvar de_StackResourceDrift = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output.PhysicalResourceIdContext === \"\") {\n contents[_PRIC] = [];\n } else if (output[_PRIC] != null && output[_PRIC][_m] != null) {\n contents[_PRIC] = de_PhysicalResourceIdContext((0, import_smithy_client.getArrayIfSingleItem)(output[_PRIC][_m]), context);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_EP] != null) {\n contents[_EP] = (0, import_smithy_client.expectString)(output[_EP]);\n }\n if (output[_AP] != null) {\n contents[_AP] = (0, import_smithy_client.expectString)(output[_AP]);\n }\n if (output.PropertyDifferences === \"\") {\n contents[_PD] = [];\n } else if (output[_PD] != null && output[_PD][_m] != null) {\n contents[_PD] = de_PropertyDifferences((0, import_smithy_client.getArrayIfSingleItem)(output[_PD][_m]), context);\n }\n if (output[_SRDS] != null) {\n contents[_SRDS] = (0, import_smithy_client.expectString)(output[_SRDS]);\n }\n if (output[_Ti] != null) {\n contents[_Ti] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_Ti]));\n }\n if (output[_MI] != null) {\n contents[_MI] = de_ModuleInfo(output[_MI], context);\n }\n return contents;\n}, \"de_StackResourceDrift\");\nvar de_StackResourceDriftInformation = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SRDS] != null) {\n contents[_SRDS] = (0, import_smithy_client.expectString)(output[_SRDS]);\n }\n if (output[_LCT] != null) {\n contents[_LCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LCT]));\n }\n return contents;\n}, \"de_StackResourceDriftInformation\");\nvar de_StackResourceDriftInformationSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SRDS] != null) {\n contents[_SRDS] = (0, import_smithy_client.expectString)(output[_SRDS]);\n }\n if (output[_LCT] != null) {\n contents[_LCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LCT]));\n }\n return contents;\n}, \"de_StackResourceDriftInformationSummary\");\nvar de_StackResourceDrifts = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackResourceDrift(entry, context);\n });\n}, \"de_StackResourceDrifts\");\nvar de_StackResources = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackResource(entry, context);\n });\n}, \"de_StackResources\");\nvar de_StackResourceSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackResourceSummary(entry, context);\n });\n}, \"de_StackResourceSummaries\");\nvar de_StackResourceSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_LUTa] != null) {\n contents[_LUTa] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LUTa]));\n }\n if (output[_RSeso] != null) {\n contents[_RSeso] = (0, import_smithy_client.expectString)(output[_RSeso]);\n }\n if (output[_RSR] != null) {\n contents[_RSR] = (0, import_smithy_client.expectString)(output[_RSR]);\n }\n if (output[_DI] != null) {\n contents[_DI] = de_StackResourceDriftInformationSummary(output[_DI], context);\n }\n if (output[_MI] != null) {\n contents[_MI] = de_ModuleInfo(output[_MI], context);\n }\n return contents;\n}, \"de_StackResourceSummary\");\nvar de_Stacks = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_Stack(entry, context);\n });\n}, \"de_Stacks\");\nvar de_StackSet = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SSN] != null) {\n contents[_SSN] = (0, import_smithy_client.expectString)(output[_SSN]);\n }\n if (output[_SSI] != null) {\n contents[_SSI] = (0, import_smithy_client.expectString)(output[_SSI]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_TB] != null) {\n contents[_TB] = (0, import_smithy_client.expectString)(output[_TB]);\n }\n if (output.Parameters === \"\") {\n contents[_P] = [];\n } else if (output[_P] != null && output[_P][_m] != null) {\n contents[_P] = de_Parameters((0, import_smithy_client.getArrayIfSingleItem)(output[_P][_m]), context);\n }\n if (output.Capabilities === \"\") {\n contents[_C] = [];\n } else if (output[_C] != null && output[_C][_m] != null) {\n contents[_C] = de_Capabilities((0, import_smithy_client.getArrayIfSingleItem)(output[_C][_m]), context);\n }\n if (output.Tags === \"\") {\n contents[_Ta] = [];\n } else if (output[_Ta] != null && output[_Ta][_m] != null) {\n contents[_Ta] = de_Tags((0, import_smithy_client.getArrayIfSingleItem)(output[_Ta][_m]), context);\n }\n if (output[_SSARN] != null) {\n contents[_SSARN] = (0, import_smithy_client.expectString)(output[_SSARN]);\n }\n if (output[_ARARN] != null) {\n contents[_ARARN] = (0, import_smithy_client.expectString)(output[_ARARN]);\n }\n if (output[_ERN] != null) {\n contents[_ERN] = (0, import_smithy_client.expectString)(output[_ERN]);\n }\n if (output[_SSDDD] != null) {\n contents[_SSDDD] = de_StackSetDriftDetectionDetails(output[_SSDDD], context);\n }\n if (output[_AD] != null) {\n contents[_AD] = de_AutoDeployment(output[_AD], context);\n }\n if (output[_PM] != null) {\n contents[_PM] = (0, import_smithy_client.expectString)(output[_PM]);\n }\n if (output.OrganizationalUnitIds === \"\") {\n contents[_OUI] = [];\n } else if (output[_OUI] != null && output[_OUI][_m] != null) {\n contents[_OUI] = de_OrganizationalUnitIdList((0, import_smithy_client.getArrayIfSingleItem)(output[_OUI][_m]), context);\n }\n if (output[_ME] != null) {\n contents[_ME] = de_ManagedExecution(output[_ME], context);\n }\n if (output.Regions === \"\") {\n contents[_Re] = [];\n } else if (output[_Re] != null && output[_Re][_m] != null) {\n contents[_Re] = de_RegionList((0, import_smithy_client.getArrayIfSingleItem)(output[_Re][_m]), context);\n }\n return contents;\n}, \"de_StackSet\");\nvar de_StackSetAutoDeploymentTargetSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackSetAutoDeploymentTargetSummary(entry, context);\n });\n}, \"de_StackSetAutoDeploymentTargetSummaries\");\nvar de_StackSetAutoDeploymentTargetSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OUIr] != null) {\n contents[_OUIr] = (0, import_smithy_client.expectString)(output[_OUIr]);\n }\n if (output.Regions === \"\") {\n contents[_Re] = [];\n } else if (output[_Re] != null && output[_Re][_m] != null) {\n contents[_Re] = de_RegionList((0, import_smithy_client.getArrayIfSingleItem)(output[_Re][_m]), context);\n }\n return contents;\n}, \"de_StackSetAutoDeploymentTargetSummary\");\nvar de_StackSetDriftDetectionDetails = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_DSr] != null) {\n contents[_DSr] = (0, import_smithy_client.expectString)(output[_DSr]);\n }\n if (output[_DDS] != null) {\n contents[_DDS] = (0, import_smithy_client.expectString)(output[_DDS]);\n }\n if (output[_LDCT] != null) {\n contents[_LDCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LDCT]));\n }\n if (output[_TSIC] != null) {\n contents[_TSIC] = (0, import_smithy_client.strictParseInt32)(output[_TSIC]);\n }\n if (output[_DSIC] != null) {\n contents[_DSIC] = (0, import_smithy_client.strictParseInt32)(output[_DSIC]);\n }\n if (output[_ISSIC] != null) {\n contents[_ISSIC] = (0, import_smithy_client.strictParseInt32)(output[_ISSIC]);\n }\n if (output[_IPSIC] != null) {\n contents[_IPSIC] = (0, import_smithy_client.strictParseInt32)(output[_IPSIC]);\n }\n if (output[_FSIC] != null) {\n contents[_FSIC] = (0, import_smithy_client.strictParseInt32)(output[_FSIC]);\n }\n return contents;\n}, \"de_StackSetDriftDetectionDetails\");\nvar de_StackSetNotEmptyException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_StackSetNotEmptyException\");\nvar de_StackSetNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_StackSetNotFoundException\");\nvar de_StackSetOperation = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n if (output[_SSI] != null) {\n contents[_SSI] = (0, import_smithy_client.expectString)(output[_SSI]);\n }\n if (output[_A] != null) {\n contents[_A] = (0, import_smithy_client.expectString)(output[_A]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_OP] != null) {\n contents[_OP] = de_StackSetOperationPreferences(output[_OP], context);\n }\n if (output[_RSe] != null) {\n contents[_RSe] = (0, import_smithy_client.parseBoolean)(output[_RSe]);\n }\n if (output[_ARARN] != null) {\n contents[_ARARN] = (0, import_smithy_client.expectString)(output[_ARARN]);\n }\n if (output[_ERN] != null) {\n contents[_ERN] = (0, import_smithy_client.expectString)(output[_ERN]);\n }\n if (output[_CTre] != null) {\n contents[_CTre] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTre]));\n }\n if (output[_ETn] != null) {\n contents[_ETn] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_ETn]));\n }\n if (output[_DTep] != null) {\n contents[_DTep] = de_DeploymentTargets(output[_DTep], context);\n }\n if (output[_SSDDD] != null) {\n contents[_SSDDD] = de_StackSetDriftDetectionDetails(output[_SSDDD], context);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_SD] != null) {\n contents[_SD] = de_StackSetOperationStatusDetails(output[_SD], context);\n }\n return contents;\n}, \"de_StackSetOperation\");\nvar de_StackSetOperationPreferences = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RCT] != null) {\n contents[_RCT] = (0, import_smithy_client.expectString)(output[_RCT]);\n }\n if (output.RegionOrder === \"\") {\n contents[_RO] = [];\n } else if (output[_RO] != null && output[_RO][_m] != null) {\n contents[_RO] = de_RegionList((0, import_smithy_client.getArrayIfSingleItem)(output[_RO][_m]), context);\n }\n if (output[_FTC] != null) {\n contents[_FTC] = (0, import_smithy_client.strictParseInt32)(output[_FTC]);\n }\n if (output[_FTP] != null) {\n contents[_FTP] = (0, import_smithy_client.strictParseInt32)(output[_FTP]);\n }\n if (output[_MCC] != null) {\n contents[_MCC] = (0, import_smithy_client.strictParseInt32)(output[_MCC]);\n }\n if (output[_MCP] != null) {\n contents[_MCP] = (0, import_smithy_client.strictParseInt32)(output[_MCP]);\n }\n if (output[_CM] != null) {\n contents[_CM] = (0, import_smithy_client.expectString)(output[_CM]);\n }\n return contents;\n}, \"de_StackSetOperationPreferences\");\nvar de_StackSetOperationResultSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackSetOperationResultSummary(entry, context);\n });\n}, \"de_StackSetOperationResultSummaries\");\nvar de_StackSetOperationResultSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Acc] != null) {\n contents[_Acc] = (0, import_smithy_client.expectString)(output[_Acc]);\n }\n if (output[_Reg] != null) {\n contents[_Reg] = (0, import_smithy_client.expectString)(output[_Reg]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_AGR] != null) {\n contents[_AGR] = de_AccountGateResult(output[_AGR], context);\n }\n if (output[_OUIr] != null) {\n contents[_OUIr] = (0, import_smithy_client.expectString)(output[_OUIr]);\n }\n return contents;\n}, \"de_StackSetOperationResultSummary\");\nvar de_StackSetOperationStatusDetails = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_FSIC] != null) {\n contents[_FSIC] = (0, import_smithy_client.strictParseInt32)(output[_FSIC]);\n }\n return contents;\n}, \"de_StackSetOperationStatusDetails\");\nvar de_StackSetOperationSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackSetOperationSummary(entry, context);\n });\n}, \"de_StackSetOperationSummaries\");\nvar de_StackSetOperationSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n if (output[_A] != null) {\n contents[_A] = (0, import_smithy_client.expectString)(output[_A]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_CTre] != null) {\n contents[_CTre] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTre]));\n }\n if (output[_ETn] != null) {\n contents[_ETn] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_ETn]));\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_SD] != null) {\n contents[_SD] = de_StackSetOperationStatusDetails(output[_SD], context);\n }\n if (output[_OP] != null) {\n contents[_OP] = de_StackSetOperationPreferences(output[_OP], context);\n }\n return contents;\n}, \"de_StackSetOperationSummary\");\nvar de_StackSetSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackSetSummary(entry, context);\n });\n}, \"de_StackSetSummaries\");\nvar de_StackSetSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SSN] != null) {\n contents[_SSN] = (0, import_smithy_client.expectString)(output[_SSN]);\n }\n if (output[_SSI] != null) {\n contents[_SSI] = (0, import_smithy_client.expectString)(output[_SSI]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_AD] != null) {\n contents[_AD] = de_AutoDeployment(output[_AD], context);\n }\n if (output[_PM] != null) {\n contents[_PM] = (0, import_smithy_client.expectString)(output[_PM]);\n }\n if (output[_DSr] != null) {\n contents[_DSr] = (0, import_smithy_client.expectString)(output[_DSr]);\n }\n if (output[_LDCT] != null) {\n contents[_LDCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LDCT]));\n }\n if (output[_ME] != null) {\n contents[_ME] = de_ManagedExecution(output[_ME], context);\n }\n return contents;\n}, \"de_StackSetSummary\");\nvar de_StackSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackSummary(entry, context);\n });\n}, \"de_StackSummaries\");\nvar de_StackSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_TDe] != null) {\n contents[_TDe] = (0, import_smithy_client.expectString)(output[_TDe]);\n }\n if (output[_CTr] != null) {\n contents[_CTr] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTr]));\n }\n if (output[_LUT] != null) {\n contents[_LUT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LUT]));\n }\n if (output[_DTel] != null) {\n contents[_DTel] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_DTel]));\n }\n if (output[_SSta] != null) {\n contents[_SSta] = (0, import_smithy_client.expectString)(output[_SSta]);\n }\n if (output[_SSR] != null) {\n contents[_SSR] = (0, import_smithy_client.expectString)(output[_SSR]);\n }\n if (output[_PIa] != null) {\n contents[_PIa] = (0, import_smithy_client.expectString)(output[_PIa]);\n }\n if (output[_RIo] != null) {\n contents[_RIo] = (0, import_smithy_client.expectString)(output[_RIo]);\n }\n if (output[_DI] != null) {\n contents[_DI] = de_StackDriftInformationSummary(output[_DI], context);\n }\n return contents;\n}, \"de_StackSummary\");\nvar de_StageList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_StageList\");\nvar de_StaleRequestException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_StaleRequestException\");\nvar de_StartResourceScanOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RSI] != null) {\n contents[_RSI] = (0, import_smithy_client.expectString)(output[_RSI]);\n }\n return contents;\n}, \"de_StartResourceScanOutput\");\nvar de_StopStackSetOperationOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_StopStackSetOperationOutput\");\nvar de_SupportedMajorVersions = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.strictParseInt32)(entry);\n });\n}, \"de_SupportedMajorVersions\");\nvar de_Tag = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_K] != null) {\n contents[_K] = (0, import_smithy_client.expectString)(output[_K]);\n }\n if (output[_Val] != null) {\n contents[_Val] = (0, import_smithy_client.expectString)(output[_Val]);\n }\n return contents;\n}, \"de_Tag\");\nvar de_Tags = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_Tag(entry, context);\n });\n}, \"de_Tags\");\nvar de_TemplateConfiguration = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_DPe] != null) {\n contents[_DPe] = (0, import_smithy_client.expectString)(output[_DPe]);\n }\n if (output[_URP] != null) {\n contents[_URP] = (0, import_smithy_client.expectString)(output[_URP]);\n }\n return contents;\n}, \"de_TemplateConfiguration\");\nvar de_TemplateParameter = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PK] != null) {\n contents[_PK] = (0, import_smithy_client.expectString)(output[_PK]);\n }\n if (output[_DV] != null) {\n contents[_DV] = (0, import_smithy_client.expectString)(output[_DV]);\n }\n if (output[_NE] != null) {\n contents[_NE] = (0, import_smithy_client.parseBoolean)(output[_NE]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n return contents;\n}, \"de_TemplateParameter\");\nvar de_TemplateParameters = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_TemplateParameter(entry, context);\n });\n}, \"de_TemplateParameters\");\nvar de_TemplateProgress = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RSesou] != null) {\n contents[_RSesou] = (0, import_smithy_client.strictParseInt32)(output[_RSesou]);\n }\n if (output[_RF] != null) {\n contents[_RF] = (0, import_smithy_client.strictParseInt32)(output[_RF]);\n }\n if (output[_RPes] != null) {\n contents[_RPes] = (0, import_smithy_client.strictParseInt32)(output[_RPes]);\n }\n if (output[_RPeso] != null) {\n contents[_RPeso] = (0, import_smithy_client.strictParseInt32)(output[_RPeso]);\n }\n return contents;\n}, \"de_TemplateProgress\");\nvar de_TemplateSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_TemplateSummary(entry, context);\n });\n}, \"de_TemplateSummaries\");\nvar de_TemplateSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_GTI] != null) {\n contents[_GTI] = (0, import_smithy_client.expectString)(output[_GTI]);\n }\n if (output[_GTN] != null) {\n contents[_GTN] = (0, import_smithy_client.expectString)(output[_GTN]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_CTr] != null) {\n contents[_CTr] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTr]));\n }\n if (output[_LUT] != null) {\n contents[_LUT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LUT]));\n }\n if (output[_NOR] != null) {\n contents[_NOR] = (0, import_smithy_client.strictParseInt32)(output[_NOR]);\n }\n return contents;\n}, \"de_TemplateSummary\");\nvar de_TestTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_TVA] != null) {\n contents[_TVA] = (0, import_smithy_client.expectString)(output[_TVA]);\n }\n return contents;\n}, \"de_TestTypeOutput\");\nvar de_TokenAlreadyExistsException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_TokenAlreadyExistsException\");\nvar de_TransformsList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_TransformsList\");\nvar de_TypeConfigurationDetails = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n if (output[_Al] != null) {\n contents[_Al] = (0, import_smithy_client.expectString)(output[_Al]);\n }\n if (output[_Co] != null) {\n contents[_Co] = (0, import_smithy_client.expectString)(output[_Co]);\n }\n if (output[_LU] != null) {\n contents[_LU] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LU]));\n }\n if (output[_TA] != null) {\n contents[_TA] = (0, import_smithy_client.expectString)(output[_TA]);\n }\n if (output[_TN] != null) {\n contents[_TN] = (0, import_smithy_client.expectString)(output[_TN]);\n }\n if (output[_IDC] != null) {\n contents[_IDC] = (0, import_smithy_client.parseBoolean)(output[_IDC]);\n }\n return contents;\n}, \"de_TypeConfigurationDetails\");\nvar de_TypeConfigurationDetailsList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_TypeConfigurationDetails(entry, context);\n });\n}, \"de_TypeConfigurationDetailsList\");\nvar de_TypeConfigurationIdentifier = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_TA] != null) {\n contents[_TA] = (0, import_smithy_client.expectString)(output[_TA]);\n }\n if (output[_TCA] != null) {\n contents[_TCA] = (0, import_smithy_client.expectString)(output[_TCA]);\n }\n if (output[_TCAy] != null) {\n contents[_TCAy] = (0, import_smithy_client.expectString)(output[_TCAy]);\n }\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n if (output[_TN] != null) {\n contents[_TN] = (0, import_smithy_client.expectString)(output[_TN]);\n }\n return contents;\n}, \"de_TypeConfigurationIdentifier\");\nvar de_TypeConfigurationNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_TypeConfigurationNotFoundException\");\nvar de_TypeNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_TypeNotFoundException\");\nvar de_TypeSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_TypeSummary(entry, context);\n });\n}, \"de_TypeSummaries\");\nvar de_TypeSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n if (output[_TN] != null) {\n contents[_TN] = (0, import_smithy_client.expectString)(output[_TN]);\n }\n if (output[_DVI] != null) {\n contents[_DVI] = (0, import_smithy_client.expectString)(output[_DVI]);\n }\n if (output[_TA] != null) {\n contents[_TA] = (0, import_smithy_client.expectString)(output[_TA]);\n }\n if (output[_LU] != null) {\n contents[_LU] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LU]));\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_PI] != null) {\n contents[_PI] = (0, import_smithy_client.expectString)(output[_PI]);\n }\n if (output[_OTN] != null) {\n contents[_OTN] = (0, import_smithy_client.expectString)(output[_OTN]);\n }\n if (output[_PVN] != null) {\n contents[_PVN] = (0, import_smithy_client.expectString)(output[_PVN]);\n }\n if (output[_LPV] != null) {\n contents[_LPV] = (0, import_smithy_client.expectString)(output[_LPV]);\n }\n if (output[_PIu] != null) {\n contents[_PIu] = (0, import_smithy_client.expectString)(output[_PIu]);\n }\n if (output[_PN] != null) {\n contents[_PN] = (0, import_smithy_client.expectString)(output[_PN]);\n }\n if (output[_IA] != null) {\n contents[_IA] = (0, import_smithy_client.parseBoolean)(output[_IA]);\n }\n return contents;\n}, \"de_TypeSummary\");\nvar de_TypeVersionSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_TypeVersionSummary(entry, context);\n });\n}, \"de_TypeVersionSummaries\");\nvar de_TypeVersionSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n if (output[_TN] != null) {\n contents[_TN] = (0, import_smithy_client.expectString)(output[_TN]);\n }\n if (output[_VI] != null) {\n contents[_VI] = (0, import_smithy_client.expectString)(output[_VI]);\n }\n if (output[_IDV] != null) {\n contents[_IDV] = (0, import_smithy_client.parseBoolean)(output[_IDV]);\n }\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n if (output[_TCi] != null) {\n contents[_TCi] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_TCi]));\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_PVN] != null) {\n contents[_PVN] = (0, import_smithy_client.expectString)(output[_PVN]);\n }\n return contents;\n}, \"de_TypeVersionSummary\");\nvar de_UnprocessedTypeConfigurations = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_TypeConfigurationIdentifier(entry, context);\n });\n}, \"de_UnprocessedTypeConfigurations\");\nvar de_UpdateGeneratedTemplateOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_GTI] != null) {\n contents[_GTI] = (0, import_smithy_client.expectString)(output[_GTI]);\n }\n return contents;\n}, \"de_UpdateGeneratedTemplateOutput\");\nvar de_UpdateStackInstancesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n return contents;\n}, \"de_UpdateStackInstancesOutput\");\nvar de_UpdateStackOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_UpdateStackOutput\");\nvar de_UpdateStackSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n return contents;\n}, \"de_UpdateStackSetOutput\");\nvar de_UpdateTerminationProtectionOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_UpdateTerminationProtectionOutput\");\nvar de_ValidateTemplateOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Parameters === \"\") {\n contents[_P] = [];\n } else if (output[_P] != null && output[_P][_m] != null) {\n contents[_P] = de_TemplateParameters((0, import_smithy_client.getArrayIfSingleItem)(output[_P][_m]), context);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output.Capabilities === \"\") {\n contents[_C] = [];\n } else if (output[_C] != null && output[_C][_m] != null) {\n contents[_C] = de_Capabilities((0, import_smithy_client.getArrayIfSingleItem)(output[_C][_m]), context);\n }\n if (output[_CR] != null) {\n contents[_CR] = (0, import_smithy_client.expectString)(output[_CR]);\n }\n if (output.DeclaredTransforms === \"\") {\n contents[_DTec] = [];\n } else if (output[_DTec] != null && output[_DTec][_m] != null) {\n contents[_DTec] = de_TransformsList((0, import_smithy_client.getArrayIfSingleItem)(output[_DTec][_m]), context);\n }\n return contents;\n}, \"de_ValidateTemplateOutput\");\nvar de_WarningDetail = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n if (output.Properties === \"\") {\n contents[_Pro] = [];\n } else if (output[_Pro] != null && output[_Pro][_m] != null) {\n contents[_Pro] = de_WarningProperties((0, import_smithy_client.getArrayIfSingleItem)(output[_Pro][_m]), context);\n }\n return contents;\n}, \"de_WarningDetail\");\nvar de_WarningDetails = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_WarningDetail(entry, context);\n });\n}, \"de_WarningDetails\");\nvar de_WarningProperties = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_WarningProperty(entry, context);\n });\n}, \"de_WarningProperties\");\nvar de_WarningProperty = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PPr] != null) {\n contents[_PPr] = (0, import_smithy_client.expectString)(output[_PPr]);\n }\n if (output[_Req] != null) {\n contents[_Req] = (0, import_smithy_client.parseBoolean)(output[_Req]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n return contents;\n}, \"de_WarningProperty\");\nvar de_Warnings = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.UnrecognizedResourceTypes === \"\") {\n contents[_URT] = [];\n } else if (output[_URT] != null && output[_URT][_m] != null) {\n contents[_URT] = de_ResourceTypes((0, import_smithy_client.getArrayIfSingleItem)(output[_URT][_m]), context);\n }\n return contents;\n}, \"de_Warnings\");\nvar deserializeMetadata = /* @__PURE__ */ __name((output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"]\n}), \"deserializeMetadata\");\nvar throwDefaultError = (0, import_smithy_client.withBaseException)(CloudFormationServiceException);\nvar buildHttpRpcRequest = /* @__PURE__ */ __name(async (context, headers, path, resolvedHostname, body) => {\n const { hostname, protocol = \"https\", port, path: basePath } = await context.endpoint();\n const contents = {\n protocol,\n hostname,\n port,\n method: \"POST\",\n path: basePath.endsWith(\"/\") ? basePath.slice(0, -1) + path : basePath + path,\n headers\n };\n if (resolvedHostname !== void 0) {\n contents.hostname = resolvedHostname;\n }\n if (body !== void 0) {\n contents.body = body;\n }\n return new import_protocol_http.HttpRequest(contents);\n}, \"buildHttpRpcRequest\");\nvar SHARED_HEADERS = {\n \"content-type\": \"application/x-www-form-urlencoded\"\n};\nvar _ = \"2010-05-15\";\nvar _A = \"Action\";\nvar _AC = \"AfterContext\";\nvar _ACT = \"AttributeChangeType\";\nvar _AD = \"AutoDeployment\";\nvar _AFT = \"AccountFilterType\";\nvar _AGR = \"AccountGateResult\";\nvar _AL = \"AccountLimits\";\nvar _AOA = \"ActivateOrganizationsAccess\";\nvar _AP = \"ActualProperties\";\nvar _AR = \"AddResources\";\nvar _ARARN = \"AdministrationRoleARN\";\nvar _AT = \"ActivateType\";\nvar _ATAC = \"AcceptTermsAndConditions\";\nvar _AU = \"AutoUpdate\";\nvar _AUc = \"AccountsUrl\";\nvar _AV = \"AllowedValues\";\nvar _AVc = \"ActualValue\";\nvar _AVf = \"AfterValue\";\nvar _Ac = \"Accounts\";\nvar _Acc = \"Account\";\nvar _Act = \"Active\";\nvar _Al = \"Alias\";\nvar _Ar = \"Arn\";\nvar _At = \"Attribute\";\nvar _BC = \"BeforeContext\";\nvar _BDTC = \"BatchDescribeTypeConfigurations\";\nvar _BT = \"BearerToken\";\nvar _BV = \"BeforeValue\";\nvar _C = \"Capabilities\";\nvar _CA = \"CallAs\";\nvar _CAo = \"ConnectionArn\";\nvar _CAon = \"ConfigurationAlias\";\nvar _CAonf = \"ConfigurationArn\";\nvar _CCS = \"CreateChangeSet\";\nvar _CE = \"CausingEntity\";\nvar _CGT = \"CreateGeneratedTemplate\";\nvar _CM = \"ConcurrencyMode\";\nvar _COS = \"CurrentOperationStatus\";\nvar _CR = \"CapabilitiesReason\";\nvar _CRT = \"ClientRequestToken\";\nvar _CS = \"CreateStack\";\nvar _CSI = \"CreateStackInstances\";\nvar _CSIh = \"ChangeSetId\";\nvar _CSN = \"ChangeSetName\";\nvar _CSS = \"CreateStackSet\";\nvar _CST = \"ChangeSetType\";\nvar _CSh = \"ChangeSource\";\nvar _CSo = \"ConfigurationSchema\";\nvar _CT = \"ClientToken\";\nvar _CTr = \"CreationTime\";\nvar _CTre = \"CreationTimestamp\";\nvar _CUR = \"ContinueUpdateRollback\";\nvar _CUS = \"CancelUpdateStack\";\nvar _Ca = \"Category\";\nvar _Ch = \"Changes\";\nvar _Co = \"Configuration\";\nvar _D = \"Description\";\nvar _DAL = \"DescribeAccountLimits\";\nvar _DCS = \"DeleteChangeSet\";\nvar _DCSH = \"DescribeChangeSetHooks\";\nvar _DCSe = \"DescribeChangeSet\";\nvar _DDS = \"DriftDetectionStatus\";\nvar _DGT = \"DeleteGeneratedTemplate\";\nvar _DGTe = \"DescribeGeneratedTemplate\";\nvar _DI = \"DriftInformation\";\nvar _DOA = \"DeactivateOrganizationsAccess\";\nvar _DOAe = \"DescribeOrganizationsAccess\";\nvar _DP = \"DescribePublisher\";\nvar _DPe = \"DeletionPolicy\";\nvar _DR = \"DisableRollback\";\nvar _DRS = \"DescribeResourceScan\";\nvar _DS = \"DeleteStack\";\nvar _DSD = \"DetectStackDrift\";\nvar _DSDDS = \"DescribeStackDriftDetectionStatus\";\nvar _DSE = \"DescribeStackEvents\";\nvar _DSI = \"DeleteStackInstances\";\nvar _DSIC = \"DriftedStackInstancesCount\";\nvar _DSIe = \"DescribeStackInstance\";\nvar _DSR = \"DescribeStackResource\";\nvar _DSRC = \"DriftedStackResourceCount\";\nvar _DSRD = \"DescribeStackResourceDrifts\";\nvar _DSRDe = \"DetectStackResourceDrift\";\nvar _DSRe = \"DescribeStackResources\";\nvar _DSRet = \"DetectionStatusReason\";\nvar _DSS = \"DeleteStackSet\";\nvar _DSSD = \"DetectStackSetDrift\";\nvar _DSSO = \"DescribeStackSetOperation\";\nvar _DSSe = \"DescribeStackSet\";\nvar _DSe = \"DescribeStacks\";\nvar _DSep = \"DeprecatedStatus\";\nvar _DSet = \"DetectionStatus\";\nvar _DSeta = \"DetailedStatus\";\nvar _DSr = \"DriftStatus\";\nvar _DT = \"DeactivateType\";\nvar _DTR = \"DescribeTypeRegistration\";\nvar _DTe = \"DeregisterType\";\nvar _DTec = \"DeclaredTransforms\";\nvar _DTel = \"DeletionTime\";\nvar _DTep = \"DeploymentTargets\";\nvar _DTes = \"DescribeType\";\nvar _DTi = \"DifferenceType\";\nvar _DU = \"DocumentationUrl\";\nvar _DV = \"DefaultValue\";\nvar _DVI = \"DefaultVersionId\";\nvar _De = \"Details\";\nvar _E = \"Enabled\";\nvar _EC = \"ErrorCode\";\nvar _ECS = \"ExecuteChangeSet\";\nvar _EI = \"EventId\";\nvar _EM = \"ErrorMessage\";\nvar _EN = \"ExportName\";\nvar _EP = \"ExpectedProperties\";\nvar _ERA = \"ExecutionRoleArn\";\nvar _ERN = \"ExecutionRoleName\";\nvar _ES = \"ExecutionStatus\";\nvar _ESI = \"ExportingStackId\";\nvar _ET = \"EndTime\";\nvar _ETC = \"EstimateTemplateCost\";\nvar _ETP = \"EnableTerminationProtection\";\nvar _ETn = \"EndTimestamp\";\nvar _EV = \"ExpectedValue\";\nvar _Er = \"Errors\";\nvar _Ev = \"Evaluation\";\nvar _Ex = \"Exports\";\nvar _F = \"Format\";\nvar _FM = \"FailureMode\";\nvar _FSIC = \"FailedStackInstancesCount\";\nvar _FTC = \"FailureToleranceCount\";\nvar _FTP = \"FailureTolerancePercentage\";\nvar _Fi = \"Filters\";\nvar _GGT = \"GetGeneratedTemplate\";\nvar _GSP = \"GetStackPolicy\";\nvar _GT = \"GetTemplate\";\nvar _GTI = \"GeneratedTemplateId\";\nvar _GTN = \"GeneratedTemplateName\";\nvar _GTS = \"GetTemplateSummary\";\nvar _H = \"Hooks\";\nvar _HFM = \"HookFailureMode\";\nvar _HIC = \"HookInvocationCount\";\nvar _HIP = \"HookInvocationPoint\";\nvar _HS = \"HookStatus\";\nvar _HSR = \"HookStatusReason\";\nvar _HT = \"HookType\";\nvar _I = \"Id\";\nvar _IA = \"IsActivated\";\nvar _IDC = \"IsDefaultConfiguration\";\nvar _IDV = \"IsDefaultVersion\";\nvar _IER = \"ImportExistingResources\";\nvar _INS = \"IncludeNestedStacks\";\nvar _IP = \"InvocationPoint\";\nvar _IPSIC = \"InProgressStackInstancesCount\";\nvar _IPV = \"IncludePropertyValues\";\nvar _IPd = \"IdentityProvider\";\nvar _ISSIC = \"InSyncStackInstancesCount\";\nvar _ISTSS = \"ImportStacksToStackSet\";\nvar _Im = \"Imports\";\nvar _K = \"Key\";\nvar _LC = \"LoggingConfig\";\nvar _LCS = \"ListChangeSets\";\nvar _LCT = \"LastCheckTimestamp\";\nvar _LDB = \"LogDeliveryBucket\";\nvar _LDCT = \"LastDriftCheckTimestamp\";\nvar _LE = \"ListExports\";\nvar _LGN = \"LogGroupName\";\nvar _LGT = \"ListGeneratedTemplates\";\nvar _LI = \"ListImports\";\nvar _LIH = \"LogicalIdHierarchy\";\nvar _LOI = \"LastOperationId\";\nvar _LPV = \"LatestPublicVersion\";\nvar _LRA = \"LogRoleArn\";\nvar _LRI = \"LogicalResourceId\";\nvar _LRIo = \"LogicalResourceIds\";\nvar _LRS = \"ListResourceScans\";\nvar _LRSR = \"ListResourceScanResources\";\nvar _LRSRR = \"ListResourceScanRelatedResources\";\nvar _LS = \"ListStacks\";\nvar _LSI = \"ListStackInstances\";\nvar _LSIRD = \"ListStackInstanceResourceDrifts\";\nvar _LSR = \"ListStackResources\";\nvar _LSS = \"ListStackSets\";\nvar _LSSADT = \"ListStackSetAutoDeploymentTargets\";\nvar _LSSO = \"ListStackSetOperations\";\nvar _LSSOR = \"ListStackSetOperationResults\";\nvar _LT = \"ListTypes\";\nvar _LTR = \"ListTypeRegistrations\";\nvar _LTV = \"ListTypeVersions\";\nvar _LU = \"LastUpdated\";\nvar _LUT = \"LastUpdatedTime\";\nvar _LUTa = \"LastUpdatedTimestamp\";\nvar _M = \"Message\";\nvar _MBS = \"ManagedByStack\";\nvar _MCC = \"MaxConcurrentCount\";\nvar _MCP = \"MaxConcurrentPercentage\";\nvar _ME = \"ManagedExecution\";\nvar _MI = \"ModuleInfo\";\nvar _MR = \"MaxResults\";\nvar _MTIM = \"MonitoringTimeInMinutes\";\nvar _MV = \"MajorVersion\";\nvar _Me = \"Metadata\";\nvar _N = \"Name\";\nvar _NARN = \"NotificationARNs\";\nvar _NE = \"NoEcho\";\nvar _NGTN = \"NewGeneratedTemplateName\";\nvar _NOR = \"NumberOfResources\";\nvar _NT = \"NextToken\";\nvar _O = \"Outputs\";\nvar _OF = \"OnFailure\";\nvar _OI = \"OperationId\";\nvar _OK = \"OutputKey\";\nvar _OP = \"OperationPreferences\";\nvar _OS = \"OperationStatus\";\nvar _OSF = \"OnStackFailure\";\nvar _OTA = \"OriginalTypeArn\";\nvar _OTN = \"OriginalTypeName\";\nvar _OUI = \"OrganizationalUnitIds\";\nvar _OUIr = \"OrganizationalUnitId\";\nvar _OV = \"OutputValue\";\nvar _P = \"Parameters\";\nvar _PA = \"PolicyAction\";\nvar _PC = \"PercentageCompleted\";\nvar _PCSI = \"ParentChangeSetId\";\nvar _PCa = \"ParameterConstraints\";\nvar _PD = \"PropertyDifferences\";\nvar _PI = \"PublisherId\";\nvar _PIa = \"ParentId\";\nvar _PIu = \"PublisherIdentity\";\nvar _PK = \"ParameterKey\";\nvar _PM = \"PermissionModel\";\nvar _PN = \"PublisherName\";\nvar _PO = \"ParameterOverrides\";\nvar _PP = \"PublisherProfile\";\nvar _PPr = \"PropertyPath\";\nvar _PRI = \"PhysicalResourceId\";\nvar _PRIC = \"PhysicalResourceIdContext\";\nvar _PS = \"PublisherStatus\";\nvar _PSr = \"ProgressStatus\";\nvar _PT = \"PublishType\";\nvar _PTA = \"PublicTypeArn\";\nvar _PTa = \"ParameterType\";\nvar _PTr = \"ProvisioningType\";\nvar _PV = \"ParameterValue\";\nvar _PVN = \"PublicVersionNumber\";\nvar _Pa = \"Path\";\nvar _Pr = \"Progress\";\nvar _Pro = \"Properties\";\nvar _R = \"Resources\";\nvar _RA = \"ResourceAction\";\nvar _RAR = \"RefreshAllResources\";\nvar _RARN = \"RoleARN\";\nvar _RAT = \"RequiredActivatedTypes\";\nvar _RC = \"RollbackConfiguration\";\nvar _RCSI = \"RootChangeSetId\";\nvar _RCT = \"RegionConcurrencyType\";\nvar _RCe = \"ResourceChange\";\nvar _REOC = \"RetainExceptOnCreate\";\nvar _RF = \"ResourcesFailed\";\nvar _RHP = \"RecordHandlerProgress\";\nvar _RI = \"ResourceIdentifier\";\nvar _RIS = \"ResourceIdentifierSummaries\";\nvar _RIe = \"ResourceIdentifiers\";\nvar _RIo = \"RootId\";\nvar _RM = \"ResourceModel\";\nvar _RO = \"RegionOrder\";\nvar _RP = \"RegisterPublisher\";\nvar _RPe = \"ResourceProperties\";\nvar _RPes = \"ResourcesProcessing\";\nvar _RPeso = \"ResourcesPending\";\nvar _RR = \"RetainResources\";\nvar _RRe = \"RemoveResources\";\nvar _RRel = \"RelatedResources\";\nvar _RReq = \"RequiresRecreation\";\nvar _RRes = \"ResourcesRead\";\nvar _RS = \"RollbackStack\";\nvar _RSF = \"RegistrationStatusFilter\";\nvar _RSI = \"ResourceScanId\";\nvar _RSOAR = \"RetainStacksOnAccountRemoval\";\nvar _RSR = \"ResourceStatusReason\";\nvar _RSS = \"ResourceScanSummaries\";\nvar _RSe = \"RetainStacks\";\nvar _RSes = \"ResourcesScanned\";\nvar _RSeso = \"ResourceStatus\";\nvar _RSesou = \"ResourcesSucceeded\";\nvar _RT = \"RegisterType\";\nvar _RTD = \"ResourceTargetDetails\";\nvar _RTI = \"ResourcesToImport\";\nvar _RTL = \"RegistrationTokenList\";\nvar _RTP = \"ResourceTypePrefix\";\nvar _RTS = \"ResourcesToSkip\";\nvar _RTe = \"ResourceTypes\";\nvar _RTeg = \"RegistrationToken\";\nvar _RTes = \"ResourceType\";\nvar _RTo = \"RollbackTriggers\";\nvar _RV = \"ResolvedValue\";\nvar _Re = \"Regions\";\nvar _Reg = \"Region\";\nvar _Rep = \"Replacement\";\nvar _Req = \"Required\";\nvar _S = \"Status\";\nvar _SA = \"StagesAvailable\";\nvar _SD = \"StatusDetails\";\nvar _SDDI = \"StackDriftDetectionId\";\nvar _SDS = \"StackDriftStatus\";\nvar _SE = \"StackEvents\";\nvar _SHP = \"SchemaHandlerPackage\";\nvar _SI = \"StackId\";\nvar _SIA = \"StackInstanceAccount\";\nvar _SIR = \"StackInstanceRegion\";\nvar _SIRDS = \"StackInstanceResourceDriftStatuses\";\nvar _SIS = \"StackInstanceStatus\";\nvar _SIU = \"StackIdsUrl\";\nvar _SIt = \"StackIds\";\nvar _SIta = \"StackInstance\";\nvar _SM = \"StatusMessage\";\nvar _SMV = \"SupportedMajorVersions\";\nvar _SN = \"StackName\";\nvar _SPB = \"StackPolicyBody\";\nvar _SPDUB = \"StackPolicyDuringUpdateBody\";\nvar _SPDUURL = \"StackPolicyDuringUpdateURL\";\nvar _SPURL = \"StackPolicyURL\";\nvar _SR = \"SignalResource\";\nvar _SRD = \"StackResourceDrifts\";\nvar _SRDS = \"StackResourceDriftStatus\";\nvar _SRDSF = \"StackResourceDriftStatusFilters\";\nvar _SRDt = \"StackResourceDetail\";\nvar _SRDta = \"StackResourceDrift\";\nvar _SRS = \"StartResourceScan\";\nvar _SRSt = \"StackResourceSummaries\";\nvar _SRt = \"StatusReason\";\nvar _SRta = \"StackResources\";\nvar _SS = \"StackSet\";\nvar _SSARN = \"StackSetARN\";\nvar _SSDDD = \"StackSetDriftDetectionDetails\";\nvar _SSF = \"StackStatusFilter\";\nvar _SSI = \"StackSetId\";\nvar _SSN = \"StackSetName\";\nvar _SSO = \"StackSetOperation\";\nvar _SSP = \"SetStackPolicy\";\nvar _SSR = \"StackStatusReason\";\nvar _SSSO = \"StopStackSetOperation\";\nvar _SSt = \"StackSummaries\";\nvar _SSta = \"StackStatus\";\nvar _ST = \"StartTime\";\nvar _STC = \"SetTypeConfiguration\";\nvar _STDV = \"SetTypeDefaultVersion\";\nvar _SU = \"SourceUrl\";\nvar _Sc = \"Schema\";\nvar _Sco = \"Scope\";\nvar _St = \"Stacks\";\nvar _Su = \"Summaries\";\nvar _T = \"Type\";\nvar _TA = \"TypeArn\";\nvar _TB = \"TemplateBody\";\nvar _TC = \"TemplateConfiguration\";\nvar _TCA = \"TypeConfigurationAlias\";\nvar _TCAy = \"TypeConfigurationArn\";\nvar _TCI = \"TypeConfigurationIdentifiers\";\nvar _TCIy = \"TypeConfigurationIdentifier\";\nvar _TCVI = \"TypeConfigurationVersionId\";\nvar _TCi = \"TimeCreated\";\nvar _TCy = \"TypeConfigurations\";\nvar _TD = \"TargetDetails\";\nvar _TDe = \"TemplateDescription\";\nvar _TH = \"TypeHierarchy\";\nvar _TIM = \"TimeoutInMinutes\";\nvar _TK = \"TagKey\";\nvar _TN = \"TypeName\";\nvar _TNA = \"TypeNameAlias\";\nvar _TNP = \"TypeNamePrefix\";\nvar _TS = \"TemplateStage\";\nvar _TSC = \"TemplateSummaryConfig\";\nvar _TSIC = \"TotalStackInstancesCount\";\nvar _TSy = \"TypeSummaries\";\nvar _TT = \"TestType\";\nvar _TTS = \"TypeTestsStatus\";\nvar _TTSD = \"TypeTestsStatusDescription\";\nvar _TTa = \"TargetType\";\nvar _TURL = \"TemplateURL\";\nvar _TURTAW = \"TreatUnrecognizedResourceTypesAsWarnings\";\nvar _TV = \"TagValue\";\nvar _TVA = \"TypeVersionArn\";\nvar _TVI = \"TypeVersionId\";\nvar _TVS = \"TypeVersionSummaries\";\nvar _TW = \"TotalWarnings\";\nvar _Ta = \"Tags\";\nvar _Tar = \"Target\";\nvar _Ti = \"Timestamp\";\nvar _U = \"Url\";\nvar _UGT = \"UpdateGeneratedTemplate\";\nvar _UI = \"UniqueId\";\nvar _UPT = \"UsePreviousTemplate\";\nvar _UPV = \"UsePreviousValue\";\nvar _URP = \"UpdateReplacePolicy\";\nvar _URT = \"UnrecognizedResourceTypes\";\nvar _US = \"UpdateStack\";\nvar _USI = \"UpdateStackInstances\";\nvar _USS = \"UpdateStackSet\";\nvar _UTC = \"UnprocessedTypeConfigurations\";\nvar _UTP = \"UpdateTerminationProtection\";\nvar _V = \"Version\";\nvar _VB = \"VersionBump\";\nvar _VI = \"VersionId\";\nvar _VT = \"ValidateTemplate\";\nvar _Va = \"Values\";\nvar _Val = \"Value\";\nvar _Vi = \"Visibility\";\nvar _W = \"Warnings\";\nvar _e = \"entry\";\nvar _m = \"member\";\nvar buildFormUrlencodedString = /* @__PURE__ */ __name((formEntries) => Object.entries(formEntries).map(([key, value]) => (0, import_smithy_client.extendedEncodeURIComponent)(key) + \"=\" + (0, import_smithy_client.extendedEncodeURIComponent)(value)).join(\"&\"), \"buildFormUrlencodedString\");\nvar loadQueryErrorCode = /* @__PURE__ */ __name((output, data) => {\n var _a;\n if (((_a = data.Error) == null ? void 0 : _a.Code) !== void 0) {\n return data.Error.Code;\n }\n if (output.statusCode == 404) {\n return \"NotFound\";\n }\n}, \"loadQueryErrorCode\");\n\n// src/commands/ActivateOrganizationsAccessCommand.ts\nvar _ActivateOrganizationsAccessCommand = class _ActivateOrganizationsAccessCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ActivateOrganizationsAccess\", {}).n(\"CloudFormationClient\", \"ActivateOrganizationsAccessCommand\").f(void 0, void 0).ser(se_ActivateOrganizationsAccessCommand).de(de_ActivateOrganizationsAccessCommand).build() {\n};\n__name(_ActivateOrganizationsAccessCommand, \"ActivateOrganizationsAccessCommand\");\nvar ActivateOrganizationsAccessCommand = _ActivateOrganizationsAccessCommand;\n\n// src/commands/ActivateTypeCommand.ts\n\n\n\n\nvar _ActivateTypeCommand = class _ActivateTypeCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ActivateType\", {}).n(\"CloudFormationClient\", \"ActivateTypeCommand\").f(void 0, void 0).ser(se_ActivateTypeCommand).de(de_ActivateTypeCommand).build() {\n};\n__name(_ActivateTypeCommand, \"ActivateTypeCommand\");\nvar ActivateTypeCommand = _ActivateTypeCommand;\n\n// src/commands/BatchDescribeTypeConfigurationsCommand.ts\n\n\n\n\nvar _BatchDescribeTypeConfigurationsCommand = class _BatchDescribeTypeConfigurationsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"BatchDescribeTypeConfigurations\", {}).n(\"CloudFormationClient\", \"BatchDescribeTypeConfigurationsCommand\").f(void 0, void 0).ser(se_BatchDescribeTypeConfigurationsCommand).de(de_BatchDescribeTypeConfigurationsCommand).build() {\n};\n__name(_BatchDescribeTypeConfigurationsCommand, \"BatchDescribeTypeConfigurationsCommand\");\nvar BatchDescribeTypeConfigurationsCommand = _BatchDescribeTypeConfigurationsCommand;\n\n// src/commands/CancelUpdateStackCommand.ts\n\n\n\n\nvar _CancelUpdateStackCommand = class _CancelUpdateStackCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"CancelUpdateStack\", {}).n(\"CloudFormationClient\", \"CancelUpdateStackCommand\").f(void 0, void 0).ser(se_CancelUpdateStackCommand).de(de_CancelUpdateStackCommand).build() {\n};\n__name(_CancelUpdateStackCommand, \"CancelUpdateStackCommand\");\nvar CancelUpdateStackCommand = _CancelUpdateStackCommand;\n\n// src/commands/ContinueUpdateRollbackCommand.ts\n\n\n\n\nvar _ContinueUpdateRollbackCommand = class _ContinueUpdateRollbackCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ContinueUpdateRollback\", {}).n(\"CloudFormationClient\", \"ContinueUpdateRollbackCommand\").f(void 0, void 0).ser(se_ContinueUpdateRollbackCommand).de(de_ContinueUpdateRollbackCommand).build() {\n};\n__name(_ContinueUpdateRollbackCommand, \"ContinueUpdateRollbackCommand\");\nvar ContinueUpdateRollbackCommand = _ContinueUpdateRollbackCommand;\n\n// src/commands/CreateChangeSetCommand.ts\n\n\n\n\nvar _CreateChangeSetCommand = class _CreateChangeSetCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"CreateChangeSet\", {}).n(\"CloudFormationClient\", \"CreateChangeSetCommand\").f(void 0, void 0).ser(se_CreateChangeSetCommand).de(de_CreateChangeSetCommand).build() {\n};\n__name(_CreateChangeSetCommand, \"CreateChangeSetCommand\");\nvar CreateChangeSetCommand = _CreateChangeSetCommand;\n\n// src/commands/CreateGeneratedTemplateCommand.ts\n\n\n\n\nvar _CreateGeneratedTemplateCommand = class _CreateGeneratedTemplateCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"CreateGeneratedTemplate\", {}).n(\"CloudFormationClient\", \"CreateGeneratedTemplateCommand\").f(void 0, void 0).ser(se_CreateGeneratedTemplateCommand).de(de_CreateGeneratedTemplateCommand).build() {\n};\n__name(_CreateGeneratedTemplateCommand, \"CreateGeneratedTemplateCommand\");\nvar CreateGeneratedTemplateCommand = _CreateGeneratedTemplateCommand;\n\n// src/commands/CreateStackCommand.ts\n\n\n\n\nvar _CreateStackCommand = class _CreateStackCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"CreateStack\", {}).n(\"CloudFormationClient\", \"CreateStackCommand\").f(void 0, void 0).ser(se_CreateStackCommand).de(de_CreateStackCommand).build() {\n};\n__name(_CreateStackCommand, \"CreateStackCommand\");\nvar CreateStackCommand = _CreateStackCommand;\n\n// src/commands/CreateStackInstancesCommand.ts\n\n\n\n\nvar _CreateStackInstancesCommand = class _CreateStackInstancesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"CreateStackInstances\", {}).n(\"CloudFormationClient\", \"CreateStackInstancesCommand\").f(void 0, void 0).ser(se_CreateStackInstancesCommand).de(de_CreateStackInstancesCommand).build() {\n};\n__name(_CreateStackInstancesCommand, \"CreateStackInstancesCommand\");\nvar CreateStackInstancesCommand = _CreateStackInstancesCommand;\n\n// src/commands/CreateStackSetCommand.ts\n\n\n\n\nvar _CreateStackSetCommand = class _CreateStackSetCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"CreateStackSet\", {}).n(\"CloudFormationClient\", \"CreateStackSetCommand\").f(void 0, void 0).ser(se_CreateStackSetCommand).de(de_CreateStackSetCommand).build() {\n};\n__name(_CreateStackSetCommand, \"CreateStackSetCommand\");\nvar CreateStackSetCommand = _CreateStackSetCommand;\n\n// src/commands/DeactivateOrganizationsAccessCommand.ts\n\n\n\n\nvar _DeactivateOrganizationsAccessCommand = class _DeactivateOrganizationsAccessCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeactivateOrganizationsAccess\", {}).n(\"CloudFormationClient\", \"DeactivateOrganizationsAccessCommand\").f(void 0, void 0).ser(se_DeactivateOrganizationsAccessCommand).de(de_DeactivateOrganizationsAccessCommand).build() {\n};\n__name(_DeactivateOrganizationsAccessCommand, \"DeactivateOrganizationsAccessCommand\");\nvar DeactivateOrganizationsAccessCommand = _DeactivateOrganizationsAccessCommand;\n\n// src/commands/DeactivateTypeCommand.ts\n\n\n\n\nvar _DeactivateTypeCommand = class _DeactivateTypeCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeactivateType\", {}).n(\"CloudFormationClient\", \"DeactivateTypeCommand\").f(void 0, void 0).ser(se_DeactivateTypeCommand).de(de_DeactivateTypeCommand).build() {\n};\n__name(_DeactivateTypeCommand, \"DeactivateTypeCommand\");\nvar DeactivateTypeCommand = _DeactivateTypeCommand;\n\n// src/commands/DeleteChangeSetCommand.ts\n\n\n\n\nvar _DeleteChangeSetCommand = class _DeleteChangeSetCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeleteChangeSet\", {}).n(\"CloudFormationClient\", \"DeleteChangeSetCommand\").f(void 0, void 0).ser(se_DeleteChangeSetCommand).de(de_DeleteChangeSetCommand).build() {\n};\n__name(_DeleteChangeSetCommand, \"DeleteChangeSetCommand\");\nvar DeleteChangeSetCommand = _DeleteChangeSetCommand;\n\n// src/commands/DeleteGeneratedTemplateCommand.ts\n\n\n\n\nvar _DeleteGeneratedTemplateCommand = class _DeleteGeneratedTemplateCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeleteGeneratedTemplate\", {}).n(\"CloudFormationClient\", \"DeleteGeneratedTemplateCommand\").f(void 0, void 0).ser(se_DeleteGeneratedTemplateCommand).de(de_DeleteGeneratedTemplateCommand).build() {\n};\n__name(_DeleteGeneratedTemplateCommand, \"DeleteGeneratedTemplateCommand\");\nvar DeleteGeneratedTemplateCommand = _DeleteGeneratedTemplateCommand;\n\n// src/commands/DeleteStackCommand.ts\n\n\n\n\nvar _DeleteStackCommand = class _DeleteStackCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeleteStack\", {}).n(\"CloudFormationClient\", \"DeleteStackCommand\").f(void 0, void 0).ser(se_DeleteStackCommand).de(de_DeleteStackCommand).build() {\n};\n__name(_DeleteStackCommand, \"DeleteStackCommand\");\nvar DeleteStackCommand = _DeleteStackCommand;\n\n// src/commands/DeleteStackInstancesCommand.ts\n\n\n\n\nvar _DeleteStackInstancesCommand = class _DeleteStackInstancesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeleteStackInstances\", {}).n(\"CloudFormationClient\", \"DeleteStackInstancesCommand\").f(void 0, void 0).ser(se_DeleteStackInstancesCommand).de(de_DeleteStackInstancesCommand).build() {\n};\n__name(_DeleteStackInstancesCommand, \"DeleteStackInstancesCommand\");\nvar DeleteStackInstancesCommand = _DeleteStackInstancesCommand;\n\n// src/commands/DeleteStackSetCommand.ts\n\n\n\n\nvar _DeleteStackSetCommand = class _DeleteStackSetCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeleteStackSet\", {}).n(\"CloudFormationClient\", \"DeleteStackSetCommand\").f(void 0, void 0).ser(se_DeleteStackSetCommand).de(de_DeleteStackSetCommand).build() {\n};\n__name(_DeleteStackSetCommand, \"DeleteStackSetCommand\");\nvar DeleteStackSetCommand = _DeleteStackSetCommand;\n\n// src/commands/DeregisterTypeCommand.ts\n\n\n\n\nvar _DeregisterTypeCommand = class _DeregisterTypeCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeregisterType\", {}).n(\"CloudFormationClient\", \"DeregisterTypeCommand\").f(void 0, void 0).ser(se_DeregisterTypeCommand).de(de_DeregisterTypeCommand).build() {\n};\n__name(_DeregisterTypeCommand, \"DeregisterTypeCommand\");\nvar DeregisterTypeCommand = _DeregisterTypeCommand;\n\n// src/commands/DescribeAccountLimitsCommand.ts\n\n\n\n\nvar _DescribeAccountLimitsCommand = class _DescribeAccountLimitsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeAccountLimits\", {}).n(\"CloudFormationClient\", \"DescribeAccountLimitsCommand\").f(void 0, void 0).ser(se_DescribeAccountLimitsCommand).de(de_DescribeAccountLimitsCommand).build() {\n};\n__name(_DescribeAccountLimitsCommand, \"DescribeAccountLimitsCommand\");\nvar DescribeAccountLimitsCommand = _DescribeAccountLimitsCommand;\n\n// src/commands/DescribeChangeSetCommand.ts\n\n\n\n\nvar _DescribeChangeSetCommand = class _DescribeChangeSetCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeChangeSet\", {}).n(\"CloudFormationClient\", \"DescribeChangeSetCommand\").f(void 0, void 0).ser(se_DescribeChangeSetCommand).de(de_DescribeChangeSetCommand).build() {\n};\n__name(_DescribeChangeSetCommand, \"DescribeChangeSetCommand\");\nvar DescribeChangeSetCommand = _DescribeChangeSetCommand;\n\n// src/commands/DescribeChangeSetHooksCommand.ts\n\n\n\n\nvar _DescribeChangeSetHooksCommand = class _DescribeChangeSetHooksCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeChangeSetHooks\", {}).n(\"CloudFormationClient\", \"DescribeChangeSetHooksCommand\").f(void 0, void 0).ser(se_DescribeChangeSetHooksCommand).de(de_DescribeChangeSetHooksCommand).build() {\n};\n__name(_DescribeChangeSetHooksCommand, \"DescribeChangeSetHooksCommand\");\nvar DescribeChangeSetHooksCommand = _DescribeChangeSetHooksCommand;\n\n// src/commands/DescribeGeneratedTemplateCommand.ts\n\n\n\n\nvar _DescribeGeneratedTemplateCommand = class _DescribeGeneratedTemplateCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeGeneratedTemplate\", {}).n(\"CloudFormationClient\", \"DescribeGeneratedTemplateCommand\").f(void 0, void 0).ser(se_DescribeGeneratedTemplateCommand).de(de_DescribeGeneratedTemplateCommand).build() {\n};\n__name(_DescribeGeneratedTemplateCommand, \"DescribeGeneratedTemplateCommand\");\nvar DescribeGeneratedTemplateCommand = _DescribeGeneratedTemplateCommand;\n\n// src/commands/DescribeOrganizationsAccessCommand.ts\n\n\n\n\nvar _DescribeOrganizationsAccessCommand = class _DescribeOrganizationsAccessCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeOrganizationsAccess\", {}).n(\"CloudFormationClient\", \"DescribeOrganizationsAccessCommand\").f(void 0, void 0).ser(se_DescribeOrganizationsAccessCommand).de(de_DescribeOrganizationsAccessCommand).build() {\n};\n__name(_DescribeOrganizationsAccessCommand, \"DescribeOrganizationsAccessCommand\");\nvar DescribeOrganizationsAccessCommand = _DescribeOrganizationsAccessCommand;\n\n// src/commands/DescribePublisherCommand.ts\n\n\n\n\nvar _DescribePublisherCommand = class _DescribePublisherCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribePublisher\", {}).n(\"CloudFormationClient\", \"DescribePublisherCommand\").f(void 0, void 0).ser(se_DescribePublisherCommand).de(de_DescribePublisherCommand).build() {\n};\n__name(_DescribePublisherCommand, \"DescribePublisherCommand\");\nvar DescribePublisherCommand = _DescribePublisherCommand;\n\n// src/commands/DescribeResourceScanCommand.ts\n\n\n\n\nvar _DescribeResourceScanCommand = class _DescribeResourceScanCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeResourceScan\", {}).n(\"CloudFormationClient\", \"DescribeResourceScanCommand\").f(void 0, void 0).ser(se_DescribeResourceScanCommand).de(de_DescribeResourceScanCommand).build() {\n};\n__name(_DescribeResourceScanCommand, \"DescribeResourceScanCommand\");\nvar DescribeResourceScanCommand = _DescribeResourceScanCommand;\n\n// src/commands/DescribeStackDriftDetectionStatusCommand.ts\n\n\n\n\nvar _DescribeStackDriftDetectionStatusCommand = class _DescribeStackDriftDetectionStatusCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackDriftDetectionStatus\", {}).n(\"CloudFormationClient\", \"DescribeStackDriftDetectionStatusCommand\").f(void 0, void 0).ser(se_DescribeStackDriftDetectionStatusCommand).de(de_DescribeStackDriftDetectionStatusCommand).build() {\n};\n__name(_DescribeStackDriftDetectionStatusCommand, \"DescribeStackDriftDetectionStatusCommand\");\nvar DescribeStackDriftDetectionStatusCommand = _DescribeStackDriftDetectionStatusCommand;\n\n// src/commands/DescribeStackEventsCommand.ts\n\n\n\n\nvar _DescribeStackEventsCommand = class _DescribeStackEventsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackEvents\", {}).n(\"CloudFormationClient\", \"DescribeStackEventsCommand\").f(void 0, void 0).ser(se_DescribeStackEventsCommand).de(de_DescribeStackEventsCommand).build() {\n};\n__name(_DescribeStackEventsCommand, \"DescribeStackEventsCommand\");\nvar DescribeStackEventsCommand = _DescribeStackEventsCommand;\n\n// src/commands/DescribeStackInstanceCommand.ts\n\n\n\n\nvar _DescribeStackInstanceCommand = class _DescribeStackInstanceCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackInstance\", {}).n(\"CloudFormationClient\", \"DescribeStackInstanceCommand\").f(void 0, void 0).ser(se_DescribeStackInstanceCommand).de(de_DescribeStackInstanceCommand).build() {\n};\n__name(_DescribeStackInstanceCommand, \"DescribeStackInstanceCommand\");\nvar DescribeStackInstanceCommand = _DescribeStackInstanceCommand;\n\n// src/commands/DescribeStackResourceCommand.ts\n\n\n\n\nvar _DescribeStackResourceCommand = class _DescribeStackResourceCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackResource\", {}).n(\"CloudFormationClient\", \"DescribeStackResourceCommand\").f(void 0, void 0).ser(se_DescribeStackResourceCommand).de(de_DescribeStackResourceCommand).build() {\n};\n__name(_DescribeStackResourceCommand, \"DescribeStackResourceCommand\");\nvar DescribeStackResourceCommand = _DescribeStackResourceCommand;\n\n// src/commands/DescribeStackResourceDriftsCommand.ts\n\n\n\n\nvar _DescribeStackResourceDriftsCommand = class _DescribeStackResourceDriftsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackResourceDrifts\", {}).n(\"CloudFormationClient\", \"DescribeStackResourceDriftsCommand\").f(void 0, void 0).ser(se_DescribeStackResourceDriftsCommand).de(de_DescribeStackResourceDriftsCommand).build() {\n};\n__name(_DescribeStackResourceDriftsCommand, \"DescribeStackResourceDriftsCommand\");\nvar DescribeStackResourceDriftsCommand = _DescribeStackResourceDriftsCommand;\n\n// src/commands/DescribeStackResourcesCommand.ts\n\n\n\n\nvar _DescribeStackResourcesCommand = class _DescribeStackResourcesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackResources\", {}).n(\"CloudFormationClient\", \"DescribeStackResourcesCommand\").f(void 0, void 0).ser(se_DescribeStackResourcesCommand).de(de_DescribeStackResourcesCommand).build() {\n};\n__name(_DescribeStackResourcesCommand, \"DescribeStackResourcesCommand\");\nvar DescribeStackResourcesCommand = _DescribeStackResourcesCommand;\n\n// src/commands/DescribeStacksCommand.ts\n\n\n\n\nvar _DescribeStacksCommand = class _DescribeStacksCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStacks\", {}).n(\"CloudFormationClient\", \"DescribeStacksCommand\").f(void 0, void 0).ser(se_DescribeStacksCommand).de(de_DescribeStacksCommand).build() {\n};\n__name(_DescribeStacksCommand, \"DescribeStacksCommand\");\nvar DescribeStacksCommand = _DescribeStacksCommand;\n\n// src/commands/DescribeStackSetCommand.ts\n\n\n\n\nvar _DescribeStackSetCommand = class _DescribeStackSetCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackSet\", {}).n(\"CloudFormationClient\", \"DescribeStackSetCommand\").f(void 0, void 0).ser(se_DescribeStackSetCommand).de(de_DescribeStackSetCommand).build() {\n};\n__name(_DescribeStackSetCommand, \"DescribeStackSetCommand\");\nvar DescribeStackSetCommand = _DescribeStackSetCommand;\n\n// src/commands/DescribeStackSetOperationCommand.ts\n\n\n\n\nvar _DescribeStackSetOperationCommand = class _DescribeStackSetOperationCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackSetOperation\", {}).n(\"CloudFormationClient\", \"DescribeStackSetOperationCommand\").f(void 0, void 0).ser(se_DescribeStackSetOperationCommand).de(de_DescribeStackSetOperationCommand).build() {\n};\n__name(_DescribeStackSetOperationCommand, \"DescribeStackSetOperationCommand\");\nvar DescribeStackSetOperationCommand = _DescribeStackSetOperationCommand;\n\n// src/commands/DescribeTypeCommand.ts\n\n\n\n\nvar _DescribeTypeCommand = class _DescribeTypeCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeType\", {}).n(\"CloudFormationClient\", \"DescribeTypeCommand\").f(void 0, void 0).ser(se_DescribeTypeCommand).de(de_DescribeTypeCommand).build() {\n};\n__name(_DescribeTypeCommand, \"DescribeTypeCommand\");\nvar DescribeTypeCommand = _DescribeTypeCommand;\n\n// src/commands/DescribeTypeRegistrationCommand.ts\n\n\n\n\nvar _DescribeTypeRegistrationCommand = class _DescribeTypeRegistrationCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeTypeRegistration\", {}).n(\"CloudFormationClient\", \"DescribeTypeRegistrationCommand\").f(void 0, void 0).ser(se_DescribeTypeRegistrationCommand).de(de_DescribeTypeRegistrationCommand).build() {\n};\n__name(_DescribeTypeRegistrationCommand, \"DescribeTypeRegistrationCommand\");\nvar DescribeTypeRegistrationCommand = _DescribeTypeRegistrationCommand;\n\n// src/commands/DetectStackDriftCommand.ts\n\n\n\n\nvar _DetectStackDriftCommand = class _DetectStackDriftCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DetectStackDrift\", {}).n(\"CloudFormationClient\", \"DetectStackDriftCommand\").f(void 0, void 0).ser(se_DetectStackDriftCommand).de(de_DetectStackDriftCommand).build() {\n};\n__name(_DetectStackDriftCommand, \"DetectStackDriftCommand\");\nvar DetectStackDriftCommand = _DetectStackDriftCommand;\n\n// src/commands/DetectStackResourceDriftCommand.ts\n\n\n\n\nvar _DetectStackResourceDriftCommand = class _DetectStackResourceDriftCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DetectStackResourceDrift\", {}).n(\"CloudFormationClient\", \"DetectStackResourceDriftCommand\").f(void 0, void 0).ser(se_DetectStackResourceDriftCommand).de(de_DetectStackResourceDriftCommand).build() {\n};\n__name(_DetectStackResourceDriftCommand, \"DetectStackResourceDriftCommand\");\nvar DetectStackResourceDriftCommand = _DetectStackResourceDriftCommand;\n\n// src/commands/DetectStackSetDriftCommand.ts\n\n\n\n\nvar _DetectStackSetDriftCommand = class _DetectStackSetDriftCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DetectStackSetDrift\", {}).n(\"CloudFormationClient\", \"DetectStackSetDriftCommand\").f(void 0, void 0).ser(se_DetectStackSetDriftCommand).de(de_DetectStackSetDriftCommand).build() {\n};\n__name(_DetectStackSetDriftCommand, \"DetectStackSetDriftCommand\");\nvar DetectStackSetDriftCommand = _DetectStackSetDriftCommand;\n\n// src/commands/EstimateTemplateCostCommand.ts\n\n\n\n\nvar _EstimateTemplateCostCommand = class _EstimateTemplateCostCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"EstimateTemplateCost\", {}).n(\"CloudFormationClient\", \"EstimateTemplateCostCommand\").f(void 0, void 0).ser(se_EstimateTemplateCostCommand).de(de_EstimateTemplateCostCommand).build() {\n};\n__name(_EstimateTemplateCostCommand, \"EstimateTemplateCostCommand\");\nvar EstimateTemplateCostCommand = _EstimateTemplateCostCommand;\n\n// src/commands/ExecuteChangeSetCommand.ts\n\n\n\n\nvar _ExecuteChangeSetCommand = class _ExecuteChangeSetCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ExecuteChangeSet\", {}).n(\"CloudFormationClient\", \"ExecuteChangeSetCommand\").f(void 0, void 0).ser(se_ExecuteChangeSetCommand).de(de_ExecuteChangeSetCommand).build() {\n};\n__name(_ExecuteChangeSetCommand, \"ExecuteChangeSetCommand\");\nvar ExecuteChangeSetCommand = _ExecuteChangeSetCommand;\n\n// src/commands/GetGeneratedTemplateCommand.ts\n\n\n\n\nvar _GetGeneratedTemplateCommand = class _GetGeneratedTemplateCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"GetGeneratedTemplate\", {}).n(\"CloudFormationClient\", \"GetGeneratedTemplateCommand\").f(void 0, void 0).ser(se_GetGeneratedTemplateCommand).de(de_GetGeneratedTemplateCommand).build() {\n};\n__name(_GetGeneratedTemplateCommand, \"GetGeneratedTemplateCommand\");\nvar GetGeneratedTemplateCommand = _GetGeneratedTemplateCommand;\n\n// src/commands/GetStackPolicyCommand.ts\n\n\n\n\nvar _GetStackPolicyCommand = class _GetStackPolicyCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"GetStackPolicy\", {}).n(\"CloudFormationClient\", \"GetStackPolicyCommand\").f(void 0, void 0).ser(se_GetStackPolicyCommand).de(de_GetStackPolicyCommand).build() {\n};\n__name(_GetStackPolicyCommand, \"GetStackPolicyCommand\");\nvar GetStackPolicyCommand = _GetStackPolicyCommand;\n\n// src/commands/GetTemplateCommand.ts\n\n\n\n\nvar _GetTemplateCommand = class _GetTemplateCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"GetTemplate\", {}).n(\"CloudFormationClient\", \"GetTemplateCommand\").f(void 0, void 0).ser(se_GetTemplateCommand).de(de_GetTemplateCommand).build() {\n};\n__name(_GetTemplateCommand, \"GetTemplateCommand\");\nvar GetTemplateCommand = _GetTemplateCommand;\n\n// src/commands/GetTemplateSummaryCommand.ts\n\n\n\n\nvar _GetTemplateSummaryCommand = class _GetTemplateSummaryCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"GetTemplateSummary\", {}).n(\"CloudFormationClient\", \"GetTemplateSummaryCommand\").f(void 0, void 0).ser(se_GetTemplateSummaryCommand).de(de_GetTemplateSummaryCommand).build() {\n};\n__name(_GetTemplateSummaryCommand, \"GetTemplateSummaryCommand\");\nvar GetTemplateSummaryCommand = _GetTemplateSummaryCommand;\n\n// src/commands/ImportStacksToStackSetCommand.ts\n\n\n\n\nvar _ImportStacksToStackSetCommand = class _ImportStacksToStackSetCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ImportStacksToStackSet\", {}).n(\"CloudFormationClient\", \"ImportStacksToStackSetCommand\").f(void 0, void 0).ser(se_ImportStacksToStackSetCommand).de(de_ImportStacksToStackSetCommand).build() {\n};\n__name(_ImportStacksToStackSetCommand, \"ImportStacksToStackSetCommand\");\nvar ImportStacksToStackSetCommand = _ImportStacksToStackSetCommand;\n\n// src/commands/ListChangeSetsCommand.ts\n\n\n\n\nvar _ListChangeSetsCommand = class _ListChangeSetsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListChangeSets\", {}).n(\"CloudFormationClient\", \"ListChangeSetsCommand\").f(void 0, void 0).ser(se_ListChangeSetsCommand).de(de_ListChangeSetsCommand).build() {\n};\n__name(_ListChangeSetsCommand, \"ListChangeSetsCommand\");\nvar ListChangeSetsCommand = _ListChangeSetsCommand;\n\n// src/commands/ListExportsCommand.ts\n\n\n\n\nvar _ListExportsCommand = class _ListExportsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListExports\", {}).n(\"CloudFormationClient\", \"ListExportsCommand\").f(void 0, void 0).ser(se_ListExportsCommand).de(de_ListExportsCommand).build() {\n};\n__name(_ListExportsCommand, \"ListExportsCommand\");\nvar ListExportsCommand = _ListExportsCommand;\n\n// src/commands/ListGeneratedTemplatesCommand.ts\n\n\n\n\nvar _ListGeneratedTemplatesCommand = class _ListGeneratedTemplatesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListGeneratedTemplates\", {}).n(\"CloudFormationClient\", \"ListGeneratedTemplatesCommand\").f(void 0, void 0).ser(se_ListGeneratedTemplatesCommand).de(de_ListGeneratedTemplatesCommand).build() {\n};\n__name(_ListGeneratedTemplatesCommand, \"ListGeneratedTemplatesCommand\");\nvar ListGeneratedTemplatesCommand = _ListGeneratedTemplatesCommand;\n\n// src/commands/ListImportsCommand.ts\n\n\n\n\nvar _ListImportsCommand = class _ListImportsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListImports\", {}).n(\"CloudFormationClient\", \"ListImportsCommand\").f(void 0, void 0).ser(se_ListImportsCommand).de(de_ListImportsCommand).build() {\n};\n__name(_ListImportsCommand, \"ListImportsCommand\");\nvar ListImportsCommand = _ListImportsCommand;\n\n// src/commands/ListResourceScanRelatedResourcesCommand.ts\n\n\n\n\nvar _ListResourceScanRelatedResourcesCommand = class _ListResourceScanRelatedResourcesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListResourceScanRelatedResources\", {}).n(\"CloudFormationClient\", \"ListResourceScanRelatedResourcesCommand\").f(void 0, void 0).ser(se_ListResourceScanRelatedResourcesCommand).de(de_ListResourceScanRelatedResourcesCommand).build() {\n};\n__name(_ListResourceScanRelatedResourcesCommand, \"ListResourceScanRelatedResourcesCommand\");\nvar ListResourceScanRelatedResourcesCommand = _ListResourceScanRelatedResourcesCommand;\n\n// src/commands/ListResourceScanResourcesCommand.ts\n\n\n\n\nvar _ListResourceScanResourcesCommand = class _ListResourceScanResourcesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListResourceScanResources\", {}).n(\"CloudFormationClient\", \"ListResourceScanResourcesCommand\").f(void 0, void 0).ser(se_ListResourceScanResourcesCommand).de(de_ListResourceScanResourcesCommand).build() {\n};\n__name(_ListResourceScanResourcesCommand, \"ListResourceScanResourcesCommand\");\nvar ListResourceScanResourcesCommand = _ListResourceScanResourcesCommand;\n\n// src/commands/ListResourceScansCommand.ts\n\n\n\n\nvar _ListResourceScansCommand = class _ListResourceScansCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListResourceScans\", {}).n(\"CloudFormationClient\", \"ListResourceScansCommand\").f(void 0, void 0).ser(se_ListResourceScansCommand).de(de_ListResourceScansCommand).build() {\n};\n__name(_ListResourceScansCommand, \"ListResourceScansCommand\");\nvar ListResourceScansCommand = _ListResourceScansCommand;\n\n// src/commands/ListStackInstanceResourceDriftsCommand.ts\n\n\n\n\nvar _ListStackInstanceResourceDriftsCommand = class _ListStackInstanceResourceDriftsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackInstanceResourceDrifts\", {}).n(\"CloudFormationClient\", \"ListStackInstanceResourceDriftsCommand\").f(void 0, void 0).ser(se_ListStackInstanceResourceDriftsCommand).de(de_ListStackInstanceResourceDriftsCommand).build() {\n};\n__name(_ListStackInstanceResourceDriftsCommand, \"ListStackInstanceResourceDriftsCommand\");\nvar ListStackInstanceResourceDriftsCommand = _ListStackInstanceResourceDriftsCommand;\n\n// src/commands/ListStackInstancesCommand.ts\n\n\n\n\nvar _ListStackInstancesCommand = class _ListStackInstancesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackInstances\", {}).n(\"CloudFormationClient\", \"ListStackInstancesCommand\").f(void 0, void 0).ser(se_ListStackInstancesCommand).de(de_ListStackInstancesCommand).build() {\n};\n__name(_ListStackInstancesCommand, \"ListStackInstancesCommand\");\nvar ListStackInstancesCommand = _ListStackInstancesCommand;\n\n// src/commands/ListStackResourcesCommand.ts\n\n\n\n\nvar _ListStackResourcesCommand = class _ListStackResourcesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackResources\", {}).n(\"CloudFormationClient\", \"ListStackResourcesCommand\").f(void 0, void 0).ser(se_ListStackResourcesCommand).de(de_ListStackResourcesCommand).build() {\n};\n__name(_ListStackResourcesCommand, \"ListStackResourcesCommand\");\nvar ListStackResourcesCommand = _ListStackResourcesCommand;\n\n// src/commands/ListStacksCommand.ts\n\n\n\n\nvar _ListStacksCommand = class _ListStacksCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStacks\", {}).n(\"CloudFormationClient\", \"ListStacksCommand\").f(void 0, void 0).ser(se_ListStacksCommand).de(de_ListStacksCommand).build() {\n};\n__name(_ListStacksCommand, \"ListStacksCommand\");\nvar ListStacksCommand = _ListStacksCommand;\n\n// src/commands/ListStackSetAutoDeploymentTargetsCommand.ts\n\n\n\n\nvar _ListStackSetAutoDeploymentTargetsCommand = class _ListStackSetAutoDeploymentTargetsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackSetAutoDeploymentTargets\", {}).n(\"CloudFormationClient\", \"ListStackSetAutoDeploymentTargetsCommand\").f(void 0, void 0).ser(se_ListStackSetAutoDeploymentTargetsCommand).de(de_ListStackSetAutoDeploymentTargetsCommand).build() {\n};\n__name(_ListStackSetAutoDeploymentTargetsCommand, \"ListStackSetAutoDeploymentTargetsCommand\");\nvar ListStackSetAutoDeploymentTargetsCommand = _ListStackSetAutoDeploymentTargetsCommand;\n\n// src/commands/ListStackSetOperationResultsCommand.ts\n\n\n\n\nvar _ListStackSetOperationResultsCommand = class _ListStackSetOperationResultsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackSetOperationResults\", {}).n(\"CloudFormationClient\", \"ListStackSetOperationResultsCommand\").f(void 0, void 0).ser(se_ListStackSetOperationResultsCommand).de(de_ListStackSetOperationResultsCommand).build() {\n};\n__name(_ListStackSetOperationResultsCommand, \"ListStackSetOperationResultsCommand\");\nvar ListStackSetOperationResultsCommand = _ListStackSetOperationResultsCommand;\n\n// src/commands/ListStackSetOperationsCommand.ts\n\n\n\n\nvar _ListStackSetOperationsCommand = class _ListStackSetOperationsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackSetOperations\", {}).n(\"CloudFormationClient\", \"ListStackSetOperationsCommand\").f(void 0, void 0).ser(se_ListStackSetOperationsCommand).de(de_ListStackSetOperationsCommand).build() {\n};\n__name(_ListStackSetOperationsCommand, \"ListStackSetOperationsCommand\");\nvar ListStackSetOperationsCommand = _ListStackSetOperationsCommand;\n\n// src/commands/ListStackSetsCommand.ts\n\n\n\n\nvar _ListStackSetsCommand = class _ListStackSetsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackSets\", {}).n(\"CloudFormationClient\", \"ListStackSetsCommand\").f(void 0, void 0).ser(se_ListStackSetsCommand).de(de_ListStackSetsCommand).build() {\n};\n__name(_ListStackSetsCommand, \"ListStackSetsCommand\");\nvar ListStackSetsCommand = _ListStackSetsCommand;\n\n// src/commands/ListTypeRegistrationsCommand.ts\n\n\n\n\nvar _ListTypeRegistrationsCommand = class _ListTypeRegistrationsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListTypeRegistrations\", {}).n(\"CloudFormationClient\", \"ListTypeRegistrationsCommand\").f(void 0, void 0).ser(se_ListTypeRegistrationsCommand).de(de_ListTypeRegistrationsCommand).build() {\n};\n__name(_ListTypeRegistrationsCommand, \"ListTypeRegistrationsCommand\");\nvar ListTypeRegistrationsCommand = _ListTypeRegistrationsCommand;\n\n// src/commands/ListTypesCommand.ts\n\n\n\n\nvar _ListTypesCommand = class _ListTypesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListTypes\", {}).n(\"CloudFormationClient\", \"ListTypesCommand\").f(void 0, void 0).ser(se_ListTypesCommand).de(de_ListTypesCommand).build() {\n};\n__name(_ListTypesCommand, \"ListTypesCommand\");\nvar ListTypesCommand = _ListTypesCommand;\n\n// src/commands/ListTypeVersionsCommand.ts\n\n\n\n\nvar _ListTypeVersionsCommand = class _ListTypeVersionsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListTypeVersions\", {}).n(\"CloudFormationClient\", \"ListTypeVersionsCommand\").f(void 0, void 0).ser(se_ListTypeVersionsCommand).de(de_ListTypeVersionsCommand).build() {\n};\n__name(_ListTypeVersionsCommand, \"ListTypeVersionsCommand\");\nvar ListTypeVersionsCommand = _ListTypeVersionsCommand;\n\n// src/commands/PublishTypeCommand.ts\n\n\n\n\nvar _PublishTypeCommand = class _PublishTypeCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"PublishType\", {}).n(\"CloudFormationClient\", \"PublishTypeCommand\").f(void 0, void 0).ser(se_PublishTypeCommand).de(de_PublishTypeCommand).build() {\n};\n__name(_PublishTypeCommand, \"PublishTypeCommand\");\nvar PublishTypeCommand = _PublishTypeCommand;\n\n// src/commands/RecordHandlerProgressCommand.ts\n\n\n\n\nvar _RecordHandlerProgressCommand = class _RecordHandlerProgressCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"RecordHandlerProgress\", {}).n(\"CloudFormationClient\", \"RecordHandlerProgressCommand\").f(void 0, void 0).ser(se_RecordHandlerProgressCommand).de(de_RecordHandlerProgressCommand).build() {\n};\n__name(_RecordHandlerProgressCommand, \"RecordHandlerProgressCommand\");\nvar RecordHandlerProgressCommand = _RecordHandlerProgressCommand;\n\n// src/commands/RegisterPublisherCommand.ts\n\n\n\n\nvar _RegisterPublisherCommand = class _RegisterPublisherCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"RegisterPublisher\", {}).n(\"CloudFormationClient\", \"RegisterPublisherCommand\").f(void 0, void 0).ser(se_RegisterPublisherCommand).de(de_RegisterPublisherCommand).build() {\n};\n__name(_RegisterPublisherCommand, \"RegisterPublisherCommand\");\nvar RegisterPublisherCommand = _RegisterPublisherCommand;\n\n// src/commands/RegisterTypeCommand.ts\n\n\n\n\nvar _RegisterTypeCommand = class _RegisterTypeCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"RegisterType\", {}).n(\"CloudFormationClient\", \"RegisterTypeCommand\").f(void 0, void 0).ser(se_RegisterTypeCommand).de(de_RegisterTypeCommand).build() {\n};\n__name(_RegisterTypeCommand, \"RegisterTypeCommand\");\nvar RegisterTypeCommand = _RegisterTypeCommand;\n\n// src/commands/RollbackStackCommand.ts\n\n\n\n\nvar _RollbackStackCommand = class _RollbackStackCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"RollbackStack\", {}).n(\"CloudFormationClient\", \"RollbackStackCommand\").f(void 0, void 0).ser(se_RollbackStackCommand).de(de_RollbackStackCommand).build() {\n};\n__name(_RollbackStackCommand, \"RollbackStackCommand\");\nvar RollbackStackCommand = _RollbackStackCommand;\n\n// src/commands/SetStackPolicyCommand.ts\n\n\n\n\nvar _SetStackPolicyCommand = class _SetStackPolicyCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"SetStackPolicy\", {}).n(\"CloudFormationClient\", \"SetStackPolicyCommand\").f(void 0, void 0).ser(se_SetStackPolicyCommand).de(de_SetStackPolicyCommand).build() {\n};\n__name(_SetStackPolicyCommand, \"SetStackPolicyCommand\");\nvar SetStackPolicyCommand = _SetStackPolicyCommand;\n\n// src/commands/SetTypeConfigurationCommand.ts\n\n\n\n\nvar _SetTypeConfigurationCommand = class _SetTypeConfigurationCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"SetTypeConfiguration\", {}).n(\"CloudFormationClient\", \"SetTypeConfigurationCommand\").f(void 0, void 0).ser(se_SetTypeConfigurationCommand).de(de_SetTypeConfigurationCommand).build() {\n};\n__name(_SetTypeConfigurationCommand, \"SetTypeConfigurationCommand\");\nvar SetTypeConfigurationCommand = _SetTypeConfigurationCommand;\n\n// src/commands/SetTypeDefaultVersionCommand.ts\n\n\n\n\nvar _SetTypeDefaultVersionCommand = class _SetTypeDefaultVersionCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"SetTypeDefaultVersion\", {}).n(\"CloudFormationClient\", \"SetTypeDefaultVersionCommand\").f(void 0, void 0).ser(se_SetTypeDefaultVersionCommand).de(de_SetTypeDefaultVersionCommand).build() {\n};\n__name(_SetTypeDefaultVersionCommand, \"SetTypeDefaultVersionCommand\");\nvar SetTypeDefaultVersionCommand = _SetTypeDefaultVersionCommand;\n\n// src/commands/SignalResourceCommand.ts\n\n\n\n\nvar _SignalResourceCommand = class _SignalResourceCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"SignalResource\", {}).n(\"CloudFormationClient\", \"SignalResourceCommand\").f(void 0, void 0).ser(se_SignalResourceCommand).de(de_SignalResourceCommand).build() {\n};\n__name(_SignalResourceCommand, \"SignalResourceCommand\");\nvar SignalResourceCommand = _SignalResourceCommand;\n\n// src/commands/StartResourceScanCommand.ts\n\n\n\n\nvar _StartResourceScanCommand = class _StartResourceScanCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"StartResourceScan\", {}).n(\"CloudFormationClient\", \"StartResourceScanCommand\").f(void 0, void 0).ser(se_StartResourceScanCommand).de(de_StartResourceScanCommand).build() {\n};\n__name(_StartResourceScanCommand, \"StartResourceScanCommand\");\nvar StartResourceScanCommand = _StartResourceScanCommand;\n\n// src/commands/StopStackSetOperationCommand.ts\n\n\n\n\nvar _StopStackSetOperationCommand = class _StopStackSetOperationCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"StopStackSetOperation\", {}).n(\"CloudFormationClient\", \"StopStackSetOperationCommand\").f(void 0, void 0).ser(se_StopStackSetOperationCommand).de(de_StopStackSetOperationCommand).build() {\n};\n__name(_StopStackSetOperationCommand, \"StopStackSetOperationCommand\");\nvar StopStackSetOperationCommand = _StopStackSetOperationCommand;\n\n// src/commands/TestTypeCommand.ts\n\n\n\n\nvar _TestTypeCommand = class _TestTypeCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"TestType\", {}).n(\"CloudFormationClient\", \"TestTypeCommand\").f(void 0, void 0).ser(se_TestTypeCommand).de(de_TestTypeCommand).build() {\n};\n__name(_TestTypeCommand, \"TestTypeCommand\");\nvar TestTypeCommand = _TestTypeCommand;\n\n// src/commands/UpdateGeneratedTemplateCommand.ts\n\n\n\n\nvar _UpdateGeneratedTemplateCommand = class _UpdateGeneratedTemplateCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"UpdateGeneratedTemplate\", {}).n(\"CloudFormationClient\", \"UpdateGeneratedTemplateCommand\").f(void 0, void 0).ser(se_UpdateGeneratedTemplateCommand).de(de_UpdateGeneratedTemplateCommand).build() {\n};\n__name(_UpdateGeneratedTemplateCommand, \"UpdateGeneratedTemplateCommand\");\nvar UpdateGeneratedTemplateCommand = _UpdateGeneratedTemplateCommand;\n\n// src/commands/UpdateStackCommand.ts\n\n\n\n\nvar _UpdateStackCommand = class _UpdateStackCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"UpdateStack\", {}).n(\"CloudFormationClient\", \"UpdateStackCommand\").f(void 0, void 0).ser(se_UpdateStackCommand).de(de_UpdateStackCommand).build() {\n};\n__name(_UpdateStackCommand, \"UpdateStackCommand\");\nvar UpdateStackCommand = _UpdateStackCommand;\n\n// src/commands/UpdateStackInstancesCommand.ts\n\n\n\n\nvar _UpdateStackInstancesCommand = class _UpdateStackInstancesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"UpdateStackInstances\", {}).n(\"CloudFormationClient\", \"UpdateStackInstancesCommand\").f(void 0, void 0).ser(se_UpdateStackInstancesCommand).de(de_UpdateStackInstancesCommand).build() {\n};\n__name(_UpdateStackInstancesCommand, \"UpdateStackInstancesCommand\");\nvar UpdateStackInstancesCommand = _UpdateStackInstancesCommand;\n\n// src/commands/UpdateStackSetCommand.ts\n\n\n\n\nvar _UpdateStackSetCommand = class _UpdateStackSetCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"UpdateStackSet\", {}).n(\"CloudFormationClient\", \"UpdateStackSetCommand\").f(void 0, void 0).ser(se_UpdateStackSetCommand).de(de_UpdateStackSetCommand).build() {\n};\n__name(_UpdateStackSetCommand, \"UpdateStackSetCommand\");\nvar UpdateStackSetCommand = _UpdateStackSetCommand;\n\n// src/commands/UpdateTerminationProtectionCommand.ts\n\n\n\n\nvar _UpdateTerminationProtectionCommand = class _UpdateTerminationProtectionCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"UpdateTerminationProtection\", {}).n(\"CloudFormationClient\", \"UpdateTerminationProtectionCommand\").f(void 0, void 0).ser(se_UpdateTerminationProtectionCommand).de(de_UpdateTerminationProtectionCommand).build() {\n};\n__name(_UpdateTerminationProtectionCommand, \"UpdateTerminationProtectionCommand\");\nvar UpdateTerminationProtectionCommand = _UpdateTerminationProtectionCommand;\n\n// src/commands/ValidateTemplateCommand.ts\n\n\n\n\nvar _ValidateTemplateCommand = class _ValidateTemplateCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ValidateTemplate\", {}).n(\"CloudFormationClient\", \"ValidateTemplateCommand\").f(void 0, void 0).ser(se_ValidateTemplateCommand).de(de_ValidateTemplateCommand).build() {\n};\n__name(_ValidateTemplateCommand, \"ValidateTemplateCommand\");\nvar ValidateTemplateCommand = _ValidateTemplateCommand;\n\n// src/CloudFormation.ts\nvar commands = {\n ActivateOrganizationsAccessCommand,\n ActivateTypeCommand,\n BatchDescribeTypeConfigurationsCommand,\n CancelUpdateStackCommand,\n ContinueUpdateRollbackCommand,\n CreateChangeSetCommand,\n CreateGeneratedTemplateCommand,\n CreateStackCommand,\n CreateStackInstancesCommand,\n CreateStackSetCommand,\n DeactivateOrganizationsAccessCommand,\n DeactivateTypeCommand,\n DeleteChangeSetCommand,\n DeleteGeneratedTemplateCommand,\n DeleteStackCommand,\n DeleteStackInstancesCommand,\n DeleteStackSetCommand,\n DeregisterTypeCommand,\n DescribeAccountLimitsCommand,\n DescribeChangeSetCommand,\n DescribeChangeSetHooksCommand,\n DescribeGeneratedTemplateCommand,\n DescribeOrganizationsAccessCommand,\n DescribePublisherCommand,\n DescribeResourceScanCommand,\n DescribeStackDriftDetectionStatusCommand,\n DescribeStackEventsCommand,\n DescribeStackInstanceCommand,\n DescribeStackResourceCommand,\n DescribeStackResourceDriftsCommand,\n DescribeStackResourcesCommand,\n DescribeStacksCommand,\n DescribeStackSetCommand,\n DescribeStackSetOperationCommand,\n DescribeTypeCommand,\n DescribeTypeRegistrationCommand,\n DetectStackDriftCommand,\n DetectStackResourceDriftCommand,\n DetectStackSetDriftCommand,\n EstimateTemplateCostCommand,\n ExecuteChangeSetCommand,\n GetGeneratedTemplateCommand,\n GetStackPolicyCommand,\n GetTemplateCommand,\n GetTemplateSummaryCommand,\n ImportStacksToStackSetCommand,\n ListChangeSetsCommand,\n ListExportsCommand,\n ListGeneratedTemplatesCommand,\n ListImportsCommand,\n ListResourceScanRelatedResourcesCommand,\n ListResourceScanResourcesCommand,\n ListResourceScansCommand,\n ListStackInstanceResourceDriftsCommand,\n ListStackInstancesCommand,\n ListStackResourcesCommand,\n ListStacksCommand,\n ListStackSetAutoDeploymentTargetsCommand,\n ListStackSetOperationResultsCommand,\n ListStackSetOperationsCommand,\n ListStackSetsCommand,\n ListTypeRegistrationsCommand,\n ListTypesCommand,\n ListTypeVersionsCommand,\n PublishTypeCommand,\n RecordHandlerProgressCommand,\n RegisterPublisherCommand,\n RegisterTypeCommand,\n RollbackStackCommand,\n SetStackPolicyCommand,\n SetTypeConfigurationCommand,\n SetTypeDefaultVersionCommand,\n SignalResourceCommand,\n StartResourceScanCommand,\n StopStackSetOperationCommand,\n TestTypeCommand,\n UpdateGeneratedTemplateCommand,\n UpdateStackCommand,\n UpdateStackInstancesCommand,\n UpdateStackSetCommand,\n UpdateTerminationProtectionCommand,\n ValidateTemplateCommand\n};\nvar _CloudFormation = class _CloudFormation extends CloudFormationClient {\n};\n__name(_CloudFormation, \"CloudFormation\");\nvar CloudFormation = _CloudFormation;\n(0, import_smithy_client.createAggregatedClient)(commands, CloudFormation);\n\n// src/pagination/DescribeAccountLimitsPaginator.ts\n\nvar paginateDescribeAccountLimits = (0, import_core.createPaginator)(CloudFormationClient, DescribeAccountLimitsCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/DescribeStackEventsPaginator.ts\n\nvar paginateDescribeStackEvents = (0, import_core.createPaginator)(CloudFormationClient, DescribeStackEventsCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/DescribeStackResourceDriftsPaginator.ts\n\nvar paginateDescribeStackResourceDrifts = (0, import_core.createPaginator)(CloudFormationClient, DescribeStackResourceDriftsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/DescribeStacksPaginator.ts\n\nvar paginateDescribeStacks = (0, import_core.createPaginator)(CloudFormationClient, DescribeStacksCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/ListChangeSetsPaginator.ts\n\nvar paginateListChangeSets = (0, import_core.createPaginator)(CloudFormationClient, ListChangeSetsCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/ListExportsPaginator.ts\n\nvar paginateListExports = (0, import_core.createPaginator)(CloudFormationClient, ListExportsCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/ListGeneratedTemplatesPaginator.ts\n\nvar paginateListGeneratedTemplates = (0, import_core.createPaginator)(CloudFormationClient, ListGeneratedTemplatesCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListImportsPaginator.ts\n\nvar paginateListImports = (0, import_core.createPaginator)(CloudFormationClient, ListImportsCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/ListResourceScanRelatedResourcesPaginator.ts\n\nvar paginateListResourceScanRelatedResources = (0, import_core.createPaginator)(CloudFormationClient, ListResourceScanRelatedResourcesCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListResourceScanResourcesPaginator.ts\n\nvar paginateListResourceScanResources = (0, import_core.createPaginator)(CloudFormationClient, ListResourceScanResourcesCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListResourceScansPaginator.ts\n\nvar paginateListResourceScans = (0, import_core.createPaginator)(CloudFormationClient, ListResourceScansCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListStackInstancesPaginator.ts\n\nvar paginateListStackInstances = (0, import_core.createPaginator)(CloudFormationClient, ListStackInstancesCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListStackResourcesPaginator.ts\n\nvar paginateListStackResources = (0, import_core.createPaginator)(CloudFormationClient, ListStackResourcesCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/ListStackSetOperationResultsPaginator.ts\n\nvar paginateListStackSetOperationResults = (0, import_core.createPaginator)(CloudFormationClient, ListStackSetOperationResultsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListStackSetOperationsPaginator.ts\n\nvar paginateListStackSetOperations = (0, import_core.createPaginator)(CloudFormationClient, ListStackSetOperationsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListStackSetsPaginator.ts\n\nvar paginateListStackSets = (0, import_core.createPaginator)(CloudFormationClient, ListStackSetsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListStacksPaginator.ts\n\nvar paginateListStacks = (0, import_core.createPaginator)(CloudFormationClient, ListStacksCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/ListTypeRegistrationsPaginator.ts\n\nvar paginateListTypeRegistrations = (0, import_core.createPaginator)(CloudFormationClient, ListTypeRegistrationsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListTypeVersionsPaginator.ts\n\nvar paginateListTypeVersions = (0, import_core.createPaginator)(CloudFormationClient, ListTypeVersionsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListTypesPaginator.ts\n\nvar paginateListTypes = (0, import_core.createPaginator)(CloudFormationClient, ListTypesCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/waiters/waitForChangeSetCreateComplete.ts\nvar import_util_waiter = require(\"@smithy/util-waiter\");\nvar checkState = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeChangeSetCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n return result.Status;\n }, \"returnComparator\");\n if (returnComparator() === \"CREATE_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n return result.Status;\n }, \"returnComparator\");\n if (returnComparator() === \"FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForChangeSetCreateComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState);\n}, \"waitForChangeSetCreateComplete\");\nvar waitUntilChangeSetCreateComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilChangeSetCreateComplete\");\n\n// src/waiters/waitForStackCreateComplete.ts\n\nvar checkState2 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeStacksCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"CREATE_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_IN_PROGRESS\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_COMPLETE_CLEANUP_IN_PROGRESS\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_FAILED\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_ROLLBACK_IN_PROGRESS\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_ROLLBACK_FAILED\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_ROLLBACK_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"CREATE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"DELETE_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"DELETE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"ROLLBACK_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForStackCreateComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState2);\n}, \"waitForStackCreateComplete\");\nvar waitUntilStackCreateComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState2);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilStackCreateComplete\");\n\n// src/waiters/waitForStackDeleteComplete.ts\n\nvar checkState3 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeStacksCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"DELETE_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"DELETE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"CREATE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_ROLLBACK_IN_PROGRESS\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_ROLLBACK_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForStackDeleteComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState3);\n}, \"waitForStackDeleteComplete\");\nvar waitUntilStackDeleteComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState3);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilStackDeleteComplete\");\n\n// src/waiters/waitForStackExists.ts\n\nvar checkState4 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeStacksCommand(input));\n reason = result;\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForStackExists = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 5, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState4);\n}, \"waitForStackExists\");\nvar waitUntilStackExists = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 5, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState4);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilStackExists\");\n\n// src/waiters/waitForStackImportComplete.ts\n\nvar checkState5 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeStacksCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"IMPORT_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"ROLLBACK_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"IMPORT_ROLLBACK_IN_PROGRESS\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"IMPORT_ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"IMPORT_ROLLBACK_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForStackImportComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState5);\n}, \"waitForStackImportComplete\");\nvar waitUntilStackImportComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState5);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilStackImportComplete\");\n\n// src/waiters/waitForStackRollbackComplete.ts\n\nvar checkState6 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeStacksCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_ROLLBACK_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"DELETE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForStackRollbackComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState6);\n}, \"waitForStackRollbackComplete\");\nvar waitUntilStackRollbackComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState6);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilStackRollbackComplete\");\n\n// src/waiters/waitForStackUpdateComplete.ts\n\nvar checkState7 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeStacksCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_ROLLBACK_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForStackUpdateComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState7);\n}, \"waitForStackUpdateComplete\");\nvar waitUntilStackUpdateComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState7);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilStackUpdateComplete\");\n\n// src/waiters/waitForTypeRegistrationComplete.ts\n\nvar checkState8 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeTypeRegistrationCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n return result.ProgressStatus;\n }, \"returnComparator\");\n if (returnComparator() === \"COMPLETE\") {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n return result.ProgressStatus;\n }, \"returnComparator\");\n if (returnComparator() === \"FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForTypeRegistrationComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState8);\n}, \"waitForTypeRegistrationComplete\");\nvar waitUntilTypeRegistrationComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState8);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilTypeRegistrationComplete\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n CloudFormationServiceException,\n __Client,\n CloudFormationClient,\n CloudFormation,\n $Command,\n ActivateOrganizationsAccessCommand,\n ActivateTypeCommand,\n BatchDescribeTypeConfigurationsCommand,\n CancelUpdateStackCommand,\n ContinueUpdateRollbackCommand,\n CreateChangeSetCommand,\n CreateGeneratedTemplateCommand,\n CreateStackCommand,\n CreateStackInstancesCommand,\n CreateStackSetCommand,\n DeactivateOrganizationsAccessCommand,\n DeactivateTypeCommand,\n DeleteChangeSetCommand,\n DeleteGeneratedTemplateCommand,\n DeleteStackCommand,\n DeleteStackInstancesCommand,\n DeleteStackSetCommand,\n DeregisterTypeCommand,\n DescribeAccountLimitsCommand,\n DescribeChangeSetCommand,\n DescribeChangeSetHooksCommand,\n DescribeGeneratedTemplateCommand,\n DescribeOrganizationsAccessCommand,\n DescribePublisherCommand,\n DescribeResourceScanCommand,\n DescribeStackDriftDetectionStatusCommand,\n DescribeStackEventsCommand,\n DescribeStackInstanceCommand,\n DescribeStackResourceCommand,\n DescribeStackResourceDriftsCommand,\n DescribeStackResourcesCommand,\n DescribeStackSetCommand,\n DescribeStackSetOperationCommand,\n DescribeStacksCommand,\n DescribeTypeCommand,\n DescribeTypeRegistrationCommand,\n DetectStackDriftCommand,\n DetectStackResourceDriftCommand,\n DetectStackSetDriftCommand,\n EstimateTemplateCostCommand,\n ExecuteChangeSetCommand,\n GetGeneratedTemplateCommand,\n GetStackPolicyCommand,\n GetTemplateCommand,\n GetTemplateSummaryCommand,\n ImportStacksToStackSetCommand,\n ListChangeSetsCommand,\n ListExportsCommand,\n ListGeneratedTemplatesCommand,\n ListImportsCommand,\n ListResourceScanRelatedResourcesCommand,\n ListResourceScanResourcesCommand,\n ListResourceScansCommand,\n ListStackInstanceResourceDriftsCommand,\n ListStackInstancesCommand,\n ListStackResourcesCommand,\n ListStackSetAutoDeploymentTargetsCommand,\n ListStackSetOperationResultsCommand,\n ListStackSetOperationsCommand,\n ListStackSetsCommand,\n ListStacksCommand,\n ListTypeRegistrationsCommand,\n ListTypeVersionsCommand,\n ListTypesCommand,\n PublishTypeCommand,\n RecordHandlerProgressCommand,\n RegisterPublisherCommand,\n RegisterTypeCommand,\n RollbackStackCommand,\n SetStackPolicyCommand,\n SetTypeConfigurationCommand,\n SetTypeDefaultVersionCommand,\n SignalResourceCommand,\n StartResourceScanCommand,\n StopStackSetOperationCommand,\n TestTypeCommand,\n UpdateGeneratedTemplateCommand,\n UpdateStackCommand,\n UpdateStackInstancesCommand,\n UpdateStackSetCommand,\n UpdateTerminationProtectionCommand,\n ValidateTemplateCommand,\n paginateDescribeAccountLimits,\n paginateDescribeStackEvents,\n paginateDescribeStackResourceDrifts,\n paginateDescribeStacks,\n paginateListChangeSets,\n paginateListExports,\n paginateListGeneratedTemplates,\n paginateListImports,\n paginateListResourceScanRelatedResources,\n paginateListResourceScanResources,\n paginateListResourceScans,\n paginateListStackInstances,\n paginateListStackResources,\n paginateListStackSetOperationResults,\n paginateListStackSetOperations,\n paginateListStackSets,\n paginateListStacks,\n paginateListTypeRegistrations,\n paginateListTypeVersions,\n paginateListTypes,\n waitForChangeSetCreateComplete,\n waitUntilChangeSetCreateComplete,\n waitForStackCreateComplete,\n waitUntilStackCreateComplete,\n waitForStackDeleteComplete,\n waitUntilStackDeleteComplete,\n waitForStackExists,\n waitUntilStackExists,\n waitForStackImportComplete,\n waitUntilStackImportComplete,\n waitForStackRollbackComplete,\n waitUntilStackRollbackComplete,\n waitForStackUpdateComplete,\n waitUntilStackUpdateComplete,\n waitForTypeRegistrationComplete,\n waitUntilTypeRegistrationComplete,\n AccountFilterType,\n AccountGateStatus,\n InvalidOperationException,\n OperationNotFoundException,\n ThirdPartyType,\n VersionBump,\n CFNRegistryException,\n TypeNotFoundException,\n AlreadyExistsException,\n AttributeChangeType,\n TypeConfigurationNotFoundException,\n CallAs,\n TokenAlreadyExistsException,\n Capability,\n Category,\n ChangeAction,\n ChangeSource,\n EvaluationType,\n ResourceAttribute,\n RequiresRecreation,\n PolicyAction,\n Replacement,\n ChangeType,\n HookFailureMode,\n HookInvocationPoint,\n HookTargetType,\n ChangeSetHooksStatus,\n ChangeSetNotFoundException,\n ChangeSetStatus,\n ExecutionStatus,\n ChangeSetType,\n OnStackFailure,\n InsufficientCapabilitiesException,\n LimitExceededException,\n ConcurrentResourcesLimitExceededException,\n GeneratedTemplateDeletionPolicy,\n GeneratedTemplateUpdateReplacePolicy,\n OnFailure,\n ConcurrencyMode,\n RegionConcurrencyType,\n OperationIdAlreadyExistsException,\n OperationInProgressException,\n StackSetNotFoundException,\n StaleRequestException,\n CreatedButModifiedException,\n PermissionModels,\n NameAlreadyExistsException,\n InvalidChangeSetStatusException,\n GeneratedTemplateNotFoundException,\n StackSetNotEmptyException,\n RegistryType,\n GeneratedTemplateResourceStatus,\n WarningType,\n GeneratedTemplateStatus,\n OrganizationStatus,\n IdentityProvider,\n PublisherStatus,\n ResourceScanStatus,\n ResourceScanNotFoundException,\n StackDriftDetectionStatus,\n StackDriftStatus,\n DetailedStatus,\n HookStatus,\n ResourceStatus,\n StackInstanceDetailedStatus,\n StackInstanceStatus,\n StackInstanceNotFoundException,\n StackResourceDriftStatus,\n DifferenceType,\n StackStatus,\n StackSetDriftDetectionStatus,\n StackSetDriftStatus,\n StackSetStatus,\n StackSetOperationAction,\n StackSetOperationStatus,\n DeprecatedStatus,\n ProvisioningType,\n TypeTestsStatus,\n Visibility,\n RegistrationStatus,\n TemplateFormat,\n TemplateStage,\n StackNotFoundException,\n ResourceScanInProgressException,\n StackInstanceFilterName,\n OperationResultFilterName,\n StackSetOperationResultStatus,\n InvalidStateTransitionException,\n OperationStatusCheckFailedException,\n OperationStatus,\n HandlerErrorCode,\n ResourceSignalStatus,\n ResourceScanLimitExceededException\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst tslib_1 = require(\"tslib\");\nconst package_json_1 = tslib_1.__importDefault(require(\"../package.json\"));\nconst core_1 = require(\"@aws-sdk/core\");\nconst credential_provider_node_1 = require(\"@aws-sdk/credential-provider-node\");\nconst util_user_agent_node_1 = require(\"@aws-sdk/util-user-agent-node\");\nconst config_resolver_1 = require(\"@smithy/config-resolver\");\nconst hash_node_1 = require(\"@smithy/hash-node\");\nconst middleware_retry_1 = require(\"@smithy/middleware-retry\");\nconst node_config_provider_1 = require(\"@smithy/node-config-provider\");\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst util_body_length_node_1 = require(\"@smithy/util-body-length-node\");\nconst util_retry_1 = require(\"@smithy/util-retry\");\nconst runtimeConfig_shared_1 = require(\"./runtimeConfig.shared\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst util_defaults_mode_node_1 = require(\"@smithy/util-defaults-mode-node\");\nconst smithy_client_2 = require(\"@smithy/smithy-client\");\nconst getRuntimeConfig = (config) => {\n (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version);\n const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config);\n const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode);\n const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config);\n (0, core_1.emitWarningIfUnsupportedVersion)(process.version);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength,\n credentialDefaultProvider: config?.credentialDefaultProvider ?? credential_provider_node_1.defaultProvider,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }),\n maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS),\n region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS),\n requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n (0, node_config_provider_1.loadConfig)({\n ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE,\n }),\n sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, \"sha256\"),\n streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS),\n useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS),\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst url_parser_1 = require(\"@smithy/url-parser\");\nconst util_base64_1 = require(\"@smithy/util-base64\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst httpAuthSchemeProvider_1 = require(\"./auth/httpAuthSchemeProvider\");\nconst endpointResolver_1 = require(\"./endpoint/endpointResolver\");\nconst getRuntimeConfig = (config) => {\n return {\n apiVersion: \"2010-05-15\",\n base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64,\n base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultCloudFormationHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new core_1.AwsSdkSigV4Signer(),\n },\n ],\n logger: config?.logger ?? new smithy_client_1.NoOpLogger(),\n serviceId: config?.serviceId ?? \"CloudFormation\",\n urlParser: config?.urlParser ?? url_parser_1.parseUrl,\n utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8,\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function () {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function () {\n return _parse.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function () {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function () {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function () {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function () {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function () {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function () {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function () {\n return _version.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction md5(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('md5').update(bytes).digest();\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n randomUUID: _crypto.default.randomUUID\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\n\nfunction rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n _crypto.default.randomFillSync(rnds8Pool);\n\n poolPtr = 0;\n }\n\n return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction sha1(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('sha1').update(bytes).digest();\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nexports.unsafeStringify = unsafeStringify;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nfunction unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.unsafeStringify)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.URL = exports.DNS = void 0;\nexports.default = v35;\n\nvar _stringify = require(\"./stringify.js\");\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _native = _interopRequireDefault(require(\"./native.js\"));\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n if (_native.default.randomUUID && !buf && !options) {\n return _native.default.randomUUID();\n }\n\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.slice(14, 15), 16);\n}\n\nvar _default = version;\nexports.default = _default;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveHttpAuthSchemeConfig = exports.defaultCognitoIdentityHttpAuthSchemeProvider = exports.defaultCognitoIdentityHttpAuthSchemeParametersProvider = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_middleware_1 = require(\"@smithy/util-middleware\");\nconst defaultCognitoIdentityHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: (0, util_middleware_1.getSmithyContext)(context).operation,\n region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) ||\n (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nexports.defaultCognitoIdentityHttpAuthSchemeParametersProvider = defaultCognitoIdentityHttpAuthSchemeParametersProvider;\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"cognito-identity\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createSmithyApiNoAuthHttpAuthOption(authParameters) {\n return {\n schemeId: \"smithy.api#noAuth\",\n };\n}\nconst defaultCognitoIdentityHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n case \"GetCredentialsForIdentity\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"GetId\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"GetOpenIdToken\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"UnlinkIdentity\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nexports.defaultCognitoIdentityHttpAuthSchemeProvider = defaultCognitoIdentityHttpAuthSchemeProvider;\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = (0, core_1.resolveAwsSdkSigV4Config)(config);\n return {\n ...config_0,\n };\n};\nexports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultEndpointResolver = void 0;\nconst util_endpoints_1 = require(\"@aws-sdk/util-endpoints\");\nconst util_endpoints_2 = require(\"@smithy/util-endpoints\");\nconst ruleset_1 = require(\"./ruleset\");\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n });\n};\nexports.defaultEndpointResolver = defaultEndpointResolver;\nutil_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ruleSet = void 0;\nconst s = \"required\", t = \"fn\", u = \"argv\", v = \"ref\";\nconst a = true, b = \"isSet\", c = \"booleanEquals\", d = \"error\", e = \"endpoint\", f = \"tree\", g = \"PartitionResult\", h = { [s]: false, \"type\": \"String\" }, i = { [s]: true, \"default\": false, \"type\": \"Boolean\" }, j = { [v]: \"Endpoint\" }, k = { [t]: c, [u]: [{ [v]: \"UseFIPS\" }, true] }, l = { [t]: c, [u]: [{ [v]: \"UseDualStack\" }, true] }, m = {}, n = { [t]: \"getAttr\", [u]: [{ [v]: g }, \"supportsFIPS\"] }, o = { [t]: c, [u]: [true, { [t]: \"getAttr\", [u]: [{ [v]: g }, \"supportsDualStack\"] }] }, p = [k], q = [l], r = [{ [v]: \"Region\" }];\nconst _data = { version: \"1.0\", parameters: { Region: h, UseDualStack: i, UseFIPS: i, Endpoint: h }, rules: [{ conditions: [{ [t]: b, [u]: [j] }], rules: [{ conditions: p, error: \"Invalid Configuration: FIPS and custom endpoint are not supported\", type: d }, { conditions: q, error: \"Invalid Configuration: Dualstack and custom endpoint are not supported\", type: d }, { endpoint: { url: j, properties: m, headers: m }, type: e }], type: f }, { conditions: [{ [t]: b, [u]: r }], rules: [{ conditions: [{ [t]: \"aws.partition\", [u]: r, assign: g }], rules: [{ conditions: [k, l], rules: [{ conditions: [{ [t]: c, [u]: [a, n] }, o], rules: [{ endpoint: { url: \"https://cognito-identity-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: m, headers: m }, type: e }], type: f }, { error: \"FIPS and DualStack are enabled, but this partition does not support one or both\", type: d }], type: f }, { conditions: p, rules: [{ conditions: [{ [t]: c, [u]: [n, a] }], rules: [{ endpoint: { url: \"https://cognito-identity-fips.{Region}.{PartitionResult#dnsSuffix}\", properties: m, headers: m }, type: e }], type: f }, { error: \"FIPS is enabled but this partition does not support FIPS\", type: d }], type: f }, { conditions: q, rules: [{ conditions: [o], rules: [{ endpoint: { url: \"https://cognito-identity.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: m, headers: m }, type: e }], type: f }, { error: \"DualStack is enabled but this partition does not support DualStack\", type: d }], type: f }, { endpoint: { url: \"https://cognito-identity.{Region}.{PartitionResult#dnsSuffix}\", properties: m, headers: m }, type: e }], type: f }], type: f }, { error: \"Invalid Configuration: Missing Region\", type: d }] };\nexports.ruleSet = _data;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AmbiguousRoleResolutionType: () => AmbiguousRoleResolutionType,\n CognitoIdentity: () => CognitoIdentity,\n CognitoIdentityClient: () => CognitoIdentityClient,\n CognitoIdentityServiceException: () => CognitoIdentityServiceException,\n ConcurrentModificationException: () => ConcurrentModificationException,\n CreateIdentityPoolCommand: () => CreateIdentityPoolCommand,\n DeleteIdentitiesCommand: () => DeleteIdentitiesCommand,\n DeleteIdentityPoolCommand: () => DeleteIdentityPoolCommand,\n DescribeIdentityCommand: () => DescribeIdentityCommand,\n DescribeIdentityPoolCommand: () => DescribeIdentityPoolCommand,\n DeveloperUserAlreadyRegisteredException: () => DeveloperUserAlreadyRegisteredException,\n ErrorCode: () => ErrorCode,\n ExternalServiceException: () => ExternalServiceException,\n GetCredentialsForIdentityCommand: () => GetCredentialsForIdentityCommand,\n GetIdCommand: () => GetIdCommand,\n GetIdentityPoolRolesCommand: () => GetIdentityPoolRolesCommand,\n GetOpenIdTokenCommand: () => GetOpenIdTokenCommand,\n GetOpenIdTokenForDeveloperIdentityCommand: () => GetOpenIdTokenForDeveloperIdentityCommand,\n GetPrincipalTagAttributeMapCommand: () => GetPrincipalTagAttributeMapCommand,\n InternalErrorException: () => InternalErrorException,\n InvalidIdentityPoolConfigurationException: () => InvalidIdentityPoolConfigurationException,\n InvalidParameterException: () => InvalidParameterException,\n LimitExceededException: () => LimitExceededException,\n ListIdentitiesCommand: () => ListIdentitiesCommand,\n ListIdentityPoolsCommand: () => ListIdentityPoolsCommand,\n ListTagsForResourceCommand: () => ListTagsForResourceCommand,\n LookupDeveloperIdentityCommand: () => LookupDeveloperIdentityCommand,\n MappingRuleMatchType: () => MappingRuleMatchType,\n MergeDeveloperIdentitiesCommand: () => MergeDeveloperIdentitiesCommand,\n NotAuthorizedException: () => NotAuthorizedException,\n ResourceConflictException: () => ResourceConflictException,\n ResourceNotFoundException: () => ResourceNotFoundException,\n RoleMappingType: () => RoleMappingType,\n SetIdentityPoolRolesCommand: () => SetIdentityPoolRolesCommand,\n SetPrincipalTagAttributeMapCommand: () => SetPrincipalTagAttributeMapCommand,\n TagResourceCommand: () => TagResourceCommand,\n TooManyRequestsException: () => TooManyRequestsException,\n UnlinkDeveloperIdentityCommand: () => UnlinkDeveloperIdentityCommand,\n UnlinkIdentityCommand: () => UnlinkIdentityCommand,\n UntagResourceCommand: () => UntagResourceCommand,\n UpdateIdentityPoolCommand: () => UpdateIdentityPoolCommand,\n __Client: () => import_smithy_client.Client,\n paginateListIdentityPools: () => paginateListIdentityPools\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/CognitoIdentityClient.ts\nvar import_middleware_host_header = require(\"@aws-sdk/middleware-host-header\");\nvar import_middleware_logger = require(\"@aws-sdk/middleware-logger\");\nvar import_middleware_recursion_detection = require(\"@aws-sdk/middleware-recursion-detection\");\nvar import_middleware_user_agent = require(\"@aws-sdk/middleware-user-agent\");\nvar import_config_resolver = require(\"@smithy/config-resolver\");\nvar import_core = require(\"@smithy/core\");\nvar import_middleware_content_length = require(\"@smithy/middleware-content-length\");\nvar import_middleware_endpoint = require(\"@smithy/middleware-endpoint\");\nvar import_middleware_retry = require(\"@smithy/middleware-retry\");\n\nvar import_httpAuthSchemeProvider = require(\"./auth/httpAuthSchemeProvider\");\n\n// src/endpoint/EndpointParameters.ts\nvar resolveClientEndpointParameters = /* @__PURE__ */ __name((options) => {\n return {\n ...options,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"cognito-identity\"\n };\n}, \"resolveClientEndpointParameters\");\nvar commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" }\n};\n\n// src/CognitoIdentityClient.ts\nvar import_runtimeConfig = require(\"././runtimeConfig\");\n\n// src/runtimeExtensions.ts\nvar import_region_config_resolver = require(\"@aws-sdk/region-config-resolver\");\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar import_smithy_client = require(\"@smithy/smithy-client\");\n\n// src/auth/httpAuthExtensionConfiguration.ts\nvar getHttpAuthExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n } else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n }\n };\n}, \"getHttpAuthExtensionConfiguration\");\nvar resolveHttpAuthRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials()\n };\n}, \"resolveHttpAuthRuntimeConfig\");\n\n// src/runtimeExtensions.ts\nvar asPartial = /* @__PURE__ */ __name((t) => t, \"asPartial\");\nvar resolveRuntimeExtensions = /* @__PURE__ */ __name((runtimeConfig, extensions) => {\n const extensionConfiguration = {\n ...asPartial((0, import_region_config_resolver.getAwsRegionExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_smithy_client.getDefaultExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_protocol_http.getHttpHandlerExtensionConfiguration)(runtimeConfig)),\n ...asPartial(getHttpAuthExtensionConfiguration(runtimeConfig))\n };\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return {\n ...runtimeConfig,\n ...(0, import_region_config_resolver.resolveAwsRegionExtensionConfiguration)(extensionConfiguration),\n ...(0, import_smithy_client.resolveDefaultRuntimeConfig)(extensionConfiguration),\n ...(0, import_protocol_http.resolveHttpHandlerRuntimeConfig)(extensionConfiguration),\n ...resolveHttpAuthRuntimeConfig(extensionConfiguration)\n };\n}, \"resolveRuntimeExtensions\");\n\n// src/CognitoIdentityClient.ts\nvar _CognitoIdentityClient = class _CognitoIdentityClient extends import_smithy_client.Client {\n constructor(...[configuration]) {\n const _config_0 = (0, import_runtimeConfig.getRuntimeConfig)(configuration || {});\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = (0, import_config_resolver.resolveRegionConfig)(_config_1);\n const _config_3 = (0, import_middleware_endpoint.resolveEndpointConfig)(_config_2);\n const _config_4 = (0, import_middleware_retry.resolveRetryConfig)(_config_3);\n const _config_5 = (0, import_middleware_host_header.resolveHostHeaderConfig)(_config_4);\n const _config_6 = (0, import_middleware_user_agent.resolveUserAgentConfig)(_config_5);\n const _config_7 = (0, import_httpAuthSchemeProvider.resolveHttpAuthSchemeConfig)(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, (configuration == null ? void 0 : configuration.extensions) || []);\n super(_config_8);\n this.config = _config_8;\n this.middlewareStack.use((0, import_middleware_retry.getRetryPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_content_length.getContentLengthPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_host_header.getHostHeaderPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_logger.getLoggerPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_recursion_detection.getRecursionDetectionPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_user_agent.getUserAgentPlugin)(this.config));\n this.middlewareStack.use(\n (0, import_core.getHttpAuthSchemeEndpointRuleSetPlugin)(this.config, {\n httpAuthSchemeParametersProvider: this.getDefaultHttpAuthSchemeParametersProvider(),\n identityProviderConfigProvider: this.getIdentityProviderConfigProvider()\n })\n );\n this.middlewareStack.use((0, import_core.getHttpSigningPlugin)(this.config));\n }\n /**\n * Destroy underlying resources, like sockets. It's usually not necessary to do this.\n * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed.\n * Otherwise, sockets might stay open for quite a long time before the server terminates them.\n */\n destroy() {\n super.destroy();\n }\n getDefaultHttpAuthSchemeParametersProvider() {\n return import_httpAuthSchemeProvider.defaultCognitoIdentityHttpAuthSchemeParametersProvider;\n }\n getIdentityProviderConfigProvider() {\n return async (config) => new import_core.DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials\n });\n }\n};\n__name(_CognitoIdentityClient, \"CognitoIdentityClient\");\nvar CognitoIdentityClient = _CognitoIdentityClient;\n\n// src/CognitoIdentity.ts\n\n\n// src/commands/CreateIdentityPoolCommand.ts\n\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\n\nvar import_types = require(\"@smithy/types\");\n\n// src/protocols/Aws_json1_1.ts\nvar import_core2 = require(\"@aws-sdk/core\");\n\n\n\n// src/models/CognitoIdentityServiceException.ts\n\nvar _CognitoIdentityServiceException = class _CognitoIdentityServiceException extends import_smithy_client.ServiceException {\n /**\n * @internal\n */\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, _CognitoIdentityServiceException.prototype);\n }\n};\n__name(_CognitoIdentityServiceException, \"CognitoIdentityServiceException\");\nvar CognitoIdentityServiceException = _CognitoIdentityServiceException;\n\n// src/models/models_0.ts\nvar AmbiguousRoleResolutionType = {\n AUTHENTICATED_ROLE: \"AuthenticatedRole\",\n DENY: \"Deny\"\n};\nvar _InternalErrorException = class _InternalErrorException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InternalErrorException\",\n $fault: \"server\",\n ...opts\n });\n this.name = \"InternalErrorException\";\n this.$fault = \"server\";\n Object.setPrototypeOf(this, _InternalErrorException.prototype);\n }\n};\n__name(_InternalErrorException, \"InternalErrorException\");\nvar InternalErrorException = _InternalErrorException;\nvar _InvalidParameterException = class _InvalidParameterException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidParameterException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidParameterException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidParameterException.prototype);\n }\n};\n__name(_InvalidParameterException, \"InvalidParameterException\");\nvar InvalidParameterException = _InvalidParameterException;\nvar _LimitExceededException = class _LimitExceededException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"LimitExceededException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"LimitExceededException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _LimitExceededException.prototype);\n }\n};\n__name(_LimitExceededException, \"LimitExceededException\");\nvar LimitExceededException = _LimitExceededException;\nvar _NotAuthorizedException = class _NotAuthorizedException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"NotAuthorizedException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"NotAuthorizedException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _NotAuthorizedException.prototype);\n }\n};\n__name(_NotAuthorizedException, \"NotAuthorizedException\");\nvar NotAuthorizedException = _NotAuthorizedException;\nvar _ResourceConflictException = class _ResourceConflictException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ResourceConflictException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ResourceConflictException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ResourceConflictException.prototype);\n }\n};\n__name(_ResourceConflictException, \"ResourceConflictException\");\nvar ResourceConflictException = _ResourceConflictException;\nvar _TooManyRequestsException = class _TooManyRequestsException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"TooManyRequestsException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"TooManyRequestsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _TooManyRequestsException.prototype);\n }\n};\n__name(_TooManyRequestsException, \"TooManyRequestsException\");\nvar TooManyRequestsException = _TooManyRequestsException;\nvar ErrorCode = {\n ACCESS_DENIED: \"AccessDenied\",\n INTERNAL_SERVER_ERROR: \"InternalServerError\"\n};\nvar _ResourceNotFoundException = class _ResourceNotFoundException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ResourceNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ResourceNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ResourceNotFoundException.prototype);\n }\n};\n__name(_ResourceNotFoundException, \"ResourceNotFoundException\");\nvar ResourceNotFoundException = _ResourceNotFoundException;\nvar _ExternalServiceException = class _ExternalServiceException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ExternalServiceException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ExternalServiceException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ExternalServiceException.prototype);\n }\n};\n__name(_ExternalServiceException, \"ExternalServiceException\");\nvar ExternalServiceException = _ExternalServiceException;\nvar _InvalidIdentityPoolConfigurationException = class _InvalidIdentityPoolConfigurationException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidIdentityPoolConfigurationException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidIdentityPoolConfigurationException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidIdentityPoolConfigurationException.prototype);\n }\n};\n__name(_InvalidIdentityPoolConfigurationException, \"InvalidIdentityPoolConfigurationException\");\nvar InvalidIdentityPoolConfigurationException = _InvalidIdentityPoolConfigurationException;\nvar MappingRuleMatchType = {\n CONTAINS: \"Contains\",\n EQUALS: \"Equals\",\n NOT_EQUAL: \"NotEqual\",\n STARTS_WITH: \"StartsWith\"\n};\nvar RoleMappingType = {\n RULES: \"Rules\",\n TOKEN: \"Token\"\n};\nvar _DeveloperUserAlreadyRegisteredException = class _DeveloperUserAlreadyRegisteredException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"DeveloperUserAlreadyRegisteredException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"DeveloperUserAlreadyRegisteredException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _DeveloperUserAlreadyRegisteredException.prototype);\n }\n};\n__name(_DeveloperUserAlreadyRegisteredException, \"DeveloperUserAlreadyRegisteredException\");\nvar DeveloperUserAlreadyRegisteredException = _DeveloperUserAlreadyRegisteredException;\nvar _ConcurrentModificationException = class _ConcurrentModificationException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ConcurrentModificationException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ConcurrentModificationException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ConcurrentModificationException.prototype);\n }\n};\n__name(_ConcurrentModificationException, \"ConcurrentModificationException\");\nvar ConcurrentModificationException = _ConcurrentModificationException;\n\n// src/protocols/Aws_json1_1.ts\nvar se_CreateIdentityPoolCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"CreateIdentityPool\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CreateIdentityPoolCommand\");\nvar se_DeleteIdentitiesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"DeleteIdentities\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteIdentitiesCommand\");\nvar se_DeleteIdentityPoolCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"DeleteIdentityPool\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteIdentityPoolCommand\");\nvar se_DescribeIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"DescribeIdentity\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeIdentityCommand\");\nvar se_DescribeIdentityPoolCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"DescribeIdentityPool\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeIdentityPoolCommand\");\nvar se_GetCredentialsForIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"GetCredentialsForIdentity\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetCredentialsForIdentityCommand\");\nvar se_GetIdCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"GetId\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetIdCommand\");\nvar se_GetIdentityPoolRolesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"GetIdentityPoolRoles\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetIdentityPoolRolesCommand\");\nvar se_GetOpenIdTokenCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"GetOpenIdToken\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetOpenIdTokenCommand\");\nvar se_GetOpenIdTokenForDeveloperIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"GetOpenIdTokenForDeveloperIdentity\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetOpenIdTokenForDeveloperIdentityCommand\");\nvar se_GetPrincipalTagAttributeMapCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"GetPrincipalTagAttributeMap\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetPrincipalTagAttributeMapCommand\");\nvar se_ListIdentitiesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"ListIdentities\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListIdentitiesCommand\");\nvar se_ListIdentityPoolsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"ListIdentityPools\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListIdentityPoolsCommand\");\nvar se_ListTagsForResourceCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"ListTagsForResource\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListTagsForResourceCommand\");\nvar se_LookupDeveloperIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"LookupDeveloperIdentity\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_LookupDeveloperIdentityCommand\");\nvar se_MergeDeveloperIdentitiesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"MergeDeveloperIdentities\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_MergeDeveloperIdentitiesCommand\");\nvar se_SetIdentityPoolRolesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"SetIdentityPoolRoles\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_SetIdentityPoolRolesCommand\");\nvar se_SetPrincipalTagAttributeMapCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"SetPrincipalTagAttributeMap\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_SetPrincipalTagAttributeMapCommand\");\nvar se_TagResourceCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"TagResource\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_TagResourceCommand\");\nvar se_UnlinkDeveloperIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"UnlinkDeveloperIdentity\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UnlinkDeveloperIdentityCommand\");\nvar se_UnlinkIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"UnlinkIdentity\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UnlinkIdentityCommand\");\nvar se_UntagResourceCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"UntagResource\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UntagResourceCommand\");\nvar se_UpdateIdentityPoolCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"UpdateIdentityPool\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UpdateIdentityPoolCommand\");\nvar de_CreateIdentityPoolCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_CreateIdentityPoolCommand\");\nvar de_DeleteIdentitiesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeleteIdentitiesCommand\");\nvar de_DeleteIdentityPoolCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_DeleteIdentityPoolCommand\");\nvar de_DescribeIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = de_IdentityDescription(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeIdentityCommand\");\nvar de_DescribeIdentityPoolCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeIdentityPoolCommand\");\nvar de_GetCredentialsForIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = de_GetCredentialsForIdentityResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetCredentialsForIdentityCommand\");\nvar de_GetIdCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetIdCommand\");\nvar de_GetIdentityPoolRolesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetIdentityPoolRolesCommand\");\nvar de_GetOpenIdTokenCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetOpenIdTokenCommand\");\nvar de_GetOpenIdTokenForDeveloperIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetOpenIdTokenForDeveloperIdentityCommand\");\nvar de_GetPrincipalTagAttributeMapCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetPrincipalTagAttributeMapCommand\");\nvar de_ListIdentitiesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = de_ListIdentitiesResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListIdentitiesCommand\");\nvar de_ListIdentityPoolsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListIdentityPoolsCommand\");\nvar de_ListTagsForResourceCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListTagsForResourceCommand\");\nvar de_LookupDeveloperIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_LookupDeveloperIdentityCommand\");\nvar de_MergeDeveloperIdentitiesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_MergeDeveloperIdentitiesCommand\");\nvar de_SetIdentityPoolRolesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_SetIdentityPoolRolesCommand\");\nvar de_SetPrincipalTagAttributeMapCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_SetPrincipalTagAttributeMapCommand\");\nvar de_TagResourceCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_TagResourceCommand\");\nvar de_UnlinkDeveloperIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_UnlinkDeveloperIdentityCommand\");\nvar de_UnlinkIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_UnlinkIdentityCommand\");\nvar de_UntagResourceCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UntagResourceCommand\");\nvar de_UpdateIdentityPoolCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UpdateIdentityPoolCommand\");\nvar de_CommandError = /* @__PURE__ */ __name(async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await (0, import_core2.parseJsonErrorBody)(output.body, context)\n };\n const errorCode = (0, import_core2.loadRestJsonErrorCode)(output, parsedOutput.body);\n switch (errorCode) {\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n throw await de_InternalErrorExceptionRes(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n throw await de_InvalidParameterExceptionRes(parsedOutput, context);\n case \"LimitExceededException\":\n case \"com.amazonaws.cognitoidentity#LimitExceededException\":\n throw await de_LimitExceededExceptionRes(parsedOutput, context);\n case \"NotAuthorizedException\":\n case \"com.amazonaws.cognitoidentity#NotAuthorizedException\":\n throw await de_NotAuthorizedExceptionRes(parsedOutput, context);\n case \"ResourceConflictException\":\n case \"com.amazonaws.cognitoidentity#ResourceConflictException\":\n throw await de_ResourceConflictExceptionRes(parsedOutput, context);\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n throw await de_TooManyRequestsExceptionRes(parsedOutput, context);\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.cognitoidentity#ResourceNotFoundException\":\n throw await de_ResourceNotFoundExceptionRes(parsedOutput, context);\n case \"ExternalServiceException\":\n case \"com.amazonaws.cognitoidentity#ExternalServiceException\":\n throw await de_ExternalServiceExceptionRes(parsedOutput, context);\n case \"InvalidIdentityPoolConfigurationException\":\n case \"com.amazonaws.cognitoidentity#InvalidIdentityPoolConfigurationException\":\n throw await de_InvalidIdentityPoolConfigurationExceptionRes(parsedOutput, context);\n case \"DeveloperUserAlreadyRegisteredException\":\n case \"com.amazonaws.cognitoidentity#DeveloperUserAlreadyRegisteredException\":\n throw await de_DeveloperUserAlreadyRegisteredExceptionRes(parsedOutput, context);\n case \"ConcurrentModificationException\":\n case \"com.amazonaws.cognitoidentity#ConcurrentModificationException\":\n throw await de_ConcurrentModificationExceptionRes(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n return throwDefaultError({\n output,\n parsedBody,\n errorCode\n });\n }\n}, \"de_CommandError\");\nvar de_ConcurrentModificationExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new ConcurrentModificationException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ConcurrentModificationExceptionRes\");\nvar de_DeveloperUserAlreadyRegisteredExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new DeveloperUserAlreadyRegisteredException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_DeveloperUserAlreadyRegisteredExceptionRes\");\nvar de_ExternalServiceExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new ExternalServiceException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ExternalServiceExceptionRes\");\nvar de_InternalErrorExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new InternalErrorException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InternalErrorExceptionRes\");\nvar de_InvalidIdentityPoolConfigurationExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new InvalidIdentityPoolConfigurationException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidIdentityPoolConfigurationExceptionRes\");\nvar de_InvalidParameterExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new InvalidParameterException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidParameterExceptionRes\");\nvar de_LimitExceededExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new LimitExceededException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_LimitExceededExceptionRes\");\nvar de_NotAuthorizedExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new NotAuthorizedException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_NotAuthorizedExceptionRes\");\nvar de_ResourceConflictExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new ResourceConflictException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ResourceConflictExceptionRes\");\nvar de_ResourceNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new ResourceNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ResourceNotFoundExceptionRes\");\nvar de_TooManyRequestsExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new TooManyRequestsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_TooManyRequestsExceptionRes\");\nvar de_Credentials = /* @__PURE__ */ __name((output, context) => {\n return (0, import_smithy_client.take)(output, {\n AccessKeyId: import_smithy_client.expectString,\n Expiration: (_) => (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseEpochTimestamp)((0, import_smithy_client.expectNumber)(_))),\n SecretKey: import_smithy_client.expectString,\n SessionToken: import_smithy_client.expectString\n });\n}, \"de_Credentials\");\nvar de_GetCredentialsForIdentityResponse = /* @__PURE__ */ __name((output, context) => {\n return (0, import_smithy_client.take)(output, {\n Credentials: (_) => de_Credentials(_, context),\n IdentityId: import_smithy_client.expectString\n });\n}, \"de_GetCredentialsForIdentityResponse\");\nvar de_IdentitiesList = /* @__PURE__ */ __name((output, context) => {\n const retVal = (output || []).filter((e) => e != null).map((entry) => {\n return de_IdentityDescription(entry, context);\n });\n return retVal;\n}, \"de_IdentitiesList\");\nvar de_IdentityDescription = /* @__PURE__ */ __name((output, context) => {\n return (0, import_smithy_client.take)(output, {\n CreationDate: (_) => (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseEpochTimestamp)((0, import_smithy_client.expectNumber)(_))),\n IdentityId: import_smithy_client.expectString,\n LastModifiedDate: (_) => (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseEpochTimestamp)((0, import_smithy_client.expectNumber)(_))),\n Logins: import_smithy_client._json\n });\n}, \"de_IdentityDescription\");\nvar de_ListIdentitiesResponse = /* @__PURE__ */ __name((output, context) => {\n return (0, import_smithy_client.take)(output, {\n Identities: (_) => de_IdentitiesList(_, context),\n IdentityPoolId: import_smithy_client.expectString,\n NextToken: import_smithy_client.expectString\n });\n}, \"de_ListIdentitiesResponse\");\nvar deserializeMetadata = /* @__PURE__ */ __name((output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"]\n}), \"deserializeMetadata\");\nvar throwDefaultError = (0, import_smithy_client.withBaseException)(CognitoIdentityServiceException);\nvar buildHttpRpcRequest = /* @__PURE__ */ __name(async (context, headers, path, resolvedHostname, body) => {\n const { hostname, protocol = \"https\", port, path: basePath } = await context.endpoint();\n const contents = {\n protocol,\n hostname,\n port,\n method: \"POST\",\n path: basePath.endsWith(\"/\") ? basePath.slice(0, -1) + path : basePath + path,\n headers\n };\n if (resolvedHostname !== void 0) {\n contents.hostname = resolvedHostname;\n }\n if (body !== void 0) {\n contents.body = body;\n }\n return new import_protocol_http.HttpRequest(contents);\n}, \"buildHttpRpcRequest\");\nfunction sharedHeaders(operation) {\n return {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": `AWSCognitoIdentityService.${operation}`\n };\n}\n__name(sharedHeaders, \"sharedHeaders\");\n\n// src/commands/CreateIdentityPoolCommand.ts\nvar _CreateIdentityPoolCommand = class _CreateIdentityPoolCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"CreateIdentityPool\", {}).n(\"CognitoIdentityClient\", \"CreateIdentityPoolCommand\").f(void 0, void 0).ser(se_CreateIdentityPoolCommand).de(de_CreateIdentityPoolCommand).build() {\n};\n__name(_CreateIdentityPoolCommand, \"CreateIdentityPoolCommand\");\nvar CreateIdentityPoolCommand = _CreateIdentityPoolCommand;\n\n// src/commands/DeleteIdentitiesCommand.ts\n\n\n\n\nvar _DeleteIdentitiesCommand = class _DeleteIdentitiesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"DeleteIdentities\", {}).n(\"CognitoIdentityClient\", \"DeleteIdentitiesCommand\").f(void 0, void 0).ser(se_DeleteIdentitiesCommand).de(de_DeleteIdentitiesCommand).build() {\n};\n__name(_DeleteIdentitiesCommand, \"DeleteIdentitiesCommand\");\nvar DeleteIdentitiesCommand = _DeleteIdentitiesCommand;\n\n// src/commands/DeleteIdentityPoolCommand.ts\n\n\n\n\nvar _DeleteIdentityPoolCommand = class _DeleteIdentityPoolCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"DeleteIdentityPool\", {}).n(\"CognitoIdentityClient\", \"DeleteIdentityPoolCommand\").f(void 0, void 0).ser(se_DeleteIdentityPoolCommand).de(de_DeleteIdentityPoolCommand).build() {\n};\n__name(_DeleteIdentityPoolCommand, \"DeleteIdentityPoolCommand\");\nvar DeleteIdentityPoolCommand = _DeleteIdentityPoolCommand;\n\n// src/commands/DescribeIdentityCommand.ts\n\n\n\n\nvar _DescribeIdentityCommand = class _DescribeIdentityCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"DescribeIdentity\", {}).n(\"CognitoIdentityClient\", \"DescribeIdentityCommand\").f(void 0, void 0).ser(se_DescribeIdentityCommand).de(de_DescribeIdentityCommand).build() {\n};\n__name(_DescribeIdentityCommand, \"DescribeIdentityCommand\");\nvar DescribeIdentityCommand = _DescribeIdentityCommand;\n\n// src/commands/DescribeIdentityPoolCommand.ts\n\n\n\n\nvar _DescribeIdentityPoolCommand = class _DescribeIdentityPoolCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"DescribeIdentityPool\", {}).n(\"CognitoIdentityClient\", \"DescribeIdentityPoolCommand\").f(void 0, void 0).ser(se_DescribeIdentityPoolCommand).de(de_DescribeIdentityPoolCommand).build() {\n};\n__name(_DescribeIdentityPoolCommand, \"DescribeIdentityPoolCommand\");\nvar DescribeIdentityPoolCommand = _DescribeIdentityPoolCommand;\n\n// src/commands/GetCredentialsForIdentityCommand.ts\n\n\n\n\nvar _GetCredentialsForIdentityCommand = class _GetCredentialsForIdentityCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"GetCredentialsForIdentity\", {}).n(\"CognitoIdentityClient\", \"GetCredentialsForIdentityCommand\").f(void 0, void 0).ser(se_GetCredentialsForIdentityCommand).de(de_GetCredentialsForIdentityCommand).build() {\n};\n__name(_GetCredentialsForIdentityCommand, \"GetCredentialsForIdentityCommand\");\nvar GetCredentialsForIdentityCommand = _GetCredentialsForIdentityCommand;\n\n// src/commands/GetIdCommand.ts\n\n\n\n\nvar _GetIdCommand = class _GetIdCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"GetId\", {}).n(\"CognitoIdentityClient\", \"GetIdCommand\").f(void 0, void 0).ser(se_GetIdCommand).de(de_GetIdCommand).build() {\n};\n__name(_GetIdCommand, \"GetIdCommand\");\nvar GetIdCommand = _GetIdCommand;\n\n// src/commands/GetIdentityPoolRolesCommand.ts\n\n\n\n\nvar _GetIdentityPoolRolesCommand = class _GetIdentityPoolRolesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"GetIdentityPoolRoles\", {}).n(\"CognitoIdentityClient\", \"GetIdentityPoolRolesCommand\").f(void 0, void 0).ser(se_GetIdentityPoolRolesCommand).de(de_GetIdentityPoolRolesCommand).build() {\n};\n__name(_GetIdentityPoolRolesCommand, \"GetIdentityPoolRolesCommand\");\nvar GetIdentityPoolRolesCommand = _GetIdentityPoolRolesCommand;\n\n// src/commands/GetOpenIdTokenCommand.ts\n\n\n\n\nvar _GetOpenIdTokenCommand = class _GetOpenIdTokenCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"GetOpenIdToken\", {}).n(\"CognitoIdentityClient\", \"GetOpenIdTokenCommand\").f(void 0, void 0).ser(se_GetOpenIdTokenCommand).de(de_GetOpenIdTokenCommand).build() {\n};\n__name(_GetOpenIdTokenCommand, \"GetOpenIdTokenCommand\");\nvar GetOpenIdTokenCommand = _GetOpenIdTokenCommand;\n\n// src/commands/GetOpenIdTokenForDeveloperIdentityCommand.ts\n\n\n\n\nvar _GetOpenIdTokenForDeveloperIdentityCommand = class _GetOpenIdTokenForDeveloperIdentityCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"GetOpenIdTokenForDeveloperIdentity\", {}).n(\"CognitoIdentityClient\", \"GetOpenIdTokenForDeveloperIdentityCommand\").f(void 0, void 0).ser(se_GetOpenIdTokenForDeveloperIdentityCommand).de(de_GetOpenIdTokenForDeveloperIdentityCommand).build() {\n};\n__name(_GetOpenIdTokenForDeveloperIdentityCommand, \"GetOpenIdTokenForDeveloperIdentityCommand\");\nvar GetOpenIdTokenForDeveloperIdentityCommand = _GetOpenIdTokenForDeveloperIdentityCommand;\n\n// src/commands/GetPrincipalTagAttributeMapCommand.ts\n\n\n\n\nvar _GetPrincipalTagAttributeMapCommand = class _GetPrincipalTagAttributeMapCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"GetPrincipalTagAttributeMap\", {}).n(\"CognitoIdentityClient\", \"GetPrincipalTagAttributeMapCommand\").f(void 0, void 0).ser(se_GetPrincipalTagAttributeMapCommand).de(de_GetPrincipalTagAttributeMapCommand).build() {\n};\n__name(_GetPrincipalTagAttributeMapCommand, \"GetPrincipalTagAttributeMapCommand\");\nvar GetPrincipalTagAttributeMapCommand = _GetPrincipalTagAttributeMapCommand;\n\n// src/commands/ListIdentitiesCommand.ts\n\n\n\n\nvar _ListIdentitiesCommand = class _ListIdentitiesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"ListIdentities\", {}).n(\"CognitoIdentityClient\", \"ListIdentitiesCommand\").f(void 0, void 0).ser(se_ListIdentitiesCommand).de(de_ListIdentitiesCommand).build() {\n};\n__name(_ListIdentitiesCommand, \"ListIdentitiesCommand\");\nvar ListIdentitiesCommand = _ListIdentitiesCommand;\n\n// src/commands/ListIdentityPoolsCommand.ts\n\n\n\n\nvar _ListIdentityPoolsCommand = class _ListIdentityPoolsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"ListIdentityPools\", {}).n(\"CognitoIdentityClient\", \"ListIdentityPoolsCommand\").f(void 0, void 0).ser(se_ListIdentityPoolsCommand).de(de_ListIdentityPoolsCommand).build() {\n};\n__name(_ListIdentityPoolsCommand, \"ListIdentityPoolsCommand\");\nvar ListIdentityPoolsCommand = _ListIdentityPoolsCommand;\n\n// src/commands/ListTagsForResourceCommand.ts\n\n\n\n\nvar _ListTagsForResourceCommand = class _ListTagsForResourceCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"ListTagsForResource\", {}).n(\"CognitoIdentityClient\", \"ListTagsForResourceCommand\").f(void 0, void 0).ser(se_ListTagsForResourceCommand).de(de_ListTagsForResourceCommand).build() {\n};\n__name(_ListTagsForResourceCommand, \"ListTagsForResourceCommand\");\nvar ListTagsForResourceCommand = _ListTagsForResourceCommand;\n\n// src/commands/LookupDeveloperIdentityCommand.ts\n\n\n\n\nvar _LookupDeveloperIdentityCommand = class _LookupDeveloperIdentityCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"LookupDeveloperIdentity\", {}).n(\"CognitoIdentityClient\", \"LookupDeveloperIdentityCommand\").f(void 0, void 0).ser(se_LookupDeveloperIdentityCommand).de(de_LookupDeveloperIdentityCommand).build() {\n};\n__name(_LookupDeveloperIdentityCommand, \"LookupDeveloperIdentityCommand\");\nvar LookupDeveloperIdentityCommand = _LookupDeveloperIdentityCommand;\n\n// src/commands/MergeDeveloperIdentitiesCommand.ts\n\n\n\n\nvar _MergeDeveloperIdentitiesCommand = class _MergeDeveloperIdentitiesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"MergeDeveloperIdentities\", {}).n(\"CognitoIdentityClient\", \"MergeDeveloperIdentitiesCommand\").f(void 0, void 0).ser(se_MergeDeveloperIdentitiesCommand).de(de_MergeDeveloperIdentitiesCommand).build() {\n};\n__name(_MergeDeveloperIdentitiesCommand, \"MergeDeveloperIdentitiesCommand\");\nvar MergeDeveloperIdentitiesCommand = _MergeDeveloperIdentitiesCommand;\n\n// src/commands/SetIdentityPoolRolesCommand.ts\n\n\n\n\nvar _SetIdentityPoolRolesCommand = class _SetIdentityPoolRolesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"SetIdentityPoolRoles\", {}).n(\"CognitoIdentityClient\", \"SetIdentityPoolRolesCommand\").f(void 0, void 0).ser(se_SetIdentityPoolRolesCommand).de(de_SetIdentityPoolRolesCommand).build() {\n};\n__name(_SetIdentityPoolRolesCommand, \"SetIdentityPoolRolesCommand\");\nvar SetIdentityPoolRolesCommand = _SetIdentityPoolRolesCommand;\n\n// src/commands/SetPrincipalTagAttributeMapCommand.ts\n\n\n\n\nvar _SetPrincipalTagAttributeMapCommand = class _SetPrincipalTagAttributeMapCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"SetPrincipalTagAttributeMap\", {}).n(\"CognitoIdentityClient\", \"SetPrincipalTagAttributeMapCommand\").f(void 0, void 0).ser(se_SetPrincipalTagAttributeMapCommand).de(de_SetPrincipalTagAttributeMapCommand).build() {\n};\n__name(_SetPrincipalTagAttributeMapCommand, \"SetPrincipalTagAttributeMapCommand\");\nvar SetPrincipalTagAttributeMapCommand = _SetPrincipalTagAttributeMapCommand;\n\n// src/commands/TagResourceCommand.ts\n\n\n\n\nvar _TagResourceCommand = class _TagResourceCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"TagResource\", {}).n(\"CognitoIdentityClient\", \"TagResourceCommand\").f(void 0, void 0).ser(se_TagResourceCommand).de(de_TagResourceCommand).build() {\n};\n__name(_TagResourceCommand, \"TagResourceCommand\");\nvar TagResourceCommand = _TagResourceCommand;\n\n// src/commands/UnlinkDeveloperIdentityCommand.ts\n\n\n\n\nvar _UnlinkDeveloperIdentityCommand = class _UnlinkDeveloperIdentityCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"UnlinkDeveloperIdentity\", {}).n(\"CognitoIdentityClient\", \"UnlinkDeveloperIdentityCommand\").f(void 0, void 0).ser(se_UnlinkDeveloperIdentityCommand).de(de_UnlinkDeveloperIdentityCommand).build() {\n};\n__name(_UnlinkDeveloperIdentityCommand, \"UnlinkDeveloperIdentityCommand\");\nvar UnlinkDeveloperIdentityCommand = _UnlinkDeveloperIdentityCommand;\n\n// src/commands/UnlinkIdentityCommand.ts\n\n\n\n\nvar _UnlinkIdentityCommand = class _UnlinkIdentityCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"UnlinkIdentity\", {}).n(\"CognitoIdentityClient\", \"UnlinkIdentityCommand\").f(void 0, void 0).ser(se_UnlinkIdentityCommand).de(de_UnlinkIdentityCommand).build() {\n};\n__name(_UnlinkIdentityCommand, \"UnlinkIdentityCommand\");\nvar UnlinkIdentityCommand = _UnlinkIdentityCommand;\n\n// src/commands/UntagResourceCommand.ts\n\n\n\n\nvar _UntagResourceCommand = class _UntagResourceCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"UntagResource\", {}).n(\"CognitoIdentityClient\", \"UntagResourceCommand\").f(void 0, void 0).ser(se_UntagResourceCommand).de(de_UntagResourceCommand).build() {\n};\n__name(_UntagResourceCommand, \"UntagResourceCommand\");\nvar UntagResourceCommand = _UntagResourceCommand;\n\n// src/commands/UpdateIdentityPoolCommand.ts\n\n\n\n\nvar _UpdateIdentityPoolCommand = class _UpdateIdentityPoolCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"UpdateIdentityPool\", {}).n(\"CognitoIdentityClient\", \"UpdateIdentityPoolCommand\").f(void 0, void 0).ser(se_UpdateIdentityPoolCommand).de(de_UpdateIdentityPoolCommand).build() {\n};\n__name(_UpdateIdentityPoolCommand, \"UpdateIdentityPoolCommand\");\nvar UpdateIdentityPoolCommand = _UpdateIdentityPoolCommand;\n\n// src/CognitoIdentity.ts\nvar commands = {\n CreateIdentityPoolCommand,\n DeleteIdentitiesCommand,\n DeleteIdentityPoolCommand,\n DescribeIdentityCommand,\n DescribeIdentityPoolCommand,\n GetCredentialsForIdentityCommand,\n GetIdCommand,\n GetIdentityPoolRolesCommand,\n GetOpenIdTokenCommand,\n GetOpenIdTokenForDeveloperIdentityCommand,\n GetPrincipalTagAttributeMapCommand,\n ListIdentitiesCommand,\n ListIdentityPoolsCommand,\n ListTagsForResourceCommand,\n LookupDeveloperIdentityCommand,\n MergeDeveloperIdentitiesCommand,\n SetIdentityPoolRolesCommand,\n SetPrincipalTagAttributeMapCommand,\n TagResourceCommand,\n UnlinkDeveloperIdentityCommand,\n UnlinkIdentityCommand,\n UntagResourceCommand,\n UpdateIdentityPoolCommand\n};\nvar _CognitoIdentity = class _CognitoIdentity extends CognitoIdentityClient {\n};\n__name(_CognitoIdentity, \"CognitoIdentity\");\nvar CognitoIdentity = _CognitoIdentity;\n(0, import_smithy_client.createAggregatedClient)(commands, CognitoIdentity);\n\n// src/pagination/ListIdentityPoolsPaginator.ts\n\nvar paginateListIdentityPools = (0, import_core.createPaginator)(CognitoIdentityClient, ListIdentityPoolsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n CognitoIdentityServiceException,\n __Client,\n CognitoIdentityClient,\n CognitoIdentity,\n $Command,\n CreateIdentityPoolCommand,\n DeleteIdentitiesCommand,\n DeleteIdentityPoolCommand,\n DescribeIdentityCommand,\n DescribeIdentityPoolCommand,\n GetCredentialsForIdentityCommand,\n GetIdCommand,\n GetIdentityPoolRolesCommand,\n GetOpenIdTokenCommand,\n GetOpenIdTokenForDeveloperIdentityCommand,\n GetPrincipalTagAttributeMapCommand,\n ListIdentitiesCommand,\n ListIdentityPoolsCommand,\n ListTagsForResourceCommand,\n LookupDeveloperIdentityCommand,\n MergeDeveloperIdentitiesCommand,\n SetIdentityPoolRolesCommand,\n SetPrincipalTagAttributeMapCommand,\n TagResourceCommand,\n UnlinkDeveloperIdentityCommand,\n UnlinkIdentityCommand,\n UntagResourceCommand,\n UpdateIdentityPoolCommand,\n paginateListIdentityPools,\n AmbiguousRoleResolutionType,\n InternalErrorException,\n InvalidParameterException,\n LimitExceededException,\n NotAuthorizedException,\n ResourceConflictException,\n TooManyRequestsException,\n ErrorCode,\n ResourceNotFoundException,\n ExternalServiceException,\n InvalidIdentityPoolConfigurationException,\n MappingRuleMatchType,\n RoleMappingType,\n DeveloperUserAlreadyRegisteredException,\n ConcurrentModificationException\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst tslib_1 = require(\"tslib\");\nconst package_json_1 = tslib_1.__importDefault(require(\"../package.json\"));\nconst core_1 = require(\"@aws-sdk/core\");\nconst credential_provider_node_1 = require(\"@aws-sdk/credential-provider-node\");\nconst util_user_agent_node_1 = require(\"@aws-sdk/util-user-agent-node\");\nconst config_resolver_1 = require(\"@smithy/config-resolver\");\nconst hash_node_1 = require(\"@smithy/hash-node\");\nconst middleware_retry_1 = require(\"@smithy/middleware-retry\");\nconst node_config_provider_1 = require(\"@smithy/node-config-provider\");\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst util_body_length_node_1 = require(\"@smithy/util-body-length-node\");\nconst util_retry_1 = require(\"@smithy/util-retry\");\nconst runtimeConfig_shared_1 = require(\"./runtimeConfig.shared\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst util_defaults_mode_node_1 = require(\"@smithy/util-defaults-mode-node\");\nconst smithy_client_2 = require(\"@smithy/smithy-client\");\nconst getRuntimeConfig = (config) => {\n (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version);\n const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config);\n const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode);\n const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config);\n (0, core_1.emitWarningIfUnsupportedVersion)(process.version);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength,\n credentialDefaultProvider: config?.credentialDefaultProvider ?? credential_provider_node_1.defaultProvider,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }),\n maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS),\n region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS),\n requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n (0, node_config_provider_1.loadConfig)({\n ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE,\n }),\n sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, \"sha256\"),\n streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS),\n useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS),\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst core_2 = require(\"@smithy/core\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst url_parser_1 = require(\"@smithy/url-parser\");\nconst util_base64_1 = require(\"@smithy/util-base64\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst httpAuthSchemeProvider_1 = require(\"./auth/httpAuthSchemeProvider\");\nconst endpointResolver_1 = require(\"./endpoint/endpointResolver\");\nconst getRuntimeConfig = (config) => {\n return {\n apiVersion: \"2014-06-30\",\n base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64,\n base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultCognitoIdentityHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new core_1.AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new core_2.NoAuthSigner(),\n },\n ],\n logger: config?.logger ?? new smithy_client_1.NoOpLogger(),\n serviceId: config?.serviceId ?? \"Cognito Identity\",\n urlParser: config?.urlParser ?? url_parser_1.parseUrl,\n utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8,\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveHttpAuthSchemeConfig = exports.defaultSSOOIDCHttpAuthSchemeProvider = exports.defaultSSOOIDCHttpAuthSchemeParametersProvider = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_middleware_1 = require(\"@smithy/util-middleware\");\nconst defaultSSOOIDCHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: (0, util_middleware_1.getSmithyContext)(context).operation,\n region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) ||\n (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nexports.defaultSSOOIDCHttpAuthSchemeParametersProvider = defaultSSOOIDCHttpAuthSchemeParametersProvider;\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"sso-oauth\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createSmithyApiNoAuthHttpAuthOption(authParameters) {\n return {\n schemeId: \"smithy.api#noAuth\",\n };\n}\nconst defaultSSOOIDCHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n case \"CreateToken\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"RegisterClient\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"StartDeviceAuthorization\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nexports.defaultSSOOIDCHttpAuthSchemeProvider = defaultSSOOIDCHttpAuthSchemeProvider;\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = (0, core_1.resolveAwsSdkSigV4Config)(config);\n return {\n ...config_0,\n };\n};\nexports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultProvider = void 0;\nexports.defaultProvider = ((input) => {\n return () => Promise.resolve().then(() => __importStar(require(\"@aws-sdk/credential-provider-node\"))).then(({ defaultProvider }) => defaultProvider(input)());\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultEndpointResolver = void 0;\nconst util_endpoints_1 = require(\"@aws-sdk/util-endpoints\");\nconst util_endpoints_2 = require(\"@smithy/util-endpoints\");\nconst ruleset_1 = require(\"./ruleset\");\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n });\n};\nexports.defaultEndpointResolver = defaultEndpointResolver;\nutil_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ruleSet = void 0;\nconst u = \"required\", v = \"fn\", w = \"argv\", x = \"ref\";\nconst a = true, b = \"isSet\", c = \"booleanEquals\", d = \"error\", e = \"endpoint\", f = \"tree\", g = \"PartitionResult\", h = \"getAttr\", i = { [u]: false, \"type\": \"String\" }, j = { [u]: true, \"default\": false, \"type\": \"Boolean\" }, k = { [x]: \"Endpoint\" }, l = { [v]: c, [w]: [{ [x]: \"UseFIPS\" }, true] }, m = { [v]: c, [w]: [{ [x]: \"UseDualStack\" }, true] }, n = {}, o = { [v]: h, [w]: [{ [x]: g }, \"supportsFIPS\"] }, p = { [x]: g }, q = { [v]: c, [w]: [true, { [v]: h, [w]: [p, \"supportsDualStack\"] }] }, r = [l], s = [m], t = [{ [x]: \"Region\" }];\nconst _data = { version: \"1.0\", parameters: { Region: i, UseDualStack: j, UseFIPS: j, Endpoint: i }, rules: [{ conditions: [{ [v]: b, [w]: [k] }], rules: [{ conditions: r, error: \"Invalid Configuration: FIPS and custom endpoint are not supported\", type: d }, { conditions: s, error: \"Invalid Configuration: Dualstack and custom endpoint are not supported\", type: d }, { endpoint: { url: k, properties: n, headers: n }, type: e }], type: f }, { conditions: [{ [v]: b, [w]: t }], rules: [{ conditions: [{ [v]: \"aws.partition\", [w]: t, assign: g }], rules: [{ conditions: [l, m], rules: [{ conditions: [{ [v]: c, [w]: [a, o] }, q], rules: [{ endpoint: { url: \"https://oidc-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"FIPS and DualStack are enabled, but this partition does not support one or both\", type: d }], type: f }, { conditions: r, rules: [{ conditions: [{ [v]: c, [w]: [o, a] }], rules: [{ conditions: [{ [v]: \"stringEquals\", [w]: [{ [v]: h, [w]: [p, \"name\"] }, \"aws-us-gov\"] }], endpoint: { url: \"https://oidc.{Region}.amazonaws.com\", properties: n, headers: n }, type: e }, { endpoint: { url: \"https://oidc-fips.{Region}.{PartitionResult#dnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"FIPS is enabled but this partition does not support FIPS\", type: d }], type: f }, { conditions: s, rules: [{ conditions: [q], rules: [{ endpoint: { url: \"https://oidc.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"DualStack is enabled but this partition does not support DualStack\", type: d }], type: f }, { endpoint: { url: \"https://oidc.{Region}.{PartitionResult#dnsSuffix}\", properties: n, headers: n }, type: e }], type: f }], type: f }, { error: \"Invalid Configuration: Missing Region\", type: d }] };\nexports.ruleSet = _data;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AccessDeniedException: () => AccessDeniedException,\n AuthorizationPendingException: () => AuthorizationPendingException,\n CreateTokenCommand: () => CreateTokenCommand,\n CreateTokenRequestFilterSensitiveLog: () => CreateTokenRequestFilterSensitiveLog,\n CreateTokenResponseFilterSensitiveLog: () => CreateTokenResponseFilterSensitiveLog,\n CreateTokenWithIAMCommand: () => CreateTokenWithIAMCommand,\n CreateTokenWithIAMRequestFilterSensitiveLog: () => CreateTokenWithIAMRequestFilterSensitiveLog,\n CreateTokenWithIAMResponseFilterSensitiveLog: () => CreateTokenWithIAMResponseFilterSensitiveLog,\n ExpiredTokenException: () => ExpiredTokenException,\n InternalServerException: () => InternalServerException,\n InvalidClientException: () => InvalidClientException,\n InvalidClientMetadataException: () => InvalidClientMetadataException,\n InvalidGrantException: () => InvalidGrantException,\n InvalidRequestException: () => InvalidRequestException,\n InvalidRequestRegionException: () => InvalidRequestRegionException,\n InvalidScopeException: () => InvalidScopeException,\n RegisterClientCommand: () => RegisterClientCommand,\n RegisterClientResponseFilterSensitiveLog: () => RegisterClientResponseFilterSensitiveLog,\n SSOOIDC: () => SSOOIDC,\n SSOOIDCClient: () => SSOOIDCClient,\n SSOOIDCServiceException: () => SSOOIDCServiceException,\n SlowDownException: () => SlowDownException,\n StartDeviceAuthorizationCommand: () => StartDeviceAuthorizationCommand,\n StartDeviceAuthorizationRequestFilterSensitiveLog: () => StartDeviceAuthorizationRequestFilterSensitiveLog,\n UnauthorizedClientException: () => UnauthorizedClientException,\n UnsupportedGrantTypeException: () => UnsupportedGrantTypeException,\n __Client: () => import_smithy_client.Client\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/SSOOIDCClient.ts\nvar import_middleware_host_header = require(\"@aws-sdk/middleware-host-header\");\nvar import_middleware_logger = require(\"@aws-sdk/middleware-logger\");\nvar import_middleware_recursion_detection = require(\"@aws-sdk/middleware-recursion-detection\");\nvar import_middleware_user_agent = require(\"@aws-sdk/middleware-user-agent\");\nvar import_config_resolver = require(\"@smithy/config-resolver\");\nvar import_core = require(\"@smithy/core\");\nvar import_middleware_content_length = require(\"@smithy/middleware-content-length\");\nvar import_middleware_endpoint = require(\"@smithy/middleware-endpoint\");\nvar import_middleware_retry = require(\"@smithy/middleware-retry\");\n\nvar import_httpAuthSchemeProvider = require(\"./auth/httpAuthSchemeProvider\");\n\n// src/endpoint/EndpointParameters.ts\nvar resolveClientEndpointParameters = /* @__PURE__ */ __name((options) => {\n return {\n ...options,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"sso-oauth\"\n };\n}, \"resolveClientEndpointParameters\");\nvar commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" }\n};\n\n// src/SSOOIDCClient.ts\nvar import_runtimeConfig = require(\"././runtimeConfig\");\n\n// src/runtimeExtensions.ts\nvar import_region_config_resolver = require(\"@aws-sdk/region-config-resolver\");\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar import_smithy_client = require(\"@smithy/smithy-client\");\n\n// src/auth/httpAuthExtensionConfiguration.ts\nvar getHttpAuthExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n } else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n }\n };\n}, \"getHttpAuthExtensionConfiguration\");\nvar resolveHttpAuthRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials()\n };\n}, \"resolveHttpAuthRuntimeConfig\");\n\n// src/runtimeExtensions.ts\nvar asPartial = /* @__PURE__ */ __name((t) => t, \"asPartial\");\nvar resolveRuntimeExtensions = /* @__PURE__ */ __name((runtimeConfig, extensions) => {\n const extensionConfiguration = {\n ...asPartial((0, import_region_config_resolver.getAwsRegionExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_smithy_client.getDefaultExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_protocol_http.getHttpHandlerExtensionConfiguration)(runtimeConfig)),\n ...asPartial(getHttpAuthExtensionConfiguration(runtimeConfig))\n };\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return {\n ...runtimeConfig,\n ...(0, import_region_config_resolver.resolveAwsRegionExtensionConfiguration)(extensionConfiguration),\n ...(0, import_smithy_client.resolveDefaultRuntimeConfig)(extensionConfiguration),\n ...(0, import_protocol_http.resolveHttpHandlerRuntimeConfig)(extensionConfiguration),\n ...resolveHttpAuthRuntimeConfig(extensionConfiguration)\n };\n}, \"resolveRuntimeExtensions\");\n\n// src/SSOOIDCClient.ts\nvar _SSOOIDCClient = class _SSOOIDCClient extends import_smithy_client.Client {\n constructor(...[configuration]) {\n const _config_0 = (0, import_runtimeConfig.getRuntimeConfig)(configuration || {});\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = (0, import_config_resolver.resolveRegionConfig)(_config_1);\n const _config_3 = (0, import_middleware_endpoint.resolveEndpointConfig)(_config_2);\n const _config_4 = (0, import_middleware_retry.resolveRetryConfig)(_config_3);\n const _config_5 = (0, import_middleware_host_header.resolveHostHeaderConfig)(_config_4);\n const _config_6 = (0, import_middleware_user_agent.resolveUserAgentConfig)(_config_5);\n const _config_7 = (0, import_httpAuthSchemeProvider.resolveHttpAuthSchemeConfig)(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, (configuration == null ? void 0 : configuration.extensions) || []);\n super(_config_8);\n this.config = _config_8;\n this.middlewareStack.use((0, import_middleware_retry.getRetryPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_content_length.getContentLengthPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_host_header.getHostHeaderPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_logger.getLoggerPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_recursion_detection.getRecursionDetectionPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_user_agent.getUserAgentPlugin)(this.config));\n this.middlewareStack.use(\n (0, import_core.getHttpAuthSchemeEndpointRuleSetPlugin)(this.config, {\n httpAuthSchemeParametersProvider: this.getDefaultHttpAuthSchemeParametersProvider(),\n identityProviderConfigProvider: this.getIdentityProviderConfigProvider()\n })\n );\n this.middlewareStack.use((0, import_core.getHttpSigningPlugin)(this.config));\n }\n /**\n * Destroy underlying resources, like sockets. It's usually not necessary to do this.\n * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed.\n * Otherwise, sockets might stay open for quite a long time before the server terminates them.\n */\n destroy() {\n super.destroy();\n }\n getDefaultHttpAuthSchemeParametersProvider() {\n return import_httpAuthSchemeProvider.defaultSSOOIDCHttpAuthSchemeParametersProvider;\n }\n getIdentityProviderConfigProvider() {\n return async (config) => new import_core.DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials\n });\n }\n};\n__name(_SSOOIDCClient, \"SSOOIDCClient\");\nvar SSOOIDCClient = _SSOOIDCClient;\n\n// src/SSOOIDC.ts\n\n\n// src/commands/CreateTokenCommand.ts\n\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\n\nvar import_types = require(\"@smithy/types\");\n\n// src/models/models_0.ts\n\n\n// src/models/SSOOIDCServiceException.ts\n\nvar _SSOOIDCServiceException = class _SSOOIDCServiceException extends import_smithy_client.ServiceException {\n /**\n * @internal\n */\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, _SSOOIDCServiceException.prototype);\n }\n};\n__name(_SSOOIDCServiceException, \"SSOOIDCServiceException\");\nvar SSOOIDCServiceException = _SSOOIDCServiceException;\n\n// src/models/models_0.ts\nvar _AccessDeniedException = class _AccessDeniedException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"AccessDeniedException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"AccessDeniedException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _AccessDeniedException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_AccessDeniedException, \"AccessDeniedException\");\nvar AccessDeniedException = _AccessDeniedException;\nvar _AuthorizationPendingException = class _AuthorizationPendingException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"AuthorizationPendingException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"AuthorizationPendingException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _AuthorizationPendingException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_AuthorizationPendingException, \"AuthorizationPendingException\");\nvar AuthorizationPendingException = _AuthorizationPendingException;\nvar _ExpiredTokenException = class _ExpiredTokenException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ExpiredTokenException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ExpiredTokenException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ExpiredTokenException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_ExpiredTokenException, \"ExpiredTokenException\");\nvar ExpiredTokenException = _ExpiredTokenException;\nvar _InternalServerException = class _InternalServerException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InternalServerException\",\n $fault: \"server\",\n ...opts\n });\n this.name = \"InternalServerException\";\n this.$fault = \"server\";\n Object.setPrototypeOf(this, _InternalServerException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InternalServerException, \"InternalServerException\");\nvar InternalServerException = _InternalServerException;\nvar _InvalidClientException = class _InvalidClientException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidClientException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidClientException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidClientException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InvalidClientException, \"InvalidClientException\");\nvar InvalidClientException = _InvalidClientException;\nvar _InvalidGrantException = class _InvalidGrantException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidGrantException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidGrantException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidGrantException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InvalidGrantException, \"InvalidGrantException\");\nvar InvalidGrantException = _InvalidGrantException;\nvar _InvalidRequestException = class _InvalidRequestException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidRequestException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidRequestException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidRequestException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InvalidRequestException, \"InvalidRequestException\");\nvar InvalidRequestException = _InvalidRequestException;\nvar _InvalidScopeException = class _InvalidScopeException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidScopeException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidScopeException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidScopeException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InvalidScopeException, \"InvalidScopeException\");\nvar InvalidScopeException = _InvalidScopeException;\nvar _SlowDownException = class _SlowDownException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"SlowDownException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"SlowDownException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _SlowDownException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_SlowDownException, \"SlowDownException\");\nvar SlowDownException = _SlowDownException;\nvar _UnauthorizedClientException = class _UnauthorizedClientException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"UnauthorizedClientException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"UnauthorizedClientException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _UnauthorizedClientException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_UnauthorizedClientException, \"UnauthorizedClientException\");\nvar UnauthorizedClientException = _UnauthorizedClientException;\nvar _UnsupportedGrantTypeException = class _UnsupportedGrantTypeException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"UnsupportedGrantTypeException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"UnsupportedGrantTypeException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _UnsupportedGrantTypeException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_UnsupportedGrantTypeException, \"UnsupportedGrantTypeException\");\nvar UnsupportedGrantTypeException = _UnsupportedGrantTypeException;\nvar _InvalidRequestRegionException = class _InvalidRequestRegionException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidRequestRegionException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidRequestRegionException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidRequestRegionException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n this.endpoint = opts.endpoint;\n this.region = opts.region;\n }\n};\n__name(_InvalidRequestRegionException, \"InvalidRequestRegionException\");\nvar InvalidRequestRegionException = _InvalidRequestRegionException;\nvar _InvalidClientMetadataException = class _InvalidClientMetadataException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidClientMetadataException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidClientMetadataException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidClientMetadataException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InvalidClientMetadataException, \"InvalidClientMetadataException\");\nvar InvalidClientMetadataException = _InvalidClientMetadataException;\nvar CreateTokenRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.clientSecret && { clientSecret: import_smithy_client.SENSITIVE_STRING },\n ...obj.refreshToken && { refreshToken: import_smithy_client.SENSITIVE_STRING }\n}), \"CreateTokenRequestFilterSensitiveLog\");\nvar CreateTokenResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.accessToken && { accessToken: import_smithy_client.SENSITIVE_STRING },\n ...obj.refreshToken && { refreshToken: import_smithy_client.SENSITIVE_STRING },\n ...obj.idToken && { idToken: import_smithy_client.SENSITIVE_STRING }\n}), \"CreateTokenResponseFilterSensitiveLog\");\nvar CreateTokenWithIAMRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.refreshToken && { refreshToken: import_smithy_client.SENSITIVE_STRING },\n ...obj.assertion && { assertion: import_smithy_client.SENSITIVE_STRING },\n ...obj.subjectToken && { subjectToken: import_smithy_client.SENSITIVE_STRING }\n}), \"CreateTokenWithIAMRequestFilterSensitiveLog\");\nvar CreateTokenWithIAMResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.accessToken && { accessToken: import_smithy_client.SENSITIVE_STRING },\n ...obj.refreshToken && { refreshToken: import_smithy_client.SENSITIVE_STRING },\n ...obj.idToken && { idToken: import_smithy_client.SENSITIVE_STRING }\n}), \"CreateTokenWithIAMResponseFilterSensitiveLog\");\nvar RegisterClientResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.clientSecret && { clientSecret: import_smithy_client.SENSITIVE_STRING }\n}), \"RegisterClientResponseFilterSensitiveLog\");\nvar StartDeviceAuthorizationRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.clientSecret && { clientSecret: import_smithy_client.SENSITIVE_STRING }\n}), \"StartDeviceAuthorizationRequestFilterSensitiveLog\");\n\n// src/protocols/Aws_restJson1.ts\nvar import_core2 = require(\"@aws-sdk/core\");\n\n\nvar se_CreateTokenCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = {\n \"content-type\": \"application/json\"\n };\n b.bp(\"/token\");\n let body;\n body = JSON.stringify(\n (0, import_smithy_client.take)(input, {\n clientId: [],\n clientSecret: [],\n code: [],\n deviceCode: [],\n grantType: [],\n redirectUri: [],\n refreshToken: [],\n scope: (_) => (0, import_smithy_client._json)(_)\n })\n );\n b.m(\"POST\").h(headers).b(body);\n return b.build();\n}, \"se_CreateTokenCommand\");\nvar se_CreateTokenWithIAMCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = {\n \"content-type\": \"application/json\"\n };\n b.bp(\"/token\");\n const query = (0, import_smithy_client.map)({\n [_ai]: [, \"t\"]\n });\n let body;\n body = JSON.stringify(\n (0, import_smithy_client.take)(input, {\n assertion: [],\n clientId: [],\n code: [],\n grantType: [],\n redirectUri: [],\n refreshToken: [],\n requestedTokenType: [],\n scope: (_) => (0, import_smithy_client._json)(_),\n subjectToken: [],\n subjectTokenType: []\n })\n );\n b.m(\"POST\").h(headers).q(query).b(body);\n return b.build();\n}, \"se_CreateTokenWithIAMCommand\");\nvar se_RegisterClientCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = {\n \"content-type\": \"application/json\"\n };\n b.bp(\"/client/register\");\n let body;\n body = JSON.stringify(\n (0, import_smithy_client.take)(input, {\n clientName: [],\n clientType: [],\n scopes: (_) => (0, import_smithy_client._json)(_)\n })\n );\n b.m(\"POST\").h(headers).b(body);\n return b.build();\n}, \"se_RegisterClientCommand\");\nvar se_StartDeviceAuthorizationCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = {\n \"content-type\": \"application/json\"\n };\n b.bp(\"/device_authorization\");\n let body;\n body = JSON.stringify(\n (0, import_smithy_client.take)(input, {\n clientId: [],\n clientSecret: [],\n startUrl: []\n })\n );\n b.m(\"POST\").h(headers).b(body);\n return b.build();\n}, \"se_StartDeviceAuthorizationCommand\");\nvar de_CreateTokenCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n accessToken: import_smithy_client.expectString,\n expiresIn: import_smithy_client.expectInt32,\n idToken: import_smithy_client.expectString,\n refreshToken: import_smithy_client.expectString,\n tokenType: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_CreateTokenCommand\");\nvar de_CreateTokenWithIAMCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n accessToken: import_smithy_client.expectString,\n expiresIn: import_smithy_client.expectInt32,\n idToken: import_smithy_client.expectString,\n issuedTokenType: import_smithy_client.expectString,\n refreshToken: import_smithy_client.expectString,\n scope: import_smithy_client._json,\n tokenType: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_CreateTokenWithIAMCommand\");\nvar de_RegisterClientCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n authorizationEndpoint: import_smithy_client.expectString,\n clientId: import_smithy_client.expectString,\n clientIdIssuedAt: import_smithy_client.expectLong,\n clientSecret: import_smithy_client.expectString,\n clientSecretExpiresAt: import_smithy_client.expectLong,\n tokenEndpoint: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_RegisterClientCommand\");\nvar de_StartDeviceAuthorizationCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n deviceCode: import_smithy_client.expectString,\n expiresIn: import_smithy_client.expectInt32,\n interval: import_smithy_client.expectInt32,\n userCode: import_smithy_client.expectString,\n verificationUri: import_smithy_client.expectString,\n verificationUriComplete: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_StartDeviceAuthorizationCommand\");\nvar de_CommandError = /* @__PURE__ */ __name(async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await (0, import_core2.parseJsonErrorBody)(output.body, context)\n };\n const errorCode = (0, import_core2.loadRestJsonErrorCode)(output, parsedOutput.body);\n switch (errorCode) {\n case \"AccessDeniedException\":\n case \"com.amazonaws.ssooidc#AccessDeniedException\":\n throw await de_AccessDeniedExceptionRes(parsedOutput, context);\n case \"AuthorizationPendingException\":\n case \"com.amazonaws.ssooidc#AuthorizationPendingException\":\n throw await de_AuthorizationPendingExceptionRes(parsedOutput, context);\n case \"ExpiredTokenException\":\n case \"com.amazonaws.ssooidc#ExpiredTokenException\":\n throw await de_ExpiredTokenExceptionRes(parsedOutput, context);\n case \"InternalServerException\":\n case \"com.amazonaws.ssooidc#InternalServerException\":\n throw await de_InternalServerExceptionRes(parsedOutput, context);\n case \"InvalidClientException\":\n case \"com.amazonaws.ssooidc#InvalidClientException\":\n throw await de_InvalidClientExceptionRes(parsedOutput, context);\n case \"InvalidGrantException\":\n case \"com.amazonaws.ssooidc#InvalidGrantException\":\n throw await de_InvalidGrantExceptionRes(parsedOutput, context);\n case \"InvalidRequestException\":\n case \"com.amazonaws.ssooidc#InvalidRequestException\":\n throw await de_InvalidRequestExceptionRes(parsedOutput, context);\n case \"InvalidScopeException\":\n case \"com.amazonaws.ssooidc#InvalidScopeException\":\n throw await de_InvalidScopeExceptionRes(parsedOutput, context);\n case \"SlowDownException\":\n case \"com.amazonaws.ssooidc#SlowDownException\":\n throw await de_SlowDownExceptionRes(parsedOutput, context);\n case \"UnauthorizedClientException\":\n case \"com.amazonaws.ssooidc#UnauthorizedClientException\":\n throw await de_UnauthorizedClientExceptionRes(parsedOutput, context);\n case \"UnsupportedGrantTypeException\":\n case \"com.amazonaws.ssooidc#UnsupportedGrantTypeException\":\n throw await de_UnsupportedGrantTypeExceptionRes(parsedOutput, context);\n case \"InvalidRequestRegionException\":\n case \"com.amazonaws.ssooidc#InvalidRequestRegionException\":\n throw await de_InvalidRequestRegionExceptionRes(parsedOutput, context);\n case \"InvalidClientMetadataException\":\n case \"com.amazonaws.ssooidc#InvalidClientMetadataException\":\n throw await de_InvalidClientMetadataExceptionRes(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n return throwDefaultError({\n output,\n parsedBody,\n errorCode\n });\n }\n}, \"de_CommandError\");\nvar throwDefaultError = (0, import_smithy_client.withBaseException)(SSOOIDCServiceException);\nvar de_AccessDeniedExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new AccessDeniedException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_AccessDeniedExceptionRes\");\nvar de_AuthorizationPendingExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new AuthorizationPendingException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_AuthorizationPendingExceptionRes\");\nvar de_ExpiredTokenExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new ExpiredTokenException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_ExpiredTokenExceptionRes\");\nvar de_InternalServerExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InternalServerException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InternalServerExceptionRes\");\nvar de_InvalidClientExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidClientException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidClientExceptionRes\");\nvar de_InvalidClientMetadataExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidClientMetadataException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidClientMetadataExceptionRes\");\nvar de_InvalidGrantExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidGrantException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidGrantExceptionRes\");\nvar de_InvalidRequestExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidRequestException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidRequestExceptionRes\");\nvar de_InvalidRequestRegionExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n endpoint: import_smithy_client.expectString,\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString,\n region: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidRequestRegionException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidRequestRegionExceptionRes\");\nvar de_InvalidScopeExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidScopeException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidScopeExceptionRes\");\nvar de_SlowDownExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new SlowDownException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_SlowDownExceptionRes\");\nvar de_UnauthorizedClientExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new UnauthorizedClientException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_UnauthorizedClientExceptionRes\");\nvar de_UnsupportedGrantTypeExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new UnsupportedGrantTypeException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_UnsupportedGrantTypeExceptionRes\");\nvar deserializeMetadata = /* @__PURE__ */ __name((output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"]\n}), \"deserializeMetadata\");\nvar _ai = \"aws_iam\";\n\n// src/commands/CreateTokenCommand.ts\nvar _CreateTokenCommand = class _CreateTokenCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSSOOIDCService\", \"CreateToken\", {}).n(\"SSOOIDCClient\", \"CreateTokenCommand\").f(CreateTokenRequestFilterSensitiveLog, CreateTokenResponseFilterSensitiveLog).ser(se_CreateTokenCommand).de(de_CreateTokenCommand).build() {\n};\n__name(_CreateTokenCommand, \"CreateTokenCommand\");\nvar CreateTokenCommand = _CreateTokenCommand;\n\n// src/commands/CreateTokenWithIAMCommand.ts\n\n\n\n\nvar _CreateTokenWithIAMCommand = class _CreateTokenWithIAMCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSSOOIDCService\", \"CreateTokenWithIAM\", {}).n(\"SSOOIDCClient\", \"CreateTokenWithIAMCommand\").f(CreateTokenWithIAMRequestFilterSensitiveLog, CreateTokenWithIAMResponseFilterSensitiveLog).ser(se_CreateTokenWithIAMCommand).de(de_CreateTokenWithIAMCommand).build() {\n};\n__name(_CreateTokenWithIAMCommand, \"CreateTokenWithIAMCommand\");\nvar CreateTokenWithIAMCommand = _CreateTokenWithIAMCommand;\n\n// src/commands/RegisterClientCommand.ts\n\n\n\n\nvar _RegisterClientCommand = class _RegisterClientCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSSOOIDCService\", \"RegisterClient\", {}).n(\"SSOOIDCClient\", \"RegisterClientCommand\").f(void 0, RegisterClientResponseFilterSensitiveLog).ser(se_RegisterClientCommand).de(de_RegisterClientCommand).build() {\n};\n__name(_RegisterClientCommand, \"RegisterClientCommand\");\nvar RegisterClientCommand = _RegisterClientCommand;\n\n// src/commands/StartDeviceAuthorizationCommand.ts\n\n\n\n\nvar _StartDeviceAuthorizationCommand = class _StartDeviceAuthorizationCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSSOOIDCService\", \"StartDeviceAuthorization\", {}).n(\"SSOOIDCClient\", \"StartDeviceAuthorizationCommand\").f(StartDeviceAuthorizationRequestFilterSensitiveLog, void 0).ser(se_StartDeviceAuthorizationCommand).de(de_StartDeviceAuthorizationCommand).build() {\n};\n__name(_StartDeviceAuthorizationCommand, \"StartDeviceAuthorizationCommand\");\nvar StartDeviceAuthorizationCommand = _StartDeviceAuthorizationCommand;\n\n// src/SSOOIDC.ts\nvar commands = {\n CreateTokenCommand,\n CreateTokenWithIAMCommand,\n RegisterClientCommand,\n StartDeviceAuthorizationCommand\n};\nvar _SSOOIDC = class _SSOOIDC extends SSOOIDCClient {\n};\n__name(_SSOOIDC, \"SSOOIDC\");\nvar SSOOIDC = _SSOOIDC;\n(0, import_smithy_client.createAggregatedClient)(commands, SSOOIDC);\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n SSOOIDCServiceException,\n __Client,\n SSOOIDCClient,\n SSOOIDC,\n $Command,\n CreateTokenCommand,\n CreateTokenWithIAMCommand,\n RegisterClientCommand,\n StartDeviceAuthorizationCommand,\n AccessDeniedException,\n AuthorizationPendingException,\n ExpiredTokenException,\n InternalServerException,\n InvalidClientException,\n InvalidGrantException,\n InvalidRequestException,\n InvalidScopeException,\n SlowDownException,\n UnauthorizedClientException,\n UnsupportedGrantTypeException,\n InvalidRequestRegionException,\n InvalidClientMetadataException,\n CreateTokenRequestFilterSensitiveLog,\n CreateTokenResponseFilterSensitiveLog,\n CreateTokenWithIAMRequestFilterSensitiveLog,\n CreateTokenWithIAMResponseFilterSensitiveLog,\n RegisterClientResponseFilterSensitiveLog,\n StartDeviceAuthorizationRequestFilterSensitiveLog\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst tslib_1 = require(\"tslib\");\nconst package_json_1 = tslib_1.__importDefault(require(\"../package.json\"));\nconst credentialDefaultProvider_1 = require(\"./credentialDefaultProvider\");\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_user_agent_node_1 = require(\"@aws-sdk/util-user-agent-node\");\nconst config_resolver_1 = require(\"@smithy/config-resolver\");\nconst hash_node_1 = require(\"@smithy/hash-node\");\nconst middleware_retry_1 = require(\"@smithy/middleware-retry\");\nconst node_config_provider_1 = require(\"@smithy/node-config-provider\");\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst util_body_length_node_1 = require(\"@smithy/util-body-length-node\");\nconst util_retry_1 = require(\"@smithy/util-retry\");\nconst runtimeConfig_shared_1 = require(\"./runtimeConfig.shared\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst util_defaults_mode_node_1 = require(\"@smithy/util-defaults-mode-node\");\nconst smithy_client_2 = require(\"@smithy/smithy-client\");\nconst getRuntimeConfig = (config) => {\n (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version);\n const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config);\n const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode);\n const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config);\n (0, core_1.emitWarningIfUnsupportedVersion)(process.version);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength,\n credentialDefaultProvider: config?.credentialDefaultProvider ?? credentialDefaultProvider_1.defaultProvider,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }),\n maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS),\n region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS),\n requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n (0, node_config_provider_1.loadConfig)({\n ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE,\n }),\n sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, \"sha256\"),\n streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS),\n useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS),\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst core_2 = require(\"@smithy/core\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst url_parser_1 = require(\"@smithy/url-parser\");\nconst util_base64_1 = require(\"@smithy/util-base64\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst httpAuthSchemeProvider_1 = require(\"./auth/httpAuthSchemeProvider\");\nconst endpointResolver_1 = require(\"./endpoint/endpointResolver\");\nconst getRuntimeConfig = (config) => {\n return {\n apiVersion: \"2019-06-10\",\n base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64,\n base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultSSOOIDCHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new core_1.AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new core_2.NoAuthSigner(),\n },\n ],\n logger: config?.logger ?? new smithy_client_1.NoOpLogger(),\n serviceId: config?.serviceId ?? \"SSO OIDC\",\n urlParser: config?.urlParser ?? url_parser_1.parseUrl,\n utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8,\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveHttpAuthSchemeConfig = exports.defaultSSOHttpAuthSchemeProvider = exports.defaultSSOHttpAuthSchemeParametersProvider = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_middleware_1 = require(\"@smithy/util-middleware\");\nconst defaultSSOHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: (0, util_middleware_1.getSmithyContext)(context).operation,\n region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) ||\n (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nexports.defaultSSOHttpAuthSchemeParametersProvider = defaultSSOHttpAuthSchemeParametersProvider;\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"awsssoportal\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createSmithyApiNoAuthHttpAuthOption(authParameters) {\n return {\n schemeId: \"smithy.api#noAuth\",\n };\n}\nconst defaultSSOHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n case \"GetRoleCredentials\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"ListAccountRoles\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"ListAccounts\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"Logout\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nexports.defaultSSOHttpAuthSchemeProvider = defaultSSOHttpAuthSchemeProvider;\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = (0, core_1.resolveAwsSdkSigV4Config)(config);\n return {\n ...config_0,\n };\n};\nexports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultEndpointResolver = void 0;\nconst util_endpoints_1 = require(\"@aws-sdk/util-endpoints\");\nconst util_endpoints_2 = require(\"@smithy/util-endpoints\");\nconst ruleset_1 = require(\"./ruleset\");\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n });\n};\nexports.defaultEndpointResolver = defaultEndpointResolver;\nutil_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ruleSet = void 0;\nconst u = \"required\", v = \"fn\", w = \"argv\", x = \"ref\";\nconst a = true, b = \"isSet\", c = \"booleanEquals\", d = \"error\", e = \"endpoint\", f = \"tree\", g = \"PartitionResult\", h = \"getAttr\", i = { [u]: false, \"type\": \"String\" }, j = { [u]: true, \"default\": false, \"type\": \"Boolean\" }, k = { [x]: \"Endpoint\" }, l = { [v]: c, [w]: [{ [x]: \"UseFIPS\" }, true] }, m = { [v]: c, [w]: [{ [x]: \"UseDualStack\" }, true] }, n = {}, o = { [v]: h, [w]: [{ [x]: g }, \"supportsFIPS\"] }, p = { [x]: g }, q = { [v]: c, [w]: [true, { [v]: h, [w]: [p, \"supportsDualStack\"] }] }, r = [l], s = [m], t = [{ [x]: \"Region\" }];\nconst _data = { version: \"1.0\", parameters: { Region: i, UseDualStack: j, UseFIPS: j, Endpoint: i }, rules: [{ conditions: [{ [v]: b, [w]: [k] }], rules: [{ conditions: r, error: \"Invalid Configuration: FIPS and custom endpoint are not supported\", type: d }, { conditions: s, error: \"Invalid Configuration: Dualstack and custom endpoint are not supported\", type: d }, { endpoint: { url: k, properties: n, headers: n }, type: e }], type: f }, { conditions: [{ [v]: b, [w]: t }], rules: [{ conditions: [{ [v]: \"aws.partition\", [w]: t, assign: g }], rules: [{ conditions: [l, m], rules: [{ conditions: [{ [v]: c, [w]: [a, o] }, q], rules: [{ endpoint: { url: \"https://portal.sso-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"FIPS and DualStack are enabled, but this partition does not support one or both\", type: d }], type: f }, { conditions: r, rules: [{ conditions: [{ [v]: c, [w]: [o, a] }], rules: [{ conditions: [{ [v]: \"stringEquals\", [w]: [{ [v]: h, [w]: [p, \"name\"] }, \"aws-us-gov\"] }], endpoint: { url: \"https://portal.sso.{Region}.amazonaws.com\", properties: n, headers: n }, type: e }, { endpoint: { url: \"https://portal.sso-fips.{Region}.{PartitionResult#dnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"FIPS is enabled but this partition does not support FIPS\", type: d }], type: f }, { conditions: s, rules: [{ conditions: [q], rules: [{ endpoint: { url: \"https://portal.sso.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"DualStack is enabled but this partition does not support DualStack\", type: d }], type: f }, { endpoint: { url: \"https://portal.sso.{Region}.{PartitionResult#dnsSuffix}\", properties: n, headers: n }, type: e }], type: f }], type: f }, { error: \"Invalid Configuration: Missing Region\", type: d }] };\nexports.ruleSet = _data;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n GetRoleCredentialsCommand: () => GetRoleCredentialsCommand,\n GetRoleCredentialsRequestFilterSensitiveLog: () => GetRoleCredentialsRequestFilterSensitiveLog,\n GetRoleCredentialsResponseFilterSensitiveLog: () => GetRoleCredentialsResponseFilterSensitiveLog,\n InvalidRequestException: () => InvalidRequestException,\n ListAccountRolesCommand: () => ListAccountRolesCommand,\n ListAccountRolesRequestFilterSensitiveLog: () => ListAccountRolesRequestFilterSensitiveLog,\n ListAccountsCommand: () => ListAccountsCommand,\n ListAccountsRequestFilterSensitiveLog: () => ListAccountsRequestFilterSensitiveLog,\n LogoutCommand: () => LogoutCommand,\n LogoutRequestFilterSensitiveLog: () => LogoutRequestFilterSensitiveLog,\n ResourceNotFoundException: () => ResourceNotFoundException,\n RoleCredentialsFilterSensitiveLog: () => RoleCredentialsFilterSensitiveLog,\n SSO: () => SSO,\n SSOClient: () => SSOClient,\n SSOServiceException: () => SSOServiceException,\n TooManyRequestsException: () => TooManyRequestsException,\n UnauthorizedException: () => UnauthorizedException,\n __Client: () => import_smithy_client.Client,\n paginateListAccountRoles: () => paginateListAccountRoles,\n paginateListAccounts: () => paginateListAccounts\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/SSOClient.ts\nvar import_middleware_host_header = require(\"@aws-sdk/middleware-host-header\");\nvar import_middleware_logger = require(\"@aws-sdk/middleware-logger\");\nvar import_middleware_recursion_detection = require(\"@aws-sdk/middleware-recursion-detection\");\nvar import_middleware_user_agent = require(\"@aws-sdk/middleware-user-agent\");\nvar import_config_resolver = require(\"@smithy/config-resolver\");\nvar import_core = require(\"@smithy/core\");\nvar import_middleware_content_length = require(\"@smithy/middleware-content-length\");\nvar import_middleware_endpoint = require(\"@smithy/middleware-endpoint\");\nvar import_middleware_retry = require(\"@smithy/middleware-retry\");\n\nvar import_httpAuthSchemeProvider = require(\"./auth/httpAuthSchemeProvider\");\n\n// src/endpoint/EndpointParameters.ts\nvar resolveClientEndpointParameters = /* @__PURE__ */ __name((options) => {\n return {\n ...options,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"awsssoportal\"\n };\n}, \"resolveClientEndpointParameters\");\nvar commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" }\n};\n\n// src/SSOClient.ts\nvar import_runtimeConfig = require(\"././runtimeConfig\");\n\n// src/runtimeExtensions.ts\nvar import_region_config_resolver = require(\"@aws-sdk/region-config-resolver\");\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar import_smithy_client = require(\"@smithy/smithy-client\");\n\n// src/auth/httpAuthExtensionConfiguration.ts\nvar getHttpAuthExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n } else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n }\n };\n}, \"getHttpAuthExtensionConfiguration\");\nvar resolveHttpAuthRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials()\n };\n}, \"resolveHttpAuthRuntimeConfig\");\n\n// src/runtimeExtensions.ts\nvar asPartial = /* @__PURE__ */ __name((t) => t, \"asPartial\");\nvar resolveRuntimeExtensions = /* @__PURE__ */ __name((runtimeConfig, extensions) => {\n const extensionConfiguration = {\n ...asPartial((0, import_region_config_resolver.getAwsRegionExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_smithy_client.getDefaultExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_protocol_http.getHttpHandlerExtensionConfiguration)(runtimeConfig)),\n ...asPartial(getHttpAuthExtensionConfiguration(runtimeConfig))\n };\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return {\n ...runtimeConfig,\n ...(0, import_region_config_resolver.resolveAwsRegionExtensionConfiguration)(extensionConfiguration),\n ...(0, import_smithy_client.resolveDefaultRuntimeConfig)(extensionConfiguration),\n ...(0, import_protocol_http.resolveHttpHandlerRuntimeConfig)(extensionConfiguration),\n ...resolveHttpAuthRuntimeConfig(extensionConfiguration)\n };\n}, \"resolveRuntimeExtensions\");\n\n// src/SSOClient.ts\nvar _SSOClient = class _SSOClient extends import_smithy_client.Client {\n constructor(...[configuration]) {\n const _config_0 = (0, import_runtimeConfig.getRuntimeConfig)(configuration || {});\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = (0, import_config_resolver.resolveRegionConfig)(_config_1);\n const _config_3 = (0, import_middleware_endpoint.resolveEndpointConfig)(_config_2);\n const _config_4 = (0, import_middleware_retry.resolveRetryConfig)(_config_3);\n const _config_5 = (0, import_middleware_host_header.resolveHostHeaderConfig)(_config_4);\n const _config_6 = (0, import_middleware_user_agent.resolveUserAgentConfig)(_config_5);\n const _config_7 = (0, import_httpAuthSchemeProvider.resolveHttpAuthSchemeConfig)(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, (configuration == null ? void 0 : configuration.extensions) || []);\n super(_config_8);\n this.config = _config_8;\n this.middlewareStack.use((0, import_middleware_retry.getRetryPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_content_length.getContentLengthPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_host_header.getHostHeaderPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_logger.getLoggerPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_recursion_detection.getRecursionDetectionPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_user_agent.getUserAgentPlugin)(this.config));\n this.middlewareStack.use(\n (0, import_core.getHttpAuthSchemeEndpointRuleSetPlugin)(this.config, {\n httpAuthSchemeParametersProvider: this.getDefaultHttpAuthSchemeParametersProvider(),\n identityProviderConfigProvider: this.getIdentityProviderConfigProvider()\n })\n );\n this.middlewareStack.use((0, import_core.getHttpSigningPlugin)(this.config));\n }\n /**\n * Destroy underlying resources, like sockets. It's usually not necessary to do this.\n * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed.\n * Otherwise, sockets might stay open for quite a long time before the server terminates them.\n */\n destroy() {\n super.destroy();\n }\n getDefaultHttpAuthSchemeParametersProvider() {\n return import_httpAuthSchemeProvider.defaultSSOHttpAuthSchemeParametersProvider;\n }\n getIdentityProviderConfigProvider() {\n return async (config) => new import_core.DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials\n });\n }\n};\n__name(_SSOClient, \"SSOClient\");\nvar SSOClient = _SSOClient;\n\n// src/SSO.ts\n\n\n// src/commands/GetRoleCredentialsCommand.ts\n\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\n\nvar import_types = require(\"@smithy/types\");\n\n// src/models/models_0.ts\n\n\n// src/models/SSOServiceException.ts\n\nvar _SSOServiceException = class _SSOServiceException extends import_smithy_client.ServiceException {\n /**\n * @internal\n */\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, _SSOServiceException.prototype);\n }\n};\n__name(_SSOServiceException, \"SSOServiceException\");\nvar SSOServiceException = _SSOServiceException;\n\n// src/models/models_0.ts\nvar _InvalidRequestException = class _InvalidRequestException extends SSOServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidRequestException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidRequestException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidRequestException.prototype);\n }\n};\n__name(_InvalidRequestException, \"InvalidRequestException\");\nvar InvalidRequestException = _InvalidRequestException;\nvar _ResourceNotFoundException = class _ResourceNotFoundException extends SSOServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ResourceNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ResourceNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ResourceNotFoundException.prototype);\n }\n};\n__name(_ResourceNotFoundException, \"ResourceNotFoundException\");\nvar ResourceNotFoundException = _ResourceNotFoundException;\nvar _TooManyRequestsException = class _TooManyRequestsException extends SSOServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"TooManyRequestsException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"TooManyRequestsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _TooManyRequestsException.prototype);\n }\n};\n__name(_TooManyRequestsException, \"TooManyRequestsException\");\nvar TooManyRequestsException = _TooManyRequestsException;\nvar _UnauthorizedException = class _UnauthorizedException extends SSOServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"UnauthorizedException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"UnauthorizedException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _UnauthorizedException.prototype);\n }\n};\n__name(_UnauthorizedException, \"UnauthorizedException\");\nvar UnauthorizedException = _UnauthorizedException;\nvar GetRoleCredentialsRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.accessToken && { accessToken: import_smithy_client.SENSITIVE_STRING }\n}), \"GetRoleCredentialsRequestFilterSensitiveLog\");\nvar RoleCredentialsFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.secretAccessKey && { secretAccessKey: import_smithy_client.SENSITIVE_STRING },\n ...obj.sessionToken && { sessionToken: import_smithy_client.SENSITIVE_STRING }\n}), \"RoleCredentialsFilterSensitiveLog\");\nvar GetRoleCredentialsResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.roleCredentials && { roleCredentials: RoleCredentialsFilterSensitiveLog(obj.roleCredentials) }\n}), \"GetRoleCredentialsResponseFilterSensitiveLog\");\nvar ListAccountRolesRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.accessToken && { accessToken: import_smithy_client.SENSITIVE_STRING }\n}), \"ListAccountRolesRequestFilterSensitiveLog\");\nvar ListAccountsRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.accessToken && { accessToken: import_smithy_client.SENSITIVE_STRING }\n}), \"ListAccountsRequestFilterSensitiveLog\");\nvar LogoutRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.accessToken && { accessToken: import_smithy_client.SENSITIVE_STRING }\n}), \"LogoutRequestFilterSensitiveLog\");\n\n// src/protocols/Aws_restJson1.ts\nvar import_core2 = require(\"@aws-sdk/core\");\n\n\nvar se_GetRoleCredentialsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = (0, import_smithy_client.map)({}, isSerializableHeaderValue, {\n [_xasbt]: input[_aT]\n });\n b.bp(\"/federation/credentials\");\n const query = (0, import_smithy_client.map)({\n [_rn]: [, (0, import_smithy_client.expectNonNull)(input[_rN], `roleName`)],\n [_ai]: [, (0, import_smithy_client.expectNonNull)(input[_aI], `accountId`)]\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n}, \"se_GetRoleCredentialsCommand\");\nvar se_ListAccountRolesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = (0, import_smithy_client.map)({}, isSerializableHeaderValue, {\n [_xasbt]: input[_aT]\n });\n b.bp(\"/assignment/roles\");\n const query = (0, import_smithy_client.map)({\n [_nt]: [, input[_nT]],\n [_mr]: [() => input.maxResults !== void 0, () => input[_mR].toString()],\n [_ai]: [, (0, import_smithy_client.expectNonNull)(input[_aI], `accountId`)]\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n}, \"se_ListAccountRolesCommand\");\nvar se_ListAccountsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = (0, import_smithy_client.map)({}, isSerializableHeaderValue, {\n [_xasbt]: input[_aT]\n });\n b.bp(\"/assignment/accounts\");\n const query = (0, import_smithy_client.map)({\n [_nt]: [, input[_nT]],\n [_mr]: [() => input.maxResults !== void 0, () => input[_mR].toString()]\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n}, \"se_ListAccountsCommand\");\nvar se_LogoutCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = (0, import_smithy_client.map)({}, isSerializableHeaderValue, {\n [_xasbt]: input[_aT]\n });\n b.bp(\"/logout\");\n let body;\n b.m(\"POST\").h(headers).b(body);\n return b.build();\n}, \"se_LogoutCommand\");\nvar de_GetRoleCredentialsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n roleCredentials: import_smithy_client._json\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_GetRoleCredentialsCommand\");\nvar de_ListAccountRolesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n nextToken: import_smithy_client.expectString,\n roleList: import_smithy_client._json\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_ListAccountRolesCommand\");\nvar de_ListAccountsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n accountList: import_smithy_client._json,\n nextToken: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_ListAccountsCommand\");\nvar de_LogoutCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n await (0, import_smithy_client.collectBody)(output.body, context);\n return contents;\n}, \"de_LogoutCommand\");\nvar de_CommandError = /* @__PURE__ */ __name(async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await (0, import_core2.parseJsonErrorBody)(output.body, context)\n };\n const errorCode = (0, import_core2.loadRestJsonErrorCode)(output, parsedOutput.body);\n switch (errorCode) {\n case \"InvalidRequestException\":\n case \"com.amazonaws.sso#InvalidRequestException\":\n throw await de_InvalidRequestExceptionRes(parsedOutput, context);\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.sso#ResourceNotFoundException\":\n throw await de_ResourceNotFoundExceptionRes(parsedOutput, context);\n case \"TooManyRequestsException\":\n case \"com.amazonaws.sso#TooManyRequestsException\":\n throw await de_TooManyRequestsExceptionRes(parsedOutput, context);\n case \"UnauthorizedException\":\n case \"com.amazonaws.sso#UnauthorizedException\":\n throw await de_UnauthorizedExceptionRes(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n return throwDefaultError({\n output,\n parsedBody,\n errorCode\n });\n }\n}, \"de_CommandError\");\nvar throwDefaultError = (0, import_smithy_client.withBaseException)(SSOServiceException);\nvar de_InvalidRequestExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n message: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidRequestException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidRequestExceptionRes\");\nvar de_ResourceNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n message: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new ResourceNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_ResourceNotFoundExceptionRes\");\nvar de_TooManyRequestsExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n message: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new TooManyRequestsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_TooManyRequestsExceptionRes\");\nvar de_UnauthorizedExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n message: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new UnauthorizedException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_UnauthorizedExceptionRes\");\nvar deserializeMetadata = /* @__PURE__ */ __name((output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"]\n}), \"deserializeMetadata\");\nvar isSerializableHeaderValue = /* @__PURE__ */ __name((value) => value !== void 0 && value !== null && value !== \"\" && (!Object.getOwnPropertyNames(value).includes(\"length\") || value.length != 0) && (!Object.getOwnPropertyNames(value).includes(\"size\") || value.size != 0), \"isSerializableHeaderValue\");\nvar _aI = \"accountId\";\nvar _aT = \"accessToken\";\nvar _ai = \"account_id\";\nvar _mR = \"maxResults\";\nvar _mr = \"max_result\";\nvar _nT = \"nextToken\";\nvar _nt = \"next_token\";\nvar _rN = \"roleName\";\nvar _rn = \"role_name\";\nvar _xasbt = \"x-amz-sso_bearer_token\";\n\n// src/commands/GetRoleCredentialsCommand.ts\nvar _GetRoleCredentialsCommand = class _GetRoleCredentialsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"SWBPortalService\", \"GetRoleCredentials\", {}).n(\"SSOClient\", \"GetRoleCredentialsCommand\").f(GetRoleCredentialsRequestFilterSensitiveLog, GetRoleCredentialsResponseFilterSensitiveLog).ser(se_GetRoleCredentialsCommand).de(de_GetRoleCredentialsCommand).build() {\n};\n__name(_GetRoleCredentialsCommand, \"GetRoleCredentialsCommand\");\nvar GetRoleCredentialsCommand = _GetRoleCredentialsCommand;\n\n// src/commands/ListAccountRolesCommand.ts\n\n\n\n\nvar _ListAccountRolesCommand = class _ListAccountRolesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"SWBPortalService\", \"ListAccountRoles\", {}).n(\"SSOClient\", \"ListAccountRolesCommand\").f(ListAccountRolesRequestFilterSensitiveLog, void 0).ser(se_ListAccountRolesCommand).de(de_ListAccountRolesCommand).build() {\n};\n__name(_ListAccountRolesCommand, \"ListAccountRolesCommand\");\nvar ListAccountRolesCommand = _ListAccountRolesCommand;\n\n// src/commands/ListAccountsCommand.ts\n\n\n\n\nvar _ListAccountsCommand = class _ListAccountsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"SWBPortalService\", \"ListAccounts\", {}).n(\"SSOClient\", \"ListAccountsCommand\").f(ListAccountsRequestFilterSensitiveLog, void 0).ser(se_ListAccountsCommand).de(de_ListAccountsCommand).build() {\n};\n__name(_ListAccountsCommand, \"ListAccountsCommand\");\nvar ListAccountsCommand = _ListAccountsCommand;\n\n// src/commands/LogoutCommand.ts\n\n\n\n\nvar _LogoutCommand = class _LogoutCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"SWBPortalService\", \"Logout\", {}).n(\"SSOClient\", \"LogoutCommand\").f(LogoutRequestFilterSensitiveLog, void 0).ser(se_LogoutCommand).de(de_LogoutCommand).build() {\n};\n__name(_LogoutCommand, \"LogoutCommand\");\nvar LogoutCommand = _LogoutCommand;\n\n// src/SSO.ts\nvar commands = {\n GetRoleCredentialsCommand,\n ListAccountRolesCommand,\n ListAccountsCommand,\n LogoutCommand\n};\nvar _SSO = class _SSO extends SSOClient {\n};\n__name(_SSO, \"SSO\");\nvar SSO = _SSO;\n(0, import_smithy_client.createAggregatedClient)(commands, SSO);\n\n// src/pagination/ListAccountRolesPaginator.ts\n\nvar paginateListAccountRoles = (0, import_core.createPaginator)(SSOClient, ListAccountRolesCommand, \"nextToken\", \"nextToken\", \"maxResults\");\n\n// src/pagination/ListAccountsPaginator.ts\n\nvar paginateListAccounts = (0, import_core.createPaginator)(SSOClient, ListAccountsCommand, \"nextToken\", \"nextToken\", \"maxResults\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n SSOServiceException,\n __Client,\n SSOClient,\n SSO,\n $Command,\n GetRoleCredentialsCommand,\n ListAccountRolesCommand,\n ListAccountsCommand,\n LogoutCommand,\n paginateListAccountRoles,\n paginateListAccounts,\n InvalidRequestException,\n ResourceNotFoundException,\n TooManyRequestsException,\n UnauthorizedException,\n GetRoleCredentialsRequestFilterSensitiveLog,\n RoleCredentialsFilterSensitiveLog,\n GetRoleCredentialsResponseFilterSensitiveLog,\n ListAccountRolesRequestFilterSensitiveLog,\n ListAccountsRequestFilterSensitiveLog,\n LogoutRequestFilterSensitiveLog\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst tslib_1 = require(\"tslib\");\nconst package_json_1 = tslib_1.__importDefault(require(\"../package.json\"));\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_user_agent_node_1 = require(\"@aws-sdk/util-user-agent-node\");\nconst config_resolver_1 = require(\"@smithy/config-resolver\");\nconst hash_node_1 = require(\"@smithy/hash-node\");\nconst middleware_retry_1 = require(\"@smithy/middleware-retry\");\nconst node_config_provider_1 = require(\"@smithy/node-config-provider\");\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst util_body_length_node_1 = require(\"@smithy/util-body-length-node\");\nconst util_retry_1 = require(\"@smithy/util-retry\");\nconst runtimeConfig_shared_1 = require(\"./runtimeConfig.shared\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst util_defaults_mode_node_1 = require(\"@smithy/util-defaults-mode-node\");\nconst smithy_client_2 = require(\"@smithy/smithy-client\");\nconst getRuntimeConfig = (config) => {\n (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version);\n const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config);\n const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode);\n const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config);\n (0, core_1.emitWarningIfUnsupportedVersion)(process.version);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }),\n maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS),\n region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS),\n requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n (0, node_config_provider_1.loadConfig)({\n ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE,\n }),\n sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, \"sha256\"),\n streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS),\n useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS),\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst core_2 = require(\"@smithy/core\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst url_parser_1 = require(\"@smithy/url-parser\");\nconst util_base64_1 = require(\"@smithy/util-base64\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst httpAuthSchemeProvider_1 = require(\"./auth/httpAuthSchemeProvider\");\nconst endpointResolver_1 = require(\"./endpoint/endpointResolver\");\nconst getRuntimeConfig = (config) => {\n return {\n apiVersion: \"2019-06-10\",\n base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64,\n base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultSSOHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new core_1.AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new core_2.NoAuthSigner(),\n },\n ],\n logger: config?.logger ?? new smithy_client_1.NoOpLogger(),\n serviceId: config?.serviceId ?? \"SSO\",\n urlParser: config?.urlParser ?? url_parser_1.parseUrl,\n utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8,\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.STSClient = exports.__Client = void 0;\nconst middleware_host_header_1 = require(\"@aws-sdk/middleware-host-header\");\nconst middleware_logger_1 = require(\"@aws-sdk/middleware-logger\");\nconst middleware_recursion_detection_1 = require(\"@aws-sdk/middleware-recursion-detection\");\nconst middleware_user_agent_1 = require(\"@aws-sdk/middleware-user-agent\");\nconst config_resolver_1 = require(\"@smithy/config-resolver\");\nconst core_1 = require(\"@smithy/core\");\nconst middleware_content_length_1 = require(\"@smithy/middleware-content-length\");\nconst middleware_endpoint_1 = require(\"@smithy/middleware-endpoint\");\nconst middleware_retry_1 = require(\"@smithy/middleware-retry\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nObject.defineProperty(exports, \"__Client\", { enumerable: true, get: function () { return smithy_client_1.Client; } });\nconst httpAuthSchemeProvider_1 = require(\"./auth/httpAuthSchemeProvider\");\nconst EndpointParameters_1 = require(\"./endpoint/EndpointParameters\");\nconst runtimeConfig_1 = require(\"./runtimeConfig\");\nconst runtimeExtensions_1 = require(\"./runtimeExtensions\");\nclass STSClient extends smithy_client_1.Client {\n constructor(...[configuration]) {\n const _config_0 = (0, runtimeConfig_1.getRuntimeConfig)(configuration || {});\n const _config_1 = (0, EndpointParameters_1.resolveClientEndpointParameters)(_config_0);\n const _config_2 = (0, config_resolver_1.resolveRegionConfig)(_config_1);\n const _config_3 = (0, middleware_endpoint_1.resolveEndpointConfig)(_config_2);\n const _config_4 = (0, middleware_retry_1.resolveRetryConfig)(_config_3);\n const _config_5 = (0, middleware_host_header_1.resolveHostHeaderConfig)(_config_4);\n const _config_6 = (0, middleware_user_agent_1.resolveUserAgentConfig)(_config_5);\n const _config_7 = (0, httpAuthSchemeProvider_1.resolveHttpAuthSchemeConfig)(_config_6);\n const _config_8 = (0, runtimeExtensions_1.resolveRuntimeExtensions)(_config_7, configuration?.extensions || []);\n super(_config_8);\n this.config = _config_8;\n this.middlewareStack.use((0, middleware_retry_1.getRetryPlugin)(this.config));\n this.middlewareStack.use((0, middleware_content_length_1.getContentLengthPlugin)(this.config));\n this.middlewareStack.use((0, middleware_host_header_1.getHostHeaderPlugin)(this.config));\n this.middlewareStack.use((0, middleware_logger_1.getLoggerPlugin)(this.config));\n this.middlewareStack.use((0, middleware_recursion_detection_1.getRecursionDetectionPlugin)(this.config));\n this.middlewareStack.use((0, middleware_user_agent_1.getUserAgentPlugin)(this.config));\n this.middlewareStack.use((0, core_1.getHttpAuthSchemeEndpointRuleSetPlugin)(this.config, {\n httpAuthSchemeParametersProvider: this.getDefaultHttpAuthSchemeParametersProvider(),\n identityProviderConfigProvider: this.getIdentityProviderConfigProvider(),\n }));\n this.middlewareStack.use((0, core_1.getHttpSigningPlugin)(this.config));\n }\n destroy() {\n super.destroy();\n }\n getDefaultHttpAuthSchemeParametersProvider() {\n return httpAuthSchemeProvider_1.defaultSTSHttpAuthSchemeParametersProvider;\n }\n getIdentityProviderConfigProvider() {\n return async (config) => new core_1.DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials,\n });\n }\n}\nexports.STSClient = STSClient;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveHttpAuthRuntimeConfig = exports.getHttpAuthExtensionConfiguration = void 0;\nconst getHttpAuthExtensionConfiguration = (runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n }\n else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n },\n };\n};\nexports.getHttpAuthExtensionConfiguration = getHttpAuthExtensionConfiguration;\nconst resolveHttpAuthRuntimeConfig = (config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials(),\n };\n};\nexports.resolveHttpAuthRuntimeConfig = resolveHttpAuthRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveHttpAuthSchemeConfig = exports.resolveStsAuthConfig = exports.defaultSTSHttpAuthSchemeProvider = exports.defaultSTSHttpAuthSchemeParametersProvider = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_middleware_1 = require(\"@smithy/util-middleware\");\nconst STSClient_1 = require(\"../STSClient\");\nconst defaultSTSHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: (0, util_middleware_1.getSmithyContext)(context).operation,\n region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) ||\n (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nexports.defaultSTSHttpAuthSchemeParametersProvider = defaultSTSHttpAuthSchemeParametersProvider;\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"sts\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createSmithyApiNoAuthHttpAuthOption(authParameters) {\n return {\n schemeId: \"smithy.api#noAuth\",\n };\n}\nconst defaultSTSHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n case \"AssumeRoleWithSAML\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"AssumeRoleWithWebIdentity\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nexports.defaultSTSHttpAuthSchemeProvider = defaultSTSHttpAuthSchemeProvider;\nconst resolveStsAuthConfig = (input) => ({\n ...input,\n stsClientCtor: STSClient_1.STSClient,\n});\nexports.resolveStsAuthConfig = resolveStsAuthConfig;\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = (0, exports.resolveStsAuthConfig)(config);\n const config_1 = (0, core_1.resolveAwsSdkSigV4Config)(config_0);\n return {\n ...config_1,\n };\n};\nexports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultProvider = void 0;\nexports.defaultProvider = ((input) => {\n return () => Promise.resolve().then(() => __importStar(require(\"@aws-sdk/credential-provider-node\"))).then(({ defaultProvider }) => defaultProvider(input)());\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.commonParams = exports.resolveClientEndpointParameters = void 0;\nconst resolveClientEndpointParameters = (options) => {\n return {\n ...options,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n useGlobalEndpoint: options.useGlobalEndpoint ?? false,\n defaultSigningName: \"sts\",\n };\n};\nexports.resolveClientEndpointParameters = resolveClientEndpointParameters;\nexports.commonParams = {\n UseGlobalEndpoint: { type: \"builtInParams\", name: \"useGlobalEndpoint\" },\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultEndpointResolver = void 0;\nconst util_endpoints_1 = require(\"@aws-sdk/util-endpoints\");\nconst util_endpoints_2 = require(\"@smithy/util-endpoints\");\nconst ruleset_1 = require(\"./ruleset\");\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n });\n};\nexports.defaultEndpointResolver = defaultEndpointResolver;\nutil_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ruleSet = void 0;\nconst F = \"required\", G = \"type\", H = \"fn\", I = \"argv\", J = \"ref\";\nconst a = false, b = true, c = \"booleanEquals\", d = \"stringEquals\", e = \"sigv4\", f = \"sts\", g = \"us-east-1\", h = \"endpoint\", i = \"https://sts.{Region}.{PartitionResult#dnsSuffix}\", j = \"tree\", k = \"error\", l = \"getAttr\", m = { [F]: false, [G]: \"String\" }, n = { [F]: true, \"default\": false, [G]: \"Boolean\" }, o = { [J]: \"Endpoint\" }, p = { [H]: \"isSet\", [I]: [{ [J]: \"Region\" }] }, q = { [J]: \"Region\" }, r = { [H]: \"aws.partition\", [I]: [q], \"assign\": \"PartitionResult\" }, s = { [J]: \"UseFIPS\" }, t = { [J]: \"UseDualStack\" }, u = { \"url\": \"https://sts.amazonaws.com\", \"properties\": { \"authSchemes\": [{ \"name\": e, \"signingName\": f, \"signingRegion\": g }] }, \"headers\": {} }, v = {}, w = { \"conditions\": [{ [H]: d, [I]: [q, \"aws-global\"] }], [h]: u, [G]: h }, x = { [H]: c, [I]: [s, true] }, y = { [H]: c, [I]: [t, true] }, z = { [H]: l, [I]: [{ [J]: \"PartitionResult\" }, \"supportsFIPS\"] }, A = { [J]: \"PartitionResult\" }, B = { [H]: c, [I]: [true, { [H]: l, [I]: [A, \"supportsDualStack\"] }] }, C = [{ [H]: \"isSet\", [I]: [o] }], D = [x], E = [y];\nconst _data = { version: \"1.0\", parameters: { Region: m, UseDualStack: n, UseFIPS: n, Endpoint: m, UseGlobalEndpoint: n }, rules: [{ conditions: [{ [H]: c, [I]: [{ [J]: \"UseGlobalEndpoint\" }, b] }, { [H]: \"not\", [I]: C }, p, r, { [H]: c, [I]: [s, a] }, { [H]: c, [I]: [t, a] }], rules: [{ conditions: [{ [H]: d, [I]: [q, \"ap-northeast-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"ap-south-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"ap-southeast-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"ap-southeast-2\"] }], endpoint: u, [G]: h }, w, { conditions: [{ [H]: d, [I]: [q, \"ca-central-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"eu-central-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"eu-north-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"eu-west-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"eu-west-2\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"eu-west-3\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"sa-east-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, g] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"us-east-2\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"us-west-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"us-west-2\"] }], endpoint: u, [G]: h }, { endpoint: { url: i, properties: { authSchemes: [{ name: e, signingName: f, signingRegion: \"{Region}\" }] }, headers: v }, [G]: h }], [G]: j }, { conditions: C, rules: [{ conditions: D, error: \"Invalid Configuration: FIPS and custom endpoint are not supported\", [G]: k }, { conditions: E, error: \"Invalid Configuration: Dualstack and custom endpoint are not supported\", [G]: k }, { endpoint: { url: o, properties: v, headers: v }, [G]: h }], [G]: j }, { conditions: [p], rules: [{ conditions: [r], rules: [{ conditions: [x, y], rules: [{ conditions: [{ [H]: c, [I]: [b, z] }, B], rules: [{ endpoint: { url: \"https://sts-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: v, headers: v }, [G]: h }], [G]: j }, { error: \"FIPS and DualStack are enabled, but this partition does not support one or both\", [G]: k }], [G]: j }, { conditions: D, rules: [{ conditions: [{ [H]: c, [I]: [z, b] }], rules: [{ conditions: [{ [H]: d, [I]: [{ [H]: l, [I]: [A, \"name\"] }, \"aws-us-gov\"] }], endpoint: { url: \"https://sts.{Region}.amazonaws.com\", properties: v, headers: v }, [G]: h }, { endpoint: { url: \"https://sts-fips.{Region}.{PartitionResult#dnsSuffix}\", properties: v, headers: v }, [G]: h }], [G]: j }, { error: \"FIPS is enabled but this partition does not support FIPS\", [G]: k }], [G]: j }, { conditions: E, rules: [{ conditions: [B], rules: [{ endpoint: { url: \"https://sts.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: v, headers: v }, [G]: h }], [G]: j }, { error: \"DualStack is enabled but this partition does not support DualStack\", [G]: k }], [G]: j }, w, { endpoint: { url: i, properties: v, headers: v }, [G]: h }], [G]: j }], [G]: j }, { error: \"Invalid Configuration: Missing Region\", [G]: k }] };\nexports.ruleSet = _data;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AssumeRoleCommand: () => AssumeRoleCommand,\n AssumeRoleResponseFilterSensitiveLog: () => AssumeRoleResponseFilterSensitiveLog,\n AssumeRoleWithSAMLCommand: () => AssumeRoleWithSAMLCommand,\n AssumeRoleWithSAMLRequestFilterSensitiveLog: () => AssumeRoleWithSAMLRequestFilterSensitiveLog,\n AssumeRoleWithSAMLResponseFilterSensitiveLog: () => AssumeRoleWithSAMLResponseFilterSensitiveLog,\n AssumeRoleWithWebIdentityCommand: () => AssumeRoleWithWebIdentityCommand,\n AssumeRoleWithWebIdentityRequestFilterSensitiveLog: () => AssumeRoleWithWebIdentityRequestFilterSensitiveLog,\n AssumeRoleWithWebIdentityResponseFilterSensitiveLog: () => AssumeRoleWithWebIdentityResponseFilterSensitiveLog,\n ClientInputEndpointParameters: () => import_EndpointParameters9.ClientInputEndpointParameters,\n CredentialsFilterSensitiveLog: () => CredentialsFilterSensitiveLog,\n DecodeAuthorizationMessageCommand: () => DecodeAuthorizationMessageCommand,\n ExpiredTokenException: () => ExpiredTokenException,\n GetAccessKeyInfoCommand: () => GetAccessKeyInfoCommand,\n GetCallerIdentityCommand: () => GetCallerIdentityCommand,\n GetFederationTokenCommand: () => GetFederationTokenCommand,\n GetFederationTokenResponseFilterSensitiveLog: () => GetFederationTokenResponseFilterSensitiveLog,\n GetSessionTokenCommand: () => GetSessionTokenCommand,\n GetSessionTokenResponseFilterSensitiveLog: () => GetSessionTokenResponseFilterSensitiveLog,\n IDPCommunicationErrorException: () => IDPCommunicationErrorException,\n IDPRejectedClaimException: () => IDPRejectedClaimException,\n InvalidAuthorizationMessageException: () => InvalidAuthorizationMessageException,\n InvalidIdentityTokenException: () => InvalidIdentityTokenException,\n MalformedPolicyDocumentException: () => MalformedPolicyDocumentException,\n PackedPolicyTooLargeException: () => PackedPolicyTooLargeException,\n RegionDisabledException: () => RegionDisabledException,\n RuntimeExtension: () => import_runtimeExtensions.RuntimeExtension,\n STS: () => STS,\n STSServiceException: () => STSServiceException,\n decorateDefaultCredentialProvider: () => decorateDefaultCredentialProvider,\n getDefaultRoleAssumer: () => getDefaultRoleAssumer2,\n getDefaultRoleAssumerWithWebIdentity: () => getDefaultRoleAssumerWithWebIdentity2\n});\nmodule.exports = __toCommonJS(src_exports);\n__reExport(src_exports, require(\"././STSClient\"), module.exports);\n\n// src/STS.ts\n\n\n// src/commands/AssumeRoleCommand.ts\nvar import_middleware_endpoint = require(\"@smithy/middleware-endpoint\");\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\n\nvar import_types = require(\"@smithy/types\");\nvar import_EndpointParameters = require(\"./endpoint/EndpointParameters\");\n\n// src/models/models_0.ts\n\n\n// src/models/STSServiceException.ts\nvar import_smithy_client = require(\"@smithy/smithy-client\");\nvar _STSServiceException = class _STSServiceException extends import_smithy_client.ServiceException {\n /**\n * @internal\n */\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, _STSServiceException.prototype);\n }\n};\n__name(_STSServiceException, \"STSServiceException\");\nvar STSServiceException = _STSServiceException;\n\n// src/models/models_0.ts\nvar _ExpiredTokenException = class _ExpiredTokenException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ExpiredTokenException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ExpiredTokenException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ExpiredTokenException.prototype);\n }\n};\n__name(_ExpiredTokenException, \"ExpiredTokenException\");\nvar ExpiredTokenException = _ExpiredTokenException;\nvar _MalformedPolicyDocumentException = class _MalformedPolicyDocumentException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"MalformedPolicyDocumentException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"MalformedPolicyDocumentException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _MalformedPolicyDocumentException.prototype);\n }\n};\n__name(_MalformedPolicyDocumentException, \"MalformedPolicyDocumentException\");\nvar MalformedPolicyDocumentException = _MalformedPolicyDocumentException;\nvar _PackedPolicyTooLargeException = class _PackedPolicyTooLargeException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"PackedPolicyTooLargeException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"PackedPolicyTooLargeException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _PackedPolicyTooLargeException.prototype);\n }\n};\n__name(_PackedPolicyTooLargeException, \"PackedPolicyTooLargeException\");\nvar PackedPolicyTooLargeException = _PackedPolicyTooLargeException;\nvar _RegionDisabledException = class _RegionDisabledException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"RegionDisabledException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"RegionDisabledException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _RegionDisabledException.prototype);\n }\n};\n__name(_RegionDisabledException, \"RegionDisabledException\");\nvar RegionDisabledException = _RegionDisabledException;\nvar _IDPRejectedClaimException = class _IDPRejectedClaimException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"IDPRejectedClaimException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"IDPRejectedClaimException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _IDPRejectedClaimException.prototype);\n }\n};\n__name(_IDPRejectedClaimException, \"IDPRejectedClaimException\");\nvar IDPRejectedClaimException = _IDPRejectedClaimException;\nvar _InvalidIdentityTokenException = class _InvalidIdentityTokenException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidIdentityTokenException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidIdentityTokenException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidIdentityTokenException.prototype);\n }\n};\n__name(_InvalidIdentityTokenException, \"InvalidIdentityTokenException\");\nvar InvalidIdentityTokenException = _InvalidIdentityTokenException;\nvar _IDPCommunicationErrorException = class _IDPCommunicationErrorException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"IDPCommunicationErrorException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"IDPCommunicationErrorException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _IDPCommunicationErrorException.prototype);\n }\n};\n__name(_IDPCommunicationErrorException, \"IDPCommunicationErrorException\");\nvar IDPCommunicationErrorException = _IDPCommunicationErrorException;\nvar _InvalidAuthorizationMessageException = class _InvalidAuthorizationMessageException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidAuthorizationMessageException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidAuthorizationMessageException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidAuthorizationMessageException.prototype);\n }\n};\n__name(_InvalidAuthorizationMessageException, \"InvalidAuthorizationMessageException\");\nvar InvalidAuthorizationMessageException = _InvalidAuthorizationMessageException;\nvar CredentialsFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.SecretAccessKey && { SecretAccessKey: import_smithy_client.SENSITIVE_STRING }\n}), \"CredentialsFilterSensitiveLog\");\nvar AssumeRoleResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Credentials && { Credentials: CredentialsFilterSensitiveLog(obj.Credentials) }\n}), \"AssumeRoleResponseFilterSensitiveLog\");\nvar AssumeRoleWithSAMLRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.SAMLAssertion && { SAMLAssertion: import_smithy_client.SENSITIVE_STRING }\n}), \"AssumeRoleWithSAMLRequestFilterSensitiveLog\");\nvar AssumeRoleWithSAMLResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Credentials && { Credentials: CredentialsFilterSensitiveLog(obj.Credentials) }\n}), \"AssumeRoleWithSAMLResponseFilterSensitiveLog\");\nvar AssumeRoleWithWebIdentityRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.WebIdentityToken && { WebIdentityToken: import_smithy_client.SENSITIVE_STRING }\n}), \"AssumeRoleWithWebIdentityRequestFilterSensitiveLog\");\nvar AssumeRoleWithWebIdentityResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Credentials && { Credentials: CredentialsFilterSensitiveLog(obj.Credentials) }\n}), \"AssumeRoleWithWebIdentityResponseFilterSensitiveLog\");\nvar GetFederationTokenResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Credentials && { Credentials: CredentialsFilterSensitiveLog(obj.Credentials) }\n}), \"GetFederationTokenResponseFilterSensitiveLog\");\nvar GetSessionTokenResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Credentials && { Credentials: CredentialsFilterSensitiveLog(obj.Credentials) }\n}), \"GetSessionTokenResponseFilterSensitiveLog\");\n\n// src/protocols/Aws_query.ts\nvar import_core = require(\"@aws-sdk/core\");\nvar import_protocol_http = require(\"@smithy/protocol-http\");\n\nvar se_AssumeRoleCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_AssumeRoleRequest(input, context),\n [_A]: _AR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_AssumeRoleCommand\");\nvar se_AssumeRoleWithSAMLCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_AssumeRoleWithSAMLRequest(input, context),\n [_A]: _ARWSAML,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_AssumeRoleWithSAMLCommand\");\nvar se_AssumeRoleWithWebIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_AssumeRoleWithWebIdentityRequest(input, context),\n [_A]: _ARWWI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_AssumeRoleWithWebIdentityCommand\");\nvar se_DecodeAuthorizationMessageCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DecodeAuthorizationMessageRequest(input, context),\n [_A]: _DAM,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DecodeAuthorizationMessageCommand\");\nvar se_GetAccessKeyInfoCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetAccessKeyInfoRequest(input, context),\n [_A]: _GAKI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetAccessKeyInfoCommand\");\nvar se_GetCallerIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetCallerIdentityRequest(input, context),\n [_A]: _GCI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetCallerIdentityCommand\");\nvar se_GetFederationTokenCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetFederationTokenRequest(input, context),\n [_A]: _GFT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetFederationTokenCommand\");\nvar se_GetSessionTokenCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetSessionTokenRequest(input, context),\n [_A]: _GST,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetSessionTokenCommand\");\nvar de_AssumeRoleCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_AssumeRoleResponse(data.AssumeRoleResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_AssumeRoleCommand\");\nvar de_AssumeRoleWithSAMLCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_AssumeRoleWithSAMLResponse(data.AssumeRoleWithSAMLResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_AssumeRoleWithSAMLCommand\");\nvar de_AssumeRoleWithWebIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_AssumeRoleWithWebIdentityResponse(data.AssumeRoleWithWebIdentityResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_AssumeRoleWithWebIdentityCommand\");\nvar de_DecodeAuthorizationMessageCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DecodeAuthorizationMessageResponse(data.DecodeAuthorizationMessageResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DecodeAuthorizationMessageCommand\");\nvar de_GetAccessKeyInfoCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetAccessKeyInfoResponse(data.GetAccessKeyInfoResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetAccessKeyInfoCommand\");\nvar de_GetCallerIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetCallerIdentityResponse(data.GetCallerIdentityResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetCallerIdentityCommand\");\nvar de_GetFederationTokenCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetFederationTokenResponse(data.GetFederationTokenResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetFederationTokenCommand\");\nvar de_GetSessionTokenCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetSessionTokenResponse(data.GetSessionTokenResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetSessionTokenCommand\");\nvar de_CommandError = /* @__PURE__ */ __name(async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await (0, import_core.parseXmlErrorBody)(output.body, context)\n };\n const errorCode = loadQueryErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ExpiredTokenException\":\n case \"com.amazonaws.sts#ExpiredTokenException\":\n throw await de_ExpiredTokenExceptionRes(parsedOutput, context);\n case \"MalformedPolicyDocument\":\n case \"com.amazonaws.sts#MalformedPolicyDocumentException\":\n throw await de_MalformedPolicyDocumentExceptionRes(parsedOutput, context);\n case \"PackedPolicyTooLarge\":\n case \"com.amazonaws.sts#PackedPolicyTooLargeException\":\n throw await de_PackedPolicyTooLargeExceptionRes(parsedOutput, context);\n case \"RegionDisabledException\":\n case \"com.amazonaws.sts#RegionDisabledException\":\n throw await de_RegionDisabledExceptionRes(parsedOutput, context);\n case \"IDPRejectedClaim\":\n case \"com.amazonaws.sts#IDPRejectedClaimException\":\n throw await de_IDPRejectedClaimExceptionRes(parsedOutput, context);\n case \"InvalidIdentityToken\":\n case \"com.amazonaws.sts#InvalidIdentityTokenException\":\n throw await de_InvalidIdentityTokenExceptionRes(parsedOutput, context);\n case \"IDPCommunicationError\":\n case \"com.amazonaws.sts#IDPCommunicationErrorException\":\n throw await de_IDPCommunicationErrorExceptionRes(parsedOutput, context);\n case \"InvalidAuthorizationMessageException\":\n case \"com.amazonaws.sts#InvalidAuthorizationMessageException\":\n throw await de_InvalidAuthorizationMessageExceptionRes(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n return throwDefaultError({\n output,\n parsedBody: parsedBody.Error,\n errorCode\n });\n }\n}, \"de_CommandError\");\nvar de_ExpiredTokenExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_ExpiredTokenException(body.Error, context);\n const exception = new ExpiredTokenException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ExpiredTokenExceptionRes\");\nvar de_IDPCommunicationErrorExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_IDPCommunicationErrorException(body.Error, context);\n const exception = new IDPCommunicationErrorException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_IDPCommunicationErrorExceptionRes\");\nvar de_IDPRejectedClaimExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_IDPRejectedClaimException(body.Error, context);\n const exception = new IDPRejectedClaimException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_IDPRejectedClaimExceptionRes\");\nvar de_InvalidAuthorizationMessageExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_InvalidAuthorizationMessageException(body.Error, context);\n const exception = new InvalidAuthorizationMessageException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidAuthorizationMessageExceptionRes\");\nvar de_InvalidIdentityTokenExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_InvalidIdentityTokenException(body.Error, context);\n const exception = new InvalidIdentityTokenException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidIdentityTokenExceptionRes\");\nvar de_MalformedPolicyDocumentExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_MalformedPolicyDocumentException(body.Error, context);\n const exception = new MalformedPolicyDocumentException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_MalformedPolicyDocumentExceptionRes\");\nvar de_PackedPolicyTooLargeExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_PackedPolicyTooLargeException(body.Error, context);\n const exception = new PackedPolicyTooLargeException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_PackedPolicyTooLargeExceptionRes\");\nvar de_RegionDisabledExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_RegionDisabledException(body.Error, context);\n const exception = new RegionDisabledException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_RegionDisabledExceptionRes\");\nvar se_AssumeRoleRequest = /* @__PURE__ */ __name((input, context) => {\n var _a2, _b, _c, _d;\n const entries = {};\n if (input[_RA] != null) {\n entries[_RA] = input[_RA];\n }\n if (input[_RSN] != null) {\n entries[_RSN] = input[_RSN];\n }\n if (input[_PA] != null) {\n const memberEntries = se_policyDescriptorListType(input[_PA], context);\n if (((_a2 = input[_PA]) == null ? void 0 : _a2.length) === 0) {\n entries.PolicyArns = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `PolicyArns.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_P] != null) {\n entries[_P] = input[_P];\n }\n if (input[_DS] != null) {\n entries[_DS] = input[_DS];\n }\n if (input[_T] != null) {\n const memberEntries = se_tagListType(input[_T], context);\n if (((_b = input[_T]) == null ? void 0 : _b.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_TTK] != null) {\n const memberEntries = se_tagKeyListType(input[_TTK], context);\n if (((_c = input[_TTK]) == null ? void 0 : _c.length) === 0) {\n entries.TransitiveTagKeys = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `TransitiveTagKeys.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_EI] != null) {\n entries[_EI] = input[_EI];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_TC] != null) {\n entries[_TC] = input[_TC];\n }\n if (input[_SI] != null) {\n entries[_SI] = input[_SI];\n }\n if (input[_PC] != null) {\n const memberEntries = se_ProvidedContextsListType(input[_PC], context);\n if (((_d = input[_PC]) == null ? void 0 : _d.length) === 0) {\n entries.ProvidedContexts = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ProvidedContexts.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_AssumeRoleRequest\");\nvar se_AssumeRoleWithSAMLRequest = /* @__PURE__ */ __name((input, context) => {\n var _a2;\n const entries = {};\n if (input[_RA] != null) {\n entries[_RA] = input[_RA];\n }\n if (input[_PAr] != null) {\n entries[_PAr] = input[_PAr];\n }\n if (input[_SAMLA] != null) {\n entries[_SAMLA] = input[_SAMLA];\n }\n if (input[_PA] != null) {\n const memberEntries = se_policyDescriptorListType(input[_PA], context);\n if (((_a2 = input[_PA]) == null ? void 0 : _a2.length) === 0) {\n entries.PolicyArns = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `PolicyArns.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_P] != null) {\n entries[_P] = input[_P];\n }\n if (input[_DS] != null) {\n entries[_DS] = input[_DS];\n }\n return entries;\n}, \"se_AssumeRoleWithSAMLRequest\");\nvar se_AssumeRoleWithWebIdentityRequest = /* @__PURE__ */ __name((input, context) => {\n var _a2;\n const entries = {};\n if (input[_RA] != null) {\n entries[_RA] = input[_RA];\n }\n if (input[_RSN] != null) {\n entries[_RSN] = input[_RSN];\n }\n if (input[_WIT] != null) {\n entries[_WIT] = input[_WIT];\n }\n if (input[_PI] != null) {\n entries[_PI] = input[_PI];\n }\n if (input[_PA] != null) {\n const memberEntries = se_policyDescriptorListType(input[_PA], context);\n if (((_a2 = input[_PA]) == null ? void 0 : _a2.length) === 0) {\n entries.PolicyArns = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `PolicyArns.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_P] != null) {\n entries[_P] = input[_P];\n }\n if (input[_DS] != null) {\n entries[_DS] = input[_DS];\n }\n return entries;\n}, \"se_AssumeRoleWithWebIdentityRequest\");\nvar se_DecodeAuthorizationMessageRequest = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_EM] != null) {\n entries[_EM] = input[_EM];\n }\n return entries;\n}, \"se_DecodeAuthorizationMessageRequest\");\nvar se_GetAccessKeyInfoRequest = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_AKI] != null) {\n entries[_AKI] = input[_AKI];\n }\n return entries;\n}, \"se_GetAccessKeyInfoRequest\");\nvar se_GetCallerIdentityRequest = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n return entries;\n}, \"se_GetCallerIdentityRequest\");\nvar se_GetFederationTokenRequest = /* @__PURE__ */ __name((input, context) => {\n var _a2, _b;\n const entries = {};\n if (input[_N] != null) {\n entries[_N] = input[_N];\n }\n if (input[_P] != null) {\n entries[_P] = input[_P];\n }\n if (input[_PA] != null) {\n const memberEntries = se_policyDescriptorListType(input[_PA], context);\n if (((_a2 = input[_PA]) == null ? void 0 : _a2.length) === 0) {\n entries.PolicyArns = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `PolicyArns.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_DS] != null) {\n entries[_DS] = input[_DS];\n }\n if (input[_T] != null) {\n const memberEntries = se_tagListType(input[_T], context);\n if (((_b = input[_T]) == null ? void 0 : _b.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_GetFederationTokenRequest\");\nvar se_GetSessionTokenRequest = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_DS] != null) {\n entries[_DS] = input[_DS];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_TC] != null) {\n entries[_TC] = input[_TC];\n }\n return entries;\n}, \"se_GetSessionTokenRequest\");\nvar se_policyDescriptorListType = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_PolicyDescriptorType(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_policyDescriptorListType\");\nvar se_PolicyDescriptorType = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_a] != null) {\n entries[_a] = input[_a];\n }\n return entries;\n}, \"se_PolicyDescriptorType\");\nvar se_ProvidedContext = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_PAro] != null) {\n entries[_PAro] = input[_PAro];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ProvidedContext\");\nvar se_ProvidedContextsListType = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_ProvidedContext(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_ProvidedContextsListType\");\nvar se_Tag = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_K] != null) {\n entries[_K] = input[_K];\n }\n if (input[_Va] != null) {\n entries[_Va] = input[_Va];\n }\n return entries;\n}, \"se_Tag\");\nvar se_tagKeyListType = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_tagKeyListType\");\nvar se_tagListType = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_Tag(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_tagListType\");\nvar de_AssumedRoleUser = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_ARI] != null) {\n contents[_ARI] = (0, import_smithy_client.expectString)(output[_ARI]);\n }\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n return contents;\n}, \"de_AssumedRoleUser\");\nvar de_AssumeRoleResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_C] != null) {\n contents[_C] = de_Credentials(output[_C], context);\n }\n if (output[_ARU] != null) {\n contents[_ARU] = de_AssumedRoleUser(output[_ARU], context);\n }\n if (output[_PPS] != null) {\n contents[_PPS] = (0, import_smithy_client.strictParseInt32)(output[_PPS]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_AssumeRoleResponse\");\nvar de_AssumeRoleWithSAMLResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_C] != null) {\n contents[_C] = de_Credentials(output[_C], context);\n }\n if (output[_ARU] != null) {\n contents[_ARU] = de_AssumedRoleUser(output[_ARU], context);\n }\n if (output[_PPS] != null) {\n contents[_PPS] = (0, import_smithy_client.strictParseInt32)(output[_PPS]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_ST] != null) {\n contents[_ST] = (0, import_smithy_client.expectString)(output[_ST]);\n }\n if (output[_I] != null) {\n contents[_I] = (0, import_smithy_client.expectString)(output[_I]);\n }\n if (output[_Au] != null) {\n contents[_Au] = (0, import_smithy_client.expectString)(output[_Au]);\n }\n if (output[_NQ] != null) {\n contents[_NQ] = (0, import_smithy_client.expectString)(output[_NQ]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_AssumeRoleWithSAMLResponse\");\nvar de_AssumeRoleWithWebIdentityResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_C] != null) {\n contents[_C] = de_Credentials(output[_C], context);\n }\n if (output[_SFWIT] != null) {\n contents[_SFWIT] = (0, import_smithy_client.expectString)(output[_SFWIT]);\n }\n if (output[_ARU] != null) {\n contents[_ARU] = de_AssumedRoleUser(output[_ARU], context);\n }\n if (output[_PPS] != null) {\n contents[_PPS] = (0, import_smithy_client.strictParseInt32)(output[_PPS]);\n }\n if (output[_Pr] != null) {\n contents[_Pr] = (0, import_smithy_client.expectString)(output[_Pr]);\n }\n if (output[_Au] != null) {\n contents[_Au] = (0, import_smithy_client.expectString)(output[_Au]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_AssumeRoleWithWebIdentityResponse\");\nvar de_Credentials = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_AKI] != null) {\n contents[_AKI] = (0, import_smithy_client.expectString)(output[_AKI]);\n }\n if (output[_SAK] != null) {\n contents[_SAK] = (0, import_smithy_client.expectString)(output[_SAK]);\n }\n if (output[_STe] != null) {\n contents[_STe] = (0, import_smithy_client.expectString)(output[_STe]);\n }\n if (output[_E] != null) {\n contents[_E] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_E]));\n }\n return contents;\n}, \"de_Credentials\");\nvar de_DecodeAuthorizationMessageResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_DM] != null) {\n contents[_DM] = (0, import_smithy_client.expectString)(output[_DM]);\n }\n return contents;\n}, \"de_DecodeAuthorizationMessageResponse\");\nvar de_ExpiredTokenException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_ExpiredTokenException\");\nvar de_FederatedUser = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_FUI] != null) {\n contents[_FUI] = (0, import_smithy_client.expectString)(output[_FUI]);\n }\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n return contents;\n}, \"de_FederatedUser\");\nvar de_GetAccessKeyInfoResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Ac] != null) {\n contents[_Ac] = (0, import_smithy_client.expectString)(output[_Ac]);\n }\n return contents;\n}, \"de_GetAccessKeyInfoResponse\");\nvar de_GetCallerIdentityResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_UI] != null) {\n contents[_UI] = (0, import_smithy_client.expectString)(output[_UI]);\n }\n if (output[_Ac] != null) {\n contents[_Ac] = (0, import_smithy_client.expectString)(output[_Ac]);\n }\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n return contents;\n}, \"de_GetCallerIdentityResponse\");\nvar de_GetFederationTokenResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_C] != null) {\n contents[_C] = de_Credentials(output[_C], context);\n }\n if (output[_FU] != null) {\n contents[_FU] = de_FederatedUser(output[_FU], context);\n }\n if (output[_PPS] != null) {\n contents[_PPS] = (0, import_smithy_client.strictParseInt32)(output[_PPS]);\n }\n return contents;\n}, \"de_GetFederationTokenResponse\");\nvar de_GetSessionTokenResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_C] != null) {\n contents[_C] = de_Credentials(output[_C], context);\n }\n return contents;\n}, \"de_GetSessionTokenResponse\");\nvar de_IDPCommunicationErrorException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_IDPCommunicationErrorException\");\nvar de_IDPRejectedClaimException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_IDPRejectedClaimException\");\nvar de_InvalidAuthorizationMessageException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_InvalidAuthorizationMessageException\");\nvar de_InvalidIdentityTokenException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_InvalidIdentityTokenException\");\nvar de_MalformedPolicyDocumentException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_MalformedPolicyDocumentException\");\nvar de_PackedPolicyTooLargeException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_PackedPolicyTooLargeException\");\nvar de_RegionDisabledException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_RegionDisabledException\");\nvar deserializeMetadata = /* @__PURE__ */ __name((output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"]\n}), \"deserializeMetadata\");\nvar throwDefaultError = (0, import_smithy_client.withBaseException)(STSServiceException);\nvar buildHttpRpcRequest = /* @__PURE__ */ __name(async (context, headers, path, resolvedHostname, body) => {\n const { hostname, protocol = \"https\", port, path: basePath } = await context.endpoint();\n const contents = {\n protocol,\n hostname,\n port,\n method: \"POST\",\n path: basePath.endsWith(\"/\") ? basePath.slice(0, -1) + path : basePath + path,\n headers\n };\n if (resolvedHostname !== void 0) {\n contents.hostname = resolvedHostname;\n }\n if (body !== void 0) {\n contents.body = body;\n }\n return new import_protocol_http.HttpRequest(contents);\n}, \"buildHttpRpcRequest\");\nvar SHARED_HEADERS = {\n \"content-type\": \"application/x-www-form-urlencoded\"\n};\nvar _ = \"2011-06-15\";\nvar _A = \"Action\";\nvar _AKI = \"AccessKeyId\";\nvar _AR = \"AssumeRole\";\nvar _ARI = \"AssumedRoleId\";\nvar _ARU = \"AssumedRoleUser\";\nvar _ARWSAML = \"AssumeRoleWithSAML\";\nvar _ARWWI = \"AssumeRoleWithWebIdentity\";\nvar _Ac = \"Account\";\nvar _Ar = \"Arn\";\nvar _Au = \"Audience\";\nvar _C = \"Credentials\";\nvar _CA = \"ContextAssertion\";\nvar _DAM = \"DecodeAuthorizationMessage\";\nvar _DM = \"DecodedMessage\";\nvar _DS = \"DurationSeconds\";\nvar _E = \"Expiration\";\nvar _EI = \"ExternalId\";\nvar _EM = \"EncodedMessage\";\nvar _FU = \"FederatedUser\";\nvar _FUI = \"FederatedUserId\";\nvar _GAKI = \"GetAccessKeyInfo\";\nvar _GCI = \"GetCallerIdentity\";\nvar _GFT = \"GetFederationToken\";\nvar _GST = \"GetSessionToken\";\nvar _I = \"Issuer\";\nvar _K = \"Key\";\nvar _N = \"Name\";\nvar _NQ = \"NameQualifier\";\nvar _P = \"Policy\";\nvar _PA = \"PolicyArns\";\nvar _PAr = \"PrincipalArn\";\nvar _PAro = \"ProviderArn\";\nvar _PC = \"ProvidedContexts\";\nvar _PI = \"ProviderId\";\nvar _PPS = \"PackedPolicySize\";\nvar _Pr = \"Provider\";\nvar _RA = \"RoleArn\";\nvar _RSN = \"RoleSessionName\";\nvar _S = \"Subject\";\nvar _SAK = \"SecretAccessKey\";\nvar _SAMLA = \"SAMLAssertion\";\nvar _SFWIT = \"SubjectFromWebIdentityToken\";\nvar _SI = \"SourceIdentity\";\nvar _SN = \"SerialNumber\";\nvar _ST = \"SubjectType\";\nvar _STe = \"SessionToken\";\nvar _T = \"Tags\";\nvar _TC = \"TokenCode\";\nvar _TTK = \"TransitiveTagKeys\";\nvar _UI = \"UserId\";\nvar _V = \"Version\";\nvar _Va = \"Value\";\nvar _WIT = \"WebIdentityToken\";\nvar _a = \"arn\";\nvar _m = \"message\";\nvar buildFormUrlencodedString = /* @__PURE__ */ __name((formEntries) => Object.entries(formEntries).map(([key, value]) => (0, import_smithy_client.extendedEncodeURIComponent)(key) + \"=\" + (0, import_smithy_client.extendedEncodeURIComponent)(value)).join(\"&\"), \"buildFormUrlencodedString\");\nvar loadQueryErrorCode = /* @__PURE__ */ __name((output, data) => {\n var _a2;\n if (((_a2 = data.Error) == null ? void 0 : _a2.Code) !== void 0) {\n return data.Error.Code;\n }\n if (output.statusCode == 404) {\n return \"NotFound\";\n }\n}, \"loadQueryErrorCode\");\n\n// src/commands/AssumeRoleCommand.ts\nvar _AssumeRoleCommand = class _AssumeRoleCommand extends import_smithy_client.Command.classBuilder().ep({\n ...import_EndpointParameters.commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"AssumeRole\", {}).n(\"STSClient\", \"AssumeRoleCommand\").f(void 0, AssumeRoleResponseFilterSensitiveLog).ser(se_AssumeRoleCommand).de(de_AssumeRoleCommand).build() {\n};\n__name(_AssumeRoleCommand, \"AssumeRoleCommand\");\nvar AssumeRoleCommand = _AssumeRoleCommand;\n\n// src/commands/AssumeRoleWithSAMLCommand.ts\n\n\n\n\nvar import_EndpointParameters2 = require(\"./endpoint/EndpointParameters\");\nvar _AssumeRoleWithSAMLCommand = class _AssumeRoleWithSAMLCommand extends import_smithy_client.Command.classBuilder().ep({\n ...import_EndpointParameters2.commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"AssumeRoleWithSAML\", {}).n(\"STSClient\", \"AssumeRoleWithSAMLCommand\").f(AssumeRoleWithSAMLRequestFilterSensitiveLog, AssumeRoleWithSAMLResponseFilterSensitiveLog).ser(se_AssumeRoleWithSAMLCommand).de(de_AssumeRoleWithSAMLCommand).build() {\n};\n__name(_AssumeRoleWithSAMLCommand, \"AssumeRoleWithSAMLCommand\");\nvar AssumeRoleWithSAMLCommand = _AssumeRoleWithSAMLCommand;\n\n// src/commands/AssumeRoleWithWebIdentityCommand.ts\n\n\n\n\nvar import_EndpointParameters3 = require(\"./endpoint/EndpointParameters\");\nvar _AssumeRoleWithWebIdentityCommand = class _AssumeRoleWithWebIdentityCommand extends import_smithy_client.Command.classBuilder().ep({\n ...import_EndpointParameters3.commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"AssumeRoleWithWebIdentity\", {}).n(\"STSClient\", \"AssumeRoleWithWebIdentityCommand\").f(AssumeRoleWithWebIdentityRequestFilterSensitiveLog, AssumeRoleWithWebIdentityResponseFilterSensitiveLog).ser(se_AssumeRoleWithWebIdentityCommand).de(de_AssumeRoleWithWebIdentityCommand).build() {\n};\n__name(_AssumeRoleWithWebIdentityCommand, \"AssumeRoleWithWebIdentityCommand\");\nvar AssumeRoleWithWebIdentityCommand = _AssumeRoleWithWebIdentityCommand;\n\n// src/commands/DecodeAuthorizationMessageCommand.ts\n\n\n\n\nvar import_EndpointParameters4 = require(\"./endpoint/EndpointParameters\");\nvar _DecodeAuthorizationMessageCommand = class _DecodeAuthorizationMessageCommand extends import_smithy_client.Command.classBuilder().ep({\n ...import_EndpointParameters4.commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"DecodeAuthorizationMessage\", {}).n(\"STSClient\", \"DecodeAuthorizationMessageCommand\").f(void 0, void 0).ser(se_DecodeAuthorizationMessageCommand).de(de_DecodeAuthorizationMessageCommand).build() {\n};\n__name(_DecodeAuthorizationMessageCommand, \"DecodeAuthorizationMessageCommand\");\nvar DecodeAuthorizationMessageCommand = _DecodeAuthorizationMessageCommand;\n\n// src/commands/GetAccessKeyInfoCommand.ts\n\n\n\n\nvar import_EndpointParameters5 = require(\"./endpoint/EndpointParameters\");\nvar _GetAccessKeyInfoCommand = class _GetAccessKeyInfoCommand extends import_smithy_client.Command.classBuilder().ep({\n ...import_EndpointParameters5.commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"GetAccessKeyInfo\", {}).n(\"STSClient\", \"GetAccessKeyInfoCommand\").f(void 0, void 0).ser(se_GetAccessKeyInfoCommand).de(de_GetAccessKeyInfoCommand).build() {\n};\n__name(_GetAccessKeyInfoCommand, \"GetAccessKeyInfoCommand\");\nvar GetAccessKeyInfoCommand = _GetAccessKeyInfoCommand;\n\n// src/commands/GetCallerIdentityCommand.ts\n\n\n\n\nvar import_EndpointParameters6 = require(\"./endpoint/EndpointParameters\");\nvar _GetCallerIdentityCommand = class _GetCallerIdentityCommand extends import_smithy_client.Command.classBuilder().ep({\n ...import_EndpointParameters6.commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"GetCallerIdentity\", {}).n(\"STSClient\", \"GetCallerIdentityCommand\").f(void 0, void 0).ser(se_GetCallerIdentityCommand).de(de_GetCallerIdentityCommand).build() {\n};\n__name(_GetCallerIdentityCommand, \"GetCallerIdentityCommand\");\nvar GetCallerIdentityCommand = _GetCallerIdentityCommand;\n\n// src/commands/GetFederationTokenCommand.ts\n\n\n\n\nvar import_EndpointParameters7 = require(\"./endpoint/EndpointParameters\");\nvar _GetFederationTokenCommand = class _GetFederationTokenCommand extends import_smithy_client.Command.classBuilder().ep({\n ...import_EndpointParameters7.commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"GetFederationToken\", {}).n(\"STSClient\", \"GetFederationTokenCommand\").f(void 0, GetFederationTokenResponseFilterSensitiveLog).ser(se_GetFederationTokenCommand).de(de_GetFederationTokenCommand).build() {\n};\n__name(_GetFederationTokenCommand, \"GetFederationTokenCommand\");\nvar GetFederationTokenCommand = _GetFederationTokenCommand;\n\n// src/commands/GetSessionTokenCommand.ts\n\n\n\n\nvar import_EndpointParameters8 = require(\"./endpoint/EndpointParameters\");\nvar _GetSessionTokenCommand = class _GetSessionTokenCommand extends import_smithy_client.Command.classBuilder().ep({\n ...import_EndpointParameters8.commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"GetSessionToken\", {}).n(\"STSClient\", \"GetSessionTokenCommand\").f(void 0, GetSessionTokenResponseFilterSensitiveLog).ser(se_GetSessionTokenCommand).de(de_GetSessionTokenCommand).build() {\n};\n__name(_GetSessionTokenCommand, \"GetSessionTokenCommand\");\nvar GetSessionTokenCommand = _GetSessionTokenCommand;\n\n// src/STS.ts\nvar import_STSClient = require(\"././STSClient\");\nvar commands = {\n AssumeRoleCommand,\n AssumeRoleWithSAMLCommand,\n AssumeRoleWithWebIdentityCommand,\n DecodeAuthorizationMessageCommand,\n GetAccessKeyInfoCommand,\n GetCallerIdentityCommand,\n GetFederationTokenCommand,\n GetSessionTokenCommand\n};\nvar _STS = class _STS extends import_STSClient.STSClient {\n};\n__name(_STS, \"STS\");\nvar STS = _STS;\n(0, import_smithy_client.createAggregatedClient)(commands, STS);\n\n// src/index.ts\nvar import_EndpointParameters9 = require(\"./endpoint/EndpointParameters\");\nvar import_runtimeExtensions = require(\"././runtimeExtensions\");\n\n// src/defaultStsRoleAssumers.ts\nvar ASSUME_ROLE_DEFAULT_REGION = \"us-east-1\";\nvar resolveRegion = /* @__PURE__ */ __name(async (_region, _parentRegion, credentialProviderLogger) => {\n var _a2;\n const region = typeof _region === \"function\" ? await _region() : _region;\n const parentRegion = typeof _parentRegion === \"function\" ? await _parentRegion() : _parentRegion;\n (_a2 = credentialProviderLogger == null ? void 0 : credentialProviderLogger.debug) == null ? void 0 : _a2.call(\n credentialProviderLogger,\n \"@aws-sdk/client-sts::resolveRegion\",\n \"accepting first of:\",\n `${region} (provider)`,\n `${parentRegion} (parent client)`,\n `${ASSUME_ROLE_DEFAULT_REGION} (STS default)`\n );\n return region ?? parentRegion ?? ASSUME_ROLE_DEFAULT_REGION;\n}, \"resolveRegion\");\nvar getDefaultRoleAssumer = /* @__PURE__ */ __name((stsOptions, stsClientCtor) => {\n let stsClient;\n let closureSourceCreds;\n return async (sourceCreds, params) => {\n var _a2, _b, _c;\n closureSourceCreds = sourceCreds;\n if (!stsClient) {\n const {\n logger = (_a2 = stsOptions == null ? void 0 : stsOptions.parentClientConfig) == null ? void 0 : _a2.logger,\n region,\n requestHandler = (_b = stsOptions == null ? void 0 : stsOptions.parentClientConfig) == null ? void 0 : _b.requestHandler,\n credentialProviderLogger\n } = stsOptions;\n const resolvedRegion = await resolveRegion(\n region,\n (_c = stsOptions == null ? void 0 : stsOptions.parentClientConfig) == null ? void 0 : _c.region,\n credentialProviderLogger\n );\n stsClient = new stsClientCtor({\n // A hack to make sts client uses the credential in current closure.\n credentialDefaultProvider: () => async () => closureSourceCreds,\n region: resolvedRegion,\n requestHandler,\n logger\n });\n }\n const { Credentials: Credentials2 } = await stsClient.send(new AssumeRoleCommand(params));\n if (!Credentials2 || !Credentials2.AccessKeyId || !Credentials2.SecretAccessKey) {\n throw new Error(`Invalid response from STS.assumeRole call with role ${params.RoleArn}`);\n }\n return {\n accessKeyId: Credentials2.AccessKeyId,\n secretAccessKey: Credentials2.SecretAccessKey,\n sessionToken: Credentials2.SessionToken,\n expiration: Credentials2.Expiration,\n // TODO(credentialScope): access normally when shape is updated.\n credentialScope: Credentials2.CredentialScope\n };\n };\n}, \"getDefaultRoleAssumer\");\nvar getDefaultRoleAssumerWithWebIdentity = /* @__PURE__ */ __name((stsOptions, stsClientCtor) => {\n let stsClient;\n return async (params) => {\n var _a2, _b, _c;\n if (!stsClient) {\n const {\n logger = (_a2 = stsOptions == null ? void 0 : stsOptions.parentClientConfig) == null ? void 0 : _a2.logger,\n region,\n requestHandler = (_b = stsOptions == null ? void 0 : stsOptions.parentClientConfig) == null ? void 0 : _b.requestHandler,\n credentialProviderLogger\n } = stsOptions;\n const resolvedRegion = await resolveRegion(\n region,\n (_c = stsOptions == null ? void 0 : stsOptions.parentClientConfig) == null ? void 0 : _c.region,\n credentialProviderLogger\n );\n stsClient = new stsClientCtor({\n region: resolvedRegion,\n requestHandler,\n logger\n });\n }\n const { Credentials: Credentials2 } = await stsClient.send(new AssumeRoleWithWebIdentityCommand(params));\n if (!Credentials2 || !Credentials2.AccessKeyId || !Credentials2.SecretAccessKey) {\n throw new Error(`Invalid response from STS.assumeRoleWithWebIdentity call with role ${params.RoleArn}`);\n }\n return {\n accessKeyId: Credentials2.AccessKeyId,\n secretAccessKey: Credentials2.SecretAccessKey,\n sessionToken: Credentials2.SessionToken,\n expiration: Credentials2.Expiration,\n // TODO(credentialScope): access normally when shape is updated.\n credentialScope: Credentials2.CredentialScope\n };\n };\n}, \"getDefaultRoleAssumerWithWebIdentity\");\n\n// src/defaultRoleAssumers.ts\nvar import_STSClient2 = require(\"././STSClient\");\nvar getCustomizableStsClientCtor = /* @__PURE__ */ __name((baseCtor, customizations) => {\n var _a2;\n if (!customizations)\n return baseCtor;\n else\n return _a2 = class extends baseCtor {\n constructor(config) {\n super(config);\n for (const customization of customizations) {\n this.middlewareStack.use(customization);\n }\n }\n }, __name(_a2, \"CustomizableSTSClient\"), _a2;\n}, \"getCustomizableStsClientCtor\");\nvar getDefaultRoleAssumer2 = /* @__PURE__ */ __name((stsOptions = {}, stsPlugins) => getDefaultRoleAssumer(stsOptions, getCustomizableStsClientCtor(import_STSClient2.STSClient, stsPlugins)), \"getDefaultRoleAssumer\");\nvar getDefaultRoleAssumerWithWebIdentity2 = /* @__PURE__ */ __name((stsOptions = {}, stsPlugins) => getDefaultRoleAssumerWithWebIdentity(stsOptions, getCustomizableStsClientCtor(import_STSClient2.STSClient, stsPlugins)), \"getDefaultRoleAssumerWithWebIdentity\");\nvar decorateDefaultCredentialProvider = /* @__PURE__ */ __name((provider) => (input) => provider({\n roleAssumer: getDefaultRoleAssumer2(input),\n roleAssumerWithWebIdentity: getDefaultRoleAssumerWithWebIdentity2(input),\n ...input\n}), \"decorateDefaultCredentialProvider\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n STSServiceException,\n __Client,\n STSClient,\n STS,\n $Command,\n AssumeRoleCommand,\n AssumeRoleWithSAMLCommand,\n AssumeRoleWithWebIdentityCommand,\n DecodeAuthorizationMessageCommand,\n GetAccessKeyInfoCommand,\n GetCallerIdentityCommand,\n GetFederationTokenCommand,\n GetSessionTokenCommand,\n ExpiredTokenException,\n MalformedPolicyDocumentException,\n PackedPolicyTooLargeException,\n RegionDisabledException,\n IDPRejectedClaimException,\n InvalidIdentityTokenException,\n IDPCommunicationErrorException,\n InvalidAuthorizationMessageException,\n CredentialsFilterSensitiveLog,\n AssumeRoleResponseFilterSensitiveLog,\n AssumeRoleWithSAMLRequestFilterSensitiveLog,\n AssumeRoleWithSAMLResponseFilterSensitiveLog,\n AssumeRoleWithWebIdentityRequestFilterSensitiveLog,\n AssumeRoleWithWebIdentityResponseFilterSensitiveLog,\n GetFederationTokenResponseFilterSensitiveLog,\n GetSessionTokenResponseFilterSensitiveLog,\n getDefaultRoleAssumer,\n getDefaultRoleAssumerWithWebIdentity,\n decorateDefaultCredentialProvider\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst tslib_1 = require(\"tslib\");\nconst package_json_1 = tslib_1.__importDefault(require(\"../package.json\"));\nconst credentialDefaultProvider_1 = require(\"./credentialDefaultProvider\");\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_user_agent_node_1 = require(\"@aws-sdk/util-user-agent-node\");\nconst config_resolver_1 = require(\"@smithy/config-resolver\");\nconst core_2 = require(\"@smithy/core\");\nconst hash_node_1 = require(\"@smithy/hash-node\");\nconst middleware_retry_1 = require(\"@smithy/middleware-retry\");\nconst node_config_provider_1 = require(\"@smithy/node-config-provider\");\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst util_body_length_node_1 = require(\"@smithy/util-body-length-node\");\nconst util_retry_1 = require(\"@smithy/util-retry\");\nconst runtimeConfig_shared_1 = require(\"./runtimeConfig.shared\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst util_defaults_mode_node_1 = require(\"@smithy/util-defaults-mode-node\");\nconst smithy_client_2 = require(\"@smithy/smithy-client\");\nconst getRuntimeConfig = (config) => {\n (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version);\n const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config);\n const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode);\n const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config);\n (0, core_1.emitWarningIfUnsupportedVersion)(process.version);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength,\n credentialDefaultProvider: config?.credentialDefaultProvider ?? credentialDefaultProvider_1.defaultProvider,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }),\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\") ||\n (async (idProps) => await (0, credentialDefaultProvider_1.defaultProvider)(idProps?.__config || {})()),\n signer: new core_1.AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new core_2.NoAuthSigner(),\n },\n ],\n maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS),\n region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS),\n requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n (0, node_config_provider_1.loadConfig)({\n ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE,\n }),\n sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, \"sha256\"),\n streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS),\n useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS),\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst core_2 = require(\"@smithy/core\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst url_parser_1 = require(\"@smithy/url-parser\");\nconst util_base64_1 = require(\"@smithy/util-base64\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst httpAuthSchemeProvider_1 = require(\"./auth/httpAuthSchemeProvider\");\nconst endpointResolver_1 = require(\"./endpoint/endpointResolver\");\nconst getRuntimeConfig = (config) => {\n return {\n apiVersion: \"2011-06-15\",\n base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64,\n base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultSTSHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new core_1.AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new core_2.NoAuthSigner(),\n },\n ],\n logger: config?.logger ?? new smithy_client_1.NoOpLogger(),\n serviceId: config?.serviceId ?? \"STS\",\n urlParser: config?.urlParser ?? url_parser_1.parseUrl,\n utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8,\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveRuntimeExtensions = void 0;\nconst region_config_resolver_1 = require(\"@aws-sdk/region-config-resolver\");\nconst protocol_http_1 = require(\"@smithy/protocol-http\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst httpAuthExtensionConfiguration_1 = require(\"./auth/httpAuthExtensionConfiguration\");\nconst asPartial = (t) => t;\nconst resolveRuntimeExtensions = (runtimeConfig, extensions) => {\n const extensionConfiguration = {\n ...asPartial((0, region_config_resolver_1.getAwsRegionExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, smithy_client_1.getDefaultExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, protocol_http_1.getHttpHandlerExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, httpAuthExtensionConfiguration_1.getHttpAuthExtensionConfiguration)(runtimeConfig)),\n };\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return {\n ...runtimeConfig,\n ...(0, region_config_resolver_1.resolveAwsRegionExtensionConfiguration)(extensionConfiguration),\n ...(0, smithy_client_1.resolveDefaultRuntimeConfig)(extensionConfiguration),\n ...(0, protocol_http_1.resolveHttpHandlerRuntimeConfig)(extensionConfiguration),\n ...(0, httpAuthExtensionConfiguration_1.resolveHttpAuthRuntimeConfig)(extensionConfiguration),\n };\n};\nexports.resolveRuntimeExtensions = resolveRuntimeExtensions;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AWSSDKSigV4Signer: () => AWSSDKSigV4Signer,\n AwsSdkSigV4Signer: () => AwsSdkSigV4Signer,\n _toBool: () => _toBool,\n _toNum: () => _toNum,\n _toStr: () => _toStr,\n awsExpectUnion: () => awsExpectUnion,\n emitWarningIfUnsupportedVersion: () => emitWarningIfUnsupportedVersion,\n loadRestJsonErrorCode: () => loadRestJsonErrorCode,\n loadRestXmlErrorCode: () => loadRestXmlErrorCode,\n parseJsonBody: () => parseJsonBody,\n parseJsonErrorBody: () => parseJsonErrorBody,\n parseXmlBody: () => parseXmlBody,\n parseXmlErrorBody: () => parseXmlErrorBody,\n resolveAWSSDKSigV4Config: () => resolveAWSSDKSigV4Config,\n resolveAwsSdkSigV4Config: () => resolveAwsSdkSigV4Config\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/client/emitWarningIfUnsupportedVersion.ts\nvar warningEmitted = false;\nvar emitWarningIfUnsupportedVersion = /* @__PURE__ */ __name((version) => {\n if (version && !warningEmitted && parseInt(version.substring(1, version.indexOf(\".\"))) < 16) {\n warningEmitted = true;\n process.emitWarning(\n `NodeDeprecationWarning: The AWS SDK for JavaScript (v3) will\nno longer support Node.js 14.x on May 1, 2024.\n\nTo continue receiving updates to AWS services, bug fixes, and security\nupdates please upgrade to an active Node.js LTS version.\n\nMore information can be found at: https://a.co/dzr2AJd`\n );\n }\n}, \"emitWarningIfUnsupportedVersion\");\n\n// src/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.ts\n\n\n// src/httpAuthSchemes/utils/getDateHeader.ts\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar getDateHeader = /* @__PURE__ */ __name((response) => {\n var _a, _b;\n return import_protocol_http.HttpResponse.isInstance(response) ? ((_a = response.headers) == null ? void 0 : _a.date) ?? ((_b = response.headers) == null ? void 0 : _b.Date) : void 0;\n}, \"getDateHeader\");\n\n// src/httpAuthSchemes/utils/getSkewCorrectedDate.ts\nvar getSkewCorrectedDate = /* @__PURE__ */ __name((systemClockOffset) => new Date(Date.now() + systemClockOffset), \"getSkewCorrectedDate\");\n\n// src/httpAuthSchemes/utils/isClockSkewed.ts\nvar isClockSkewed = /* @__PURE__ */ __name((clockTime, systemClockOffset) => Math.abs(getSkewCorrectedDate(systemClockOffset).getTime() - clockTime) >= 3e5, \"isClockSkewed\");\n\n// src/httpAuthSchemes/utils/getUpdatedSystemClockOffset.ts\nvar getUpdatedSystemClockOffset = /* @__PURE__ */ __name((clockTime, currentSystemClockOffset) => {\n const clockTimeInMs = Date.parse(clockTime);\n if (isClockSkewed(clockTimeInMs, currentSystemClockOffset)) {\n return clockTimeInMs - Date.now();\n }\n return currentSystemClockOffset;\n}, \"getUpdatedSystemClockOffset\");\n\n// src/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.ts\nvar throwSigningPropertyError = /* @__PURE__ */ __name((name, property) => {\n if (!property) {\n throw new Error(`Property \\`${name}\\` is not resolved for AWS SDK SigV4Auth`);\n }\n return property;\n}, \"throwSigningPropertyError\");\nvar validateSigningProperties = /* @__PURE__ */ __name(async (signingProperties) => {\n var _a, _b, _c;\n const context = throwSigningPropertyError(\n \"context\",\n signingProperties.context\n );\n const config = throwSigningPropertyError(\"config\", signingProperties.config);\n const authScheme = (_c = (_b = (_a = context.endpointV2) == null ? void 0 : _a.properties) == null ? void 0 : _b.authSchemes) == null ? void 0 : _c[0];\n const signerFunction = throwSigningPropertyError(\n \"signer\",\n config.signer\n );\n const signer = await signerFunction(authScheme);\n const signingRegion = signingProperties == null ? void 0 : signingProperties.signingRegion;\n const signingName = signingProperties == null ? void 0 : signingProperties.signingName;\n return {\n config,\n signer,\n signingRegion,\n signingName\n };\n}, \"validateSigningProperties\");\nvar _AwsSdkSigV4Signer = class _AwsSdkSigV4Signer {\n async sign(httpRequest, identity, signingProperties) {\n if (!import_protocol_http.HttpRequest.isInstance(httpRequest)) {\n throw new Error(\"The request is not an instance of `HttpRequest` and cannot be signed\");\n }\n const { config, signer, signingRegion, signingName } = await validateSigningProperties(signingProperties);\n const signedRequest = await signer.sign(httpRequest, {\n signingDate: getSkewCorrectedDate(config.systemClockOffset),\n signingRegion,\n signingService: signingName\n });\n return signedRequest;\n }\n errorHandler(signingProperties) {\n return (error) => {\n const serverTime = error.ServerTime ?? getDateHeader(error.$response);\n if (serverTime) {\n const config = throwSigningPropertyError(\"config\", signingProperties.config);\n const initialSystemClockOffset = config.systemClockOffset;\n config.systemClockOffset = getUpdatedSystemClockOffset(serverTime, config.systemClockOffset);\n const clockSkewCorrected = config.systemClockOffset !== initialSystemClockOffset;\n if (clockSkewCorrected && error.$metadata) {\n error.$metadata.clockSkewCorrected = true;\n }\n }\n throw error;\n };\n }\n successHandler(httpResponse, signingProperties) {\n const dateHeader = getDateHeader(httpResponse);\n if (dateHeader) {\n const config = throwSigningPropertyError(\"config\", signingProperties.config);\n config.systemClockOffset = getUpdatedSystemClockOffset(dateHeader, config.systemClockOffset);\n }\n }\n};\n__name(_AwsSdkSigV4Signer, \"AwsSdkSigV4Signer\");\nvar AwsSdkSigV4Signer = _AwsSdkSigV4Signer;\nvar AWSSDKSigV4Signer = AwsSdkSigV4Signer;\n\n// src/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.ts\nvar import_core = require(\"@smithy/core\");\nvar import_signature_v4 = require(\"@smithy/signature-v4\");\nvar resolveAwsSdkSigV4Config = /* @__PURE__ */ __name((config) => {\n let normalizedCreds;\n if (config.credentials) {\n normalizedCreds = (0, import_core.memoizeIdentityProvider)(config.credentials, import_core.isIdentityExpired, import_core.doesIdentityRequireRefresh);\n }\n if (!normalizedCreds) {\n if (config.credentialDefaultProvider) {\n normalizedCreds = (0, import_core.normalizeProvider)(\n config.credentialDefaultProvider(\n Object.assign({}, config, {\n parentClientConfig: config\n })\n )\n );\n } else {\n normalizedCreds = /* @__PURE__ */ __name(async () => {\n throw new Error(\"`credentials` is missing\");\n }, \"normalizedCreds\");\n }\n }\n const {\n // Default for signingEscapePath\n signingEscapePath = true,\n // Default for systemClockOffset\n systemClockOffset = config.systemClockOffset || 0,\n // No default for sha256 since it is platform dependent\n sha256\n } = config;\n let signer;\n if (config.signer) {\n signer = (0, import_core.normalizeProvider)(config.signer);\n } else if (config.regionInfoProvider) {\n signer = /* @__PURE__ */ __name(() => (0, import_core.normalizeProvider)(config.region)().then(\n async (region) => [\n await config.regionInfoProvider(region, {\n useFipsEndpoint: await config.useFipsEndpoint(),\n useDualstackEndpoint: await config.useDualstackEndpoint()\n }) || {},\n region\n ]\n ).then(([regionInfo, region]) => {\n const { signingRegion, signingService } = regionInfo;\n config.signingRegion = config.signingRegion || signingRegion || region;\n config.signingName = config.signingName || signingService || config.serviceId;\n const params = {\n ...config,\n credentials: normalizedCreds,\n region: config.signingRegion,\n service: config.signingName,\n sha256,\n uriEscapePath: signingEscapePath\n };\n const SignerCtor = config.signerConstructor || import_signature_v4.SignatureV4;\n return new SignerCtor(params);\n }), \"signer\");\n } else {\n signer = /* @__PURE__ */ __name(async (authScheme) => {\n authScheme = Object.assign(\n {},\n {\n name: \"sigv4\",\n signingName: config.signingName || config.defaultSigningName,\n signingRegion: await (0, import_core.normalizeProvider)(config.region)(),\n properties: {}\n },\n authScheme\n );\n const signingRegion = authScheme.signingRegion;\n const signingService = authScheme.signingName;\n config.signingRegion = config.signingRegion || signingRegion;\n config.signingName = config.signingName || signingService || config.serviceId;\n const params = {\n ...config,\n credentials: normalizedCreds,\n region: config.signingRegion,\n service: config.signingName,\n sha256,\n uriEscapePath: signingEscapePath\n };\n const SignerCtor = config.signerConstructor || import_signature_v4.SignatureV4;\n return new SignerCtor(params);\n }, \"signer\");\n }\n return {\n ...config,\n systemClockOffset,\n signingEscapePath,\n credentials: normalizedCreds,\n signer\n };\n}, \"resolveAwsSdkSigV4Config\");\nvar resolveAWSSDKSigV4Config = resolveAwsSdkSigV4Config;\n\n// src/protocols/coercing-serializers.ts\nvar _toStr = /* @__PURE__ */ __name((val) => {\n if (val == null) {\n return val;\n }\n if (typeof val === \"number\" || typeof val === \"bigint\") {\n const warning = new Error(`Received number ${val} where a string was expected.`);\n warning.name = \"Warning\";\n console.warn(warning);\n return String(val);\n }\n if (typeof val === \"boolean\") {\n const warning = new Error(`Received boolean ${val} where a string was expected.`);\n warning.name = \"Warning\";\n console.warn(warning);\n return String(val);\n }\n return val;\n}, \"_toStr\");\nvar _toBool = /* @__PURE__ */ __name((val) => {\n if (val == null) {\n return val;\n }\n if (typeof val === \"number\") {\n }\n if (typeof val === \"string\") {\n const lowercase = val.toLowerCase();\n if (val !== \"\" && lowercase !== \"false\" && lowercase !== \"true\") {\n const warning = new Error(`Received string \"${val}\" where a boolean was expected.`);\n warning.name = \"Warning\";\n console.warn(warning);\n }\n return val !== \"\" && lowercase !== \"false\";\n }\n return val;\n}, \"_toBool\");\nvar _toNum = /* @__PURE__ */ __name((val) => {\n if (val == null) {\n return val;\n }\n if (typeof val === \"boolean\") {\n }\n if (typeof val === \"string\") {\n const num = Number(val);\n if (num.toString() !== val) {\n const warning = new Error(`Received string \"${val}\" where a number was expected.`);\n warning.name = \"Warning\";\n console.warn(warning);\n return val;\n }\n return num;\n }\n return val;\n}, \"_toNum\");\n\n// src/protocols/json/awsExpectUnion.ts\nvar import_smithy_client = require(\"@smithy/smithy-client\");\nvar awsExpectUnion = /* @__PURE__ */ __name((value) => {\n if (value == null) {\n return void 0;\n }\n if (typeof value === \"object\" && \"__type\" in value) {\n delete value.__type;\n }\n return (0, import_smithy_client.expectUnion)(value);\n}, \"awsExpectUnion\");\n\n// src/protocols/common.ts\n\nvar collectBodyString = /* @__PURE__ */ __name((streamBody, context) => (0, import_smithy_client.collectBody)(streamBody, context).then((body) => context.utf8Encoder(body)), \"collectBodyString\");\n\n// src/protocols/json/parseJsonBody.ts\nvar parseJsonBody = /* @__PURE__ */ __name((streamBody, context) => collectBodyString(streamBody, context).then((encoded) => {\n if (encoded.length) {\n try {\n return JSON.parse(encoded);\n } catch (e) {\n if ((e == null ? void 0 : e.name) === \"SyntaxError\") {\n Object.defineProperty(e, \"$responseBodyText\", {\n value: encoded\n });\n }\n throw e;\n }\n }\n return {};\n}), \"parseJsonBody\");\nvar parseJsonErrorBody = /* @__PURE__ */ __name(async (errorBody, context) => {\n const value = await parseJsonBody(errorBody, context);\n value.message = value.message ?? value.Message;\n return value;\n}, \"parseJsonErrorBody\");\nvar loadRestJsonErrorCode = /* @__PURE__ */ __name((output, data) => {\n const findKey = /* @__PURE__ */ __name((object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase()), \"findKey\");\n const sanitizeErrorCode = /* @__PURE__ */ __name((rawValue) => {\n let cleanValue = rawValue;\n if (typeof cleanValue === \"number\") {\n cleanValue = cleanValue.toString();\n }\n if (cleanValue.indexOf(\",\") >= 0) {\n cleanValue = cleanValue.split(\",\")[0];\n }\n if (cleanValue.indexOf(\":\") >= 0) {\n cleanValue = cleanValue.split(\":\")[0];\n }\n if (cleanValue.indexOf(\"#\") >= 0) {\n cleanValue = cleanValue.split(\"#\")[1];\n }\n return cleanValue;\n }, \"sanitizeErrorCode\");\n const headerKey = findKey(output.headers, \"x-amzn-errortype\");\n if (headerKey !== void 0) {\n return sanitizeErrorCode(output.headers[headerKey]);\n }\n if (data.code !== void 0) {\n return sanitizeErrorCode(data.code);\n }\n if (data[\"__type\"] !== void 0) {\n return sanitizeErrorCode(data[\"__type\"]);\n }\n}, \"loadRestJsonErrorCode\");\n\n// src/protocols/xml/parseXmlBody.ts\n\nvar import_fast_xml_parser = require(\"fast-xml-parser\");\nvar parseXmlBody = /* @__PURE__ */ __name((streamBody, context) => collectBodyString(streamBody, context).then((encoded) => {\n if (encoded.length) {\n const parser = new import_fast_xml_parser.XMLParser({\n attributeNamePrefix: \"\",\n htmlEntities: true,\n ignoreAttributes: false,\n ignoreDeclaration: true,\n parseTagValue: false,\n trimValues: false,\n tagValueProcessor: (_, val) => val.trim() === \"\" && val.includes(\"\\n\") ? \"\" : void 0\n });\n parser.addEntity(\"#xD\", \"\\r\");\n parser.addEntity(\"#10\", \"\\n\");\n let parsedObj;\n try {\n parsedObj = parser.parse(encoded, true);\n } catch (e) {\n if (e && typeof e === \"object\") {\n Object.defineProperty(e, \"$responseBodyText\", {\n value: encoded\n });\n }\n throw e;\n }\n const textNodeName = \"#text\";\n const key = Object.keys(parsedObj)[0];\n const parsedObjToReturn = parsedObj[key];\n if (parsedObjToReturn[textNodeName]) {\n parsedObjToReturn[key] = parsedObjToReturn[textNodeName];\n delete parsedObjToReturn[textNodeName];\n }\n return (0, import_smithy_client.getValueFromTextNode)(parsedObjToReturn);\n }\n return {};\n}), \"parseXmlBody\");\nvar parseXmlErrorBody = /* @__PURE__ */ __name(async (errorBody, context) => {\n const value = await parseXmlBody(errorBody, context);\n if (value.Error) {\n value.Error.message = value.Error.message ?? value.Error.Message;\n }\n return value;\n}, \"parseXmlErrorBody\");\nvar loadRestXmlErrorCode = /* @__PURE__ */ __name((output, data) => {\n var _a;\n if (((_a = data == null ? void 0 : data.Error) == null ? void 0 : _a.Code) !== void 0) {\n return data.Error.Code;\n }\n if ((data == null ? void 0 : data.Code) !== void 0) {\n return data.Code;\n }\n if (output.statusCode == 404) {\n return \"NotFound\";\n }\n}, \"loadRestXmlErrorCode\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n emitWarningIfUnsupportedVersion,\n AwsSdkSigV4Signer,\n AWSSDKSigV4Signer,\n resolveAwsSdkSigV4Config,\n resolveAWSSDKSigV4Config,\n _toStr,\n _toBool,\n _toNum,\n awsExpectUnion,\n parseJsonBody,\n parseJsonErrorBody,\n loadRestJsonErrorCode,\n parseXmlBody,\n parseXmlErrorBody,\n loadRestXmlErrorCode\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/loadCognitoIdentity.ts\nvar loadCognitoIdentity_exports = {};\n__export(loadCognitoIdentity_exports, {\n CognitoIdentityClient: () => import_client_cognito_identity.CognitoIdentityClient,\n GetCredentialsForIdentityCommand: () => import_client_cognito_identity.GetCredentialsForIdentityCommand,\n GetIdCommand: () => import_client_cognito_identity.GetIdCommand\n});\nvar import_client_cognito_identity;\nvar init_loadCognitoIdentity = __esm({\n \"src/loadCognitoIdentity.ts\"() {\n import_client_cognito_identity = require(\"@aws-sdk/client-cognito-identity\");\n }\n});\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromCognitoIdentity: () => fromCognitoIdentity,\n fromCognitoIdentityPool: () => fromCognitoIdentityPool\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromCognitoIdentity.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\n\n// src/resolveLogins.ts\nfunction resolveLogins(logins) {\n return Promise.all(\n Object.keys(logins).reduce((arr, name) => {\n const tokenOrProvider = logins[name];\n if (typeof tokenOrProvider === \"string\") {\n arr.push([name, tokenOrProvider]);\n } else {\n arr.push(tokenOrProvider().then((token) => [name, token]));\n }\n return arr;\n }, [])\n ).then(\n (resolvedPairs) => resolvedPairs.reduce((logins2, [key, value]) => {\n logins2[key] = value;\n return logins2;\n }, {})\n );\n}\n__name(resolveLogins, \"resolveLogins\");\n\n// src/fromCognitoIdentity.ts\nfunction fromCognitoIdentity(parameters) {\n return async () => {\n var _a, _b, _c;\n (_a = parameters.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-cognito-identity\", \"fromCognitoIdentity\");\n const { GetCredentialsForIdentityCommand: GetCredentialsForIdentityCommand2, CognitoIdentityClient: CognitoIdentityClient2 } = await Promise.resolve().then(() => (init_loadCognitoIdentity(), loadCognitoIdentity_exports));\n const {\n Credentials: {\n AccessKeyId = throwOnMissingAccessKeyId(),\n Expiration,\n SecretKey = throwOnMissingSecretKey(),\n SessionToken\n } = throwOnMissingCredentials()\n } = await (parameters.client ?? new CognitoIdentityClient2(\n Object.assign({}, parameters.clientConfig ?? {}, {\n region: ((_b = parameters.clientConfig) == null ? void 0 : _b.region) ?? ((_c = parameters.parentClientConfig) == null ? void 0 : _c.region)\n })\n )).send(\n new GetCredentialsForIdentityCommand2({\n CustomRoleArn: parameters.customRoleArn,\n IdentityId: parameters.identityId,\n Logins: parameters.logins ? await resolveLogins(parameters.logins) : void 0\n })\n );\n return {\n identityId: parameters.identityId,\n accessKeyId: AccessKeyId,\n secretAccessKey: SecretKey,\n sessionToken: SessionToken,\n expiration: Expiration\n };\n };\n}\n__name(fromCognitoIdentity, \"fromCognitoIdentity\");\nfunction throwOnMissingAccessKeyId() {\n throw new import_property_provider.CredentialsProviderError(\"Response from Amazon Cognito contained no access key ID\");\n}\n__name(throwOnMissingAccessKeyId, \"throwOnMissingAccessKeyId\");\nfunction throwOnMissingCredentials() {\n throw new import_property_provider.CredentialsProviderError(\"Response from Amazon Cognito contained no credentials\");\n}\n__name(throwOnMissingCredentials, \"throwOnMissingCredentials\");\nfunction throwOnMissingSecretKey() {\n throw new import_property_provider.CredentialsProviderError(\"Response from Amazon Cognito contained no secret key\");\n}\n__name(throwOnMissingSecretKey, \"throwOnMissingSecretKey\");\n\n// src/fromCognitoIdentityPool.ts\n\n\n// src/IndexedDbStorage.ts\nvar STORE_NAME = \"IdentityIds\";\nvar _IndexedDbStorage = class _IndexedDbStorage {\n constructor(dbName = \"aws:cognito-identity-ids\") {\n this.dbName = dbName;\n }\n getItem(key) {\n return this.withObjectStore(\"readonly\", (store) => {\n const req = store.get(key);\n return new Promise((resolve) => {\n req.onerror = () => resolve(null);\n req.onsuccess = () => resolve(req.result ? req.result.value : null);\n });\n }).catch(() => null);\n }\n removeItem(key) {\n return this.withObjectStore(\"readwrite\", (store) => {\n const req = store.delete(key);\n return new Promise((resolve, reject) => {\n req.onerror = () => reject(req.error);\n req.onsuccess = () => resolve();\n });\n });\n }\n setItem(id, value) {\n return this.withObjectStore(\"readwrite\", (store) => {\n const req = store.put({ id, value });\n return new Promise((resolve, reject) => {\n req.onerror = () => reject(req.error);\n req.onsuccess = () => resolve();\n });\n });\n }\n getDb() {\n const openDbRequest = self.indexedDB.open(this.dbName, 1);\n return new Promise((resolve, reject) => {\n openDbRequest.onsuccess = () => {\n resolve(openDbRequest.result);\n };\n openDbRequest.onerror = () => {\n reject(openDbRequest.error);\n };\n openDbRequest.onblocked = () => {\n reject(new Error(\"Unable to access DB\"));\n };\n openDbRequest.onupgradeneeded = () => {\n const db = openDbRequest.result;\n db.onerror = () => {\n reject(new Error(\"Failed to create object store\"));\n };\n db.createObjectStore(STORE_NAME, { keyPath: \"id\" });\n };\n });\n }\n withObjectStore(mode, action) {\n return this.getDb().then((db) => {\n const tx = db.transaction(STORE_NAME, mode);\n tx.oncomplete = () => db.close();\n return new Promise((resolve, reject) => {\n tx.onerror = () => reject(tx.error);\n resolve(action(tx.objectStore(STORE_NAME)));\n }).catch((err) => {\n db.close();\n throw err;\n });\n });\n }\n};\n__name(_IndexedDbStorage, \"IndexedDbStorage\");\nvar IndexedDbStorage = _IndexedDbStorage;\n\n// src/InMemoryStorage.ts\nvar _InMemoryStorage = class _InMemoryStorage {\n constructor(store = {}) {\n this.store = store;\n }\n getItem(key) {\n if (key in this.store) {\n return this.store[key];\n }\n return null;\n }\n removeItem(key) {\n delete this.store[key];\n }\n setItem(key, value) {\n this.store[key] = value;\n }\n};\n__name(_InMemoryStorage, \"InMemoryStorage\");\nvar InMemoryStorage = _InMemoryStorage;\n\n// src/localStorage.ts\nvar inMemoryStorage = new InMemoryStorage();\nfunction localStorage() {\n if (typeof self === \"object\" && self.indexedDB) {\n return new IndexedDbStorage();\n }\n if (typeof window === \"object\" && window.localStorage) {\n return window.localStorage;\n }\n return inMemoryStorage;\n}\n__name(localStorage, \"localStorage\");\n\n// src/fromCognitoIdentityPool.ts\nfunction fromCognitoIdentityPool({\n accountId,\n cache = localStorage(),\n client,\n clientConfig,\n customRoleArn,\n identityPoolId,\n logins,\n userIdentifier = !logins || Object.keys(logins).length === 0 ? \"ANONYMOUS\" : void 0,\n logger,\n parentClientConfig\n}) {\n logger == null ? void 0 : logger.debug(\"@aws-sdk/credential-provider-cognito-identity\", \"fromCognitoIdentity\");\n const cacheKey = userIdentifier ? `aws:cognito-identity-credentials:${identityPoolId}:${userIdentifier}` : void 0;\n let provider = /* @__PURE__ */ __name(async () => {\n const { GetIdCommand: GetIdCommand2, CognitoIdentityClient: CognitoIdentityClient2 } = await Promise.resolve().then(() => (init_loadCognitoIdentity(), loadCognitoIdentity_exports));\n const _client = client ?? new CognitoIdentityClient2(\n Object.assign({}, clientConfig ?? {}, { region: (clientConfig == null ? void 0 : clientConfig.region) ?? (parentClientConfig == null ? void 0 : parentClientConfig.region) })\n );\n let identityId = cacheKey && await cache.getItem(cacheKey);\n if (!identityId) {\n const { IdentityId = throwOnMissingId() } = await _client.send(\n new GetIdCommand2({\n AccountId: accountId,\n IdentityPoolId: identityPoolId,\n Logins: logins ? await resolveLogins(logins) : void 0\n })\n );\n identityId = IdentityId;\n if (cacheKey) {\n Promise.resolve(cache.setItem(cacheKey, identityId)).catch(() => {\n });\n }\n }\n provider = fromCognitoIdentity({\n client: _client,\n customRoleArn,\n logins,\n identityId\n });\n return provider();\n }, \"provider\");\n return () => provider().catch(async (err) => {\n if (cacheKey) {\n Promise.resolve(cache.removeItem(cacheKey)).catch(() => {\n });\n }\n throw err;\n });\n}\n__name(fromCognitoIdentityPool, \"fromCognitoIdentityPool\");\nfunction throwOnMissingId() {\n throw new import_property_provider.CredentialsProviderError(\"Response from Amazon Cognito contained no identity ID\");\n}\n__name(throwOnMissingId, \"throwOnMissingId\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromCognitoIdentity,\n fromCognitoIdentityPool\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n ENV_CREDENTIAL_SCOPE: () => ENV_CREDENTIAL_SCOPE,\n ENV_EXPIRATION: () => ENV_EXPIRATION,\n ENV_KEY: () => ENV_KEY,\n ENV_SECRET: () => ENV_SECRET,\n ENV_SESSION: () => ENV_SESSION,\n fromEnv: () => fromEnv\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromEnv.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar ENV_KEY = \"AWS_ACCESS_KEY_ID\";\nvar ENV_SECRET = \"AWS_SECRET_ACCESS_KEY\";\nvar ENV_SESSION = \"AWS_SESSION_TOKEN\";\nvar ENV_EXPIRATION = \"AWS_CREDENTIAL_EXPIRATION\";\nvar ENV_CREDENTIAL_SCOPE = \"AWS_CREDENTIAL_SCOPE\";\nvar fromEnv = /* @__PURE__ */ __name((init) => async () => {\n var _a;\n (_a = init == null ? void 0 : init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-env\", \"fromEnv\");\n const accessKeyId = process.env[ENV_KEY];\n const secretAccessKey = process.env[ENV_SECRET];\n const sessionToken = process.env[ENV_SESSION];\n const expiry = process.env[ENV_EXPIRATION];\n const credentialScope = process.env[ENV_CREDENTIAL_SCOPE];\n if (accessKeyId && secretAccessKey) {\n return {\n accessKeyId,\n secretAccessKey,\n ...sessionToken && { sessionToken },\n ...expiry && { expiration: new Date(expiry) },\n ...credentialScope && { credentialScope }\n };\n }\n throw new import_property_provider.CredentialsProviderError(\"Unable to find environment variable credentials.\");\n}, \"fromEnv\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n ENV_KEY,\n ENV_SECRET,\n ENV_SESSION,\n ENV_EXPIRATION,\n ENV_CREDENTIAL_SCOPE,\n fromEnv\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkUrl = void 0;\nconst property_provider_1 = require(\"@smithy/property-provider\");\nconst LOOPBACK_CIDR_IPv4 = \"127.0.0.0/8\";\nconst LOOPBACK_CIDR_IPv6 = \"::1/128\";\nconst ECS_CONTAINER_HOST = \"169.254.170.2\";\nconst EKS_CONTAINER_HOST_IPv4 = \"169.254.170.23\";\nconst EKS_CONTAINER_HOST_IPv6 = \"[fd00:ec2::23]\";\nconst checkUrl = (url) => {\n if (url.protocol === \"https:\") {\n return;\n }\n if (url.hostname === ECS_CONTAINER_HOST ||\n url.hostname === EKS_CONTAINER_HOST_IPv4 ||\n url.hostname === EKS_CONTAINER_HOST_IPv6) {\n return;\n }\n if (url.hostname.includes(\"[\")) {\n if (url.hostname === \"[::1]\" || url.hostname === \"[0000:0000:0000:0000:0000:0000:0000:0001]\") {\n return;\n }\n }\n else {\n if (url.hostname === \"localhost\") {\n return;\n }\n const ipComponents = url.hostname.split(\".\");\n const inRange = (component) => {\n const num = parseInt(component, 10);\n return 0 <= num && num <= 255;\n };\n if (ipComponents[0] === \"127\" &&\n inRange(ipComponents[1]) &&\n inRange(ipComponents[2]) &&\n inRange(ipComponents[3]) &&\n ipComponents.length === 4) {\n return;\n }\n }\n throw new property_provider_1.CredentialsProviderError(`URL not accepted. It must either be HTTPS or match one of the following:\n - loopback CIDR 127.0.0.0/8 or [::1/128]\n - ECS container host 169.254.170.2\n - EKS container host 169.254.170.23 or [fd00:ec2::23]`);\n};\nexports.checkUrl = checkUrl;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromHttp = void 0;\nconst tslib_1 = require(\"tslib\");\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst property_provider_1 = require(\"@smithy/property-provider\");\nconst promises_1 = tslib_1.__importDefault(require(\"fs/promises\"));\nconst checkUrl_1 = require(\"./checkUrl\");\nconst requestHelpers_1 = require(\"./requestHelpers\");\nconst retry_wrapper_1 = require(\"./retry-wrapper\");\nconst AWS_CONTAINER_CREDENTIALS_RELATIVE_URI = \"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI\";\nconst DEFAULT_LINK_LOCAL_HOST = \"http://169.254.170.2\";\nconst AWS_CONTAINER_CREDENTIALS_FULL_URI = \"AWS_CONTAINER_CREDENTIALS_FULL_URI\";\nconst AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE = \"AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE\";\nconst AWS_CONTAINER_AUTHORIZATION_TOKEN = \"AWS_CONTAINER_AUTHORIZATION_TOKEN\";\nconst fromHttp = (options) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n (_a = options.logger) === null || _a === void 0 ? void 0 : _a.debug(\"@aws-sdk/credential-provider-http\", \"fromHttp\");\n let host;\n const relative = (_b = options.awsContainerCredentialsRelativeUri) !== null && _b !== void 0 ? _b : process.env[AWS_CONTAINER_CREDENTIALS_RELATIVE_URI];\n const full = (_c = options.awsContainerCredentialsFullUri) !== null && _c !== void 0 ? _c : process.env[AWS_CONTAINER_CREDENTIALS_FULL_URI];\n const token = (_d = options.awsContainerAuthorizationToken) !== null && _d !== void 0 ? _d : process.env[AWS_CONTAINER_AUTHORIZATION_TOKEN];\n const tokenFile = (_e = options.awsContainerAuthorizationTokenFile) !== null && _e !== void 0 ? _e : process.env[AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE];\n if (relative && full) {\n console.warn(\"AWS SDK HTTP credentials provider:\", \"you have set both awsContainerCredentialsRelativeUri and awsContainerCredentialsFullUri.\");\n console.warn(\"awsContainerCredentialsFullUri will take precedence.\");\n }\n if (token && tokenFile) {\n console.warn(\"AWS SDK HTTP credentials provider:\", \"you have set both awsContainerAuthorizationToken and awsContainerAuthorizationTokenFile.\");\n console.warn(\"awsContainerAuthorizationToken will take precedence.\");\n }\n if (full) {\n host = full;\n }\n else if (relative) {\n host = `${DEFAULT_LINK_LOCAL_HOST}${relative}`;\n }\n else {\n throw new property_provider_1.CredentialsProviderError(`No HTTP credential provider host provided.\nSet AWS_CONTAINER_CREDENTIALS_FULL_URI or AWS_CONTAINER_CREDENTIALS_RELATIVE_URI.`);\n }\n const url = new URL(host);\n (0, checkUrl_1.checkUrl)(url);\n const requestHandler = new node_http_handler_1.NodeHttpHandler({\n requestTimeout: (_f = options.timeout) !== null && _f !== void 0 ? _f : 1000,\n connectionTimeout: (_g = options.timeout) !== null && _g !== void 0 ? _g : 1000,\n });\n return (0, retry_wrapper_1.retryWrapper)(async () => {\n const request = (0, requestHelpers_1.createGetRequest)(url);\n if (token) {\n request.headers.Authorization = token;\n }\n else if (tokenFile) {\n request.headers.Authorization = (await promises_1.default.readFile(tokenFile)).toString();\n }\n try {\n const result = await requestHandler.handle(request);\n return (0, requestHelpers_1.getCredentials)(result.response);\n }\n catch (e) {\n throw new property_provider_1.CredentialsProviderError(String(e));\n }\n }, (_h = options.maxRetries) !== null && _h !== void 0 ? _h : 3, (_j = options.timeout) !== null && _j !== void 0 ? _j : 1000);\n};\nexports.fromHttp = fromHttp;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getCredentials = exports.createGetRequest = void 0;\nconst property_provider_1 = require(\"@smithy/property-provider\");\nconst protocol_http_1 = require(\"@smithy/protocol-http\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst util_stream_1 = require(\"@smithy/util-stream\");\nfunction createGetRequest(url) {\n return new protocol_http_1.HttpRequest({\n protocol: url.protocol,\n hostname: url.hostname,\n port: Number(url.port),\n path: url.pathname,\n query: Array.from(url.searchParams.entries()).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}),\n fragment: url.hash,\n });\n}\nexports.createGetRequest = createGetRequest;\nasync function getCredentials(response) {\n var _a, _b;\n const contentType = (_b = (_a = response === null || response === void 0 ? void 0 : response.headers[\"content-type\"]) !== null && _a !== void 0 ? _a : response === null || response === void 0 ? void 0 : response.headers[\"Content-Type\"]) !== null && _b !== void 0 ? _b : \"\";\n if (!contentType.includes(\"json\")) {\n console.warn(\"HTTP credential provider response header content-type was not application/json. Observed: \" + contentType + \".\");\n }\n const stream = (0, util_stream_1.sdkStreamMixin)(response.body);\n const str = await stream.transformToString();\n if (response.statusCode === 200) {\n const parsed = JSON.parse(str);\n if (typeof parsed.AccessKeyId !== \"string\" ||\n typeof parsed.SecretAccessKey !== \"string\" ||\n typeof parsed.Token !== \"string\" ||\n typeof parsed.Expiration !== \"string\") {\n throw new property_provider_1.CredentialsProviderError(\"HTTP credential provider response not of the required format, an object matching: \" +\n \"{ AccessKeyId: string, SecretAccessKey: string, Token: string, Expiration: string(rfc3339) }\");\n }\n return {\n accessKeyId: parsed.AccessKeyId,\n secretAccessKey: parsed.SecretAccessKey,\n sessionToken: parsed.Token,\n expiration: (0, smithy_client_1.parseRfc3339DateTime)(parsed.Expiration),\n };\n }\n if (response.statusCode >= 400 && response.statusCode < 500) {\n let parsedBody = {};\n try {\n parsedBody = JSON.parse(str);\n }\n catch (e) { }\n throw Object.assign(new property_provider_1.CredentialsProviderError(`Server responded with status: ${response.statusCode}`), {\n Code: parsedBody.Code,\n Message: parsedBody.Message,\n });\n }\n throw new property_provider_1.CredentialsProviderError(`Server responded with status: ${response.statusCode}`);\n}\nexports.getCredentials = getCredentials;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.retryWrapper = void 0;\nconst retryWrapper = (toRetry, maxRetries, delayMs) => {\n return async () => {\n for (let i = 0; i < maxRetries; ++i) {\n try {\n return await toRetry();\n }\n catch (e) {\n await new Promise((resolve) => setTimeout(resolve, delayMs));\n }\n }\n return await toRetry();\n };\n};\nexports.retryWrapper = retryWrapper;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromHttp = void 0;\nvar fromHttp_1 = require(\"./fromHttp/fromHttp\");\nObject.defineProperty(exports, \"fromHttp\", { enumerable: true, get: function () { return fromHttp_1.fromHttp; } });\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/loadSts.ts\nvar loadSts_exports = {};\n__export(loadSts_exports, {\n getDefaultRoleAssumer: () => import_client_sts.getDefaultRoleAssumer\n});\nvar import_client_sts;\nvar init_loadSts = __esm({\n \"src/loadSts.ts\"() {\n import_client_sts = require(\"@aws-sdk/client-sts\");\n }\n});\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromIni: () => fromIni\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromIni.ts\n\n\n// src/resolveProfileData.ts\n\n\n// src/resolveAssumeRoleCredentials.ts\n\nvar import_shared_ini_file_loader = require(\"@smithy/shared-ini-file-loader\");\n\n// src/resolveCredentialSource.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar resolveCredentialSource = /* @__PURE__ */ __name((credentialSource, profileName) => {\n const sourceProvidersMap = {\n EcsContainer: (options) => Promise.resolve().then(() => __toESM(require(\"@smithy/credential-provider-imds\"))).then(({ fromContainerMetadata }) => fromContainerMetadata(options)),\n Ec2InstanceMetadata: (options) => Promise.resolve().then(() => __toESM(require(\"@smithy/credential-provider-imds\"))).then(({ fromInstanceMetadata }) => fromInstanceMetadata(options)),\n Environment: (options) => Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-env\"))).then(({ fromEnv }) => fromEnv(options))\n };\n if (credentialSource in sourceProvidersMap) {\n return sourceProvidersMap[credentialSource];\n } else {\n throw new import_property_provider.CredentialsProviderError(\n `Unsupported credential source in profile ${profileName}. Got ${credentialSource}, expected EcsContainer or Ec2InstanceMetadata or Environment.`\n );\n }\n}, \"resolveCredentialSource\");\n\n// src/resolveAssumeRoleCredentials.ts\nvar isAssumeRoleProfile = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === \"object\" && typeof arg.role_arn === \"string\" && [\"undefined\", \"string\"].indexOf(typeof arg.role_session_name) > -1 && [\"undefined\", \"string\"].indexOf(typeof arg.external_id) > -1 && [\"undefined\", \"string\"].indexOf(typeof arg.mfa_serial) > -1 && (isAssumeRoleWithSourceProfile(arg) || isAssumeRoleWithProviderProfile(arg)), \"isAssumeRoleProfile\");\nvar isAssumeRoleWithSourceProfile = /* @__PURE__ */ __name((arg) => typeof arg.source_profile === \"string\" && typeof arg.credential_source === \"undefined\", \"isAssumeRoleWithSourceProfile\");\nvar isAssumeRoleWithProviderProfile = /* @__PURE__ */ __name((arg) => typeof arg.credential_source === \"string\" && typeof arg.source_profile === \"undefined\", \"isAssumeRoleWithProviderProfile\");\nvar resolveAssumeRoleCredentials = /* @__PURE__ */ __name(async (profileName, profiles, options, visitedProfiles = {}) => {\n var _a;\n (_a = options.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-ini\", \"resolveAssumeRoleCredentials (STS)\");\n const data = profiles[profileName];\n if (!options.roleAssumer) {\n const { getDefaultRoleAssumer: getDefaultRoleAssumer2 } = await Promise.resolve().then(() => (init_loadSts(), loadSts_exports));\n options.roleAssumer = getDefaultRoleAssumer2(\n {\n ...options.clientConfig,\n credentialProviderLogger: options.logger,\n parentClientConfig: options == null ? void 0 : options.parentClientConfig\n },\n options.clientPlugins\n );\n }\n const { source_profile } = data;\n if (source_profile && source_profile in visitedProfiles) {\n throw new import_property_provider.CredentialsProviderError(\n `Detected a cycle attempting to resolve credentials for profile ${(0, import_shared_ini_file_loader.getProfileName)(options)}. Profiles visited: ` + Object.keys(visitedProfiles).join(\", \"),\n false\n );\n }\n const sourceCredsProvider = source_profile ? resolveProfileData(source_profile, profiles, options, {\n ...visitedProfiles,\n [source_profile]: true\n }) : (await resolveCredentialSource(data.credential_source, profileName)(options))();\n const params = {\n RoleArn: data.role_arn,\n RoleSessionName: data.role_session_name || `aws-sdk-js-${Date.now()}`,\n ExternalId: data.external_id,\n DurationSeconds: parseInt(data.duration_seconds || \"3600\", 10)\n };\n const { mfa_serial } = data;\n if (mfa_serial) {\n if (!options.mfaCodeProvider) {\n throw new import_property_provider.CredentialsProviderError(\n `Profile ${profileName} requires multi-factor authentication, but no MFA code callback was provided.`,\n false\n );\n }\n params.SerialNumber = mfa_serial;\n params.TokenCode = await options.mfaCodeProvider(mfa_serial);\n }\n const sourceCreds = await sourceCredsProvider;\n return options.roleAssumer(sourceCreds, params);\n}, \"resolveAssumeRoleCredentials\");\n\n// src/resolveProcessCredentials.ts\nvar isProcessProfile = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === \"object\" && typeof arg.credential_process === \"string\", \"isProcessProfile\");\nvar resolveProcessCredentials = /* @__PURE__ */ __name(async (options, profile) => Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-process\"))).then(\n ({ fromProcess }) => fromProcess({\n ...options,\n profile\n })()\n), \"resolveProcessCredentials\");\n\n// src/resolveSsoCredentials.ts\nvar resolveSsoCredentials = /* @__PURE__ */ __name(async (profile, options = {}) => {\n const { fromSSO } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-sso\")));\n return fromSSO({\n profile,\n logger: options.logger\n })();\n}, \"resolveSsoCredentials\");\nvar isSsoProfile = /* @__PURE__ */ __name((arg) => arg && (typeof arg.sso_start_url === \"string\" || typeof arg.sso_account_id === \"string\" || typeof arg.sso_session === \"string\" || typeof arg.sso_region === \"string\" || typeof arg.sso_role_name === \"string\"), \"isSsoProfile\");\n\n// src/resolveStaticCredentials.ts\nvar isStaticCredsProfile = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === \"object\" && typeof arg.aws_access_key_id === \"string\" && typeof arg.aws_secret_access_key === \"string\" && [\"undefined\", \"string\"].indexOf(typeof arg.aws_session_token) > -1, \"isStaticCredsProfile\");\nvar resolveStaticCredentials = /* @__PURE__ */ __name((profile, options) => {\n var _a;\n (_a = options == null ? void 0 : options.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-ini\", \"resolveStaticCredentials\");\n return Promise.resolve({\n accessKeyId: profile.aws_access_key_id,\n secretAccessKey: profile.aws_secret_access_key,\n sessionToken: profile.aws_session_token,\n credentialScope: profile.aws_credential_scope\n });\n}, \"resolveStaticCredentials\");\n\n// src/resolveWebIdentityCredentials.ts\nvar isWebIdentityProfile = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === \"object\" && typeof arg.web_identity_token_file === \"string\" && typeof arg.role_arn === \"string\" && [\"undefined\", \"string\"].indexOf(typeof arg.role_session_name) > -1, \"isWebIdentityProfile\");\nvar resolveWebIdentityCredentials = /* @__PURE__ */ __name(async (profile, options) => Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-web-identity\"))).then(\n ({ fromTokenFile }) => fromTokenFile({\n webIdentityTokenFile: profile.web_identity_token_file,\n roleArn: profile.role_arn,\n roleSessionName: profile.role_session_name,\n roleAssumerWithWebIdentity: options.roleAssumerWithWebIdentity,\n logger: options.logger,\n parentClientConfig: options.parentClientConfig\n })()\n), \"resolveWebIdentityCredentials\");\n\n// src/resolveProfileData.ts\nvar resolveProfileData = /* @__PURE__ */ __name(async (profileName, profiles, options, visitedProfiles = {}) => {\n const data = profiles[profileName];\n if (Object.keys(visitedProfiles).length > 0 && isStaticCredsProfile(data)) {\n return resolveStaticCredentials(data, options);\n }\n if (isAssumeRoleProfile(data)) {\n return resolveAssumeRoleCredentials(profileName, profiles, options, visitedProfiles);\n }\n if (isStaticCredsProfile(data)) {\n return resolveStaticCredentials(data, options);\n }\n if (isWebIdentityProfile(data)) {\n return resolveWebIdentityCredentials(data, options);\n }\n if (isProcessProfile(data)) {\n return resolveProcessCredentials(options, profileName);\n }\n if (isSsoProfile(data)) {\n return await resolveSsoCredentials(profileName, options);\n }\n throw new import_property_provider.CredentialsProviderError(`Profile ${profileName} could not be found or parsed in shared credentials file.`);\n}, \"resolveProfileData\");\n\n// src/fromIni.ts\nvar fromIni = /* @__PURE__ */ __name((init = {}) => async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-ini\", \"fromIni\");\n const profiles = await (0, import_shared_ini_file_loader.parseKnownFiles)(init);\n return resolveProfileData((0, import_shared_ini_file_loader.getProfileName)(init), profiles, init);\n}, \"fromIni\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromIni\n});\n\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n credentialsTreatedAsExpired: () => credentialsTreatedAsExpired,\n credentialsWillNeedRefresh: () => credentialsWillNeedRefresh,\n defaultProvider: () => defaultProvider\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/defaultProvider.ts\nvar import_credential_provider_env = require(\"@aws-sdk/credential-provider-env\");\n\nvar import_shared_ini_file_loader = require(\"@smithy/shared-ini-file-loader\");\n\n// src/remoteProvider.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar ENV_IMDS_DISABLED = \"AWS_EC2_METADATA_DISABLED\";\nvar remoteProvider = /* @__PURE__ */ __name(async (init) => {\n var _a, _b;\n const { ENV_CMDS_FULL_URI, ENV_CMDS_RELATIVE_URI, fromContainerMetadata, fromInstanceMetadata } = await Promise.resolve().then(() => __toESM(require(\"@smithy/credential-provider-imds\")));\n if (process.env[ENV_CMDS_RELATIVE_URI] || process.env[ENV_CMDS_FULL_URI]) {\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node\", \"remoteProvider::fromHttp/fromContainerMetadata\");\n const { fromHttp } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-http\")));\n return (0, import_property_provider.chain)(fromHttp(init), fromContainerMetadata(init));\n }\n if (process.env[ENV_IMDS_DISABLED]) {\n return async () => {\n throw new import_property_provider.CredentialsProviderError(\"EC2 Instance Metadata Service access disabled\");\n };\n }\n (_b = init.logger) == null ? void 0 : _b.debug(\"@aws-sdk/credential-provider-node\", \"remoteProvider::fromInstanceMetadata\");\n return fromInstanceMetadata(init);\n}, \"remoteProvider\");\n\n// src/defaultProvider.ts\nvar defaultProvider = /* @__PURE__ */ __name((init = {}) => (0, import_property_provider.memoize)(\n (0, import_property_provider.chain)(\n ...init.profile || process.env[import_shared_ini_file_loader.ENV_PROFILE] ? [] : [\n async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node\", \"defaultProvider::fromEnv\");\n return (0, import_credential_provider_env.fromEnv)(init)();\n }\n ],\n async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node\", \"defaultProvider::fromSSO\");\n const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init;\n if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) {\n throw new import_property_provider.CredentialsProviderError(\n \"Skipping SSO provider in default chain (inputs do not include SSO fields).\"\n );\n }\n const { fromSSO } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-sso\")));\n return fromSSO(init)();\n },\n async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node\", \"defaultProvider::fromIni\");\n const { fromIni } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-ini\")));\n return fromIni(init)();\n },\n async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node\", \"defaultProvider::fromProcess\");\n const { fromProcess } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-process\")));\n return fromProcess(init)();\n },\n async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node\", \"defaultProvider::fromTokenFile\");\n const { fromTokenFile } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-web-identity\")));\n return fromTokenFile(init)();\n },\n async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node\", \"defaultProvider::remoteProvider\");\n return (await remoteProvider(init))();\n },\n async () => {\n throw new import_property_provider.CredentialsProviderError(\"Could not load credentials from any providers\", false);\n }\n ),\n credentialsTreatedAsExpired,\n credentialsWillNeedRefresh\n), \"defaultProvider\");\nvar credentialsWillNeedRefresh = /* @__PURE__ */ __name((credentials) => (credentials == null ? void 0 : credentials.expiration) !== void 0, \"credentialsWillNeedRefresh\");\nvar credentialsTreatedAsExpired = /* @__PURE__ */ __name((credentials) => (credentials == null ? void 0 : credentials.expiration) !== void 0 && credentials.expiration.getTime() - Date.now() < 3e5, \"credentialsTreatedAsExpired\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n defaultProvider,\n credentialsWillNeedRefresh,\n credentialsTreatedAsExpired\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromProcess: () => fromProcess\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromProcess.ts\nvar import_shared_ini_file_loader = require(\"@smithy/shared-ini-file-loader\");\n\n// src/resolveProcessCredentials.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar import_child_process = require(\"child_process\");\nvar import_util = require(\"util\");\n\n// src/getValidatedProcessCredentials.ts\nvar getValidatedProcessCredentials = /* @__PURE__ */ __name((profileName, data) => {\n if (data.Version !== 1) {\n throw Error(`Profile ${profileName} credential_process did not return Version 1.`);\n }\n if (data.AccessKeyId === void 0 || data.SecretAccessKey === void 0) {\n throw Error(`Profile ${profileName} credential_process returned invalid credentials.`);\n }\n if (data.Expiration) {\n const currentTime = /* @__PURE__ */ new Date();\n const expireTime = new Date(data.Expiration);\n if (expireTime < currentTime) {\n throw Error(`Profile ${profileName} credential_process returned expired credentials.`);\n }\n }\n return {\n accessKeyId: data.AccessKeyId,\n secretAccessKey: data.SecretAccessKey,\n ...data.SessionToken && { sessionToken: data.SessionToken },\n ...data.Expiration && { expiration: new Date(data.Expiration) },\n ...data.CredentialScope && { credentialScope: data.CredentialScope }\n };\n}, \"getValidatedProcessCredentials\");\n\n// src/resolveProcessCredentials.ts\nvar resolveProcessCredentials = /* @__PURE__ */ __name(async (profileName, profiles) => {\n const profile = profiles[profileName];\n if (profiles[profileName]) {\n const credentialProcess = profile[\"credential_process\"];\n if (credentialProcess !== void 0) {\n const execPromise = (0, import_util.promisify)(import_child_process.exec);\n try {\n const { stdout } = await execPromise(credentialProcess);\n let data;\n try {\n data = JSON.parse(stdout.trim());\n } catch {\n throw Error(`Profile ${profileName} credential_process returned invalid JSON.`);\n }\n return getValidatedProcessCredentials(profileName, data);\n } catch (error) {\n throw new import_property_provider.CredentialsProviderError(error.message);\n }\n } else {\n throw new import_property_provider.CredentialsProviderError(`Profile ${profileName} did not contain credential_process.`);\n }\n } else {\n throw new import_property_provider.CredentialsProviderError(`Profile ${profileName} could not be found in shared credentials file.`);\n }\n}, \"resolveProcessCredentials\");\n\n// src/fromProcess.ts\nvar fromProcess = /* @__PURE__ */ __name((init = {}) => async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-process\", \"fromProcess\");\n const profiles = await (0, import_shared_ini_file_loader.parseKnownFiles)(init);\n return resolveProcessCredentials((0, import_shared_ini_file_loader.getProfileName)(init), profiles);\n}, \"fromProcess\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromProcess\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/loadSso.ts\nvar loadSso_exports = {};\n__export(loadSso_exports, {\n GetRoleCredentialsCommand: () => import_client_sso.GetRoleCredentialsCommand,\n SSOClient: () => import_client_sso.SSOClient\n});\nvar import_client_sso;\nvar init_loadSso = __esm({\n \"src/loadSso.ts\"() {\n import_client_sso = require(\"@aws-sdk/client-sso\");\n }\n});\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromSSO: () => fromSSO,\n isSsoProfile: () => isSsoProfile,\n validateSsoProfile: () => validateSsoProfile\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromSSO.ts\n\n\n\n// src/isSsoProfile.ts\nvar isSsoProfile = /* @__PURE__ */ __name((arg) => arg && (typeof arg.sso_start_url === \"string\" || typeof arg.sso_account_id === \"string\" || typeof arg.sso_session === \"string\" || typeof arg.sso_region === \"string\" || typeof arg.sso_role_name === \"string\"), \"isSsoProfile\");\n\n// src/resolveSSOCredentials.ts\nvar import_token_providers = require(\"@aws-sdk/token-providers\");\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar import_shared_ini_file_loader = require(\"@smithy/shared-ini-file-loader\");\nvar SHOULD_FAIL_CREDENTIAL_CHAIN = false;\nvar resolveSSOCredentials = /* @__PURE__ */ __name(async ({\n ssoStartUrl,\n ssoSession,\n ssoAccountId,\n ssoRegion,\n ssoRoleName,\n ssoClient,\n clientConfig,\n profile\n}) => {\n let token;\n const refreshMessage = `To refresh this SSO session run aws sso login with the corresponding profile.`;\n if (ssoSession) {\n try {\n const _token = await (0, import_token_providers.fromSso)({ profile })();\n token = {\n accessToken: _token.token,\n expiresAt: new Date(_token.expiration).toISOString()\n };\n } catch (e) {\n throw new import_property_provider.CredentialsProviderError(e.message, SHOULD_FAIL_CREDENTIAL_CHAIN);\n }\n } else {\n try {\n token = await (0, import_shared_ini_file_loader.getSSOTokenFromFile)(ssoStartUrl);\n } catch (e) {\n throw new import_property_provider.CredentialsProviderError(\n `The SSO session associated with this profile is invalid. ${refreshMessage}`,\n SHOULD_FAIL_CREDENTIAL_CHAIN\n );\n }\n }\n if (new Date(token.expiresAt).getTime() - Date.now() <= 0) {\n throw new import_property_provider.CredentialsProviderError(\n `The SSO session associated with this profile has expired. ${refreshMessage}`,\n SHOULD_FAIL_CREDENTIAL_CHAIN\n );\n }\n const { accessToken } = token;\n const { SSOClient: SSOClient2, GetRoleCredentialsCommand: GetRoleCredentialsCommand2 } = await Promise.resolve().then(() => (init_loadSso(), loadSso_exports));\n const sso = ssoClient || new SSOClient2(\n Object.assign({}, clientConfig ?? {}, {\n region: (clientConfig == null ? void 0 : clientConfig.region) ?? ssoRegion\n })\n );\n let ssoResp;\n try {\n ssoResp = await sso.send(\n new GetRoleCredentialsCommand2({\n accountId: ssoAccountId,\n roleName: ssoRoleName,\n accessToken\n })\n );\n } catch (e) {\n throw import_property_provider.CredentialsProviderError.from(e, SHOULD_FAIL_CREDENTIAL_CHAIN);\n }\n const { roleCredentials: { accessKeyId, secretAccessKey, sessionToken, expiration, credentialScope } = {} } = ssoResp;\n if (!accessKeyId || !secretAccessKey || !sessionToken || !expiration) {\n throw new import_property_provider.CredentialsProviderError(\"SSO returns an invalid temporary credential.\", SHOULD_FAIL_CREDENTIAL_CHAIN);\n }\n return { accessKeyId, secretAccessKey, sessionToken, expiration: new Date(expiration), credentialScope };\n}, \"resolveSSOCredentials\");\n\n// src/validateSsoProfile.ts\n\nvar validateSsoProfile = /* @__PURE__ */ __name((profile) => {\n const { sso_start_url, sso_account_id, sso_region, sso_role_name } = profile;\n if (!sso_start_url || !sso_account_id || !sso_region || !sso_role_name) {\n throw new import_property_provider.CredentialsProviderError(\n `Profile is configured with invalid SSO credentials. Required parameters \"sso_account_id\", \"sso_region\", \"sso_role_name\", \"sso_start_url\". Got ${Object.keys(profile).join(\n \", \"\n )}\nReference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`,\n false\n );\n }\n return profile;\n}, \"validateSsoProfile\");\n\n// src/fromSSO.ts\nvar fromSSO = /* @__PURE__ */ __name((init = {}) => async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-sso\", \"fromSSO\");\n const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init;\n const { ssoClient } = init;\n const profileName = (0, import_shared_ini_file_loader.getProfileName)(init);\n if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) {\n const profiles = await (0, import_shared_ini_file_loader.parseKnownFiles)(init);\n const profile = profiles[profileName];\n if (!profile) {\n throw new import_property_provider.CredentialsProviderError(`Profile ${profileName} was not found.`);\n }\n if (!isSsoProfile(profile)) {\n throw new import_property_provider.CredentialsProviderError(`Profile ${profileName} is not configured with SSO credentials.`);\n }\n if (profile == null ? void 0 : profile.sso_session) {\n const ssoSessions = await (0, import_shared_ini_file_loader.loadSsoSessionData)(init);\n const session = ssoSessions[profile.sso_session];\n const conflictMsg = ` configurations in profile ${profileName} and sso-session ${profile.sso_session}`;\n if (ssoRegion && ssoRegion !== session.sso_region) {\n throw new import_property_provider.CredentialsProviderError(`Conflicting SSO region` + conflictMsg, false);\n }\n if (ssoStartUrl && ssoStartUrl !== session.sso_start_url) {\n throw new import_property_provider.CredentialsProviderError(`Conflicting SSO start_url` + conflictMsg, false);\n }\n profile.sso_region = session.sso_region;\n profile.sso_start_url = session.sso_start_url;\n }\n const { sso_start_url, sso_account_id, sso_region, sso_role_name, sso_session } = validateSsoProfile(profile);\n return resolveSSOCredentials({\n ssoStartUrl: sso_start_url,\n ssoSession: sso_session,\n ssoAccountId: sso_account_id,\n ssoRegion: sso_region,\n ssoRoleName: sso_role_name,\n ssoClient,\n clientConfig: init.clientConfig,\n profile: profileName\n });\n } else if (!ssoStartUrl || !ssoAccountId || !ssoRegion || !ssoRoleName) {\n throw new import_property_provider.CredentialsProviderError(\n 'Incomplete configuration. The fromSSO() argument hash must include \"ssoStartUrl\", \"ssoAccountId\", \"ssoRegion\", \"ssoRoleName\"'\n );\n } else {\n return resolveSSOCredentials({\n ssoStartUrl,\n ssoSession,\n ssoAccountId,\n ssoRegion,\n ssoRoleName,\n ssoClient,\n clientConfig: init.clientConfig,\n profile: profileName\n });\n }\n}, \"fromSSO\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromSSO,\n isSsoProfile,\n validateSsoProfile\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromTokenFile = void 0;\nconst property_provider_1 = require(\"@smithy/property-provider\");\nconst fs_1 = require(\"fs\");\nconst fromWebToken_1 = require(\"./fromWebToken\");\nconst ENV_TOKEN_FILE = \"AWS_WEB_IDENTITY_TOKEN_FILE\";\nconst ENV_ROLE_ARN = \"AWS_ROLE_ARN\";\nconst ENV_ROLE_SESSION_NAME = \"AWS_ROLE_SESSION_NAME\";\nconst fromTokenFile = (init = {}) => async () => {\n var _a, _b, _c, _d;\n (_a = init.logger) === null || _a === void 0 ? void 0 : _a.debug(\"@aws-sdk/credential-provider-web-identity\", \"fromTokenFile\");\n const webIdentityTokenFile = (_b = init === null || init === void 0 ? void 0 : init.webIdentityTokenFile) !== null && _b !== void 0 ? _b : process.env[ENV_TOKEN_FILE];\n const roleArn = (_c = init === null || init === void 0 ? void 0 : init.roleArn) !== null && _c !== void 0 ? _c : process.env[ENV_ROLE_ARN];\n const roleSessionName = (_d = init === null || init === void 0 ? void 0 : init.roleSessionName) !== null && _d !== void 0 ? _d : process.env[ENV_ROLE_SESSION_NAME];\n if (!webIdentityTokenFile || !roleArn) {\n throw new property_provider_1.CredentialsProviderError(\"Web identity configuration not specified\");\n }\n return (0, fromWebToken_1.fromWebToken)({\n ...init,\n webIdentityToken: (0, fs_1.readFileSync)(webIdentityTokenFile, { encoding: \"ascii\" }),\n roleArn,\n roleSessionName,\n })();\n};\nexports.fromTokenFile = fromTokenFile;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromWebToken = void 0;\nconst fromWebToken = (init) => async () => {\n var _a;\n (_a = init.logger) === null || _a === void 0 ? void 0 : _a.debug(\"@aws-sdk/credential-provider-web-identity\", \"fromWebToken\");\n const { roleArn, roleSessionName, webIdentityToken, providerId, policyArns, policy, durationSeconds } = init;\n let { roleAssumerWithWebIdentity } = init;\n if (!roleAssumerWithWebIdentity) {\n const { getDefaultRoleAssumerWithWebIdentity } = await Promise.resolve().then(() => __importStar(require(\"./loadSts\")));\n roleAssumerWithWebIdentity = getDefaultRoleAssumerWithWebIdentity({\n ...init.clientConfig,\n credentialProviderLogger: init.logger,\n parentClientConfig: init.parentClientConfig,\n }, init.clientPlugins);\n }\n return roleAssumerWithWebIdentity({\n RoleArn: roleArn,\n RoleSessionName: roleSessionName !== null && roleSessionName !== void 0 ? roleSessionName : `aws-sdk-js-session-${Date.now()}`,\n WebIdentityToken: webIdentityToken,\n ProviderId: providerId,\n PolicyArns: policyArns,\n Policy: policy,\n DurationSeconds: durationSeconds,\n });\n};\nexports.fromWebToken = fromWebToken;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\nmodule.exports = __toCommonJS(src_exports);\n__reExport(src_exports, require(\"././fromTokenFile\"), module.exports);\n__reExport(src_exports, require(\"././fromWebToken\"), module.exports);\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromTokenFile,\n fromWebToken\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getDefaultRoleAssumerWithWebIdentity = void 0;\nconst client_sts_1 = require(\"@aws-sdk/client-sts\");\nObject.defineProperty(exports, \"getDefaultRoleAssumerWithWebIdentity\", { enumerable: true, get: function () { return client_sts_1.getDefaultRoleAssumerWithWebIdentity; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromCognitoIdentity = void 0;\nconst credential_provider_cognito_identity_1 = require(\"@aws-sdk/credential-provider-cognito-identity\");\nconst fromCognitoIdentity = (options) => (0, credential_provider_cognito_identity_1.fromCognitoIdentity)({\n ...options,\n});\nexports.fromCognitoIdentity = fromCognitoIdentity;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromCognitoIdentityPool = void 0;\nconst credential_provider_cognito_identity_1 = require(\"@aws-sdk/credential-provider-cognito-identity\");\nconst fromCognitoIdentityPool = (options) => (0, credential_provider_cognito_identity_1.fromCognitoIdentityPool)({\n ...options,\n});\nexports.fromCognitoIdentityPool = fromCognitoIdentityPool;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromContainerMetadata = void 0;\nconst credential_provider_imds_1 = require(\"@smithy/credential-provider-imds\");\nconst fromContainerMetadata = (init) => {\n var _a;\n (_a = init === null || init === void 0 ? void 0 : init.logger) === null || _a === void 0 ? void 0 : _a.debug(\"@smithy/credential-provider-imds\", \"fromContainerMetadata\");\n return (0, credential_provider_imds_1.fromContainerMetadata)(init);\n};\nexports.fromContainerMetadata = fromContainerMetadata;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromEnv = void 0;\nconst credential_provider_env_1 = require(\"@aws-sdk/credential-provider-env\");\nconst fromEnv = (init) => (0, credential_provider_env_1.fromEnv)(init);\nexports.fromEnv = fromEnv;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromIni = void 0;\nconst credential_provider_ini_1 = require(\"@aws-sdk/credential-provider-ini\");\nconst fromIni = (init = {}) => (0, credential_provider_ini_1.fromIni)({\n ...init,\n});\nexports.fromIni = fromIni;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromInstanceMetadata = void 0;\nconst credential_provider_imds_1 = require(\"@smithy/credential-provider-imds\");\nconst fromInstanceMetadata = (init) => {\n var _a;\n (_a = init === null || init === void 0 ? void 0 : init.logger) === null || _a === void 0 ? void 0 : _a.debug(\"@smithy/credential-provider-imds\", \"fromInstanceMetadata\");\n return (0, credential_provider_imds_1.fromInstanceMetadata)(init);\n};\nexports.fromInstanceMetadata = fromInstanceMetadata;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromNodeProviderChain = void 0;\nconst credential_provider_node_1 = require(\"@aws-sdk/credential-provider-node\");\nconst fromNodeProviderChain = (init = {}) => (0, credential_provider_node_1.defaultProvider)({\n ...init,\n});\nexports.fromNodeProviderChain = fromNodeProviderChain;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromProcess = void 0;\nconst credential_provider_process_1 = require(\"@aws-sdk/credential-provider-process\");\nconst fromProcess = (init) => (0, credential_provider_process_1.fromProcess)(init);\nexports.fromProcess = fromProcess;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromSSO = void 0;\nconst credential_provider_sso_1 = require(\"@aws-sdk/credential-provider-sso\");\nconst fromSSO = (init = {}) => {\n return (0, credential_provider_sso_1.fromSSO)({ ...init });\n};\nexports.fromSSO = fromSSO;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromTemporaryCredentials = void 0;\nconst property_provider_1 = require(\"@smithy/property-provider\");\nconst fromTemporaryCredentials = (options) => {\n let stsClient;\n return async () => {\n var _a, _b;\n (_a = options.logger) === null || _a === void 0 ? void 0 : _a.debug(\"@aws-sdk/credential-providers\", \"fromTemporaryCredentials (STS)\");\n const params = { ...options.params, RoleSessionName: (_b = options.params.RoleSessionName) !== null && _b !== void 0 ? _b : \"aws-sdk-js-\" + Date.now() };\n if (params === null || params === void 0 ? void 0 : params.SerialNumber) {\n if (!options.mfaCodeProvider) {\n throw new property_provider_1.CredentialsProviderError(`Temporary credential requires multi-factor authentication,` + ` but no MFA code callback was provided.`, false);\n }\n params.TokenCode = await options.mfaCodeProvider(params === null || params === void 0 ? void 0 : params.SerialNumber);\n }\n const { AssumeRoleCommand, STSClient } = await Promise.resolve().then(() => __importStar(require(\"./loadSts\")));\n if (!stsClient)\n stsClient = new STSClient({ ...options.clientConfig, credentials: options.masterCredentials });\n if (options.clientPlugins) {\n for (const plugin of options.clientPlugins) {\n stsClient.middlewareStack.use(plugin);\n }\n }\n const { Credentials } = await stsClient.send(new AssumeRoleCommand(params));\n if (!Credentials || !Credentials.AccessKeyId || !Credentials.SecretAccessKey) {\n throw new property_provider_1.CredentialsProviderError(`Invalid response from STS.assumeRole call with role ${params.RoleArn}`);\n }\n return {\n accessKeyId: Credentials.AccessKeyId,\n secretAccessKey: Credentials.SecretAccessKey,\n sessionToken: Credentials.SessionToken,\n expiration: Credentials.Expiration,\n credentialScope: Credentials.CredentialScope,\n };\n };\n};\nexports.fromTemporaryCredentials = fromTemporaryCredentials;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromTokenFile = void 0;\nconst credential_provider_web_identity_1 = require(\"@aws-sdk/credential-provider-web-identity\");\nconst fromTokenFile = (init = {}) => (0, credential_provider_web_identity_1.fromTokenFile)({\n ...init,\n});\nexports.fromTokenFile = fromTokenFile;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromWebToken = void 0;\nconst credential_provider_web_identity_1 = require(\"@aws-sdk/credential-provider-web-identity\");\nconst fromWebToken = (init) => (0, credential_provider_web_identity_1.fromWebToken)({\n ...init,\n});\nexports.fromWebToken = fromWebToken;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromHttp = void 0;\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./fromCognitoIdentity\"), exports);\ntslib_1.__exportStar(require(\"./fromCognitoIdentityPool\"), exports);\ntslib_1.__exportStar(require(\"./fromContainerMetadata\"), exports);\ntslib_1.__exportStar(require(\"./fromEnv\"), exports);\nvar credential_provider_http_1 = require(\"@aws-sdk/credential-provider-http\");\nObject.defineProperty(exports, \"fromHttp\", { enumerable: true, get: function () { return credential_provider_http_1.fromHttp; } });\ntslib_1.__exportStar(require(\"./fromIni\"), exports);\ntslib_1.__exportStar(require(\"./fromInstanceMetadata\"), exports);\ntslib_1.__exportStar(require(\"./fromNodeProviderChain\"), exports);\ntslib_1.__exportStar(require(\"./fromProcess\"), exports);\ntslib_1.__exportStar(require(\"./fromSSO\"), exports);\ntslib_1.__exportStar(require(\"./fromTemporaryCredentials\"), exports);\ntslib_1.__exportStar(require(\"./fromTokenFile\"), exports);\ntslib_1.__exportStar(require(\"./fromWebToken\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.STSClient = exports.AssumeRoleCommand = void 0;\nconst client_sts_1 = require(\"@aws-sdk/client-sts\");\nObject.defineProperty(exports, \"AssumeRoleCommand\", { enumerable: true, get: function () { return client_sts_1.AssumeRoleCommand; } });\nObject.defineProperty(exports, \"STSClient\", { enumerable: true, get: function () { return client_sts_1.STSClient; } });\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n getHostHeaderPlugin: () => getHostHeaderPlugin,\n hostHeaderMiddleware: () => hostHeaderMiddleware,\n hostHeaderMiddlewareOptions: () => hostHeaderMiddlewareOptions,\n resolveHostHeaderConfig: () => resolveHostHeaderConfig\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nfunction resolveHostHeaderConfig(input) {\n return input;\n}\n__name(resolveHostHeaderConfig, \"resolveHostHeaderConfig\");\nvar hostHeaderMiddleware = /* @__PURE__ */ __name((options) => (next) => async (args) => {\n if (!import_protocol_http.HttpRequest.isInstance(args.request))\n return next(args);\n const { request } = args;\n const { handlerProtocol = \"\" } = options.requestHandler.metadata || {};\n if (handlerProtocol.indexOf(\"h2\") >= 0 && !request.headers[\":authority\"]) {\n delete request.headers[\"host\"];\n request.headers[\":authority\"] = request.hostname + (request.port ? \":\" + request.port : \"\");\n } else if (!request.headers[\"host\"]) {\n let host = request.hostname;\n if (request.port != null)\n host += `:${request.port}`;\n request.headers[\"host\"] = host;\n }\n return next(args);\n}, \"hostHeaderMiddleware\");\nvar hostHeaderMiddlewareOptions = {\n name: \"hostHeaderMiddleware\",\n step: \"build\",\n priority: \"low\",\n tags: [\"HOST\"],\n override: true\n};\nvar getHostHeaderPlugin = /* @__PURE__ */ __name((options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(hostHeaderMiddleware(options), hostHeaderMiddlewareOptions);\n }\n}), \"getHostHeaderPlugin\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n resolveHostHeaderConfig,\n hostHeaderMiddleware,\n hostHeaderMiddlewareOptions,\n getHostHeaderPlugin\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n getLoggerPlugin: () => getLoggerPlugin,\n loggerMiddleware: () => loggerMiddleware,\n loggerMiddlewareOptions: () => loggerMiddlewareOptions\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/loggerMiddleware.ts\nvar loggerMiddleware = /* @__PURE__ */ __name(() => (next, context) => async (args) => {\n var _a, _b;\n try {\n const response = await next(args);\n const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context;\n const { overrideInputFilterSensitiveLog, overrideOutputFilterSensitiveLog } = dynamoDbDocumentClientOptions;\n const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog;\n const outputFilterSensitiveLog = overrideOutputFilterSensitiveLog ?? context.outputFilterSensitiveLog;\n const { $metadata, ...outputWithoutMetadata } = response.output;\n (_a = logger == null ? void 0 : logger.info) == null ? void 0 : _a.call(logger, {\n clientName,\n commandName,\n input: inputFilterSensitiveLog(args.input),\n output: outputFilterSensitiveLog(outputWithoutMetadata),\n metadata: $metadata\n });\n return response;\n } catch (error) {\n const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context;\n const { overrideInputFilterSensitiveLog } = dynamoDbDocumentClientOptions;\n const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog;\n (_b = logger == null ? void 0 : logger.error) == null ? void 0 : _b.call(logger, {\n clientName,\n commandName,\n input: inputFilterSensitiveLog(args.input),\n error,\n metadata: error.$metadata\n });\n throw error;\n }\n}, \"loggerMiddleware\");\nvar loggerMiddlewareOptions = {\n name: \"loggerMiddleware\",\n tags: [\"LOGGER\"],\n step: \"initialize\",\n override: true\n};\nvar getLoggerPlugin = /* @__PURE__ */ __name((options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(loggerMiddleware(), loggerMiddlewareOptions);\n }\n}), \"getLoggerPlugin\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n loggerMiddleware,\n loggerMiddlewareOptions,\n getLoggerPlugin\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n addRecursionDetectionMiddlewareOptions: () => addRecursionDetectionMiddlewareOptions,\n getRecursionDetectionPlugin: () => getRecursionDetectionPlugin,\n recursionDetectionMiddleware: () => recursionDetectionMiddleware\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar TRACE_ID_HEADER_NAME = \"X-Amzn-Trace-Id\";\nvar ENV_LAMBDA_FUNCTION_NAME = \"AWS_LAMBDA_FUNCTION_NAME\";\nvar ENV_TRACE_ID = \"_X_AMZN_TRACE_ID\";\nvar recursionDetectionMiddleware = /* @__PURE__ */ __name((options) => (next) => async (args) => {\n const { request } = args;\n if (!import_protocol_http.HttpRequest.isInstance(request) || options.runtime !== \"node\" || request.headers.hasOwnProperty(TRACE_ID_HEADER_NAME)) {\n return next(args);\n }\n const functionName = process.env[ENV_LAMBDA_FUNCTION_NAME];\n const traceId = process.env[ENV_TRACE_ID];\n const nonEmptyString = /* @__PURE__ */ __name((str) => typeof str === \"string\" && str.length > 0, \"nonEmptyString\");\n if (nonEmptyString(functionName) && nonEmptyString(traceId)) {\n request.headers[TRACE_ID_HEADER_NAME] = traceId;\n }\n return next({\n ...args,\n request\n });\n}, \"recursionDetectionMiddleware\");\nvar addRecursionDetectionMiddlewareOptions = {\n step: \"build\",\n tags: [\"RECURSION_DETECTION\"],\n name: \"recursionDetectionMiddleware\",\n override: true,\n priority: \"low\"\n};\nvar getRecursionDetectionPlugin = /* @__PURE__ */ __name((options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(recursionDetectionMiddleware(options), addRecursionDetectionMiddlewareOptions);\n }\n}), \"getRecursionDetectionPlugin\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n recursionDetectionMiddleware,\n addRecursionDetectionMiddlewareOptions,\n getRecursionDetectionPlugin\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n getUserAgentMiddlewareOptions: () => getUserAgentMiddlewareOptions,\n getUserAgentPlugin: () => getUserAgentPlugin,\n resolveUserAgentConfig: () => resolveUserAgentConfig,\n userAgentMiddleware: () => userAgentMiddleware\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/configurations.ts\nfunction resolveUserAgentConfig(input) {\n return {\n ...input,\n customUserAgent: typeof input.customUserAgent === \"string\" ? [[input.customUserAgent]] : input.customUserAgent\n };\n}\n__name(resolveUserAgentConfig, \"resolveUserAgentConfig\");\n\n// src/user-agent-middleware.ts\nvar import_util_endpoints = require(\"@aws-sdk/util-endpoints\");\nvar import_protocol_http = require(\"@smithy/protocol-http\");\n\n// src/constants.ts\nvar USER_AGENT = \"user-agent\";\nvar X_AMZ_USER_AGENT = \"x-amz-user-agent\";\nvar SPACE = \" \";\nvar UA_NAME_SEPARATOR = \"/\";\nvar UA_NAME_ESCAPE_REGEX = /[^\\!\\$\\%\\&\\'\\*\\+\\-\\.\\^\\_\\`\\|\\~\\d\\w]/g;\nvar UA_VALUE_ESCAPE_REGEX = /[^\\!\\$\\%\\&\\'\\*\\+\\-\\.\\^\\_\\`\\|\\~\\d\\w\\#]/g;\nvar UA_ESCAPE_CHAR = \"-\";\n\n// src/user-agent-middleware.ts\nvar userAgentMiddleware = /* @__PURE__ */ __name((options) => (next, context) => async (args) => {\n var _a, _b;\n const { request } = args;\n if (!import_protocol_http.HttpRequest.isInstance(request))\n return next(args);\n const { headers } = request;\n const userAgent = ((_a = context == null ? void 0 : context.userAgent) == null ? void 0 : _a.map(escapeUserAgent)) || [];\n const defaultUserAgent = (await options.defaultUserAgentProvider()).map(escapeUserAgent);\n const customUserAgent = ((_b = options == null ? void 0 : options.customUserAgent) == null ? void 0 : _b.map(escapeUserAgent)) || [];\n const prefix = (0, import_util_endpoints.getUserAgentPrefix)();\n const sdkUserAgentValue = (prefix ? [prefix] : []).concat([...defaultUserAgent, ...userAgent, ...customUserAgent]).join(SPACE);\n const normalUAValue = [\n ...defaultUserAgent.filter((section) => section.startsWith(\"aws-sdk-\")),\n ...customUserAgent\n ].join(SPACE);\n if (options.runtime !== \"browser\") {\n if (normalUAValue) {\n headers[X_AMZ_USER_AGENT] = headers[X_AMZ_USER_AGENT] ? `${headers[USER_AGENT]} ${normalUAValue}` : normalUAValue;\n }\n headers[USER_AGENT] = sdkUserAgentValue;\n } else {\n headers[X_AMZ_USER_AGENT] = sdkUserAgentValue;\n }\n return next({\n ...args,\n request\n });\n}, \"userAgentMiddleware\");\nvar escapeUserAgent = /* @__PURE__ */ __name((userAgentPair) => {\n var _a;\n const name = userAgentPair[0].split(UA_NAME_SEPARATOR).map((part) => part.replace(UA_NAME_ESCAPE_REGEX, UA_ESCAPE_CHAR)).join(UA_NAME_SEPARATOR);\n const version = (_a = userAgentPair[1]) == null ? void 0 : _a.replace(UA_VALUE_ESCAPE_REGEX, UA_ESCAPE_CHAR);\n const prefixSeparatorIndex = name.indexOf(UA_NAME_SEPARATOR);\n const prefix = name.substring(0, prefixSeparatorIndex);\n let uaName = name.substring(prefixSeparatorIndex + 1);\n if (prefix === \"api\") {\n uaName = uaName.toLowerCase();\n }\n return [prefix, uaName, version].filter((item) => item && item.length > 0).reduce((acc, item, index) => {\n switch (index) {\n case 0:\n return item;\n case 1:\n return `${acc}/${item}`;\n default:\n return `${acc}#${item}`;\n }\n }, \"\");\n}, \"escapeUserAgent\");\nvar getUserAgentMiddlewareOptions = {\n name: \"getUserAgentMiddleware\",\n step: \"build\",\n priority: \"low\",\n tags: [\"SET_USER_AGENT\", \"USER_AGENT\"],\n override: true\n};\nvar getUserAgentPlugin = /* @__PURE__ */ __name((config) => ({\n applyToStack: (clientStack) => {\n clientStack.add(userAgentMiddleware(config), getUserAgentMiddlewareOptions);\n }\n}), \"getUserAgentPlugin\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n resolveUserAgentConfig,\n userAgentMiddleware,\n getUserAgentMiddlewareOptions,\n getUserAgentPlugin\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n NODE_REGION_CONFIG_FILE_OPTIONS: () => NODE_REGION_CONFIG_FILE_OPTIONS,\n NODE_REGION_CONFIG_OPTIONS: () => NODE_REGION_CONFIG_OPTIONS,\n REGION_ENV_NAME: () => REGION_ENV_NAME,\n REGION_INI_NAME: () => REGION_INI_NAME,\n getAwsRegionExtensionConfiguration: () => getAwsRegionExtensionConfiguration,\n resolveAwsRegionExtensionConfiguration: () => resolveAwsRegionExtensionConfiguration,\n resolveRegionConfig: () => resolveRegionConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/extensions/index.ts\nvar getAwsRegionExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n let runtimeConfigRegion = /* @__PURE__ */ __name(async () => {\n if (runtimeConfig.region === void 0) {\n throw new Error(\"Region is missing from runtimeConfig\");\n }\n const region = runtimeConfig.region;\n if (typeof region === \"string\") {\n return region;\n }\n return region();\n }, \"runtimeConfigRegion\");\n return {\n setRegion(region) {\n runtimeConfigRegion = region;\n },\n region() {\n return runtimeConfigRegion;\n }\n };\n}, \"getAwsRegionExtensionConfiguration\");\nvar resolveAwsRegionExtensionConfiguration = /* @__PURE__ */ __name((awsRegionExtensionConfiguration) => {\n return {\n region: awsRegionExtensionConfiguration.region()\n };\n}, \"resolveAwsRegionExtensionConfiguration\");\n\n// src/regionConfig/config.ts\nvar REGION_ENV_NAME = \"AWS_REGION\";\nvar REGION_INI_NAME = \"region\";\nvar NODE_REGION_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[REGION_ENV_NAME],\n configFileSelector: (profile) => profile[REGION_INI_NAME],\n default: () => {\n throw new Error(\"Region is missing\");\n }\n};\nvar NODE_REGION_CONFIG_FILE_OPTIONS = {\n preferredFile: \"credentials\"\n};\n\n// src/regionConfig/isFipsRegion.ts\nvar isFipsRegion = /* @__PURE__ */ __name((region) => typeof region === \"string\" && (region.startsWith(\"fips-\") || region.endsWith(\"-fips\")), \"isFipsRegion\");\n\n// src/regionConfig/getRealRegion.ts\nvar getRealRegion = /* @__PURE__ */ __name((region) => isFipsRegion(region) ? [\"fips-aws-global\", \"aws-fips\"].includes(region) ? \"us-east-1\" : region.replace(/fips-(dkr-|prod-)?|-fips/, \"\") : region, \"getRealRegion\");\n\n// src/regionConfig/resolveRegionConfig.ts\nvar resolveRegionConfig = /* @__PURE__ */ __name((input) => {\n const { region, useFipsEndpoint } = input;\n if (!region) {\n throw new Error(\"Region is missing\");\n }\n return {\n ...input,\n region: async () => {\n if (typeof region === \"string\") {\n return getRealRegion(region);\n }\n const providedRegion = await region();\n return getRealRegion(providedRegion);\n },\n useFipsEndpoint: async () => {\n const providedRegion = typeof region === \"string\" ? region : await region();\n if (isFipsRegion(providedRegion)) {\n return true;\n }\n return typeof useFipsEndpoint !== \"function\" ? Promise.resolve(!!useFipsEndpoint) : useFipsEndpoint();\n }\n };\n}, \"resolveRegionConfig\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n getAwsRegionExtensionConfiguration,\n resolveAwsRegionExtensionConfiguration,\n REGION_ENV_NAME,\n REGION_INI_NAME,\n NODE_REGION_CONFIG_OPTIONS,\n NODE_REGION_CONFIG_FILE_OPTIONS,\n resolveRegionConfig\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/loadSsoOidc.ts\nvar loadSsoOidc_exports = {};\n__export(loadSsoOidc_exports, {\n CreateTokenCommand: () => import_client_sso_oidc.CreateTokenCommand,\n SSOOIDCClient: () => import_client_sso_oidc.SSOOIDCClient\n});\nvar import_client_sso_oidc;\nvar init_loadSsoOidc = __esm({\n \"src/loadSsoOidc.ts\"() {\n import_client_sso_oidc = require(\"@aws-sdk/client-sso-oidc\");\n }\n});\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromSso: () => fromSso,\n fromStatic: () => fromStatic,\n nodeProvider: () => nodeProvider\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromSso.ts\n\n\n\n// src/constants.ts\nvar EXPIRE_WINDOW_MS = 5 * 60 * 1e3;\nvar REFRESH_MESSAGE = `To refresh this SSO session run 'aws sso login' with the corresponding profile.`;\n\n// src/getSsoOidcClient.ts\nvar ssoOidcClientsHash = {};\nvar getSsoOidcClient = /* @__PURE__ */ __name(async (ssoRegion) => {\n const { SSOOIDCClient: SSOOIDCClient2 } = await Promise.resolve().then(() => (init_loadSsoOidc(), loadSsoOidc_exports));\n if (ssoOidcClientsHash[ssoRegion]) {\n return ssoOidcClientsHash[ssoRegion];\n }\n const ssoOidcClient = new SSOOIDCClient2({ region: ssoRegion });\n ssoOidcClientsHash[ssoRegion] = ssoOidcClient;\n return ssoOidcClient;\n}, \"getSsoOidcClient\");\n\n// src/getNewSsoOidcToken.ts\nvar getNewSsoOidcToken = /* @__PURE__ */ __name(async (ssoToken, ssoRegion) => {\n const { CreateTokenCommand: CreateTokenCommand2 } = await Promise.resolve().then(() => (init_loadSsoOidc(), loadSsoOidc_exports));\n const ssoOidcClient = await getSsoOidcClient(ssoRegion);\n return ssoOidcClient.send(\n new CreateTokenCommand2({\n clientId: ssoToken.clientId,\n clientSecret: ssoToken.clientSecret,\n refreshToken: ssoToken.refreshToken,\n grantType: \"refresh_token\"\n })\n );\n}, \"getNewSsoOidcToken\");\n\n// src/validateTokenExpiry.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar validateTokenExpiry = /* @__PURE__ */ __name((token) => {\n if (token.expiration && token.expiration.getTime() < Date.now()) {\n throw new import_property_provider.TokenProviderError(`Token is expired. ${REFRESH_MESSAGE}`, false);\n }\n}, \"validateTokenExpiry\");\n\n// src/validateTokenKey.ts\n\nvar validateTokenKey = /* @__PURE__ */ __name((key, value, forRefresh = false) => {\n if (typeof value === \"undefined\") {\n throw new import_property_provider.TokenProviderError(\n `Value not present for '${key}' in SSO Token${forRefresh ? \". Cannot refresh\" : \"\"}. ${REFRESH_MESSAGE}`,\n false\n );\n }\n}, \"validateTokenKey\");\n\n// src/writeSSOTokenToFile.ts\nvar import_shared_ini_file_loader = require(\"@smithy/shared-ini-file-loader\");\nvar import_fs = require(\"fs\");\nvar { writeFile } = import_fs.promises;\nvar writeSSOTokenToFile = /* @__PURE__ */ __name((id, ssoToken) => {\n const tokenFilepath = (0, import_shared_ini_file_loader.getSSOTokenFilepath)(id);\n const tokenString = JSON.stringify(ssoToken, null, 2);\n return writeFile(tokenFilepath, tokenString);\n}, \"writeSSOTokenToFile\");\n\n// src/fromSso.ts\nvar lastRefreshAttemptTime = /* @__PURE__ */ new Date(0);\nvar fromSso = /* @__PURE__ */ __name((init = {}) => async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/token-providers\", \"fromSso\");\n const profiles = await (0, import_shared_ini_file_loader.parseKnownFiles)(init);\n const profileName = (0, import_shared_ini_file_loader.getProfileName)(init);\n const profile = profiles[profileName];\n if (!profile) {\n throw new import_property_provider.TokenProviderError(`Profile '${profileName}' could not be found in shared credentials file.`, false);\n } else if (!profile[\"sso_session\"]) {\n throw new import_property_provider.TokenProviderError(`Profile '${profileName}' is missing required property 'sso_session'.`);\n }\n const ssoSessionName = profile[\"sso_session\"];\n const ssoSessions = await (0, import_shared_ini_file_loader.loadSsoSessionData)(init);\n const ssoSession = ssoSessions[ssoSessionName];\n if (!ssoSession) {\n throw new import_property_provider.TokenProviderError(\n `Sso session '${ssoSessionName}' could not be found in shared credentials file.`,\n false\n );\n }\n for (const ssoSessionRequiredKey of [\"sso_start_url\", \"sso_region\"]) {\n if (!ssoSession[ssoSessionRequiredKey]) {\n throw new import_property_provider.TokenProviderError(\n `Sso session '${ssoSessionName}' is missing required property '${ssoSessionRequiredKey}'.`,\n false\n );\n }\n }\n const ssoStartUrl = ssoSession[\"sso_start_url\"];\n const ssoRegion = ssoSession[\"sso_region\"];\n let ssoToken;\n try {\n ssoToken = await (0, import_shared_ini_file_loader.getSSOTokenFromFile)(ssoSessionName);\n } catch (e) {\n throw new import_property_provider.TokenProviderError(\n `The SSO session token associated with profile=${profileName} was not found or is invalid. ${REFRESH_MESSAGE}`,\n false\n );\n }\n validateTokenKey(\"accessToken\", ssoToken.accessToken);\n validateTokenKey(\"expiresAt\", ssoToken.expiresAt);\n const { accessToken, expiresAt } = ssoToken;\n const existingToken = { token: accessToken, expiration: new Date(expiresAt) };\n if (existingToken.expiration.getTime() - Date.now() > EXPIRE_WINDOW_MS) {\n return existingToken;\n }\n if (Date.now() - lastRefreshAttemptTime.getTime() < 30 * 1e3) {\n validateTokenExpiry(existingToken);\n return existingToken;\n }\n validateTokenKey(\"clientId\", ssoToken.clientId, true);\n validateTokenKey(\"clientSecret\", ssoToken.clientSecret, true);\n validateTokenKey(\"refreshToken\", ssoToken.refreshToken, true);\n try {\n lastRefreshAttemptTime.setTime(Date.now());\n const newSsoOidcToken = await getNewSsoOidcToken(ssoToken, ssoRegion);\n validateTokenKey(\"accessToken\", newSsoOidcToken.accessToken);\n validateTokenKey(\"expiresIn\", newSsoOidcToken.expiresIn);\n const newTokenExpiration = new Date(Date.now() + newSsoOidcToken.expiresIn * 1e3);\n try {\n await writeSSOTokenToFile(ssoSessionName, {\n ...ssoToken,\n accessToken: newSsoOidcToken.accessToken,\n expiresAt: newTokenExpiration.toISOString(),\n refreshToken: newSsoOidcToken.refreshToken\n });\n } catch (error) {\n }\n return {\n token: newSsoOidcToken.accessToken,\n expiration: newTokenExpiration\n };\n } catch (error) {\n validateTokenExpiry(existingToken);\n return existingToken;\n }\n}, \"fromSso\");\n\n// src/fromStatic.ts\n\nvar fromStatic = /* @__PURE__ */ __name(({ token, logger }) => async () => {\n logger == null ? void 0 : logger.debug(\"@aws-sdk/token-providers\", \"fromStatic\");\n if (!token || !token.token) {\n throw new import_property_provider.TokenProviderError(`Please pass a valid token to fromStatic`, false);\n }\n return token;\n}, \"fromStatic\");\n\n// src/nodeProvider.ts\n\nvar nodeProvider = /* @__PURE__ */ __name((init = {}) => (0, import_property_provider.memoize)(\n (0, import_property_provider.chain)(fromSso(init), async () => {\n throw new import_property_provider.TokenProviderError(\"Could not load token from any providers\", false);\n }),\n (token) => token.expiration !== void 0 && token.expiration.getTime() - Date.now() < 3e5,\n (token) => token.expiration !== void 0\n), \"nodeProvider\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromSso,\n fromStatic,\n nodeProvider\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n ConditionObject: () => import_util_endpoints.ConditionObject,\n DeprecatedObject: () => import_util_endpoints.DeprecatedObject,\n EndpointError: () => import_util_endpoints.EndpointError,\n EndpointObject: () => import_util_endpoints.EndpointObject,\n EndpointObjectHeaders: () => import_util_endpoints.EndpointObjectHeaders,\n EndpointObjectProperties: () => import_util_endpoints.EndpointObjectProperties,\n EndpointParams: () => import_util_endpoints.EndpointParams,\n EndpointResolverOptions: () => import_util_endpoints.EndpointResolverOptions,\n EndpointRuleObject: () => import_util_endpoints.EndpointRuleObject,\n ErrorRuleObject: () => import_util_endpoints.ErrorRuleObject,\n EvaluateOptions: () => import_util_endpoints.EvaluateOptions,\n Expression: () => import_util_endpoints.Expression,\n FunctionArgv: () => import_util_endpoints.FunctionArgv,\n FunctionObject: () => import_util_endpoints.FunctionObject,\n FunctionReturn: () => import_util_endpoints.FunctionReturn,\n ParameterObject: () => import_util_endpoints.ParameterObject,\n ReferenceObject: () => import_util_endpoints.ReferenceObject,\n ReferenceRecord: () => import_util_endpoints.ReferenceRecord,\n RuleSetObject: () => import_util_endpoints.RuleSetObject,\n RuleSetRules: () => import_util_endpoints.RuleSetRules,\n TreeRuleObject: () => import_util_endpoints.TreeRuleObject,\n awsEndpointFunctions: () => awsEndpointFunctions,\n getUserAgentPrefix: () => getUserAgentPrefix,\n isIpAddress: () => import_util_endpoints.isIpAddress,\n partition: () => partition,\n resolveEndpoint: () => import_util_endpoints.resolveEndpoint,\n setPartitionInfo: () => setPartitionInfo,\n useDefaultPartitionInfo: () => useDefaultPartitionInfo\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/aws.ts\n\n\n// src/lib/aws/isVirtualHostableS3Bucket.ts\n\n\n// src/lib/isIpAddress.ts\nvar import_util_endpoints = require(\"@smithy/util-endpoints\");\n\n// src/lib/aws/isVirtualHostableS3Bucket.ts\nvar isVirtualHostableS3Bucket = /* @__PURE__ */ __name((value, allowSubDomains = false) => {\n if (allowSubDomains) {\n for (const label of value.split(\".\")) {\n if (!isVirtualHostableS3Bucket(label)) {\n return false;\n }\n }\n return true;\n }\n if (!(0, import_util_endpoints.isValidHostLabel)(value)) {\n return false;\n }\n if (value.length < 3 || value.length > 63) {\n return false;\n }\n if (value !== value.toLowerCase()) {\n return false;\n }\n if ((0, import_util_endpoints.isIpAddress)(value)) {\n return false;\n }\n return true;\n}, \"isVirtualHostableS3Bucket\");\n\n// src/lib/aws/parseArn.ts\nvar parseArn = /* @__PURE__ */ __name((value) => {\n const segments = value.split(\":\");\n if (segments.length < 6)\n return null;\n const [arn, partition2, service, region, accountId, ...resourceId] = segments;\n if (arn !== \"arn\" || partition2 === \"\" || service === \"\" || resourceId[0] === \"\")\n return null;\n return {\n partition: partition2,\n service,\n region,\n accountId,\n resourceId: resourceId[0].includes(\"/\") ? resourceId[0].split(\"/\") : resourceId\n };\n}, \"parseArn\");\n\n// src/lib/aws/partitions.json\nvar partitions_default = {\n partitions: [{\n id: \"aws\",\n outputs: {\n dnsSuffix: \"amazonaws.com\",\n dualStackDnsSuffix: \"api.aws\",\n implicitGlobalRegion: \"us-east-1\",\n name: \"aws\",\n supportsDualStack: true,\n supportsFIPS: true\n },\n regionRegex: \"^(us|eu|ap|sa|ca|me|af|il)\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {\n \"af-south-1\": {\n description: \"Africa (Cape Town)\"\n },\n \"ap-east-1\": {\n description: \"Asia Pacific (Hong Kong)\"\n },\n \"ap-northeast-1\": {\n description: \"Asia Pacific (Tokyo)\"\n },\n \"ap-northeast-2\": {\n description: \"Asia Pacific (Seoul)\"\n },\n \"ap-northeast-3\": {\n description: \"Asia Pacific (Osaka)\"\n },\n \"ap-south-1\": {\n description: \"Asia Pacific (Mumbai)\"\n },\n \"ap-south-2\": {\n description: \"Asia Pacific (Hyderabad)\"\n },\n \"ap-southeast-1\": {\n description: \"Asia Pacific (Singapore)\"\n },\n \"ap-southeast-2\": {\n description: \"Asia Pacific (Sydney)\"\n },\n \"ap-southeast-3\": {\n description: \"Asia Pacific (Jakarta)\"\n },\n \"ap-southeast-4\": {\n description: \"Asia Pacific (Melbourne)\"\n },\n \"aws-global\": {\n description: \"AWS Standard global region\"\n },\n \"ca-central-1\": {\n description: \"Canada (Central)\"\n },\n \"ca-west-1\": {\n description: \"Canada West (Calgary)\"\n },\n \"eu-central-1\": {\n description: \"Europe (Frankfurt)\"\n },\n \"eu-central-2\": {\n description: \"Europe (Zurich)\"\n },\n \"eu-north-1\": {\n description: \"Europe (Stockholm)\"\n },\n \"eu-south-1\": {\n description: \"Europe (Milan)\"\n },\n \"eu-south-2\": {\n description: \"Europe (Spain)\"\n },\n \"eu-west-1\": {\n description: \"Europe (Ireland)\"\n },\n \"eu-west-2\": {\n description: \"Europe (London)\"\n },\n \"eu-west-3\": {\n description: \"Europe (Paris)\"\n },\n \"il-central-1\": {\n description: \"Israel (Tel Aviv)\"\n },\n \"me-central-1\": {\n description: \"Middle East (UAE)\"\n },\n \"me-south-1\": {\n description: \"Middle East (Bahrain)\"\n },\n \"sa-east-1\": {\n description: \"South America (Sao Paulo)\"\n },\n \"us-east-1\": {\n description: \"US East (N. Virginia)\"\n },\n \"us-east-2\": {\n description: \"US East (Ohio)\"\n },\n \"us-west-1\": {\n description: \"US West (N. California)\"\n },\n \"us-west-2\": {\n description: \"US West (Oregon)\"\n }\n }\n }, {\n id: \"aws-cn\",\n outputs: {\n dnsSuffix: \"amazonaws.com.cn\",\n dualStackDnsSuffix: \"api.amazonwebservices.com.cn\",\n implicitGlobalRegion: \"cn-northwest-1\",\n name: \"aws-cn\",\n supportsDualStack: true,\n supportsFIPS: true\n },\n regionRegex: \"^cn\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {\n \"aws-cn-global\": {\n description: \"AWS China global region\"\n },\n \"cn-north-1\": {\n description: \"China (Beijing)\"\n },\n \"cn-northwest-1\": {\n description: \"China (Ningxia)\"\n }\n }\n }, {\n id: \"aws-us-gov\",\n outputs: {\n dnsSuffix: \"amazonaws.com\",\n dualStackDnsSuffix: \"api.aws\",\n implicitGlobalRegion: \"us-gov-west-1\",\n name: \"aws-us-gov\",\n supportsDualStack: true,\n supportsFIPS: true\n },\n regionRegex: \"^us\\\\-gov\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {\n \"aws-us-gov-global\": {\n description: \"AWS GovCloud (US) global region\"\n },\n \"us-gov-east-1\": {\n description: \"AWS GovCloud (US-East)\"\n },\n \"us-gov-west-1\": {\n description: \"AWS GovCloud (US-West)\"\n }\n }\n }, {\n id: \"aws-iso\",\n outputs: {\n dnsSuffix: \"c2s.ic.gov\",\n dualStackDnsSuffix: \"c2s.ic.gov\",\n implicitGlobalRegion: \"us-iso-east-1\",\n name: \"aws-iso\",\n supportsDualStack: false,\n supportsFIPS: true\n },\n regionRegex: \"^us\\\\-iso\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {\n \"aws-iso-global\": {\n description: \"AWS ISO (US) global region\"\n },\n \"us-iso-east-1\": {\n description: \"US ISO East\"\n },\n \"us-iso-west-1\": {\n description: \"US ISO WEST\"\n }\n }\n }, {\n id: \"aws-iso-b\",\n outputs: {\n dnsSuffix: \"sc2s.sgov.gov\",\n dualStackDnsSuffix: \"sc2s.sgov.gov\",\n implicitGlobalRegion: \"us-isob-east-1\",\n name: \"aws-iso-b\",\n supportsDualStack: false,\n supportsFIPS: true\n },\n regionRegex: \"^us\\\\-isob\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {\n \"aws-iso-b-global\": {\n description: \"AWS ISOB (US) global region\"\n },\n \"us-isob-east-1\": {\n description: \"US ISOB East (Ohio)\"\n }\n }\n }, {\n id: \"aws-iso-e\",\n outputs: {\n dnsSuffix: \"cloud.adc-e.uk\",\n dualStackDnsSuffix: \"cloud.adc-e.uk\",\n implicitGlobalRegion: \"eu-isoe-west-1\",\n name: \"aws-iso-e\",\n supportsDualStack: false,\n supportsFIPS: true\n },\n regionRegex: \"^eu\\\\-isoe\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {}\n }, {\n id: \"aws-iso-f\",\n outputs: {\n dnsSuffix: \"csp.hci.ic.gov\",\n dualStackDnsSuffix: \"csp.hci.ic.gov\",\n implicitGlobalRegion: \"us-isof-south-1\",\n name: \"aws-iso-f\",\n supportsDualStack: false,\n supportsFIPS: true\n },\n regionRegex: \"^us\\\\-isof\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {}\n }],\n version: \"1.1\"\n};\n\n// src/lib/aws/partition.ts\nvar selectedPartitionsInfo = partitions_default;\nvar selectedUserAgentPrefix = \"\";\nvar partition = /* @__PURE__ */ __name((value) => {\n const { partitions } = selectedPartitionsInfo;\n for (const partition2 of partitions) {\n const { regions, outputs } = partition2;\n for (const [region, regionData] of Object.entries(regions)) {\n if (region === value) {\n return {\n ...outputs,\n ...regionData\n };\n }\n }\n }\n for (const partition2 of partitions) {\n const { regionRegex, outputs } = partition2;\n if (new RegExp(regionRegex).test(value)) {\n return {\n ...outputs\n };\n }\n }\n const DEFAULT_PARTITION = partitions.find((partition2) => partition2.id === \"aws\");\n if (!DEFAULT_PARTITION) {\n throw new Error(\n \"Provided region was not found in the partition array or regex, and default partition with id 'aws' doesn't exist.\"\n );\n }\n return {\n ...DEFAULT_PARTITION.outputs\n };\n}, \"partition\");\nvar setPartitionInfo = /* @__PURE__ */ __name((partitionsInfo, userAgentPrefix = \"\") => {\n selectedPartitionsInfo = partitionsInfo;\n selectedUserAgentPrefix = userAgentPrefix;\n}, \"setPartitionInfo\");\nvar useDefaultPartitionInfo = /* @__PURE__ */ __name(() => {\n setPartitionInfo(partitions_default, \"\");\n}, \"useDefaultPartitionInfo\");\nvar getUserAgentPrefix = /* @__PURE__ */ __name(() => selectedUserAgentPrefix, \"getUserAgentPrefix\");\n\n// src/aws.ts\nvar awsEndpointFunctions = {\n isVirtualHostableS3Bucket,\n parseArn,\n partition\n};\nimport_util_endpoints.customEndpointFunctions.aws = awsEndpointFunctions;\n\n// src/resolveEndpoint.ts\n\n\n// src/types/EndpointError.ts\n\n\n// src/types/EndpointRuleObject.ts\n\n\n// src/types/ErrorRuleObject.ts\n\n\n// src/types/RuleSetObject.ts\n\n\n// src/types/TreeRuleObject.ts\n\n\n// src/types/shared.ts\n\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n awsEndpointFunctions,\n partition,\n setPartitionInfo,\n useDefaultPartitionInfo,\n getUserAgentPrefix,\n isIpAddress,\n resolveEndpoint,\n EndpointError\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n UA_APP_ID_ENV_NAME: () => UA_APP_ID_ENV_NAME,\n UA_APP_ID_INI_NAME: () => UA_APP_ID_INI_NAME,\n crtAvailability: () => crtAvailability,\n defaultUserAgent: () => defaultUserAgent\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_node_config_provider = require(\"@smithy/node-config-provider\");\nvar import_os = require(\"os\");\nvar import_process = require(\"process\");\n\n// src/crt-availability.ts\nvar crtAvailability = {\n isCrtAvailable: false\n};\n\n// src/is-crt-available.ts\nvar isCrtAvailable = /* @__PURE__ */ __name(() => {\n if (crtAvailability.isCrtAvailable) {\n return [\"md/crt-avail\"];\n }\n return null;\n}, \"isCrtAvailable\");\n\n// src/index.ts\nvar UA_APP_ID_ENV_NAME = \"AWS_SDK_UA_APP_ID\";\nvar UA_APP_ID_INI_NAME = \"sdk-ua-app-id\";\nvar defaultUserAgent = /* @__PURE__ */ __name(({ serviceId, clientVersion }) => {\n const sections = [\n // sdk-metadata\n [\"aws-sdk-js\", clientVersion],\n // ua-metadata\n [\"ua\", \"2.0\"],\n // os-metadata\n [`os/${(0, import_os.platform)()}`, (0, import_os.release)()],\n // language-metadata\n // ECMAScript edition doesn't matter in JS, so no version needed.\n [\"lang/js\"],\n [\"md/nodejs\", `${import_process.versions.node}`]\n ];\n const crtAvailable = isCrtAvailable();\n if (crtAvailable) {\n sections.push(crtAvailable);\n }\n if (serviceId) {\n sections.push([`api/${serviceId}`, clientVersion]);\n }\n if (import_process.env.AWS_EXECUTION_ENV) {\n sections.push([`exec-env/${import_process.env.AWS_EXECUTION_ENV}`]);\n }\n const appIdPromise = (0, import_node_config_provider.loadConfig)({\n environmentVariableSelector: (env2) => env2[UA_APP_ID_ENV_NAME],\n configFileSelector: (profile) => profile[UA_APP_ID_INI_NAME],\n default: void 0\n })();\n let resolvedUserAgent = void 0;\n return async () => {\n if (!resolvedUserAgent) {\n const appId = await appIdPromise;\n resolvedUserAgent = appId ? [...sections, [`app/${appId}`]] : [...sections];\n }\n return resolvedUserAgent;\n };\n}, \"defaultUserAgent\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n crtAvailability,\n UA_APP_ID_ENV_NAME,\n UA_APP_ID_INI_NAME,\n defaultUserAgent\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Database = void 0;\nconst entity_1 = require(\"./entity\");\nconst relationship_1 = require(\"./relationship\");\nclass Database {\n static entitiesOnly(entities) {\n return new Database(entities, relationship_1.NO_RELATIONSHIPS);\n }\n constructor(entities, relationships) {\n this.idCtr = 0;\n this.schema = {\n ...entities,\n ...relationships({\n relationship: (fromKey, toKey) => (0, relationship_1.relationshipCollection)((id) => this.get(fromKey, id), (id) => this.get(toKey, id)),\n }),\n };\n }\n id() {\n return `${this.idCtr++}`;\n }\n /**\n * Allocate an ID and store\n */\n allocate(key, entity) {\n return this.store(key, this.e(entity));\n }\n /**\n * Store with a preallocated ID\n */\n store(key, entity) {\n const coll = this.schema[key];\n coll.add(entity);\n return entity;\n }\n /**\n * Get an entity by key\n */\n get(key, id) {\n const coll = this.schema[key];\n const ret = coll.entities.get(typeof id === 'string' ? id : id.$ref);\n if (!ret) {\n throw new Error(`No such ${String(key)}: ${id}`);\n }\n return ret;\n }\n /**\n * All entities of a given type\n */\n all(key) {\n const coll = this.schema[key];\n return Array.from(coll.entities.values());\n }\n /**\n * Lookup an entity by index\n */\n lookup(key, index, lookup, value) {\n const coll = this.schema[key];\n const ids = coll.indexes[index].lookups[lookup](value);\n return addOnlyMethod(ids.map((id) => coll.entities.get(id)), `${String(key)} with ${String(index)} ${String(lookup)} ${JSON.stringify(value)}`);\n }\n /**\n * Allocate an ID and store if the entity does not yet exist\n */\n findOrAllocate(key, index, lookup, entity) {\n const res = this.lookup(key, index, lookup, entity[index]);\n if (res.length) {\n return res.only();\n }\n return this.allocate(key, entity);\n }\n link(key, from, to, attributes) {\n const col = this.schema[key];\n col.add(from, to, attributes);\n }\n /**\n * Follow a link\n */\n follow(key, from) {\n var _a;\n const col = this.schema[key];\n const toLinks = (_a = col.forward.get(from.$id)) !== null && _a !== void 0 ? _a : [];\n const ret = toLinks.map((i) => ({ entity: col.toColl(i.$id), ...removeId(i) }));\n return addOnlyMethod(ret, `${String(key)} from ${from}`);\n }\n /**\n * Follow incoming links backwards\n */\n incoming(key, to) {\n var _a;\n const col = this.schema[key];\n const fromIds = (_a = col.backward.get(to.$id)) !== null && _a !== void 0 ? _a : [];\n const ret = fromIds.map((i) => ({ entity: col.fromColl(i.$id), ...removeId(i) }));\n return addOnlyMethod(ret, `${String(key)} to ${to}`);\n }\n e(entity) {\n return {\n $id: this.id(),\n ...entity,\n };\n }\n /**\n * Turn the current database collection into something that can be stored.\n */\n save() {\n return {\n idCtr: this.idCtr,\n schema: dehydrate(this.schema),\n };\n function dehydrate(x) {\n if ((0, entity_1.isEntityCollection)(x)) {\n return x.dehydrate();\n }\n if ((0, relationship_1.isRelationshipCollection)(x)) {\n return x.dehydrate();\n }\n if (Array.isArray(x)) {\n return x.map(dehydrate);\n }\n if (!!x && typeof x === 'object') {\n return Object.fromEntries(Object.entries(x).map(([k, v]) => [k, dehydrate(v)]));\n }\n return x;\n }\n }\n load(db) {\n this.idCtr = db.idCtr;\n hydrate(this.schema, db.schema);\n function hydrate(proto, x) {\n if ((0, entity_1.isEntityCollection)(proto)) {\n proto.hydrateFrom(x);\n }\n if ((0, relationship_1.isRelationshipCollection)(proto)) {\n proto.hydrateFrom(x);\n }\n if (Array.isArray(x)) {\n x.forEach(hydrate);\n }\n if (!!proto && typeof proto === 'object' && !!x && typeof x === 'object') {\n for (const [k, v] of Object.entries(proto)) {\n hydrate(v, x[k]);\n }\n }\n }\n }\n}\nexports.Database = Database;\nfunction removeId(x) {\n const ret = { ...x };\n delete ret.$id;\n return ret;\n}\nfunction addOnlyMethod(xs, description) {\n return Object.defineProperties(xs, {\n only: {\n enumerable: false,\n value: () => {\n if (xs.length !== 1) {\n throw new Error(`Expected exactly 1 ${description}, found ${xs.length}`);\n }\n return xs[0];\n },\n },\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQXVHO0FBQ3ZHLGlEQU13QjtBQVN4QixNQUFhLFFBQVE7SUFDWixNQUFNLENBQUMsWUFBWSxDQUFvQixRQUFZO1FBQ3hELE9BQU8sSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLCtCQUFnQixDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUtELFlBQVksUUFBWSxFQUFFLGFBQWtEO1FBRnBFLFVBQUssR0FBRyxDQUFDLENBQUM7UUFHaEIsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLEdBQUcsUUFBUTtZQUNYLEdBQUcsYUFBYSxDQUFDO2dCQUNmLFlBQVksRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUMvQixJQUFBLHFDQUFzQixFQUNwQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEVBQzdCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FDNUI7YUFDSixDQUFDO1NBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTSxFQUFFO1FBQ1AsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVEsQ0FBcUIsR0FBTSxFQUFFLE1BQWdDO1FBQzFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBcUIsR0FBTSxFQUFFLE1BQXlCO1FBQ2hFLE1BQU0sSUFBSSxHQUEwQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBUSxDQUFD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bnQiOlsiaW1wb3J0IHsgRW50aXR5LCBFbnRpdHlDb2xsZWN0aW9uLCBFbnRpdHlJbmRleCwgaXNFbnRpdHlDb2xsZWN0aW9uLCBQbGFpbiwgUmVmZXJlbmNlIH0gZnJvbSAnLi9lbnRpdHknO1xuaW1wb3J0IHtcbiAgaXNSZWxhdGlvbnNoaXBDb2xsZWN0aW9uLFxuICBOT19SRUxBVElPTlNISVBTLFxuICBSZWxhdGlvbnNoaXAsXG4gIHJlbGF0aW9uc2hpcENvbGxlY3Rpb24sXG4gIFJlbGF0aW9uc2hpcENvbGxlY3Rpb24sXG59IGZyb20gJy4vcmVsYXRpb25zaGlwJztcblxuZXhwb3J0IGludGVyZmFjZSBSZWxhdGlvbnNoaXBzQnVpbGRlcjxFUyBleHRlbmRzIG9iamVjdD4ge1xuICByZWxhdGlvbnNoaXA8UiBleHRlbmRzIFJlbGF0aW9uc2hpcDxhbnksIGFueSwgYW55Pj4oXG4gICAgZnJvbUtleTogS2V5c0ZvcjxFUywgRW50aXR5Q29sbGVjdGlvbjxSWydmcm9tJ10sIGFueT4+LFxuICAgIHRvS2V5OiBLZXlzRm9yPEVTLCBFbnRpdHlDb2xsZWN0aW9uPFJbJ3RvJ10sIGFueT4+LFxuICApOiBSZWxhdGlvbnNoaXBDb2xsZWN0aW9uPFI+O1xufVxuXG5leHBvcnQgY2xhc3MgRGF0YWJhc2U8RVMgZXh0ZW5kcyBvYmplY3QsIFJTIGV4dGVuZHMgb2JqZWN0PiB7XG4gIHB1YmxpYyBzdGF0aWMgZW50aXRpZXNPbmx5PEVTIGV4dGVuZHMgb2JqZWN0PihlbnRpdGllczogRVMpOiBEYXRhYmFzZTxFUywge30+IHtcbiAgICByZXR1cm4gbmV3IERhdGFiYXNlKGVudGl0aWVzLCBOT19SRUxBVElPTlNISVBTKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2NoZW1hOiBFUyAmIFJTO1xuICBwcml2YXRlIGlkQ3RyID0gMDtcblxuICBjb25zdHJ1Y3RvcihlbnRpdGllczogRVMsIHJlbGF0aW9uc2hpcHM6ICh4OiBSZWxhdGlvbnNoaXBzQnVpbGRlcjxFUz4pID0+IFJTKSB7XG4gICAgdGhpcy5zY2hlbWEgPSB7XG4gICAgICAuLi5lbnRpdGllcyxcbiAgICAgIC4uLnJlbGF0aW9uc2hpcHMoe1xuICAgICAgICByZWxhdGlvbnNoaXA6IChmcm9tS2V5LCB0b0tleSkgPT5cbiAgICAgICAgICByZWxhdGlvbnNoaXBDb2xsZWN0aW9uKFxuICAgICAgICAgICAgKGlkKSA9PiB0aGlzLmdldChmcm9tS2V5LCBpZCksXG4gICAgICAgICAgICAoaWQpID0+IHRoaXMuZ2V0KHRvS2V5LCBpZCksXG4gICAgICAgICAgKSxcbiAgICAgIH0pLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgaWQoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuaWRDdHIrK31gO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG9jYXRlIGFuIElEIGFuZCBzdG9yZVxuICAgKi9cbiAgcHVibGljIGFsbG9jYXRlPEsgZXh0ZW5kcyBrZXlvZiBFUz4oa2V5OiBLLCBlbnRpdHk6IFBsYWluPEVudGl0eVR5cGU8RVNbS10+Pik6IEVudGl0eVR5cGU8RVNbS10+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZShrZXksIHRoaXMuZShlbnRpdHkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9yZSB3aXRoIGEgcHJlYWxsb2NhdGVkIElEXG4gICAqL1xuICBwdWJsaWMgc3RvcmU8SyBleHRlbmRzIGtleW9mIEVTPihrZXk6IEssIGVudGl0eTogRW50aXR5VHlwZTxFU1tLXT4pOiBFbnRpdHlUeXBlPEVTW0tdPiB7XG4gICAgY29uc3QgY29sbDogRW50aXR5Q29sbGVjdGlvbjxhbnk+ID0gdGhpcy5zY2hlbWFba2V5XSBhcyBhbnk7XG4gICAgY29sbC5hZGQoZW50aXR5KTtcbiAgICByZXR1cm4gZW50aXR5IGFzIGFueTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYW4gZW50aXR5IGJ5IGtleVxuICAgKi9cbiAgcHVibGljIGdldDxLIGV4dGVuZHMga2V5b2YgRVM+KGtleTogSywgaWQ6IHN0cmluZyB8IFJlZmVyZW5jZTxFbnRpdHlUeXBlPEVTW0tdPj4pOiBFbnRpdHlUeXBlPEVTW0tdPiB7XG4gICAgY29uc3QgY29sbDogRW50aXR5Q29sbGVjdGlvbjxhbnk+ID0gdGhpcy5zY2hlbWFba2V5XSBhcyBhbnk7XG4gICAgY29uc3QgcmV0ID0gY29sbC5lbnRpdGllcy5nZXQodHlwZW9mIGlkID09PSAnc3RyaW5nJyA/IGlkIDogaWQuJHJlZik7XG4gICAgaWYgKCFyZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gc3VjaCAke1N0cmluZyhrZXkpfTogJHtpZH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGwgZW50aXRpZXMgb2YgYSBnaXZlbiB0eXBlXG4gICAqL1xuICBwdWJsaWMgYWxsPEsgZXh0ZW5kcyBrZXlvZiBFUz4oa2V5OiBLKTogQXJyYXk8RW50aXR5VHlwZTxFU1tLXT4+IHtcbiAgICBjb25zdCBjb2xsOiBFbnRpdHlDb2xsZWN0aW9uPGFueT4gPSB0aGlzLnNjaGVtYVtrZXldIGFzIGFueTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShjb2xsLmVudGl0aWVzLnZhbHVlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb29rdXAgYW4gZW50aXR5IGJ5IGluZGV4XG4gICAqL1xuICBwdWJsaWMgbG9va3VwPEsgZXh0ZW5kcyBrZXlvZiBFUywgSSBleHRlbmRzIEluZGV4TmFtZXNPZjxFU1tLXT4+KFxuICAgIGtleTogSyxcbiAgICBpbmRleDogSSxcbiAgICBsb29rdXA6IEluZGV4T2Y8RVNbS10sIEk+Wydsb29rdXBzJ10sXG4gICAgdmFsdWU6IEluZGV4T2Y8RVNbS10sIEk+Wyd2YWx1ZVR5cGUnXSxcbiAgKTogUmljaFJlYWRvbmx5QXJyYXk8RW50aXR5VHlwZTxFU1tLXT4+IHtcbiAgICBjb25zdCBjb2xsOiBFbnRpdHlDb2xsZWN0aW9uPGFueT4gPSB0aGlzLnNjaGVtYVtrZXldIGFzIGFueTtcbiAgICBjb25zdCBpZHMgPSAoY29sbC5pbmRleGVzIGFzIGFueSlbaW5kZXhdLmxvb2t1cHNbbG9va3VwXSh2YWx1ZSk7XG4gICAgcmV0dXJuIGFkZE9ubHlNZXRob2QoXG4gICAgICBpZHMubWFwKChpZDogc3RyaW5nKSA9PiBjb2xsLmVudGl0aWVzLmdldChpZCkpLFxuICAgICAgYCR7U3RyaW5nKGtleSl9IHdpdGggJHtTdHJpbmcoaW5kZXgpfSAke1N0cmluZyhsb29rdXApfSAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1gLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWxsb2NhdGUgYW4gSUQgYW5kIHN0b3JlIGlmIHRoZSBlbnRpdHkgZG9lcyBub3QgeWV0IGV4aXN0XG4gICAqL1xuICBwdWJsaWMgZmluZE9yQWxsb2NhdGU8SyBleHRlbmRzIGtleW9mIEVTLCBJIGV4dGVuZHMga2V5b2YgUGxhaW48RW50aXR5VHlwZTxFU1tLXT4+ICYgSW5kZXhOYW1lc09mPEVTW0tdPj4oXG4gICAga2V5OiBLLFxuICAgIGluZGV4OiBJLFxuICAgIGxvb2t1cDogSW5kZXhPZjxFU1tLXSwgST5bJ2xvb2t1cHMnXSxcbiAgICBlbnRpdHk6IFBsYWluPEVudGl0eVR5cGU8RVNbS10+PixcbiAgKTogRW50aXR5VHlwZTxFU1tLXT4ge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMubG9va3VwKGtleSwgaW5kZXgsIGxvb2t1cCwgZW50aXR5W2luZGV4XSk7XG4gICAgaWYgKHJlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiByZXMub25seSgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hbGxvY2F0ZShrZXksIGVudGl0eSk7XG4gIH1cblxuICAvKipcbiAgICogUmVjb3JkIGEgcmVsYXRpb25zaGlwIGJldHdlZW4gdHdvIGVudGl0aWVzXG4gICAqXG4gICAqIE92ZXJsb2FkIHRvIGFjY291bnQgZm9yIHdoZXRoZXIgd2UgaGF2ZSBhdHRyaWJ1dGVzIG9yIG5vdC5cbiAgICovXG4gIHB1YmxpYyBsaW5rPEsgZXh0ZW5kcyBSZWxXQXR0cnM8UlM+PihcbiAgICBrZXk6IEssXG4gICAgZnJvbTogUmVsVHlwZTxSU1tLXT5bJ2Zyb20nXSxcbiAgICB0bzogUmVsVHlwZTxSU1tLXT5bJ3RvJ10sXG4gICAgYXR0cmlidXRlczogUmVsVHlwZTxSU1tLXT5bJ2F0dHInXSxcbiAgKTogdm9pZDtcbiAgcHVibGljIGxpbms8SyBleHRlbmRzIFJlbFdvQXR0cnM8UlM+PihrZXk6IEssIGZyb206IFJlbFR5cGU8UlNbS10+Wydmcm9tJ10sIHRvOiBSZWxUeXBlPFJTW0tdPlsndG8nXSk6IHZvaWQ7XG4gIHB1YmxpYyBsaW5rPEsgZXh0ZW5kcyBrZXlvZiBSUz4oXG4gICAga2V5OiBLLFxuICAgIGZyb206IFJlbFR5cGU8UlNbS10+Wydmcm9tJ10sXG4gICAgdG86IFJlbFR5cGU8UlNbS10+Wyd0byddLFxuICAgIGF0dHJpYnV0ZXM/OiBSZWxUeXBlPFJTW0tdPlsnYXR0ciddLFxuICApIHtcbiAgICBjb25zdCBjb2w6IFJlbGF0aW9uc2hpcENvbGxlY3Rpb248YW55PiA9IHRoaXMuc2NoZW1hW2tleV0gYXMgYW55O1xuICAgIGNvbC5hZGQoZnJvbSwgdG8sIGF0dHJpYnV0ZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvbGxvdyBhIGxpbmtcbiAgICovXG4gIHB1YmxpYyBmb2xsb3c8SyBleHRlbmRzIGtleW9mIFJTPihcbiAgICBrZXk6IEssXG4gICAgZnJvbTogUmVsVHlwZTxSU1tLXT5bJ2Zyb20nXSxcbiAgKTogUmljaFJlYWRvbmx5QXJyYXk8TGluazxSZWxUeXBlPFJTW0tdPlsndG8nXSwgUmVsVHlwZTxSU1tLXT5bJ2F0dHInXT4+IHtcbiAgICBjb25zdCBjb2w6IFJlbGF0aW9uc2hpcENvbGxlY3Rpb248YW55PiA9IHRoaXMuc2NoZW1hW2tleV0gYXMgYW55O1xuICAgIGNvbnN0IHRvTGlua3MgPSBjb2wuZm9yd2FyZC5nZXQoZnJvbS4kaWQpID8/IFtdO1xuICAgIGNvbnN0IHJldCA9IHRvTGlua3MubWFwKChpKSA9PiAoeyBlbnRpdHk6IGNvbC50b0NvbGwoaS4kaWQpLCAuLi5yZW1vdmVJZChpKSB9IGFzIGFueSkpO1xuXG4gICAgcmV0dXJuIGFkZE9ubHlNZXRob2QocmV0LCBgJHtTdHJpbmcoa2V5KX0gZnJvbSAke2Zyb219YCk7XG4gIH1cblxuICAvKipcbiAgICogRm9sbG93IGluY29taW5nIGxpbmtzIGJhY2t3YXJkc1xuICAgKi9cbiAgcHVibGljIGluY29taW5nPEsgZXh0ZW5kcyBrZXlvZiBSUz4oXG4gICAga2V5OiBLLFxuICAgIHRvOiBSZWxUeXBlPFJTW0tdPlsndG8nXSxcbiAgKTogUmljaFJlYWRvbmx5QXJyYXk8TGluazxSZWxUeXBlPFJTW0tdPlsnZnJvbSddLCBSZWxUeXBlPFJTW0tdPlsnYXR0ciddPj4ge1xuICAgIGNvbnN0IGNvbDogUmVsYXRpb25zaGlwQ29sbGVjdGlvbjxhbnk+ID0gdGhpcy5zY2hlbWFba2V5XSBhcyBhbnk7XG4gICAgY29uc3QgZnJvbUlkcyA9IGNvbC5iYWNrd2FyZC5nZXQodG8uJGlkKSA/PyBbXTtcbiAgICBjb25zdCByZXQgPSBmcm9tSWRzLm1hcCgoaSkgPT4gKHsgZW50aXR5OiBjb2wuZnJvbUNvbGwoaS4kaWQpLCAuLi5yZW1vdmVJZChpKSB9IGFzIGFueSkpO1xuXG4gICAgcmV0dXJuIGFkZE9ubHlNZXRob2QocmV0LCBgJHtTdHJpbmcoa2V5KX0gdG8gJHt0b31gKTtcbiAgfVxuXG4gIHB1YmxpYyBlPEUgZXh0ZW5kcyBFbnRpdHk+KGVudGl0eTogUGxhaW48RT4pOiBFIHtcbiAgICByZXR1cm4ge1xuICAgICAgJGlkOiB0aGlzLmlkKCksXG4gICAgICAuLi5lbnRpdHksXG4gICAgfSBhcyBhbnk7XG4gIH1cblxuICAvKipcbiAgICogVHVybiB0aGUgY3VycmVudCBkYXRhYmFzZSBjb2xsZWN0aW9uIGludG8gc29tZXRoaW5nIHRoYXQgY2FuIGJlIHN0b3JlZC5cbiAgICovXG4gIHB1YmxpYyBzYXZlKCk6IERlaHlkcmF0ZWREYXRhYmFzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkQ3RyOiB0aGlzLmlkQ3RyLFxuICAgICAgc2NoZW1hOiBkZWh5ZHJhdGUodGhpcy5zY2hlbWEpLFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBkZWh5ZHJhdGUoeDogdW5rbm93bik6IGFueSB7XG4gICAgICBpZiAoaXNFbnRpdHlDb2xsZWN0aW9uKHgpKSB7XG4gICAgICAgIHJldHVybiB4LmRlaHlkcmF0ZSgpO1xuICAgICAgfVxuICAgICAgaWYgKGlzUmVsYXRpb25zaGlwQ29sbGVjdGlvbih4KSkge1xuICAgICAgICByZXR1cm4geC5kZWh5ZHJhdGUoKTtcbiAgICAgIH1cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHgpKSB7XG4gICAgICAgIHJldHVybiB4Lm1hcChkZWh5ZHJhdGUpO1xuICAgICAgfVxuICAgICAgaWYgKCEheCAmJiB0eXBlb2YgeCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh4KS5tYXAoKFtrLCB2XSkgPT4gW2ssIGRlaHlkcmF0ZSh2KV0pKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB4O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2FkKGRiOiBEZWh5ZHJhdGVkRGF0YWJhc2UpIHtcbiAgICB0aGlzLmlkQ3RyID0gZGIuaWRDdHI7XG4gICAgaHlkcmF0ZSh0aGlzLnNjaGVtYSwgZGIuc2NoZW1hKTtcblxuICAgIGZ1bmN0aW9uIGh5ZHJhdGUocHJvdG86IHVua25vd24sIHg6IHVua25vd24pOiB2b2lkIHtcbiAgICAgIGlmIChpc0VudGl0eUNvbGxlY3Rpb24ocHJvdG8pKSB7XG4gICAgICAgIHByb3RvLmh5ZHJhdGVGcm9tKHgpO1xuICAgICAgfVxuICAgICAgaWYgKGlzUmVsYXRpb25zaGlwQ29sbGVjdGlvbihwcm90bykpIHtcbiAgICAgICAgcHJvdG8uaHlkcmF0ZUZyb20oeCk7XG4gICAgICB9XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh4KSkge1xuICAgICAgICB4LmZvckVhY2goaHlkcmF0ZSk7XG4gICAgICB9XG4gICAgICBpZiAoISFwcm90byAmJiB0eXBlb2YgcHJvdG8gPT09ICdvYmplY3QnICYmICEheCAmJiB0eXBlb2YgeCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMocHJvdG8pKSB7XG4gICAgICAgICAgaHlkcmF0ZSh2LCAoeCBhcyBhbnkpW2tdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5pbnRlcmZhY2UgRGVoeWRyYXRlZERhdGFiYXNlIHtcbiAgcmVhZG9ubHkgaWRDdHI6IG51bWJlcjtcbiAgcmVhZG9ubHkgc2NoZW1hOiBhbnk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUlkPEEgZXh0ZW5kcyBvYmplY3Q+KHg6IEEpOiBPbWl0PEEsICckaWQnPiB7XG4gIGNvbnN0IHJldCA9IHsgLi4ueCB9O1xuICBkZWxldGUgKHJldCBhcyBhbnkpLiRpZDtcbiAgcmV0dXJuIHJldDtcbn1cblxuZXhwb3J0IHR5cGUgTGluazxFLCBBPiA9IHsgcmVhZG9ubHkgZW50aXR5OiBFIH0gJiBBO1xuXG50eXBlIFJlbFdBdHRyczxSUz4gPSB7IFtLIGluIGtleW9mIFJTXToge30gZXh0ZW5kcyBSZWxUeXBlPFJTW0tdPlsnYXR0ciddID8gbmV2ZXIgOiBLIH1ba2V5b2YgUlNdO1xudHlwZSBSZWxXb0F0dHJzPFJTPiA9IHsgW0sgaW4ga2V5b2YgUlNdOiB7fSBleHRlbmRzIFJlbFR5cGU8UlNbS10+WydhdHRyJ10gPyBLIDogbmV2ZXIgfVtrZXlvZiBSU107XG5cbi8vIE5lY2Vzc2FyeSBiZWNhdXNlIHRoaXMgdHlwZSBtaWdodCBiZSBhIHVuaW9uXG50eXBlIEluZGV4TmFtZXNPZjxBPiA9IEEgZXh0ZW5kcyBFbnRpdHlDb2xsZWN0aW9uPGFueT4gPyBLZXlzT2ZVbmlvbjxBWydpbmRleGVzJ10+IDogbmV2ZXI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmV0dGllci9wcmV0dGllclxudHlwZSBJbmRleE9mPEVDLCBJIGV4dGVuZHMgSW5kZXhOYW1lc09mPEVDPj4gPVxuICBFQyBleHRlbmRzIEVudGl0eUNvbGxlY3Rpb248YW55PlxuICA/IEVDWydpbmRleGVzJ11bSV0gZXh0ZW5kcyBFbnRpdHlJbmRleDxhbnksIGluZmVyIEluZGV4VHlwZT5cbiAgICA/IHtcbiAgICAgICAgdmFsdWVUeXBlOiBJbmRleFR5cGU7XG4gICAgICAgIGxvb2t1cHM6IGtleW9mIEVDWydpbmRleGVzJ11bSV1bJ2xvb2t1cHMnXTtcbiAgICAgIH1cbiAgICA6IG5ldmVyXG4gIDogbmV2ZXI7XG5cbnR5cGUgRW50aXR5VHlwZTxBPiA9IEEgZXh0ZW5kcyBFbnRpdHlDb2xsZWN0aW9uPGluZmVyIEI+ID8gQiA6IG5ldmVyO1xuXG50eXBlIFJlbFR5cGU8QT4gPSBBIGV4dGVuZHMgUmVsYXRpb25zaGlwQ29sbGVjdGlvbjxpbmZlciBSPiA/IFIgOiBuZXZlcjtcblxudHlwZSBSZXNvbHZlVW5pb248VD4gPSBUIGV4dGVuZHMgVCA/IFQgOiBuZXZlcjtcblxudHlwZSBLZXlzT2ZVbmlvbjxUPiA9IGtleW9mIFJlc29sdmVVbmlvbjxUPjtcblxuZXhwb3J0IHR5cGUgRW50aXRpZXNPZjxEQj4gPSBEQiBleHRlbmRzIERhdGFiYXNlPGluZmVyIEVTLCBhbnk+ID8geyBbayBpbiBrZXlvZiBFU106IEVudGl0eVR5cGU8RVNba10+IH0gOiB7fTtcblxuZXhwb3J0IGludGVyZmFjZSBSaWNoUmVhZG9ubHlBcnJheTxBPiBleHRlbmRzIFJlYWRvbmx5QXJyYXk8QT4ge1xuICAvKipcbiAgICogUmV0dXJuIHRoZSBmaXJzdCBhbmQgb25seSBlbGVtZW50LCB0aHJvd2luZyBpZiB0aGVyZSBhcmUgIT0gMSBlbGVtZW50c1xuICAgKi9cbiAgb25seSgpOiBBO1xufVxuXG5mdW5jdGlvbiBhZGRPbmx5TWV0aG9kPEE+KHhzOiBBW10sIGRlc2NyaXB0aW9uOiBzdHJpbmcpOiBSaWNoUmVhZG9ubHlBcnJheTxBPiB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh4cywge1xuICAgIG9ubHk6IHtcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgdmFsdWU6ICgpID0+IHtcbiAgICAgICAgaWYgKHhzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgZXhhY3RseSAxICR7ZGVzY3JpcHRpb259LCBmb3VuZCAke3hzLmxlbmd0aH1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geHNbMF07XG4gICAgICB9LFxuICAgIH0sXG4gIH0pIGFzIGFueTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIGtleXMgb2YgYW4gb2JqZWN0IHRoYXQgbWFwIHRvIGEgcGFydGljdWxhciB0eXBlXG4gKi9cbnR5cGUgS2V5c0ZvcjxPIGV4dGVuZHMgb2JqZWN0LCBUPiA9IHsgW2sgaW4ga2V5b2YgT106IE9ba10gZXh0ZW5kcyBUID8gayA6IG5ldmVyIH1ba2V5b2YgT107XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.optionalCmp = exports.numberCmp = exports.stringCmp = exports.ref = exports.isEntityCollection = exports.calculatedIndex = exports.fieldIndex = exports.entityCollection = void 0;\nconst sorted_map_1 = require(\"./sorted-map\");\nfunction entityCollection() {\n const entities = new Map();\n const _indexes = {};\n function add(x) {\n entities.set(x.$id, x);\n for (const index of Object.values(_indexes)) {\n // FIXME: why can't we type this?\n index.add(x);\n }\n }\n return {\n type: 'entities',\n entities,\n indexes: _indexes,\n add,\n dehydrate: () => ({\n type: 'entities',\n entities: Array.from(validatePlainObjects(entities).values()),\n }),\n hydrateFrom: (x) => {\n entities.clear();\n for (const e of Object.values(x.entities)) {\n add(e);\n }\n },\n index(indexes) {\n // This limitation exists purely because I couldn't type it otherwise.\n // Declaring a return type of `EntityCollection` would make a lot\n // of our other type inspection code stop working (the union is hard to pick\n // apart). Since adding indexes in multiple goes is not really a use case,\n // the simpler solution is just to type it as if we replaced all indexes\n // and add a runtime check to make sure the types aren't lying.\n if (Object.keys(_indexes).length > 0) {\n throw new Error('You may only call .index() once on a new collection');\n }\n Object.assign(_indexes, indexes);\n return this;\n },\n };\n}\nexports.entityCollection = entityCollection;\n/**\n * An index that uses the value of an entity's field\n */\nfunction fieldIndex(propName, comparator) {\n return calculatedIndex((x) => x[propName], comparator);\n}\nexports.fieldIndex = fieldIndex;\n/**\n * An index that is calculated based on a function applied to an entity\n */\nfunction calculatedIndex(fn, comparator) {\n const index = [];\n return {\n add: (x) => sorted_map_1.sortedMap.add(index, comparator, fn(x), x.$id),\n lookups: {\n equals: (value) => sorted_map_1.sortedMap.findAll(index, comparator, value),\n },\n index,\n };\n}\nexports.calculatedIndex = calculatedIndex;\nfunction isEntityCollection(x) {\n return typeof x === 'object' && !!x && x.type === 'entities';\n}\nexports.isEntityCollection = isEntityCollection;\nfunction validatePlainObjects(xs) {\n for (const x of xs.values()) {\n if (x.constructor !== Object) {\n throw new Error(`Entities should be plain-text objects, got instance of ${x.constructor}`);\n }\n }\n return xs;\n}\nfunction ref(x) {\n return typeof x === 'string' ? { $ref: x } : { $ref: x.$id };\n}\nexports.ref = ref;\n/**\n * Determines whether two strings are equivalent in the current or specified locale.\n */\nfunction stringCmp(a, b) {\n return a.localeCompare(b);\n}\nexports.stringCmp = stringCmp;\n/**\n * Determines whether two numbers are equivalent.\n */\nfunction numberCmp(a, b) {\n return a - b;\n}\nexports.numberCmp = numberCmp;\n/**\n * Creates a comparator to determine equivalent of two values, using a given comparator, but allows values to be optional.\n *\n * @param frontOrder If `true`, returns so that undefined values are ordered at the front. If `false`, undefined values are ordered at the back.\n */\nfunction optionalCmp(cmp, frontOrder = true) {\n return (a, b) => {\n if (a == undefined && b != undefined) {\n return frontOrder ? -1 : 1;\n }\n if (a != undefined && b == undefined) {\n return frontOrder ? 1 : -1;\n }\n if (a == undefined && b == undefined) {\n return 0;\n }\n return cmp(a, b);\n };\n}\nexports.optionalCmp = optionalCmp;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2VudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBeUQ7QUE0RXpELFNBQWdCLGdCQUFnQjtJQUM5QixNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBYSxDQUFDO0lBQ3RDLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUVwQixTQUFTLEdBQUcsQ0FBQyxDQUFJO1FBQ2YsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMzQyxpQ0FBaUM7WUFDaEMsS0FBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLFVBQVU7UUFDaEIsUUFBUTtRQUNSLE9BQU8sRUFBRSxRQUFlO1FBQ3hCLEdBQUc7UUFDSCxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUNoQixJQUFJLEVBQUUsVUFBVTtZQUNoQixRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUM5RCxDQUFDO1FBQ0YsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDakIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2pCLEtBQUssTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3pDLEdBQUcsQ0FBQyxDQUFRLENBQUMsQ0FBQzthQUNmO1FBQ0gsQ0FBQztRQUNELEtBQUssQ0FBQyxPQUFPO1lBQ1gsc0VBQXNFO1lBQ3RFLDRFQUE0RTtZQUM1RSw0RUFBNEU7WUFDNUUsMEVBQTBFO1lB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U0FBUyxFQUFFO1lBQ3BDLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxDQUFDLElBQUksU0FBUyxJQUFJLENBQUMsSUFBSSxTQUFTLEVBQUU7WUFDcEMsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUVELE9BQU8sR0FBRyxDQUFDLENBQUUsRUFBRSxDQUFFLENBQUMsQ0FBQztJQUNyQixDQUFDLENBQUM7QUFDSixDQUFDO0FBZEQsa0NBY0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzb3J0ZWRNYXAsIFNvcnRlZE11bHRpTWFwIH0gZnJvbSAnLi9zb3J0ZWQtbWFwJztcblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHkge1xuICByZWFkb25seSAkaWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgUGxhaW48RSBleHRlbmRzIEVudGl0eT4gPSBPbWl0PEUsICckaWQnPjtcblxudHlwZSBJbmRleGVzPEEgZXh0ZW5kcyBFbnRpdHk+ID0geyBbSyBpbiBQcm9wZXJ0eUtleV06IEVudGl0eUluZGV4PEEsIGFueT4gfTtcblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlDb2xsZWN0aW9uPEEgZXh0ZW5kcyBFbnRpdHksIEkgZXh0ZW5kcyBJbmRleGVzPEVudGl0eT4gPSB7fT4ge1xuICByZWFkb25seSB0eXBlOiAnZW50aXRpZXMnO1xuICByZWFkb25seSBlbnRpdGllczogTWFwPHN0cmluZywgQT47XG4gIHJlYWRvbmx5IGluZGV4ZXM6IEk7XG5cbiAgYWRkKHg6IEEpOiB2b2lkO1xuICBkZWh5ZHJhdGUoKTogYW55O1xuICBoeWRyYXRlRnJvbSh4OiBhbnkpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBBZGQgaW5kZXhlcyB0byB0aGlzIGNvbGxlY3Rpb25cbiAgICpcbiAgICogQ3JlYXRpbmcgYW4gaW5kZXhlZCBjb2xsZWN0aW9uIGlzIGEgdHdvLXN0ZXAgb3BlcmF0aW9uIHNvIHRoYXQgd2UgY2FuIHNwZWNpZnkgdGhlXG4gICAqIEVudGl0eSB0eXBlLCBidXQgaW5mZXIgdGhlIGluZGV4IHR5cGVzIChUeXBlU2NyaXB0IGRvZXMgbm90IGFsbG93IGJvdGggc3BlY2lmeWluZyBBTkRcbiAgICogaW5mZXJyaW5nIGdlbmVyaWMgYXJndW1lbnRzIGluIGEgc2luZ2xlIGNhbGwpLlxuICAgKi9cbiAgaW5kZXg8SUkgZXh0ZW5kcyBJbmRleGVzPEE+PihpbmRleGVzOiBJSSk6IEVudGl0eUNvbGxlY3Rpb248QSwgSUk+O1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgaW5kZXggb2JqZWN0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eUluZGV4PEEgZXh0ZW5kcyBFbnRpdHksIEluZGV4VHlwZT4ge1xuICAvKipcbiAgICogVGhlIGxvb2t1cHMgdGhhdCB0aGUgaW5kZXhlZCBmaWVsZCB0eXBlIGFmZm9yZHNcbiAgICpcbiAgICogRm9yIGV4YW1wbGUsICdlcXVhbHMnLCAnbGVzc1RoYW4nLCAncHJlZml4JywgZXRjLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9va3VwczogSW5kZXhMb29rdXBzPEluZGV4VHlwZT47XG5cbiAgLyoqXG4gICAqIFRoZSBpbmRleCBkYXRhIHN0b3JlXG4gICAqL1xuICByZWFkb25seSBpbmRleDogU29ydGVkTXVsdGlNYXA8SW5kZXhUeXBlLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBBZGQgYW4gZW50aXR5IHRvIHRoZSBpbmRleFxuICAgKi9cbiAgYWRkKHg6IEEpOiB2b2lkO1xufVxuXG4vKipcbiAqIE1hcCBhIHR5cGUgdGhlIHR5cGVzIG9mIGxvb2t1cHMgd2UgY2FuIGRvIG9uIHRoYXQgdHlwZVxuICovXG5leHBvcnQgdHlwZSBJbmRleExvb2t1cHM8UD4gPSBbUF0gZXh0ZW5kcyBbc3RyaW5nXVxuICA/IFN0cmluZ0luZGV4TG9va3Vwc1xuICA6IFtQXSBleHRlbmRzIFtzdHJpbmcgfCB1bmRlZmluZWRdXG4gID8gT3B0aW9uYWxTdHJpbmdJbmRleExvb2t1cHNcbiAgOiB7fTtcblxuLyoqXG4gKiBBbGwgdGhlIGxvb2t1cHMgb24gJ3N0cmluZycgdHlwZXNcbiAqXG4gKiBXZSBjdXJyZW50bHkgb25seSBoYXZlICdlcXVhbHMnIGJ1dCB3ZSBjb3VsZCBoYXZlIG1vcmUgOilcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdJbmRleExvb2t1cHMge1xuICBlcXVhbHMoeDogc3RyaW5nKTogc3RyaW5nW107XG59XG5cbi8qKlxuICogQWxsIHRoZSBsb29rdXBzIG9uICdzdHJpbmcgfCB1bmRlZmluZWQnIHR5cGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uYWxTdHJpbmdJbmRleExvb2t1cHMge1xuICBlcXVhbHMoeDogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnRpdHlDb2xsZWN0aW9uPEEgZXh0ZW5kcyBFbnRpdHk+KCk6IEVudGl0eUNvbGxlY3Rpb248QSwge30+IHtcbiAgY29uc3QgZW50aXRpZXMgPSBuZXcgTWFwPHN0cmluZywgQT4oKTtcbiAgY29uc3QgX2luZGV4ZXMgPSB7fTtcblxuICBmdW5jdGlvbiBhZGQoeDogQSkge1xuICAgIGVudGl0aWVzLnNldCh4LiRpZCwgeCk7XG4gICAgZm9yIChjb25zdCBpbmRleCBvZiBPYmplY3QudmFsdWVzKF9pbmRleGVzKSkge1xuICAgICAgLy8gRklYTUU6IHdoeSBjYW4ndCB3ZSB0eXBlIHRoaXM/XG4gICAgICAoaW5kZXggYXMgYW55KS5hZGQoeCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnZW50aXRpZXMnLFxuICAgIGVudGl0aWVzLFxuICAgIGluZGV4ZXM6IF9pbmRleGVzIGFzIGFueSxcbiAgICBhZGQsXG4gICAgZGVoeWRyYXRlOiAoKSA9PiAoe1xuICAgICAgdHlwZTogJ2VudGl0aWVzJyxcbiAgICAgIGVudGl0aWVzOiBBcnJheS5mcm9tKHZhbGlkYXRlUGxhaW5PYmplY3RzKGVudGl0aWVzKS52YWx1ZXMoKSksXG4gICAgfSksXG4gICAgaHlkcmF0ZUZyb206ICh4KSA9PiB7XG4gICAgICBlbnRpdGllcy5jbGVhcigpO1xuICAgICAgZm9yIChjb25zdCBlIG9mIE9iamVjdC52YWx1ZXMoeC5lbnRpdGllcykpIHtcbiAgICAgICAgYWRkKGUgYXMgYW55KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGluZGV4KGluZGV4ZXMpIHtcbiAgICAgIC8vIFRoaXMgbGltaXRhdGlvbiBleGlzdHMgcHVyZWx5IGJlY2F1c2UgSSBjb3VsZG4ndCB0eXBlIGl0IG90aGVyd2lzZS5cbiAgICAgIC8vIERlY2xhcmluZyBhIHJldHVybiB0eXBlIG9mIGBFbnRpdHlDb2xsZWN0aW9uPEEsIEkgfCBJST5gIHdvdWxkIG1ha2UgYSBsb3RcbiAgICAgIC8vIG9mIG91ciBvdGhlciB0eXBlIGluc3BlY3Rpb24gY29kZSBzdG9wIHdvcmtpbmcgKHRoZSB1bmlvbiBpcyBoYXJkIHRvIHBpY2tcbiAgICAgIC8vIGFwYXJ0KS4gU2luY2UgYWRkaW5nIGluZGV4ZXMgaW4gbXVsdGlwbGUgZ29lcyBpcyBub3QgcmVhbGx5IGEgdXNlIGNhc2UsXG4gICAgICAvLyB0aGUgc2ltcGxlciBzb2x1dGlvbiBpcyBqdXN0IHRvIHR5cGUgaXQgYXMgaWYgd2UgcmVwbGFjZWQgYWxsIGluZGV4ZXNcbiAgICAgIC8vIGFuZCBhZGQgYSBydW50aW1lIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgdHlwZXMgYXJlbid0IGx5aW5nLlxuICAgICAgaWYgKE9iamVjdC5rZXlzKF9pbmRleGVzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG1heSBvbmx5IGNhbGwgLmluZGV4KCkgb25jZSBvbiBhIG5ldyBjb2xsZWN0aW9uJyk7XG4gICAgICB9XG4gICAgICBPYmplY3QuYXNzaWduKF9pbmRleGVzLCBpbmRleGVzKTtcbiAgICAgIHJldHVybiB0aGlzIGFzIGFueTtcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIEFuIGluZGV4IHRoYXQgdXNlcyB0aGUgdmFsdWUgb2YgYW4gZW50aXR5J3MgZmllbGRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpZWxkSW5kZXg8QSBleHRlbmRzIEVudGl0eSwgUCBleHRlbmRzIGtleW9mIEE+KFxuICBwcm9wTmFtZTogUCxcbiAgY29tcGFyYXRvcjogc29ydGVkTWFwLkNvbXBhcmF0b3I8QVtQXT4sXG4pOiBFbnRpdHlJbmRleDxBLCBBW1BdPiB7XG4gIHJldHVybiBjYWxjdWxhdGVkSW5kZXgoKHgpID0+IHhbcHJvcE5hbWVdLCBjb21wYXJhdG9yKTtcbn1cblxuLyoqXG4gKiBBbiBpbmRleCB0aGF0IGlzIGNhbGN1bGF0ZWQgYmFzZWQgb24gYSBmdW5jdGlvbiBhcHBsaWVkIHRvIGFuIGVudGl0eVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlZEluZGV4PEEgZXh0ZW5kcyBFbnRpdHksIEI+KGZuOiAoeDogQSkgPT4gQiwgY29tcGFyYXRvcjogc29ydGVkTWFwLkNvbXBhcmF0b3I8Qj4pIHtcbiAgY29uc3QgaW5kZXg6IFNvcnRlZE11bHRpTWFwPEIsIHN0cmluZz4gPSBbXTtcbiAgcmV0dXJuIHtcbiAgICBhZGQ6ICh4OiBBKSA9PiBzb3J0ZWRNYXAuYWRkKGluZGV4LCBjb21wYXJhdG9yLCBmbih4KSwgeC4kaWQpLFxuICAgIGxvb2t1cHM6IHtcbiAgICAgIGVxdWFsczogKHZhbHVlOiBCKSA9PiBzb3J0ZWRNYXAuZmluZEFsbChpbmRleCwgY29tcGFyYXRvciwgdmFsdWUpLFxuICAgIH0gYXMgYW55LFxuICAgIGluZGV4LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFbnRpdHlDb2xsZWN0aW9uKHg6IHVua25vd24pOiB4IGlzIEVudGl0eUNvbGxlY3Rpb248YW55PiB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgISF4ICYmICh4IGFzIGFueSkudHlwZSA9PT0gJ2VudGl0aWVzJztcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVQbGFpbk9iamVjdHM8QSBleHRlbmRzIG9iamVjdD4oeHM6IE1hcDxzdHJpbmcsIEE+KTogTWFwPHN0cmluZywgQT4ge1xuICBmb3IgKGNvbnN0IHggb2YgeHMudmFsdWVzKCkpIHtcbiAgICBpZiAoeC5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVudGl0aWVzIHNob3VsZCBiZSBwbGFpbi10ZXh0IG9iamVjdHMsIGdvdCBpbnN0YW5jZSBvZiAke3guY29uc3RydWN0b3J9YCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB4cztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWZlcmVuY2U8RSBleHRlbmRzIEVudGl0eT4ge1xuICByZWFkb25seSAkcmVmOiBFWyckaWQnXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZjxFIGV4dGVuZHMgRW50aXR5Pih4OiBFIHwgc3RyaW5nKTogUmVmZXJlbmNlPEU+IHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSAnc3RyaW5nJyA/IHsgJHJlZjogeCB9IDogeyAkcmVmOiB4LiRpZCB9O1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0d28gc3RyaW5ncyBhcmUgZXF1aXZhbGVudCBpbiB0aGUgY3VycmVudCBvciBzcGVjaWZpZWQgbG9jYWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nQ21wKGE6IHN0cmluZywgYjogc3RyaW5nKTogbnVtYmVyIHtcbiAgcmV0dXJuIGEubG9jYWxlQ29tcGFyZShiKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdHdvIG51bWJlcnMgYXJlIGVxdWl2YWxlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBudW1iZXJDbXAoYTogbnVtYmVyLCBiOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gYSAtIGI7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNvbXBhcmF0b3IgdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnQgb2YgdHdvIHZhbHVlcywgdXNpbmcgYSBnaXZlbiBjb21wYXJhdG9yLCBidXQgYWxsb3dzIHZhbHVlcyB0byBiZSBvcHRpb25hbC5cbiAqXG4gKiBAcGFyYW0gZnJvbnRPcmRlciBJZiBgdHJ1ZWAsIHJldHVybnMgc28gdGhhdCB1bmRlZmluZWQgdmFsdWVzIGFyZSBvcmRlcmVkIGF0IHRoZSBmcm9udC4gSWYgYGZhbHNlYCwgdW5kZWZpbmVkIHZhbHVlcyBhcmUgb3JkZXJlZCBhdCB0aGUgYmFjay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9wdGlvbmFsQ21wPEE+KGNtcDogKGE6IEEsIGI6IEEpID0+IG51bWJlciwgZnJvbnRPcmRlciA9IHRydWUpIHtcbiAgcmV0dXJuIChhOiBBIHwgdW5kZWZpbmVkLCBiOiBBIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgaWYgKGEgPT0gdW5kZWZpbmVkICYmIGIgIT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZnJvbnRPcmRlciA/IC0xIDogMTtcbiAgICB9XG4gICAgaWYgKGEgIT0gdW5kZWZpbmVkICYmIGIgPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZnJvbnRPcmRlciA/IDEgOiAtMTtcbiAgICB9XG4gICAgaWYgKGEgPT0gdW5kZWZpbmVkICYmIGIgPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gY21wKGEhLCBiISk7XG4gIH07XG59XG4iXX0=","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./entity\"), exports);\n__exportStar(require(\"./relationship\"), exports);\n__exportStar(require(\"./database\"), exports);\n__exportStar(require(\"./invariant\"), exports);\n__exportStar(require(\"./result\"), exports);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF5QjtBQUN6QixpREFBK0I7QUFDL0IsNkNBQTJCO0FBQzNCLDhDQUE0QjtBQUM1QiwyQ0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VudGl0eSc7XG5leHBvcnQgKiBmcm9tICcuL3JlbGF0aW9uc2hpcCc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGFiYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vaW52YXJpYW50JztcbmV4cG9ydCAqIGZyb20gJy4vcmVzdWx0JztcbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.impliesU = exports.implies = exports.evolutionInvariant = void 0;\nfunction evolutionInvariant(description, pred) {\n // TODO: Find a way\n Array.isArray(description);\n Array.isArray(pred);\n}\nexports.evolutionInvariant = evolutionInvariant;\nfunction implies(x, y) {\n return !x || y;\n}\nexports.implies = implies;\n/**\n * Implies, but treats 'undefined' as 'false'\n */\nfunction impliesU(x, y) {\n return !x || !!y;\n}\nexports.impliesU = impliesU;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52YXJpYW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ludmFyaWFudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSxTQUFnQixrQkFBa0IsQ0FBSSxXQUFtQixFQUFFLElBQStCO0lBQ3hGLG1CQUFtQjtJQUNuQixLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNCLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEIsQ0FBQztBQUpELGdEQUlDO0FBRUQsU0FBZ0IsT0FBTyxDQUFDLENBQVUsRUFBRSxDQUFVO0lBQzVDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pCLENBQUM7QUFGRCwwQkFFQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsUUFBUSxDQUFDLENBQXNCLEVBQUUsQ0FBc0I7SUFDckUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25CLENBQUM7QUFGRCw0QkFFQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEludmFyaWFudCA9IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIEV2b2x1dGlvbkludmFyaWFudFByZWQ8QT4gPSAocHJldmlvdXM6IEEsIGN1cnJlbnQ6IEEpID0+IGJvb2xlYW47XG5cbmV4cG9ydCBmdW5jdGlvbiBldm9sdXRpb25JbnZhcmlhbnQ8QT4oZGVzY3JpcHRpb246IHN0cmluZywgcHJlZDogRXZvbHV0aW9uSW52YXJpYW50UHJlZDxBPik6IEludmFyaWFudCB7XG4gIC8vIFRPRE86IEZpbmQgYSB3YXlcbiAgQXJyYXkuaXNBcnJheShkZXNjcmlwdGlvbik7XG4gIEFycmF5LmlzQXJyYXkocHJlZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbXBsaWVzKHg6IGJvb2xlYW4sIHk6IGJvb2xlYW4pIHtcbiAgcmV0dXJuICF4IHx8IHk7XG59XG5cbi8qKlxuICogSW1wbGllcywgYnV0IHRyZWF0cyAndW5kZWZpbmVkJyBhcyAnZmFsc2UnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbXBsaWVzVSh4OiBib29sZWFuIHwgdW5kZWZpbmVkLCB5OiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gIHJldHVybiAheCB8fCAhIXk7XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isRelationshipCollection = exports.relationshipCollection = exports.NO_RELATIONSHIPS = void 0;\nconst NO_RELATIONSHIPS = () => ({});\nexports.NO_RELATIONSHIPS = NO_RELATIONSHIPS;\nfunction relationshipCollection(fromField, toField) {\n const forward = new Map();\n const backward = new Map();\n function add(fromId, toId, attrs) {\n let f = forward.get(fromId);\n if (!f) {\n f = [];\n forward.set(fromId, f);\n }\n let b = backward.get(toId);\n if (!b) {\n b = [];\n backward.set(toId, b);\n }\n // Behaves like a set, only add new relationship if it is structurally distinct\n const forwardRel = { $id: toId, ...attrs };\n const forwardRelStr = JSON.stringify(forwardRel);\n const existingRelationship = f.find((x) => JSON.stringify(x) === forwardRelStr);\n if (!existingRelationship) {\n f.push(forwardRel);\n b.push({ $id: fromId, ...attrs });\n }\n }\n return {\n type: 'rel',\n fromColl: fromField,\n toColl: toField,\n forward,\n backward,\n add(from, to, attributes) {\n add(from.$id, to.$id, attributes);\n },\n dehydrate() {\n return {\n type: 'rel',\n forward: Object.fromEntries(forward.entries()),\n };\n },\n hydrateFrom(x) {\n forward.clear();\n backward.clear();\n for (const [fromId, targets] of Object.entries(x.forward)) {\n for (const target of targets) {\n add(fromId, target.$id, removeId(target));\n }\n }\n },\n };\n}\nexports.relationshipCollection = relationshipCollection;\nfunction isRelationshipCollection(x) {\n return typeof x === 'object' && !!x && x.type === 'rel';\n}\nexports.isRelationshipCollection = isRelationshipCollection;\nfunction removeId(x) {\n const ret = { ...x };\n delete ret.$id;\n return ret;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb25zaGlwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JlbGF0aW9uc2hpcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE2Qk8sTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQTlCLFFBQUEsZ0JBQWdCLG9CQUFjO0FBRTNDLFNBQWdCLHNCQUFzQixDQUNwQyxTQUF3QixFQUN4QixPQUFvQjtJQUVwQixNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztJQUNuRCxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztJQUVwRCxTQUFTLEdBQUcsQ0FBQyxNQUFjLEVBQUUsSUFBWSxFQUFFLEtBQVU7UUFDbkQsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ04sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNQLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3hCO1FBQ0QsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ04sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNQLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3ZCO1FBRUQsK0VBQStFO1FBQy9FLE1BQU0sVUFBVSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQzNDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakQsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLGFBQWEsQ0FBQyxDQUFDO1FBRWhGLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUN6QixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ25CLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNuQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLEtBQUs7UUFDWCxRQUFRLEVBQUUsU0FBUztRQUNuQixNQUFNLEVBQUUsT0FBTztRQUNmLE9BQU87UUFDUCxRQUFRO1FBQ1IsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFVLEVBQUUsVUFBZTtZQUMzQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFDRCxTQUFTO1lBQ1AsT0FBTztnQkFDTCxJQUFJLEVBQUUsS0FBSztnQkFDWCxPQUFPLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDL0MsQ0FBQztRQUNKLENBQUM7UUFDRCxXQUFXLENBQUMsQ0FBTTtZQUNoQixPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRWpCLEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDekQsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUEwQixFQUFFO29CQUMvQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7aUJBQzNDO2FBQ0Y7UUFDSCxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUF4REQsd0RBd0RDO0FBRUQsU0FBZ0Isd0JBQXdCLENBQUMsQ0FBVTtJQUNqRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFLLENBQVMsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDO0FBQ25FLENBQUM7QUFGRCw0REFFQztBQUVELFNBQVMsUUFBUSxDQUFtQixDQUFJO0lBQ3RDLE1BQU0sR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNyQixPQUFRLEdBQVcsQ0FBQyxHQUFHLENBQUM7SUFDeEIsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5LCBFbnRpdHlDb2xsZWN0aW9uIH0gZnJvbSAnLi9lbnRpdHknO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlbGF0aW9uc2hpcDxGcm9tIGV4dGVuZHMgRW50aXR5LCBUbyBleHRlbmRzIEVudGl0eSwgQXR0cmlidXRlcyA9IHt9PiB7XG4gIHJlYWRvbmx5IGZyb206IEZyb207XG4gIHJlYWRvbmx5IHRvOiBUbztcbiAgcmVhZG9ubHkgYXR0cjogQXR0cmlidXRlcztcbn1cblxudHlwZSBGcm9tR2V0dGVyPFIgZXh0ZW5kcyBSZWxhdGlvbnNoaXA8YW55LCBhbnksIGFueT4+ID0gKGlkOiBzdHJpbmcpID0+IFJbJ2Zyb20nXTtcbnR5cGUgVG9HZXR0ZXI8UiBleHRlbmRzIFJlbGF0aW9uc2hpcDxhbnksIGFueSwgYW55Pj4gPSAoaWQ6IHN0cmluZykgPT4gUlsndG8nXTtcblxuZXhwb3J0IGludGVyZmFjZSBSZWxhdGlvbnNoaXBDb2xsZWN0aW9uPFIgZXh0ZW5kcyBSZWxhdGlvbnNoaXA8YW55LCBhbnksIGFueT4+IHtcbiAgcmVhZG9ubHkgdHlwZTogJ3JlbCc7XG4gIHJlYWRvbmx5IGZyb21Db2xsOiBGcm9tR2V0dGVyPFI+O1xuICByZWFkb25seSB0b0NvbGw6IFRvR2V0dGVyPFI+O1xuICByZWFkb25seSBmb3J3YXJkOiBNYXA8c3RyaW5nLCBSZWw8UlsnYXR0ciddPltdPjtcbiAgcmVhZG9ubHkgYmFja3dhcmQ6IE1hcDxzdHJpbmcsIFJlbDxSWydhdHRyJ10+W10+O1xuXG4gIGFkZChmcm9tOiBSWydmcm9tJ10sIHRvOiBSWyd0byddLCBhdHRyaWJ1dGVzOiBSWydhdHRyJ10pOiB2b2lkO1xuICBkZWh5ZHJhdGUoKTogYW55O1xuICBoeWRyYXRlRnJvbSh4OiBhbnkpOiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBSZWw8QXR0cmlidXRlcz4gPSB7IHJlYWRvbmx5ICRpZDogc3RyaW5nIH0gJiBBdHRyaWJ1dGVzO1xuXG5leHBvcnQgdHlwZSBLZXlGb3JFbnRpdHlDb2xsZWN0aW9uPFMsIEUgZXh0ZW5kcyBFbnRpdHk+ID0ge1xuICBbSyBpbiBrZXlvZiBTXTogU1tLXSBleHRlbmRzIEVudGl0eUNvbGxlY3Rpb248RT4gPyBLIDogbmV2ZXI7XG59W2tleW9mIFNdO1xuXG5leHBvcnQgY29uc3QgTk9fUkVMQVRJT05TSElQUyA9ICgpID0+ICh7fSk7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWxhdGlvbnNoaXBDb2xsZWN0aW9uPFIgZXh0ZW5kcyBSZWxhdGlvbnNoaXA8YW55LCBhbnksIGFueT4+KFxuICBmcm9tRmllbGQ6IEZyb21HZXR0ZXI8Uj4sXG4gIHRvRmllbGQ6IFRvR2V0dGVyPFI+LFxuKTogUmVsYXRpb25zaGlwQ29sbGVjdGlvbjxSPiB7XG4gIGNvbnN0IGZvcndhcmQgPSBuZXcgTWFwPHN0cmluZywgQXJyYXk8UmVsPGFueT4+PigpO1xuICBjb25zdCBiYWNrd2FyZCA9IG5ldyBNYXA8c3RyaW5nLCBBcnJheTxSZWw8YW55Pj4+KCk7XG5cbiAgZnVuY3Rpb24gYWRkKGZyb21JZDogc3RyaW5nLCB0b0lkOiBzdHJpbmcsIGF0dHJzOiBhbnkpIHtcbiAgICBsZXQgZiA9IGZvcndhcmQuZ2V0KGZyb21JZCk7XG4gICAgaWYgKCFmKSB7XG4gICAgICBmID0gW107XG4gICAgICBmb3J3YXJkLnNldChmcm9tSWQsIGYpO1xuICAgIH1cbiAgICBsZXQgYiA9IGJhY2t3YXJkLmdldCh0b0lkKTtcbiAgICBpZiAoIWIpIHtcbiAgICAgIGIgPSBbXTtcbiAgICAgIGJhY2t3YXJkLnNldCh0b0lkLCBiKTtcbiAgICB9XG5cbiAgICAvLyBCZWhhdmVzIGxpa2UgYSBzZXQsIG9ubHkgYWRkIG5ldyByZWxhdGlvbnNoaXAgaWYgaXQgaXMgc3RydWN0dXJhbGx5IGRpc3RpbmN0XG4gICAgY29uc3QgZm9yd2FyZFJlbCA9IHsgJGlkOiB0b0lkLCAuLi5hdHRycyB9O1xuICAgIGNvbnN0IGZvcndhcmRSZWxTdHIgPSBKU09OLnN0cmluZ2lmeShmb3J3YXJkUmVsKTtcbiAgICBjb25zdCBleGlzdGluZ1JlbGF0aW9uc2hpcCA9IGYuZmluZCgoeCkgPT4gSlNPTi5zdHJpbmdpZnkoeCkgPT09IGZvcndhcmRSZWxTdHIpO1xuXG4gICAgaWYgKCFleGlzdGluZ1JlbGF0aW9uc2hpcCkge1xuICAgICAgZi5wdXNoKGZvcndhcmRSZWwpO1xuICAgICAgYi5wdXNoKHsgJGlkOiBmcm9tSWQsIC4uLmF0dHJzIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ3JlbCcsXG4gICAgZnJvbUNvbGw6IGZyb21GaWVsZCxcbiAgICB0b0NvbGw6IHRvRmllbGQsXG4gICAgZm9yd2FyZCxcbiAgICBiYWNrd2FyZCxcbiAgICBhZGQoZnJvbTogRW50aXR5LCB0bzogRW50aXR5LCBhdHRyaWJ1dGVzOiBhbnkpIHtcbiAgICAgIGFkZChmcm9tLiRpZCwgdG8uJGlkLCBhdHRyaWJ1dGVzKTtcbiAgICB9LFxuICAgIGRlaHlkcmF0ZSgpOiBhbnkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3JlbCcsXG4gICAgICAgIGZvcndhcmQ6IE9iamVjdC5mcm9tRW50cmllcyhmb3J3YXJkLmVudHJpZXMoKSksXG4gICAgICB9O1xuICAgIH0sXG4gICAgaHlkcmF0ZUZyb20oeDogYW55KTogdm9pZCB7XG4gICAgICBmb3J3YXJkLmNsZWFyKCk7XG4gICAgICBiYWNrd2FyZC5jbGVhcigpO1xuXG4gICAgICBmb3IgKGNvbnN0IFtmcm9tSWQsIHRhcmdldHNdIG9mIE9iamVjdC5lbnRyaWVzKHguZm9yd2FyZCkpIHtcbiAgICAgICAgZm9yIChjb25zdCB0YXJnZXQgb2YgdGFyZ2V0cyBhcyBBcnJheTxSZWw8YW55Pj4pIHtcbiAgICAgICAgICBhZGQoZnJvbUlkLCB0YXJnZXQuJGlkLCByZW1vdmVJZCh0YXJnZXQpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JlbGF0aW9uc2hpcENvbGxlY3Rpb24oeDogdW5rbm93bik6IHggaXMgUmVsYXRpb25zaGlwQ29sbGVjdGlvbjxhbnk+IHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiAhIXggJiYgKHggYXMgYW55KS50eXBlID09PSAncmVsJztcbn1cblxuZnVuY3Rpb24gcmVtb3ZlSWQ8QSBleHRlbmRzIG9iamVjdD4oeDogQSk6IE9taXQ8QSwgJyRpZCc+IHtcbiAgY29uc3QgcmV0ID0geyAuLi54IH07XG4gIGRlbGV0ZSAocmV0IGFzIGFueSkuJGlkO1xuICByZXR1cm4gcmV0O1xufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.liftUndefined = exports.liftResult = exports.locateFailure = exports.chain = exports.using = exports.tryCatch = exports.assertSuccess = exports.errorFrom = exports.errorMessage = exports.unpackOr = exports.unpack = exports.isSuccess = exports.isFailure = exports.failure = void 0;\n// Ensures you must use `fail()` to construct an instance of type Failure\nconst errorSym = Symbol('error');\nfunction mkLocate(prefix) {\n const ret = (error) => failure(`${prefix}: ${error}`);\n ret.in = (prefix2) => mkLocate(`${prefix}: ${prefix2}`);\n ret.locate = locateFailure(prefix);\n return ret;\n}\nfunction failure(error) {\n return { [errorSym]: error };\n}\nexports.failure = failure;\nfailure.in = (prefix) => mkLocate(prefix);\nfailure.locate = (x) => x;\nfunction isFailure(x) {\n return !!x && typeof x === 'object' && x[errorSym];\n}\nexports.isFailure = isFailure;\nfunction isSuccess(x) {\n return !isFailure(x);\n}\nexports.isSuccess = isSuccess;\nfunction unpack(x) {\n if (isFailure(x)) {\n throw new Error(`unpack: ${x[errorSym]}`);\n }\n return x;\n}\nexports.unpack = unpack;\nfunction unpackOr(x, def) {\n return (isFailure(x) ? def : x);\n}\nexports.unpackOr = unpackOr;\nfunction errorMessage(x) {\n return x[errorSym];\n}\nexports.errorMessage = errorMessage;\nfunction errorFrom(x) {\n return new Error(errorMessage(x));\n}\nexports.errorFrom = errorFrom;\nfunction assertSuccess(x) {\n if (isFailure(x)) {\n throw errorFrom(x);\n }\n}\nexports.assertSuccess = assertSuccess;\nfunction tryCatch(failOrBlock, maybeBlock) {\n const block = (maybeBlock !== null && maybeBlock !== void 0 ? maybeBlock : failOrBlock);\n const f = (maybeBlock ? failOrBlock : failure);\n try {\n return block();\n }\n catch (e) {\n return f(`Error: ${e.message}\\n${e.stack}`);\n }\n}\nexports.tryCatch = tryCatch;\nfunction using(value, block) {\n if (isFailure(value)) {\n return value;\n }\n return block(value);\n}\nexports.using = using;\nfunction chain(value, ...fns) {\n for (const fn of fns) {\n if (isFailure(value)) {\n return value;\n }\n value = fn(value);\n }\n return value;\n}\nexports.chain = chain;\n/* eslint-enable prettier/prettier */\n/**\n * Make a function that will prepend a prefix to error messages\n *\n * This is one way to be specific about the location where errors originate, by prefixing\n * errors as the call stack unwinds.\n *\n * A different method is to pass in a modified failure function using `failure.in(...)`,\n * to build the error message as the call stack deepens.\n */\nfunction locateFailure(prefix) {\n return (x) => (isFailure(x) ? failure(`${prefix}: ${x[errorSym]}`) : x);\n}\nexports.locateFailure = locateFailure;\nfunction liftResult(xs) {\n const failures = Array.isArray(xs) ? xs.filter(isFailure) : Object.values(xs).filter(isFailure);\n if (failures.length > 0) {\n return failure(failures.map(errorMessage).join(', '));\n }\n return xs;\n}\nexports.liftResult = liftResult;\nfunction liftUndefined(valueOrFunction) {\n if (typeof valueOrFunction === 'function') {\n return (...args) => {\n const value = valueOrFunction(...args);\n return value !== undefined ? value : failure('value is undefined');\n };\n }\n return valueOrFunction !== undefined ? valueOrFunction : failure('value is undefined');\n}\nexports.liftUndefined = liftUndefined;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Jlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5RUFBeUU7QUFDekUsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBYWpDLFNBQVMsUUFBUSxDQUFDLE1BQWM7SUFDOUIsTUFBTSxHQUFHLEdBQVMsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLE1BQU0sS0FBSyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sS0FBSyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLEdBQUcsQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUlELFNBQWdCLE9BQU8sQ0FBQyxLQUFhO0lBQ25DLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQy9CLENBQUM7QUFGRCwwQkFFQztBQUNELE9BQU8sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsRCxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUksQ0FBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFeEMsU0FBZ0IsU0FBUyxDQUFJLENBQVk7SUFDdkMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSyxDQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUZELDhCQUVDO0FBRUQsU0FBZ0IsU0FBUyxDQUFJLENBQVk7SUFDdkMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QixDQUFD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LENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEcsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUN2QixPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQ3ZEO0lBQ0QsT0FBTyxFQUFTLENBQUM7QUFDbkIsQ0FBQztBQVJELGdDQVFDO0FBT0QsU0FBZ0IsYUFBYSxDQUFDLGVBQW9CO0lBQ2hELElBQUksT0FBTyxlQUFlLEtBQUssVUFBVSxFQUFFO1FBQ3pDLE9BQU8sQ0FBQyxHQUFHLElBQVcsRUFBRSxFQUFFO1lBQ3hCLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUM7S0FDSDtJQUNELE9BQU8sZUFBZSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUN6RixDQUFDO0FBUkQsc0NBUUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBFbnN1cmVzIHlvdSBtdXN0IHVzZSBgZmFpbCgpYCB0byBjb25zdHJ1Y3QgYW4gaW5zdGFuY2Ugb2YgdHlwZSBGYWlsdXJlXG5jb25zdCBlcnJvclN5bSA9IFN5bWJvbCgnZXJyb3InKTtcblxuZXhwb3J0IHR5cGUgUmVzdWx0PEE+ID0gQSB8IEZhaWx1cmU7XG5leHBvcnQgaW50ZXJmYWNlIEZhaWx1cmUge1xuICByZWFkb25seSBbZXJyb3JTeW1dOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmFpbCB7XG4gIChlcnJvcjogc3RyaW5nKTogRmFpbHVyZTtcbiAgaW4ocHJlZml4OiBzdHJpbmcpOiBGYWlsO1xuICBsb2NhdGU8QT4oeDogUmVzdWx0PEE+KTogUmVzdWx0PEE+O1xufVxuXG5mdW5jdGlvbiBta0xvY2F0ZShwcmVmaXg6IHN0cmluZyk6IEZhaWwge1xuICBjb25zdCByZXQ6IEZhaWwgPSAoZXJyb3I6IHN0cmluZykgPT4gZmFpbHVyZShgJHtwcmVmaXh9OiAke2Vycm9yfWApO1xuICByZXQuaW4gPSAocHJlZml4Mjogc3RyaW5nKSA9PiBta0xvY2F0ZShgJHtwcmVmaXh9OiAke3ByZWZpeDJ9YCk7XG4gIHJldC5sb2NhdGUgPSBsb2NhdGVGYWlsdXJlKHByZWZpeCk7XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgZmFpbHVyZSBleHRlbmRzIEZhaWwge31cblxuZXhwb3J0IGZ1bmN0aW9uIGZhaWx1cmUoZXJyb3I6IHN0cmluZyk6IEZhaWx1cmUge1xuICByZXR1cm4geyBbZXJyb3JTeW1dOiBlcnJvciB9O1xufVxuZmFpbHVyZS5pbiA9IChwcmVmaXg6IHN0cmluZykgPT4gbWtMb2NhdGUocHJlZml4KTtcbmZhaWx1cmUubG9jYXRlID0gPEE+KHg6IFJlc3VsdDxBPikgPT4geDtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzRmFpbHVyZTxBPih4OiBSZXN1bHQ8QT4pOiB4IGlzIEZhaWx1cmUge1xuICByZXR1cm4gISF4ICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiAoeCBhcyBhbnkpW2Vycm9yU3ltXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3VjY2VzczxBPih4OiBSZXN1bHQ8QT4pOiB4IGlzIEEge1xuICByZXR1cm4gIWlzRmFpbHVyZSh4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVucGFjazxBPih4OiBSZXN1bHQ8QT4pOiBBIHtcbiAgaWYgKGlzRmFpbHVyZSh4KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgdW5wYWNrOiAke3hbZXJyb3JTeW1dfWApO1xuICB9XG4gIHJldHVybiB4O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5wYWNrT3I8QSwgQj4oeDogUmVzdWx0PEE+LCBkZWY6IEIpOiBCIGV4dGVuZHMgQSA/IEEgOiBBIHwgQiB7XG4gIHJldHVybiAoaXNGYWlsdXJlKHgpID8gZGVmIDogeCkgYXMgYW55O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXJyb3JNZXNzYWdlKHg6IEZhaWx1cmUpOiBzdHJpbmcge1xuICByZXR1cm4geFtlcnJvclN5bV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcnJvckZyb20oeDogRmFpbHVyZSk6IEVycm9yIHtcbiAgcmV0dXJuIG5ldyBFcnJvcihlcnJvck1lc3NhZ2UoeCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0U3VjY2VzczxBPih4OiBSZXN1bHQ8QT4pOiBhc3NlcnRzIHggaXMgQTtcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRTdWNjZXNzKHg6IEZhaWx1cmUpOiBuZXZlcjtcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRTdWNjZXNzKHg6IEZhaWx1cmUpOiB2b2lkIHtcbiAgaWYgKGlzRmFpbHVyZSh4KSkge1xuICAgIHRocm93IGVycm9yRnJvbSh4KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJ5Q2F0Y2g8QT4oYmxvY2s6ICgpID0+IEEpOiBSZXN1bHQ8QT47XG5leHBvcnQgZnVuY3Rpb24gdHJ5Q2F0Y2g8QT4oZmFpbEZuOiBGYWlsLCBibG9jazogKCkgPT4gQSk6IFJlc3VsdDxBPjtcbmV4cG9ydCBmdW5jdGlvbiB0cnlDYXRjaDxBPihmYWlsT3JCbG9jazogRmFpbCB8ICgoKSA9PiBBKSwgbWF5YmVCbG9jaz86ICgpID0+IEEpOiBSZXN1bHQ8QT4ge1xuICBjb25zdCBibG9jazogKCkgPT4gQSA9IChtYXliZUJsb2NrID8/IGZhaWxPckJsb2NrKSBhcyBhbnk7XG4gIGNvbnN0IGY6IEZhaWwgPSAobWF5YmVCbG9jayA/IGZhaWxPckJsb2NrIDogZmFpbHVyZSkgYXMgYW55O1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGJsb2NrKCk7XG4gIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgIHJldHVybiBmKGBFcnJvcjogJHtlLm1lc3NhZ2V9XFxuJHtlLnN0YWNrfWApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2luZzxBLCBCPih2YWx1ZTogUmVzdWx0PEE+LCBibG9jazogKHg6IEEpID0+IFJlc3VsdDxCPik6IFJlc3VsdDxCPiB7XG4gIGlmIChpc0ZhaWx1cmUodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBibG9jayh2YWx1ZSk7XG59XG5cbi8qKlxuICogTGlrZSAndXNpbmcnLCBidXQgY2FuIHRha2UgYW55IG51bWJlciBvZiBmdW5jdGlvbnNcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgcHJldHRpZXIvcHJldHRpZXIgKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGFpbjxBLCBCPih2YWx1ZTogUmVzdWx0PEE+LCBiMDogKHg6IEEpID0+IFJlc3VsdDxCPik6IFJlc3VsdDxCPjtcbmV4cG9ydCBmdW5jdGlvbiBjaGFpbjxBLCBCLCBDPih2YWx1ZTogUmVzdWx0PEE+LCBiMDogKHg6IEEpID0+IFJlc3VsdDxCPiwgYjE6ICh4OiBCKSA9PiBSZXN1bHQ8Qz4pOiBSZXN1bHQ8Qz47XG5leHBvcnQgZnVuY3Rpb24gY2hhaW48QSwgQiwgQywgRD4odmFsdWU6IFJlc3VsdDxBPiwgYjA6ICh4OiBBKSA9PiBSZXN1bHQ8Qj4sIGIxOiAoeDogQikgPT4gUmVzdWx0PEM+LCBiMjogKHg6IEMpID0+IFJlc3VsdDxEPik6IFJlc3VsdDxEPjtcbmV4cG9ydCBmdW5jdGlvbiBjaGFpbjxBLCBCLCBDLCBELCBFPih2YWx1ZTogUmVzdWx0PEE+LCBiMDogKHg6IEEpID0+IFJlc3VsdDxCPiwgYjE6ICh4OiBCKSA9PiBSZXN1bHQ8Qz4sIGIyOiAoeDogQykgPT4gUmVzdWx0PEQ+LCBiMzogKHg6IEQpID0+IFJlc3VsdDxFPik6IFJlc3VsdDxFPjtcbmV4cG9ydCBmdW5jdGlvbiBjaGFpbjxBLCBCLCBDLCBELCBFLCBGPih2YWx1ZTogUmVzdWx0PEE+LCBiMDogKHg6IEEpID0+IFJlc3VsdDxCPiwgYjE6ICh4OiBCKSA9PiBSZXN1bHQ8Qz4sIGIyOiAoeDogQykgPT4gUmVzdWx0PEQ+LCBiMzogKHg6IEQpID0+IFJlc3VsdDxFPiwgYjQ6ICh4OiBFKSA9PiBSZXN1bHQ8Rj4pOiBSZXN1bHQ8Rj47XG5leHBvcnQgZnVuY3Rpb24gY2hhaW48QSwgQiwgQywgRCwgRSwgRiwgRz4odmFsdWU6IFJlc3VsdDxBPiwgYjA6ICh4OiBBKSA9PiBSZXN1bHQ8Qj4sIGIxOiAoeDogQikgPT4gUmVzdWx0PEM+LCBiMjogKHg6IEMpID0+IFJlc3VsdDxEPiwgYjM6ICh4OiBEKSA9PiBSZXN1bHQ8RT4sIGI0OiAoeDogRSkgPT4gUmVzdWx0PEY+LCBiNTogKHg6IEYpID0+IFJlc3VsdDxHPik6IFJlc3VsdDxHPjtcbmV4cG9ydCBmdW5jdGlvbiBjaGFpbih2YWx1ZTogUmVzdWx0PGFueT4sIC4uLmZuczogQXJyYXk8KHg6IGFueSkgPT4gUmVzdWx0PGFueT4+KTogUmVzdWx0PGFueT4ge1xuICBmb3IgKGNvbnN0IGZuIG9mIGZucykge1xuICAgIGlmIChpc0ZhaWx1cmUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHZhbHVlID0gZm4odmFsdWUpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cbi8qIGVzbGludC1lbmFibGUgcHJldHRpZXIvcHJldHRpZXIgKi9cblxuLyoqXG4gKiBNYWtlIGEgZnVuY3Rpb24gdGhhdCB3aWxsIHByZXBlbmQgYSBwcmVmaXggdG8gZXJyb3IgbWVzc2FnZXNcbiAqXG4gKiBUaGlzIGlzIG9uZSB3YXkgdG8gYmUgc3BlY2lmaWMgYWJvdXQgdGhlIGxvY2F0aW9uIHdoZXJlIGVycm9ycyBvcmlnaW5hdGUsIGJ5IHByZWZpeGluZ1xuICogZXJyb3JzIGFzIHRoZSBjYWxsIHN0YWNrIHVud2luZHMuXG4gKlxuICogQSBkaWZmZXJlbnQgbWV0aG9kIGlzIHRvIHBhc3MgaW4gYSBtb2RpZmllZCBmYWlsdXJlIGZ1bmN0aW9uIHVzaW5nIGBmYWlsdXJlLmluKC4uLilgLFxuICogdG8gYnVpbGQgdGhlIGVycm9yIG1lc3NhZ2UgYXMgdGhlIGNhbGwgc3RhY2sgZGVlcGVucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvY2F0ZUZhaWx1cmUocHJlZml4OiBzdHJpbmcpIHtcbiAgcmV0dXJuIDxBPih4OiBSZXN1bHQ8QT4pOiBSZXN1bHQ8QT4gPT4gKGlzRmFpbHVyZSh4KSA/IGZhaWx1cmUoYCR7cHJlZml4fTogJHt4W2Vycm9yU3ltXX1gKSA6IHgpO1xufVxuXG5leHBvcnQgdHlwZSBGYWlsdXJlcyA9IEFycmF5PEZhaWx1cmU+O1xuXG5leHBvcnQgZnVuY3Rpb24gbGlmdFJlc3VsdDxBPih4czogUmVjb3JkPHN0cmluZywgUmVzdWx0PEE+Pik6IFJlc3VsdDxSZWNvcmQ8c3RyaW5nLCBBPj47XG5leHBvcnQgZnVuY3Rpb24gbGlmdFJlc3VsdDxBPih4czogQXJyYXk8UmVzdWx0PEE+Pik6IFJlc3VsdDxBcnJheTxBPj47XG5leHBvcnQgZnVuY3Rpb24gbGlmdFJlc3VsdDxBPihcbiAgeHM6IFJlY29yZDxzdHJpbmcsIFJlc3VsdDxBPj4gfCBBcnJheTxSZXN1bHQ8QT4+LFxuKTogUmVzdWx0PFJlY29yZDxzdHJpbmcsIEE+PiB8IFJlc3VsdDxBcnJheTxBPj4ge1xuICBjb25zdCBmYWlsdXJlcyA9IEFycmF5LmlzQXJyYXkoeHMpID8geHMuZmlsdGVyKGlzRmFpbHVyZSkgOiBPYmplY3QudmFsdWVzKHhzKS5maWx0ZXIoaXNGYWlsdXJlKTtcbiAgaWYgKGZhaWx1cmVzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gZmFpbHVyZShmYWlsdXJlcy5tYXAoZXJyb3JNZXNzYWdlKS5qb2luKCcsICcpKTtcbiAgfVxuICByZXR1cm4geHMgYXMgYW55O1xufVxuXG4vKipcbiAqIExpZnQgYSB2YWx1ZSB0aGF0IGNhbiBiZSAndW5kZWZpbmVkJyB0byBhIHJlc3VsdCwgb3IgYSBmdW5jdGlvbiB0aGF0IGNhbiByZXR1cm4gdW5kZWZpbmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbGlmdFVuZGVmaW5lZDxBPih2OiBBIHwgdW5kZWZpbmVkKTogUmVzdWx0PE5vbk51bGxhYmxlPEE+PjtcbmV4cG9ydCBmdW5jdGlvbiBsaWZ0VW5kZWZpbmVkPEEsIEYgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IEE+KHY6IEYpOiAoeDogUGFyYW1ldGVyczxGPikgPT4gUmVzdWx0PE5vbk51bGxhYmxlPEE+PjtcbmV4cG9ydCBmdW5jdGlvbiBsaWZ0VW5kZWZpbmVkKHZhbHVlT3JGdW5jdGlvbjogYW55KTogYW55IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZU9yRnVuY3Rpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlT3JGdW5jdGlvbiguLi5hcmdzKTtcbiAgICAgIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiBmYWlsdXJlKCd2YWx1ZSBpcyB1bmRlZmluZWQnKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiB2YWx1ZU9yRnVuY3Rpb24gIT09IHVuZGVmaW5lZCA/IHZhbHVlT3JGdW5jdGlvbiA6IGZhaWx1cmUoJ3ZhbHVlIGlzIHVuZGVmaW5lZCcpO1xufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sortedMap = void 0;\n/**\n * A sorted map that may contain the same key multiple times\n *\n * Stored as a sorted array of [key, value] pairs, using binary search to locate\n * entries.\n */\nvar sortedMap;\n(function (sortedMap) {\n function add(map, cmp, key, value) {\n const i = lowerBound(map, cmp, key);\n map.splice(i, 0, [key, value]);\n }\n sortedMap.add = add;\n function find(map, cmp, key) {\n const i = lowerBound(map, cmp, key);\n if (i === map.length) {\n return undefined;\n }\n const [foundKey, value] = map[i];\n return cmp(foundKey, key) === 0 ? value : undefined;\n }\n sortedMap.find = find;\n function findAll(map, cmp, key) {\n let i = lowerBound(map, cmp, key);\n const ret = [];\n while (i < map.length && cmp(map[i][0], key) === 0) {\n ret.push(map[i][1]);\n i += 1;\n }\n return ret;\n }\n sortedMap.findAll = findAll;\n /**\n * Return the index to the first element in the the sorted map\n *\n * @see https://en.cppreference.com/w/cpp/algorithm/lower_bound#Version_2\n */\n function lowerBound(map, cmp, key) {\n let first = 0;\n let count = map.length;\n while (count > 0) {\n let it = first;\n let step = Math.floor(count / 2);\n it += step;\n if (cmp(map[it][0], key) < 0) {\n first = ++it;\n count -= step + 1;\n }\n else {\n count = step;\n }\n }\n return first;\n }\n})(sortedMap = exports.sortedMap || (exports.sortedMap = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGVkLW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zb3J0ZWQtbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOzs7OztHQUtHO0FBQ0gsSUFBaUIsU0FBUyxDQXNEekI7QUF0REQsV0FBaUIsU0FBUztJQUd4QixTQUFnQixHQUFHLENBQU8sR0FBeUIsRUFBRSxHQUFrQixFQUFFLEdBQU0sRUFBRSxLQUFRO1FBQ3ZGLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFIZSxhQUFHLE1BR2xCLENBQUE7SUFFRCxTQUFnQixJQUFJLENBQU8sR0FBeUIsRUFBRSxHQUFrQixFQUFFLEdBQU07UUFDOUUsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLE1BQU0sRUFBRTtZQUNwQixPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3RELENBQUM7SUFSZSxjQUFJLE9BUW5CLENBQUE7SUFFRCxTQUFnQixPQUFPLENBQU8sR0FBeUIsRUFBRSxHQUFrQixFQUFFLEdBQU07UUFDakYsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFbEMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2YsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsRCxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDUjtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQVZlLGlCQUFPLFVBVXRCLENBQUE7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxVQUFVLENBQU8sR0FBeUIsRUFBRSxHQUFrQixFQUFFLEdBQU07UUFDN0UsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUV2QixPQUFPLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFDaEIsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDO1lBQ2YsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDakMsRUFBRSxJQUFJLElBQUksQ0FBQztZQUVYLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzVCLEtBQUssR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDYixLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQzthQUNuQjtpQkFBTTtnQkFDTCxLQUFLLEdBQUcsSUFBSSxDQUFDO2FBQ2Q7U0FDRjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUMsRUF0RGdCLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBc0R6QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFNvcnRlZE11bHRpTWFwPEEsIEI+ID0gQXJyYXk8W0EsIEJdPjtcblxuLyoqXG4gKiBBIHNvcnRlZCBtYXAgdGhhdCBtYXkgY29udGFpbiB0aGUgc2FtZSBrZXkgbXVsdGlwbGUgdGltZXNcbiAqXG4gKiBTdG9yZWQgYXMgYSBzb3J0ZWQgYXJyYXkgb2YgW2tleSwgdmFsdWVdIHBhaXJzLCB1c2luZyBiaW5hcnkgc2VhcmNoIHRvIGxvY2F0ZVxuICogZW50cmllcy5cbiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBzb3J0ZWRNYXAge1xuICBleHBvcnQgdHlwZSBDb21wYXJhdG9yPEE+ID0gKGE6IEEsIGI6IEEpID0+IG51bWJlcjtcblxuICBleHBvcnQgZnVuY3Rpb24gYWRkPEEsIEI+KG1hcDogU29ydGVkTXVsdGlNYXA8QSwgQj4sIGNtcDogQ29tcGFyYXRvcjxBPiwga2V5OiBBLCB2YWx1ZTogQikge1xuICAgIGNvbnN0IGkgPSBsb3dlckJvdW5kKG1hcCwgY21wLCBrZXkpO1xuICAgIG1hcC5zcGxpY2UoaSwgMCwgW2tleSwgdmFsdWVdKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBmaW5kPEEsIEI+KG1hcDogU29ydGVkTXVsdGlNYXA8QSwgQj4sIGNtcDogQ29tcGFyYXRvcjxBPiwga2V5OiBBKTogQiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaSA9IGxvd2VyQm91bmQobWFwLCBjbXAsIGtleSk7XG4gICAgaWYgKGkgPT09IG1hcC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgW2ZvdW5kS2V5LCB2YWx1ZV0gPSBtYXBbaV07XG4gICAgcmV0dXJuIGNtcChmb3VuZEtleSwga2V5KSA9PT0gMCA/IHZhbHVlIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGZpbmRBbGw8QSwgQj4obWFwOiBTb3J0ZWRNdWx0aU1hcDxBLCBCPiwgY21wOiBDb21wYXJhdG9yPEE+LCBrZXk6IEEpOiBCW10ge1xuICAgIGxldCBpID0gbG93ZXJCb3VuZChtYXAsIGNtcCwga2V5KTtcblxuICAgIGNvbnN0IHJldCA9IFtdO1xuICAgIHdoaWxlIChpIDwgbWFwLmxlbmd0aCAmJiBjbXAobWFwW2ldWzBdLCBrZXkpID09PSAwKSB7XG4gICAgICByZXQucHVzaChtYXBbaV1bMV0pO1xuICAgICAgaSArPSAxO1xuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBpbmRleCB0byB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgdGhlIHNvcnRlZCBtYXBcbiAgICpcbiAgICogQHNlZSBodHRwczovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAvYWxnb3JpdGhtL2xvd2VyX2JvdW5kI1ZlcnNpb25fMlxuICAgKi9cbiAgZnVuY3Rpb24gbG93ZXJCb3VuZDxBLCBCPihtYXA6IFNvcnRlZE11bHRpTWFwPEEsIEI+LCBjbXA6IENvbXBhcmF0b3I8QT4sIGtleTogQSk6IG51bWJlciB7XG4gICAgbGV0IGZpcnN0ID0gMDtcbiAgICBsZXQgY291bnQgPSBtYXAubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGNvdW50ID4gMCkge1xuICAgICAgbGV0IGl0ID0gZmlyc3Q7XG4gICAgICBsZXQgc3RlcCA9IE1hdGguZmxvb3IoY291bnQgLyAyKTtcbiAgICAgIGl0ICs9IHN0ZXA7XG5cbiAgICAgIGlmIChjbXAobWFwW2l0XVswXSwga2V5KSA8IDApIHtcbiAgICAgICAgZmlyc3QgPSArK2l0O1xuICAgICAgICBjb3VudCAtPSBzdGVwICsgMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvdW50ID0gc3RlcDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmlyc3Q7XG4gIH1cbn1cbiJdfQ==","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n createTokenAuth: () => createTokenAuth\n});\nmodule.exports = __toCommonJS(dist_src_exports);\n\n// pkg/dist-src/auth.js\nvar REGEX_IS_INSTALLATION_LEGACY = /^v1\\./;\nvar REGEX_IS_INSTALLATION = /^ghs_/;\nvar REGEX_IS_USER_TO_SERVER = /^ghu_/;\nasync function auth(token) {\n const isApp = token.split(/\\./).length === 3;\n const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token);\n const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token);\n const tokenType = isApp ? \"app\" : isInstallation ? \"installation\" : isUserToServer ? \"user-to-server\" : \"oauth\";\n return {\n type: \"token\",\n token,\n tokenType\n };\n}\n\n// pkg/dist-src/with-authorization-prefix.js\nfunction withAuthorizationPrefix(token) {\n if (token.split(/\\./).length === 3) {\n return `bearer ${token}`;\n }\n return `token ${token}`;\n}\n\n// pkg/dist-src/hook.js\nasync function hook(token, request, route, parameters) {\n const endpoint = request.endpoint.merge(\n route,\n parameters\n );\n endpoint.headers.authorization = withAuthorizationPrefix(token);\n return request(endpoint);\n}\n\n// pkg/dist-src/index.js\nvar createTokenAuth = function createTokenAuth2(token) {\n if (!token) {\n throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\n }\n if (typeof token !== \"string\") {\n throw new Error(\n \"[@octokit/auth-token] Token passed to createTokenAuth is not a string\"\n );\n }\n token = token.replace(/^(token|bearer) +/i, \"\");\n return Object.assign(auth.bind(null, token), {\n hook: hook.bind(null, token)\n });\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n createTokenAuth\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n Octokit: () => Octokit\n});\nmodule.exports = __toCommonJS(dist_src_exports);\nvar import_universal_user_agent = require(\"universal-user-agent\");\nvar import_before_after_hook = require(\"before-after-hook\");\nvar import_request = require(\"@octokit/request\");\nvar import_graphql = require(\"@octokit/graphql\");\nvar import_auth_token = require(\"@octokit/auth-token\");\n\n// pkg/dist-src/version.js\nvar VERSION = \"5.2.0\";\n\n// pkg/dist-src/index.js\nvar noop = () => {\n};\nvar consoleWarn = console.warn.bind(console);\nvar consoleError = console.error.bind(console);\nvar userAgentTrail = `octokit-core.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`;\nvar Octokit = class {\n static {\n this.VERSION = VERSION;\n }\n static defaults(defaults) {\n const OctokitWithDefaults = class extends this {\n constructor(...args) {\n const options = args[0] || {};\n if (typeof defaults === \"function\") {\n super(defaults(options));\n return;\n }\n super(\n Object.assign(\n {},\n defaults,\n options,\n options.userAgent && defaults.userAgent ? {\n userAgent: `${options.userAgent} ${defaults.userAgent}`\n } : null\n )\n );\n }\n };\n return OctokitWithDefaults;\n }\n static {\n this.plugins = [];\n }\n /**\n * Attach a plugin (or many) to your Octokit instance.\n *\n * @example\n * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)\n */\n static plugin(...newPlugins) {\n const currentPlugins = this.plugins;\n const NewOctokit = class extends this {\n static {\n this.plugins = currentPlugins.concat(\n newPlugins.filter((plugin) => !currentPlugins.includes(plugin))\n );\n }\n };\n return NewOctokit;\n }\n constructor(options = {}) {\n const hook = new import_before_after_hook.Collection();\n const requestDefaults = {\n baseUrl: import_request.request.endpoint.DEFAULTS.baseUrl,\n headers: {},\n request: Object.assign({}, options.request, {\n // @ts-ignore internal usage only, no need to type\n hook: hook.bind(null, \"request\")\n }),\n mediaType: {\n previews: [],\n format: \"\"\n }\n };\n requestDefaults.headers[\"user-agent\"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail;\n if (options.baseUrl) {\n requestDefaults.baseUrl = options.baseUrl;\n }\n if (options.previews) {\n requestDefaults.mediaType.previews = options.previews;\n }\n if (options.timeZone) {\n requestDefaults.headers[\"time-zone\"] = options.timeZone;\n }\n this.request = import_request.request.defaults(requestDefaults);\n this.graphql = (0, import_graphql.withCustomRequest)(this.request).defaults(requestDefaults);\n this.log = Object.assign(\n {\n debug: noop,\n info: noop,\n warn: consoleWarn,\n error: consoleError\n },\n options.log\n );\n this.hook = hook;\n if (!options.authStrategy) {\n if (!options.auth) {\n this.auth = async () => ({\n type: \"unauthenticated\"\n });\n } else {\n const auth = (0, import_auth_token.createTokenAuth)(options.auth);\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n } else {\n const { authStrategy, ...otherOptions } = options;\n const auth = authStrategy(\n Object.assign(\n {\n request: this.request,\n log: this.log,\n // we pass the current octokit instance as well as its constructor options\n // to allow for authentication strategies that return a new octokit instance\n // that shares the same internal state as the current one. The original\n // requirement for this was the \"event-octokit\" authentication strategy\n // of https://github.com/probot/octokit-auth-probot.\n octokit: this,\n octokitOptions: otherOptions\n },\n options.auth\n )\n );\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n const classConstructor = this.constructor;\n for (let i = 0; i < classConstructor.plugins.length; ++i) {\n Object.assign(this, classConstructor.plugins[i](this, options));\n }\n }\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n Octokit\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n endpoint: () => endpoint\n});\nmodule.exports = __toCommonJS(dist_src_exports);\n\n// pkg/dist-src/defaults.js\nvar import_universal_user_agent = require(\"universal-user-agent\");\n\n// pkg/dist-src/version.js\nvar VERSION = \"9.0.5\";\n\n// pkg/dist-src/defaults.js\nvar userAgent = `octokit-endpoint.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`;\nvar DEFAULTS = {\n method: \"GET\",\n baseUrl: \"https://api.github.com\",\n headers: {\n accept: \"application/vnd.github.v3+json\",\n \"user-agent\": userAgent\n },\n mediaType: {\n format: \"\"\n }\n};\n\n// pkg/dist-src/util/lowercase-keys.js\nfunction lowercaseKeys(object) {\n if (!object) {\n return {};\n }\n return Object.keys(object).reduce((newObj, key) => {\n newObj[key.toLowerCase()] = object[key];\n return newObj;\n }, {});\n}\n\n// pkg/dist-src/util/is-plain-object.js\nfunction isPlainObject(value) {\n if (typeof value !== \"object\" || value === null)\n return false;\n if (Object.prototype.toString.call(value) !== \"[object Object]\")\n return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null)\n return true;\n const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\n\n// pkg/dist-src/util/merge-deep.js\nfunction mergeDeep(defaults, options) {\n const result = Object.assign({}, defaults);\n Object.keys(options).forEach((key) => {\n if (isPlainObject(options[key])) {\n if (!(key in defaults))\n Object.assign(result, { [key]: options[key] });\n else\n result[key] = mergeDeep(defaults[key], options[key]);\n } else {\n Object.assign(result, { [key]: options[key] });\n }\n });\n return result;\n}\n\n// pkg/dist-src/util/remove-undefined-properties.js\nfunction removeUndefinedProperties(obj) {\n for (const key in obj) {\n if (obj[key] === void 0) {\n delete obj[key];\n }\n }\n return obj;\n}\n\n// pkg/dist-src/merge.js\nfunction merge(defaults, route, options) {\n if (typeof route === \"string\") {\n let [method, url] = route.split(\" \");\n options = Object.assign(url ? { method, url } : { url: method }, options);\n } else {\n options = Object.assign({}, route);\n }\n options.headers = lowercaseKeys(options.headers);\n removeUndefinedProperties(options);\n removeUndefinedProperties(options.headers);\n const mergedOptions = mergeDeep(defaults || {}, options);\n if (options.url === \"/graphql\") {\n if (defaults && defaults.mediaType.previews?.length) {\n mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(\n (preview) => !mergedOptions.mediaType.previews.includes(preview)\n ).concat(mergedOptions.mediaType.previews);\n }\n mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, \"\"));\n }\n return mergedOptions;\n}\n\n// pkg/dist-src/util/add-query-parameters.js\nfunction addQueryParameters(url, parameters) {\n const separator = /\\?/.test(url) ? \"&\" : \"?\";\n const names = Object.keys(parameters);\n if (names.length === 0) {\n return url;\n }\n return url + separator + names.map((name) => {\n if (name === \"q\") {\n return \"q=\" + parameters.q.split(\"+\").map(encodeURIComponent).join(\"+\");\n }\n return `${name}=${encodeURIComponent(parameters[name])}`;\n }).join(\"&\");\n}\n\n// pkg/dist-src/util/extract-url-variable-names.js\nvar urlVariableRegex = /\\{[^}]+\\}/g;\nfunction removeNonChars(variableName) {\n return variableName.replace(/^\\W+|\\W+$/g, \"\").split(/,/);\n}\nfunction extractUrlVariableNames(url) {\n const matches = url.match(urlVariableRegex);\n if (!matches) {\n return [];\n }\n return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);\n}\n\n// pkg/dist-src/util/omit.js\nfunction omit(object, keysToOmit) {\n const result = { __proto__: null };\n for (const key of Object.keys(object)) {\n if (keysToOmit.indexOf(key) === -1) {\n result[key] = object[key];\n }\n }\n return result;\n}\n\n// pkg/dist-src/util/url-template.js\nfunction encodeReserved(str) {\n return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part).replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\n }\n return part;\n }).join(\"\");\n}\nfunction encodeUnreserved(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\nfunction encodeValue(operator, value, key) {\n value = operator === \"+\" || operator === \"#\" ? encodeReserved(value) : encodeUnreserved(value);\n if (key) {\n return encodeUnreserved(key) + \"=\" + value;\n } else {\n return value;\n }\n}\nfunction isDefined(value) {\n return value !== void 0 && value !== null;\n}\nfunction isKeyOperator(operator) {\n return operator === \";\" || operator === \"&\" || operator === \"?\";\n}\nfunction getValues(context, operator, key, modifier) {\n var value = context[key], result = [];\n if (isDefined(value) && value !== \"\") {\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n value = value.toString();\n if (modifier && modifier !== \"*\") {\n value = value.substring(0, parseInt(modifier, 10));\n }\n result.push(\n encodeValue(operator, value, isKeyOperator(operator) ? key : \"\")\n );\n } else {\n if (modifier === \"*\") {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function(value2) {\n result.push(\n encodeValue(operator, value2, isKeyOperator(operator) ? key : \"\")\n );\n });\n } else {\n Object.keys(value).forEach(function(k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n } else {\n const tmp = [];\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function(value2) {\n tmp.push(encodeValue(operator, value2));\n });\n } else {\n Object.keys(value).forEach(function(k) {\n if (isDefined(value[k])) {\n tmp.push(encodeUnreserved(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n if (isKeyOperator(operator)) {\n result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\n } else if (tmp.length !== 0) {\n result.push(tmp.join(\",\"));\n }\n }\n }\n } else {\n if (operator === \";\") {\n if (isDefined(value)) {\n result.push(encodeUnreserved(key));\n }\n } else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\n result.push(encodeUnreserved(key) + \"=\");\n } else if (value === \"\") {\n result.push(\"\");\n }\n }\n return result;\n}\nfunction parseUrl(template) {\n return {\n expand: expand.bind(null, template)\n };\n}\nfunction expand(template, context) {\n var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\n template = template.replace(\n /\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g,\n function(_, expression, literal) {\n if (expression) {\n let operator = \"\";\n const values = [];\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n expression.split(/,/g).forEach(function(variable) {\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n });\n if (operator && operator !== \"+\") {\n var separator = \",\";\n if (operator === \"?\") {\n separator = \"&\";\n } else if (operator !== \"#\") {\n separator = operator;\n }\n return (values.length !== 0 ? operator : \"\") + values.join(separator);\n } else {\n return values.join(\",\");\n }\n } else {\n return encodeReserved(literal);\n }\n }\n );\n if (template === \"/\") {\n return template;\n } else {\n return template.replace(/\\/$/, \"\");\n }\n}\n\n// pkg/dist-src/parse.js\nfunction parse(options) {\n let method = options.method.toUpperCase();\n let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{$1}\");\n let headers = Object.assign({}, options.headers);\n let body;\n let parameters = omit(options, [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"mediaType\"\n ]);\n const urlVariableNames = extractUrlVariableNames(url);\n url = parseUrl(url).expand(parameters);\n if (!/^http/.test(url)) {\n url = options.baseUrl + url;\n }\n const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat(\"baseUrl\");\n const remainingParameters = omit(parameters, omittedParameters);\n const isBinaryRequest = /application\\/octet-stream/i.test(headers.accept);\n if (!isBinaryRequest) {\n if (options.mediaType.format) {\n headers.accept = headers.accept.split(/,/).map(\n (format) => format.replace(\n /application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/,\n `application/vnd$1$2.${options.mediaType.format}`\n )\n ).join(\",\");\n }\n if (url.endsWith(\"/graphql\")) {\n if (options.mediaType.previews?.length) {\n const previewsFromAcceptHeader = headers.accept.match(/[\\w-]+(?=-preview)/g) || [];\n headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => {\n const format = options.mediaType.format ? `.${options.mediaType.format}` : \"+json\";\n return `application/vnd.github.${preview}-preview${format}`;\n }).join(\",\");\n }\n }\n }\n if ([\"GET\", \"HEAD\"].includes(method)) {\n url = addQueryParameters(url, remainingParameters);\n } else {\n if (\"data\" in remainingParameters) {\n body = remainingParameters.data;\n } else {\n if (Object.keys(remainingParameters).length) {\n body = remainingParameters;\n }\n }\n }\n if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\n headers[\"content-type\"] = \"application/json; charset=utf-8\";\n }\n if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\n body = \"\";\n }\n return Object.assign(\n { method, url, headers },\n typeof body !== \"undefined\" ? { body } : null,\n options.request ? { request: options.request } : null\n );\n}\n\n// pkg/dist-src/endpoint-with-defaults.js\nfunction endpointWithDefaults(defaults, route, options) {\n return parse(merge(defaults, route, options));\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(oldDefaults, newDefaults) {\n const DEFAULTS2 = merge(oldDefaults, newDefaults);\n const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2);\n return Object.assign(endpoint2, {\n DEFAULTS: DEFAULTS2,\n defaults: withDefaults.bind(null, DEFAULTS2),\n merge: merge.bind(null, DEFAULTS2),\n parse\n });\n}\n\n// pkg/dist-src/index.js\nvar endpoint = withDefaults(null, DEFAULTS);\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n endpoint\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n GraphqlResponseError: () => GraphqlResponseError,\n graphql: () => graphql2,\n withCustomRequest: () => withCustomRequest\n});\nmodule.exports = __toCommonJS(dist_src_exports);\nvar import_request3 = require(\"@octokit/request\");\nvar import_universal_user_agent = require(\"universal-user-agent\");\n\n// pkg/dist-src/version.js\nvar VERSION = \"7.1.0\";\n\n// pkg/dist-src/with-defaults.js\nvar import_request2 = require(\"@octokit/request\");\n\n// pkg/dist-src/graphql.js\nvar import_request = require(\"@octokit/request\");\n\n// pkg/dist-src/error.js\nfunction _buildMessageForResponseErrors(data) {\n return `Request failed due to following response errors:\n` + data.errors.map((e) => ` - ${e.message}`).join(\"\\n\");\n}\nvar GraphqlResponseError = class extends Error {\n constructor(request2, headers, response) {\n super(_buildMessageForResponseErrors(response));\n this.request = request2;\n this.headers = headers;\n this.response = response;\n this.name = \"GraphqlResponseError\";\n this.errors = response.errors;\n this.data = response.data;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n};\n\n// pkg/dist-src/graphql.js\nvar NON_VARIABLE_OPTIONS = [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"query\",\n \"mediaType\"\n];\nvar FORBIDDEN_VARIABLE_OPTIONS = [\"query\", \"method\", \"url\"];\nvar GHES_V3_SUFFIX_REGEX = /\\/api\\/v3\\/?$/;\nfunction graphql(request2, query, options) {\n if (options) {\n if (typeof query === \"string\" && \"query\" in options) {\n return Promise.reject(\n new Error(`[@octokit/graphql] \"query\" cannot be used as variable name`)\n );\n }\n for (const key in options) {\n if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key))\n continue;\n return Promise.reject(\n new Error(\n `[@octokit/graphql] \"${key}\" cannot be used as variable name`\n )\n );\n }\n }\n const parsedOptions = typeof query === \"string\" ? Object.assign({ query }, options) : query;\n const requestOptions = Object.keys(\n parsedOptions\n ).reduce((result, key) => {\n if (NON_VARIABLE_OPTIONS.includes(key)) {\n result[key] = parsedOptions[key];\n return result;\n }\n if (!result.variables) {\n result.variables = {};\n }\n result.variables[key] = parsedOptions[key];\n return result;\n }, {});\n const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl;\n if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {\n requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, \"/api/graphql\");\n }\n return request2(requestOptions).then((response) => {\n if (response.data.errors) {\n const headers = {};\n for (const key of Object.keys(response.headers)) {\n headers[key] = response.headers[key];\n }\n throw new GraphqlResponseError(\n requestOptions,\n headers,\n response.data\n );\n }\n return response.data.data;\n });\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(request2, newDefaults) {\n const newRequest = request2.defaults(newDefaults);\n const newApi = (query, options) => {\n return graphql(newRequest, query, options);\n };\n return Object.assign(newApi, {\n defaults: withDefaults.bind(null, newRequest),\n endpoint: newRequest.endpoint\n });\n}\n\n// pkg/dist-src/index.js\nvar graphql2 = withDefaults(import_request3.request, {\n headers: {\n \"user-agent\": `octokit-graphql.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`\n },\n method: \"POST\",\n url: \"/graphql\"\n});\nfunction withCustomRequest(customRequest) {\n return withDefaults(customRequest, {\n method: \"POST\",\n url: \"/graphql\"\n });\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n GraphqlResponseError,\n graphql,\n withCustomRequest\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n composePaginateRest: () => composePaginateRest,\n isPaginatingEndpoint: () => isPaginatingEndpoint,\n paginateRest: () => paginateRest,\n paginatingEndpoints: () => paginatingEndpoints\n});\nmodule.exports = __toCommonJS(dist_src_exports);\n\n// pkg/dist-src/version.js\nvar VERSION = \"9.2.1\";\n\n// pkg/dist-src/normalize-paginated-list-response.js\nfunction normalizePaginatedListResponse(response) {\n if (!response.data) {\n return {\n ...response,\n data: []\n };\n }\n const responseNeedsNormalization = \"total_count\" in response.data && !(\"url\" in response.data);\n if (!responseNeedsNormalization)\n return response;\n const incompleteResults = response.data.incomplete_results;\n const repositorySelection = response.data.repository_selection;\n const totalCount = response.data.total_count;\n delete response.data.incomplete_results;\n delete response.data.repository_selection;\n delete response.data.total_count;\n const namespaceKey = Object.keys(response.data)[0];\n const data = response.data[namespaceKey];\n response.data = data;\n if (typeof incompleteResults !== \"undefined\") {\n response.data.incomplete_results = incompleteResults;\n }\n if (typeof repositorySelection !== \"undefined\") {\n response.data.repository_selection = repositorySelection;\n }\n response.data.total_count = totalCount;\n return response;\n}\n\n// pkg/dist-src/iterator.js\nfunction iterator(octokit, route, parameters) {\n const options = typeof route === \"function\" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);\n const requestMethod = typeof route === \"function\" ? route : octokit.request;\n const method = options.method;\n const headers = options.headers;\n let url = options.url;\n return {\n [Symbol.asyncIterator]: () => ({\n async next() {\n if (!url)\n return { done: true };\n try {\n const response = await requestMethod({ method, url, headers });\n const normalizedResponse = normalizePaginatedListResponse(response);\n url = ((normalizedResponse.headers.link || \"\").match(\n /<([^>]+)>;\\s*rel=\"next\"/\n ) || [])[1];\n return { value: normalizedResponse };\n } catch (error) {\n if (error.status !== 409)\n throw error;\n url = \"\";\n return {\n value: {\n status: 200,\n headers: {},\n data: []\n }\n };\n }\n }\n })\n };\n}\n\n// pkg/dist-src/paginate.js\nfunction paginate(octokit, route, parameters, mapFn) {\n if (typeof parameters === \"function\") {\n mapFn = parameters;\n parameters = void 0;\n }\n return gather(\n octokit,\n [],\n iterator(octokit, route, parameters)[Symbol.asyncIterator](),\n mapFn\n );\n}\nfunction gather(octokit, results, iterator2, mapFn) {\n return iterator2.next().then((result) => {\n if (result.done) {\n return results;\n }\n let earlyExit = false;\n function done() {\n earlyExit = true;\n }\n results = results.concat(\n mapFn ? mapFn(result.value, done) : result.value.data\n );\n if (earlyExit) {\n return results;\n }\n return gather(octokit, results, iterator2, mapFn);\n });\n}\n\n// pkg/dist-src/compose-paginate.js\nvar composePaginateRest = Object.assign(paginate, {\n iterator\n});\n\n// pkg/dist-src/generated/paginating-endpoints.js\nvar paginatingEndpoints = [\n \"GET /advisories\",\n \"GET /app/hook/deliveries\",\n \"GET /app/installation-requests\",\n \"GET /app/installations\",\n \"GET /assignments/{assignment_id}/accepted_assignments\",\n \"GET /classrooms\",\n \"GET /classrooms/{classroom_id}/assignments\",\n \"GET /enterprises/{enterprise}/dependabot/alerts\",\n \"GET /enterprises/{enterprise}/secret-scanning/alerts\",\n \"GET /events\",\n \"GET /gists\",\n \"GET /gists/public\",\n \"GET /gists/starred\",\n \"GET /gists/{gist_id}/comments\",\n \"GET /gists/{gist_id}/commits\",\n \"GET /gists/{gist_id}/forks\",\n \"GET /installation/repositories\",\n \"GET /issues\",\n \"GET /licenses\",\n \"GET /marketplace_listing/plans\",\n \"GET /marketplace_listing/plans/{plan_id}/accounts\",\n \"GET /marketplace_listing/stubbed/plans\",\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\",\n \"GET /networks/{owner}/{repo}/events\",\n \"GET /notifications\",\n \"GET /organizations\",\n \"GET /orgs/{org}/actions/cache/usage-by-repository\",\n \"GET /orgs/{org}/actions/permissions/repositories\",\n \"GET /orgs/{org}/actions/runners\",\n \"GET /orgs/{org}/actions/secrets\",\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/actions/variables\",\n \"GET /orgs/{org}/actions/variables/{name}/repositories\",\n \"GET /orgs/{org}/blocks\",\n \"GET /orgs/{org}/code-scanning/alerts\",\n \"GET /orgs/{org}/codespaces\",\n \"GET /orgs/{org}/codespaces/secrets\",\n \"GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/copilot/billing/seats\",\n \"GET /orgs/{org}/dependabot/alerts\",\n \"GET /orgs/{org}/dependabot/secrets\",\n \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/events\",\n \"GET /orgs/{org}/failed_invitations\",\n \"GET /orgs/{org}/hooks\",\n \"GET /orgs/{org}/hooks/{hook_id}/deliveries\",\n \"GET /orgs/{org}/installations\",\n \"GET /orgs/{org}/invitations\",\n \"GET /orgs/{org}/invitations/{invitation_id}/teams\",\n \"GET /orgs/{org}/issues\",\n \"GET /orgs/{org}/members\",\n \"GET /orgs/{org}/members/{username}/codespaces\",\n \"GET /orgs/{org}/migrations\",\n \"GET /orgs/{org}/migrations/{migration_id}/repositories\",\n \"GET /orgs/{org}/organization-roles/{role_id}/teams\",\n \"GET /orgs/{org}/organization-roles/{role_id}/users\",\n \"GET /orgs/{org}/outside_collaborators\",\n \"GET /orgs/{org}/packages\",\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n \"GET /orgs/{org}/personal-access-token-requests\",\n \"GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories\",\n \"GET /orgs/{org}/personal-access-tokens\",\n \"GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories\",\n \"GET /orgs/{org}/projects\",\n \"GET /orgs/{org}/properties/values\",\n \"GET /orgs/{org}/public_members\",\n \"GET /orgs/{org}/repos\",\n \"GET /orgs/{org}/rulesets\",\n \"GET /orgs/{org}/rulesets/rule-suites\",\n \"GET /orgs/{org}/secret-scanning/alerts\",\n \"GET /orgs/{org}/security-advisories\",\n \"GET /orgs/{org}/teams\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n \"GET /orgs/{org}/teams/{team_slug}/invitations\",\n \"GET /orgs/{org}/teams/{team_slug}/members\",\n \"GET /orgs/{org}/teams/{team_slug}/projects\",\n \"GET /orgs/{org}/teams/{team_slug}/repos\",\n \"GET /orgs/{org}/teams/{team_slug}/teams\",\n \"GET /projects/columns/{column_id}/cards\",\n \"GET /projects/{project_id}/collaborators\",\n \"GET /projects/{project_id}/columns\",\n \"GET /repos/{owner}/{repo}/actions/artifacts\",\n \"GET /repos/{owner}/{repo}/actions/caches\",\n \"GET /repos/{owner}/{repo}/actions/organization-secrets\",\n \"GET /repos/{owner}/{repo}/actions/organization-variables\",\n \"GET /repos/{owner}/{repo}/actions/runners\",\n \"GET /repos/{owner}/{repo}/actions/runs\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\",\n \"GET /repos/{owner}/{repo}/actions/secrets\",\n \"GET /repos/{owner}/{repo}/actions/variables\",\n \"GET /repos/{owner}/{repo}/actions/workflows\",\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\",\n \"GET /repos/{owner}/{repo}/activity\",\n \"GET /repos/{owner}/{repo}/assignees\",\n \"GET /repos/{owner}/{repo}/branches\",\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\",\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\",\n \"GET /repos/{owner}/{repo}/code-scanning/alerts\",\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n \"GET /repos/{owner}/{repo}/code-scanning/analyses\",\n \"GET /repos/{owner}/{repo}/codespaces\",\n \"GET /repos/{owner}/{repo}/codespaces/devcontainers\",\n \"GET /repos/{owner}/{repo}/codespaces/secrets\",\n \"GET /repos/{owner}/{repo}/collaborators\",\n \"GET /repos/{owner}/{repo}/comments\",\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/commits\",\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/status\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\",\n \"GET /repos/{owner}/{repo}/contributors\",\n \"GET /repos/{owner}/{repo}/dependabot/alerts\",\n \"GET /repos/{owner}/{repo}/dependabot/secrets\",\n \"GET /repos/{owner}/{repo}/deployments\",\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n \"GET /repos/{owner}/{repo}/environments\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps\",\n \"GET /repos/{owner}/{repo}/events\",\n \"GET /repos/{owner}/{repo}/forks\",\n \"GET /repos/{owner}/{repo}/hooks\",\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\",\n \"GET /repos/{owner}/{repo}/invitations\",\n \"GET /repos/{owner}/{repo}/issues\",\n \"GET /repos/{owner}/{repo}/issues/comments\",\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/issues/events\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/events\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\",\n \"GET /repos/{owner}/{repo}/keys\",\n \"GET /repos/{owner}/{repo}/labels\",\n \"GET /repos/{owner}/{repo}/milestones\",\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\",\n \"GET /repos/{owner}/{repo}/notifications\",\n \"GET /repos/{owner}/{repo}/pages/builds\",\n \"GET /repos/{owner}/{repo}/projects\",\n \"GET /repos/{owner}/{repo}/pulls\",\n \"GET /repos/{owner}/{repo}/pulls/comments\",\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\",\n \"GET /repos/{owner}/{repo}/releases\",\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\",\n \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n \"GET /repos/{owner}/{repo}/rules/branches/{branch}\",\n \"GET /repos/{owner}/{repo}/rulesets\",\n \"GET /repos/{owner}/{repo}/rulesets/rule-suites\",\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts\",\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\",\n \"GET /repos/{owner}/{repo}/security-advisories\",\n \"GET /repos/{owner}/{repo}/stargazers\",\n \"GET /repos/{owner}/{repo}/subscribers\",\n \"GET /repos/{owner}/{repo}/tags\",\n \"GET /repos/{owner}/{repo}/teams\",\n \"GET /repos/{owner}/{repo}/topics\",\n \"GET /repositories\",\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets\",\n \"GET /repositories/{repository_id}/environments/{environment_name}/variables\",\n \"GET /search/code\",\n \"GET /search/commits\",\n \"GET /search/issues\",\n \"GET /search/labels\",\n \"GET /search/repositories\",\n \"GET /search/topics\",\n \"GET /search/users\",\n \"GET /teams/{team_id}/discussions\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/comments\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/reactions\",\n \"GET /teams/{team_id}/invitations\",\n \"GET /teams/{team_id}/members\",\n \"GET /teams/{team_id}/projects\",\n \"GET /teams/{team_id}/repos\",\n \"GET /teams/{team_id}/teams\",\n \"GET /user/blocks\",\n \"GET /user/codespaces\",\n \"GET /user/codespaces/secrets\",\n \"GET /user/emails\",\n \"GET /user/followers\",\n \"GET /user/following\",\n \"GET /user/gpg_keys\",\n \"GET /user/installations\",\n \"GET /user/installations/{installation_id}/repositories\",\n \"GET /user/issues\",\n \"GET /user/keys\",\n \"GET /user/marketplace_purchases\",\n \"GET /user/marketplace_purchases/stubbed\",\n \"GET /user/memberships/orgs\",\n \"GET /user/migrations\",\n \"GET /user/migrations/{migration_id}/repositories\",\n \"GET /user/orgs\",\n \"GET /user/packages\",\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n \"GET /user/public_emails\",\n \"GET /user/repos\",\n \"GET /user/repository_invitations\",\n \"GET /user/social_accounts\",\n \"GET /user/ssh_signing_keys\",\n \"GET /user/starred\",\n \"GET /user/subscriptions\",\n \"GET /user/teams\",\n \"GET /users\",\n \"GET /users/{username}/events\",\n \"GET /users/{username}/events/orgs/{org}\",\n \"GET /users/{username}/events/public\",\n \"GET /users/{username}/followers\",\n \"GET /users/{username}/following\",\n \"GET /users/{username}/gists\",\n \"GET /users/{username}/gpg_keys\",\n \"GET /users/{username}/keys\",\n \"GET /users/{username}/orgs\",\n \"GET /users/{username}/packages\",\n \"GET /users/{username}/projects\",\n \"GET /users/{username}/received_events\",\n \"GET /users/{username}/received_events/public\",\n \"GET /users/{username}/repos\",\n \"GET /users/{username}/social_accounts\",\n \"GET /users/{username}/ssh_signing_keys\",\n \"GET /users/{username}/starred\",\n \"GET /users/{username}/subscriptions\"\n];\n\n// pkg/dist-src/paginating-endpoints.js\nfunction isPaginatingEndpoint(arg) {\n if (typeof arg === \"string\") {\n return paginatingEndpoints.includes(arg);\n } else {\n return false;\n }\n}\n\n// pkg/dist-src/index.js\nfunction paginateRest(octokit) {\n return {\n paginate: Object.assign(paginate.bind(null, octokit), {\n iterator: iterator.bind(null, octokit)\n })\n };\n}\npaginateRest.VERSION = VERSION;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n composePaginateRest,\n isPaginatingEndpoint,\n paginateRest,\n paginatingEndpoints\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n legacyRestEndpointMethods: () => legacyRestEndpointMethods,\n restEndpointMethods: () => restEndpointMethods\n});\nmodule.exports = __toCommonJS(dist_src_exports);\n\n// pkg/dist-src/version.js\nvar VERSION = \"10.4.1\";\n\n// pkg/dist-src/generated/endpoints.js\nvar Endpoints = {\n actions: {\n addCustomLabelsToSelfHostedRunnerForOrg: [\n \"POST /orgs/{org}/actions/runners/{runner_id}/labels\"\n ],\n addCustomLabelsToSelfHostedRunnerForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n ],\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n addSelectedRepoToOrgVariable: [\n \"PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}\"\n ],\n approveWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve\"\n ],\n cancelWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel\"\n ],\n createEnvironmentVariable: [\n \"POST /repositories/{repository_id}/environments/{environment_name}/variables\"\n ],\n createOrUpdateEnvironmentSecret: [\n \"PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"\n ],\n createOrUpdateOrgSecret: [\"PUT /orgs/{org}/actions/secrets/{secret_name}\"],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}\"\n ],\n createOrgVariable: [\"POST /orgs/{org}/actions/variables\"],\n createRegistrationTokenForOrg: [\n \"POST /orgs/{org}/actions/runners/registration-token\"\n ],\n createRegistrationTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/registration-token\"\n ],\n createRemoveTokenForOrg: [\"POST /orgs/{org}/actions/runners/remove-token\"],\n createRemoveTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/remove-token\"\n ],\n createRepoVariable: [\"POST /repos/{owner}/{repo}/actions/variables\"],\n createWorkflowDispatch: [\n \"POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches\"\n ],\n deleteActionsCacheById: [\n \"DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}\"\n ],\n deleteActionsCacheByKey: [\n \"DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}\"\n ],\n deleteArtifact: [\n \"DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"\n ],\n deleteEnvironmentSecret: [\n \"DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"\n ],\n deleteEnvironmentVariable: [\n \"DELETE /repositories/{repository_id}/environments/{environment_name}/variables/{name}\"\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/actions/secrets/{secret_name}\"],\n deleteOrgVariable: [\"DELETE /orgs/{org}/actions/variables/{name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}\"\n ],\n deleteRepoVariable: [\n \"DELETE /repos/{owner}/{repo}/actions/variables/{name}\"\n ],\n deleteSelfHostedRunnerFromOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}\"\n ],\n deleteSelfHostedRunnerFromRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}\"\n ],\n deleteWorkflowRun: [\"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n deleteWorkflowRunLogs: [\n \"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs\"\n ],\n disableSelectedRepositoryGithubActionsOrganization: [\n \"DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}\"\n ],\n disableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable\"\n ],\n downloadArtifact: [\n \"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}\"\n ],\n downloadJobLogsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs\"\n ],\n downloadWorkflowRunAttemptLogs: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs\"\n ],\n downloadWorkflowRunLogs: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs\"\n ],\n enableSelectedRepositoryGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories/{repository_id}\"\n ],\n enableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable\"\n ],\n forceCancelWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel\"\n ],\n generateRunnerJitconfigForOrg: [\n \"POST /orgs/{org}/actions/runners/generate-jitconfig\"\n ],\n generateRunnerJitconfigForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig\"\n ],\n getActionsCacheList: [\"GET /repos/{owner}/{repo}/actions/caches\"],\n getActionsCacheUsage: [\"GET /repos/{owner}/{repo}/actions/cache/usage\"],\n getActionsCacheUsageByRepoForOrg: [\n \"GET /orgs/{org}/actions/cache/usage-by-repository\"\n ],\n getActionsCacheUsageForOrg: [\"GET /orgs/{org}/actions/cache/usage\"],\n getAllowedActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/selected-actions\"\n ],\n getAllowedActionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/selected-actions\"\n ],\n getArtifact: [\"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"],\n getCustomOidcSubClaimForRepo: [\n \"GET /repos/{owner}/{repo}/actions/oidc/customization/sub\"\n ],\n getEnvironmentPublicKey: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key\"\n ],\n getEnvironmentSecret: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"\n ],\n getEnvironmentVariable: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/variables/{name}\"\n ],\n getGithubActionsDefaultWorkflowPermissionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/workflow\"\n ],\n getGithubActionsDefaultWorkflowPermissionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/workflow\"\n ],\n getGithubActionsPermissionsOrganization: [\n \"GET /orgs/{org}/actions/permissions\"\n ],\n getGithubActionsPermissionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions\"\n ],\n getJobForWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/jobs/{job_id}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/actions/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/actions/secrets/{secret_name}\"],\n getOrgVariable: [\"GET /orgs/{org}/actions/variables/{name}\"],\n getPendingDeploymentsForRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\"\n ],\n getRepoPermissions: [\n \"GET /repos/{owner}/{repo}/actions/permissions\",\n {},\n { renamed: [\"actions\", \"getGithubActionsPermissionsRepository\"] }\n ],\n getRepoPublicKey: [\"GET /repos/{owner}/{repo}/actions/secrets/public-key\"],\n getRepoSecret: [\"GET /repos/{owner}/{repo}/actions/secrets/{secret_name}\"],\n getRepoVariable: [\"GET /repos/{owner}/{repo}/actions/variables/{name}\"],\n getReviewsForRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals\"\n ],\n getSelfHostedRunnerForOrg: [\"GET /orgs/{org}/actions/runners/{runner_id}\"],\n getSelfHostedRunnerForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}\"\n ],\n getWorkflow: [\"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}\"],\n getWorkflowAccessToRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/access\"\n ],\n getWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n getWorkflowRunAttempt: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}\"\n ],\n getWorkflowRunUsage: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing\"\n ],\n getWorkflowUsage: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing\"\n ],\n listArtifactsForRepo: [\"GET /repos/{owner}/{repo}/actions/artifacts\"],\n listEnvironmentSecrets: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets\"\n ],\n listEnvironmentVariables: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/variables\"\n ],\n listJobsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\"\n ],\n listJobsForWorkflowRunAttempt: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\"\n ],\n listLabelsForSelfHostedRunnerForOrg: [\n \"GET /orgs/{org}/actions/runners/{runner_id}/labels\"\n ],\n listLabelsForSelfHostedRunnerForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n ],\n listOrgSecrets: [\"GET /orgs/{org}/actions/secrets\"],\n listOrgVariables: [\"GET /orgs/{org}/actions/variables\"],\n listRepoOrganizationSecrets: [\n \"GET /repos/{owner}/{repo}/actions/organization-secrets\"\n ],\n listRepoOrganizationVariables: [\n \"GET /repos/{owner}/{repo}/actions/organization-variables\"\n ],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/actions/secrets\"],\n listRepoVariables: [\"GET /repos/{owner}/{repo}/actions/variables\"],\n listRepoWorkflows: [\"GET /repos/{owner}/{repo}/actions/workflows\"],\n listRunnerApplicationsForOrg: [\"GET /orgs/{org}/actions/runners/downloads\"],\n listRunnerApplicationsForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/downloads\"\n ],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\"\n ],\n listSelectedReposForOrgVariable: [\n \"GET /orgs/{org}/actions/variables/{name}/repositories\"\n ],\n listSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/repositories\"\n ],\n listSelfHostedRunnersForOrg: [\"GET /orgs/{org}/actions/runners\"],\n listSelfHostedRunnersForRepo: [\"GET /repos/{owner}/{repo}/actions/runners\"],\n listWorkflowRunArtifacts: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\"\n ],\n listWorkflowRuns: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\"\n ],\n listWorkflowRunsForRepo: [\"GET /repos/{owner}/{repo}/actions/runs\"],\n reRunJobForWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun\"\n ],\n reRunWorkflow: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun\"],\n reRunWorkflowFailedJobs: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs\"\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels\"\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n ],\n removeCustomLabelFromSelfHostedRunnerForOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}\"\n ],\n removeCustomLabelFromSelfHostedRunnerForRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}\"\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n removeSelectedRepoFromOrgVariable: [\n \"DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}\"\n ],\n reviewCustomGatesForRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule\"\n ],\n reviewPendingDeploymentsForRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\"\n ],\n setAllowedActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/selected-actions\"\n ],\n setAllowedActionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/selected-actions\"\n ],\n setCustomLabelsForSelfHostedRunnerForOrg: [\n \"PUT /orgs/{org}/actions/runners/{runner_id}/labels\"\n ],\n setCustomLabelsForSelfHostedRunnerForRepo: [\n \"PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n ],\n setCustomOidcSubClaimForRepo: [\n \"PUT /repos/{owner}/{repo}/actions/oidc/customization/sub\"\n ],\n setGithubActionsDefaultWorkflowPermissionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/workflow\"\n ],\n setGithubActionsDefaultWorkflowPermissionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/workflow\"\n ],\n setGithubActionsPermissionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions\"\n ],\n setGithubActionsPermissionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions\"\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories\"\n ],\n setSelectedReposForOrgVariable: [\n \"PUT /orgs/{org}/actions/variables/{name}/repositories\"\n ],\n setSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories\"\n ],\n setWorkflowAccessToRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/access\"\n ],\n updateEnvironmentVariable: [\n \"PATCH /repositories/{repository_id}/environments/{environment_name}/variables/{name}\"\n ],\n updateOrgVariable: [\"PATCH /orgs/{org}/actions/variables/{name}\"],\n updateRepoVariable: [\n \"PATCH /repos/{owner}/{repo}/actions/variables/{name}\"\n ]\n },\n activity: {\n checkRepoIsStarredByAuthenticatedUser: [\"GET /user/starred/{owner}/{repo}\"],\n deleteRepoSubscription: [\"DELETE /repos/{owner}/{repo}/subscription\"],\n deleteThreadSubscription: [\n \"DELETE /notifications/threads/{thread_id}/subscription\"\n ],\n getFeeds: [\"GET /feeds\"],\n getRepoSubscription: [\"GET /repos/{owner}/{repo}/subscription\"],\n getThread: [\"GET /notifications/threads/{thread_id}\"],\n getThreadSubscriptionForAuthenticatedUser: [\n \"GET /notifications/threads/{thread_id}/subscription\"\n ],\n listEventsForAuthenticatedUser: [\"GET /users/{username}/events\"],\n listNotificationsForAuthenticatedUser: [\"GET /notifications\"],\n listOrgEventsForAuthenticatedUser: [\n \"GET /users/{username}/events/orgs/{org}\"\n ],\n listPublicEvents: [\"GET /events\"],\n listPublicEventsForRepoNetwork: [\"GET /networks/{owner}/{repo}/events\"],\n listPublicEventsForUser: [\"GET /users/{username}/events/public\"],\n listPublicOrgEvents: [\"GET /orgs/{org}/events\"],\n listReceivedEventsForUser: [\"GET /users/{username}/received_events\"],\n listReceivedPublicEventsForUser: [\n \"GET /users/{username}/received_events/public\"\n ],\n listRepoEvents: [\"GET /repos/{owner}/{repo}/events\"],\n listRepoNotificationsForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/notifications\"\n ],\n listReposStarredByAuthenticatedUser: [\"GET /user/starred\"],\n listReposStarredByUser: [\"GET /users/{username}/starred\"],\n listReposWatchedByUser: [\"GET /users/{username}/subscriptions\"],\n listStargazersForRepo: [\"GET /repos/{owner}/{repo}/stargazers\"],\n listWatchedReposForAuthenticatedUser: [\"GET /user/subscriptions\"],\n listWatchersForRepo: [\"GET /repos/{owner}/{repo}/subscribers\"],\n markNotificationsAsRead: [\"PUT /notifications\"],\n markRepoNotificationsAsRead: [\"PUT /repos/{owner}/{repo}/notifications\"],\n markThreadAsDone: [\"DELETE /notifications/threads/{thread_id}\"],\n markThreadAsRead: [\"PATCH /notifications/threads/{thread_id}\"],\n setRepoSubscription: [\"PUT /repos/{owner}/{repo}/subscription\"],\n setThreadSubscription: [\n \"PUT /notifications/threads/{thread_id}/subscription\"\n ],\n starRepoForAuthenticatedUser: [\"PUT /user/starred/{owner}/{repo}\"],\n unstarRepoForAuthenticatedUser: [\"DELETE /user/starred/{owner}/{repo}\"]\n },\n apps: {\n addRepoToInstallation: [\n \"PUT /user/installations/{installation_id}/repositories/{repository_id}\",\n {},\n { renamed: [\"apps\", \"addRepoToInstallationForAuthenticatedUser\"] }\n ],\n addRepoToInstallationForAuthenticatedUser: [\n \"PUT /user/installations/{installation_id}/repositories/{repository_id}\"\n ],\n checkToken: [\"POST /applications/{client_id}/token\"],\n createFromManifest: [\"POST /app-manifests/{code}/conversions\"],\n createInstallationAccessToken: [\n \"POST /app/installations/{installation_id}/access_tokens\"\n ],\n deleteAuthorization: [\"DELETE /applications/{client_id}/grant\"],\n deleteInstallation: [\"DELETE /app/installations/{installation_id}\"],\n deleteToken: [\"DELETE /applications/{client_id}/token\"],\n getAuthenticated: [\"GET /app\"],\n getBySlug: [\"GET /apps/{app_slug}\"],\n getInstallation: [\"GET /app/installations/{installation_id}\"],\n getOrgInstallation: [\"GET /orgs/{org}/installation\"],\n getRepoInstallation: [\"GET /repos/{owner}/{repo}/installation\"],\n getSubscriptionPlanForAccount: [\n \"GET /marketplace_listing/accounts/{account_id}\"\n ],\n getSubscriptionPlanForAccountStubbed: [\n \"GET /marketplace_listing/stubbed/accounts/{account_id}\"\n ],\n getUserInstallation: [\"GET /users/{username}/installation\"],\n getWebhookConfigForApp: [\"GET /app/hook/config\"],\n getWebhookDelivery: [\"GET /app/hook/deliveries/{delivery_id}\"],\n listAccountsForPlan: [\"GET /marketplace_listing/plans/{plan_id}/accounts\"],\n listAccountsForPlanStubbed: [\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\"\n ],\n listInstallationReposForAuthenticatedUser: [\n \"GET /user/installations/{installation_id}/repositories\"\n ],\n listInstallationRequestsForAuthenticatedApp: [\n \"GET /app/installation-requests\"\n ],\n listInstallations: [\"GET /app/installations\"],\n listInstallationsForAuthenticatedUser: [\"GET /user/installations\"],\n listPlans: [\"GET /marketplace_listing/plans\"],\n listPlansStubbed: [\"GET /marketplace_listing/stubbed/plans\"],\n listReposAccessibleToInstallation: [\"GET /installation/repositories\"],\n listSubscriptionsForAuthenticatedUser: [\"GET /user/marketplace_purchases\"],\n listSubscriptionsForAuthenticatedUserStubbed: [\n \"GET /user/marketplace_purchases/stubbed\"\n ],\n listWebhookDeliveries: [\"GET /app/hook/deliveries\"],\n redeliverWebhookDelivery: [\n \"POST /app/hook/deliveries/{delivery_id}/attempts\"\n ],\n removeRepoFromInstallation: [\n \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\",\n {},\n { renamed: [\"apps\", \"removeRepoFromInstallationForAuthenticatedUser\"] }\n ],\n removeRepoFromInstallationForAuthenticatedUser: [\n \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\"\n ],\n resetToken: [\"PATCH /applications/{client_id}/token\"],\n revokeInstallationAccessToken: [\"DELETE /installation/token\"],\n scopeToken: [\"POST /applications/{client_id}/token/scoped\"],\n suspendInstallation: [\"PUT /app/installations/{installation_id}/suspended\"],\n unsuspendInstallation: [\n \"DELETE /app/installations/{installation_id}/suspended\"\n ],\n updateWebhookConfigForApp: [\"PATCH /app/hook/config\"]\n },\n billing: {\n getGithubActionsBillingOrg: [\"GET /orgs/{org}/settings/billing/actions\"],\n getGithubActionsBillingUser: [\n \"GET /users/{username}/settings/billing/actions\"\n ],\n getGithubPackagesBillingOrg: [\"GET /orgs/{org}/settings/billing/packages\"],\n getGithubPackagesBillingUser: [\n \"GET /users/{username}/settings/billing/packages\"\n ],\n getSharedStorageBillingOrg: [\n \"GET /orgs/{org}/settings/billing/shared-storage\"\n ],\n getSharedStorageBillingUser: [\n \"GET /users/{username}/settings/billing/shared-storage\"\n ]\n },\n checks: {\n create: [\"POST /repos/{owner}/{repo}/check-runs\"],\n createSuite: [\"POST /repos/{owner}/{repo}/check-suites\"],\n get: [\"GET /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n getSuite: [\"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}\"],\n listAnnotations: [\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\"\n ],\n listForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\"],\n listForSuite: [\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\"\n ],\n listSuitesForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\"],\n rerequestRun: [\n \"POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest\"\n ],\n rerequestSuite: [\n \"POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest\"\n ],\n setSuitesPreferences: [\n \"PATCH /repos/{owner}/{repo}/check-suites/preferences\"\n ],\n update: [\"PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}\"]\n },\n codeScanning: {\n deleteAnalysis: [\n \"DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}\"\n ],\n getAlert: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\",\n {},\n { renamedParameters: { alert_id: \"alert_number\" } }\n ],\n getAnalysis: [\n \"GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}\"\n ],\n getCodeqlDatabase: [\n \"GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}\"\n ],\n getDefaultSetup: [\"GET /repos/{owner}/{repo}/code-scanning/default-setup\"],\n getSarif: [\"GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}\"],\n listAlertInstances: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\"\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/code-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/code-scanning/alerts\"],\n listAlertsInstances: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n {},\n { renamed: [\"codeScanning\", \"listAlertInstances\"] }\n ],\n listCodeqlDatabases: [\n \"GET /repos/{owner}/{repo}/code-scanning/codeql/databases\"\n ],\n listRecentAnalyses: [\"GET /repos/{owner}/{repo}/code-scanning/analyses\"],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\"\n ],\n updateDefaultSetup: [\n \"PATCH /repos/{owner}/{repo}/code-scanning/default-setup\"\n ],\n uploadSarif: [\"POST /repos/{owner}/{repo}/code-scanning/sarifs\"]\n },\n codesOfConduct: {\n getAllCodesOfConduct: [\"GET /codes_of_conduct\"],\n getConductCode: [\"GET /codes_of_conduct/{key}\"]\n },\n codespaces: {\n addRepositoryForSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n checkPermissionsForDevcontainer: [\n \"GET /repos/{owner}/{repo}/codespaces/permissions_check\"\n ],\n codespaceMachinesForAuthenticatedUser: [\n \"GET /user/codespaces/{codespace_name}/machines\"\n ],\n createForAuthenticatedUser: [\"POST /user/codespaces\"],\n createOrUpdateOrgSecret: [\n \"PUT /orgs/{org}/codespaces/secrets/{secret_name}\"\n ],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"\n ],\n createOrUpdateSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}\"\n ],\n createWithPrForAuthenticatedUser: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces\"\n ],\n createWithRepoForAuthenticatedUser: [\n \"POST /repos/{owner}/{repo}/codespaces\"\n ],\n deleteForAuthenticatedUser: [\"DELETE /user/codespaces/{codespace_name}\"],\n deleteFromOrganization: [\n \"DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}\"\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/codespaces/secrets/{secret_name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"\n ],\n deleteSecretForAuthenticatedUser: [\n \"DELETE /user/codespaces/secrets/{secret_name}\"\n ],\n exportForAuthenticatedUser: [\n \"POST /user/codespaces/{codespace_name}/exports\"\n ],\n getCodespacesForUserInOrg: [\n \"GET /orgs/{org}/members/{username}/codespaces\"\n ],\n getExportDetailsForAuthenticatedUser: [\n \"GET /user/codespaces/{codespace_name}/exports/{export_id}\"\n ],\n getForAuthenticatedUser: [\"GET /user/codespaces/{codespace_name}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/codespaces/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/codespaces/secrets/{secret_name}\"],\n getPublicKeyForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/public-key\"\n ],\n getRepoPublicKey: [\n \"GET /repos/{owner}/{repo}/codespaces/secrets/public-key\"\n ],\n getRepoSecret: [\n \"GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"\n ],\n getSecretForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/{secret_name}\"\n ],\n listDevcontainersInRepositoryForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/devcontainers\"\n ],\n listForAuthenticatedUser: [\"GET /user/codespaces\"],\n listInOrganization: [\n \"GET /orgs/{org}/codespaces\",\n {},\n { renamedParameters: { org_id: \"org\" } }\n ],\n listInRepositoryForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces\"\n ],\n listOrgSecrets: [\"GET /orgs/{org}/codespaces/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/codespaces/secrets\"],\n listRepositoriesForSecretForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/{secret_name}/repositories\"\n ],\n listSecretsForAuthenticatedUser: [\"GET /user/codespaces/secrets\"],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories\"\n ],\n preFlightWithRepoForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/new\"\n ],\n publishForAuthenticatedUser: [\n \"POST /user/codespaces/{codespace_name}/publish\"\n ],\n removeRepositoryForSecretForAuthenticatedUser: [\n \"DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n repoMachinesForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/machines\"\n ],\n setRepositoriesForSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}/repositories\"\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories\"\n ],\n startForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/start\"],\n stopForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/stop\"],\n stopInOrganization: [\n \"POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop\"\n ],\n updateForAuthenticatedUser: [\"PATCH /user/codespaces/{codespace_name}\"]\n },\n copilot: {\n addCopilotSeatsForTeams: [\n \"POST /orgs/{org}/copilot/billing/selected_teams\"\n ],\n addCopilotSeatsForUsers: [\n \"POST /orgs/{org}/copilot/billing/selected_users\"\n ],\n cancelCopilotSeatAssignmentForTeams: [\n \"DELETE /orgs/{org}/copilot/billing/selected_teams\"\n ],\n cancelCopilotSeatAssignmentForUsers: [\n \"DELETE /orgs/{org}/copilot/billing/selected_users\"\n ],\n getCopilotOrganizationDetails: [\"GET /orgs/{org}/copilot/billing\"],\n getCopilotSeatDetailsForUser: [\n \"GET /orgs/{org}/members/{username}/copilot\"\n ],\n listCopilotSeats: [\"GET /orgs/{org}/copilot/billing/seats\"]\n },\n dependabot: {\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n createOrUpdateOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}\"\n ],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/dependabot/secrets/{secret_name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"\n ],\n getAlert: [\"GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/dependabot/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/dependabot/secrets/{secret_name}\"],\n getRepoPublicKey: [\n \"GET /repos/{owner}/{repo}/dependabot/secrets/public-key\"\n ],\n getRepoSecret: [\n \"GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"\n ],\n listAlertsForEnterprise: [\n \"GET /enterprises/{enterprise}/dependabot/alerts\"\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/dependabot/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/dependabot/alerts\"],\n listOrgSecrets: [\"GET /orgs/{org}/dependabot/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/dependabot/secrets\"],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\"\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories\"\n ],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}\"\n ]\n },\n dependencyGraph: {\n createRepositorySnapshot: [\n \"POST /repos/{owner}/{repo}/dependency-graph/snapshots\"\n ],\n diffRange: [\n \"GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}\"\n ],\n exportSbom: [\"GET /repos/{owner}/{repo}/dependency-graph/sbom\"]\n },\n emojis: { get: [\"GET /emojis\"] },\n gists: {\n checkIsStarred: [\"GET /gists/{gist_id}/star\"],\n create: [\"POST /gists\"],\n createComment: [\"POST /gists/{gist_id}/comments\"],\n delete: [\"DELETE /gists/{gist_id}\"],\n deleteComment: [\"DELETE /gists/{gist_id}/comments/{comment_id}\"],\n fork: [\"POST /gists/{gist_id}/forks\"],\n get: [\"GET /gists/{gist_id}\"],\n getComment: [\"GET /gists/{gist_id}/comments/{comment_id}\"],\n getRevision: [\"GET /gists/{gist_id}/{sha}\"],\n list: [\"GET /gists\"],\n listComments: [\"GET /gists/{gist_id}/comments\"],\n listCommits: [\"GET /gists/{gist_id}/commits\"],\n listForUser: [\"GET /users/{username}/gists\"],\n listForks: [\"GET /gists/{gist_id}/forks\"],\n listPublic: [\"GET /gists/public\"],\n listStarred: [\"GET /gists/starred\"],\n star: [\"PUT /gists/{gist_id}/star\"],\n unstar: [\"DELETE /gists/{gist_id}/star\"],\n update: [\"PATCH /gists/{gist_id}\"],\n updateComment: [\"PATCH /gists/{gist_id}/comments/{comment_id}\"]\n },\n git: {\n createBlob: [\"POST /repos/{owner}/{repo}/git/blobs\"],\n createCommit: [\"POST /repos/{owner}/{repo}/git/commits\"],\n createRef: [\"POST /repos/{owner}/{repo}/git/refs\"],\n createTag: [\"POST /repos/{owner}/{repo}/git/tags\"],\n createTree: [\"POST /repos/{owner}/{repo}/git/trees\"],\n deleteRef: [\"DELETE /repos/{owner}/{repo}/git/refs/{ref}\"],\n getBlob: [\"GET /repos/{owner}/{repo}/git/blobs/{file_sha}\"],\n getCommit: [\"GET /repos/{owner}/{repo}/git/commits/{commit_sha}\"],\n getRef: [\"GET /repos/{owner}/{repo}/git/ref/{ref}\"],\n getTag: [\"GET /repos/{owner}/{repo}/git/tags/{tag_sha}\"],\n getTree: [\"GET /repos/{owner}/{repo}/git/trees/{tree_sha}\"],\n listMatchingRefs: [\"GET /repos/{owner}/{repo}/git/matching-refs/{ref}\"],\n updateRef: [\"PATCH /repos/{owner}/{repo}/git/refs/{ref}\"]\n },\n gitignore: {\n getAllTemplates: [\"GET /gitignore/templates\"],\n getTemplate: [\"GET /gitignore/templates/{name}\"]\n },\n interactions: {\n getRestrictionsForAuthenticatedUser: [\"GET /user/interaction-limits\"],\n getRestrictionsForOrg: [\"GET /orgs/{org}/interaction-limits\"],\n getRestrictionsForRepo: [\"GET /repos/{owner}/{repo}/interaction-limits\"],\n getRestrictionsForYourPublicRepos: [\n \"GET /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"getRestrictionsForAuthenticatedUser\"] }\n ],\n removeRestrictionsForAuthenticatedUser: [\"DELETE /user/interaction-limits\"],\n removeRestrictionsForOrg: [\"DELETE /orgs/{org}/interaction-limits\"],\n removeRestrictionsForRepo: [\n \"DELETE /repos/{owner}/{repo}/interaction-limits\"\n ],\n removeRestrictionsForYourPublicRepos: [\n \"DELETE /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"removeRestrictionsForAuthenticatedUser\"] }\n ],\n setRestrictionsForAuthenticatedUser: [\"PUT /user/interaction-limits\"],\n setRestrictionsForOrg: [\"PUT /orgs/{org}/interaction-limits\"],\n setRestrictionsForRepo: [\"PUT /repos/{owner}/{repo}/interaction-limits\"],\n setRestrictionsForYourPublicRepos: [\n \"PUT /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"setRestrictionsForAuthenticatedUser\"] }\n ]\n },\n issues: {\n addAssignees: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/assignees\"\n ],\n addLabels: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n checkUserCanBeAssigned: [\"GET /repos/{owner}/{repo}/assignees/{assignee}\"],\n checkUserCanBeAssignedToIssue: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}\"\n ],\n create: [\"POST /repos/{owner}/{repo}/issues\"],\n createComment: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/comments\"\n ],\n createLabel: [\"POST /repos/{owner}/{repo}/labels\"],\n createMilestone: [\"POST /repos/{owner}/{repo}/milestones\"],\n deleteComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}\"\n ],\n deleteLabel: [\"DELETE /repos/{owner}/{repo}/labels/{name}\"],\n deleteMilestone: [\n \"DELETE /repos/{owner}/{repo}/milestones/{milestone_number}\"\n ],\n get: [\"GET /repos/{owner}/{repo}/issues/{issue_number}\"],\n getComment: [\"GET /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n getEvent: [\"GET /repos/{owner}/{repo}/issues/events/{event_id}\"],\n getLabel: [\"GET /repos/{owner}/{repo}/labels/{name}\"],\n getMilestone: [\"GET /repos/{owner}/{repo}/milestones/{milestone_number}\"],\n list: [\"GET /issues\"],\n listAssignees: [\"GET /repos/{owner}/{repo}/assignees\"],\n listComments: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\"],\n listCommentsForRepo: [\"GET /repos/{owner}/{repo}/issues/comments\"],\n listEvents: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/events\"],\n listEventsForRepo: [\"GET /repos/{owner}/{repo}/issues/events\"],\n listEventsForTimeline: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\"\n ],\n listForAuthenticatedUser: [\"GET /user/issues\"],\n listForOrg: [\"GET /orgs/{org}/issues\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/issues\"],\n listLabelsForMilestone: [\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\"\n ],\n listLabelsForRepo: [\"GET /repos/{owner}/{repo}/labels\"],\n listLabelsOnIssue: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\"\n ],\n listMilestones: [\"GET /repos/{owner}/{repo}/milestones\"],\n lock: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n removeAllLabels: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels\"\n ],\n removeAssignees: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees\"\n ],\n removeLabel: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}\"\n ],\n setLabels: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n unlock: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n update: [\"PATCH /repos/{owner}/{repo}/issues/{issue_number}\"],\n updateComment: [\"PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n updateLabel: [\"PATCH /repos/{owner}/{repo}/labels/{name}\"],\n updateMilestone: [\n \"PATCH /repos/{owner}/{repo}/milestones/{milestone_number}\"\n ]\n },\n licenses: {\n get: [\"GET /licenses/{license}\"],\n getAllCommonlyUsed: [\"GET /licenses\"],\n getForRepo: [\"GET /repos/{owner}/{repo}/license\"]\n },\n markdown: {\n render: [\"POST /markdown\"],\n renderRaw: [\n \"POST /markdown/raw\",\n { headers: { \"content-type\": \"text/plain; charset=utf-8\" } }\n ]\n },\n meta: {\n get: [\"GET /meta\"],\n getAllVersions: [\"GET /versions\"],\n getOctocat: [\"GET /octocat\"],\n getZen: [\"GET /zen\"],\n root: [\"GET /\"]\n },\n migrations: {\n cancelImport: [\n \"DELETE /repos/{owner}/{repo}/import\",\n {},\n {\n deprecated: \"octokit.rest.migrations.cancelImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#cancel-an-import\"\n }\n ],\n deleteArchiveForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/archive\"\n ],\n deleteArchiveForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/archive\"\n ],\n downloadArchiveForOrg: [\n \"GET /orgs/{org}/migrations/{migration_id}/archive\"\n ],\n getArchiveForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}/archive\"\n ],\n getCommitAuthors: [\n \"GET /repos/{owner}/{repo}/import/authors\",\n {},\n {\n deprecated: \"octokit.rest.migrations.getCommitAuthors() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-commit-authors\"\n }\n ],\n getImportStatus: [\n \"GET /repos/{owner}/{repo}/import\",\n {},\n {\n deprecated: \"octokit.rest.migrations.getImportStatus() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-an-import-status\"\n }\n ],\n getLargeFiles: [\n \"GET /repos/{owner}/{repo}/import/large_files\",\n {},\n {\n deprecated: \"octokit.rest.migrations.getLargeFiles() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-large-files\"\n }\n ],\n getStatusForAuthenticatedUser: [\"GET /user/migrations/{migration_id}\"],\n getStatusForOrg: [\"GET /orgs/{org}/migrations/{migration_id}\"],\n listForAuthenticatedUser: [\"GET /user/migrations\"],\n listForOrg: [\"GET /orgs/{org}/migrations\"],\n listReposForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}/repositories\"\n ],\n listReposForOrg: [\"GET /orgs/{org}/migrations/{migration_id}/repositories\"],\n listReposForUser: [\n \"GET /user/migrations/{migration_id}/repositories\",\n {},\n { renamed: [\"migrations\", \"listReposForAuthenticatedUser\"] }\n ],\n mapCommitAuthor: [\n \"PATCH /repos/{owner}/{repo}/import/authors/{author_id}\",\n {},\n {\n deprecated: \"octokit.rest.migrations.mapCommitAuthor() is deprecated, see https://docs.github.com/rest/migrations/source-imports#map-a-commit-author\"\n }\n ],\n setLfsPreference: [\n \"PATCH /repos/{owner}/{repo}/import/lfs\",\n {},\n {\n deprecated: \"octokit.rest.migrations.setLfsPreference() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-git-lfs-preference\"\n }\n ],\n startForAuthenticatedUser: [\"POST /user/migrations\"],\n startForOrg: [\"POST /orgs/{org}/migrations\"],\n startImport: [\n \"PUT /repos/{owner}/{repo}/import\",\n {},\n {\n deprecated: \"octokit.rest.migrations.startImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#start-an-import\"\n }\n ],\n unlockRepoForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock\"\n ],\n unlockRepoForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock\"\n ],\n updateImport: [\n \"PATCH /repos/{owner}/{repo}/import\",\n {},\n {\n deprecated: \"octokit.rest.migrations.updateImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-an-import\"\n }\n ]\n },\n oidc: {\n getOidcCustomSubTemplateForOrg: [\n \"GET /orgs/{org}/actions/oidc/customization/sub\"\n ],\n updateOidcCustomSubTemplateForOrg: [\n \"PUT /orgs/{org}/actions/oidc/customization/sub\"\n ]\n },\n orgs: {\n addSecurityManagerTeam: [\n \"PUT /orgs/{org}/security-managers/teams/{team_slug}\"\n ],\n assignTeamToOrgRole: [\n \"PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}\"\n ],\n assignUserToOrgRole: [\n \"PUT /orgs/{org}/organization-roles/users/{username}/{role_id}\"\n ],\n blockUser: [\"PUT /orgs/{org}/blocks/{username}\"],\n cancelInvitation: [\"DELETE /orgs/{org}/invitations/{invitation_id}\"],\n checkBlockedUser: [\"GET /orgs/{org}/blocks/{username}\"],\n checkMembershipForUser: [\"GET /orgs/{org}/members/{username}\"],\n checkPublicMembershipForUser: [\"GET /orgs/{org}/public_members/{username}\"],\n convertMemberToOutsideCollaborator: [\n \"PUT /orgs/{org}/outside_collaborators/{username}\"\n ],\n createCustomOrganizationRole: [\"POST /orgs/{org}/organization-roles\"],\n createInvitation: [\"POST /orgs/{org}/invitations\"],\n createOrUpdateCustomProperties: [\"PATCH /orgs/{org}/properties/schema\"],\n createOrUpdateCustomPropertiesValuesForRepos: [\n \"PATCH /orgs/{org}/properties/values\"\n ],\n createOrUpdateCustomProperty: [\n \"PUT /orgs/{org}/properties/schema/{custom_property_name}\"\n ],\n createWebhook: [\"POST /orgs/{org}/hooks\"],\n delete: [\"DELETE /orgs/{org}\"],\n deleteCustomOrganizationRole: [\n \"DELETE /orgs/{org}/organization-roles/{role_id}\"\n ],\n deleteWebhook: [\"DELETE /orgs/{org}/hooks/{hook_id}\"],\n enableOrDisableSecurityProductOnAllOrgRepos: [\n \"POST /orgs/{org}/{security_product}/{enablement}\"\n ],\n get: [\"GET /orgs/{org}\"],\n getAllCustomProperties: [\"GET /orgs/{org}/properties/schema\"],\n getCustomProperty: [\n \"GET /orgs/{org}/properties/schema/{custom_property_name}\"\n ],\n getMembershipForAuthenticatedUser: [\"GET /user/memberships/orgs/{org}\"],\n getMembershipForUser: [\"GET /orgs/{org}/memberships/{username}\"],\n getOrgRole: [\"GET /orgs/{org}/organization-roles/{role_id}\"],\n getWebhook: [\"GET /orgs/{org}/hooks/{hook_id}\"],\n getWebhookConfigForOrg: [\"GET /orgs/{org}/hooks/{hook_id}/config\"],\n getWebhookDelivery: [\n \"GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}\"\n ],\n list: [\"GET /organizations\"],\n listAppInstallations: [\"GET /orgs/{org}/installations\"],\n listBlockedUsers: [\"GET /orgs/{org}/blocks\"],\n listCustomPropertiesValuesForRepos: [\"GET /orgs/{org}/properties/values\"],\n listFailedInvitations: [\"GET /orgs/{org}/failed_invitations\"],\n listForAuthenticatedUser: [\"GET /user/orgs\"],\n listForUser: [\"GET /users/{username}/orgs\"],\n listInvitationTeams: [\"GET /orgs/{org}/invitations/{invitation_id}/teams\"],\n listMembers: [\"GET /orgs/{org}/members\"],\n listMembershipsForAuthenticatedUser: [\"GET /user/memberships/orgs\"],\n listOrgRoleTeams: [\"GET /orgs/{org}/organization-roles/{role_id}/teams\"],\n listOrgRoleUsers: [\"GET /orgs/{org}/organization-roles/{role_id}/users\"],\n listOrgRoles: [\"GET /orgs/{org}/organization-roles\"],\n listOrganizationFineGrainedPermissions: [\n \"GET /orgs/{org}/organization-fine-grained-permissions\"\n ],\n listOutsideCollaborators: [\"GET /orgs/{org}/outside_collaborators\"],\n listPatGrantRepositories: [\n \"GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories\"\n ],\n listPatGrantRequestRepositories: [\n \"GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories\"\n ],\n listPatGrantRequests: [\"GET /orgs/{org}/personal-access-token-requests\"],\n listPatGrants: [\"GET /orgs/{org}/personal-access-tokens\"],\n listPendingInvitations: [\"GET /orgs/{org}/invitations\"],\n listPublicMembers: [\"GET /orgs/{org}/public_members\"],\n listSecurityManagerTeams: [\"GET /orgs/{org}/security-managers\"],\n listWebhookDeliveries: [\"GET /orgs/{org}/hooks/{hook_id}/deliveries\"],\n listWebhooks: [\"GET /orgs/{org}/hooks\"],\n patchCustomOrganizationRole: [\n \"PATCH /orgs/{org}/organization-roles/{role_id}\"\n ],\n pingWebhook: [\"POST /orgs/{org}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\n \"POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\"\n ],\n removeCustomProperty: [\n \"DELETE /orgs/{org}/properties/schema/{custom_property_name}\"\n ],\n removeMember: [\"DELETE /orgs/{org}/members/{username}\"],\n removeMembershipForUser: [\"DELETE /orgs/{org}/memberships/{username}\"],\n removeOutsideCollaborator: [\n \"DELETE /orgs/{org}/outside_collaborators/{username}\"\n ],\n removePublicMembershipForAuthenticatedUser: [\n \"DELETE /orgs/{org}/public_members/{username}\"\n ],\n removeSecurityManagerTeam: [\n \"DELETE /orgs/{org}/security-managers/teams/{team_slug}\"\n ],\n reviewPatGrantRequest: [\n \"POST /orgs/{org}/personal-access-token-requests/{pat_request_id}\"\n ],\n reviewPatGrantRequestsInBulk: [\n \"POST /orgs/{org}/personal-access-token-requests\"\n ],\n revokeAllOrgRolesTeam: [\n \"DELETE /orgs/{org}/organization-roles/teams/{team_slug}\"\n ],\n revokeAllOrgRolesUser: [\n \"DELETE /orgs/{org}/organization-roles/users/{username}\"\n ],\n revokeOrgRoleTeam: [\n \"DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}\"\n ],\n revokeOrgRoleUser: [\n \"DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}\"\n ],\n setMembershipForUser: [\"PUT /orgs/{org}/memberships/{username}\"],\n setPublicMembershipForAuthenticatedUser: [\n \"PUT /orgs/{org}/public_members/{username}\"\n ],\n unblockUser: [\"DELETE /orgs/{org}/blocks/{username}\"],\n update: [\"PATCH /orgs/{org}\"],\n updateMembershipForAuthenticatedUser: [\n \"PATCH /user/memberships/orgs/{org}\"\n ],\n updatePatAccess: [\"POST /orgs/{org}/personal-access-tokens/{pat_id}\"],\n updatePatAccesses: [\"POST /orgs/{org}/personal-access-tokens\"],\n updateWebhook: [\"PATCH /orgs/{org}/hooks/{hook_id}\"],\n updateWebhookConfigForOrg: [\"PATCH /orgs/{org}/hooks/{hook_id}/config\"]\n },\n packages: {\n deletePackageForAuthenticatedUser: [\n \"DELETE /user/packages/{package_type}/{package_name}\"\n ],\n deletePackageForOrg: [\n \"DELETE /orgs/{org}/packages/{package_type}/{package_name}\"\n ],\n deletePackageForUser: [\n \"DELETE /users/{username}/packages/{package_type}/{package_name}\"\n ],\n deletePackageVersionForAuthenticatedUser: [\n \"DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n deletePackageVersionForOrg: [\n \"DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n deletePackageVersionForUser: [\n \"DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n getAllPackageVersionsForAPackageOwnedByAnOrg: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n {},\n { renamed: [\"packages\", \"getAllPackageVersionsForPackageOwnedByOrg\"] }\n ],\n getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n {},\n {\n renamed: [\n \"packages\",\n \"getAllPackageVersionsForPackageOwnedByAuthenticatedUser\"\n ]\n }\n ],\n getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions\"\n ],\n getAllPackageVersionsForPackageOwnedByOrg: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\"\n ],\n getAllPackageVersionsForPackageOwnedByUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}/versions\"\n ],\n getPackageForAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}\"\n ],\n getPackageForOrganization: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}\"\n ],\n getPackageForUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}\"\n ],\n getPackageVersionForAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n getPackageVersionForOrganization: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n getPackageVersionForUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n listDockerMigrationConflictingPackagesForAuthenticatedUser: [\n \"GET /user/docker/conflicts\"\n ],\n listDockerMigrationConflictingPackagesForOrganization: [\n \"GET /orgs/{org}/docker/conflicts\"\n ],\n listDockerMigrationConflictingPackagesForUser: [\n \"GET /users/{username}/docker/conflicts\"\n ],\n listPackagesForAuthenticatedUser: [\"GET /user/packages\"],\n listPackagesForOrganization: [\"GET /orgs/{org}/packages\"],\n listPackagesForUser: [\"GET /users/{username}/packages\"],\n restorePackageForAuthenticatedUser: [\n \"POST /user/packages/{package_type}/{package_name}/restore{?token}\"\n ],\n restorePackageForOrg: [\n \"POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}\"\n ],\n restorePackageForUser: [\n \"POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}\"\n ],\n restorePackageVersionForAuthenticatedUser: [\n \"POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"\n ],\n restorePackageVersionForOrg: [\n \"POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"\n ],\n restorePackageVersionForUser: [\n \"POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"\n ]\n },\n projects: {\n addCollaborator: [\"PUT /projects/{project_id}/collaborators/{username}\"],\n createCard: [\"POST /projects/columns/{column_id}/cards\"],\n createColumn: [\"POST /projects/{project_id}/columns\"],\n createForAuthenticatedUser: [\"POST /user/projects\"],\n createForOrg: [\"POST /orgs/{org}/projects\"],\n createForRepo: [\"POST /repos/{owner}/{repo}/projects\"],\n delete: [\"DELETE /projects/{project_id}\"],\n deleteCard: [\"DELETE /projects/columns/cards/{card_id}\"],\n deleteColumn: [\"DELETE /projects/columns/{column_id}\"],\n get: [\"GET /projects/{project_id}\"],\n getCard: [\"GET /projects/columns/cards/{card_id}\"],\n getColumn: [\"GET /projects/columns/{column_id}\"],\n getPermissionForUser: [\n \"GET /projects/{project_id}/collaborators/{username}/permission\"\n ],\n listCards: [\"GET /projects/columns/{column_id}/cards\"],\n listCollaborators: [\"GET /projects/{project_id}/collaborators\"],\n listColumns: [\"GET /projects/{project_id}/columns\"],\n listForOrg: [\"GET /orgs/{org}/projects\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/projects\"],\n listForUser: [\"GET /users/{username}/projects\"],\n moveCard: [\"POST /projects/columns/cards/{card_id}/moves\"],\n moveColumn: [\"POST /projects/columns/{column_id}/moves\"],\n removeCollaborator: [\n \"DELETE /projects/{project_id}/collaborators/{username}\"\n ],\n update: [\"PATCH /projects/{project_id}\"],\n updateCard: [\"PATCH /projects/columns/cards/{card_id}\"],\n updateColumn: [\"PATCH /projects/columns/{column_id}\"]\n },\n pulls: {\n checkIfMerged: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n create: [\"POST /repos/{owner}/{repo}/pulls\"],\n createReplyForReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies\"\n ],\n createReview: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n createReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments\"\n ],\n deletePendingReview: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"\n ],\n deleteReviewComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}\"\n ],\n dismissReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals\"\n ],\n get: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}\"],\n getReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"\n ],\n getReviewComment: [\"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}\"],\n list: [\"GET /repos/{owner}/{repo}/pulls\"],\n listCommentsForReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\"\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\"],\n listFiles: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\"],\n listRequestedReviewers: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"\n ],\n listReviewComments: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\"\n ],\n listReviewCommentsForRepo: [\"GET /repos/{owner}/{repo}/pulls/comments\"],\n listReviews: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n merge: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n removeRequestedReviewers: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"\n ],\n requestReviewers: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"\n ],\n submitReview: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events\"\n ],\n update: [\"PATCH /repos/{owner}/{repo}/pulls/{pull_number}\"],\n updateBranch: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch\"\n ],\n updateReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"\n ],\n updateReviewComment: [\n \"PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}\"\n ]\n },\n rateLimit: { get: [\"GET /rate_limit\"] },\n reactions: {\n createForCommitComment: [\n \"POST /repos/{owner}/{repo}/comments/{comment_id}/reactions\"\n ],\n createForIssue: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/reactions\"\n ],\n createForIssueComment: [\n \"POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\"\n ],\n createForPullRequestReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\"\n ],\n createForRelease: [\n \"POST /repos/{owner}/{repo}/releases/{release_id}/reactions\"\n ],\n createForTeamDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\"\n ],\n createForTeamDiscussionInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\"\n ],\n deleteForCommitComment: [\n \"DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}\"\n ],\n deleteForIssue: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}\"\n ],\n deleteForIssueComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}\"\n ],\n deleteForPullRequestComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}\"\n ],\n deleteForRelease: [\n \"DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}\"\n ],\n deleteForTeamDiscussion: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}\"\n ],\n deleteForTeamDiscussionComment: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}\"\n ],\n listForCommitComment: [\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\"\n ],\n listForIssue: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\"],\n listForIssueComment: [\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\"\n ],\n listForPullRequestReviewComment: [\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\"\n ],\n listForRelease: [\n \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\"\n ],\n listForTeamDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\"\n ],\n listForTeamDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\"\n ]\n },\n repos: {\n acceptInvitation: [\n \"PATCH /user/repository_invitations/{invitation_id}\",\n {},\n { renamed: [\"repos\", \"acceptInvitationForAuthenticatedUser\"] }\n ],\n acceptInvitationForAuthenticatedUser: [\n \"PATCH /user/repository_invitations/{invitation_id}\"\n ],\n addAppAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" }\n ],\n addCollaborator: [\"PUT /repos/{owner}/{repo}/collaborators/{username}\"],\n addStatusCheckContexts: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" }\n ],\n addTeamAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" }\n ],\n addUserAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" }\n ],\n cancelPagesDeployment: [\n \"POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel\"\n ],\n checkAutomatedSecurityFixes: [\n \"GET /repos/{owner}/{repo}/automated-security-fixes\"\n ],\n checkCollaborator: [\"GET /repos/{owner}/{repo}/collaborators/{username}\"],\n checkVulnerabilityAlerts: [\n \"GET /repos/{owner}/{repo}/vulnerability-alerts\"\n ],\n codeownersErrors: [\"GET /repos/{owner}/{repo}/codeowners/errors\"],\n compareCommits: [\"GET /repos/{owner}/{repo}/compare/{base}...{head}\"],\n compareCommitsWithBasehead: [\n \"GET /repos/{owner}/{repo}/compare/{basehead}\"\n ],\n createAutolink: [\"POST /repos/{owner}/{repo}/autolinks\"],\n createCommitComment: [\n \"POST /repos/{owner}/{repo}/commits/{commit_sha}/comments\"\n ],\n createCommitSignatureProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"\n ],\n createCommitStatus: [\"POST /repos/{owner}/{repo}/statuses/{sha}\"],\n createDeployKey: [\"POST /repos/{owner}/{repo}/keys\"],\n createDeployment: [\"POST /repos/{owner}/{repo}/deployments\"],\n createDeploymentBranchPolicy: [\n \"POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\"\n ],\n createDeploymentProtectionRule: [\n \"POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules\"\n ],\n createDeploymentStatus: [\n \"POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\"\n ],\n createDispatchEvent: [\"POST /repos/{owner}/{repo}/dispatches\"],\n createForAuthenticatedUser: [\"POST /user/repos\"],\n createFork: [\"POST /repos/{owner}/{repo}/forks\"],\n createInOrg: [\"POST /orgs/{org}/repos\"],\n createOrUpdateCustomPropertiesValues: [\n \"PATCH /repos/{owner}/{repo}/properties/values\"\n ],\n createOrUpdateEnvironment: [\n \"PUT /repos/{owner}/{repo}/environments/{environment_name}\"\n ],\n createOrUpdateFileContents: [\"PUT /repos/{owner}/{repo}/contents/{path}\"],\n createOrgRuleset: [\"POST /orgs/{org}/rulesets\"],\n createPagesDeployment: [\"POST /repos/{owner}/{repo}/pages/deployments\"],\n createPagesSite: [\"POST /repos/{owner}/{repo}/pages\"],\n createRelease: [\"POST /repos/{owner}/{repo}/releases\"],\n createRepoRuleset: [\"POST /repos/{owner}/{repo}/rulesets\"],\n createTagProtection: [\"POST /repos/{owner}/{repo}/tags/protection\"],\n createUsingTemplate: [\n \"POST /repos/{template_owner}/{template_repo}/generate\"\n ],\n createWebhook: [\"POST /repos/{owner}/{repo}/hooks\"],\n declineInvitation: [\n \"DELETE /user/repository_invitations/{invitation_id}\",\n {},\n { renamed: [\"repos\", \"declineInvitationForAuthenticatedUser\"] }\n ],\n declineInvitationForAuthenticatedUser: [\n \"DELETE /user/repository_invitations/{invitation_id}\"\n ],\n delete: [\"DELETE /repos/{owner}/{repo}\"],\n deleteAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\"\n ],\n deleteAdminBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"\n ],\n deleteAnEnvironment: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}\"\n ],\n deleteAutolink: [\"DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n deleteBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection\"\n ],\n deleteCommitComment: [\"DELETE /repos/{owner}/{repo}/comments/{comment_id}\"],\n deleteCommitSignatureProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"\n ],\n deleteDeployKey: [\"DELETE /repos/{owner}/{repo}/keys/{key_id}\"],\n deleteDeployment: [\n \"DELETE /repos/{owner}/{repo}/deployments/{deployment_id}\"\n ],\n deleteDeploymentBranchPolicy: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\"\n ],\n deleteFile: [\"DELETE /repos/{owner}/{repo}/contents/{path}\"],\n deleteInvitation: [\n \"DELETE /repos/{owner}/{repo}/invitations/{invitation_id}\"\n ],\n deleteOrgRuleset: [\"DELETE /orgs/{org}/rulesets/{ruleset_id}\"],\n deletePagesSite: [\"DELETE /repos/{owner}/{repo}/pages\"],\n deletePullRequestReviewProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"\n ],\n deleteRelease: [\"DELETE /repos/{owner}/{repo}/releases/{release_id}\"],\n deleteReleaseAsset: [\n \"DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}\"\n ],\n deleteRepoRuleset: [\"DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n deleteTagProtection: [\n \"DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}\"\n ],\n deleteWebhook: [\"DELETE /repos/{owner}/{repo}/hooks/{hook_id}\"],\n disableAutomatedSecurityFixes: [\n \"DELETE /repos/{owner}/{repo}/automated-security-fixes\"\n ],\n disableDeploymentProtectionRule: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}\"\n ],\n disablePrivateVulnerabilityReporting: [\n \"DELETE /repos/{owner}/{repo}/private-vulnerability-reporting\"\n ],\n disableVulnerabilityAlerts: [\n \"DELETE /repos/{owner}/{repo}/vulnerability-alerts\"\n ],\n downloadArchive: [\n \"GET /repos/{owner}/{repo}/zipball/{ref}\",\n {},\n { renamed: [\"repos\", \"downloadZipballArchive\"] }\n ],\n downloadTarballArchive: [\"GET /repos/{owner}/{repo}/tarball/{ref}\"],\n downloadZipballArchive: [\"GET /repos/{owner}/{repo}/zipball/{ref}\"],\n enableAutomatedSecurityFixes: [\n \"PUT /repos/{owner}/{repo}/automated-security-fixes\"\n ],\n enablePrivateVulnerabilityReporting: [\n \"PUT /repos/{owner}/{repo}/private-vulnerability-reporting\"\n ],\n enableVulnerabilityAlerts: [\n \"PUT /repos/{owner}/{repo}/vulnerability-alerts\"\n ],\n generateReleaseNotes: [\n \"POST /repos/{owner}/{repo}/releases/generate-notes\"\n ],\n get: [\"GET /repos/{owner}/{repo}\"],\n getAccessRestrictions: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\"\n ],\n getAdminBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"\n ],\n getAllDeploymentProtectionRules: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules\"\n ],\n getAllEnvironments: [\"GET /repos/{owner}/{repo}/environments\"],\n getAllStatusCheckContexts: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\"\n ],\n getAllTopics: [\"GET /repos/{owner}/{repo}/topics\"],\n getAppsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\"\n ],\n getAutolink: [\"GET /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n getBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}\"],\n getBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection\"\n ],\n getBranchRules: [\"GET /repos/{owner}/{repo}/rules/branches/{branch}\"],\n getClones: [\"GET /repos/{owner}/{repo}/traffic/clones\"],\n getCodeFrequencyStats: [\"GET /repos/{owner}/{repo}/stats/code_frequency\"],\n getCollaboratorPermissionLevel: [\n \"GET /repos/{owner}/{repo}/collaborators/{username}/permission\"\n ],\n getCombinedStatusForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/status\"],\n getCommit: [\"GET /repos/{owner}/{repo}/commits/{ref}\"],\n getCommitActivityStats: [\"GET /repos/{owner}/{repo}/stats/commit_activity\"],\n getCommitComment: [\"GET /repos/{owner}/{repo}/comments/{comment_id}\"],\n getCommitSignatureProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"\n ],\n getCommunityProfileMetrics: [\"GET /repos/{owner}/{repo}/community/profile\"],\n getContent: [\"GET /repos/{owner}/{repo}/contents/{path}\"],\n getContributorsStats: [\"GET /repos/{owner}/{repo}/stats/contributors\"],\n getCustomDeploymentProtectionRule: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}\"\n ],\n getCustomPropertiesValues: [\"GET /repos/{owner}/{repo}/properties/values\"],\n getDeployKey: [\"GET /repos/{owner}/{repo}/keys/{key_id}\"],\n getDeployment: [\"GET /repos/{owner}/{repo}/deployments/{deployment_id}\"],\n getDeploymentBranchPolicy: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\"\n ],\n getDeploymentStatus: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}\"\n ],\n getEnvironment: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}\"\n ],\n getLatestPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/latest\"],\n getLatestRelease: [\"GET /repos/{owner}/{repo}/releases/latest\"],\n getOrgRuleSuite: [\"GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}\"],\n getOrgRuleSuites: [\"GET /orgs/{org}/rulesets/rule-suites\"],\n getOrgRuleset: [\"GET /orgs/{org}/rulesets/{ruleset_id}\"],\n getOrgRulesets: [\"GET /orgs/{org}/rulesets\"],\n getPages: [\"GET /repos/{owner}/{repo}/pages\"],\n getPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/{build_id}\"],\n getPagesDeployment: [\n \"GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}\"\n ],\n getPagesHealthCheck: [\"GET /repos/{owner}/{repo}/pages/health\"],\n getParticipationStats: [\"GET /repos/{owner}/{repo}/stats/participation\"],\n getPullRequestReviewProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"\n ],\n getPunchCardStats: [\"GET /repos/{owner}/{repo}/stats/punch_card\"],\n getReadme: [\"GET /repos/{owner}/{repo}/readme\"],\n getReadmeInDirectory: [\"GET /repos/{owner}/{repo}/readme/{dir}\"],\n getRelease: [\"GET /repos/{owner}/{repo}/releases/{release_id}\"],\n getReleaseAsset: [\"GET /repos/{owner}/{repo}/releases/assets/{asset_id}\"],\n getReleaseByTag: [\"GET /repos/{owner}/{repo}/releases/tags/{tag}\"],\n getRepoRuleSuite: [\n \"GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}\"\n ],\n getRepoRuleSuites: [\"GET /repos/{owner}/{repo}/rulesets/rule-suites\"],\n getRepoRuleset: [\"GET /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n getRepoRulesets: [\"GET /repos/{owner}/{repo}/rulesets\"],\n getStatusChecksProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"\n ],\n getTeamsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\"\n ],\n getTopPaths: [\"GET /repos/{owner}/{repo}/traffic/popular/paths\"],\n getTopReferrers: [\"GET /repos/{owner}/{repo}/traffic/popular/referrers\"],\n getUsersWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\"\n ],\n getViews: [\"GET /repos/{owner}/{repo}/traffic/views\"],\n getWebhook: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}\"],\n getWebhookConfigForRepo: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/config\"\n ],\n getWebhookDelivery: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}\"\n ],\n listActivities: [\"GET /repos/{owner}/{repo}/activity\"],\n listAutolinks: [\"GET /repos/{owner}/{repo}/autolinks\"],\n listBranches: [\"GET /repos/{owner}/{repo}/branches\"],\n listBranchesForHeadCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head\"\n ],\n listCollaborators: [\"GET /repos/{owner}/{repo}/collaborators\"],\n listCommentsForCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\"\n ],\n listCommitCommentsForRepo: [\"GET /repos/{owner}/{repo}/comments\"],\n listCommitStatusesForRef: [\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\"\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/commits\"],\n listContributors: [\"GET /repos/{owner}/{repo}/contributors\"],\n listCustomDeploymentRuleIntegrations: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps\"\n ],\n listDeployKeys: [\"GET /repos/{owner}/{repo}/keys\"],\n listDeploymentBranchPolicies: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\"\n ],\n listDeploymentStatuses: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\"\n ],\n listDeployments: [\"GET /repos/{owner}/{repo}/deployments\"],\n listForAuthenticatedUser: [\"GET /user/repos\"],\n listForOrg: [\"GET /orgs/{org}/repos\"],\n listForUser: [\"GET /users/{username}/repos\"],\n listForks: [\"GET /repos/{owner}/{repo}/forks\"],\n listInvitations: [\"GET /repos/{owner}/{repo}/invitations\"],\n listInvitationsForAuthenticatedUser: [\"GET /user/repository_invitations\"],\n listLanguages: [\"GET /repos/{owner}/{repo}/languages\"],\n listPagesBuilds: [\"GET /repos/{owner}/{repo}/pages/builds\"],\n listPublic: [\"GET /repositories\"],\n listPullRequestsAssociatedWithCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\"\n ],\n listReleaseAssets: [\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\"\n ],\n listReleases: [\"GET /repos/{owner}/{repo}/releases\"],\n listTagProtection: [\"GET /repos/{owner}/{repo}/tags/protection\"],\n listTags: [\"GET /repos/{owner}/{repo}/tags\"],\n listTeams: [\"GET /repos/{owner}/{repo}/teams\"],\n listWebhookDeliveries: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\"\n ],\n listWebhooks: [\"GET /repos/{owner}/{repo}/hooks\"],\n merge: [\"POST /repos/{owner}/{repo}/merges\"],\n mergeUpstream: [\"POST /repos/{owner}/{repo}/merge-upstream\"],\n pingWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\n \"POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\"\n ],\n removeAppAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" }\n ],\n removeCollaborator: [\n \"DELETE /repos/{owner}/{repo}/collaborators/{username}\"\n ],\n removeStatusCheckContexts: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" }\n ],\n removeStatusCheckProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"\n ],\n removeTeamAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" }\n ],\n removeUserAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" }\n ],\n renameBranch: [\"POST /repos/{owner}/{repo}/branches/{branch}/rename\"],\n replaceAllTopics: [\"PUT /repos/{owner}/{repo}/topics\"],\n requestPagesBuild: [\"POST /repos/{owner}/{repo}/pages/builds\"],\n setAdminBranchProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"\n ],\n setAppAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" }\n ],\n setStatusCheckContexts: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" }\n ],\n setTeamAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" }\n ],\n setUserAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" }\n ],\n testPushWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/tests\"],\n transfer: [\"POST /repos/{owner}/{repo}/transfer\"],\n update: [\"PATCH /repos/{owner}/{repo}\"],\n updateBranchProtection: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection\"\n ],\n updateCommitComment: [\"PATCH /repos/{owner}/{repo}/comments/{comment_id}\"],\n updateDeploymentBranchPolicy: [\n \"PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\"\n ],\n updateInformationAboutPagesSite: [\"PUT /repos/{owner}/{repo}/pages\"],\n updateInvitation: [\n \"PATCH /repos/{owner}/{repo}/invitations/{invitation_id}\"\n ],\n updateOrgRuleset: [\"PUT /orgs/{org}/rulesets/{ruleset_id}\"],\n updatePullRequestReviewProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"\n ],\n updateRelease: [\"PATCH /repos/{owner}/{repo}/releases/{release_id}\"],\n updateReleaseAsset: [\n \"PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}\"\n ],\n updateRepoRuleset: [\"PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n updateStatusCheckPotection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n {},\n { renamed: [\"repos\", \"updateStatusCheckProtection\"] }\n ],\n updateStatusCheckProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"\n ],\n updateWebhook: [\"PATCH /repos/{owner}/{repo}/hooks/{hook_id}\"],\n updateWebhookConfigForRepo: [\n \"PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config\"\n ],\n uploadReleaseAsset: [\n \"POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}\",\n { baseUrl: \"https://uploads.github.com\" }\n ]\n },\n search: {\n code: [\"GET /search/code\"],\n commits: [\"GET /search/commits\"],\n issuesAndPullRequests: [\"GET /search/issues\"],\n labels: [\"GET /search/labels\"],\n repos: [\"GET /search/repositories\"],\n topics: [\"GET /search/topics\"],\n users: [\"GET /search/users\"]\n },\n secretScanning: {\n getAlert: [\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\"\n ],\n listAlertsForEnterprise: [\n \"GET /enterprises/{enterprise}/secret-scanning/alerts\"\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/secret-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/secret-scanning/alerts\"],\n listLocationsForAlert: [\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\"\n ],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\"\n ]\n },\n securityAdvisories: {\n createFork: [\n \"POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks\"\n ],\n createPrivateVulnerabilityReport: [\n \"POST /repos/{owner}/{repo}/security-advisories/reports\"\n ],\n createRepositoryAdvisory: [\n \"POST /repos/{owner}/{repo}/security-advisories\"\n ],\n createRepositoryAdvisoryCveRequest: [\n \"POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve\"\n ],\n getGlobalAdvisory: [\"GET /advisories/{ghsa_id}\"],\n getRepositoryAdvisory: [\n \"GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}\"\n ],\n listGlobalAdvisories: [\"GET /advisories\"],\n listOrgRepositoryAdvisories: [\"GET /orgs/{org}/security-advisories\"],\n listRepositoryAdvisories: [\"GET /repos/{owner}/{repo}/security-advisories\"],\n updateRepositoryAdvisory: [\n \"PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}\"\n ]\n },\n teams: {\n addOrUpdateMembershipForUserInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/memberships/{username}\"\n ],\n addOrUpdateProjectPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}\"\n ],\n addOrUpdateRepoPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"\n ],\n checkPermissionsForProjectInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/projects/{project_id}\"\n ],\n checkPermissionsForRepoInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"\n ],\n create: [\"POST /orgs/{org}/teams\"],\n createDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\"\n ],\n createDiscussionInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions\"],\n deleteDiscussionCommentInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"\n ],\n deleteDiscussionInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"\n ],\n deleteInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}\"],\n getByName: [\"GET /orgs/{org}/teams/{team_slug}\"],\n getDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"\n ],\n getDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"\n ],\n getMembershipForUserInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/memberships/{username}\"\n ],\n list: [\"GET /orgs/{org}/teams\"],\n listChildInOrg: [\"GET /orgs/{org}/teams/{team_slug}/teams\"],\n listDiscussionCommentsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\"\n ],\n listDiscussionsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions\"],\n listForAuthenticatedUser: [\"GET /user/teams\"],\n listMembersInOrg: [\"GET /orgs/{org}/teams/{team_slug}/members\"],\n listPendingInvitationsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/invitations\"\n ],\n listProjectsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/projects\"],\n listReposInOrg: [\"GET /orgs/{org}/teams/{team_slug}/repos\"],\n removeMembershipForUserInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}\"\n ],\n removeProjectInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}\"\n ],\n removeRepoInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"\n ],\n updateDiscussionCommentInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"\n ],\n updateDiscussionInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"\n ],\n updateInOrg: [\"PATCH /orgs/{org}/teams/{team_slug}\"]\n },\n users: {\n addEmailForAuthenticated: [\n \"POST /user/emails\",\n {},\n { renamed: [\"users\", \"addEmailForAuthenticatedUser\"] }\n ],\n addEmailForAuthenticatedUser: [\"POST /user/emails\"],\n addSocialAccountForAuthenticatedUser: [\"POST /user/social_accounts\"],\n block: [\"PUT /user/blocks/{username}\"],\n checkBlocked: [\"GET /user/blocks/{username}\"],\n checkFollowingForUser: [\"GET /users/{username}/following/{target_user}\"],\n checkPersonIsFollowedByAuthenticated: [\"GET /user/following/{username}\"],\n createGpgKeyForAuthenticated: [\n \"POST /user/gpg_keys\",\n {},\n { renamed: [\"users\", \"createGpgKeyForAuthenticatedUser\"] }\n ],\n createGpgKeyForAuthenticatedUser: [\"POST /user/gpg_keys\"],\n createPublicSshKeyForAuthenticated: [\n \"POST /user/keys\",\n {},\n { renamed: [\"users\", \"createPublicSshKeyForAuthenticatedUser\"] }\n ],\n createPublicSshKeyForAuthenticatedUser: [\"POST /user/keys\"],\n createSshSigningKeyForAuthenticatedUser: [\"POST /user/ssh_signing_keys\"],\n deleteEmailForAuthenticated: [\n \"DELETE /user/emails\",\n {},\n { renamed: [\"users\", \"deleteEmailForAuthenticatedUser\"] }\n ],\n deleteEmailForAuthenticatedUser: [\"DELETE /user/emails\"],\n deleteGpgKeyForAuthenticated: [\n \"DELETE /user/gpg_keys/{gpg_key_id}\",\n {},\n { renamed: [\"users\", \"deleteGpgKeyForAuthenticatedUser\"] }\n ],\n deleteGpgKeyForAuthenticatedUser: [\"DELETE /user/gpg_keys/{gpg_key_id}\"],\n deletePublicSshKeyForAuthenticated: [\n \"DELETE /user/keys/{key_id}\",\n {},\n { renamed: [\"users\", \"deletePublicSshKeyForAuthenticatedUser\"] }\n ],\n deletePublicSshKeyForAuthenticatedUser: [\"DELETE /user/keys/{key_id}\"],\n deleteSocialAccountForAuthenticatedUser: [\"DELETE /user/social_accounts\"],\n deleteSshSigningKeyForAuthenticatedUser: [\n \"DELETE /user/ssh_signing_keys/{ssh_signing_key_id}\"\n ],\n follow: [\"PUT /user/following/{username}\"],\n getAuthenticated: [\"GET /user\"],\n getByUsername: [\"GET /users/{username}\"],\n getContextForUser: [\"GET /users/{username}/hovercard\"],\n getGpgKeyForAuthenticated: [\n \"GET /user/gpg_keys/{gpg_key_id}\",\n {},\n { renamed: [\"users\", \"getGpgKeyForAuthenticatedUser\"] }\n ],\n getGpgKeyForAuthenticatedUser: [\"GET /user/gpg_keys/{gpg_key_id}\"],\n getPublicSshKeyForAuthenticated: [\n \"GET /user/keys/{key_id}\",\n {},\n { renamed: [\"users\", \"getPublicSshKeyForAuthenticatedUser\"] }\n ],\n getPublicSshKeyForAuthenticatedUser: [\"GET /user/keys/{key_id}\"],\n getSshSigningKeyForAuthenticatedUser: [\n \"GET /user/ssh_signing_keys/{ssh_signing_key_id}\"\n ],\n list: [\"GET /users\"],\n listBlockedByAuthenticated: [\n \"GET /user/blocks\",\n {},\n { renamed: [\"users\", \"listBlockedByAuthenticatedUser\"] }\n ],\n listBlockedByAuthenticatedUser: [\"GET /user/blocks\"],\n listEmailsForAuthenticated: [\n \"GET /user/emails\",\n {},\n { renamed: [\"users\", \"listEmailsForAuthenticatedUser\"] }\n ],\n listEmailsForAuthenticatedUser: [\"GET /user/emails\"],\n listFollowedByAuthenticated: [\n \"GET /user/following\",\n {},\n { renamed: [\"users\", \"listFollowedByAuthenticatedUser\"] }\n ],\n listFollowedByAuthenticatedUser: [\"GET /user/following\"],\n listFollowersForAuthenticatedUser: [\"GET /user/followers\"],\n listFollowersForUser: [\"GET /users/{username}/followers\"],\n listFollowingForUser: [\"GET /users/{username}/following\"],\n listGpgKeysForAuthenticated: [\n \"GET /user/gpg_keys\",\n {},\n { renamed: [\"users\", \"listGpgKeysForAuthenticatedUser\"] }\n ],\n listGpgKeysForAuthenticatedUser: [\"GET /user/gpg_keys\"],\n listGpgKeysForUser: [\"GET /users/{username}/gpg_keys\"],\n listPublicEmailsForAuthenticated: [\n \"GET /user/public_emails\",\n {},\n { renamed: [\"users\", \"listPublicEmailsForAuthenticatedUser\"] }\n ],\n listPublicEmailsForAuthenticatedUser: [\"GET /user/public_emails\"],\n listPublicKeysForUser: [\"GET /users/{username}/keys\"],\n listPublicSshKeysForAuthenticated: [\n \"GET /user/keys\",\n {},\n { renamed: [\"users\", \"listPublicSshKeysForAuthenticatedUser\"] }\n ],\n listPublicSshKeysForAuthenticatedUser: [\"GET /user/keys\"],\n listSocialAccountsForAuthenticatedUser: [\"GET /user/social_accounts\"],\n listSocialAccountsForUser: [\"GET /users/{username}/social_accounts\"],\n listSshSigningKeysForAuthenticatedUser: [\"GET /user/ssh_signing_keys\"],\n listSshSigningKeysForUser: [\"GET /users/{username}/ssh_signing_keys\"],\n setPrimaryEmailVisibilityForAuthenticated: [\n \"PATCH /user/email/visibility\",\n {},\n { renamed: [\"users\", \"setPrimaryEmailVisibilityForAuthenticatedUser\"] }\n ],\n setPrimaryEmailVisibilityForAuthenticatedUser: [\n \"PATCH /user/email/visibility\"\n ],\n unblock: [\"DELETE /user/blocks/{username}\"],\n unfollow: [\"DELETE /user/following/{username}\"],\n updateAuthenticated: [\"PATCH /user\"]\n }\n};\nvar endpoints_default = Endpoints;\n\n// pkg/dist-src/endpoints-to-methods.js\nvar endpointMethodsMap = /* @__PURE__ */ new Map();\nfor (const [scope, endpoints] of Object.entries(endpoints_default)) {\n for (const [methodName, endpoint] of Object.entries(endpoints)) {\n const [route, defaults, decorations] = endpoint;\n const [method, url] = route.split(/ /);\n const endpointDefaults = Object.assign(\n {\n method,\n url\n },\n defaults\n );\n if (!endpointMethodsMap.has(scope)) {\n endpointMethodsMap.set(scope, /* @__PURE__ */ new Map());\n }\n endpointMethodsMap.get(scope).set(methodName, {\n scope,\n methodName,\n endpointDefaults,\n decorations\n });\n }\n}\nvar handler = {\n has({ scope }, methodName) {\n return endpointMethodsMap.get(scope).has(methodName);\n },\n getOwnPropertyDescriptor(target, methodName) {\n return {\n value: this.get(target, methodName),\n // ensures method is in the cache\n configurable: true,\n writable: true,\n enumerable: true\n };\n },\n defineProperty(target, methodName, descriptor) {\n Object.defineProperty(target.cache, methodName, descriptor);\n return true;\n },\n deleteProperty(target, methodName) {\n delete target.cache[methodName];\n return true;\n },\n ownKeys({ scope }) {\n return [...endpointMethodsMap.get(scope).keys()];\n },\n set(target, methodName, value) {\n return target.cache[methodName] = value;\n },\n get({ octokit, scope, cache }, methodName) {\n if (cache[methodName]) {\n return cache[methodName];\n }\n const method = endpointMethodsMap.get(scope).get(methodName);\n if (!method) {\n return void 0;\n }\n const { endpointDefaults, decorations } = method;\n if (decorations) {\n cache[methodName] = decorate(\n octokit,\n scope,\n methodName,\n endpointDefaults,\n decorations\n );\n } else {\n cache[methodName] = octokit.request.defaults(endpointDefaults);\n }\n return cache[methodName];\n }\n};\nfunction endpointsToMethods(octokit) {\n const newMethods = {};\n for (const scope of endpointMethodsMap.keys()) {\n newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler);\n }\n return newMethods;\n}\nfunction decorate(octokit, scope, methodName, defaults, decorations) {\n const requestWithDefaults = octokit.request.defaults(defaults);\n function withDecorations(...args) {\n let options = requestWithDefaults.endpoint.merge(...args);\n if (decorations.mapToData) {\n options = Object.assign({}, options, {\n data: options[decorations.mapToData],\n [decorations.mapToData]: void 0\n });\n return requestWithDefaults(options);\n }\n if (decorations.renamed) {\n const [newScope, newMethodName] = decorations.renamed;\n octokit.log.warn(\n `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`\n );\n }\n if (decorations.deprecated) {\n octokit.log.warn(decorations.deprecated);\n }\n if (decorations.renamedParameters) {\n const options2 = requestWithDefaults.endpoint.merge(...args);\n for (const [name, alias] of Object.entries(\n decorations.renamedParameters\n )) {\n if (name in options2) {\n octokit.log.warn(\n `\"${name}\" parameter is deprecated for \"octokit.${scope}.${methodName}()\". Use \"${alias}\" instead`\n );\n if (!(alias in options2)) {\n options2[alias] = options2[name];\n }\n delete options2[name];\n }\n }\n return requestWithDefaults(options2);\n }\n return requestWithDefaults(...args);\n }\n return Object.assign(withDecorations, requestWithDefaults);\n}\n\n// pkg/dist-src/index.js\nfunction restEndpointMethods(octokit) {\n const api = endpointsToMethods(octokit);\n return {\n rest: api\n };\n}\nrestEndpointMethods.VERSION = VERSION;\nfunction legacyRestEndpointMethods(octokit) {\n const api = endpointsToMethods(octokit);\n return {\n ...api,\n rest: api\n };\n}\nlegacyRestEndpointMethods.VERSION = VERSION;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n legacyRestEndpointMethods,\n restEndpointMethods\n});\n","\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n RequestError: () => RequestError\n});\nmodule.exports = __toCommonJS(dist_src_exports);\nvar import_deprecation = require(\"deprecation\");\nvar import_once = __toESM(require(\"once\"));\nvar logOnceCode = (0, import_once.default)((deprecation) => console.warn(deprecation));\nvar logOnceHeaders = (0, import_once.default)((deprecation) => console.warn(deprecation));\nvar RequestError = class extends Error {\n constructor(message, statusCode, options) {\n super(message);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n this.name = \"HttpError\";\n this.status = statusCode;\n let headers;\n if (\"headers\" in options && typeof options.headers !== \"undefined\") {\n headers = options.headers;\n }\n if (\"response\" in options) {\n this.response = options.response;\n headers = options.response.headers;\n }\n const requestCopy = Object.assign({}, options.request);\n if (options.request.headers.authorization) {\n requestCopy.headers = Object.assign({}, options.request.headers, {\n authorization: options.request.headers.authorization.replace(\n / .*$/,\n \" [REDACTED]\"\n )\n });\n }\n requestCopy.url = requestCopy.url.replace(/\\bclient_secret=\\w+/g, \"client_secret=[REDACTED]\").replace(/\\baccess_token=\\w+/g, \"access_token=[REDACTED]\");\n this.request = requestCopy;\n Object.defineProperty(this, \"code\", {\n get() {\n logOnceCode(\n new import_deprecation.Deprecation(\n \"[@octokit/request-error] `error.code` is deprecated, use `error.status`.\"\n )\n );\n return statusCode;\n }\n });\n Object.defineProperty(this, \"headers\", {\n get() {\n logOnceHeaders(\n new import_deprecation.Deprecation(\n \"[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.\"\n )\n );\n return headers || {};\n }\n });\n }\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n RequestError\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n request: () => request\n});\nmodule.exports = __toCommonJS(dist_src_exports);\nvar import_endpoint = require(\"@octokit/endpoint\");\nvar import_universal_user_agent = require(\"universal-user-agent\");\n\n// pkg/dist-src/version.js\nvar VERSION = \"8.4.0\";\n\n// pkg/dist-src/is-plain-object.js\nfunction isPlainObject(value) {\n if (typeof value !== \"object\" || value === null)\n return false;\n if (Object.prototype.toString.call(value) !== \"[object Object]\")\n return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null)\n return true;\n const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\n\n// pkg/dist-src/fetch-wrapper.js\nvar import_request_error = require(\"@octokit/request-error\");\n\n// pkg/dist-src/get-buffer-response.js\nfunction getBufferResponse(response) {\n return response.arrayBuffer();\n}\n\n// pkg/dist-src/fetch-wrapper.js\nfunction fetchWrapper(requestOptions) {\n var _a, _b, _c, _d;\n const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console;\n const parseSuccessResponseBody = ((_a = requestOptions.request) == null ? void 0 : _a.parseSuccessResponseBody) !== false;\n if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {\n requestOptions.body = JSON.stringify(requestOptions.body);\n }\n let headers = {};\n let status;\n let url;\n let { fetch } = globalThis;\n if ((_b = requestOptions.request) == null ? void 0 : _b.fetch) {\n fetch = requestOptions.request.fetch;\n }\n if (!fetch) {\n throw new Error(\n \"fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing\"\n );\n }\n return fetch(requestOptions.url, {\n method: requestOptions.method,\n body: requestOptions.body,\n redirect: (_c = requestOptions.request) == null ? void 0 : _c.redirect,\n headers: requestOptions.headers,\n signal: (_d = requestOptions.request) == null ? void 0 : _d.signal,\n // duplex must be set if request.body is ReadableStream or Async Iterables.\n // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.\n ...requestOptions.body && { duplex: \"half\" }\n }).then(async (response) => {\n url = response.url;\n status = response.status;\n for (const keyAndValue of response.headers) {\n headers[keyAndValue[0]] = keyAndValue[1];\n }\n if (\"deprecation\" in headers) {\n const matches = headers.link && headers.link.match(/<([^>]+)>; rel=\"deprecation\"/);\n const deprecationLink = matches && matches.pop();\n log.warn(\n `[@octokit/request] \"${requestOptions.method} ${requestOptions.url}\" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : \"\"}`\n );\n }\n if (status === 204 || status === 205) {\n return;\n }\n if (requestOptions.method === \"HEAD\") {\n if (status < 400) {\n return;\n }\n throw new import_request_error.RequestError(response.statusText, status, {\n response: {\n url,\n status,\n headers,\n data: void 0\n },\n request: requestOptions\n });\n }\n if (status === 304) {\n throw new import_request_error.RequestError(\"Not modified\", status, {\n response: {\n url,\n status,\n headers,\n data: await getResponseData(response)\n },\n request: requestOptions\n });\n }\n if (status >= 400) {\n const data = await getResponseData(response);\n const error = new import_request_error.RequestError(toErrorMessage(data), status, {\n response: {\n url,\n status,\n headers,\n data\n },\n request: requestOptions\n });\n throw error;\n }\n return parseSuccessResponseBody ? await getResponseData(response) : response.body;\n }).then((data) => {\n return {\n status,\n url,\n headers,\n data\n };\n }).catch((error) => {\n if (error instanceof import_request_error.RequestError)\n throw error;\n else if (error.name === \"AbortError\")\n throw error;\n let message = error.message;\n if (error.name === \"TypeError\" && \"cause\" in error) {\n if (error.cause instanceof Error) {\n message = error.cause.message;\n } else if (typeof error.cause === \"string\") {\n message = error.cause;\n }\n }\n throw new import_request_error.RequestError(message, 500, {\n request: requestOptions\n });\n });\n}\nasync function getResponseData(response) {\n const contentType = response.headers.get(\"content-type\");\n if (/application\\/json/.test(contentType)) {\n return response.json().catch(() => response.text()).catch(() => \"\");\n }\n if (!contentType || /^text\\/|charset=utf-8$/.test(contentType)) {\n return response.text();\n }\n return getBufferResponse(response);\n}\nfunction toErrorMessage(data) {\n if (typeof data === \"string\")\n return data;\n let suffix;\n if (\"documentation_url\" in data) {\n suffix = ` - ${data.documentation_url}`;\n } else {\n suffix = \"\";\n }\n if (\"message\" in data) {\n if (Array.isArray(data.errors)) {\n return `${data.message}: ${data.errors.map(JSON.stringify).join(\", \")}${suffix}`;\n }\n return `${data.message}${suffix}`;\n }\n return `Unknown error: ${JSON.stringify(data)}`;\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(oldEndpoint, newDefaults) {\n const endpoint2 = oldEndpoint.defaults(newDefaults);\n const newApi = function(route, parameters) {\n const endpointOptions = endpoint2.merge(route, parameters);\n if (!endpointOptions.request || !endpointOptions.request.hook) {\n return fetchWrapper(endpoint2.parse(endpointOptions));\n }\n const request2 = (route2, parameters2) => {\n return fetchWrapper(\n endpoint2.parse(endpoint2.merge(route2, parameters2))\n );\n };\n Object.assign(request2, {\n endpoint: endpoint2,\n defaults: withDefaults.bind(null, endpoint2)\n });\n return endpointOptions.request.hook(request2, endpointOptions);\n };\n return Object.assign(newApi, {\n endpoint: endpoint2,\n defaults: withDefaults.bind(null, endpoint2)\n });\n}\n\n// pkg/dist-src/index.js\nvar request = withDefaults(import_endpoint.endpoint, {\n headers: {\n \"user-agent\": `octokit-request.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`\n }\n});\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n request\n});\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n CONFIG_USE_DUALSTACK_ENDPOINT: () => CONFIG_USE_DUALSTACK_ENDPOINT,\n CONFIG_USE_FIPS_ENDPOINT: () => CONFIG_USE_FIPS_ENDPOINT,\n DEFAULT_USE_DUALSTACK_ENDPOINT: () => DEFAULT_USE_DUALSTACK_ENDPOINT,\n DEFAULT_USE_FIPS_ENDPOINT: () => DEFAULT_USE_FIPS_ENDPOINT,\n ENV_USE_DUALSTACK_ENDPOINT: () => ENV_USE_DUALSTACK_ENDPOINT,\n ENV_USE_FIPS_ENDPOINT: () => ENV_USE_FIPS_ENDPOINT,\n NODE_REGION_CONFIG_FILE_OPTIONS: () => NODE_REGION_CONFIG_FILE_OPTIONS,\n NODE_REGION_CONFIG_OPTIONS: () => NODE_REGION_CONFIG_OPTIONS,\n NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS: () => NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS,\n NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS: () => NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS,\n REGION_ENV_NAME: () => REGION_ENV_NAME,\n REGION_INI_NAME: () => REGION_INI_NAME,\n getRegionInfo: () => getRegionInfo,\n resolveCustomEndpointsConfig: () => resolveCustomEndpointsConfig,\n resolveEndpointsConfig: () => resolveEndpointsConfig,\n resolveRegionConfig: () => resolveRegionConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/endpointsConfig/NodeUseDualstackEndpointConfigOptions.ts\nvar import_util_config_provider = require(\"@smithy/util-config-provider\");\nvar ENV_USE_DUALSTACK_ENDPOINT = \"AWS_USE_DUALSTACK_ENDPOINT\";\nvar CONFIG_USE_DUALSTACK_ENDPOINT = \"use_dualstack_endpoint\";\nvar DEFAULT_USE_DUALSTACK_ENDPOINT = false;\nvar NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => (0, import_util_config_provider.booleanSelector)(env, ENV_USE_DUALSTACK_ENDPOINT, import_util_config_provider.SelectorType.ENV),\n configFileSelector: (profile) => (0, import_util_config_provider.booleanSelector)(profile, CONFIG_USE_DUALSTACK_ENDPOINT, import_util_config_provider.SelectorType.CONFIG),\n default: false\n};\n\n// src/endpointsConfig/NodeUseFipsEndpointConfigOptions.ts\n\nvar ENV_USE_FIPS_ENDPOINT = \"AWS_USE_FIPS_ENDPOINT\";\nvar CONFIG_USE_FIPS_ENDPOINT = \"use_fips_endpoint\";\nvar DEFAULT_USE_FIPS_ENDPOINT = false;\nvar NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => (0, import_util_config_provider.booleanSelector)(env, ENV_USE_FIPS_ENDPOINT, import_util_config_provider.SelectorType.ENV),\n configFileSelector: (profile) => (0, import_util_config_provider.booleanSelector)(profile, CONFIG_USE_FIPS_ENDPOINT, import_util_config_provider.SelectorType.CONFIG),\n default: false\n};\n\n// src/endpointsConfig/resolveCustomEndpointsConfig.ts\nvar import_util_middleware = require(\"@smithy/util-middleware\");\nvar resolveCustomEndpointsConfig = /* @__PURE__ */ __name((input) => {\n const { endpoint, urlParser } = input;\n return {\n ...input,\n tls: input.tls ?? true,\n endpoint: (0, import_util_middleware.normalizeProvider)(typeof endpoint === \"string\" ? urlParser(endpoint) : endpoint),\n isCustomEndpoint: true,\n useDualstackEndpoint: (0, import_util_middleware.normalizeProvider)(input.useDualstackEndpoint ?? false)\n };\n}, \"resolveCustomEndpointsConfig\");\n\n// src/endpointsConfig/resolveEndpointsConfig.ts\n\n\n// src/endpointsConfig/utils/getEndpointFromRegion.ts\nvar getEndpointFromRegion = /* @__PURE__ */ __name(async (input) => {\n const { tls = true } = input;\n const region = await input.region();\n const dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/);\n if (!dnsHostRegex.test(region)) {\n throw new Error(\"Invalid region in client config\");\n }\n const useDualstackEndpoint = await input.useDualstackEndpoint();\n const useFipsEndpoint = await input.useFipsEndpoint();\n const { hostname } = await input.regionInfoProvider(region, { useDualstackEndpoint, useFipsEndpoint }) ?? {};\n if (!hostname) {\n throw new Error(\"Cannot resolve hostname from client config\");\n }\n return input.urlParser(`${tls ? \"https:\" : \"http:\"}//${hostname}`);\n}, \"getEndpointFromRegion\");\n\n// src/endpointsConfig/resolveEndpointsConfig.ts\nvar resolveEndpointsConfig = /* @__PURE__ */ __name((input) => {\n const useDualstackEndpoint = (0, import_util_middleware.normalizeProvider)(input.useDualstackEndpoint ?? false);\n const { endpoint, useFipsEndpoint, urlParser } = input;\n return {\n ...input,\n tls: input.tls ?? true,\n endpoint: endpoint ? (0, import_util_middleware.normalizeProvider)(typeof endpoint === \"string\" ? urlParser(endpoint) : endpoint) : () => getEndpointFromRegion({ ...input, useDualstackEndpoint, useFipsEndpoint }),\n isCustomEndpoint: !!endpoint,\n useDualstackEndpoint\n };\n}, \"resolveEndpointsConfig\");\n\n// src/regionConfig/config.ts\nvar REGION_ENV_NAME = \"AWS_REGION\";\nvar REGION_INI_NAME = \"region\";\nvar NODE_REGION_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[REGION_ENV_NAME],\n configFileSelector: (profile) => profile[REGION_INI_NAME],\n default: () => {\n throw new Error(\"Region is missing\");\n }\n};\nvar NODE_REGION_CONFIG_FILE_OPTIONS = {\n preferredFile: \"credentials\"\n};\n\n// src/regionConfig/isFipsRegion.ts\nvar isFipsRegion = /* @__PURE__ */ __name((region) => typeof region === \"string\" && (region.startsWith(\"fips-\") || region.endsWith(\"-fips\")), \"isFipsRegion\");\n\n// src/regionConfig/getRealRegion.ts\nvar getRealRegion = /* @__PURE__ */ __name((region) => isFipsRegion(region) ? [\"fips-aws-global\", \"aws-fips\"].includes(region) ? \"us-east-1\" : region.replace(/fips-(dkr-|prod-)?|-fips/, \"\") : region, \"getRealRegion\");\n\n// src/regionConfig/resolveRegionConfig.ts\nvar resolveRegionConfig = /* @__PURE__ */ __name((input) => {\n const { region, useFipsEndpoint } = input;\n if (!region) {\n throw new Error(\"Region is missing\");\n }\n return {\n ...input,\n region: async () => {\n if (typeof region === \"string\") {\n return getRealRegion(region);\n }\n const providedRegion = await region();\n return getRealRegion(providedRegion);\n },\n useFipsEndpoint: async () => {\n const providedRegion = typeof region === \"string\" ? region : await region();\n if (isFipsRegion(providedRegion)) {\n return true;\n }\n return typeof useFipsEndpoint !== \"function\" ? Promise.resolve(!!useFipsEndpoint) : useFipsEndpoint();\n }\n };\n}, \"resolveRegionConfig\");\n\n// src/regionInfo/getHostnameFromVariants.ts\nvar getHostnameFromVariants = /* @__PURE__ */ __name((variants = [], { useFipsEndpoint, useDualstackEndpoint }) => {\n var _a;\n return (_a = variants.find(\n ({ tags }) => useFipsEndpoint === tags.includes(\"fips\") && useDualstackEndpoint === tags.includes(\"dualstack\")\n )) == null ? void 0 : _a.hostname;\n}, \"getHostnameFromVariants\");\n\n// src/regionInfo/getResolvedHostname.ts\nvar getResolvedHostname = /* @__PURE__ */ __name((resolvedRegion, { regionHostname, partitionHostname }) => regionHostname ? regionHostname : partitionHostname ? partitionHostname.replace(\"{region}\", resolvedRegion) : void 0, \"getResolvedHostname\");\n\n// src/regionInfo/getResolvedPartition.ts\nvar getResolvedPartition = /* @__PURE__ */ __name((region, { partitionHash }) => Object.keys(partitionHash || {}).find((key) => partitionHash[key].regions.includes(region)) ?? \"aws\", \"getResolvedPartition\");\n\n// src/regionInfo/getResolvedSigningRegion.ts\nvar getResolvedSigningRegion = /* @__PURE__ */ __name((hostname, { signingRegion, regionRegex, useFipsEndpoint }) => {\n if (signingRegion) {\n return signingRegion;\n } else if (useFipsEndpoint) {\n const regionRegexJs = regionRegex.replace(\"\\\\\\\\\", \"\\\\\").replace(/^\\^/g, \"\\\\.\").replace(/\\$$/g, \"\\\\.\");\n const regionRegexmatchArray = hostname.match(regionRegexJs);\n if (regionRegexmatchArray) {\n return regionRegexmatchArray[0].slice(1, -1);\n }\n }\n}, \"getResolvedSigningRegion\");\n\n// src/regionInfo/getRegionInfo.ts\nvar getRegionInfo = /* @__PURE__ */ __name((region, {\n useFipsEndpoint = false,\n useDualstackEndpoint = false,\n signingService,\n regionHash,\n partitionHash\n}) => {\n var _a, _b, _c, _d, _e;\n const partition = getResolvedPartition(region, { partitionHash });\n const resolvedRegion = region in regionHash ? region : ((_a = partitionHash[partition]) == null ? void 0 : _a.endpoint) ?? region;\n const hostnameOptions = { useFipsEndpoint, useDualstackEndpoint };\n const regionHostname = getHostnameFromVariants((_b = regionHash[resolvedRegion]) == null ? void 0 : _b.variants, hostnameOptions);\n const partitionHostname = getHostnameFromVariants((_c = partitionHash[partition]) == null ? void 0 : _c.variants, hostnameOptions);\n const hostname = getResolvedHostname(resolvedRegion, { regionHostname, partitionHostname });\n if (hostname === void 0) {\n throw new Error(`Endpoint resolution failed for: ${{ resolvedRegion, useFipsEndpoint, useDualstackEndpoint }}`);\n }\n const signingRegion = getResolvedSigningRegion(hostname, {\n signingRegion: (_d = regionHash[resolvedRegion]) == null ? void 0 : _d.signingRegion,\n regionRegex: partitionHash[partition].regionRegex,\n useFipsEndpoint\n });\n return {\n partition,\n signingService,\n hostname,\n ...signingRegion && { signingRegion },\n ...((_e = regionHash[resolvedRegion]) == null ? void 0 : _e.signingService) && {\n signingService: regionHash[resolvedRegion].signingService\n }\n };\n}, \"getRegionInfo\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n ENV_USE_DUALSTACK_ENDPOINT,\n CONFIG_USE_DUALSTACK_ENDPOINT,\n DEFAULT_USE_DUALSTACK_ENDPOINT,\n NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS,\n ENV_USE_FIPS_ENDPOINT,\n CONFIG_USE_FIPS_ENDPOINT,\n DEFAULT_USE_FIPS_ENDPOINT,\n NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS,\n resolveCustomEndpointsConfig,\n resolveEndpointsConfig,\n REGION_ENV_NAME,\n REGION_INI_NAME,\n NODE_REGION_CONFIG_OPTIONS,\n NODE_REGION_CONFIG_FILE_OPTIONS,\n resolveRegionConfig,\n getRegionInfo\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n DefaultIdentityProviderConfig: () => DefaultIdentityProviderConfig,\n EXPIRATION_MS: () => EXPIRATION_MS,\n HttpApiKeyAuthSigner: () => HttpApiKeyAuthSigner,\n HttpBearerAuthSigner: () => HttpBearerAuthSigner,\n NoAuthSigner: () => NoAuthSigner,\n RequestBuilder: () => RequestBuilder,\n createIsIdentityExpiredFunction: () => createIsIdentityExpiredFunction,\n createPaginator: () => createPaginator,\n doesIdentityRequireRefresh: () => doesIdentityRequireRefresh,\n getHttpAuthSchemeEndpointRuleSetPlugin: () => getHttpAuthSchemeEndpointRuleSetPlugin,\n getHttpAuthSchemePlugin: () => getHttpAuthSchemePlugin,\n getHttpSigningPlugin: () => getHttpSigningPlugin,\n getSmithyContext: () => getSmithyContext3,\n httpAuthSchemeEndpointRuleSetMiddlewareOptions: () => httpAuthSchemeEndpointRuleSetMiddlewareOptions,\n httpAuthSchemeMiddleware: () => httpAuthSchemeMiddleware,\n httpAuthSchemeMiddlewareOptions: () => httpAuthSchemeMiddlewareOptions,\n httpSigningMiddleware: () => httpSigningMiddleware,\n httpSigningMiddlewareOptions: () => httpSigningMiddlewareOptions,\n isIdentityExpired: () => isIdentityExpired,\n memoizeIdentityProvider: () => memoizeIdentityProvider,\n normalizeProvider: () => normalizeProvider,\n requestBuilder: () => requestBuilder\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/middleware-http-auth-scheme/httpAuthSchemeMiddleware.ts\nvar import_util_middleware = require(\"@smithy/util-middleware\");\nfunction convertHttpAuthSchemesToMap(httpAuthSchemes) {\n const map = /* @__PURE__ */ new Map();\n for (const scheme of httpAuthSchemes) {\n map.set(scheme.schemeId, scheme);\n }\n return map;\n}\n__name(convertHttpAuthSchemesToMap, \"convertHttpAuthSchemesToMap\");\nvar httpAuthSchemeMiddleware = /* @__PURE__ */ __name((config, mwOptions) => (next, context) => async (args) => {\n var _a;\n const options = config.httpAuthSchemeProvider(\n await mwOptions.httpAuthSchemeParametersProvider(config, context, args.input)\n );\n const authSchemes = convertHttpAuthSchemesToMap(config.httpAuthSchemes);\n const smithyContext = (0, import_util_middleware.getSmithyContext)(context);\n const failureReasons = [];\n for (const option of options) {\n const scheme = authSchemes.get(option.schemeId);\n if (!scheme) {\n failureReasons.push(`HttpAuthScheme \\`${option.schemeId}\\` was not enabled for this service.`);\n continue;\n }\n const identityProvider = scheme.identityProvider(await mwOptions.identityProviderConfigProvider(config));\n if (!identityProvider) {\n failureReasons.push(`HttpAuthScheme \\`${option.schemeId}\\` did not have an IdentityProvider configured.`);\n continue;\n }\n const { identityProperties = {}, signingProperties = {} } = ((_a = option.propertiesExtractor) == null ? void 0 : _a.call(option, config, context)) || {};\n option.identityProperties = Object.assign(option.identityProperties || {}, identityProperties);\n option.signingProperties = Object.assign(option.signingProperties || {}, signingProperties);\n smithyContext.selectedHttpAuthScheme = {\n httpAuthOption: option,\n identity: await identityProvider(option.identityProperties),\n signer: scheme.signer\n };\n break;\n }\n if (!smithyContext.selectedHttpAuthScheme) {\n throw new Error(failureReasons.join(\"\\n\"));\n }\n return next(args);\n}, \"httpAuthSchemeMiddleware\");\n\n// src/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.ts\nvar import_middleware_endpoint = require(\"@smithy/middleware-endpoint\");\nvar httpAuthSchemeEndpointRuleSetMiddlewareOptions = {\n step: \"serialize\",\n tags: [\"HTTP_AUTH_SCHEME\"],\n name: \"httpAuthSchemeMiddleware\",\n override: true,\n relation: \"before\",\n toMiddleware: import_middleware_endpoint.endpointMiddlewareOptions.name\n};\nvar getHttpAuthSchemeEndpointRuleSetPlugin = /* @__PURE__ */ __name((config, {\n httpAuthSchemeParametersProvider,\n identityProviderConfigProvider\n}) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(\n httpAuthSchemeMiddleware(config, {\n httpAuthSchemeParametersProvider,\n identityProviderConfigProvider\n }),\n httpAuthSchemeEndpointRuleSetMiddlewareOptions\n );\n }\n}), \"getHttpAuthSchemeEndpointRuleSetPlugin\");\n\n// src/middleware-http-auth-scheme/getHttpAuthSchemePlugin.ts\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\nvar httpAuthSchemeMiddlewareOptions = {\n step: \"serialize\",\n tags: [\"HTTP_AUTH_SCHEME\"],\n name: \"httpAuthSchemeMiddleware\",\n override: true,\n relation: \"before\",\n toMiddleware: import_middleware_serde.serializerMiddlewareOption.name\n};\nvar getHttpAuthSchemePlugin = /* @__PURE__ */ __name((config, {\n httpAuthSchemeParametersProvider,\n identityProviderConfigProvider\n}) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(\n httpAuthSchemeMiddleware(config, {\n httpAuthSchemeParametersProvider,\n identityProviderConfigProvider\n }),\n httpAuthSchemeMiddlewareOptions\n );\n }\n}), \"getHttpAuthSchemePlugin\");\n\n// src/middleware-http-signing/httpSigningMiddleware.ts\nvar import_protocol_http = require(\"@smithy/protocol-http\");\n\nvar defaultErrorHandler = /* @__PURE__ */ __name((signingProperties) => (error) => {\n throw error;\n}, \"defaultErrorHandler\");\nvar defaultSuccessHandler = /* @__PURE__ */ __name((httpResponse, signingProperties) => {\n}, \"defaultSuccessHandler\");\nvar httpSigningMiddleware = /* @__PURE__ */ __name((config) => (next, context) => async (args) => {\n if (!import_protocol_http.HttpRequest.isInstance(args.request)) {\n return next(args);\n }\n const smithyContext = (0, import_util_middleware.getSmithyContext)(context);\n const scheme = smithyContext.selectedHttpAuthScheme;\n if (!scheme) {\n throw new Error(`No HttpAuthScheme was selected: unable to sign request`);\n }\n const {\n httpAuthOption: { signingProperties = {} },\n identity,\n signer\n } = scheme;\n const output = await next({\n ...args,\n request: await signer.sign(args.request, identity, signingProperties)\n }).catch((signer.errorHandler || defaultErrorHandler)(signingProperties));\n (signer.successHandler || defaultSuccessHandler)(output.response, signingProperties);\n return output;\n}, \"httpSigningMiddleware\");\n\n// src/middleware-http-signing/getHttpSigningMiddleware.ts\nvar import_middleware_retry = require(\"@smithy/middleware-retry\");\nvar httpSigningMiddlewareOptions = {\n step: \"finalizeRequest\",\n tags: [\"HTTP_SIGNING\"],\n name: \"httpSigningMiddleware\",\n aliases: [\"apiKeyMiddleware\", \"tokenMiddleware\", \"awsAuthMiddleware\"],\n override: true,\n relation: \"after\",\n toMiddleware: import_middleware_retry.retryMiddlewareOptions.name\n};\nvar getHttpSigningPlugin = /* @__PURE__ */ __name((config) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(httpSigningMiddleware(config), httpSigningMiddlewareOptions);\n }\n}), \"getHttpSigningPlugin\");\n\n// src/util-identity-and-auth/DefaultIdentityProviderConfig.ts\nvar _DefaultIdentityProviderConfig = class _DefaultIdentityProviderConfig {\n /**\n * Creates an IdentityProviderConfig with a record of scheme IDs to identity providers.\n *\n * @param config scheme IDs and identity providers to configure\n */\n constructor(config) {\n this.authSchemes = /* @__PURE__ */ new Map();\n for (const [key, value] of Object.entries(config)) {\n if (value !== void 0) {\n this.authSchemes.set(key, value);\n }\n }\n }\n getIdentityProvider(schemeId) {\n return this.authSchemes.get(schemeId);\n }\n};\n__name(_DefaultIdentityProviderConfig, \"DefaultIdentityProviderConfig\");\nvar DefaultIdentityProviderConfig = _DefaultIdentityProviderConfig;\n\n// src/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.ts\nvar import_types = require(\"@smithy/types\");\nvar _HttpApiKeyAuthSigner = class _HttpApiKeyAuthSigner {\n async sign(httpRequest, identity, signingProperties) {\n if (!signingProperties) {\n throw new Error(\n \"request could not be signed with `apiKey` since the `name` and `in` signer properties are missing\"\n );\n }\n if (!signingProperties.name) {\n throw new Error(\"request could not be signed with `apiKey` since the `name` signer property is missing\");\n }\n if (!signingProperties.in) {\n throw new Error(\"request could not be signed with `apiKey` since the `in` signer property is missing\");\n }\n if (!identity.apiKey) {\n throw new Error(\"request could not be signed with `apiKey` since the `apiKey` is not defined\");\n }\n const clonedRequest = httpRequest.clone();\n if (signingProperties.in === import_types.HttpApiKeyAuthLocation.QUERY) {\n clonedRequest.query[signingProperties.name] = identity.apiKey;\n } else if (signingProperties.in === import_types.HttpApiKeyAuthLocation.HEADER) {\n clonedRequest.headers[signingProperties.name] = signingProperties.scheme ? `${signingProperties.scheme} ${identity.apiKey}` : identity.apiKey;\n } else {\n throw new Error(\n \"request can only be signed with `apiKey` locations `query` or `header`, but found: `\" + signingProperties.in + \"`\"\n );\n }\n return clonedRequest;\n }\n};\n__name(_HttpApiKeyAuthSigner, \"HttpApiKeyAuthSigner\");\nvar HttpApiKeyAuthSigner = _HttpApiKeyAuthSigner;\n\n// src/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.ts\nvar _HttpBearerAuthSigner = class _HttpBearerAuthSigner {\n async sign(httpRequest, identity, signingProperties) {\n const clonedRequest = httpRequest.clone();\n if (!identity.token) {\n throw new Error(\"request could not be signed with `token` since the `token` is not defined\");\n }\n clonedRequest.headers[\"Authorization\"] = `Bearer ${identity.token}`;\n return clonedRequest;\n }\n};\n__name(_HttpBearerAuthSigner, \"HttpBearerAuthSigner\");\nvar HttpBearerAuthSigner = _HttpBearerAuthSigner;\n\n// src/util-identity-and-auth/httpAuthSchemes/noAuth.ts\nvar _NoAuthSigner = class _NoAuthSigner {\n async sign(httpRequest, identity, signingProperties) {\n return httpRequest;\n }\n};\n__name(_NoAuthSigner, \"NoAuthSigner\");\nvar NoAuthSigner = _NoAuthSigner;\n\n// src/util-identity-and-auth/memoizeIdentityProvider.ts\nvar createIsIdentityExpiredFunction = /* @__PURE__ */ __name((expirationMs) => (identity) => doesIdentityRequireRefresh(identity) && identity.expiration.getTime() - Date.now() < expirationMs, \"createIsIdentityExpiredFunction\");\nvar EXPIRATION_MS = 3e5;\nvar isIdentityExpired = createIsIdentityExpiredFunction(EXPIRATION_MS);\nvar doesIdentityRequireRefresh = /* @__PURE__ */ __name((identity) => identity.expiration !== void 0, \"doesIdentityRequireRefresh\");\nvar memoizeIdentityProvider = /* @__PURE__ */ __name((provider, isExpired, requiresRefresh) => {\n if (provider === void 0) {\n return void 0;\n }\n const normalizedProvider = typeof provider !== \"function\" ? async () => Promise.resolve(provider) : provider;\n let resolved;\n let pending;\n let hasResult;\n let isConstant = false;\n const coalesceProvider = /* @__PURE__ */ __name(async (options) => {\n if (!pending) {\n pending = normalizedProvider(options);\n }\n try {\n resolved = await pending;\n hasResult = true;\n isConstant = false;\n } finally {\n pending = void 0;\n }\n return resolved;\n }, \"coalesceProvider\");\n if (isExpired === void 0) {\n return async (options) => {\n if (!hasResult || (options == null ? void 0 : options.forceRefresh)) {\n resolved = await coalesceProvider(options);\n }\n return resolved;\n };\n }\n return async (options) => {\n if (!hasResult || (options == null ? void 0 : options.forceRefresh)) {\n resolved = await coalesceProvider(options);\n }\n if (isConstant) {\n return resolved;\n }\n if (!requiresRefresh(resolved)) {\n isConstant = true;\n return resolved;\n }\n if (isExpired(resolved)) {\n await coalesceProvider(options);\n return resolved;\n }\n return resolved;\n };\n}, \"memoizeIdentityProvider\");\n\n// src/getSmithyContext.ts\n\nvar getSmithyContext3 = /* @__PURE__ */ __name((context) => context[import_types.SMITHY_CONTEXT_KEY] || (context[import_types.SMITHY_CONTEXT_KEY] = {}), \"getSmithyContext\");\n\n// src/normalizeProvider.ts\nvar normalizeProvider = /* @__PURE__ */ __name((input) => {\n if (typeof input === \"function\")\n return input;\n const promisified = Promise.resolve(input);\n return () => promisified;\n}, \"normalizeProvider\");\n\n// src/protocols/requestBuilder.ts\n\nvar import_smithy_client = require(\"@smithy/smithy-client\");\nfunction requestBuilder(input, context) {\n return new RequestBuilder(input, context);\n}\n__name(requestBuilder, \"requestBuilder\");\nvar _RequestBuilder = class _RequestBuilder {\n constructor(input, context) {\n this.input = input;\n this.context = context;\n this.query = {};\n this.method = \"\";\n this.headers = {};\n this.path = \"\";\n this.body = null;\n this.hostname = \"\";\n this.resolvePathStack = [];\n }\n async build() {\n const { hostname, protocol = \"https\", port, path: basePath } = await this.context.endpoint();\n this.path = basePath;\n for (const resolvePath of this.resolvePathStack) {\n resolvePath(this.path);\n }\n return new import_protocol_http.HttpRequest({\n protocol,\n hostname: this.hostname || hostname,\n port,\n method: this.method,\n path: this.path,\n query: this.query,\n body: this.body,\n headers: this.headers\n });\n }\n /**\n * Brevity setter for \"hostname\".\n */\n hn(hostname) {\n this.hostname = hostname;\n return this;\n }\n /**\n * Brevity initial builder for \"basepath\".\n */\n bp(uriLabel) {\n this.resolvePathStack.push((basePath) => {\n this.path = `${(basePath == null ? void 0 : basePath.endsWith(\"/\")) ? basePath.slice(0, -1) : basePath || \"\"}` + uriLabel;\n });\n return this;\n }\n /**\n * Brevity incremental builder for \"path\".\n */\n p(memberName, labelValueProvider, uriLabel, isGreedyLabel) {\n this.resolvePathStack.push((path) => {\n this.path = (0, import_smithy_client.resolvedPath)(path, this.input, memberName, labelValueProvider, uriLabel, isGreedyLabel);\n });\n return this;\n }\n /**\n * Brevity setter for \"headers\".\n */\n h(headers) {\n this.headers = headers;\n return this;\n }\n /**\n * Brevity setter for \"query\".\n */\n q(query) {\n this.query = query;\n return this;\n }\n /**\n * Brevity setter for \"body\".\n */\n b(body) {\n this.body = body;\n return this;\n }\n /**\n * Brevity setter for \"method\".\n */\n m(method) {\n this.method = method;\n return this;\n }\n};\n__name(_RequestBuilder, \"RequestBuilder\");\nvar RequestBuilder = _RequestBuilder;\n\n// src/pagination/createPaginator.ts\nvar makePagedClientRequest = /* @__PURE__ */ __name(async (CommandCtor, client, input, ...args) => {\n return await client.send(new CommandCtor(input), ...args);\n}, \"makePagedClientRequest\");\nfunction createPaginator(ClientCtor, CommandCtor, inputTokenName, outputTokenName, pageSizeTokenName) {\n return /* @__PURE__ */ __name(async function* paginateOperation(config, input, ...additionalArguments) {\n let token = config.startingToken || void 0;\n let hasNext = true;\n let page;\n while (hasNext) {\n input[inputTokenName] = token;\n if (pageSizeTokenName) {\n input[pageSizeTokenName] = input[pageSizeTokenName] ?? config.pageSize;\n }\n if (config.client instanceof ClientCtor) {\n page = await makePagedClientRequest(CommandCtor, config.client, input, ...additionalArguments);\n } else {\n throw new Error(`Invalid client, expected instance of ${ClientCtor.name}`);\n }\n yield page;\n const prevToken = token;\n token = get(page, outputTokenName);\n hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken));\n }\n return void 0;\n }, \"paginateOperation\");\n}\n__name(createPaginator, \"createPaginator\");\nvar get = /* @__PURE__ */ __name((fromObject, path) => {\n let cursor = fromObject;\n const pathComponents = path.split(\".\");\n for (const step of pathComponents) {\n if (!cursor || typeof cursor !== \"object\") {\n return void 0;\n }\n cursor = cursor[step];\n }\n return cursor;\n}, \"get\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n createPaginator,\n httpAuthSchemeMiddleware,\n httpAuthSchemeEndpointRuleSetMiddlewareOptions,\n getHttpAuthSchemeEndpointRuleSetPlugin,\n httpAuthSchemeMiddlewareOptions,\n getHttpAuthSchemePlugin,\n httpSigningMiddleware,\n httpSigningMiddlewareOptions,\n getHttpSigningPlugin,\n DefaultIdentityProviderConfig,\n HttpApiKeyAuthSigner,\n HttpBearerAuthSigner,\n NoAuthSigner,\n createIsIdentityExpiredFunction,\n EXPIRATION_MS,\n isIdentityExpired,\n doesIdentityRequireRefresh,\n memoizeIdentityProvider,\n getSmithyContext,\n normalizeProvider,\n requestBuilder,\n RequestBuilder\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n DEFAULT_MAX_RETRIES: () => DEFAULT_MAX_RETRIES,\n DEFAULT_TIMEOUT: () => DEFAULT_TIMEOUT,\n ENV_CMDS_AUTH_TOKEN: () => ENV_CMDS_AUTH_TOKEN,\n ENV_CMDS_FULL_URI: () => ENV_CMDS_FULL_URI,\n ENV_CMDS_RELATIVE_URI: () => ENV_CMDS_RELATIVE_URI,\n Endpoint: () => Endpoint,\n fromContainerMetadata: () => fromContainerMetadata,\n fromInstanceMetadata: () => fromInstanceMetadata,\n getInstanceMetadataEndpoint: () => getInstanceMetadataEndpoint,\n httpRequest: () => httpRequest,\n providerConfigFromInit: () => providerConfigFromInit\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromContainerMetadata.ts\n\nvar import_url = require(\"url\");\n\n// src/remoteProvider/httpRequest.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar import_buffer = require(\"buffer\");\nvar import_http = require(\"http\");\nfunction httpRequest(options) {\n return new Promise((resolve, reject) => {\n var _a;\n const req = (0, import_http.request)({\n method: \"GET\",\n ...options,\n // Node.js http module doesn't accept hostname with square brackets\n // Refs: https://github.com/nodejs/node/issues/39738\n hostname: (_a = options.hostname) == null ? void 0 : _a.replace(/^\\[(.+)\\]$/, \"$1\")\n });\n req.on(\"error\", (err) => {\n reject(Object.assign(new import_property_provider.ProviderError(\"Unable to connect to instance metadata service\"), err));\n req.destroy();\n });\n req.on(\"timeout\", () => {\n reject(new import_property_provider.ProviderError(\"TimeoutError from instance metadata service\"));\n req.destroy();\n });\n req.on(\"response\", (res) => {\n const { statusCode = 400 } = res;\n if (statusCode < 200 || 300 <= statusCode) {\n reject(\n Object.assign(new import_property_provider.ProviderError(\"Error response received from instance metadata service\"), { statusCode })\n );\n req.destroy();\n }\n const chunks = [];\n res.on(\"data\", (chunk) => {\n chunks.push(chunk);\n });\n res.on(\"end\", () => {\n resolve(import_buffer.Buffer.concat(chunks));\n req.destroy();\n });\n });\n req.end();\n });\n}\n__name(httpRequest, \"httpRequest\");\n\n// src/remoteProvider/ImdsCredentials.ts\nvar isImdsCredentials = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === \"object\" && typeof arg.AccessKeyId === \"string\" && typeof arg.SecretAccessKey === \"string\" && typeof arg.Token === \"string\" && typeof arg.Expiration === \"string\", \"isImdsCredentials\");\nvar fromImdsCredentials = /* @__PURE__ */ __name((creds) => ({\n accessKeyId: creds.AccessKeyId,\n secretAccessKey: creds.SecretAccessKey,\n sessionToken: creds.Token,\n expiration: new Date(creds.Expiration)\n}), \"fromImdsCredentials\");\n\n// src/remoteProvider/RemoteProviderInit.ts\nvar DEFAULT_TIMEOUT = 1e3;\nvar DEFAULT_MAX_RETRIES = 0;\nvar providerConfigFromInit = /* @__PURE__ */ __name(({\n maxRetries = DEFAULT_MAX_RETRIES,\n timeout = DEFAULT_TIMEOUT\n}) => ({ maxRetries, timeout }), \"providerConfigFromInit\");\n\n// src/remoteProvider/retry.ts\nvar retry = /* @__PURE__ */ __name((toRetry, maxRetries) => {\n let promise = toRetry();\n for (let i = 0; i < maxRetries; i++) {\n promise = promise.catch(toRetry);\n }\n return promise;\n}, \"retry\");\n\n// src/fromContainerMetadata.ts\nvar ENV_CMDS_FULL_URI = \"AWS_CONTAINER_CREDENTIALS_FULL_URI\";\nvar ENV_CMDS_RELATIVE_URI = \"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI\";\nvar ENV_CMDS_AUTH_TOKEN = \"AWS_CONTAINER_AUTHORIZATION_TOKEN\";\nvar fromContainerMetadata = /* @__PURE__ */ __name((init = {}) => {\n const { timeout, maxRetries } = providerConfigFromInit(init);\n return () => retry(async () => {\n const requestOptions = await getCmdsUri();\n const credsResponse = JSON.parse(await requestFromEcsImds(timeout, requestOptions));\n if (!isImdsCredentials(credsResponse)) {\n throw new import_property_provider.CredentialsProviderError(\"Invalid response received from instance metadata service.\");\n }\n return fromImdsCredentials(credsResponse);\n }, maxRetries);\n}, \"fromContainerMetadata\");\nvar requestFromEcsImds = /* @__PURE__ */ __name(async (timeout, options) => {\n if (process.env[ENV_CMDS_AUTH_TOKEN]) {\n options.headers = {\n ...options.headers,\n Authorization: process.env[ENV_CMDS_AUTH_TOKEN]\n };\n }\n const buffer = await httpRequest({\n ...options,\n timeout\n });\n return buffer.toString();\n}, \"requestFromEcsImds\");\nvar CMDS_IP = \"169.254.170.2\";\nvar GREENGRASS_HOSTS = {\n localhost: true,\n \"127.0.0.1\": true\n};\nvar GREENGRASS_PROTOCOLS = {\n \"http:\": true,\n \"https:\": true\n};\nvar getCmdsUri = /* @__PURE__ */ __name(async () => {\n if (process.env[ENV_CMDS_RELATIVE_URI]) {\n return {\n hostname: CMDS_IP,\n path: process.env[ENV_CMDS_RELATIVE_URI]\n };\n }\n if (process.env[ENV_CMDS_FULL_URI]) {\n const parsed = (0, import_url.parse)(process.env[ENV_CMDS_FULL_URI]);\n if (!parsed.hostname || !(parsed.hostname in GREENGRASS_HOSTS)) {\n throw new import_property_provider.CredentialsProviderError(\n `${parsed.hostname} is not a valid container metadata service hostname`,\n false\n );\n }\n if (!parsed.protocol || !(parsed.protocol in GREENGRASS_PROTOCOLS)) {\n throw new import_property_provider.CredentialsProviderError(\n `${parsed.protocol} is not a valid container metadata service protocol`,\n false\n );\n }\n return {\n ...parsed,\n port: parsed.port ? parseInt(parsed.port, 10) : void 0\n };\n }\n throw new import_property_provider.CredentialsProviderError(\n `The container metadata credential provider cannot be used unless the ${ENV_CMDS_RELATIVE_URI} or ${ENV_CMDS_FULL_URI} environment variable is set`,\n false\n );\n}, \"getCmdsUri\");\n\n// src/fromInstanceMetadata.ts\n\n\n\n// src/error/InstanceMetadataV1FallbackError.ts\n\nvar _InstanceMetadataV1FallbackError = class _InstanceMetadataV1FallbackError extends import_property_provider.CredentialsProviderError {\n constructor(message, tryNextLink = true) {\n super(message, tryNextLink);\n this.tryNextLink = tryNextLink;\n this.name = \"InstanceMetadataV1FallbackError\";\n Object.setPrototypeOf(this, _InstanceMetadataV1FallbackError.prototype);\n }\n};\n__name(_InstanceMetadataV1FallbackError, \"InstanceMetadataV1FallbackError\");\nvar InstanceMetadataV1FallbackError = _InstanceMetadataV1FallbackError;\n\n// src/utils/getInstanceMetadataEndpoint.ts\nvar import_node_config_provider = require(\"@smithy/node-config-provider\");\nvar import_url_parser = require(\"@smithy/url-parser\");\n\n// src/config/Endpoint.ts\nvar Endpoint = /* @__PURE__ */ ((Endpoint2) => {\n Endpoint2[\"IPv4\"] = \"http://169.254.169.254\";\n Endpoint2[\"IPv6\"] = \"http://[fd00:ec2::254]\";\n return Endpoint2;\n})(Endpoint || {});\n\n// src/config/EndpointConfigOptions.ts\nvar ENV_ENDPOINT_NAME = \"AWS_EC2_METADATA_SERVICE_ENDPOINT\";\nvar CONFIG_ENDPOINT_NAME = \"ec2_metadata_service_endpoint\";\nvar ENDPOINT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[ENV_ENDPOINT_NAME],\n configFileSelector: (profile) => profile[CONFIG_ENDPOINT_NAME],\n default: void 0\n};\n\n// src/config/EndpointMode.ts\nvar EndpointMode = /* @__PURE__ */ ((EndpointMode2) => {\n EndpointMode2[\"IPv4\"] = \"IPv4\";\n EndpointMode2[\"IPv6\"] = \"IPv6\";\n return EndpointMode2;\n})(EndpointMode || {});\n\n// src/config/EndpointModeConfigOptions.ts\nvar ENV_ENDPOINT_MODE_NAME = \"AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE\";\nvar CONFIG_ENDPOINT_MODE_NAME = \"ec2_metadata_service_endpoint_mode\";\nvar ENDPOINT_MODE_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[ENV_ENDPOINT_MODE_NAME],\n configFileSelector: (profile) => profile[CONFIG_ENDPOINT_MODE_NAME],\n default: \"IPv4\" /* IPv4 */\n};\n\n// src/utils/getInstanceMetadataEndpoint.ts\nvar getInstanceMetadataEndpoint = /* @__PURE__ */ __name(async () => (0, import_url_parser.parseUrl)(await getFromEndpointConfig() || await getFromEndpointModeConfig()), \"getInstanceMetadataEndpoint\");\nvar getFromEndpointConfig = /* @__PURE__ */ __name(async () => (0, import_node_config_provider.loadConfig)(ENDPOINT_CONFIG_OPTIONS)(), \"getFromEndpointConfig\");\nvar getFromEndpointModeConfig = /* @__PURE__ */ __name(async () => {\n const endpointMode = await (0, import_node_config_provider.loadConfig)(ENDPOINT_MODE_CONFIG_OPTIONS)();\n switch (endpointMode) {\n case \"IPv4\" /* IPv4 */:\n return \"http://169.254.169.254\" /* IPv4 */;\n case \"IPv6\" /* IPv6 */:\n return \"http://[fd00:ec2::254]\" /* IPv6 */;\n default:\n throw new Error(`Unsupported endpoint mode: ${endpointMode}. Select from ${Object.values(EndpointMode)}`);\n }\n}, \"getFromEndpointModeConfig\");\n\n// src/utils/getExtendedInstanceMetadataCredentials.ts\nvar STATIC_STABILITY_REFRESH_INTERVAL_SECONDS = 5 * 60;\nvar STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS = 5 * 60;\nvar STATIC_STABILITY_DOC_URL = \"https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html\";\nvar getExtendedInstanceMetadataCredentials = /* @__PURE__ */ __name((credentials, logger) => {\n const refreshInterval = STATIC_STABILITY_REFRESH_INTERVAL_SECONDS + Math.floor(Math.random() * STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS);\n const newExpiration = new Date(Date.now() + refreshInterval * 1e3);\n logger.warn(\n `Attempting credential expiration extension due to a credential service availability issue. A refresh of these credentials will be attempted after ${new Date(newExpiration)}.\nFor more information, please visit: ` + STATIC_STABILITY_DOC_URL\n );\n const originalExpiration = credentials.originalExpiration ?? credentials.expiration;\n return {\n ...credentials,\n ...originalExpiration ? { originalExpiration } : {},\n expiration: newExpiration\n };\n}, \"getExtendedInstanceMetadataCredentials\");\n\n// src/utils/staticStabilityProvider.ts\nvar staticStabilityProvider = /* @__PURE__ */ __name((provider, options = {}) => {\n const logger = (options == null ? void 0 : options.logger) || console;\n let pastCredentials;\n return async () => {\n let credentials;\n try {\n credentials = await provider();\n if (credentials.expiration && credentials.expiration.getTime() < Date.now()) {\n credentials = getExtendedInstanceMetadataCredentials(credentials, logger);\n }\n } catch (e) {\n if (pastCredentials) {\n logger.warn(\"Credential renew failed: \", e);\n credentials = getExtendedInstanceMetadataCredentials(pastCredentials, logger);\n } else {\n throw e;\n }\n }\n pastCredentials = credentials;\n return credentials;\n };\n}, \"staticStabilityProvider\");\n\n// src/fromInstanceMetadata.ts\nvar IMDS_PATH = \"/latest/meta-data/iam/security-credentials/\";\nvar IMDS_TOKEN_PATH = \"/latest/api/token\";\nvar AWS_EC2_METADATA_V1_DISABLED = \"AWS_EC2_METADATA_V1_DISABLED\";\nvar PROFILE_AWS_EC2_METADATA_V1_DISABLED = \"ec2_metadata_v1_disabled\";\nvar X_AWS_EC2_METADATA_TOKEN = \"x-aws-ec2-metadata-token\";\nvar fromInstanceMetadata = /* @__PURE__ */ __name((init = {}) => staticStabilityProvider(getInstanceImdsProvider(init), { logger: init.logger }), \"fromInstanceMetadata\");\nvar getInstanceImdsProvider = /* @__PURE__ */ __name((init) => {\n let disableFetchToken = false;\n const { logger, profile } = init;\n const { timeout, maxRetries } = providerConfigFromInit(init);\n const getCredentials = /* @__PURE__ */ __name(async (maxRetries2, options) => {\n var _a;\n const isImdsV1Fallback = disableFetchToken || ((_a = options.headers) == null ? void 0 : _a[X_AWS_EC2_METADATA_TOKEN]) == null;\n if (isImdsV1Fallback) {\n let fallbackBlockedFromProfile = false;\n let fallbackBlockedFromProcessEnv = false;\n const configValue = await (0, import_node_config_provider.loadConfig)(\n {\n environmentVariableSelector: (env) => {\n const envValue = env[AWS_EC2_METADATA_V1_DISABLED];\n fallbackBlockedFromProcessEnv = !!envValue && envValue !== \"false\";\n if (envValue === void 0) {\n throw new import_property_provider.CredentialsProviderError(\n `${AWS_EC2_METADATA_V1_DISABLED} not set in env, checking config file next.`\n );\n }\n return fallbackBlockedFromProcessEnv;\n },\n configFileSelector: (profile2) => {\n const profileValue = profile2[PROFILE_AWS_EC2_METADATA_V1_DISABLED];\n fallbackBlockedFromProfile = !!profileValue && profileValue !== \"false\";\n return fallbackBlockedFromProfile;\n },\n default: false\n },\n {\n profile\n }\n )();\n if (init.ec2MetadataV1Disabled || configValue) {\n const causes = [];\n if (init.ec2MetadataV1Disabled)\n causes.push(\"credential provider initialization (runtime option ec2MetadataV1Disabled)\");\n if (fallbackBlockedFromProfile)\n causes.push(`config file profile (${PROFILE_AWS_EC2_METADATA_V1_DISABLED})`);\n if (fallbackBlockedFromProcessEnv)\n causes.push(`process environment variable (${AWS_EC2_METADATA_V1_DISABLED})`);\n throw new InstanceMetadataV1FallbackError(\n `AWS EC2 Metadata v1 fallback has been blocked by AWS SDK configuration in the following: [${causes.join(\n \", \"\n )}].`\n );\n }\n }\n const imdsProfile = (await retry(async () => {\n let profile2;\n try {\n profile2 = await getProfile(options);\n } catch (err) {\n if (err.statusCode === 401) {\n disableFetchToken = false;\n }\n throw err;\n }\n return profile2;\n }, maxRetries2)).trim();\n return retry(async () => {\n let creds;\n try {\n creds = await getCredentialsFromProfile(imdsProfile, options);\n } catch (err) {\n if (err.statusCode === 401) {\n disableFetchToken = false;\n }\n throw err;\n }\n return creds;\n }, maxRetries2);\n }, \"getCredentials\");\n return async () => {\n const endpoint = await getInstanceMetadataEndpoint();\n if (disableFetchToken) {\n logger == null ? void 0 : logger.debug(\"AWS SDK Instance Metadata\", \"using v1 fallback (no token fetch)\");\n return getCredentials(maxRetries, { ...endpoint, timeout });\n } else {\n let token;\n try {\n token = (await getMetadataToken({ ...endpoint, timeout })).toString();\n } catch (error) {\n if ((error == null ? void 0 : error.statusCode) === 400) {\n throw Object.assign(error, {\n message: \"EC2 Metadata token request returned error\"\n });\n } else if (error.message === \"TimeoutError\" || [403, 404, 405].includes(error.statusCode)) {\n disableFetchToken = true;\n }\n logger == null ? void 0 : logger.debug(\"AWS SDK Instance Metadata\", \"using v1 fallback (initial)\");\n return getCredentials(maxRetries, { ...endpoint, timeout });\n }\n return getCredentials(maxRetries, {\n ...endpoint,\n headers: {\n [X_AWS_EC2_METADATA_TOKEN]: token\n },\n timeout\n });\n }\n };\n}, \"getInstanceImdsProvider\");\nvar getMetadataToken = /* @__PURE__ */ __name(async (options) => httpRequest({\n ...options,\n path: IMDS_TOKEN_PATH,\n method: \"PUT\",\n headers: {\n \"x-aws-ec2-metadata-token-ttl-seconds\": \"21600\"\n }\n}), \"getMetadataToken\");\nvar getProfile = /* @__PURE__ */ __name(async (options) => (await httpRequest({ ...options, path: IMDS_PATH })).toString(), \"getProfile\");\nvar getCredentialsFromProfile = /* @__PURE__ */ __name(async (profile, options) => {\n const credsResponse = JSON.parse(\n (await httpRequest({\n ...options,\n path: IMDS_PATH + profile\n })).toString()\n );\n if (!isImdsCredentials(credsResponse)) {\n throw new import_property_provider.CredentialsProviderError(\"Invalid response received from instance metadata service.\");\n }\n return fromImdsCredentials(credsResponse);\n}, \"getCredentialsFromProfile\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n httpRequest,\n getInstanceMetadataEndpoint,\n Endpoint,\n ENV_CMDS_FULL_URI,\n ENV_CMDS_RELATIVE_URI,\n ENV_CMDS_AUTH_TOKEN,\n fromContainerMetadata,\n fromInstanceMetadata,\n DEFAULT_TIMEOUT,\n DEFAULT_MAX_RETRIES,\n providerConfigFromInit\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n Hash: () => Hash\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_util_buffer_from = require(\"@smithy/util-buffer-from\");\nvar import_util_utf8 = require(\"@smithy/util-utf8\");\nvar import_buffer = require(\"buffer\");\nvar import_crypto = require(\"crypto\");\nvar _Hash = class _Hash {\n constructor(algorithmIdentifier, secret) {\n this.algorithmIdentifier = algorithmIdentifier;\n this.secret = secret;\n this.reset();\n }\n update(toHash, encoding) {\n this.hash.update((0, import_util_utf8.toUint8Array)(castSourceData(toHash, encoding)));\n }\n digest() {\n return Promise.resolve(this.hash.digest());\n }\n reset() {\n this.hash = this.secret ? (0, import_crypto.createHmac)(this.algorithmIdentifier, castSourceData(this.secret)) : (0, import_crypto.createHash)(this.algorithmIdentifier);\n }\n};\n__name(_Hash, \"Hash\");\nvar Hash = _Hash;\nfunction castSourceData(toCast, encoding) {\n if (import_buffer.Buffer.isBuffer(toCast)) {\n return toCast;\n }\n if (typeof toCast === \"string\") {\n return (0, import_util_buffer_from.fromString)(toCast, encoding);\n }\n if (ArrayBuffer.isView(toCast)) {\n return (0, import_util_buffer_from.fromArrayBuffer)(toCast.buffer, toCast.byteOffset, toCast.byteLength);\n }\n return (0, import_util_buffer_from.fromArrayBuffer)(toCast);\n}\n__name(castSourceData, \"castSourceData\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n Hash\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n isArrayBuffer: () => isArrayBuffer\n});\nmodule.exports = __toCommonJS(src_exports);\nvar isArrayBuffer = /* @__PURE__ */ __name((arg) => typeof ArrayBuffer === \"function\" && arg instanceof ArrayBuffer || Object.prototype.toString.call(arg) === \"[object ArrayBuffer]\", \"isArrayBuffer\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n isArrayBuffer\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n contentLengthMiddleware: () => contentLengthMiddleware,\n contentLengthMiddlewareOptions: () => contentLengthMiddlewareOptions,\n getContentLengthPlugin: () => getContentLengthPlugin\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar CONTENT_LENGTH_HEADER = \"content-length\";\nfunction contentLengthMiddleware(bodyLengthChecker) {\n return (next) => async (args) => {\n const request = args.request;\n if (import_protocol_http.HttpRequest.isInstance(request)) {\n const { body, headers } = request;\n if (body && Object.keys(headers).map((str) => str.toLowerCase()).indexOf(CONTENT_LENGTH_HEADER) === -1) {\n try {\n const length = bodyLengthChecker(body);\n request.headers = {\n ...request.headers,\n [CONTENT_LENGTH_HEADER]: String(length)\n };\n } catch (error) {\n }\n }\n }\n return next({\n ...args,\n request\n });\n };\n}\n__name(contentLengthMiddleware, \"contentLengthMiddleware\");\nvar contentLengthMiddlewareOptions = {\n step: \"build\",\n tags: [\"SET_CONTENT_LENGTH\", \"CONTENT_LENGTH\"],\n name: \"contentLengthMiddleware\",\n override: true\n};\nvar getContentLengthPlugin = /* @__PURE__ */ __name((options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(contentLengthMiddleware(options.bodyLengthChecker), contentLengthMiddlewareOptions);\n }\n}), \"getContentLengthPlugin\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n contentLengthMiddleware,\n contentLengthMiddlewareOptions,\n getContentLengthPlugin\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEndpointFromConfig = void 0;\nconst node_config_provider_1 = require(\"@smithy/node-config-provider\");\nconst getEndpointUrlConfig_1 = require(\"./getEndpointUrlConfig\");\nconst getEndpointFromConfig = async (serviceId) => (0, node_config_provider_1.loadConfig)((0, getEndpointUrlConfig_1.getEndpointUrlConfig)(serviceId))();\nexports.getEndpointFromConfig = getEndpointFromConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEndpointUrlConfig = void 0;\nconst shared_ini_file_loader_1 = require(\"@smithy/shared-ini-file-loader\");\nconst ENV_ENDPOINT_URL = \"AWS_ENDPOINT_URL\";\nconst CONFIG_ENDPOINT_URL = \"endpoint_url\";\nconst getEndpointUrlConfig = (serviceId) => ({\n environmentVariableSelector: (env) => {\n const serviceSuffixParts = serviceId.split(\" \").map((w) => w.toUpperCase());\n const serviceEndpointUrl = env[[ENV_ENDPOINT_URL, ...serviceSuffixParts].join(\"_\")];\n if (serviceEndpointUrl)\n return serviceEndpointUrl;\n const endpointUrl = env[ENV_ENDPOINT_URL];\n if (endpointUrl)\n return endpointUrl;\n return undefined;\n },\n configFileSelector: (profile, config) => {\n if (config && profile.services) {\n const servicesSection = config[[\"services\", profile.services].join(shared_ini_file_loader_1.CONFIG_PREFIX_SEPARATOR)];\n if (servicesSection) {\n const servicePrefixParts = serviceId.split(\" \").map((w) => w.toLowerCase());\n const endpointUrl = servicesSection[[servicePrefixParts.join(\"_\"), CONFIG_ENDPOINT_URL].join(shared_ini_file_loader_1.CONFIG_PREFIX_SEPARATOR)];\n if (endpointUrl)\n return endpointUrl;\n }\n }\n const endpointUrl = profile[CONFIG_ENDPOINT_URL];\n if (endpointUrl)\n return endpointUrl;\n return undefined;\n },\n default: undefined,\n});\nexports.getEndpointUrlConfig = getEndpointUrlConfig;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n endpointMiddleware: () => endpointMiddleware,\n endpointMiddlewareOptions: () => endpointMiddlewareOptions,\n getEndpointFromInstructions: () => getEndpointFromInstructions,\n getEndpointPlugin: () => getEndpointPlugin,\n resolveEndpointConfig: () => resolveEndpointConfig,\n resolveParams: () => resolveParams,\n toEndpointV1: () => toEndpointV1\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/service-customizations/s3.ts\nvar resolveParamsForS3 = /* @__PURE__ */ __name(async (endpointParams) => {\n const bucket = (endpointParams == null ? void 0 : endpointParams.Bucket) || \"\";\n if (typeof endpointParams.Bucket === \"string\") {\n endpointParams.Bucket = bucket.replace(/#/g, encodeURIComponent(\"#\")).replace(/\\?/g, encodeURIComponent(\"?\"));\n }\n if (isArnBucketName(bucket)) {\n if (endpointParams.ForcePathStyle === true) {\n throw new Error(\"Path-style addressing cannot be used with ARN buckets\");\n }\n } else if (!isDnsCompatibleBucketName(bucket) || bucket.indexOf(\".\") !== -1 && !String(endpointParams.Endpoint).startsWith(\"http:\") || bucket.toLowerCase() !== bucket || bucket.length < 3) {\n endpointParams.ForcePathStyle = true;\n }\n if (endpointParams.DisableMultiRegionAccessPoints) {\n endpointParams.disableMultiRegionAccessPoints = true;\n endpointParams.DisableMRAP = true;\n }\n return endpointParams;\n}, \"resolveParamsForS3\");\nvar DOMAIN_PATTERN = /^[a-z0-9][a-z0-9\\.\\-]{1,61}[a-z0-9]$/;\nvar IP_ADDRESS_PATTERN = /(\\d+\\.){3}\\d+/;\nvar DOTS_PATTERN = /\\.\\./;\nvar isDnsCompatibleBucketName = /* @__PURE__ */ __name((bucketName) => DOMAIN_PATTERN.test(bucketName) && !IP_ADDRESS_PATTERN.test(bucketName) && !DOTS_PATTERN.test(bucketName), \"isDnsCompatibleBucketName\");\nvar isArnBucketName = /* @__PURE__ */ __name((bucketName) => {\n const [arn, partition, service, , , bucket] = bucketName.split(\":\");\n const isArn = arn === \"arn\" && bucketName.split(\":\").length >= 6;\n const isValidArn = Boolean(isArn && partition && service && bucket);\n if (isArn && !isValidArn) {\n throw new Error(`Invalid ARN: ${bucketName} was an invalid ARN.`);\n }\n return isValidArn;\n}, \"isArnBucketName\");\n\n// src/adaptors/createConfigValueProvider.ts\nvar createConfigValueProvider = /* @__PURE__ */ __name((configKey, canonicalEndpointParamKey, config) => {\n const configProvider = /* @__PURE__ */ __name(async () => {\n const configValue = config[configKey] ?? config[canonicalEndpointParamKey];\n if (typeof configValue === \"function\") {\n return configValue();\n }\n return configValue;\n }, \"configProvider\");\n if (configKey === \"credentialScope\" || canonicalEndpointParamKey === \"CredentialScope\") {\n return async () => {\n const credentials = typeof config.credentials === \"function\" ? await config.credentials() : config.credentials;\n const configValue = (credentials == null ? void 0 : credentials.credentialScope) ?? (credentials == null ? void 0 : credentials.CredentialScope);\n return configValue;\n };\n }\n if (configKey === \"endpoint\" || canonicalEndpointParamKey === \"endpoint\") {\n return async () => {\n const endpoint = await configProvider();\n if (endpoint && typeof endpoint === \"object\") {\n if (\"url\" in endpoint) {\n return endpoint.url.href;\n }\n if (\"hostname\" in endpoint) {\n const { protocol, hostname, port, path } = endpoint;\n return `${protocol}//${hostname}${port ? \":\" + port : \"\"}${path}`;\n }\n }\n return endpoint;\n };\n }\n return configProvider;\n}, \"createConfigValueProvider\");\n\n// src/adaptors/getEndpointFromInstructions.ts\nvar import_getEndpointFromConfig = require(\"./adaptors/getEndpointFromConfig\");\n\n// src/adaptors/toEndpointV1.ts\nvar import_url_parser = require(\"@smithy/url-parser\");\nvar toEndpointV1 = /* @__PURE__ */ __name((endpoint) => {\n if (typeof endpoint === \"object\") {\n if (\"url\" in endpoint) {\n return (0, import_url_parser.parseUrl)(endpoint.url);\n }\n return endpoint;\n }\n return (0, import_url_parser.parseUrl)(endpoint);\n}, \"toEndpointV1\");\n\n// src/adaptors/getEndpointFromInstructions.ts\nvar getEndpointFromInstructions = /* @__PURE__ */ __name(async (commandInput, instructionsSupplier, clientConfig, context) => {\n if (!clientConfig.endpoint) {\n const endpointFromConfig = await (0, import_getEndpointFromConfig.getEndpointFromConfig)(clientConfig.serviceId || \"\");\n if (endpointFromConfig) {\n clientConfig.endpoint = () => Promise.resolve(toEndpointV1(endpointFromConfig));\n }\n }\n const endpointParams = await resolveParams(commandInput, instructionsSupplier, clientConfig);\n if (typeof clientConfig.endpointProvider !== \"function\") {\n throw new Error(\"config.endpointProvider is not set.\");\n }\n const endpoint = clientConfig.endpointProvider(endpointParams, context);\n return endpoint;\n}, \"getEndpointFromInstructions\");\nvar resolveParams = /* @__PURE__ */ __name(async (commandInput, instructionsSupplier, clientConfig) => {\n var _a;\n const endpointParams = {};\n const instructions = ((_a = instructionsSupplier == null ? void 0 : instructionsSupplier.getEndpointParameterInstructions) == null ? void 0 : _a.call(instructionsSupplier)) || {};\n for (const [name, instruction] of Object.entries(instructions)) {\n switch (instruction.type) {\n case \"staticContextParams\":\n endpointParams[name] = instruction.value;\n break;\n case \"contextParams\":\n endpointParams[name] = commandInput[instruction.name];\n break;\n case \"clientContextParams\":\n case \"builtInParams\":\n endpointParams[name] = await createConfigValueProvider(instruction.name, name, clientConfig)();\n break;\n default:\n throw new Error(\"Unrecognized endpoint parameter instruction: \" + JSON.stringify(instruction));\n }\n }\n if (Object.keys(instructions).length === 0) {\n Object.assign(endpointParams, clientConfig);\n }\n if (String(clientConfig.serviceId).toLowerCase() === \"s3\") {\n await resolveParamsForS3(endpointParams);\n }\n return endpointParams;\n}, \"resolveParams\");\n\n// src/endpointMiddleware.ts\nvar import_util_middleware = require(\"@smithy/util-middleware\");\nvar endpointMiddleware = /* @__PURE__ */ __name(({\n config,\n instructions\n}) => {\n return (next, context) => async (args) => {\n var _a, _b, _c;\n const endpoint = await getEndpointFromInstructions(\n args.input,\n {\n getEndpointParameterInstructions() {\n return instructions;\n }\n },\n { ...config },\n context\n );\n context.endpointV2 = endpoint;\n context.authSchemes = (_a = endpoint.properties) == null ? void 0 : _a.authSchemes;\n const authScheme = (_b = context.authSchemes) == null ? void 0 : _b[0];\n if (authScheme) {\n context[\"signing_region\"] = authScheme.signingRegion;\n context[\"signing_service\"] = authScheme.signingName;\n const smithyContext = (0, import_util_middleware.getSmithyContext)(context);\n const httpAuthOption = (_c = smithyContext == null ? void 0 : smithyContext.selectedHttpAuthScheme) == null ? void 0 : _c.httpAuthOption;\n if (httpAuthOption) {\n httpAuthOption.signingProperties = Object.assign(\n httpAuthOption.signingProperties || {},\n {\n signing_region: authScheme.signingRegion,\n signingRegion: authScheme.signingRegion,\n signing_service: authScheme.signingName,\n signingName: authScheme.signingName,\n signingRegionSet: authScheme.signingRegionSet\n },\n authScheme.properties\n );\n }\n }\n return next({\n ...args\n });\n };\n}, \"endpointMiddleware\");\n\n// src/getEndpointPlugin.ts\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\nvar endpointMiddlewareOptions = {\n step: \"serialize\",\n tags: [\"ENDPOINT_PARAMETERS\", \"ENDPOINT_V2\", \"ENDPOINT\"],\n name: \"endpointV2Middleware\",\n override: true,\n relation: \"before\",\n toMiddleware: import_middleware_serde.serializerMiddlewareOption.name\n};\nvar getEndpointPlugin = /* @__PURE__ */ __name((config, instructions) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(\n endpointMiddleware({\n config,\n instructions\n }),\n endpointMiddlewareOptions\n );\n }\n}), \"getEndpointPlugin\");\n\n// src/resolveEndpointConfig.ts\n\nvar resolveEndpointConfig = /* @__PURE__ */ __name((input) => {\n const tls = input.tls ?? true;\n const { endpoint } = input;\n const customEndpointProvider = endpoint != null ? async () => toEndpointV1(await (0, import_util_middleware.normalizeProvider)(endpoint)()) : void 0;\n const isCustomEndpoint = !!endpoint;\n return {\n ...input,\n endpoint: customEndpointProvider,\n tls,\n isCustomEndpoint,\n useDualstackEndpoint: (0, import_util_middleware.normalizeProvider)(input.useDualstackEndpoint ?? false),\n useFipsEndpoint: (0, import_util_middleware.normalizeProvider)(input.useFipsEndpoint ?? false)\n };\n}, \"resolveEndpointConfig\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n getEndpointFromInstructions,\n resolveParams,\n toEndpointV1,\n endpointMiddleware,\n endpointMiddlewareOptions,\n getEndpointPlugin,\n resolveEndpointConfig\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AdaptiveRetryStrategy: () => AdaptiveRetryStrategy,\n CONFIG_MAX_ATTEMPTS: () => CONFIG_MAX_ATTEMPTS,\n CONFIG_RETRY_MODE: () => CONFIG_RETRY_MODE,\n ENV_MAX_ATTEMPTS: () => ENV_MAX_ATTEMPTS,\n ENV_RETRY_MODE: () => ENV_RETRY_MODE,\n NODE_MAX_ATTEMPT_CONFIG_OPTIONS: () => NODE_MAX_ATTEMPT_CONFIG_OPTIONS,\n NODE_RETRY_MODE_CONFIG_OPTIONS: () => NODE_RETRY_MODE_CONFIG_OPTIONS,\n StandardRetryStrategy: () => StandardRetryStrategy,\n defaultDelayDecider: () => defaultDelayDecider,\n defaultRetryDecider: () => defaultRetryDecider,\n getOmitRetryHeadersPlugin: () => getOmitRetryHeadersPlugin,\n getRetryAfterHint: () => getRetryAfterHint,\n getRetryPlugin: () => getRetryPlugin,\n omitRetryHeadersMiddleware: () => omitRetryHeadersMiddleware,\n omitRetryHeadersMiddlewareOptions: () => omitRetryHeadersMiddlewareOptions,\n resolveRetryConfig: () => resolveRetryConfig,\n retryMiddleware: () => retryMiddleware,\n retryMiddlewareOptions: () => retryMiddlewareOptions\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/AdaptiveRetryStrategy.ts\n\n\n// src/StandardRetryStrategy.ts\nvar import_protocol_http = require(\"@smithy/protocol-http\");\n\n\nvar import_uuid = require(\"uuid\");\n\n// src/defaultRetryQuota.ts\nvar import_util_retry = require(\"@smithy/util-retry\");\nvar getDefaultRetryQuota = /* @__PURE__ */ __name((initialRetryTokens, options) => {\n const MAX_CAPACITY = initialRetryTokens;\n const noRetryIncrement = (options == null ? void 0 : options.noRetryIncrement) ?? import_util_retry.NO_RETRY_INCREMENT;\n const retryCost = (options == null ? void 0 : options.retryCost) ?? import_util_retry.RETRY_COST;\n const timeoutRetryCost = (options == null ? void 0 : options.timeoutRetryCost) ?? import_util_retry.TIMEOUT_RETRY_COST;\n let availableCapacity = initialRetryTokens;\n const getCapacityAmount = /* @__PURE__ */ __name((error) => error.name === \"TimeoutError\" ? timeoutRetryCost : retryCost, \"getCapacityAmount\");\n const hasRetryTokens = /* @__PURE__ */ __name((error) => getCapacityAmount(error) <= availableCapacity, \"hasRetryTokens\");\n const retrieveRetryTokens = /* @__PURE__ */ __name((error) => {\n if (!hasRetryTokens(error)) {\n throw new Error(\"No retry token available\");\n }\n const capacityAmount = getCapacityAmount(error);\n availableCapacity -= capacityAmount;\n return capacityAmount;\n }, \"retrieveRetryTokens\");\n const releaseRetryTokens = /* @__PURE__ */ __name((capacityReleaseAmount) => {\n availableCapacity += capacityReleaseAmount ?? noRetryIncrement;\n availableCapacity = Math.min(availableCapacity, MAX_CAPACITY);\n }, \"releaseRetryTokens\");\n return Object.freeze({\n hasRetryTokens,\n retrieveRetryTokens,\n releaseRetryTokens\n });\n}, \"getDefaultRetryQuota\");\n\n// src/delayDecider.ts\n\nvar defaultDelayDecider = /* @__PURE__ */ __name((delayBase, attempts) => Math.floor(Math.min(import_util_retry.MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase)), \"defaultDelayDecider\");\n\n// src/retryDecider.ts\nvar import_service_error_classification = require(\"@smithy/service-error-classification\");\nvar defaultRetryDecider = /* @__PURE__ */ __name((error) => {\n if (!error) {\n return false;\n }\n return (0, import_service_error_classification.isRetryableByTrait)(error) || (0, import_service_error_classification.isClockSkewError)(error) || (0, import_service_error_classification.isThrottlingError)(error) || (0, import_service_error_classification.isTransientError)(error);\n}, \"defaultRetryDecider\");\n\n// src/util.ts\nvar asSdkError = /* @__PURE__ */ __name((error) => {\n if (error instanceof Error)\n return error;\n if (error instanceof Object)\n return Object.assign(new Error(), error);\n if (typeof error === \"string\")\n return new Error(error);\n return new Error(`AWS SDK error wrapper for ${error}`);\n}, \"asSdkError\");\n\n// src/StandardRetryStrategy.ts\nvar _StandardRetryStrategy = class _StandardRetryStrategy {\n constructor(maxAttemptsProvider, options) {\n this.maxAttemptsProvider = maxAttemptsProvider;\n this.mode = import_util_retry.RETRY_MODES.STANDARD;\n this.retryDecider = (options == null ? void 0 : options.retryDecider) ?? defaultRetryDecider;\n this.delayDecider = (options == null ? void 0 : options.delayDecider) ?? defaultDelayDecider;\n this.retryQuota = (options == null ? void 0 : options.retryQuota) ?? getDefaultRetryQuota(import_util_retry.INITIAL_RETRY_TOKENS);\n }\n shouldRetry(error, attempts, maxAttempts) {\n return attempts < maxAttempts && this.retryDecider(error) && this.retryQuota.hasRetryTokens(error);\n }\n async getMaxAttempts() {\n let maxAttempts;\n try {\n maxAttempts = await this.maxAttemptsProvider();\n } catch (error) {\n maxAttempts = import_util_retry.DEFAULT_MAX_ATTEMPTS;\n }\n return maxAttempts;\n }\n async retry(next, args, options) {\n let retryTokenAmount;\n let attempts = 0;\n let totalDelay = 0;\n const maxAttempts = await this.getMaxAttempts();\n const { request } = args;\n if (import_protocol_http.HttpRequest.isInstance(request)) {\n request.headers[import_util_retry.INVOCATION_ID_HEADER] = (0, import_uuid.v4)();\n }\n while (true) {\n try {\n if (import_protocol_http.HttpRequest.isInstance(request)) {\n request.headers[import_util_retry.REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`;\n }\n if (options == null ? void 0 : options.beforeRequest) {\n await options.beforeRequest();\n }\n const { response, output } = await next(args);\n if (options == null ? void 0 : options.afterRequest) {\n options.afterRequest(response);\n }\n this.retryQuota.releaseRetryTokens(retryTokenAmount);\n output.$metadata.attempts = attempts + 1;\n output.$metadata.totalRetryDelay = totalDelay;\n return { response, output };\n } catch (e) {\n const err = asSdkError(e);\n attempts++;\n if (this.shouldRetry(err, attempts, maxAttempts)) {\n retryTokenAmount = this.retryQuota.retrieveRetryTokens(err);\n const delayFromDecider = this.delayDecider(\n (0, import_service_error_classification.isThrottlingError)(err) ? import_util_retry.THROTTLING_RETRY_DELAY_BASE : import_util_retry.DEFAULT_RETRY_DELAY_BASE,\n attempts\n );\n const delayFromResponse = getDelayFromRetryAfterHeader(err.$response);\n const delay = Math.max(delayFromResponse || 0, delayFromDecider);\n totalDelay += delay;\n await new Promise((resolve) => setTimeout(resolve, delay));\n continue;\n }\n if (!err.$metadata) {\n err.$metadata = {};\n }\n err.$metadata.attempts = attempts;\n err.$metadata.totalRetryDelay = totalDelay;\n throw err;\n }\n }\n }\n};\n__name(_StandardRetryStrategy, \"StandardRetryStrategy\");\nvar StandardRetryStrategy = _StandardRetryStrategy;\nvar getDelayFromRetryAfterHeader = /* @__PURE__ */ __name((response) => {\n if (!import_protocol_http.HttpResponse.isInstance(response))\n return;\n const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === \"retry-after\");\n if (!retryAfterHeaderName)\n return;\n const retryAfter = response.headers[retryAfterHeaderName];\n const retryAfterSeconds = Number(retryAfter);\n if (!Number.isNaN(retryAfterSeconds))\n return retryAfterSeconds * 1e3;\n const retryAfterDate = new Date(retryAfter);\n return retryAfterDate.getTime() - Date.now();\n}, \"getDelayFromRetryAfterHeader\");\n\n// src/AdaptiveRetryStrategy.ts\nvar _AdaptiveRetryStrategy = class _AdaptiveRetryStrategy extends StandardRetryStrategy {\n constructor(maxAttemptsProvider, options) {\n const { rateLimiter, ...superOptions } = options ?? {};\n super(maxAttemptsProvider, superOptions);\n this.rateLimiter = rateLimiter ?? new import_util_retry.DefaultRateLimiter();\n this.mode = import_util_retry.RETRY_MODES.ADAPTIVE;\n }\n async retry(next, args) {\n return super.retry(next, args, {\n beforeRequest: async () => {\n return this.rateLimiter.getSendToken();\n },\n afterRequest: (response) => {\n this.rateLimiter.updateClientSendingRate(response);\n }\n });\n }\n};\n__name(_AdaptiveRetryStrategy, \"AdaptiveRetryStrategy\");\nvar AdaptiveRetryStrategy = _AdaptiveRetryStrategy;\n\n// src/configurations.ts\nvar import_util_middleware = require(\"@smithy/util-middleware\");\n\nvar ENV_MAX_ATTEMPTS = \"AWS_MAX_ATTEMPTS\";\nvar CONFIG_MAX_ATTEMPTS = \"max_attempts\";\nvar NODE_MAX_ATTEMPT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => {\n const value = env[ENV_MAX_ATTEMPTS];\n if (!value)\n return void 0;\n const maxAttempt = parseInt(value);\n if (Number.isNaN(maxAttempt)) {\n throw new Error(`Environment variable ${ENV_MAX_ATTEMPTS} mast be a number, got \"${value}\"`);\n }\n return maxAttempt;\n },\n configFileSelector: (profile) => {\n const value = profile[CONFIG_MAX_ATTEMPTS];\n if (!value)\n return void 0;\n const maxAttempt = parseInt(value);\n if (Number.isNaN(maxAttempt)) {\n throw new Error(`Shared config file entry ${CONFIG_MAX_ATTEMPTS} mast be a number, got \"${value}\"`);\n }\n return maxAttempt;\n },\n default: import_util_retry.DEFAULT_MAX_ATTEMPTS\n};\nvar resolveRetryConfig = /* @__PURE__ */ __name((input) => {\n const { retryStrategy } = input;\n const maxAttempts = (0, import_util_middleware.normalizeProvider)(input.maxAttempts ?? import_util_retry.DEFAULT_MAX_ATTEMPTS);\n return {\n ...input,\n maxAttempts,\n retryStrategy: async () => {\n if (retryStrategy) {\n return retryStrategy;\n }\n const retryMode = await (0, import_util_middleware.normalizeProvider)(input.retryMode)();\n if (retryMode === import_util_retry.RETRY_MODES.ADAPTIVE) {\n return new import_util_retry.AdaptiveRetryStrategy(maxAttempts);\n }\n return new import_util_retry.StandardRetryStrategy(maxAttempts);\n }\n };\n}, \"resolveRetryConfig\");\nvar ENV_RETRY_MODE = \"AWS_RETRY_MODE\";\nvar CONFIG_RETRY_MODE = \"retry_mode\";\nvar NODE_RETRY_MODE_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[ENV_RETRY_MODE],\n configFileSelector: (profile) => profile[CONFIG_RETRY_MODE],\n default: import_util_retry.DEFAULT_RETRY_MODE\n};\n\n// src/omitRetryHeadersMiddleware.ts\n\n\nvar omitRetryHeadersMiddleware = /* @__PURE__ */ __name(() => (next) => async (args) => {\n const { request } = args;\n if (import_protocol_http.HttpRequest.isInstance(request)) {\n delete request.headers[import_util_retry.INVOCATION_ID_HEADER];\n delete request.headers[import_util_retry.REQUEST_HEADER];\n }\n return next(args);\n}, \"omitRetryHeadersMiddleware\");\nvar omitRetryHeadersMiddlewareOptions = {\n name: \"omitRetryHeadersMiddleware\",\n tags: [\"RETRY\", \"HEADERS\", \"OMIT_RETRY_HEADERS\"],\n relation: \"before\",\n toMiddleware: \"awsAuthMiddleware\",\n override: true\n};\nvar getOmitRetryHeadersPlugin = /* @__PURE__ */ __name((options) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(omitRetryHeadersMiddleware(), omitRetryHeadersMiddlewareOptions);\n }\n}), \"getOmitRetryHeadersPlugin\");\n\n// src/retryMiddleware.ts\n\n\nvar import_smithy_client = require(\"@smithy/smithy-client\");\n\n\nvar import_isStreamingPayload = require(\"./isStreamingPayload/isStreamingPayload\");\nvar retryMiddleware = /* @__PURE__ */ __name((options) => (next, context) => async (args) => {\n var _a;\n let retryStrategy = await options.retryStrategy();\n const maxAttempts = await options.maxAttempts();\n if (isRetryStrategyV2(retryStrategy)) {\n retryStrategy = retryStrategy;\n let retryToken = await retryStrategy.acquireInitialRetryToken(context[\"partition_id\"]);\n let lastError = new Error();\n let attempts = 0;\n let totalRetryDelay = 0;\n const { request } = args;\n const isRequest = import_protocol_http.HttpRequest.isInstance(request);\n if (isRequest) {\n request.headers[import_util_retry.INVOCATION_ID_HEADER] = (0, import_uuid.v4)();\n }\n while (true) {\n try {\n if (isRequest) {\n request.headers[import_util_retry.REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`;\n }\n const { response, output } = await next(args);\n retryStrategy.recordSuccess(retryToken);\n output.$metadata.attempts = attempts + 1;\n output.$metadata.totalRetryDelay = totalRetryDelay;\n return { response, output };\n } catch (e) {\n const retryErrorInfo = getRetryErrorInfo(e);\n lastError = asSdkError(e);\n if (isRequest && (0, import_isStreamingPayload.isStreamingPayload)(request)) {\n (_a = context.logger instanceof import_smithy_client.NoOpLogger ? console : context.logger) == null ? void 0 : _a.warn(\n \"An error was encountered in a non-retryable streaming request.\"\n );\n throw lastError;\n }\n try {\n retryToken = await retryStrategy.refreshRetryTokenForRetry(retryToken, retryErrorInfo);\n } catch (refreshError) {\n if (!lastError.$metadata) {\n lastError.$metadata = {};\n }\n lastError.$metadata.attempts = attempts + 1;\n lastError.$metadata.totalRetryDelay = totalRetryDelay;\n throw lastError;\n }\n attempts = retryToken.getRetryCount();\n const delay = retryToken.getRetryDelay();\n totalRetryDelay += delay;\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n }\n } else {\n retryStrategy = retryStrategy;\n if (retryStrategy == null ? void 0 : retryStrategy.mode)\n context.userAgent = [...context.userAgent || [], [\"cfg/retry-mode\", retryStrategy.mode]];\n return retryStrategy.retry(next, args);\n }\n}, \"retryMiddleware\");\nvar isRetryStrategyV2 = /* @__PURE__ */ __name((retryStrategy) => typeof retryStrategy.acquireInitialRetryToken !== \"undefined\" && typeof retryStrategy.refreshRetryTokenForRetry !== \"undefined\" && typeof retryStrategy.recordSuccess !== \"undefined\", \"isRetryStrategyV2\");\nvar getRetryErrorInfo = /* @__PURE__ */ __name((error) => {\n const errorInfo = {\n error,\n errorType: getRetryErrorType(error)\n };\n const retryAfterHint = getRetryAfterHint(error.$response);\n if (retryAfterHint) {\n errorInfo.retryAfterHint = retryAfterHint;\n }\n return errorInfo;\n}, \"getRetryErrorInfo\");\nvar getRetryErrorType = /* @__PURE__ */ __name((error) => {\n if ((0, import_service_error_classification.isThrottlingError)(error))\n return \"THROTTLING\";\n if ((0, import_service_error_classification.isTransientError)(error))\n return \"TRANSIENT\";\n if ((0, import_service_error_classification.isServerError)(error))\n return \"SERVER_ERROR\";\n return \"CLIENT_ERROR\";\n}, \"getRetryErrorType\");\nvar retryMiddlewareOptions = {\n name: \"retryMiddleware\",\n tags: [\"RETRY\"],\n step: \"finalizeRequest\",\n priority: \"high\",\n override: true\n};\nvar getRetryPlugin = /* @__PURE__ */ __name((options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(retryMiddleware(options), retryMiddlewareOptions);\n }\n}), \"getRetryPlugin\");\nvar getRetryAfterHint = /* @__PURE__ */ __name((response) => {\n if (!import_protocol_http.HttpResponse.isInstance(response))\n return;\n const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === \"retry-after\");\n if (!retryAfterHeaderName)\n return;\n const retryAfter = response.headers[retryAfterHeaderName];\n const retryAfterSeconds = Number(retryAfter);\n if (!Number.isNaN(retryAfterSeconds))\n return new Date(retryAfterSeconds * 1e3);\n const retryAfterDate = new Date(retryAfter);\n return retryAfterDate;\n}, \"getRetryAfterHint\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n AdaptiveRetryStrategy,\n StandardRetryStrategy,\n ENV_MAX_ATTEMPTS,\n CONFIG_MAX_ATTEMPTS,\n NODE_MAX_ATTEMPT_CONFIG_OPTIONS,\n resolveRetryConfig,\n ENV_RETRY_MODE,\n CONFIG_RETRY_MODE,\n NODE_RETRY_MODE_CONFIG_OPTIONS,\n defaultDelayDecider,\n omitRetryHeadersMiddleware,\n omitRetryHeadersMiddlewareOptions,\n getOmitRetryHeadersPlugin,\n defaultRetryDecider,\n retryMiddleware,\n retryMiddlewareOptions,\n getRetryPlugin,\n getRetryAfterHint\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isStreamingPayload = void 0;\nconst stream_1 = require(\"stream\");\nconst isStreamingPayload = (request) => (request === null || request === void 0 ? void 0 : request.body) instanceof stream_1.Readable ||\n (typeof ReadableStream !== \"undefined\" && (request === null || request === void 0 ? void 0 : request.body) instanceof ReadableStream);\nexports.isStreamingPayload = isStreamingPayload;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function () {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function () {\n return _parse.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function () {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function () {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function () {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function () {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function () {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function () {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function () {\n return _version.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction md5(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('md5').update(bytes).digest();\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n randomUUID: _crypto.default.randomUUID\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\n\nfunction rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n _crypto.default.randomFillSync(rnds8Pool);\n\n poolPtr = 0;\n }\n\n return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction sha1(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('sha1').update(bytes).digest();\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nexports.unsafeStringify = unsafeStringify;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nfunction unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.unsafeStringify)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.URL = exports.DNS = void 0;\nexports.default = v35;\n\nvar _stringify = require(\"./stringify.js\");\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _native = _interopRequireDefault(require(\"./native.js\"));\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n if (_native.default.randomUUID && !buf && !options) {\n return _native.default.randomUUID();\n }\n\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.slice(14, 15), 16);\n}\n\nvar _default = version;\nexports.default = _default;","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n deserializerMiddleware: () => deserializerMiddleware,\n deserializerMiddlewareOption: () => deserializerMiddlewareOption,\n getSerdePlugin: () => getSerdePlugin,\n serializerMiddleware: () => serializerMiddleware,\n serializerMiddlewareOption: () => serializerMiddlewareOption\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/deserializerMiddleware.ts\nvar deserializerMiddleware = /* @__PURE__ */ __name((options, deserializer) => (next, context) => async (args) => {\n const { response } = await next(args);\n try {\n const parsed = await deserializer(response, options);\n return {\n response,\n output: parsed\n };\n } catch (error) {\n Object.defineProperty(error, \"$response\", {\n value: response\n });\n if (!(\"$metadata\" in error)) {\n const hint = `Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`;\n error.message += \"\\n \" + hint;\n if (typeof error.$responseBodyText !== \"undefined\") {\n if (error.$response) {\n error.$response.body = error.$responseBodyText;\n }\n }\n }\n throw error;\n }\n}, \"deserializerMiddleware\");\n\n// src/serializerMiddleware.ts\nvar serializerMiddleware = /* @__PURE__ */ __name((options, serializer) => (next, context) => async (args) => {\n var _a;\n const endpoint = ((_a = context.endpointV2) == null ? void 0 : _a.url) && options.urlParser ? async () => options.urlParser(context.endpointV2.url) : options.endpoint;\n if (!endpoint) {\n throw new Error(\"No valid endpoint provider available.\");\n }\n const request = await serializer(args.input, { ...options, endpoint });\n return next({\n ...args,\n request\n });\n}, \"serializerMiddleware\");\n\n// src/serdePlugin.ts\nvar deserializerMiddlewareOption = {\n name: \"deserializerMiddleware\",\n step: \"deserialize\",\n tags: [\"DESERIALIZER\"],\n override: true\n};\nvar serializerMiddlewareOption = {\n name: \"serializerMiddleware\",\n step: \"serialize\",\n tags: [\"SERIALIZER\"],\n override: true\n};\nfunction getSerdePlugin(config, serializer, deserializer) {\n return {\n applyToStack: (commandStack) => {\n commandStack.add(deserializerMiddleware(config, deserializer), deserializerMiddlewareOption);\n commandStack.add(serializerMiddleware(config, serializer), serializerMiddlewareOption);\n }\n };\n}\n__name(getSerdePlugin, \"getSerdePlugin\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n deserializerMiddleware,\n deserializerMiddlewareOption,\n serializerMiddlewareOption,\n getSerdePlugin,\n serializerMiddleware\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n constructStack: () => constructStack\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/MiddlewareStack.ts\nvar getAllAliases = /* @__PURE__ */ __name((name, aliases) => {\n const _aliases = [];\n if (name) {\n _aliases.push(name);\n }\n if (aliases) {\n for (const alias of aliases) {\n _aliases.push(alias);\n }\n }\n return _aliases;\n}, \"getAllAliases\");\nvar getMiddlewareNameWithAliases = /* @__PURE__ */ __name((name, aliases) => {\n return `${name || \"anonymous\"}${aliases && aliases.length > 0 ? ` (a.k.a. ${aliases.join(\",\")})` : \"\"}`;\n}, \"getMiddlewareNameWithAliases\");\nvar constructStack = /* @__PURE__ */ __name(() => {\n let absoluteEntries = [];\n let relativeEntries = [];\n let identifyOnResolve = false;\n const entriesNameSet = /* @__PURE__ */ new Set();\n const sort = /* @__PURE__ */ __name((entries) => entries.sort(\n (a, b) => stepWeights[b.step] - stepWeights[a.step] || priorityWeights[b.priority || \"normal\"] - priorityWeights[a.priority || \"normal\"]\n ), \"sort\");\n const removeByName = /* @__PURE__ */ __name((toRemove) => {\n let isRemoved = false;\n const filterCb = /* @__PURE__ */ __name((entry) => {\n const aliases = getAllAliases(entry.name, entry.aliases);\n if (aliases.includes(toRemove)) {\n isRemoved = true;\n for (const alias of aliases) {\n entriesNameSet.delete(alias);\n }\n return false;\n }\n return true;\n }, \"filterCb\");\n absoluteEntries = absoluteEntries.filter(filterCb);\n relativeEntries = relativeEntries.filter(filterCb);\n return isRemoved;\n }, \"removeByName\");\n const removeByReference = /* @__PURE__ */ __name((toRemove) => {\n let isRemoved = false;\n const filterCb = /* @__PURE__ */ __name((entry) => {\n if (entry.middleware === toRemove) {\n isRemoved = true;\n for (const alias of getAllAliases(entry.name, entry.aliases)) {\n entriesNameSet.delete(alias);\n }\n return false;\n }\n return true;\n }, \"filterCb\");\n absoluteEntries = absoluteEntries.filter(filterCb);\n relativeEntries = relativeEntries.filter(filterCb);\n return isRemoved;\n }, \"removeByReference\");\n const cloneTo = /* @__PURE__ */ __name((toStack) => {\n var _a;\n absoluteEntries.forEach((entry) => {\n toStack.add(entry.middleware, { ...entry });\n });\n relativeEntries.forEach((entry) => {\n toStack.addRelativeTo(entry.middleware, { ...entry });\n });\n (_a = toStack.identifyOnResolve) == null ? void 0 : _a.call(toStack, stack.identifyOnResolve());\n return toStack;\n }, \"cloneTo\");\n const expandRelativeMiddlewareList = /* @__PURE__ */ __name((from) => {\n const expandedMiddlewareList = [];\n from.before.forEach((entry) => {\n if (entry.before.length === 0 && entry.after.length === 0) {\n expandedMiddlewareList.push(entry);\n } else {\n expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry));\n }\n });\n expandedMiddlewareList.push(from);\n from.after.reverse().forEach((entry) => {\n if (entry.before.length === 0 && entry.after.length === 0) {\n expandedMiddlewareList.push(entry);\n } else {\n expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry));\n }\n });\n return expandedMiddlewareList;\n }, \"expandRelativeMiddlewareList\");\n const getMiddlewareList = /* @__PURE__ */ __name((debug = false) => {\n const normalizedAbsoluteEntries = [];\n const normalizedRelativeEntries = [];\n const normalizedEntriesNameMap = {};\n absoluteEntries.forEach((entry) => {\n const normalizedEntry = {\n ...entry,\n before: [],\n after: []\n };\n for (const alias of getAllAliases(normalizedEntry.name, normalizedEntry.aliases)) {\n normalizedEntriesNameMap[alias] = normalizedEntry;\n }\n normalizedAbsoluteEntries.push(normalizedEntry);\n });\n relativeEntries.forEach((entry) => {\n const normalizedEntry = {\n ...entry,\n before: [],\n after: []\n };\n for (const alias of getAllAliases(normalizedEntry.name, normalizedEntry.aliases)) {\n normalizedEntriesNameMap[alias] = normalizedEntry;\n }\n normalizedRelativeEntries.push(normalizedEntry);\n });\n normalizedRelativeEntries.forEach((entry) => {\n if (entry.toMiddleware) {\n const toMiddleware = normalizedEntriesNameMap[entry.toMiddleware];\n if (toMiddleware === void 0) {\n if (debug) {\n return;\n }\n throw new Error(\n `${entry.toMiddleware} is not found when adding ${getMiddlewareNameWithAliases(entry.name, entry.aliases)} middleware ${entry.relation} ${entry.toMiddleware}`\n );\n }\n if (entry.relation === \"after\") {\n toMiddleware.after.push(entry);\n }\n if (entry.relation === \"before\") {\n toMiddleware.before.push(entry);\n }\n }\n });\n const mainChain = sort(normalizedAbsoluteEntries).map(expandRelativeMiddlewareList).reduce((wholeList, expandedMiddlewareList) => {\n wholeList.push(...expandedMiddlewareList);\n return wholeList;\n }, []);\n return mainChain;\n }, \"getMiddlewareList\");\n const stack = {\n add: (middleware, options = {}) => {\n const { name, override, aliases: _aliases } = options;\n const entry = {\n step: \"initialize\",\n priority: \"normal\",\n middleware,\n ...options\n };\n const aliases = getAllAliases(name, _aliases);\n if (aliases.length > 0) {\n if (aliases.some((alias) => entriesNameSet.has(alias))) {\n if (!override)\n throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name, _aliases)}'`);\n for (const alias of aliases) {\n const toOverrideIndex = absoluteEntries.findIndex(\n (entry2) => {\n var _a;\n return entry2.name === alias || ((_a = entry2.aliases) == null ? void 0 : _a.some((a) => a === alias));\n }\n );\n if (toOverrideIndex === -1) {\n continue;\n }\n const toOverride = absoluteEntries[toOverrideIndex];\n if (toOverride.step !== entry.step || entry.priority !== toOverride.priority) {\n throw new Error(\n `\"${getMiddlewareNameWithAliases(toOverride.name, toOverride.aliases)}\" middleware with ${toOverride.priority} priority in ${toOverride.step} step cannot be overridden by \"${getMiddlewareNameWithAliases(name, _aliases)}\" middleware with ${entry.priority} priority in ${entry.step} step.`\n );\n }\n absoluteEntries.splice(toOverrideIndex, 1);\n }\n }\n for (const alias of aliases) {\n entriesNameSet.add(alias);\n }\n }\n absoluteEntries.push(entry);\n },\n addRelativeTo: (middleware, options) => {\n const { name, override, aliases: _aliases } = options;\n const entry = {\n middleware,\n ...options\n };\n const aliases = getAllAliases(name, _aliases);\n if (aliases.length > 0) {\n if (aliases.some((alias) => entriesNameSet.has(alias))) {\n if (!override)\n throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name, _aliases)}'`);\n for (const alias of aliases) {\n const toOverrideIndex = relativeEntries.findIndex(\n (entry2) => {\n var _a;\n return entry2.name === alias || ((_a = entry2.aliases) == null ? void 0 : _a.some((a) => a === alias));\n }\n );\n if (toOverrideIndex === -1) {\n continue;\n }\n const toOverride = relativeEntries[toOverrideIndex];\n if (toOverride.toMiddleware !== entry.toMiddleware || toOverride.relation !== entry.relation) {\n throw new Error(\n `\"${getMiddlewareNameWithAliases(toOverride.name, toOverride.aliases)}\" middleware ${toOverride.relation} \"${toOverride.toMiddleware}\" middleware cannot be overridden by \"${getMiddlewareNameWithAliases(name, _aliases)}\" middleware ${entry.relation} \"${entry.toMiddleware}\" middleware.`\n );\n }\n relativeEntries.splice(toOverrideIndex, 1);\n }\n }\n for (const alias of aliases) {\n entriesNameSet.add(alias);\n }\n }\n relativeEntries.push(entry);\n },\n clone: () => cloneTo(constructStack()),\n use: (plugin) => {\n plugin.applyToStack(stack);\n },\n remove: (toRemove) => {\n if (typeof toRemove === \"string\")\n return removeByName(toRemove);\n else\n return removeByReference(toRemove);\n },\n removeByTag: (toRemove) => {\n let isRemoved = false;\n const filterCb = /* @__PURE__ */ __name((entry) => {\n const { tags, name, aliases: _aliases } = entry;\n if (tags && tags.includes(toRemove)) {\n const aliases = getAllAliases(name, _aliases);\n for (const alias of aliases) {\n entriesNameSet.delete(alias);\n }\n isRemoved = true;\n return false;\n }\n return true;\n }, \"filterCb\");\n absoluteEntries = absoluteEntries.filter(filterCb);\n relativeEntries = relativeEntries.filter(filterCb);\n return isRemoved;\n },\n concat: (from) => {\n var _a;\n const cloned = cloneTo(constructStack());\n cloned.use(from);\n cloned.identifyOnResolve(\n identifyOnResolve || cloned.identifyOnResolve() || (((_a = from.identifyOnResolve) == null ? void 0 : _a.call(from)) ?? false)\n );\n return cloned;\n },\n applyToStack: cloneTo,\n identify: () => {\n return getMiddlewareList(true).map((mw) => {\n const step = mw.step ?? mw.relation + \" \" + mw.toMiddleware;\n return getMiddlewareNameWithAliases(mw.name, mw.aliases) + \" - \" + step;\n });\n },\n identifyOnResolve(toggle) {\n if (typeof toggle === \"boolean\")\n identifyOnResolve = toggle;\n return identifyOnResolve;\n },\n resolve: (handler, context) => {\n for (const middleware of getMiddlewareList().map((entry) => entry.middleware).reverse()) {\n handler = middleware(handler, context);\n }\n if (identifyOnResolve) {\n console.log(stack.identify());\n }\n return handler;\n }\n };\n return stack;\n}, \"constructStack\");\nvar stepWeights = {\n initialize: 5,\n serialize: 4,\n build: 3,\n finalizeRequest: 2,\n deserialize: 1\n};\nvar priorityWeights = {\n high: 3,\n normal: 2,\n low: 1\n};\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n constructStack\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n loadConfig: () => loadConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/configLoader.ts\n\n\n// src/fromEnv.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar fromEnv = /* @__PURE__ */ __name((envVarSelector) => async () => {\n try {\n const config = envVarSelector(process.env);\n if (config === void 0) {\n throw new Error();\n }\n return config;\n } catch (e) {\n throw new import_property_provider.CredentialsProviderError(\n e.message || `Cannot load config from environment variables with getter: ${envVarSelector}`\n );\n }\n}, \"fromEnv\");\n\n// src/fromSharedConfigFiles.ts\n\nvar import_shared_ini_file_loader = require(\"@smithy/shared-ini-file-loader\");\nvar fromSharedConfigFiles = /* @__PURE__ */ __name((configSelector, { preferredFile = \"config\", ...init } = {}) => async () => {\n const profile = (0, import_shared_ini_file_loader.getProfileName)(init);\n const { configFile, credentialsFile } = await (0, import_shared_ini_file_loader.loadSharedConfigFiles)(init);\n const profileFromCredentials = credentialsFile[profile] || {};\n const profileFromConfig = configFile[profile] || {};\n const mergedProfile = preferredFile === \"config\" ? { ...profileFromCredentials, ...profileFromConfig } : { ...profileFromConfig, ...profileFromCredentials };\n try {\n const cfgFile = preferredFile === \"config\" ? configFile : credentialsFile;\n const configValue = configSelector(mergedProfile, cfgFile);\n if (configValue === void 0) {\n throw new Error();\n }\n return configValue;\n } catch (e) {\n throw new import_property_provider.CredentialsProviderError(\n e.message || `Cannot load config for profile ${profile} in SDK configuration files with getter: ${configSelector}`\n );\n }\n}, \"fromSharedConfigFiles\");\n\n// src/fromStatic.ts\n\nvar isFunction = /* @__PURE__ */ __name((func) => typeof func === \"function\", \"isFunction\");\nvar fromStatic = /* @__PURE__ */ __name((defaultValue) => isFunction(defaultValue) ? async () => await defaultValue() : (0, import_property_provider.fromStatic)(defaultValue), \"fromStatic\");\n\n// src/configLoader.ts\nvar loadConfig = /* @__PURE__ */ __name(({ environmentVariableSelector, configFileSelector, default: defaultValue }, configuration = {}) => (0, import_property_provider.memoize)(\n (0, import_property_provider.chain)(\n fromEnv(environmentVariableSelector),\n fromSharedConfigFiles(configFileSelector, configuration),\n fromStatic(defaultValue)\n )\n), \"loadConfig\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n loadConfig\n});\n\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n DEFAULT_REQUEST_TIMEOUT: () => DEFAULT_REQUEST_TIMEOUT,\n NodeHttp2Handler: () => NodeHttp2Handler,\n NodeHttpHandler: () => NodeHttpHandler,\n streamCollector: () => streamCollector\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/node-http-handler.ts\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar import_querystring_builder = require(\"@smithy/querystring-builder\");\nvar import_http = require(\"http\");\nvar import_https = require(\"https\");\n\n// src/constants.ts\nvar NODEJS_TIMEOUT_ERROR_CODES = [\"ECONNRESET\", \"EPIPE\", \"ETIMEDOUT\"];\n\n// src/get-transformed-headers.ts\nvar getTransformedHeaders = /* @__PURE__ */ __name((headers) => {\n const transformedHeaders = {};\n for (const name of Object.keys(headers)) {\n const headerValues = headers[name];\n transformedHeaders[name] = Array.isArray(headerValues) ? headerValues.join(\",\") : headerValues;\n }\n return transformedHeaders;\n}, \"getTransformedHeaders\");\n\n// src/set-connection-timeout.ts\nvar setConnectionTimeout = /* @__PURE__ */ __name((request, reject, timeoutInMs = 0) => {\n if (!timeoutInMs) {\n return;\n }\n const timeoutId = setTimeout(() => {\n request.destroy();\n reject(\n Object.assign(new Error(`Socket timed out without establishing a connection within ${timeoutInMs} ms`), {\n name: \"TimeoutError\"\n })\n );\n }, timeoutInMs);\n request.on(\"socket\", (socket) => {\n if (socket.connecting) {\n socket.on(\"connect\", () => {\n clearTimeout(timeoutId);\n });\n } else {\n clearTimeout(timeoutId);\n }\n });\n}, \"setConnectionTimeout\");\n\n// src/set-socket-keep-alive.ts\nvar setSocketKeepAlive = /* @__PURE__ */ __name((request, { keepAlive, keepAliveMsecs }) => {\n if (keepAlive !== true) {\n return;\n }\n request.on(\"socket\", (socket) => {\n socket.setKeepAlive(keepAlive, keepAliveMsecs || 0);\n });\n}, \"setSocketKeepAlive\");\n\n// src/set-socket-timeout.ts\nvar setSocketTimeout = /* @__PURE__ */ __name((request, reject, timeoutInMs = 0) => {\n request.setTimeout(timeoutInMs, () => {\n request.destroy();\n reject(Object.assign(new Error(`Connection timed out after ${timeoutInMs} ms`), { name: \"TimeoutError\" }));\n });\n}, \"setSocketTimeout\");\n\n// src/write-request-body.ts\nvar import_stream = require(\"stream\");\nvar MIN_WAIT_TIME = 1e3;\nasync function writeRequestBody(httpRequest, request, maxContinueTimeoutMs = MIN_WAIT_TIME) {\n const headers = request.headers ?? {};\n const expect = headers[\"Expect\"] || headers[\"expect\"];\n let timeoutId = -1;\n let hasError = false;\n if (expect === \"100-continue\") {\n await Promise.race([\n new Promise((resolve) => {\n timeoutId = Number(setTimeout(resolve, Math.max(MIN_WAIT_TIME, maxContinueTimeoutMs)));\n }),\n new Promise((resolve) => {\n httpRequest.on(\"continue\", () => {\n clearTimeout(timeoutId);\n resolve();\n });\n httpRequest.on(\"error\", () => {\n hasError = true;\n clearTimeout(timeoutId);\n resolve();\n });\n })\n ]);\n }\n if (!hasError) {\n writeBody(httpRequest, request.body);\n }\n}\n__name(writeRequestBody, \"writeRequestBody\");\nfunction writeBody(httpRequest, body) {\n if (body instanceof import_stream.Readable) {\n body.pipe(httpRequest);\n return;\n }\n if (body) {\n if (Buffer.isBuffer(body) || typeof body === \"string\") {\n httpRequest.end(body);\n return;\n }\n const uint8 = body;\n if (typeof uint8 === \"object\" && uint8.buffer && typeof uint8.byteOffset === \"number\" && typeof uint8.byteLength === \"number\") {\n httpRequest.end(Buffer.from(uint8.buffer, uint8.byteOffset, uint8.byteLength));\n return;\n }\n httpRequest.end(Buffer.from(body));\n return;\n }\n httpRequest.end();\n}\n__name(writeBody, \"writeBody\");\n\n// src/node-http-handler.ts\nvar DEFAULT_REQUEST_TIMEOUT = 0;\nvar _NodeHttpHandler = class _NodeHttpHandler {\n constructor(options) {\n this.socketWarningTimestamp = 0;\n // Node http handler is hard-coded to http/1.1: https://github.com/nodejs/node/blob/ff5664b83b89c55e4ab5d5f60068fb457f1f5872/lib/_http_server.js#L286\n this.metadata = { handlerProtocol: \"http/1.1\" };\n this.configProvider = new Promise((resolve, reject) => {\n if (typeof options === \"function\") {\n options().then((_options) => {\n resolve(this.resolveDefaultConfig(_options));\n }).catch(reject);\n } else {\n resolve(this.resolveDefaultConfig(options));\n }\n });\n }\n /**\n * @returns the input if it is an HttpHandler of any class,\n * or instantiates a new instance of this handler.\n */\n static create(instanceOrOptions) {\n if (typeof (instanceOrOptions == null ? void 0 : instanceOrOptions.handle) === \"function\") {\n return instanceOrOptions;\n }\n return new _NodeHttpHandler(instanceOrOptions);\n }\n /**\n * @internal\n *\n * @param agent - http(s) agent in use by the NodeHttpHandler instance.\n * @returns timestamp of last emitted warning.\n */\n static checkSocketUsage(agent, socketWarningTimestamp) {\n var _a, _b;\n const { sockets, requests, maxSockets } = agent;\n if (typeof maxSockets !== \"number\" || maxSockets === Infinity) {\n return socketWarningTimestamp;\n }\n const interval = 15e3;\n if (Date.now() - interval < socketWarningTimestamp) {\n return socketWarningTimestamp;\n }\n if (sockets && requests) {\n for (const origin in sockets) {\n const socketsInUse = ((_a = sockets[origin]) == null ? void 0 : _a.length) ?? 0;\n const requestsEnqueued = ((_b = requests[origin]) == null ? void 0 : _b.length) ?? 0;\n if (socketsInUse >= maxSockets && requestsEnqueued >= 2 * maxSockets) {\n console.warn(\n \"@smithy/node-http-handler:WARN\",\n `socket usage at capacity=${socketsInUse} and ${requestsEnqueued} additional requests are enqueued.`,\n \"See https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/node-configuring-maxsockets.html\",\n \"or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler config.\"\n );\n return Date.now();\n }\n }\n }\n return socketWarningTimestamp;\n }\n resolveDefaultConfig(options) {\n const { requestTimeout, connectionTimeout, socketTimeout, httpAgent, httpsAgent } = options || {};\n const keepAlive = true;\n const maxSockets = 50;\n return {\n connectionTimeout,\n requestTimeout: requestTimeout ?? socketTimeout,\n httpAgent: (() => {\n if (httpAgent instanceof import_http.Agent || typeof (httpAgent == null ? void 0 : httpAgent.destroy) === \"function\") {\n return httpAgent;\n }\n return new import_http.Agent({ keepAlive, maxSockets, ...httpAgent });\n })(),\n httpsAgent: (() => {\n if (httpsAgent instanceof import_https.Agent || typeof (httpsAgent == null ? void 0 : httpsAgent.destroy) === \"function\") {\n return httpsAgent;\n }\n return new import_https.Agent({ keepAlive, maxSockets, ...httpsAgent });\n })()\n };\n }\n destroy() {\n var _a, _b, _c, _d;\n (_b = (_a = this.config) == null ? void 0 : _a.httpAgent) == null ? void 0 : _b.destroy();\n (_d = (_c = this.config) == null ? void 0 : _c.httpsAgent) == null ? void 0 : _d.destroy();\n }\n async handle(request, { abortSignal } = {}) {\n if (!this.config) {\n this.config = await this.configProvider;\n }\n let socketCheckTimeoutId;\n return new Promise((_resolve, _reject) => {\n let writeRequestBodyPromise = void 0;\n const resolve = /* @__PURE__ */ __name(async (arg) => {\n await writeRequestBodyPromise;\n clearTimeout(socketCheckTimeoutId);\n _resolve(arg);\n }, \"resolve\");\n const reject = /* @__PURE__ */ __name(async (arg) => {\n await writeRequestBodyPromise;\n _reject(arg);\n }, \"reject\");\n if (!this.config) {\n throw new Error(\"Node HTTP request handler config is not resolved\");\n }\n if (abortSignal == null ? void 0 : abortSignal.aborted) {\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n reject(abortError);\n return;\n }\n const isSSL = request.protocol === \"https:\";\n const agent = isSSL ? this.config.httpsAgent : this.config.httpAgent;\n socketCheckTimeoutId = setTimeout(() => {\n this.socketWarningTimestamp = _NodeHttpHandler.checkSocketUsage(agent, this.socketWarningTimestamp);\n }, this.config.socketAcquisitionWarningTimeout ?? (this.config.requestTimeout ?? 2e3) + (this.config.connectionTimeout ?? 1e3));\n const queryString = (0, import_querystring_builder.buildQueryString)(request.query || {});\n let auth = void 0;\n if (request.username != null || request.password != null) {\n const username = request.username ?? \"\";\n const password = request.password ?? \"\";\n auth = `${username}:${password}`;\n }\n let path = request.path;\n if (queryString) {\n path += `?${queryString}`;\n }\n if (request.fragment) {\n path += `#${request.fragment}`;\n }\n const nodeHttpsOptions = {\n headers: request.headers,\n host: request.hostname,\n method: request.method,\n path,\n port: request.port,\n agent,\n auth\n };\n const requestFunc = isSSL ? import_https.request : import_http.request;\n const req = requestFunc(nodeHttpsOptions, (res) => {\n const httpResponse = new import_protocol_http.HttpResponse({\n statusCode: res.statusCode || -1,\n reason: res.statusMessage,\n headers: getTransformedHeaders(res.headers),\n body: res\n });\n resolve({ response: httpResponse });\n });\n req.on(\"error\", (err) => {\n if (NODEJS_TIMEOUT_ERROR_CODES.includes(err.code)) {\n reject(Object.assign(err, { name: \"TimeoutError\" }));\n } else {\n reject(err);\n }\n });\n setConnectionTimeout(req, reject, this.config.connectionTimeout);\n setSocketTimeout(req, reject, this.config.requestTimeout);\n if (abortSignal) {\n abortSignal.onabort = () => {\n req.abort();\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n reject(abortError);\n };\n }\n const httpAgent = nodeHttpsOptions.agent;\n if (typeof httpAgent === \"object\" && \"keepAlive\" in httpAgent) {\n setSocketKeepAlive(req, {\n // @ts-expect-error keepAlive is not public on httpAgent.\n keepAlive: httpAgent.keepAlive,\n // @ts-expect-error keepAliveMsecs is not public on httpAgent.\n keepAliveMsecs: httpAgent.keepAliveMsecs\n });\n }\n writeRequestBodyPromise = writeRequestBody(req, request, this.config.requestTimeout).catch(_reject);\n });\n }\n updateHttpClientConfig(key, value) {\n this.config = void 0;\n this.configProvider = this.configProvider.then((config) => {\n return {\n ...config,\n [key]: value\n };\n });\n }\n httpHandlerConfigs() {\n return this.config ?? {};\n }\n};\n__name(_NodeHttpHandler, \"NodeHttpHandler\");\nvar NodeHttpHandler = _NodeHttpHandler;\n\n// src/node-http2-handler.ts\n\n\nvar import_http22 = require(\"http2\");\n\n// src/node-http2-connection-manager.ts\nvar import_http2 = __toESM(require(\"http2\"));\n\n// src/node-http2-connection-pool.ts\nvar _NodeHttp2ConnectionPool = class _NodeHttp2ConnectionPool {\n constructor(sessions) {\n this.sessions = [];\n this.sessions = sessions ?? [];\n }\n poll() {\n if (this.sessions.length > 0) {\n return this.sessions.shift();\n }\n }\n offerLast(session) {\n this.sessions.push(session);\n }\n contains(session) {\n return this.sessions.includes(session);\n }\n remove(session) {\n this.sessions = this.sessions.filter((s) => s !== session);\n }\n [Symbol.iterator]() {\n return this.sessions[Symbol.iterator]();\n }\n destroy(connection) {\n for (const session of this.sessions) {\n if (session === connection) {\n if (!session.destroyed) {\n session.destroy();\n }\n }\n }\n }\n};\n__name(_NodeHttp2ConnectionPool, \"NodeHttp2ConnectionPool\");\nvar NodeHttp2ConnectionPool = _NodeHttp2ConnectionPool;\n\n// src/node-http2-connection-manager.ts\nvar _NodeHttp2ConnectionManager = class _NodeHttp2ConnectionManager {\n constructor(config) {\n this.sessionCache = /* @__PURE__ */ new Map();\n this.config = config;\n if (this.config.maxConcurrency && this.config.maxConcurrency <= 0) {\n throw new RangeError(\"maxConcurrency must be greater than zero.\");\n }\n }\n lease(requestContext, connectionConfiguration) {\n const url = this.getUrlString(requestContext);\n const existingPool = this.sessionCache.get(url);\n if (existingPool) {\n const existingSession = existingPool.poll();\n if (existingSession && !this.config.disableConcurrency) {\n return existingSession;\n }\n }\n const session = import_http2.default.connect(url);\n if (this.config.maxConcurrency) {\n session.settings({ maxConcurrentStreams: this.config.maxConcurrency }, (err) => {\n if (err) {\n throw new Error(\n \"Fail to set maxConcurrentStreams to \" + this.config.maxConcurrency + \"when creating new session for \" + requestContext.destination.toString()\n );\n }\n });\n }\n session.unref();\n const destroySessionCb = /* @__PURE__ */ __name(() => {\n session.destroy();\n this.deleteSession(url, session);\n }, \"destroySessionCb\");\n session.on(\"goaway\", destroySessionCb);\n session.on(\"error\", destroySessionCb);\n session.on(\"frameError\", destroySessionCb);\n session.on(\"close\", () => this.deleteSession(url, session));\n if (connectionConfiguration.requestTimeout) {\n session.setTimeout(connectionConfiguration.requestTimeout, destroySessionCb);\n }\n const connectionPool = this.sessionCache.get(url) || new NodeHttp2ConnectionPool();\n connectionPool.offerLast(session);\n this.sessionCache.set(url, connectionPool);\n return session;\n }\n /**\n * Delete a session from the connection pool.\n * @param authority The authority of the session to delete.\n * @param session The session to delete.\n */\n deleteSession(authority, session) {\n const existingConnectionPool = this.sessionCache.get(authority);\n if (!existingConnectionPool) {\n return;\n }\n if (!existingConnectionPool.contains(session)) {\n return;\n }\n existingConnectionPool.remove(session);\n this.sessionCache.set(authority, existingConnectionPool);\n }\n release(requestContext, session) {\n var _a;\n const cacheKey = this.getUrlString(requestContext);\n (_a = this.sessionCache.get(cacheKey)) == null ? void 0 : _a.offerLast(session);\n }\n destroy() {\n for (const [key, connectionPool] of this.sessionCache) {\n for (const session of connectionPool) {\n if (!session.destroyed) {\n session.destroy();\n }\n connectionPool.remove(session);\n }\n this.sessionCache.delete(key);\n }\n }\n setMaxConcurrentStreams(maxConcurrentStreams) {\n if (this.config.maxConcurrency && this.config.maxConcurrency <= 0) {\n throw new RangeError(\"maxConcurrentStreams must be greater than zero.\");\n }\n this.config.maxConcurrency = maxConcurrentStreams;\n }\n setDisableConcurrentStreams(disableConcurrentStreams) {\n this.config.disableConcurrency = disableConcurrentStreams;\n }\n getUrlString(request) {\n return request.destination.toString();\n }\n};\n__name(_NodeHttp2ConnectionManager, \"NodeHttp2ConnectionManager\");\nvar NodeHttp2ConnectionManager = _NodeHttp2ConnectionManager;\n\n// src/node-http2-handler.ts\nvar _NodeHttp2Handler = class _NodeHttp2Handler {\n constructor(options) {\n this.metadata = { handlerProtocol: \"h2\" };\n this.connectionManager = new NodeHttp2ConnectionManager({});\n this.configProvider = new Promise((resolve, reject) => {\n if (typeof options === \"function\") {\n options().then((opts) => {\n resolve(opts || {});\n }).catch(reject);\n } else {\n resolve(options || {});\n }\n });\n }\n /**\n * @returns the input if it is an HttpHandler of any class,\n * or instantiates a new instance of this handler.\n */\n static create(instanceOrOptions) {\n if (typeof (instanceOrOptions == null ? void 0 : instanceOrOptions.handle) === \"function\") {\n return instanceOrOptions;\n }\n return new _NodeHttp2Handler(instanceOrOptions);\n }\n destroy() {\n this.connectionManager.destroy();\n }\n async handle(request, { abortSignal } = {}) {\n if (!this.config) {\n this.config = await this.configProvider;\n this.connectionManager.setDisableConcurrentStreams(this.config.disableConcurrentStreams || false);\n if (this.config.maxConcurrentStreams) {\n this.connectionManager.setMaxConcurrentStreams(this.config.maxConcurrentStreams);\n }\n }\n const { requestTimeout, disableConcurrentStreams } = this.config;\n return new Promise((_resolve, _reject) => {\n var _a;\n let fulfilled = false;\n let writeRequestBodyPromise = void 0;\n const resolve = /* @__PURE__ */ __name(async (arg) => {\n await writeRequestBodyPromise;\n _resolve(arg);\n }, \"resolve\");\n const reject = /* @__PURE__ */ __name(async (arg) => {\n await writeRequestBodyPromise;\n _reject(arg);\n }, \"reject\");\n if (abortSignal == null ? void 0 : abortSignal.aborted) {\n fulfilled = true;\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n reject(abortError);\n return;\n }\n const { hostname, method, port, protocol, query } = request;\n let auth = \"\";\n if (request.username != null || request.password != null) {\n const username = request.username ?? \"\";\n const password = request.password ?? \"\";\n auth = `${username}:${password}@`;\n }\n const authority = `${protocol}//${auth}${hostname}${port ? `:${port}` : \"\"}`;\n const requestContext = { destination: new URL(authority) };\n const session = this.connectionManager.lease(requestContext, {\n requestTimeout: (_a = this.config) == null ? void 0 : _a.sessionTimeout,\n disableConcurrentStreams: disableConcurrentStreams || false\n });\n const rejectWithDestroy = /* @__PURE__ */ __name((err) => {\n if (disableConcurrentStreams) {\n this.destroySession(session);\n }\n fulfilled = true;\n reject(err);\n }, \"rejectWithDestroy\");\n const queryString = (0, import_querystring_builder.buildQueryString)(query || {});\n let path = request.path;\n if (queryString) {\n path += `?${queryString}`;\n }\n if (request.fragment) {\n path += `#${request.fragment}`;\n }\n const req = session.request({\n ...request.headers,\n [import_http22.constants.HTTP2_HEADER_PATH]: path,\n [import_http22.constants.HTTP2_HEADER_METHOD]: method\n });\n session.ref();\n req.on(\"response\", (headers) => {\n const httpResponse = new import_protocol_http.HttpResponse({\n statusCode: headers[\":status\"] || -1,\n headers: getTransformedHeaders(headers),\n body: req\n });\n fulfilled = true;\n resolve({ response: httpResponse });\n if (disableConcurrentStreams) {\n session.close();\n this.connectionManager.deleteSession(authority, session);\n }\n });\n if (requestTimeout) {\n req.setTimeout(requestTimeout, () => {\n req.close();\n const timeoutError = new Error(`Stream timed out because of no activity for ${requestTimeout} ms`);\n timeoutError.name = \"TimeoutError\";\n rejectWithDestroy(timeoutError);\n });\n }\n if (abortSignal) {\n abortSignal.onabort = () => {\n req.close();\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n rejectWithDestroy(abortError);\n };\n }\n req.on(\"frameError\", (type, code, id) => {\n rejectWithDestroy(new Error(`Frame type id ${type} in stream id ${id} has failed with code ${code}.`));\n });\n req.on(\"error\", rejectWithDestroy);\n req.on(\"aborted\", () => {\n rejectWithDestroy(\n new Error(`HTTP/2 stream is abnormally aborted in mid-communication with result code ${req.rstCode}.`)\n );\n });\n req.on(\"close\", () => {\n session.unref();\n if (disableConcurrentStreams) {\n session.destroy();\n }\n if (!fulfilled) {\n rejectWithDestroy(new Error(\"Unexpected error: http2 request did not get a response\"));\n }\n });\n writeRequestBodyPromise = writeRequestBody(req, request, requestTimeout);\n });\n }\n updateHttpClientConfig(key, value) {\n this.config = void 0;\n this.configProvider = this.configProvider.then((config) => {\n return {\n ...config,\n [key]: value\n };\n });\n }\n httpHandlerConfigs() {\n return this.config ?? {};\n }\n /**\n * Destroys a session.\n * @param session The session to destroy.\n */\n destroySession(session) {\n if (!session.destroyed) {\n session.destroy();\n }\n }\n};\n__name(_NodeHttp2Handler, \"NodeHttp2Handler\");\nvar NodeHttp2Handler = _NodeHttp2Handler;\n\n// src/stream-collector/collector.ts\n\nvar _Collector = class _Collector extends import_stream.Writable {\n constructor() {\n super(...arguments);\n this.bufferedBytes = [];\n }\n _write(chunk, encoding, callback) {\n this.bufferedBytes.push(chunk);\n callback();\n }\n};\n__name(_Collector, \"Collector\");\nvar Collector = _Collector;\n\n// src/stream-collector/index.ts\nvar streamCollector = /* @__PURE__ */ __name((stream) => new Promise((resolve, reject) => {\n const collector = new Collector();\n stream.pipe(collector);\n stream.on(\"error\", (err) => {\n collector.end();\n reject(err);\n });\n collector.on(\"error\", reject);\n collector.on(\"finish\", function() {\n const bytes = new Uint8Array(Buffer.concat(this.bufferedBytes));\n resolve(bytes);\n });\n}), \"streamCollector\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n DEFAULT_REQUEST_TIMEOUT,\n NodeHttpHandler,\n NodeHttp2Handler,\n streamCollector\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n CredentialsProviderError: () => CredentialsProviderError,\n ProviderError: () => ProviderError,\n TokenProviderError: () => TokenProviderError,\n chain: () => chain,\n fromStatic: () => fromStatic,\n memoize: () => memoize\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/ProviderError.ts\nvar _ProviderError = class _ProviderError extends Error {\n constructor(message, tryNextLink = true) {\n super(message);\n this.tryNextLink = tryNextLink;\n this.name = \"ProviderError\";\n Object.setPrototypeOf(this, _ProviderError.prototype);\n }\n static from(error, tryNextLink = true) {\n return Object.assign(new this(error.message, tryNextLink), error);\n }\n};\n__name(_ProviderError, \"ProviderError\");\nvar ProviderError = _ProviderError;\n\n// src/CredentialsProviderError.ts\nvar _CredentialsProviderError = class _CredentialsProviderError extends ProviderError {\n constructor(message, tryNextLink = true) {\n super(message, tryNextLink);\n this.tryNextLink = tryNextLink;\n this.name = \"CredentialsProviderError\";\n Object.setPrototypeOf(this, _CredentialsProviderError.prototype);\n }\n};\n__name(_CredentialsProviderError, \"CredentialsProviderError\");\nvar CredentialsProviderError = _CredentialsProviderError;\n\n// src/TokenProviderError.ts\nvar _TokenProviderError = class _TokenProviderError extends ProviderError {\n constructor(message, tryNextLink = true) {\n super(message, tryNextLink);\n this.tryNextLink = tryNextLink;\n this.name = \"TokenProviderError\";\n Object.setPrototypeOf(this, _TokenProviderError.prototype);\n }\n};\n__name(_TokenProviderError, \"TokenProviderError\");\nvar TokenProviderError = _TokenProviderError;\n\n// src/chain.ts\nvar chain = /* @__PURE__ */ __name((...providers) => async () => {\n if (providers.length === 0) {\n throw new ProviderError(\"No providers in chain\");\n }\n let lastProviderError;\n for (const provider of providers) {\n try {\n const credentials = await provider();\n return credentials;\n } catch (err) {\n lastProviderError = err;\n if (err == null ? void 0 : err.tryNextLink) {\n continue;\n }\n throw err;\n }\n }\n throw lastProviderError;\n}, \"chain\");\n\n// src/fromStatic.ts\nvar fromStatic = /* @__PURE__ */ __name((staticValue) => () => Promise.resolve(staticValue), \"fromStatic\");\n\n// src/memoize.ts\nvar memoize = /* @__PURE__ */ __name((provider, isExpired, requiresRefresh) => {\n let resolved;\n let pending;\n let hasResult;\n let isConstant = false;\n const coalesceProvider = /* @__PURE__ */ __name(async () => {\n if (!pending) {\n pending = provider();\n }\n try {\n resolved = await pending;\n hasResult = true;\n isConstant = false;\n } finally {\n pending = void 0;\n }\n return resolved;\n }, \"coalesceProvider\");\n if (isExpired === void 0) {\n return async (options) => {\n if (!hasResult || (options == null ? void 0 : options.forceRefresh)) {\n resolved = await coalesceProvider();\n }\n return resolved;\n };\n }\n return async (options) => {\n if (!hasResult || (options == null ? void 0 : options.forceRefresh)) {\n resolved = await coalesceProvider();\n }\n if (isConstant) {\n return resolved;\n }\n if (requiresRefresh && !requiresRefresh(resolved)) {\n isConstant = true;\n return resolved;\n }\n if (isExpired(resolved)) {\n await coalesceProvider();\n return resolved;\n }\n return resolved;\n };\n}, \"memoize\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n CredentialsProviderError,\n ProviderError,\n TokenProviderError,\n chain,\n fromStatic,\n memoize\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n Field: () => Field,\n Fields: () => Fields,\n HttpRequest: () => HttpRequest,\n HttpResponse: () => HttpResponse,\n getHttpHandlerExtensionConfiguration: () => getHttpHandlerExtensionConfiguration,\n isValidHostname: () => isValidHostname,\n resolveHttpHandlerRuntimeConfig: () => resolveHttpHandlerRuntimeConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/extensions/httpExtensionConfiguration.ts\nvar getHttpHandlerExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n let httpHandler = runtimeConfig.httpHandler;\n return {\n setHttpHandler(handler) {\n httpHandler = handler;\n },\n httpHandler() {\n return httpHandler;\n },\n updateHttpClientConfig(key, value) {\n httpHandler.updateHttpClientConfig(key, value);\n },\n httpHandlerConfigs() {\n return httpHandler.httpHandlerConfigs();\n }\n };\n}, \"getHttpHandlerExtensionConfiguration\");\nvar resolveHttpHandlerRuntimeConfig = /* @__PURE__ */ __name((httpHandlerExtensionConfiguration) => {\n return {\n httpHandler: httpHandlerExtensionConfiguration.httpHandler()\n };\n}, \"resolveHttpHandlerRuntimeConfig\");\n\n// src/Field.ts\nvar import_types = require(\"@smithy/types\");\nvar _Field = class _Field {\n constructor({ name, kind = import_types.FieldPosition.HEADER, values = [] }) {\n this.name = name;\n this.kind = kind;\n this.values = values;\n }\n /**\n * Appends a value to the field.\n *\n * @param value The value to append.\n */\n add(value) {\n this.values.push(value);\n }\n /**\n * Overwrite existing field values.\n *\n * @param values The new field values.\n */\n set(values) {\n this.values = values;\n }\n /**\n * Remove all matching entries from list.\n *\n * @param value Value to remove.\n */\n remove(value) {\n this.values = this.values.filter((v) => v !== value);\n }\n /**\n * Get comma-delimited string.\n *\n * @returns String representation of {@link Field}.\n */\n toString() {\n return this.values.map((v) => v.includes(\",\") || v.includes(\" \") ? `\"${v}\"` : v).join(\", \");\n }\n /**\n * Get string values as a list\n *\n * @returns Values in {@link Field} as a list.\n */\n get() {\n return this.values;\n }\n};\n__name(_Field, \"Field\");\nvar Field = _Field;\n\n// src/Fields.ts\nvar _Fields = class _Fields {\n constructor({ fields = [], encoding = \"utf-8\" }) {\n this.entries = {};\n fields.forEach(this.setField.bind(this));\n this.encoding = encoding;\n }\n /**\n * Set entry for a {@link Field} name. The `name`\n * attribute will be used to key the collection.\n *\n * @param field The {@link Field} to set.\n */\n setField(field) {\n this.entries[field.name.toLowerCase()] = field;\n }\n /**\n * Retrieve {@link Field} entry by name.\n *\n * @param name The name of the {@link Field} entry\n * to retrieve\n * @returns The {@link Field} if it exists.\n */\n getField(name) {\n return this.entries[name.toLowerCase()];\n }\n /**\n * Delete entry from collection.\n *\n * @param name Name of the entry to delete.\n */\n removeField(name) {\n delete this.entries[name.toLowerCase()];\n }\n /**\n * Helper function for retrieving specific types of fields.\n * Used to grab all headers or all trailers.\n *\n * @param kind {@link FieldPosition} of entries to retrieve.\n * @returns The {@link Field} entries with the specified\n * {@link FieldPosition}.\n */\n getByType(kind) {\n return Object.values(this.entries).filter((field) => field.kind === kind);\n }\n};\n__name(_Fields, \"Fields\");\nvar Fields = _Fields;\n\n// src/httpRequest.ts\nvar _HttpRequest = class _HttpRequest {\n constructor(options) {\n this.method = options.method || \"GET\";\n this.hostname = options.hostname || \"localhost\";\n this.port = options.port;\n this.query = options.query || {};\n this.headers = options.headers || {};\n this.body = options.body;\n this.protocol = options.protocol ? options.protocol.slice(-1) !== \":\" ? `${options.protocol}:` : options.protocol : \"https:\";\n this.path = options.path ? options.path.charAt(0) !== \"/\" ? `/${options.path}` : options.path : \"/\";\n this.username = options.username;\n this.password = options.password;\n this.fragment = options.fragment;\n }\n static isInstance(request) {\n if (!request)\n return false;\n const req = request;\n return \"method\" in req && \"protocol\" in req && \"hostname\" in req && \"path\" in req && typeof req[\"query\"] === \"object\" && typeof req[\"headers\"] === \"object\";\n }\n clone() {\n const cloned = new _HttpRequest({\n ...this,\n headers: { ...this.headers }\n });\n if (cloned.query)\n cloned.query = cloneQuery(cloned.query);\n return cloned;\n }\n};\n__name(_HttpRequest, \"HttpRequest\");\nvar HttpRequest = _HttpRequest;\nfunction cloneQuery(query) {\n return Object.keys(query).reduce((carry, paramName) => {\n const param = query[paramName];\n return {\n ...carry,\n [paramName]: Array.isArray(param) ? [...param] : param\n };\n }, {});\n}\n__name(cloneQuery, \"cloneQuery\");\n\n// src/httpResponse.ts\nvar _HttpResponse = class _HttpResponse {\n constructor(options) {\n this.statusCode = options.statusCode;\n this.reason = options.reason;\n this.headers = options.headers || {};\n this.body = options.body;\n }\n static isInstance(response) {\n if (!response)\n return false;\n const resp = response;\n return typeof resp.statusCode === \"number\" && typeof resp.headers === \"object\";\n }\n};\n__name(_HttpResponse, \"HttpResponse\");\nvar HttpResponse = _HttpResponse;\n\n// src/isValidHostname.ts\nfunction isValidHostname(hostname) {\n const hostPattern = /^[a-z0-9][a-z0-9\\.\\-]*[a-z0-9]$/;\n return hostPattern.test(hostname);\n}\n__name(isValidHostname, \"isValidHostname\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n getHttpHandlerExtensionConfiguration,\n resolveHttpHandlerRuntimeConfig,\n Field,\n Fields,\n HttpRequest,\n HttpResponse,\n isValidHostname\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n buildQueryString: () => buildQueryString\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_util_uri_escape = require(\"@smithy/util-uri-escape\");\nfunction buildQueryString(query) {\n const parts = [];\n for (let key of Object.keys(query).sort()) {\n const value = query[key];\n key = (0, import_util_uri_escape.escapeUri)(key);\n if (Array.isArray(value)) {\n for (let i = 0, iLen = value.length; i < iLen; i++) {\n parts.push(`${key}=${(0, import_util_uri_escape.escapeUri)(value[i])}`);\n }\n } else {\n let qsEntry = key;\n if (value || typeof value === \"string\") {\n qsEntry += `=${(0, import_util_uri_escape.escapeUri)(value)}`;\n }\n parts.push(qsEntry);\n }\n }\n return parts.join(\"&\");\n}\n__name(buildQueryString, \"buildQueryString\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n buildQueryString\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n parseQueryString: () => parseQueryString\n});\nmodule.exports = __toCommonJS(src_exports);\nfunction parseQueryString(querystring) {\n const query = {};\n querystring = querystring.replace(/^\\?/, \"\");\n if (querystring) {\n for (const pair of querystring.split(\"&\")) {\n let [key, value = null] = pair.split(\"=\");\n key = decodeURIComponent(key);\n if (value) {\n value = decodeURIComponent(value);\n }\n if (!(key in query)) {\n query[key] = value;\n } else if (Array.isArray(query[key])) {\n query[key].push(value);\n } else {\n query[key] = [query[key], value];\n }\n }\n }\n return query;\n}\n__name(parseQueryString, \"parseQueryString\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n parseQueryString\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n isClockSkewCorrectedError: () => isClockSkewCorrectedError,\n isClockSkewError: () => isClockSkewError,\n isRetryableByTrait: () => isRetryableByTrait,\n isServerError: () => isServerError,\n isThrottlingError: () => isThrottlingError,\n isTransientError: () => isTransientError\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/constants.ts\nvar CLOCK_SKEW_ERROR_CODES = [\n \"AuthFailure\",\n \"InvalidSignatureException\",\n \"RequestExpired\",\n \"RequestInTheFuture\",\n \"RequestTimeTooSkewed\",\n \"SignatureDoesNotMatch\"\n];\nvar THROTTLING_ERROR_CODES = [\n \"BandwidthLimitExceeded\",\n \"EC2ThrottledException\",\n \"LimitExceededException\",\n \"PriorRequestNotComplete\",\n \"ProvisionedThroughputExceededException\",\n \"RequestLimitExceeded\",\n \"RequestThrottled\",\n \"RequestThrottledException\",\n \"SlowDown\",\n \"ThrottledException\",\n \"Throttling\",\n \"ThrottlingException\",\n \"TooManyRequestsException\",\n \"TransactionInProgressException\"\n // DynamoDB\n];\nvar TRANSIENT_ERROR_CODES = [\"TimeoutError\", \"RequestTimeout\", \"RequestTimeoutException\"];\nvar TRANSIENT_ERROR_STATUS_CODES = [500, 502, 503, 504];\nvar NODEJS_TIMEOUT_ERROR_CODES = [\"ECONNRESET\", \"ECONNREFUSED\", \"EPIPE\", \"ETIMEDOUT\"];\n\n// src/index.ts\nvar isRetryableByTrait = /* @__PURE__ */ __name((error) => error.$retryable !== void 0, \"isRetryableByTrait\");\nvar isClockSkewError = /* @__PURE__ */ __name((error) => CLOCK_SKEW_ERROR_CODES.includes(error.name), \"isClockSkewError\");\nvar isClockSkewCorrectedError = /* @__PURE__ */ __name((error) => {\n var _a;\n return (_a = error.$metadata) == null ? void 0 : _a.clockSkewCorrected;\n}, \"isClockSkewCorrectedError\");\nvar isThrottlingError = /* @__PURE__ */ __name((error) => {\n var _a, _b;\n return ((_a = error.$metadata) == null ? void 0 : _a.httpStatusCode) === 429 || THROTTLING_ERROR_CODES.includes(error.name) || ((_b = error.$retryable) == null ? void 0 : _b.throttling) == true;\n}, \"isThrottlingError\");\nvar isTransientError = /* @__PURE__ */ __name((error) => {\n var _a;\n return isClockSkewCorrectedError(error) || TRANSIENT_ERROR_CODES.includes(error.name) || NODEJS_TIMEOUT_ERROR_CODES.includes((error == null ? void 0 : error.code) || \"\") || TRANSIENT_ERROR_STATUS_CODES.includes(((_a = error.$metadata) == null ? void 0 : _a.httpStatusCode) || 0);\n}, \"isTransientError\");\nvar isServerError = /* @__PURE__ */ __name((error) => {\n var _a;\n if (((_a = error.$metadata) == null ? void 0 : _a.httpStatusCode) !== void 0) {\n const statusCode = error.$metadata.httpStatusCode;\n if (500 <= statusCode && statusCode <= 599 && !isTransientError(error)) {\n return true;\n }\n return false;\n }\n return false;\n}, \"isServerError\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n isRetryableByTrait,\n isClockSkewError,\n isClockSkewCorrectedError,\n isThrottlingError,\n isTransientError,\n isServerError\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getHomeDir = void 0;\nconst os_1 = require(\"os\");\nconst path_1 = require(\"path\");\nconst homeDirCache = {};\nconst getHomeDirCacheKey = () => {\n if (process && process.geteuid) {\n return `${process.geteuid()}`;\n }\n return \"DEFAULT\";\n};\nconst getHomeDir = () => {\n const { HOME, USERPROFILE, HOMEPATH, HOMEDRIVE = `C:${path_1.sep}` } = process.env;\n if (HOME)\n return HOME;\n if (USERPROFILE)\n return USERPROFILE;\n if (HOMEPATH)\n return `${HOMEDRIVE}${HOMEPATH}`;\n const homeDirCacheKey = getHomeDirCacheKey();\n if (!homeDirCache[homeDirCacheKey])\n homeDirCache[homeDirCacheKey] = (0, os_1.homedir)();\n return homeDirCache[homeDirCacheKey];\n};\nexports.getHomeDir = getHomeDir;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSSOTokenFilepath = void 0;\nconst crypto_1 = require(\"crypto\");\nconst path_1 = require(\"path\");\nconst getHomeDir_1 = require(\"./getHomeDir\");\nconst getSSOTokenFilepath = (id) => {\n const hasher = (0, crypto_1.createHash)(\"sha1\");\n const cacheName = hasher.update(id).digest(\"hex\");\n return (0, path_1.join)((0, getHomeDir_1.getHomeDir)(), \".aws\", \"sso\", \"cache\", `${cacheName}.json`);\n};\nexports.getSSOTokenFilepath = getSSOTokenFilepath;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSSOTokenFromFile = void 0;\nconst fs_1 = require(\"fs\");\nconst getSSOTokenFilepath_1 = require(\"./getSSOTokenFilepath\");\nconst { readFile } = fs_1.promises;\nconst getSSOTokenFromFile = async (id) => {\n const ssoTokenFilepath = (0, getSSOTokenFilepath_1.getSSOTokenFilepath)(id);\n const ssoTokenText = await readFile(ssoTokenFilepath, \"utf8\");\n return JSON.parse(ssoTokenText);\n};\nexports.getSSOTokenFromFile = getSSOTokenFromFile;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n CONFIG_PREFIX_SEPARATOR: () => CONFIG_PREFIX_SEPARATOR,\n DEFAULT_PROFILE: () => DEFAULT_PROFILE,\n ENV_PROFILE: () => ENV_PROFILE,\n getProfileName: () => getProfileName,\n loadSharedConfigFiles: () => loadSharedConfigFiles,\n loadSsoSessionData: () => loadSsoSessionData,\n parseKnownFiles: () => parseKnownFiles\n});\nmodule.exports = __toCommonJS(src_exports);\n__reExport(src_exports, require(\"././getHomeDir\"), module.exports);\n\n// src/getProfileName.ts\nvar ENV_PROFILE = \"AWS_PROFILE\";\nvar DEFAULT_PROFILE = \"default\";\nvar getProfileName = /* @__PURE__ */ __name((init) => init.profile || process.env[ENV_PROFILE] || DEFAULT_PROFILE, \"getProfileName\");\n\n// src/index.ts\n__reExport(src_exports, require(\"././getSSOTokenFilepath\"), module.exports);\n__reExport(src_exports, require(\"././getSSOTokenFromFile\"), module.exports);\n\n// src/getConfigData.ts\nvar import_types = require(\"@smithy/types\");\nvar getConfigData = /* @__PURE__ */ __name((data) => Object.entries(data).filter(([key]) => {\n const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR);\n if (indexOfSeparator === -1) {\n return false;\n }\n return Object.values(import_types.IniSectionType).includes(key.substring(0, indexOfSeparator));\n}).reduce(\n (acc, [key, value]) => {\n const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR);\n const updatedKey = key.substring(0, indexOfSeparator) === import_types.IniSectionType.PROFILE ? key.substring(indexOfSeparator + 1) : key;\n acc[updatedKey] = value;\n return acc;\n },\n {\n // Populate default profile, if present.\n ...data.default && { default: data.default }\n }\n), \"getConfigData\");\n\n// src/getConfigFilepath.ts\nvar import_path = require(\"path\");\nvar import_getHomeDir = require(\"././getHomeDir\");\nvar ENV_CONFIG_PATH = \"AWS_CONFIG_FILE\";\nvar getConfigFilepath = /* @__PURE__ */ __name(() => process.env[ENV_CONFIG_PATH] || (0, import_path.join)((0, import_getHomeDir.getHomeDir)(), \".aws\", \"config\"), \"getConfigFilepath\");\n\n// src/getCredentialsFilepath.ts\n\nvar import_getHomeDir2 = require(\"././getHomeDir\");\nvar ENV_CREDENTIALS_PATH = \"AWS_SHARED_CREDENTIALS_FILE\";\nvar getCredentialsFilepath = /* @__PURE__ */ __name(() => process.env[ENV_CREDENTIALS_PATH] || (0, import_path.join)((0, import_getHomeDir2.getHomeDir)(), \".aws\", \"credentials\"), \"getCredentialsFilepath\");\n\n// src/parseIni.ts\n\nvar prefixKeyRegex = /^([\\w-]+)\\s([\"'])?([\\w-@\\+\\.%:/]+)\\2$/;\nvar profileNameBlockList = [\"__proto__\", \"profile __proto__\"];\nvar parseIni = /* @__PURE__ */ __name((iniData) => {\n const map = {};\n let currentSection;\n let currentSubSection;\n for (const iniLine of iniData.split(/\\r?\\n/)) {\n const trimmedLine = iniLine.split(/(^|\\s)[;#]/)[0].trim();\n const isSection = trimmedLine[0] === \"[\" && trimmedLine[trimmedLine.length - 1] === \"]\";\n if (isSection) {\n currentSection = void 0;\n currentSubSection = void 0;\n const sectionName = trimmedLine.substring(1, trimmedLine.length - 1);\n const matches = prefixKeyRegex.exec(sectionName);\n if (matches) {\n const [, prefix, , name] = matches;\n if (Object.values(import_types.IniSectionType).includes(prefix)) {\n currentSection = [prefix, name].join(CONFIG_PREFIX_SEPARATOR);\n }\n } else {\n currentSection = sectionName;\n }\n if (profileNameBlockList.includes(sectionName)) {\n throw new Error(`Found invalid profile name \"${sectionName}\"`);\n }\n } else if (currentSection) {\n const indexOfEqualsSign = trimmedLine.indexOf(\"=\");\n if (![0, -1].includes(indexOfEqualsSign)) {\n const [name, value] = [\n trimmedLine.substring(0, indexOfEqualsSign).trim(),\n trimmedLine.substring(indexOfEqualsSign + 1).trim()\n ];\n if (value === \"\") {\n currentSubSection = name;\n } else {\n if (currentSubSection && iniLine.trimStart() === iniLine) {\n currentSubSection = void 0;\n }\n map[currentSection] = map[currentSection] || {};\n const key = currentSubSection ? [currentSubSection, name].join(CONFIG_PREFIX_SEPARATOR) : name;\n map[currentSection][key] = value;\n }\n }\n }\n }\n return map;\n}, \"parseIni\");\n\n// src/loadSharedConfigFiles.ts\nvar import_slurpFile = require(\"././slurpFile\");\nvar swallowError = /* @__PURE__ */ __name(() => ({}), \"swallowError\");\nvar CONFIG_PREFIX_SEPARATOR = \".\";\nvar loadSharedConfigFiles = /* @__PURE__ */ __name(async (init = {}) => {\n const { filepath = getCredentialsFilepath(), configFilepath = getConfigFilepath() } = init;\n const parsedFiles = await Promise.all([\n (0, import_slurpFile.slurpFile)(configFilepath, {\n ignoreCache: init.ignoreCache\n }).then(parseIni).then(getConfigData).catch(swallowError),\n (0, import_slurpFile.slurpFile)(filepath, {\n ignoreCache: init.ignoreCache\n }).then(parseIni).catch(swallowError)\n ]);\n return {\n configFile: parsedFiles[0],\n credentialsFile: parsedFiles[1]\n };\n}, \"loadSharedConfigFiles\");\n\n// src/getSsoSessionData.ts\n\nvar getSsoSessionData = /* @__PURE__ */ __name((data) => Object.entries(data).filter(([key]) => key.startsWith(import_types.IniSectionType.SSO_SESSION + CONFIG_PREFIX_SEPARATOR)).reduce((acc, [key, value]) => ({ ...acc, [key.substring(key.indexOf(CONFIG_PREFIX_SEPARATOR) + 1)]: value }), {}), \"getSsoSessionData\");\n\n// src/loadSsoSessionData.ts\nvar import_slurpFile2 = require(\"././slurpFile\");\nvar swallowError2 = /* @__PURE__ */ __name(() => ({}), \"swallowError\");\nvar loadSsoSessionData = /* @__PURE__ */ __name(async (init = {}) => (0, import_slurpFile2.slurpFile)(init.configFilepath ?? getConfigFilepath()).then(parseIni).then(getSsoSessionData).catch(swallowError2), \"loadSsoSessionData\");\n\n// src/mergeConfigFiles.ts\nvar mergeConfigFiles = /* @__PURE__ */ __name((...files) => {\n const merged = {};\n for (const file of files) {\n for (const [key, values] of Object.entries(file)) {\n if (merged[key] !== void 0) {\n Object.assign(merged[key], values);\n } else {\n merged[key] = values;\n }\n }\n }\n return merged;\n}, \"mergeConfigFiles\");\n\n// src/parseKnownFiles.ts\nvar parseKnownFiles = /* @__PURE__ */ __name(async (init) => {\n const parsedFiles = await loadSharedConfigFiles(init);\n return mergeConfigFiles(parsedFiles.configFile, parsedFiles.credentialsFile);\n}, \"parseKnownFiles\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n getHomeDir,\n ENV_PROFILE,\n DEFAULT_PROFILE,\n getProfileName,\n getSSOTokenFilepath,\n getSSOTokenFromFile,\n CONFIG_PREFIX_SEPARATOR,\n loadSharedConfigFiles,\n loadSsoSessionData,\n parseKnownFiles\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.slurpFile = void 0;\nconst fs_1 = require(\"fs\");\nconst { readFile } = fs_1.promises;\nconst filePromisesHash = {};\nconst slurpFile = (path, options) => {\n if (!filePromisesHash[path] || (options === null || options === void 0 ? void 0 : options.ignoreCache)) {\n filePromisesHash[path] = readFile(path, \"utf8\");\n }\n return filePromisesHash[path];\n};\nexports.slurpFile = slurpFile;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n SignatureV4: () => SignatureV4,\n clearCredentialCache: () => clearCredentialCache,\n createScope: () => createScope,\n getCanonicalHeaders: () => getCanonicalHeaders,\n getCanonicalQuery: () => getCanonicalQuery,\n getPayloadHash: () => getPayloadHash,\n getSigningKey: () => getSigningKey,\n moveHeadersToQuery: () => moveHeadersToQuery,\n prepareRequest: () => prepareRequest\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/SignatureV4.ts\n\nvar import_util_middleware = require(\"@smithy/util-middleware\");\n\nvar import_util_utf84 = require(\"@smithy/util-utf8\");\n\n// src/constants.ts\nvar ALGORITHM_QUERY_PARAM = \"X-Amz-Algorithm\";\nvar CREDENTIAL_QUERY_PARAM = \"X-Amz-Credential\";\nvar AMZ_DATE_QUERY_PARAM = \"X-Amz-Date\";\nvar SIGNED_HEADERS_QUERY_PARAM = \"X-Amz-SignedHeaders\";\nvar EXPIRES_QUERY_PARAM = \"X-Amz-Expires\";\nvar SIGNATURE_QUERY_PARAM = \"X-Amz-Signature\";\nvar TOKEN_QUERY_PARAM = \"X-Amz-Security-Token\";\nvar AUTH_HEADER = \"authorization\";\nvar AMZ_DATE_HEADER = AMZ_DATE_QUERY_PARAM.toLowerCase();\nvar DATE_HEADER = \"date\";\nvar GENERATED_HEADERS = [AUTH_HEADER, AMZ_DATE_HEADER, DATE_HEADER];\nvar SIGNATURE_HEADER = SIGNATURE_QUERY_PARAM.toLowerCase();\nvar SHA256_HEADER = \"x-amz-content-sha256\";\nvar TOKEN_HEADER = TOKEN_QUERY_PARAM.toLowerCase();\nvar ALWAYS_UNSIGNABLE_HEADERS = {\n authorization: true,\n \"cache-control\": true,\n connection: true,\n expect: true,\n from: true,\n \"keep-alive\": true,\n \"max-forwards\": true,\n pragma: true,\n referer: true,\n te: true,\n trailer: true,\n \"transfer-encoding\": true,\n upgrade: true,\n \"user-agent\": true,\n \"x-amzn-trace-id\": true\n};\nvar PROXY_HEADER_PATTERN = /^proxy-/;\nvar SEC_HEADER_PATTERN = /^sec-/;\nvar ALGORITHM_IDENTIFIER = \"AWS4-HMAC-SHA256\";\nvar EVENT_ALGORITHM_IDENTIFIER = \"AWS4-HMAC-SHA256-PAYLOAD\";\nvar UNSIGNED_PAYLOAD = \"UNSIGNED-PAYLOAD\";\nvar MAX_CACHE_SIZE = 50;\nvar KEY_TYPE_IDENTIFIER = \"aws4_request\";\nvar MAX_PRESIGNED_TTL = 60 * 60 * 24 * 7;\n\n// src/credentialDerivation.ts\nvar import_util_hex_encoding = require(\"@smithy/util-hex-encoding\");\nvar import_util_utf8 = require(\"@smithy/util-utf8\");\nvar signingKeyCache = {};\nvar cacheQueue = [];\nvar createScope = /* @__PURE__ */ __name((shortDate, region, service) => `${shortDate}/${region}/${service}/${KEY_TYPE_IDENTIFIER}`, \"createScope\");\nvar getSigningKey = /* @__PURE__ */ __name(async (sha256Constructor, credentials, shortDate, region, service) => {\n const credsHash = await hmac(sha256Constructor, credentials.secretAccessKey, credentials.accessKeyId);\n const cacheKey = `${shortDate}:${region}:${service}:${(0, import_util_hex_encoding.toHex)(credsHash)}:${credentials.sessionToken}`;\n if (cacheKey in signingKeyCache) {\n return signingKeyCache[cacheKey];\n }\n cacheQueue.push(cacheKey);\n while (cacheQueue.length > MAX_CACHE_SIZE) {\n delete signingKeyCache[cacheQueue.shift()];\n }\n let key = `AWS4${credentials.secretAccessKey}`;\n for (const signable of [shortDate, region, service, KEY_TYPE_IDENTIFIER]) {\n key = await hmac(sha256Constructor, key, signable);\n }\n return signingKeyCache[cacheKey] = key;\n}, \"getSigningKey\");\nvar clearCredentialCache = /* @__PURE__ */ __name(() => {\n cacheQueue.length = 0;\n Object.keys(signingKeyCache).forEach((cacheKey) => {\n delete signingKeyCache[cacheKey];\n });\n}, \"clearCredentialCache\");\nvar hmac = /* @__PURE__ */ __name((ctor, secret, data) => {\n const hash = new ctor(secret);\n hash.update((0, import_util_utf8.toUint8Array)(data));\n return hash.digest();\n}, \"hmac\");\n\n// src/getCanonicalHeaders.ts\nvar getCanonicalHeaders = /* @__PURE__ */ __name(({ headers }, unsignableHeaders, signableHeaders) => {\n const canonical = {};\n for (const headerName of Object.keys(headers).sort()) {\n if (headers[headerName] == void 0) {\n continue;\n }\n const canonicalHeaderName = headerName.toLowerCase();\n if (canonicalHeaderName in ALWAYS_UNSIGNABLE_HEADERS || (unsignableHeaders == null ? void 0 : unsignableHeaders.has(canonicalHeaderName)) || PROXY_HEADER_PATTERN.test(canonicalHeaderName) || SEC_HEADER_PATTERN.test(canonicalHeaderName)) {\n if (!signableHeaders || signableHeaders && !signableHeaders.has(canonicalHeaderName)) {\n continue;\n }\n }\n canonical[canonicalHeaderName] = headers[headerName].trim().replace(/\\s+/g, \" \");\n }\n return canonical;\n}, \"getCanonicalHeaders\");\n\n// src/getCanonicalQuery.ts\nvar import_util_uri_escape = require(\"@smithy/util-uri-escape\");\nvar getCanonicalQuery = /* @__PURE__ */ __name(({ query = {} }) => {\n const keys = [];\n const serialized = {};\n for (const key of Object.keys(query).sort()) {\n if (key.toLowerCase() === SIGNATURE_HEADER) {\n continue;\n }\n keys.push(key);\n const value = query[key];\n if (typeof value === \"string\") {\n serialized[key] = `${(0, import_util_uri_escape.escapeUri)(key)}=${(0, import_util_uri_escape.escapeUri)(value)}`;\n } else if (Array.isArray(value)) {\n serialized[key] = value.slice(0).reduce(\n (encoded, value2) => encoded.concat([`${(0, import_util_uri_escape.escapeUri)(key)}=${(0, import_util_uri_escape.escapeUri)(value2)}`]),\n []\n ).sort().join(\"&\");\n }\n }\n return keys.map((key) => serialized[key]).filter((serialized2) => serialized2).join(\"&\");\n}, \"getCanonicalQuery\");\n\n// src/getPayloadHash.ts\nvar import_is_array_buffer = require(\"@smithy/is-array-buffer\");\n\nvar import_util_utf82 = require(\"@smithy/util-utf8\");\nvar getPayloadHash = /* @__PURE__ */ __name(async ({ headers, body }, hashConstructor) => {\n for (const headerName of Object.keys(headers)) {\n if (headerName.toLowerCase() === SHA256_HEADER) {\n return headers[headerName];\n }\n }\n if (body == void 0) {\n return \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\";\n } else if (typeof body === \"string\" || ArrayBuffer.isView(body) || (0, import_is_array_buffer.isArrayBuffer)(body)) {\n const hashCtor = new hashConstructor();\n hashCtor.update((0, import_util_utf82.toUint8Array)(body));\n return (0, import_util_hex_encoding.toHex)(await hashCtor.digest());\n }\n return UNSIGNED_PAYLOAD;\n}, \"getPayloadHash\");\n\n// src/HeaderFormatter.ts\n\nvar import_util_utf83 = require(\"@smithy/util-utf8\");\nvar _HeaderFormatter = class _HeaderFormatter {\n format(headers) {\n const chunks = [];\n for (const headerName of Object.keys(headers)) {\n const bytes = (0, import_util_utf83.fromUtf8)(headerName);\n chunks.push(Uint8Array.from([bytes.byteLength]), bytes, this.formatHeaderValue(headers[headerName]));\n }\n const out = new Uint8Array(chunks.reduce((carry, bytes) => carry + bytes.byteLength, 0));\n let position = 0;\n for (const chunk of chunks) {\n out.set(chunk, position);\n position += chunk.byteLength;\n }\n return out;\n }\n formatHeaderValue(header) {\n switch (header.type) {\n case \"boolean\":\n return Uint8Array.from([header.value ? 0 /* boolTrue */ : 1 /* boolFalse */]);\n case \"byte\":\n return Uint8Array.from([2 /* byte */, header.value]);\n case \"short\":\n const shortView = new DataView(new ArrayBuffer(3));\n shortView.setUint8(0, 3 /* short */);\n shortView.setInt16(1, header.value, false);\n return new Uint8Array(shortView.buffer);\n case \"integer\":\n const intView = new DataView(new ArrayBuffer(5));\n intView.setUint8(0, 4 /* integer */);\n intView.setInt32(1, header.value, false);\n return new Uint8Array(intView.buffer);\n case \"long\":\n const longBytes = new Uint8Array(9);\n longBytes[0] = 5 /* long */;\n longBytes.set(header.value.bytes, 1);\n return longBytes;\n case \"binary\":\n const binView = new DataView(new ArrayBuffer(3 + header.value.byteLength));\n binView.setUint8(0, 6 /* byteArray */);\n binView.setUint16(1, header.value.byteLength, false);\n const binBytes = new Uint8Array(binView.buffer);\n binBytes.set(header.value, 3);\n return binBytes;\n case \"string\":\n const utf8Bytes = (0, import_util_utf83.fromUtf8)(header.value);\n const strView = new DataView(new ArrayBuffer(3 + utf8Bytes.byteLength));\n strView.setUint8(0, 7 /* string */);\n strView.setUint16(1, utf8Bytes.byteLength, false);\n const strBytes = new Uint8Array(strView.buffer);\n strBytes.set(utf8Bytes, 3);\n return strBytes;\n case \"timestamp\":\n const tsBytes = new Uint8Array(9);\n tsBytes[0] = 8 /* timestamp */;\n tsBytes.set(Int64.fromNumber(header.value.valueOf()).bytes, 1);\n return tsBytes;\n case \"uuid\":\n if (!UUID_PATTERN.test(header.value)) {\n throw new Error(`Invalid UUID received: ${header.value}`);\n }\n const uuidBytes = new Uint8Array(17);\n uuidBytes[0] = 9 /* uuid */;\n uuidBytes.set((0, import_util_hex_encoding.fromHex)(header.value.replace(/\\-/g, \"\")), 1);\n return uuidBytes;\n }\n }\n};\n__name(_HeaderFormatter, \"HeaderFormatter\");\nvar HeaderFormatter = _HeaderFormatter;\nvar UUID_PATTERN = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;\nvar _Int64 = class _Int64 {\n constructor(bytes) {\n this.bytes = bytes;\n if (bytes.byteLength !== 8) {\n throw new Error(\"Int64 buffers must be exactly 8 bytes\");\n }\n }\n static fromNumber(number) {\n if (number > 9223372036854776e3 || number < -9223372036854776e3) {\n throw new Error(`${number} is too large (or, if negative, too small) to represent as an Int64`);\n }\n const bytes = new Uint8Array(8);\n for (let i = 7, remaining = Math.abs(Math.round(number)); i > -1 && remaining > 0; i--, remaining /= 256) {\n bytes[i] = remaining;\n }\n if (number < 0) {\n negate(bytes);\n }\n return new _Int64(bytes);\n }\n /**\n * Called implicitly by infix arithmetic operators.\n */\n valueOf() {\n const bytes = this.bytes.slice(0);\n const negative = bytes[0] & 128;\n if (negative) {\n negate(bytes);\n }\n return parseInt((0, import_util_hex_encoding.toHex)(bytes), 16) * (negative ? -1 : 1);\n }\n toString() {\n return String(this.valueOf());\n }\n};\n__name(_Int64, \"Int64\");\nvar Int64 = _Int64;\nfunction negate(bytes) {\n for (let i = 0; i < 8; i++) {\n bytes[i] ^= 255;\n }\n for (let i = 7; i > -1; i--) {\n bytes[i]++;\n if (bytes[i] !== 0)\n break;\n }\n}\n__name(negate, \"negate\");\n\n// src/headerUtil.ts\nvar hasHeader = /* @__PURE__ */ __name((soughtHeader, headers) => {\n soughtHeader = soughtHeader.toLowerCase();\n for (const headerName of Object.keys(headers)) {\n if (soughtHeader === headerName.toLowerCase()) {\n return true;\n }\n }\n return false;\n}, \"hasHeader\");\n\n// src/cloneRequest.ts\nvar cloneRequest = /* @__PURE__ */ __name(({ headers, query, ...rest }) => ({\n ...rest,\n headers: { ...headers },\n query: query ? cloneQuery(query) : void 0\n}), \"cloneRequest\");\nvar cloneQuery = /* @__PURE__ */ __name((query) => Object.keys(query).reduce((carry, paramName) => {\n const param = query[paramName];\n return {\n ...carry,\n [paramName]: Array.isArray(param) ? [...param] : param\n };\n}, {}), \"cloneQuery\");\n\n// src/moveHeadersToQuery.ts\nvar moveHeadersToQuery = /* @__PURE__ */ __name((request, options = {}) => {\n var _a;\n const { headers, query = {} } = typeof request.clone === \"function\" ? request.clone() : cloneRequest(request);\n for (const name of Object.keys(headers)) {\n const lname = name.toLowerCase();\n if (lname.slice(0, 6) === \"x-amz-\" && !((_a = options.unhoistableHeaders) == null ? void 0 : _a.has(lname))) {\n query[name] = headers[name];\n delete headers[name];\n }\n }\n return {\n ...request,\n headers,\n query\n };\n}, \"moveHeadersToQuery\");\n\n// src/prepareRequest.ts\nvar prepareRequest = /* @__PURE__ */ __name((request) => {\n request = typeof request.clone === \"function\" ? request.clone() : cloneRequest(request);\n for (const headerName of Object.keys(request.headers)) {\n if (GENERATED_HEADERS.indexOf(headerName.toLowerCase()) > -1) {\n delete request.headers[headerName];\n }\n }\n return request;\n}, \"prepareRequest\");\n\n// src/utilDate.ts\nvar iso8601 = /* @__PURE__ */ __name((time) => toDate(time).toISOString().replace(/\\.\\d{3}Z$/, \"Z\"), \"iso8601\");\nvar toDate = /* @__PURE__ */ __name((time) => {\n if (typeof time === \"number\") {\n return new Date(time * 1e3);\n }\n if (typeof time === \"string\") {\n if (Number(time)) {\n return new Date(Number(time) * 1e3);\n }\n return new Date(time);\n }\n return time;\n}, \"toDate\");\n\n// src/SignatureV4.ts\nvar _SignatureV4 = class _SignatureV4 {\n constructor({\n applyChecksum,\n credentials,\n region,\n service,\n sha256,\n uriEscapePath = true\n }) {\n this.headerFormatter = new HeaderFormatter();\n this.service = service;\n this.sha256 = sha256;\n this.uriEscapePath = uriEscapePath;\n this.applyChecksum = typeof applyChecksum === \"boolean\" ? applyChecksum : true;\n this.regionProvider = (0, import_util_middleware.normalizeProvider)(region);\n this.credentialProvider = (0, import_util_middleware.normalizeProvider)(credentials);\n }\n async presign(originalRequest, options = {}) {\n const {\n signingDate = /* @__PURE__ */ new Date(),\n expiresIn = 3600,\n unsignableHeaders,\n unhoistableHeaders,\n signableHeaders,\n signingRegion,\n signingService\n } = options;\n const credentials = await this.credentialProvider();\n this.validateResolvedCredentials(credentials);\n const region = signingRegion ?? await this.regionProvider();\n const { longDate, shortDate } = formatDate(signingDate);\n if (expiresIn > MAX_PRESIGNED_TTL) {\n return Promise.reject(\n \"Signature version 4 presigned URLs must have an expiration date less than one week in the future\"\n );\n }\n const scope = createScope(shortDate, region, signingService ?? this.service);\n const request = moveHeadersToQuery(prepareRequest(originalRequest), { unhoistableHeaders });\n if (credentials.sessionToken) {\n request.query[TOKEN_QUERY_PARAM] = credentials.sessionToken;\n }\n request.query[ALGORITHM_QUERY_PARAM] = ALGORITHM_IDENTIFIER;\n request.query[CREDENTIAL_QUERY_PARAM] = `${credentials.accessKeyId}/${scope}`;\n request.query[AMZ_DATE_QUERY_PARAM] = longDate;\n request.query[EXPIRES_QUERY_PARAM] = expiresIn.toString(10);\n const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders);\n request.query[SIGNED_HEADERS_QUERY_PARAM] = getCanonicalHeaderList(canonicalHeaders);\n request.query[SIGNATURE_QUERY_PARAM] = await this.getSignature(\n longDate,\n scope,\n this.getSigningKey(credentials, region, shortDate, signingService),\n this.createCanonicalRequest(request, canonicalHeaders, await getPayloadHash(originalRequest, this.sha256))\n );\n return request;\n }\n async sign(toSign, options) {\n if (typeof toSign === \"string\") {\n return this.signString(toSign, options);\n } else if (toSign.headers && toSign.payload) {\n return this.signEvent(toSign, options);\n } else if (toSign.message) {\n return this.signMessage(toSign, options);\n } else {\n return this.signRequest(toSign, options);\n }\n }\n async signEvent({ headers, payload }, { signingDate = /* @__PURE__ */ new Date(), priorSignature, signingRegion, signingService }) {\n const region = signingRegion ?? await this.regionProvider();\n const { shortDate, longDate } = formatDate(signingDate);\n const scope = createScope(shortDate, region, signingService ?? this.service);\n const hashedPayload = await getPayloadHash({ headers: {}, body: payload }, this.sha256);\n const hash = new this.sha256();\n hash.update(headers);\n const hashedHeaders = (0, import_util_hex_encoding.toHex)(await hash.digest());\n const stringToSign = [\n EVENT_ALGORITHM_IDENTIFIER,\n longDate,\n scope,\n priorSignature,\n hashedHeaders,\n hashedPayload\n ].join(\"\\n\");\n return this.signString(stringToSign, { signingDate, signingRegion: region, signingService });\n }\n async signMessage(signableMessage, { signingDate = /* @__PURE__ */ new Date(), signingRegion, signingService }) {\n const promise = this.signEvent(\n {\n headers: this.headerFormatter.format(signableMessage.message.headers),\n payload: signableMessage.message.body\n },\n {\n signingDate,\n signingRegion,\n signingService,\n priorSignature: signableMessage.priorSignature\n }\n );\n return promise.then((signature) => {\n return { message: signableMessage.message, signature };\n });\n }\n async signString(stringToSign, { signingDate = /* @__PURE__ */ new Date(), signingRegion, signingService } = {}) {\n const credentials = await this.credentialProvider();\n this.validateResolvedCredentials(credentials);\n const region = signingRegion ?? await this.regionProvider();\n const { shortDate } = formatDate(signingDate);\n const hash = new this.sha256(await this.getSigningKey(credentials, region, shortDate, signingService));\n hash.update((0, import_util_utf84.toUint8Array)(stringToSign));\n return (0, import_util_hex_encoding.toHex)(await hash.digest());\n }\n async signRequest(requestToSign, {\n signingDate = /* @__PURE__ */ new Date(),\n signableHeaders,\n unsignableHeaders,\n signingRegion,\n signingService\n } = {}) {\n const credentials = await this.credentialProvider();\n this.validateResolvedCredentials(credentials);\n const region = signingRegion ?? await this.regionProvider();\n const request = prepareRequest(requestToSign);\n const { longDate, shortDate } = formatDate(signingDate);\n const scope = createScope(shortDate, region, signingService ?? this.service);\n request.headers[AMZ_DATE_HEADER] = longDate;\n if (credentials.sessionToken) {\n request.headers[TOKEN_HEADER] = credentials.sessionToken;\n }\n const payloadHash = await getPayloadHash(request, this.sha256);\n if (!hasHeader(SHA256_HEADER, request.headers) && this.applyChecksum) {\n request.headers[SHA256_HEADER] = payloadHash;\n }\n const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders);\n const signature = await this.getSignature(\n longDate,\n scope,\n this.getSigningKey(credentials, region, shortDate, signingService),\n this.createCanonicalRequest(request, canonicalHeaders, payloadHash)\n );\n request.headers[AUTH_HEADER] = `${ALGORITHM_IDENTIFIER} Credential=${credentials.accessKeyId}/${scope}, SignedHeaders=${getCanonicalHeaderList(canonicalHeaders)}, Signature=${signature}`;\n return request;\n }\n createCanonicalRequest(request, canonicalHeaders, payloadHash) {\n const sortedHeaders = Object.keys(canonicalHeaders).sort();\n return `${request.method}\n${this.getCanonicalPath(request)}\n${getCanonicalQuery(request)}\n${sortedHeaders.map((name) => `${name}:${canonicalHeaders[name]}`).join(\"\\n\")}\n\n${sortedHeaders.join(\";\")}\n${payloadHash}`;\n }\n async createStringToSign(longDate, credentialScope, canonicalRequest) {\n const hash = new this.sha256();\n hash.update((0, import_util_utf84.toUint8Array)(canonicalRequest));\n const hashedRequest = await hash.digest();\n return `${ALGORITHM_IDENTIFIER}\n${longDate}\n${credentialScope}\n${(0, import_util_hex_encoding.toHex)(hashedRequest)}`;\n }\n getCanonicalPath({ path }) {\n if (this.uriEscapePath) {\n const normalizedPathSegments = [];\n for (const pathSegment of path.split(\"/\")) {\n if ((pathSegment == null ? void 0 : pathSegment.length) === 0)\n continue;\n if (pathSegment === \".\")\n continue;\n if (pathSegment === \"..\") {\n normalizedPathSegments.pop();\n } else {\n normalizedPathSegments.push(pathSegment);\n }\n }\n const normalizedPath = `${(path == null ? void 0 : path.startsWith(\"/\")) ? \"/\" : \"\"}${normalizedPathSegments.join(\"/\")}${normalizedPathSegments.length > 0 && (path == null ? void 0 : path.endsWith(\"/\")) ? \"/\" : \"\"}`;\n const doubleEncoded = (0, import_util_uri_escape.escapeUri)(normalizedPath);\n return doubleEncoded.replace(/%2F/g, \"/\");\n }\n return path;\n }\n async getSignature(longDate, credentialScope, keyPromise, canonicalRequest) {\n const stringToSign = await this.createStringToSign(longDate, credentialScope, canonicalRequest);\n const hash = new this.sha256(await keyPromise);\n hash.update((0, import_util_utf84.toUint8Array)(stringToSign));\n return (0, import_util_hex_encoding.toHex)(await hash.digest());\n }\n getSigningKey(credentials, region, shortDate, service) {\n return getSigningKey(this.sha256, credentials, shortDate, region, service || this.service);\n }\n validateResolvedCredentials(credentials) {\n if (typeof credentials !== \"object\" || // @ts-expect-error: Property 'accessKeyId' does not exist on type 'object'.ts(2339)\n typeof credentials.accessKeyId !== \"string\" || // @ts-expect-error: Property 'secretAccessKey' does not exist on type 'object'.ts(2339)\n typeof credentials.secretAccessKey !== \"string\") {\n throw new Error(\"Resolved credential object is not valid\");\n }\n }\n};\n__name(_SignatureV4, \"SignatureV4\");\nvar SignatureV4 = _SignatureV4;\nvar formatDate = /* @__PURE__ */ __name((now) => {\n const longDate = iso8601(now).replace(/[\\-:]/g, \"\");\n return {\n longDate,\n shortDate: longDate.slice(0, 8)\n };\n}, \"formatDate\");\nvar getCanonicalHeaderList = /* @__PURE__ */ __name((headers) => Object.keys(headers).sort().join(\";\"), \"getCanonicalHeaderList\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n getCanonicalHeaders,\n getCanonicalQuery,\n getPayloadHash,\n moveHeadersToQuery,\n prepareRequest,\n SignatureV4,\n createScope,\n getSigningKey,\n clearCredentialCache\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n Client: () => Client,\n Command: () => Command,\n LazyJsonString: () => LazyJsonString,\n NoOpLogger: () => NoOpLogger,\n SENSITIVE_STRING: () => SENSITIVE_STRING,\n ServiceException: () => ServiceException,\n StringWrapper: () => StringWrapper,\n _json: () => _json,\n collectBody: () => collectBody,\n convertMap: () => convertMap,\n createAggregatedClient: () => createAggregatedClient,\n dateToUtcString: () => dateToUtcString,\n decorateServiceException: () => decorateServiceException,\n emitWarningIfUnsupportedVersion: () => emitWarningIfUnsupportedVersion,\n expectBoolean: () => expectBoolean,\n expectByte: () => expectByte,\n expectFloat32: () => expectFloat32,\n expectInt: () => expectInt,\n expectInt32: () => expectInt32,\n expectLong: () => expectLong,\n expectNonNull: () => expectNonNull,\n expectNumber: () => expectNumber,\n expectObject: () => expectObject,\n expectShort: () => expectShort,\n expectString: () => expectString,\n expectUnion: () => expectUnion,\n extendedEncodeURIComponent: () => extendedEncodeURIComponent,\n getArrayIfSingleItem: () => getArrayIfSingleItem,\n getDefaultClientConfiguration: () => getDefaultClientConfiguration,\n getDefaultExtensionConfiguration: () => getDefaultExtensionConfiguration,\n getValueFromTextNode: () => getValueFromTextNode,\n handleFloat: () => handleFloat,\n limitedParseDouble: () => limitedParseDouble,\n limitedParseFloat: () => limitedParseFloat,\n limitedParseFloat32: () => limitedParseFloat32,\n loadConfigsForDefaultMode: () => loadConfigsForDefaultMode,\n logger: () => logger,\n map: () => map,\n parseBoolean: () => parseBoolean,\n parseEpochTimestamp: () => parseEpochTimestamp,\n parseRfc3339DateTime: () => parseRfc3339DateTime,\n parseRfc3339DateTimeWithOffset: () => parseRfc3339DateTimeWithOffset,\n parseRfc7231DateTime: () => parseRfc7231DateTime,\n resolveDefaultRuntimeConfig: () => resolveDefaultRuntimeConfig,\n resolvedPath: () => resolvedPath,\n serializeFloat: () => serializeFloat,\n splitEvery: () => splitEvery,\n strictParseByte: () => strictParseByte,\n strictParseDouble: () => strictParseDouble,\n strictParseFloat: () => strictParseFloat,\n strictParseFloat32: () => strictParseFloat32,\n strictParseInt: () => strictParseInt,\n strictParseInt32: () => strictParseInt32,\n strictParseLong: () => strictParseLong,\n strictParseShort: () => strictParseShort,\n take: () => take,\n throwDefaultError: () => throwDefaultError,\n withBaseException: () => withBaseException\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/NoOpLogger.ts\nvar _NoOpLogger = class _NoOpLogger {\n trace() {\n }\n debug() {\n }\n info() {\n }\n warn() {\n }\n error() {\n }\n};\n__name(_NoOpLogger, \"NoOpLogger\");\nvar NoOpLogger = _NoOpLogger;\n\n// src/client.ts\nvar import_middleware_stack = require(\"@smithy/middleware-stack\");\nvar _Client = class _Client {\n constructor(config) {\n this.middlewareStack = (0, import_middleware_stack.constructStack)();\n this.config = config;\n }\n send(command, optionsOrCb, cb) {\n const options = typeof optionsOrCb !== \"function\" ? optionsOrCb : void 0;\n const callback = typeof optionsOrCb === \"function\" ? optionsOrCb : cb;\n const handler = command.resolveMiddleware(this.middlewareStack, this.config, options);\n if (callback) {\n handler(command).then(\n (result) => callback(null, result.output),\n (err) => callback(err)\n ).catch(\n // prevent any errors thrown in the callback from triggering an\n // unhandled promise rejection\n () => {\n }\n );\n } else {\n return handler(command).then((result) => result.output);\n }\n }\n destroy() {\n if (this.config.requestHandler.destroy)\n this.config.requestHandler.destroy();\n }\n};\n__name(_Client, \"Client\");\nvar Client = _Client;\n\n// src/collect-stream-body.ts\nvar import_util_stream = require(\"@smithy/util-stream\");\nvar collectBody = /* @__PURE__ */ __name(async (streamBody = new Uint8Array(), context) => {\n if (streamBody instanceof Uint8Array) {\n return import_util_stream.Uint8ArrayBlobAdapter.mutate(streamBody);\n }\n if (!streamBody) {\n return import_util_stream.Uint8ArrayBlobAdapter.mutate(new Uint8Array());\n }\n const fromContext = context.streamCollector(streamBody);\n return import_util_stream.Uint8ArrayBlobAdapter.mutate(await fromContext);\n}, \"collectBody\");\n\n// src/command.ts\n\nvar import_types = require(\"@smithy/types\");\nvar _Command = class _Command {\n constructor() {\n this.middlewareStack = (0, import_middleware_stack.constructStack)();\n }\n /**\n * Factory for Command ClassBuilder.\n * @internal\n */\n static classBuilder() {\n return new ClassBuilder();\n }\n /**\n * @internal\n */\n resolveMiddlewareWithContext(clientStack, configuration, options, {\n middlewareFn,\n clientName,\n commandName,\n inputFilterSensitiveLog,\n outputFilterSensitiveLog,\n smithyContext,\n additionalContext,\n CommandCtor\n }) {\n for (const mw of middlewareFn.bind(this)(CommandCtor, clientStack, configuration, options)) {\n this.middlewareStack.use(mw);\n }\n const stack = clientStack.concat(this.middlewareStack);\n const { logger: logger2 } = configuration;\n const handlerExecutionContext = {\n logger: logger2,\n clientName,\n commandName,\n inputFilterSensitiveLog,\n outputFilterSensitiveLog,\n [import_types.SMITHY_CONTEXT_KEY]: {\n ...smithyContext\n },\n ...additionalContext\n };\n const { requestHandler } = configuration;\n return stack.resolve(\n (request) => requestHandler.handle(request.request, options || {}),\n handlerExecutionContext\n );\n }\n};\n__name(_Command, \"Command\");\nvar Command = _Command;\nvar _ClassBuilder = class _ClassBuilder {\n constructor() {\n this._init = () => {\n };\n this._ep = {};\n this._middlewareFn = () => [];\n this._commandName = \"\";\n this._clientName = \"\";\n this._additionalContext = {};\n this._smithyContext = {};\n this._inputFilterSensitiveLog = (_) => _;\n this._outputFilterSensitiveLog = (_) => _;\n this._serializer = null;\n this._deserializer = null;\n }\n /**\n * Optional init callback.\n */\n init(cb) {\n this._init = cb;\n }\n /**\n * Set the endpoint parameter instructions.\n */\n ep(endpointParameterInstructions) {\n this._ep = endpointParameterInstructions;\n return this;\n }\n /**\n * Add any number of middleware.\n */\n m(middlewareSupplier) {\n this._middlewareFn = middlewareSupplier;\n return this;\n }\n /**\n * Set the initial handler execution context Smithy field.\n */\n s(service, operation, smithyContext = {}) {\n this._smithyContext = {\n service,\n operation,\n ...smithyContext\n };\n return this;\n }\n /**\n * Set the initial handler execution context.\n */\n c(additionalContext = {}) {\n this._additionalContext = additionalContext;\n return this;\n }\n /**\n * Set constant string identifiers for the operation.\n */\n n(clientName, commandName) {\n this._clientName = clientName;\n this._commandName = commandName;\n return this;\n }\n /**\n * Set the input and output sensistive log filters.\n */\n f(inputFilter = (_) => _, outputFilter = (_) => _) {\n this._inputFilterSensitiveLog = inputFilter;\n this._outputFilterSensitiveLog = outputFilter;\n return this;\n }\n /**\n * Sets the serializer.\n */\n ser(serializer) {\n this._serializer = serializer;\n return this;\n }\n /**\n * Sets the deserializer.\n */\n de(deserializer) {\n this._deserializer = deserializer;\n return this;\n }\n /**\n * @returns a Command class with the classBuilder properties.\n */\n build() {\n var _a;\n const closure = this;\n let CommandRef;\n return CommandRef = (_a = class extends Command {\n /**\n * @public\n */\n constructor(...[input]) {\n super();\n /**\n * @internal\n */\n // @ts-ignore used in middlewareFn closure.\n this.serialize = closure._serializer;\n /**\n * @internal\n */\n // @ts-ignore used in middlewareFn closure.\n this.deserialize = closure._deserializer;\n this.input = input ?? {};\n closure._init(this);\n }\n /**\n * @public\n */\n static getEndpointParameterInstructions() {\n return closure._ep;\n }\n /**\n * @internal\n */\n resolveMiddleware(stack, configuration, options) {\n return this.resolveMiddlewareWithContext(stack, configuration, options, {\n CommandCtor: CommandRef,\n middlewareFn: closure._middlewareFn,\n clientName: closure._clientName,\n commandName: closure._commandName,\n inputFilterSensitiveLog: closure._inputFilterSensitiveLog,\n outputFilterSensitiveLog: closure._outputFilterSensitiveLog,\n smithyContext: closure._smithyContext,\n additionalContext: closure._additionalContext\n });\n }\n }, __name(_a, \"CommandRef\"), _a);\n }\n};\n__name(_ClassBuilder, \"ClassBuilder\");\nvar ClassBuilder = _ClassBuilder;\n\n// src/constants.ts\nvar SENSITIVE_STRING = \"***SensitiveInformation***\";\n\n// src/create-aggregated-client.ts\nvar createAggregatedClient = /* @__PURE__ */ __name((commands, Client2) => {\n for (const command of Object.keys(commands)) {\n const CommandCtor = commands[command];\n const methodImpl = /* @__PURE__ */ __name(async function(args, optionsOrCb, cb) {\n const command2 = new CommandCtor(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command2, optionsOrCb);\n } else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expected http options but got ${typeof optionsOrCb}`);\n this.send(command2, optionsOrCb || {}, cb);\n } else {\n return this.send(command2, optionsOrCb);\n }\n }, \"methodImpl\");\n const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, \"\");\n Client2.prototype[methodName] = methodImpl;\n }\n}, \"createAggregatedClient\");\n\n// src/parse-utils.ts\nvar parseBoolean = /* @__PURE__ */ __name((value) => {\n switch (value) {\n case \"true\":\n return true;\n case \"false\":\n return false;\n default:\n throw new Error(`Unable to parse boolean value \"${value}\"`);\n }\n}, \"parseBoolean\");\nvar expectBoolean = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value === \"number\") {\n if (value === 0 || value === 1) {\n logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`));\n }\n if (value === 0) {\n return false;\n }\n if (value === 1) {\n return true;\n }\n }\n if (typeof value === \"string\") {\n const lower = value.toLowerCase();\n if (lower === \"false\" || lower === \"true\") {\n logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`));\n }\n if (lower === \"false\") {\n return false;\n }\n if (lower === \"true\") {\n return true;\n }\n }\n if (typeof value === \"boolean\") {\n return value;\n }\n throw new TypeError(`Expected boolean, got ${typeof value}: ${value}`);\n}, \"expectBoolean\");\nvar expectNumber = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value === \"string\") {\n const parsed = parseFloat(value);\n if (!Number.isNaN(parsed)) {\n if (String(parsed) !== String(value)) {\n logger.warn(stackTraceWarning(`Expected number but observed string: ${value}`));\n }\n return parsed;\n }\n }\n if (typeof value === \"number\") {\n return value;\n }\n throw new TypeError(`Expected number, got ${typeof value}: ${value}`);\n}, \"expectNumber\");\nvar MAX_FLOAT = Math.ceil(2 ** 127 * (2 - 2 ** -23));\nvar expectFloat32 = /* @__PURE__ */ __name((value) => {\n const expected = expectNumber(value);\n if (expected !== void 0 && !Number.isNaN(expected) && expected !== Infinity && expected !== -Infinity) {\n if (Math.abs(expected) > MAX_FLOAT) {\n throw new TypeError(`Expected 32-bit float, got ${value}`);\n }\n }\n return expected;\n}, \"expectFloat32\");\nvar expectLong = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (Number.isInteger(value) && !Number.isNaN(value)) {\n return value;\n }\n throw new TypeError(`Expected integer, got ${typeof value}: ${value}`);\n}, \"expectLong\");\nvar expectInt = expectLong;\nvar expectInt32 = /* @__PURE__ */ __name((value) => expectSizedInt(value, 32), \"expectInt32\");\nvar expectShort = /* @__PURE__ */ __name((value) => expectSizedInt(value, 16), \"expectShort\");\nvar expectByte = /* @__PURE__ */ __name((value) => expectSizedInt(value, 8), \"expectByte\");\nvar expectSizedInt = /* @__PURE__ */ __name((value, size) => {\n const expected = expectLong(value);\n if (expected !== void 0 && castInt(expected, size) !== expected) {\n throw new TypeError(`Expected ${size}-bit integer, got ${value}`);\n }\n return expected;\n}, \"expectSizedInt\");\nvar castInt = /* @__PURE__ */ __name((value, size) => {\n switch (size) {\n case 32:\n return Int32Array.of(value)[0];\n case 16:\n return Int16Array.of(value)[0];\n case 8:\n return Int8Array.of(value)[0];\n }\n}, \"castInt\");\nvar expectNonNull = /* @__PURE__ */ __name((value, location) => {\n if (value === null || value === void 0) {\n if (location) {\n throw new TypeError(`Expected a non-null value for ${location}`);\n }\n throw new TypeError(\"Expected a non-null value\");\n }\n return value;\n}, \"expectNonNull\");\nvar expectObject = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value === \"object\" && !Array.isArray(value)) {\n return value;\n }\n const receivedType = Array.isArray(value) ? \"array\" : typeof value;\n throw new TypeError(`Expected object, got ${receivedType}: ${value}`);\n}, \"expectObject\");\nvar expectString = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value === \"string\") {\n return value;\n }\n if ([\"boolean\", \"number\", \"bigint\"].includes(typeof value)) {\n logger.warn(stackTraceWarning(`Expected string, got ${typeof value}: ${value}`));\n return String(value);\n }\n throw new TypeError(`Expected string, got ${typeof value}: ${value}`);\n}, \"expectString\");\nvar expectUnion = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n const asObject = expectObject(value);\n const setKeys = Object.entries(asObject).filter(([, v]) => v != null).map(([k]) => k);\n if (setKeys.length === 0) {\n throw new TypeError(`Unions must have exactly one non-null member. None were found.`);\n }\n if (setKeys.length > 1) {\n throw new TypeError(`Unions must have exactly one non-null member. Keys ${setKeys} were not null.`);\n }\n return asObject;\n}, \"expectUnion\");\nvar strictParseDouble = /* @__PURE__ */ __name((value) => {\n if (typeof value == \"string\") {\n return expectNumber(parseNumber(value));\n }\n return expectNumber(value);\n}, \"strictParseDouble\");\nvar strictParseFloat = strictParseDouble;\nvar strictParseFloat32 = /* @__PURE__ */ __name((value) => {\n if (typeof value == \"string\") {\n return expectFloat32(parseNumber(value));\n }\n return expectFloat32(value);\n}, \"strictParseFloat32\");\nvar NUMBER_REGEX = /(-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)|(-?Infinity)|(NaN)/g;\nvar parseNumber = /* @__PURE__ */ __name((value) => {\n const matches = value.match(NUMBER_REGEX);\n if (matches === null || matches[0].length !== value.length) {\n throw new TypeError(`Expected real number, got implicit NaN`);\n }\n return parseFloat(value);\n}, \"parseNumber\");\nvar limitedParseDouble = /* @__PURE__ */ __name((value) => {\n if (typeof value == \"string\") {\n return parseFloatString(value);\n }\n return expectNumber(value);\n}, \"limitedParseDouble\");\nvar handleFloat = limitedParseDouble;\nvar limitedParseFloat = limitedParseDouble;\nvar limitedParseFloat32 = /* @__PURE__ */ __name((value) => {\n if (typeof value == \"string\") {\n return parseFloatString(value);\n }\n return expectFloat32(value);\n}, \"limitedParseFloat32\");\nvar parseFloatString = /* @__PURE__ */ __name((value) => {\n switch (value) {\n case \"NaN\":\n return NaN;\n case \"Infinity\":\n return Infinity;\n case \"-Infinity\":\n return -Infinity;\n default:\n throw new Error(`Unable to parse float value: ${value}`);\n }\n}, \"parseFloatString\");\nvar strictParseLong = /* @__PURE__ */ __name((value) => {\n if (typeof value === \"string\") {\n return expectLong(parseNumber(value));\n }\n return expectLong(value);\n}, \"strictParseLong\");\nvar strictParseInt = strictParseLong;\nvar strictParseInt32 = /* @__PURE__ */ __name((value) => {\n if (typeof value === \"string\") {\n return expectInt32(parseNumber(value));\n }\n return expectInt32(value);\n}, \"strictParseInt32\");\nvar strictParseShort = /* @__PURE__ */ __name((value) => {\n if (typeof value === \"string\") {\n return expectShort(parseNumber(value));\n }\n return expectShort(value);\n}, \"strictParseShort\");\nvar strictParseByte = /* @__PURE__ */ __name((value) => {\n if (typeof value === \"string\") {\n return expectByte(parseNumber(value));\n }\n return expectByte(value);\n}, \"strictParseByte\");\nvar stackTraceWarning = /* @__PURE__ */ __name((message) => {\n return String(new TypeError(message).stack || message).split(\"\\n\").slice(0, 5).filter((s) => !s.includes(\"stackTraceWarning\")).join(\"\\n\");\n}, \"stackTraceWarning\");\nvar logger = {\n warn: console.warn\n};\n\n// src/date-utils.ts\nvar DAYS = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\nvar MONTHS = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\nfunction dateToUtcString(date) {\n const year = date.getUTCFullYear();\n const month = date.getUTCMonth();\n const dayOfWeek = date.getUTCDay();\n const dayOfMonthInt = date.getUTCDate();\n const hoursInt = date.getUTCHours();\n const minutesInt = date.getUTCMinutes();\n const secondsInt = date.getUTCSeconds();\n const dayOfMonthString = dayOfMonthInt < 10 ? `0${dayOfMonthInt}` : `${dayOfMonthInt}`;\n const hoursString = hoursInt < 10 ? `0${hoursInt}` : `${hoursInt}`;\n const minutesString = minutesInt < 10 ? `0${minutesInt}` : `${minutesInt}`;\n const secondsString = secondsInt < 10 ? `0${secondsInt}` : `${secondsInt}`;\n return `${DAYS[dayOfWeek]}, ${dayOfMonthString} ${MONTHS[month]} ${year} ${hoursString}:${minutesString}:${secondsString} GMT`;\n}\n__name(dateToUtcString, \"dateToUtcString\");\nvar RFC3339 = new RegExp(/^(\\d{4})-(\\d{2})-(\\d{2})[tT](\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))?[zZ]$/);\nvar parseRfc3339DateTime = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value !== \"string\") {\n throw new TypeError(\"RFC-3339 date-times must be expressed as strings\");\n }\n const match = RFC3339.exec(value);\n if (!match) {\n throw new TypeError(\"Invalid RFC-3339 date-time value\");\n }\n const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds] = match;\n const year = strictParseShort(stripLeadingZeroes(yearStr));\n const month = parseDateValue(monthStr, \"month\", 1, 12);\n const day = parseDateValue(dayStr, \"day\", 1, 31);\n return buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds });\n}, \"parseRfc3339DateTime\");\nvar RFC3339_WITH_OFFSET = new RegExp(\n /^(\\d{4})-(\\d{2})-(\\d{2})[tT](\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))?(([-+]\\d{2}\\:\\d{2})|[zZ])$/\n);\nvar parseRfc3339DateTimeWithOffset = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value !== \"string\") {\n throw new TypeError(\"RFC-3339 date-times must be expressed as strings\");\n }\n const match = RFC3339_WITH_OFFSET.exec(value);\n if (!match) {\n throw new TypeError(\"Invalid RFC-3339 date-time value\");\n }\n const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, offsetStr] = match;\n const year = strictParseShort(stripLeadingZeroes(yearStr));\n const month = parseDateValue(monthStr, \"month\", 1, 12);\n const day = parseDateValue(dayStr, \"day\", 1, 31);\n const date = buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds });\n if (offsetStr.toUpperCase() != \"Z\") {\n date.setTime(date.getTime() - parseOffsetToMilliseconds(offsetStr));\n }\n return date;\n}, \"parseRfc3339DateTimeWithOffset\");\nvar IMF_FIXDATE = new RegExp(\n /^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))? GMT$/\n);\nvar RFC_850_DATE = new RegExp(\n /^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d{2}) (\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))? GMT$/\n);\nvar ASC_TIME = new RegExp(\n /^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\\d{2}) (\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))? (\\d{4})$/\n);\nvar parseRfc7231DateTime = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value !== \"string\") {\n throw new TypeError(\"RFC-7231 date-times must be expressed as strings\");\n }\n let match = IMF_FIXDATE.exec(value);\n if (match) {\n const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match;\n return buildDate(\n strictParseShort(stripLeadingZeroes(yearStr)),\n parseMonthByShortName(monthStr),\n parseDateValue(dayStr, \"day\", 1, 31),\n { hours, minutes, seconds, fractionalMilliseconds }\n );\n }\n match = RFC_850_DATE.exec(value);\n if (match) {\n const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match;\n return adjustRfc850Year(\n buildDate(parseTwoDigitYear(yearStr), parseMonthByShortName(monthStr), parseDateValue(dayStr, \"day\", 1, 31), {\n hours,\n minutes,\n seconds,\n fractionalMilliseconds\n })\n );\n }\n match = ASC_TIME.exec(value);\n if (match) {\n const [_, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, yearStr] = match;\n return buildDate(\n strictParseShort(stripLeadingZeroes(yearStr)),\n parseMonthByShortName(monthStr),\n parseDateValue(dayStr.trimLeft(), \"day\", 1, 31),\n { hours, minutes, seconds, fractionalMilliseconds }\n );\n }\n throw new TypeError(\"Invalid RFC-7231 date-time value\");\n}, \"parseRfc7231DateTime\");\nvar parseEpochTimestamp = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n let valueAsDouble;\n if (typeof value === \"number\") {\n valueAsDouble = value;\n } else if (typeof value === \"string\") {\n valueAsDouble = strictParseDouble(value);\n } else {\n throw new TypeError(\"Epoch timestamps must be expressed as floating point numbers or their string representation\");\n }\n if (Number.isNaN(valueAsDouble) || valueAsDouble === Infinity || valueAsDouble === -Infinity) {\n throw new TypeError(\"Epoch timestamps must be valid, non-Infinite, non-NaN numerics\");\n }\n return new Date(Math.round(valueAsDouble * 1e3));\n}, \"parseEpochTimestamp\");\nvar buildDate = /* @__PURE__ */ __name((year, month, day, time) => {\n const adjustedMonth = month - 1;\n validateDayOfMonth(year, adjustedMonth, day);\n return new Date(\n Date.UTC(\n year,\n adjustedMonth,\n day,\n parseDateValue(time.hours, \"hour\", 0, 23),\n parseDateValue(time.minutes, \"minute\", 0, 59),\n // seconds can go up to 60 for leap seconds\n parseDateValue(time.seconds, \"seconds\", 0, 60),\n parseMilliseconds(time.fractionalMilliseconds)\n )\n );\n}, \"buildDate\");\nvar parseTwoDigitYear = /* @__PURE__ */ __name((value) => {\n const thisYear = (/* @__PURE__ */ new Date()).getUTCFullYear();\n const valueInThisCentury = Math.floor(thisYear / 100) * 100 + strictParseShort(stripLeadingZeroes(value));\n if (valueInThisCentury < thisYear) {\n return valueInThisCentury + 100;\n }\n return valueInThisCentury;\n}, \"parseTwoDigitYear\");\nvar FIFTY_YEARS_IN_MILLIS = 50 * 365 * 24 * 60 * 60 * 1e3;\nvar adjustRfc850Year = /* @__PURE__ */ __name((input) => {\n if (input.getTime() - (/* @__PURE__ */ new Date()).getTime() > FIFTY_YEARS_IN_MILLIS) {\n return new Date(\n Date.UTC(\n input.getUTCFullYear() - 100,\n input.getUTCMonth(),\n input.getUTCDate(),\n input.getUTCHours(),\n input.getUTCMinutes(),\n input.getUTCSeconds(),\n input.getUTCMilliseconds()\n )\n );\n }\n return input;\n}, \"adjustRfc850Year\");\nvar parseMonthByShortName = /* @__PURE__ */ __name((value) => {\n const monthIdx = MONTHS.indexOf(value);\n if (monthIdx < 0) {\n throw new TypeError(`Invalid month: ${value}`);\n }\n return monthIdx + 1;\n}, \"parseMonthByShortName\");\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar validateDayOfMonth = /* @__PURE__ */ __name((year, month, day) => {\n let maxDays = DAYS_IN_MONTH[month];\n if (month === 1 && isLeapYear(year)) {\n maxDays = 29;\n }\n if (day > maxDays) {\n throw new TypeError(`Invalid day for ${MONTHS[month]} in ${year}: ${day}`);\n }\n}, \"validateDayOfMonth\");\nvar isLeapYear = /* @__PURE__ */ __name((year) => {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}, \"isLeapYear\");\nvar parseDateValue = /* @__PURE__ */ __name((value, type, lower, upper) => {\n const dateVal = strictParseByte(stripLeadingZeroes(value));\n if (dateVal < lower || dateVal > upper) {\n throw new TypeError(`${type} must be between ${lower} and ${upper}, inclusive`);\n }\n return dateVal;\n}, \"parseDateValue\");\nvar parseMilliseconds = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return 0;\n }\n return strictParseFloat32(\"0.\" + value) * 1e3;\n}, \"parseMilliseconds\");\nvar parseOffsetToMilliseconds = /* @__PURE__ */ __name((value) => {\n const directionStr = value[0];\n let direction = 1;\n if (directionStr == \"+\") {\n direction = 1;\n } else if (directionStr == \"-\") {\n direction = -1;\n } else {\n throw new TypeError(`Offset direction, ${directionStr}, must be \"+\" or \"-\"`);\n }\n const hour = Number(value.substring(1, 3));\n const minute = Number(value.substring(4, 6));\n return direction * (hour * 60 + minute) * 60 * 1e3;\n}, \"parseOffsetToMilliseconds\");\nvar stripLeadingZeroes = /* @__PURE__ */ __name((value) => {\n let idx = 0;\n while (idx < value.length - 1 && value.charAt(idx) === \"0\") {\n idx++;\n }\n if (idx === 0) {\n return value;\n }\n return value.slice(idx);\n}, \"stripLeadingZeroes\");\n\n// src/exceptions.ts\nvar _ServiceException = class _ServiceException extends Error {\n constructor(options) {\n super(options.message);\n Object.setPrototypeOf(this, _ServiceException.prototype);\n this.name = options.name;\n this.$fault = options.$fault;\n this.$metadata = options.$metadata;\n }\n};\n__name(_ServiceException, \"ServiceException\");\nvar ServiceException = _ServiceException;\nvar decorateServiceException = /* @__PURE__ */ __name((exception, additions = {}) => {\n Object.entries(additions).filter(([, v]) => v !== void 0).forEach(([k, v]) => {\n if (exception[k] == void 0 || exception[k] === \"\") {\n exception[k] = v;\n }\n });\n const message = exception.message || exception.Message || \"UnknownError\";\n exception.message = message;\n delete exception.Message;\n return exception;\n}, \"decorateServiceException\");\n\n// src/default-error-handler.ts\nvar throwDefaultError = /* @__PURE__ */ __name(({ output, parsedBody, exceptionCtor, errorCode }) => {\n const $metadata = deserializeMetadata(output);\n const statusCode = $metadata.httpStatusCode ? $metadata.httpStatusCode + \"\" : void 0;\n const response = new exceptionCtor({\n name: (parsedBody == null ? void 0 : parsedBody.code) || (parsedBody == null ? void 0 : parsedBody.Code) || errorCode || statusCode || \"UnknownError\",\n $fault: \"client\",\n $metadata\n });\n throw decorateServiceException(response, parsedBody);\n}, \"throwDefaultError\");\nvar withBaseException = /* @__PURE__ */ __name((ExceptionCtor) => {\n return ({ output, parsedBody, errorCode }) => {\n throwDefaultError({ output, parsedBody, exceptionCtor: ExceptionCtor, errorCode });\n };\n}, \"withBaseException\");\nvar deserializeMetadata = /* @__PURE__ */ __name((output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"]\n}), \"deserializeMetadata\");\n\n// src/defaults-mode.ts\nvar loadConfigsForDefaultMode = /* @__PURE__ */ __name((mode) => {\n switch (mode) {\n case \"standard\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 3100\n };\n case \"in-region\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 1100\n };\n case \"cross-region\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 3100\n };\n case \"mobile\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 3e4\n };\n default:\n return {};\n }\n}, \"loadConfigsForDefaultMode\");\n\n// src/emitWarningIfUnsupportedVersion.ts\nvar warningEmitted = false;\nvar emitWarningIfUnsupportedVersion = /* @__PURE__ */ __name((version) => {\n if (version && !warningEmitted && parseInt(version.substring(1, version.indexOf(\".\"))) < 14) {\n warningEmitted = true;\n }\n}, \"emitWarningIfUnsupportedVersion\");\n\n// src/extensions/checksum.ts\n\nvar getChecksumConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const checksumAlgorithms = [];\n for (const id in import_types.AlgorithmId) {\n const algorithmId = import_types.AlgorithmId[id];\n if (runtimeConfig[algorithmId] === void 0) {\n continue;\n }\n checksumAlgorithms.push({\n algorithmId: () => algorithmId,\n checksumConstructor: () => runtimeConfig[algorithmId]\n });\n }\n return {\n _checksumAlgorithms: checksumAlgorithms,\n addChecksumAlgorithm(algo) {\n this._checksumAlgorithms.push(algo);\n },\n checksumAlgorithms() {\n return this._checksumAlgorithms;\n }\n };\n}, \"getChecksumConfiguration\");\nvar resolveChecksumRuntimeConfig = /* @__PURE__ */ __name((clientConfig) => {\n const runtimeConfig = {};\n clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {\n runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor();\n });\n return runtimeConfig;\n}, \"resolveChecksumRuntimeConfig\");\n\n// src/extensions/retry.ts\nvar getRetryConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n let _retryStrategy = runtimeConfig.retryStrategy;\n return {\n setRetryStrategy(retryStrategy) {\n _retryStrategy = retryStrategy;\n },\n retryStrategy() {\n return _retryStrategy;\n }\n };\n}, \"getRetryConfiguration\");\nvar resolveRetryRuntimeConfig = /* @__PURE__ */ __name((retryStrategyConfiguration) => {\n const runtimeConfig = {};\n runtimeConfig.retryStrategy = retryStrategyConfiguration.retryStrategy();\n return runtimeConfig;\n}, \"resolveRetryRuntimeConfig\");\n\n// src/extensions/defaultExtensionConfiguration.ts\nvar getDefaultExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n return {\n ...getChecksumConfiguration(runtimeConfig),\n ...getRetryConfiguration(runtimeConfig)\n };\n}, \"getDefaultExtensionConfiguration\");\nvar getDefaultClientConfiguration = getDefaultExtensionConfiguration;\nvar resolveDefaultRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n ...resolveChecksumRuntimeConfig(config),\n ...resolveRetryRuntimeConfig(config)\n };\n}, \"resolveDefaultRuntimeConfig\");\n\n// src/extended-encode-uri-component.ts\nfunction extendedEncodeURIComponent(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\n__name(extendedEncodeURIComponent, \"extendedEncodeURIComponent\");\n\n// src/get-array-if-single-item.ts\nvar getArrayIfSingleItem = /* @__PURE__ */ __name((mayBeArray) => Array.isArray(mayBeArray) ? mayBeArray : [mayBeArray], \"getArrayIfSingleItem\");\n\n// src/get-value-from-text-node.ts\nvar getValueFromTextNode = /* @__PURE__ */ __name((obj) => {\n const textNodeName = \"#text\";\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && obj[key][textNodeName] !== void 0) {\n obj[key] = obj[key][textNodeName];\n } else if (typeof obj[key] === \"object\" && obj[key] !== null) {\n obj[key] = getValueFromTextNode(obj[key]);\n }\n }\n return obj;\n}, \"getValueFromTextNode\");\n\n// src/lazy-json.ts\nvar StringWrapper = /* @__PURE__ */ __name(function() {\n const Class = Object.getPrototypeOf(this).constructor;\n const Constructor = Function.bind.apply(String, [null, ...arguments]);\n const instance = new Constructor();\n Object.setPrototypeOf(instance, Class.prototype);\n return instance;\n}, \"StringWrapper\");\nStringWrapper.prototype = Object.create(String.prototype, {\n constructor: {\n value: StringWrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n});\nObject.setPrototypeOf(StringWrapper, String);\nvar _LazyJsonString = class _LazyJsonString extends StringWrapper {\n deserializeJSON() {\n return JSON.parse(super.toString());\n }\n toJSON() {\n return super.toString();\n }\n static fromObject(object) {\n if (object instanceof _LazyJsonString) {\n return object;\n } else if (object instanceof String || typeof object === \"string\") {\n return new _LazyJsonString(object);\n }\n return new _LazyJsonString(JSON.stringify(object));\n }\n};\n__name(_LazyJsonString, \"LazyJsonString\");\nvar LazyJsonString = _LazyJsonString;\n\n// src/object-mapping.ts\nfunction map(arg0, arg1, arg2) {\n let target;\n let filter;\n let instructions;\n if (typeof arg1 === \"undefined\" && typeof arg2 === \"undefined\") {\n target = {};\n instructions = arg0;\n } else {\n target = arg0;\n if (typeof arg1 === \"function\") {\n filter = arg1;\n instructions = arg2;\n return mapWithFilter(target, filter, instructions);\n } else {\n instructions = arg1;\n }\n }\n for (const key of Object.keys(instructions)) {\n if (!Array.isArray(instructions[key])) {\n target[key] = instructions[key];\n continue;\n }\n applyInstruction(target, null, instructions, key);\n }\n return target;\n}\n__name(map, \"map\");\nvar convertMap = /* @__PURE__ */ __name((target) => {\n const output = {};\n for (const [k, v] of Object.entries(target || {})) {\n output[k] = [, v];\n }\n return output;\n}, \"convertMap\");\nvar take = /* @__PURE__ */ __name((source, instructions) => {\n const out = {};\n for (const key in instructions) {\n applyInstruction(out, source, instructions, key);\n }\n return out;\n}, \"take\");\nvar mapWithFilter = /* @__PURE__ */ __name((target, filter, instructions) => {\n return map(\n target,\n Object.entries(instructions).reduce(\n (_instructions, [key, value]) => {\n if (Array.isArray(value)) {\n _instructions[key] = value;\n } else {\n if (typeof value === \"function\") {\n _instructions[key] = [filter, value()];\n } else {\n _instructions[key] = [filter, value];\n }\n }\n return _instructions;\n },\n {}\n )\n );\n}, \"mapWithFilter\");\nvar applyInstruction = /* @__PURE__ */ __name((target, source, instructions, targetKey) => {\n if (source !== null) {\n let instruction = instructions[targetKey];\n if (typeof instruction === \"function\") {\n instruction = [, instruction];\n }\n const [filter2 = nonNullish, valueFn = pass, sourceKey = targetKey] = instruction;\n if (typeof filter2 === \"function\" && filter2(source[sourceKey]) || typeof filter2 !== \"function\" && !!filter2) {\n target[targetKey] = valueFn(source[sourceKey]);\n }\n return;\n }\n let [filter, value] = instructions[targetKey];\n if (typeof value === \"function\") {\n let _value;\n const defaultFilterPassed = filter === void 0 && (_value = value()) != null;\n const customFilterPassed = typeof filter === \"function\" && !!filter(void 0) || typeof filter !== \"function\" && !!filter;\n if (defaultFilterPassed) {\n target[targetKey] = _value;\n } else if (customFilterPassed) {\n target[targetKey] = value();\n }\n } else {\n const defaultFilterPassed = filter === void 0 && value != null;\n const customFilterPassed = typeof filter === \"function\" && !!filter(value) || typeof filter !== \"function\" && !!filter;\n if (defaultFilterPassed || customFilterPassed) {\n target[targetKey] = value;\n }\n }\n}, \"applyInstruction\");\nvar nonNullish = /* @__PURE__ */ __name((_) => _ != null, \"nonNullish\");\nvar pass = /* @__PURE__ */ __name((_) => _, \"pass\");\n\n// src/resolve-path.ts\nvar resolvedPath = /* @__PURE__ */ __name((resolvedPath2, input, memberName, labelValueProvider, uriLabel, isGreedyLabel) => {\n if (input != null && input[memberName] !== void 0) {\n const labelValue = labelValueProvider();\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: \" + memberName + \".\");\n }\n resolvedPath2 = resolvedPath2.replace(\n uriLabel,\n isGreedyLabel ? labelValue.split(\"/\").map((segment) => extendedEncodeURIComponent(segment)).join(\"/\") : extendedEncodeURIComponent(labelValue)\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: \" + memberName + \".\");\n }\n return resolvedPath2;\n}, \"resolvedPath\");\n\n// src/ser-utils.ts\nvar serializeFloat = /* @__PURE__ */ __name((value) => {\n if (value !== value) {\n return \"NaN\";\n }\n switch (value) {\n case Infinity:\n return \"Infinity\";\n case -Infinity:\n return \"-Infinity\";\n default:\n return value;\n }\n}, \"serializeFloat\");\n\n// src/serde-json.ts\nvar _json = /* @__PURE__ */ __name((obj) => {\n if (obj == null) {\n return {};\n }\n if (Array.isArray(obj)) {\n return obj.filter((_) => _ != null).map(_json);\n }\n if (typeof obj === \"object\") {\n const target = {};\n for (const key of Object.keys(obj)) {\n if (obj[key] == null) {\n continue;\n }\n target[key] = _json(obj[key]);\n }\n return target;\n }\n return obj;\n}, \"_json\");\n\n// src/split-every.ts\nfunction splitEvery(value, delimiter, numDelimiters) {\n if (numDelimiters <= 0 || !Number.isInteger(numDelimiters)) {\n throw new Error(\"Invalid number of delimiters (\" + numDelimiters + \") for splitEvery.\");\n }\n const segments = value.split(delimiter);\n if (numDelimiters === 1) {\n return segments;\n }\n const compoundSegments = [];\n let currentSegment = \"\";\n for (let i = 0; i < segments.length; i++) {\n if (currentSegment === \"\") {\n currentSegment = segments[i];\n } else {\n currentSegment += delimiter + segments[i];\n }\n if ((i + 1) % numDelimiters === 0) {\n compoundSegments.push(currentSegment);\n currentSegment = \"\";\n }\n }\n if (currentSegment !== \"\") {\n compoundSegments.push(currentSegment);\n }\n return compoundSegments;\n}\n__name(splitEvery, \"splitEvery\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n NoOpLogger,\n Client,\n collectBody,\n Command,\n SENSITIVE_STRING,\n createAggregatedClient,\n dateToUtcString,\n parseRfc3339DateTime,\n parseRfc3339DateTimeWithOffset,\n parseRfc7231DateTime,\n parseEpochTimestamp,\n throwDefaultError,\n withBaseException,\n loadConfigsForDefaultMode,\n emitWarningIfUnsupportedVersion,\n getDefaultExtensionConfiguration,\n getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig,\n ServiceException,\n decorateServiceException,\n extendedEncodeURIComponent,\n getArrayIfSingleItem,\n getValueFromTextNode,\n StringWrapper,\n LazyJsonString,\n map,\n convertMap,\n take,\n parseBoolean,\n expectBoolean,\n expectNumber,\n expectFloat32,\n expectLong,\n expectInt,\n expectInt32,\n expectShort,\n expectByte,\n expectNonNull,\n expectObject,\n expectString,\n expectUnion,\n strictParseDouble,\n strictParseFloat,\n strictParseFloat32,\n limitedParseDouble,\n handleFloat,\n limitedParseFloat,\n limitedParseFloat32,\n strictParseLong,\n strictParseInt,\n strictParseInt32,\n strictParseShort,\n strictParseByte,\n logger,\n resolvedPath,\n serializeFloat,\n _json,\n splitEvery\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AlgorithmId: () => AlgorithmId,\n EndpointURLScheme: () => EndpointURLScheme,\n FieldPosition: () => FieldPosition,\n HttpApiKeyAuthLocation: () => HttpApiKeyAuthLocation,\n HttpAuthLocation: () => HttpAuthLocation,\n IniSectionType: () => IniSectionType,\n RequestHandlerProtocol: () => RequestHandlerProtocol,\n SMITHY_CONTEXT_KEY: () => SMITHY_CONTEXT_KEY,\n getDefaultClientConfiguration: () => getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig: () => resolveDefaultRuntimeConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/auth/auth.ts\nvar HttpAuthLocation = /* @__PURE__ */ ((HttpAuthLocation2) => {\n HttpAuthLocation2[\"HEADER\"] = \"header\";\n HttpAuthLocation2[\"QUERY\"] = \"query\";\n return HttpAuthLocation2;\n})(HttpAuthLocation || {});\n\n// src/auth/HttpApiKeyAuth.ts\nvar HttpApiKeyAuthLocation = /* @__PURE__ */ ((HttpApiKeyAuthLocation2) => {\n HttpApiKeyAuthLocation2[\"HEADER\"] = \"header\";\n HttpApiKeyAuthLocation2[\"QUERY\"] = \"query\";\n return HttpApiKeyAuthLocation2;\n})(HttpApiKeyAuthLocation || {});\n\n// src/endpoint.ts\nvar EndpointURLScheme = /* @__PURE__ */ ((EndpointURLScheme2) => {\n EndpointURLScheme2[\"HTTP\"] = \"http\";\n EndpointURLScheme2[\"HTTPS\"] = \"https\";\n return EndpointURLScheme2;\n})(EndpointURLScheme || {});\n\n// src/extensions/checksum.ts\nvar AlgorithmId = /* @__PURE__ */ ((AlgorithmId2) => {\n AlgorithmId2[\"MD5\"] = \"md5\";\n AlgorithmId2[\"CRC32\"] = \"crc32\";\n AlgorithmId2[\"CRC32C\"] = \"crc32c\";\n AlgorithmId2[\"SHA1\"] = \"sha1\";\n AlgorithmId2[\"SHA256\"] = \"sha256\";\n return AlgorithmId2;\n})(AlgorithmId || {});\nvar getChecksumConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const checksumAlgorithms = [];\n if (runtimeConfig.sha256 !== void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"sha256\" /* SHA256 */,\n checksumConstructor: () => runtimeConfig.sha256\n });\n }\n if (runtimeConfig.md5 != void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"md5\" /* MD5 */,\n checksumConstructor: () => runtimeConfig.md5\n });\n }\n return {\n _checksumAlgorithms: checksumAlgorithms,\n addChecksumAlgorithm(algo) {\n this._checksumAlgorithms.push(algo);\n },\n checksumAlgorithms() {\n return this._checksumAlgorithms;\n }\n };\n}, \"getChecksumConfiguration\");\nvar resolveChecksumRuntimeConfig = /* @__PURE__ */ __name((clientConfig) => {\n const runtimeConfig = {};\n clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {\n runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor();\n });\n return runtimeConfig;\n}, \"resolveChecksumRuntimeConfig\");\n\n// src/extensions/defaultClientConfiguration.ts\nvar getDefaultClientConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n return {\n ...getChecksumConfiguration(runtimeConfig)\n };\n}, \"getDefaultClientConfiguration\");\nvar resolveDefaultRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n ...resolveChecksumRuntimeConfig(config)\n };\n}, \"resolveDefaultRuntimeConfig\");\n\n// src/http.ts\nvar FieldPosition = /* @__PURE__ */ ((FieldPosition2) => {\n FieldPosition2[FieldPosition2[\"HEADER\"] = 0] = \"HEADER\";\n FieldPosition2[FieldPosition2[\"TRAILER\"] = 1] = \"TRAILER\";\n return FieldPosition2;\n})(FieldPosition || {});\n\n// src/middleware.ts\nvar SMITHY_CONTEXT_KEY = \"__smithy_context\";\n\n// src/profile.ts\nvar IniSectionType = /* @__PURE__ */ ((IniSectionType2) => {\n IniSectionType2[\"PROFILE\"] = \"profile\";\n IniSectionType2[\"SSO_SESSION\"] = \"sso-session\";\n IniSectionType2[\"SERVICES\"] = \"services\";\n return IniSectionType2;\n})(IniSectionType || {});\n\n// src/transfer.ts\nvar RequestHandlerProtocol = /* @__PURE__ */ ((RequestHandlerProtocol2) => {\n RequestHandlerProtocol2[\"HTTP_0_9\"] = \"http/0.9\";\n RequestHandlerProtocol2[\"HTTP_1_0\"] = \"http/1.0\";\n RequestHandlerProtocol2[\"TDS_8_0\"] = \"tds/8.0\";\n return RequestHandlerProtocol2;\n})(RequestHandlerProtocol || {});\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n HttpAuthLocation,\n HttpApiKeyAuthLocation,\n EndpointURLScheme,\n AlgorithmId,\n getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig,\n FieldPosition,\n SMITHY_CONTEXT_KEY,\n IniSectionType,\n RequestHandlerProtocol\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n parseUrl: () => parseUrl\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_querystring_parser = require(\"@smithy/querystring-parser\");\nvar parseUrl = /* @__PURE__ */ __name((url) => {\n if (typeof url === \"string\") {\n return parseUrl(new URL(url));\n }\n const { hostname, pathname, port, protocol, search } = url;\n let query;\n if (search) {\n query = (0, import_querystring_parser.parseQueryString)(search);\n }\n return {\n hostname,\n port: port ? parseInt(port) : void 0,\n protocol,\n path: pathname,\n query\n };\n}, \"parseUrl\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n parseUrl\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromBase64 = void 0;\nconst util_buffer_from_1 = require(\"@smithy/util-buffer-from\");\nconst BASE64_REGEX = /^[A-Za-z0-9+/]*={0,2}$/;\nconst fromBase64 = (input) => {\n if ((input.length * 3) % 4 !== 0) {\n throw new TypeError(`Incorrect padding on base64 string.`);\n }\n if (!BASE64_REGEX.exec(input)) {\n throw new TypeError(`Invalid base64 string.`);\n }\n const buffer = (0, util_buffer_from_1.fromString)(input, \"base64\");\n return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n};\nexports.fromBase64 = fromBase64;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\nmodule.exports = __toCommonJS(src_exports);\n__reExport(src_exports, require(\"././fromBase64\"), module.exports);\n__reExport(src_exports, require(\"././toBase64\"), module.exports);\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromBase64,\n toBase64\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toBase64 = void 0;\nconst util_buffer_from_1 = require(\"@smithy/util-buffer-from\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst toBase64 = (_input) => {\n let input;\n if (typeof _input === \"string\") {\n input = (0, util_utf8_1.fromUtf8)(_input);\n }\n else {\n input = _input;\n }\n if (typeof input !== \"object\" || typeof input.byteOffset !== \"number\" || typeof input.byteLength !== \"number\") {\n throw new Error(\"@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.\");\n }\n return (0, util_buffer_from_1.fromArrayBuffer)(input.buffer, input.byteOffset, input.byteLength).toString(\"base64\");\n};\nexports.toBase64 = toBase64;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n calculateBodyLength: () => calculateBodyLength\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/calculateBodyLength.ts\nvar import_fs = require(\"fs\");\nvar calculateBodyLength = /* @__PURE__ */ __name((body) => {\n if (!body) {\n return 0;\n }\n if (typeof body === \"string\") {\n return Buffer.byteLength(body);\n } else if (typeof body.byteLength === \"number\") {\n return body.byteLength;\n } else if (typeof body.size === \"number\") {\n return body.size;\n } else if (typeof body.start === \"number\" && typeof body.end === \"number\") {\n return body.end + 1 - body.start;\n } else if (typeof body.path === \"string\" || Buffer.isBuffer(body.path)) {\n return (0, import_fs.lstatSync)(body.path).size;\n } else if (typeof body.fd === \"number\") {\n return (0, import_fs.fstatSync)(body.fd).size;\n }\n throw new Error(`Body Length computation failed for ${body}`);\n}, \"calculateBodyLength\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n calculateBodyLength\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromArrayBuffer: () => fromArrayBuffer,\n fromString: () => fromString\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_is_array_buffer = require(\"@smithy/is-array-buffer\");\nvar import_buffer = require(\"buffer\");\nvar fromArrayBuffer = /* @__PURE__ */ __name((input, offset = 0, length = input.byteLength - offset) => {\n if (!(0, import_is_array_buffer.isArrayBuffer)(input)) {\n throw new TypeError(`The \"input\" argument must be ArrayBuffer. Received type ${typeof input} (${input})`);\n }\n return import_buffer.Buffer.from(input, offset, length);\n}, \"fromArrayBuffer\");\nvar fromString = /* @__PURE__ */ __name((input, encoding) => {\n if (typeof input !== \"string\") {\n throw new TypeError(`The \"input\" argument must be of type string. Received type ${typeof input} (${input})`);\n }\n return encoding ? import_buffer.Buffer.from(input, encoding) : import_buffer.Buffer.from(input);\n}, \"fromString\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromArrayBuffer,\n fromString\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n SelectorType: () => SelectorType,\n booleanSelector: () => booleanSelector,\n numberSelector: () => numberSelector\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/booleanSelector.ts\nvar booleanSelector = /* @__PURE__ */ __name((obj, key, type) => {\n if (!(key in obj))\n return void 0;\n if (obj[key] === \"true\")\n return true;\n if (obj[key] === \"false\")\n return false;\n throw new Error(`Cannot load ${type} \"${key}\". Expected \"true\" or \"false\", got ${obj[key]}.`);\n}, \"booleanSelector\");\n\n// src/numberSelector.ts\nvar numberSelector = /* @__PURE__ */ __name((obj, key, type) => {\n if (!(key in obj))\n return void 0;\n const numberValue = parseInt(obj[key], 10);\n if (Number.isNaN(numberValue)) {\n throw new TypeError(`Cannot load ${type} '${key}'. Expected number, got '${obj[key]}'.`);\n }\n return numberValue;\n}, \"numberSelector\");\n\n// src/types.ts\nvar SelectorType = /* @__PURE__ */ ((SelectorType2) => {\n SelectorType2[\"ENV\"] = \"env\";\n SelectorType2[\"CONFIG\"] = \"shared config entry\";\n return SelectorType2;\n})(SelectorType || {});\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n booleanSelector,\n numberSelector,\n SelectorType\n});\n\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n resolveDefaultsModeConfig: () => resolveDefaultsModeConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/resolveDefaultsModeConfig.ts\nvar import_config_resolver = require(\"@smithy/config-resolver\");\nvar import_node_config_provider = require(\"@smithy/node-config-provider\");\nvar import_property_provider = require(\"@smithy/property-provider\");\n\n// src/constants.ts\nvar AWS_EXECUTION_ENV = \"AWS_EXECUTION_ENV\";\nvar AWS_REGION_ENV = \"AWS_REGION\";\nvar AWS_DEFAULT_REGION_ENV = \"AWS_DEFAULT_REGION\";\nvar ENV_IMDS_DISABLED = \"AWS_EC2_METADATA_DISABLED\";\nvar DEFAULTS_MODE_OPTIONS = [\"in-region\", \"cross-region\", \"mobile\", \"standard\", \"legacy\"];\nvar IMDS_REGION_PATH = \"/latest/meta-data/placement/region\";\n\n// src/defaultsModeConfig.ts\nvar AWS_DEFAULTS_MODE_ENV = \"AWS_DEFAULTS_MODE\";\nvar AWS_DEFAULTS_MODE_CONFIG = \"defaults_mode\";\nvar NODE_DEFAULTS_MODE_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => {\n return env[AWS_DEFAULTS_MODE_ENV];\n },\n configFileSelector: (profile) => {\n return profile[AWS_DEFAULTS_MODE_CONFIG];\n },\n default: \"legacy\"\n};\n\n// src/resolveDefaultsModeConfig.ts\nvar resolveDefaultsModeConfig = /* @__PURE__ */ __name(({\n region = (0, import_node_config_provider.loadConfig)(import_config_resolver.NODE_REGION_CONFIG_OPTIONS),\n defaultsMode = (0, import_node_config_provider.loadConfig)(NODE_DEFAULTS_MODE_CONFIG_OPTIONS)\n} = {}) => (0, import_property_provider.memoize)(async () => {\n const mode = typeof defaultsMode === \"function\" ? await defaultsMode() : defaultsMode;\n switch (mode == null ? void 0 : mode.toLowerCase()) {\n case \"auto\":\n return resolveNodeDefaultsModeAuto(region);\n case \"in-region\":\n case \"cross-region\":\n case \"mobile\":\n case \"standard\":\n case \"legacy\":\n return Promise.resolve(mode == null ? void 0 : mode.toLocaleLowerCase());\n case void 0:\n return Promise.resolve(\"legacy\");\n default:\n throw new Error(\n `Invalid parameter for \"defaultsMode\", expect ${DEFAULTS_MODE_OPTIONS.join(\", \")}, got ${mode}`\n );\n }\n}), \"resolveDefaultsModeConfig\");\nvar resolveNodeDefaultsModeAuto = /* @__PURE__ */ __name(async (clientRegion) => {\n if (clientRegion) {\n const resolvedRegion = typeof clientRegion === \"function\" ? await clientRegion() : clientRegion;\n const inferredRegion = await inferPhysicalRegion();\n if (!inferredRegion) {\n return \"standard\";\n }\n if (resolvedRegion === inferredRegion) {\n return \"in-region\";\n } else {\n return \"cross-region\";\n }\n }\n return \"standard\";\n}, \"resolveNodeDefaultsModeAuto\");\nvar inferPhysicalRegion = /* @__PURE__ */ __name(async () => {\n if (process.env[AWS_EXECUTION_ENV] && (process.env[AWS_REGION_ENV] || process.env[AWS_DEFAULT_REGION_ENV])) {\n return process.env[AWS_REGION_ENV] ?? process.env[AWS_DEFAULT_REGION_ENV];\n }\n if (!process.env[ENV_IMDS_DISABLED]) {\n try {\n const { getInstanceMetadataEndpoint, httpRequest } = await Promise.resolve().then(() => __toESM(require(\"@smithy/credential-provider-imds\")));\n const endpoint = await getInstanceMetadataEndpoint();\n return (await httpRequest({ ...endpoint, path: IMDS_REGION_PATH })).toString();\n } catch (e) {\n }\n }\n}, \"inferPhysicalRegion\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n resolveDefaultsModeConfig\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n EndpointError: () => EndpointError,\n customEndpointFunctions: () => customEndpointFunctions,\n isIpAddress: () => isIpAddress,\n isValidHostLabel: () => isValidHostLabel,\n resolveEndpoint: () => resolveEndpoint\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/lib/isIpAddress.ts\nvar IP_V4_REGEX = new RegExp(\n `^(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}$`\n);\nvar isIpAddress = /* @__PURE__ */ __name((value) => IP_V4_REGEX.test(value) || value.startsWith(\"[\") && value.endsWith(\"]\"), \"isIpAddress\");\n\n// src/lib/isValidHostLabel.ts\nvar VALID_HOST_LABEL_REGEX = new RegExp(`^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$`);\nvar isValidHostLabel = /* @__PURE__ */ __name((value, allowSubDomains = false) => {\n if (!allowSubDomains) {\n return VALID_HOST_LABEL_REGEX.test(value);\n }\n const labels = value.split(\".\");\n for (const label of labels) {\n if (!isValidHostLabel(label)) {\n return false;\n }\n }\n return true;\n}, \"isValidHostLabel\");\n\n// src/utils/customEndpointFunctions.ts\nvar customEndpointFunctions = {};\n\n// src/debug/debugId.ts\nvar debugId = \"endpoints\";\n\n// src/debug/toDebugString.ts\nfunction toDebugString(input) {\n if (typeof input !== \"object\" || input == null) {\n return input;\n }\n if (\"ref\" in input) {\n return `$${toDebugString(input.ref)}`;\n }\n if (\"fn\" in input) {\n return `${input.fn}(${(input.argv || []).map(toDebugString).join(\", \")})`;\n }\n return JSON.stringify(input, null, 2);\n}\n__name(toDebugString, \"toDebugString\");\n\n// src/types/EndpointError.ts\nvar _EndpointError = class _EndpointError extends Error {\n constructor(message) {\n super(message);\n this.name = \"EndpointError\";\n }\n};\n__name(_EndpointError, \"EndpointError\");\nvar EndpointError = _EndpointError;\n\n// src/lib/booleanEquals.ts\nvar booleanEquals = /* @__PURE__ */ __name((value1, value2) => value1 === value2, \"booleanEquals\");\n\n// src/lib/getAttrPathList.ts\nvar getAttrPathList = /* @__PURE__ */ __name((path) => {\n const parts = path.split(\".\");\n const pathList = [];\n for (const part of parts) {\n const squareBracketIndex = part.indexOf(\"[\");\n if (squareBracketIndex !== -1) {\n if (part.indexOf(\"]\") !== part.length - 1) {\n throw new EndpointError(`Path: '${path}' does not end with ']'`);\n }\n const arrayIndex = part.slice(squareBracketIndex + 1, -1);\n if (Number.isNaN(parseInt(arrayIndex))) {\n throw new EndpointError(`Invalid array index: '${arrayIndex}' in path: '${path}'`);\n }\n if (squareBracketIndex !== 0) {\n pathList.push(part.slice(0, squareBracketIndex));\n }\n pathList.push(arrayIndex);\n } else {\n pathList.push(part);\n }\n }\n return pathList;\n}, \"getAttrPathList\");\n\n// src/lib/getAttr.ts\nvar getAttr = /* @__PURE__ */ __name((value, path) => getAttrPathList(path).reduce((acc, index) => {\n if (typeof acc !== \"object\") {\n throw new EndpointError(`Index '${index}' in '${path}' not found in '${JSON.stringify(value)}'`);\n } else if (Array.isArray(acc)) {\n return acc[parseInt(index)];\n }\n return acc[index];\n}, value), \"getAttr\");\n\n// src/lib/isSet.ts\nvar isSet = /* @__PURE__ */ __name((value) => value != null, \"isSet\");\n\n// src/lib/not.ts\nvar not = /* @__PURE__ */ __name((value) => !value, \"not\");\n\n// src/lib/parseURL.ts\nvar import_types3 = require(\"@smithy/types\");\nvar DEFAULT_PORTS = {\n [import_types3.EndpointURLScheme.HTTP]: 80,\n [import_types3.EndpointURLScheme.HTTPS]: 443\n};\nvar parseURL = /* @__PURE__ */ __name((value) => {\n const whatwgURL = (() => {\n try {\n if (value instanceof URL) {\n return value;\n }\n if (typeof value === \"object\" && \"hostname\" in value) {\n const { hostname: hostname2, port, protocol: protocol2 = \"\", path = \"\", query = {} } = value;\n const url = new URL(`${protocol2}//${hostname2}${port ? `:${port}` : \"\"}${path}`);\n url.search = Object.entries(query).map(([k, v]) => `${k}=${v}`).join(\"&\");\n return url;\n }\n return new URL(value);\n } catch (error) {\n return null;\n }\n })();\n if (!whatwgURL) {\n console.error(`Unable to parse ${JSON.stringify(value)} as a whatwg URL.`);\n return null;\n }\n const urlString = whatwgURL.href;\n const { host, hostname, pathname, protocol, search } = whatwgURL;\n if (search) {\n return null;\n }\n const scheme = protocol.slice(0, -1);\n if (!Object.values(import_types3.EndpointURLScheme).includes(scheme)) {\n return null;\n }\n const isIp = isIpAddress(hostname);\n const inputContainsDefaultPort = urlString.includes(`${host}:${DEFAULT_PORTS[scheme]}`) || typeof value === \"string\" && value.includes(`${host}:${DEFAULT_PORTS[scheme]}`);\n const authority = `${host}${inputContainsDefaultPort ? `:${DEFAULT_PORTS[scheme]}` : ``}`;\n return {\n scheme,\n authority,\n path: pathname,\n normalizedPath: pathname.endsWith(\"/\") ? pathname : `${pathname}/`,\n isIp\n };\n}, \"parseURL\");\n\n// src/lib/stringEquals.ts\nvar stringEquals = /* @__PURE__ */ __name((value1, value2) => value1 === value2, \"stringEquals\");\n\n// src/lib/substring.ts\nvar substring = /* @__PURE__ */ __name((input, start, stop, reverse) => {\n if (start >= stop || input.length < stop) {\n return null;\n }\n if (!reverse) {\n return input.substring(start, stop);\n }\n return input.substring(input.length - stop, input.length - start);\n}, \"substring\");\n\n// src/lib/uriEncode.ts\nvar uriEncode = /* @__PURE__ */ __name((value) => encodeURIComponent(value).replace(/[!*'()]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`), \"uriEncode\");\n\n// src/utils/endpointFunctions.ts\nvar endpointFunctions = {\n booleanEquals,\n getAttr,\n isSet,\n isValidHostLabel,\n not,\n parseURL,\n stringEquals,\n substring,\n uriEncode\n};\n\n// src/utils/evaluateTemplate.ts\nvar evaluateTemplate = /* @__PURE__ */ __name((template, options) => {\n const evaluatedTemplateArr = [];\n const templateContext = {\n ...options.endpointParams,\n ...options.referenceRecord\n };\n let currentIndex = 0;\n while (currentIndex < template.length) {\n const openingBraceIndex = template.indexOf(\"{\", currentIndex);\n if (openingBraceIndex === -1) {\n evaluatedTemplateArr.push(template.slice(currentIndex));\n break;\n }\n evaluatedTemplateArr.push(template.slice(currentIndex, openingBraceIndex));\n const closingBraceIndex = template.indexOf(\"}\", openingBraceIndex);\n if (closingBraceIndex === -1) {\n evaluatedTemplateArr.push(template.slice(openingBraceIndex));\n break;\n }\n if (template[openingBraceIndex + 1] === \"{\" && template[closingBraceIndex + 1] === \"}\") {\n evaluatedTemplateArr.push(template.slice(openingBraceIndex + 1, closingBraceIndex));\n currentIndex = closingBraceIndex + 2;\n }\n const parameterName = template.substring(openingBraceIndex + 1, closingBraceIndex);\n if (parameterName.includes(\"#\")) {\n const [refName, attrName] = parameterName.split(\"#\");\n evaluatedTemplateArr.push(getAttr(templateContext[refName], attrName));\n } else {\n evaluatedTemplateArr.push(templateContext[parameterName]);\n }\n currentIndex = closingBraceIndex + 1;\n }\n return evaluatedTemplateArr.join(\"\");\n}, \"evaluateTemplate\");\n\n// src/utils/getReferenceValue.ts\nvar getReferenceValue = /* @__PURE__ */ __name(({ ref }, options) => {\n const referenceRecord = {\n ...options.endpointParams,\n ...options.referenceRecord\n };\n return referenceRecord[ref];\n}, \"getReferenceValue\");\n\n// src/utils/evaluateExpression.ts\nvar evaluateExpression = /* @__PURE__ */ __name((obj, keyName, options) => {\n if (typeof obj === \"string\") {\n return evaluateTemplate(obj, options);\n } else if (obj[\"fn\"]) {\n return callFunction(obj, options);\n } else if (obj[\"ref\"]) {\n return getReferenceValue(obj, options);\n }\n throw new EndpointError(`'${keyName}': ${String(obj)} is not a string, function or reference.`);\n}, \"evaluateExpression\");\n\n// src/utils/callFunction.ts\nvar callFunction = /* @__PURE__ */ __name(({ fn, argv }, options) => {\n const evaluatedArgs = argv.map(\n (arg) => [\"boolean\", \"number\"].includes(typeof arg) ? arg : evaluateExpression(arg, \"arg\", options)\n );\n const fnSegments = fn.split(\".\");\n if (fnSegments[0] in customEndpointFunctions && fnSegments[1] != null) {\n return customEndpointFunctions[fnSegments[0]][fnSegments[1]](...evaluatedArgs);\n }\n return endpointFunctions[fn](...evaluatedArgs);\n}, \"callFunction\");\n\n// src/utils/evaluateCondition.ts\nvar evaluateCondition = /* @__PURE__ */ __name(({ assign, ...fnArgs }, options) => {\n var _a, _b;\n if (assign && assign in options.referenceRecord) {\n throw new EndpointError(`'${assign}' is already defined in Reference Record.`);\n }\n const value = callFunction(fnArgs, options);\n (_b = (_a = options.logger) == null ? void 0 : _a.debug) == null ? void 0 : _b.call(_a, debugId, `evaluateCondition: ${toDebugString(fnArgs)} = ${toDebugString(value)}`);\n return {\n result: value === \"\" ? true : !!value,\n ...assign != null && { toAssign: { name: assign, value } }\n };\n}, \"evaluateCondition\");\n\n// src/utils/evaluateConditions.ts\nvar evaluateConditions = /* @__PURE__ */ __name((conditions = [], options) => {\n var _a, _b;\n const conditionsReferenceRecord = {};\n for (const condition of conditions) {\n const { result, toAssign } = evaluateCondition(condition, {\n ...options,\n referenceRecord: {\n ...options.referenceRecord,\n ...conditionsReferenceRecord\n }\n });\n if (!result) {\n return { result };\n }\n if (toAssign) {\n conditionsReferenceRecord[toAssign.name] = toAssign.value;\n (_b = (_a = options.logger) == null ? void 0 : _a.debug) == null ? void 0 : _b.call(_a, debugId, `assign: ${toAssign.name} := ${toDebugString(toAssign.value)}`);\n }\n }\n return { result: true, referenceRecord: conditionsReferenceRecord };\n}, \"evaluateConditions\");\n\n// src/utils/getEndpointHeaders.ts\nvar getEndpointHeaders = /* @__PURE__ */ __name((headers, options) => Object.entries(headers).reduce(\n (acc, [headerKey, headerVal]) => ({\n ...acc,\n [headerKey]: headerVal.map((headerValEntry) => {\n const processedExpr = evaluateExpression(headerValEntry, \"Header value entry\", options);\n if (typeof processedExpr !== \"string\") {\n throw new EndpointError(`Header '${headerKey}' value '${processedExpr}' is not a string`);\n }\n return processedExpr;\n })\n }),\n {}\n), \"getEndpointHeaders\");\n\n// src/utils/getEndpointProperty.ts\nvar getEndpointProperty = /* @__PURE__ */ __name((property, options) => {\n if (Array.isArray(property)) {\n return property.map((propertyEntry) => getEndpointProperty(propertyEntry, options));\n }\n switch (typeof property) {\n case \"string\":\n return evaluateTemplate(property, options);\n case \"object\":\n if (property === null) {\n throw new EndpointError(`Unexpected endpoint property: ${property}`);\n }\n return getEndpointProperties(property, options);\n case \"boolean\":\n return property;\n default:\n throw new EndpointError(`Unexpected endpoint property type: ${typeof property}`);\n }\n}, \"getEndpointProperty\");\n\n// src/utils/getEndpointProperties.ts\nvar getEndpointProperties = /* @__PURE__ */ __name((properties, options) => Object.entries(properties).reduce(\n (acc, [propertyKey, propertyVal]) => ({\n ...acc,\n [propertyKey]: getEndpointProperty(propertyVal, options)\n }),\n {}\n), \"getEndpointProperties\");\n\n// src/utils/getEndpointUrl.ts\nvar getEndpointUrl = /* @__PURE__ */ __name((endpointUrl, options) => {\n const expression = evaluateExpression(endpointUrl, \"Endpoint URL\", options);\n if (typeof expression === \"string\") {\n try {\n return new URL(expression);\n } catch (error) {\n console.error(`Failed to construct URL with ${expression}`, error);\n throw error;\n }\n }\n throw new EndpointError(`Endpoint URL must be a string, got ${typeof expression}`);\n}, \"getEndpointUrl\");\n\n// src/utils/evaluateEndpointRule.ts\nvar evaluateEndpointRule = /* @__PURE__ */ __name((endpointRule, options) => {\n var _a, _b;\n const { conditions, endpoint } = endpointRule;\n const { result, referenceRecord } = evaluateConditions(conditions, options);\n if (!result) {\n return;\n }\n const endpointRuleOptions = {\n ...options,\n referenceRecord: { ...options.referenceRecord, ...referenceRecord }\n };\n const { url, properties, headers } = endpoint;\n (_b = (_a = options.logger) == null ? void 0 : _a.debug) == null ? void 0 : _b.call(_a, debugId, `Resolving endpoint from template: ${toDebugString(endpoint)}`);\n return {\n ...headers != void 0 && {\n headers: getEndpointHeaders(headers, endpointRuleOptions)\n },\n ...properties != void 0 && {\n properties: getEndpointProperties(properties, endpointRuleOptions)\n },\n url: getEndpointUrl(url, endpointRuleOptions)\n };\n}, \"evaluateEndpointRule\");\n\n// src/utils/evaluateErrorRule.ts\nvar evaluateErrorRule = /* @__PURE__ */ __name((errorRule, options) => {\n const { conditions, error } = errorRule;\n const { result, referenceRecord } = evaluateConditions(conditions, options);\n if (!result) {\n return;\n }\n throw new EndpointError(\n evaluateExpression(error, \"Error\", {\n ...options,\n referenceRecord: { ...options.referenceRecord, ...referenceRecord }\n })\n );\n}, \"evaluateErrorRule\");\n\n// src/utils/evaluateTreeRule.ts\nvar evaluateTreeRule = /* @__PURE__ */ __name((treeRule, options) => {\n const { conditions, rules } = treeRule;\n const { result, referenceRecord } = evaluateConditions(conditions, options);\n if (!result) {\n return;\n }\n return evaluateRules(rules, {\n ...options,\n referenceRecord: { ...options.referenceRecord, ...referenceRecord }\n });\n}, \"evaluateTreeRule\");\n\n// src/utils/evaluateRules.ts\nvar evaluateRules = /* @__PURE__ */ __name((rules, options) => {\n for (const rule of rules) {\n if (rule.type === \"endpoint\") {\n const endpointOrUndefined = evaluateEndpointRule(rule, options);\n if (endpointOrUndefined) {\n return endpointOrUndefined;\n }\n } else if (rule.type === \"error\") {\n evaluateErrorRule(rule, options);\n } else if (rule.type === \"tree\") {\n const endpointOrUndefined = evaluateTreeRule(rule, options);\n if (endpointOrUndefined) {\n return endpointOrUndefined;\n }\n } else {\n throw new EndpointError(`Unknown endpoint rule: ${rule}`);\n }\n }\n throw new EndpointError(`Rules evaluation failed`);\n}, \"evaluateRules\");\n\n// src/resolveEndpoint.ts\nvar resolveEndpoint = /* @__PURE__ */ __name((ruleSetObject, options) => {\n var _a, _b, _c, _d, _e;\n const { endpointParams, logger } = options;\n const { parameters, rules } = ruleSetObject;\n (_b = (_a = options.logger) == null ? void 0 : _a.debug) == null ? void 0 : _b.call(_a, `${debugId} Initial EndpointParams: ${toDebugString(endpointParams)}`);\n const paramsWithDefault = Object.entries(parameters).filter(([, v]) => v.default != null).map(([k, v]) => [k, v.default]);\n if (paramsWithDefault.length > 0) {\n for (const [paramKey, paramDefaultValue] of paramsWithDefault) {\n endpointParams[paramKey] = endpointParams[paramKey] ?? paramDefaultValue;\n }\n }\n const requiredParams = Object.entries(parameters).filter(([, v]) => v.required).map(([k]) => k);\n for (const requiredParam of requiredParams) {\n if (endpointParams[requiredParam] == null) {\n throw new EndpointError(`Missing required parameter: '${requiredParam}'`);\n }\n }\n const endpoint = evaluateRules(rules, { endpointParams, logger, referenceRecord: {} });\n if ((_c = options.endpointParams) == null ? void 0 : _c.Endpoint) {\n try {\n const givenEndpoint = new URL(options.endpointParams.Endpoint);\n const { protocol, port } = givenEndpoint;\n endpoint.url.protocol = protocol;\n endpoint.url.port = port;\n } catch (e) {\n }\n }\n (_e = (_d = options.logger) == null ? void 0 : _d.debug) == null ? void 0 : _e.call(_d, `${debugId} Resolved endpoint: ${toDebugString(endpoint)}`);\n return endpoint;\n}, \"resolveEndpoint\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n isIpAddress,\n isValidHostLabel,\n customEndpointFunctions,\n resolveEndpoint,\n EndpointError\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromHex: () => fromHex,\n toHex: () => toHex\n});\nmodule.exports = __toCommonJS(src_exports);\nvar SHORT_TO_HEX = {};\nvar HEX_TO_SHORT = {};\nfor (let i = 0; i < 256; i++) {\n let encodedByte = i.toString(16).toLowerCase();\n if (encodedByte.length === 1) {\n encodedByte = `0${encodedByte}`;\n }\n SHORT_TO_HEX[i] = encodedByte;\n HEX_TO_SHORT[encodedByte] = i;\n}\nfunction fromHex(encoded) {\n if (encoded.length % 2 !== 0) {\n throw new Error(\"Hex encoded strings must have an even number length\");\n }\n const out = new Uint8Array(encoded.length / 2);\n for (let i = 0; i < encoded.length; i += 2) {\n const encodedByte = encoded.slice(i, i + 2).toLowerCase();\n if (encodedByte in HEX_TO_SHORT) {\n out[i / 2] = HEX_TO_SHORT[encodedByte];\n } else {\n throw new Error(`Cannot decode unrecognized sequence ${encodedByte} as hexadecimal`);\n }\n }\n return out;\n}\n__name(fromHex, \"fromHex\");\nfunction toHex(bytes) {\n let out = \"\";\n for (let i = 0; i < bytes.byteLength; i++) {\n out += SHORT_TO_HEX[bytes[i]];\n }\n return out;\n}\n__name(toHex, \"toHex\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromHex,\n toHex\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n getSmithyContext: () => getSmithyContext,\n normalizeProvider: () => normalizeProvider\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/getSmithyContext.ts\nvar import_types = require(\"@smithy/types\");\nvar getSmithyContext = /* @__PURE__ */ __name((context) => context[import_types.SMITHY_CONTEXT_KEY] || (context[import_types.SMITHY_CONTEXT_KEY] = {}), \"getSmithyContext\");\n\n// src/normalizeProvider.ts\nvar normalizeProvider = /* @__PURE__ */ __name((input) => {\n if (typeof input === \"function\")\n return input;\n const promisified = Promise.resolve(input);\n return () => promisified;\n}, \"normalizeProvider\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n getSmithyContext,\n normalizeProvider\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AdaptiveRetryStrategy: () => AdaptiveRetryStrategy,\n ConfiguredRetryStrategy: () => ConfiguredRetryStrategy,\n DEFAULT_MAX_ATTEMPTS: () => DEFAULT_MAX_ATTEMPTS,\n DEFAULT_RETRY_DELAY_BASE: () => DEFAULT_RETRY_DELAY_BASE,\n DEFAULT_RETRY_MODE: () => DEFAULT_RETRY_MODE,\n DefaultRateLimiter: () => DefaultRateLimiter,\n INITIAL_RETRY_TOKENS: () => INITIAL_RETRY_TOKENS,\n INVOCATION_ID_HEADER: () => INVOCATION_ID_HEADER,\n MAXIMUM_RETRY_DELAY: () => MAXIMUM_RETRY_DELAY,\n NO_RETRY_INCREMENT: () => NO_RETRY_INCREMENT,\n REQUEST_HEADER: () => REQUEST_HEADER,\n RETRY_COST: () => RETRY_COST,\n RETRY_MODES: () => RETRY_MODES,\n StandardRetryStrategy: () => StandardRetryStrategy,\n THROTTLING_RETRY_DELAY_BASE: () => THROTTLING_RETRY_DELAY_BASE,\n TIMEOUT_RETRY_COST: () => TIMEOUT_RETRY_COST\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/config.ts\nvar RETRY_MODES = /* @__PURE__ */ ((RETRY_MODES2) => {\n RETRY_MODES2[\"STANDARD\"] = \"standard\";\n RETRY_MODES2[\"ADAPTIVE\"] = \"adaptive\";\n return RETRY_MODES2;\n})(RETRY_MODES || {});\nvar DEFAULT_MAX_ATTEMPTS = 3;\nvar DEFAULT_RETRY_MODE = \"standard\" /* STANDARD */;\n\n// src/DefaultRateLimiter.ts\nvar import_service_error_classification = require(\"@smithy/service-error-classification\");\nvar _DefaultRateLimiter = class _DefaultRateLimiter {\n constructor(options) {\n // Pre-set state variables\n this.currentCapacity = 0;\n this.enabled = false;\n this.lastMaxRate = 0;\n this.measuredTxRate = 0;\n this.requestCount = 0;\n this.lastTimestamp = 0;\n this.timeWindow = 0;\n this.beta = (options == null ? void 0 : options.beta) ?? 0.7;\n this.minCapacity = (options == null ? void 0 : options.minCapacity) ?? 1;\n this.minFillRate = (options == null ? void 0 : options.minFillRate) ?? 0.5;\n this.scaleConstant = (options == null ? void 0 : options.scaleConstant) ?? 0.4;\n this.smooth = (options == null ? void 0 : options.smooth) ?? 0.8;\n const currentTimeInSeconds = this.getCurrentTimeInSeconds();\n this.lastThrottleTime = currentTimeInSeconds;\n this.lastTxRateBucket = Math.floor(this.getCurrentTimeInSeconds());\n this.fillRate = this.minFillRate;\n this.maxCapacity = this.minCapacity;\n }\n getCurrentTimeInSeconds() {\n return Date.now() / 1e3;\n }\n async getSendToken() {\n return this.acquireTokenBucket(1);\n }\n async acquireTokenBucket(amount) {\n if (!this.enabled) {\n return;\n }\n this.refillTokenBucket();\n if (amount > this.currentCapacity) {\n const delay = (amount - this.currentCapacity) / this.fillRate * 1e3;\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n this.currentCapacity = this.currentCapacity - amount;\n }\n refillTokenBucket() {\n const timestamp = this.getCurrentTimeInSeconds();\n if (!this.lastTimestamp) {\n this.lastTimestamp = timestamp;\n return;\n }\n const fillAmount = (timestamp - this.lastTimestamp) * this.fillRate;\n this.currentCapacity = Math.min(this.maxCapacity, this.currentCapacity + fillAmount);\n this.lastTimestamp = timestamp;\n }\n updateClientSendingRate(response) {\n let calculatedRate;\n this.updateMeasuredRate();\n if ((0, import_service_error_classification.isThrottlingError)(response)) {\n const rateToUse = !this.enabled ? this.measuredTxRate : Math.min(this.measuredTxRate, this.fillRate);\n this.lastMaxRate = rateToUse;\n this.calculateTimeWindow();\n this.lastThrottleTime = this.getCurrentTimeInSeconds();\n calculatedRate = this.cubicThrottle(rateToUse);\n this.enableTokenBucket();\n } else {\n this.calculateTimeWindow();\n calculatedRate = this.cubicSuccess(this.getCurrentTimeInSeconds());\n }\n const newRate = Math.min(calculatedRate, 2 * this.measuredTxRate);\n this.updateTokenBucketRate(newRate);\n }\n calculateTimeWindow() {\n this.timeWindow = this.getPrecise(Math.pow(this.lastMaxRate * (1 - this.beta) / this.scaleConstant, 1 / 3));\n }\n cubicThrottle(rateToUse) {\n return this.getPrecise(rateToUse * this.beta);\n }\n cubicSuccess(timestamp) {\n return this.getPrecise(\n this.scaleConstant * Math.pow(timestamp - this.lastThrottleTime - this.timeWindow, 3) + this.lastMaxRate\n );\n }\n enableTokenBucket() {\n this.enabled = true;\n }\n updateTokenBucketRate(newRate) {\n this.refillTokenBucket();\n this.fillRate = Math.max(newRate, this.minFillRate);\n this.maxCapacity = Math.max(newRate, this.minCapacity);\n this.currentCapacity = Math.min(this.currentCapacity, this.maxCapacity);\n }\n updateMeasuredRate() {\n const t = this.getCurrentTimeInSeconds();\n const timeBucket = Math.floor(t * 2) / 2;\n this.requestCount++;\n if (timeBucket > this.lastTxRateBucket) {\n const currentRate = this.requestCount / (timeBucket - this.lastTxRateBucket);\n this.measuredTxRate = this.getPrecise(currentRate * this.smooth + this.measuredTxRate * (1 - this.smooth));\n this.requestCount = 0;\n this.lastTxRateBucket = timeBucket;\n }\n }\n getPrecise(num) {\n return parseFloat(num.toFixed(8));\n }\n};\n__name(_DefaultRateLimiter, \"DefaultRateLimiter\");\nvar DefaultRateLimiter = _DefaultRateLimiter;\n\n// src/constants.ts\nvar DEFAULT_RETRY_DELAY_BASE = 100;\nvar MAXIMUM_RETRY_DELAY = 20 * 1e3;\nvar THROTTLING_RETRY_DELAY_BASE = 500;\nvar INITIAL_RETRY_TOKENS = 500;\nvar RETRY_COST = 5;\nvar TIMEOUT_RETRY_COST = 10;\nvar NO_RETRY_INCREMENT = 1;\nvar INVOCATION_ID_HEADER = \"amz-sdk-invocation-id\";\nvar REQUEST_HEADER = \"amz-sdk-request\";\n\n// src/defaultRetryBackoffStrategy.ts\nvar getDefaultRetryBackoffStrategy = /* @__PURE__ */ __name(() => {\n let delayBase = DEFAULT_RETRY_DELAY_BASE;\n const computeNextBackoffDelay = /* @__PURE__ */ __name((attempts) => {\n return Math.floor(Math.min(MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase));\n }, \"computeNextBackoffDelay\");\n const setDelayBase = /* @__PURE__ */ __name((delay) => {\n delayBase = delay;\n }, \"setDelayBase\");\n return {\n computeNextBackoffDelay,\n setDelayBase\n };\n}, \"getDefaultRetryBackoffStrategy\");\n\n// src/defaultRetryToken.ts\nvar createDefaultRetryToken = /* @__PURE__ */ __name(({\n retryDelay,\n retryCount,\n retryCost\n}) => {\n const getRetryCount = /* @__PURE__ */ __name(() => retryCount, \"getRetryCount\");\n const getRetryDelay = /* @__PURE__ */ __name(() => Math.min(MAXIMUM_RETRY_DELAY, retryDelay), \"getRetryDelay\");\n const getRetryCost = /* @__PURE__ */ __name(() => retryCost, \"getRetryCost\");\n return {\n getRetryCount,\n getRetryDelay,\n getRetryCost\n };\n}, \"createDefaultRetryToken\");\n\n// src/StandardRetryStrategy.ts\nvar _StandardRetryStrategy = class _StandardRetryStrategy {\n constructor(maxAttempts) {\n this.maxAttempts = maxAttempts;\n this.mode = \"standard\" /* STANDARD */;\n this.capacity = INITIAL_RETRY_TOKENS;\n this.retryBackoffStrategy = getDefaultRetryBackoffStrategy();\n this.maxAttemptsProvider = typeof maxAttempts === \"function\" ? maxAttempts : async () => maxAttempts;\n }\n async acquireInitialRetryToken(retryTokenScope) {\n return createDefaultRetryToken({\n retryDelay: DEFAULT_RETRY_DELAY_BASE,\n retryCount: 0\n });\n }\n async refreshRetryTokenForRetry(token, errorInfo) {\n const maxAttempts = await this.getMaxAttempts();\n if (this.shouldRetry(token, errorInfo, maxAttempts)) {\n const errorType = errorInfo.errorType;\n this.retryBackoffStrategy.setDelayBase(\n errorType === \"THROTTLING\" ? THROTTLING_RETRY_DELAY_BASE : DEFAULT_RETRY_DELAY_BASE\n );\n const delayFromErrorType = this.retryBackoffStrategy.computeNextBackoffDelay(token.getRetryCount());\n const retryDelay = errorInfo.retryAfterHint ? Math.max(errorInfo.retryAfterHint.getTime() - Date.now() || 0, delayFromErrorType) : delayFromErrorType;\n const capacityCost = this.getCapacityCost(errorType);\n this.capacity -= capacityCost;\n return createDefaultRetryToken({\n retryDelay,\n retryCount: token.getRetryCount() + 1,\n retryCost: capacityCost\n });\n }\n throw new Error(\"No retry token available\");\n }\n recordSuccess(token) {\n this.capacity = Math.max(INITIAL_RETRY_TOKENS, this.capacity + (token.getRetryCost() ?? NO_RETRY_INCREMENT));\n }\n /**\n * @returns the current available retry capacity.\n *\n * This number decreases when retries are executed and refills when requests or retries succeed.\n */\n getCapacity() {\n return this.capacity;\n }\n async getMaxAttempts() {\n try {\n return await this.maxAttemptsProvider();\n } catch (error) {\n console.warn(`Max attempts provider could not resolve. Using default of ${DEFAULT_MAX_ATTEMPTS}`);\n return DEFAULT_MAX_ATTEMPTS;\n }\n }\n shouldRetry(tokenToRenew, errorInfo, maxAttempts) {\n const attempts = tokenToRenew.getRetryCount() + 1;\n return attempts < maxAttempts && this.capacity >= this.getCapacityCost(errorInfo.errorType) && this.isRetryableError(errorInfo.errorType);\n }\n getCapacityCost(errorType) {\n return errorType === \"TRANSIENT\" ? TIMEOUT_RETRY_COST : RETRY_COST;\n }\n isRetryableError(errorType) {\n return errorType === \"THROTTLING\" || errorType === \"TRANSIENT\";\n }\n};\n__name(_StandardRetryStrategy, \"StandardRetryStrategy\");\nvar StandardRetryStrategy = _StandardRetryStrategy;\n\n// src/AdaptiveRetryStrategy.ts\nvar _AdaptiveRetryStrategy = class _AdaptiveRetryStrategy {\n constructor(maxAttemptsProvider, options) {\n this.maxAttemptsProvider = maxAttemptsProvider;\n this.mode = \"adaptive\" /* ADAPTIVE */;\n const { rateLimiter } = options ?? {};\n this.rateLimiter = rateLimiter ?? new DefaultRateLimiter();\n this.standardRetryStrategy = new StandardRetryStrategy(maxAttemptsProvider);\n }\n async acquireInitialRetryToken(retryTokenScope) {\n await this.rateLimiter.getSendToken();\n return this.standardRetryStrategy.acquireInitialRetryToken(retryTokenScope);\n }\n async refreshRetryTokenForRetry(tokenToRenew, errorInfo) {\n this.rateLimiter.updateClientSendingRate(errorInfo);\n return this.standardRetryStrategy.refreshRetryTokenForRetry(tokenToRenew, errorInfo);\n }\n recordSuccess(token) {\n this.rateLimiter.updateClientSendingRate({});\n this.standardRetryStrategy.recordSuccess(token);\n }\n};\n__name(_AdaptiveRetryStrategy, \"AdaptiveRetryStrategy\");\nvar AdaptiveRetryStrategy = _AdaptiveRetryStrategy;\n\n// src/ConfiguredRetryStrategy.ts\nvar _ConfiguredRetryStrategy = class _ConfiguredRetryStrategy extends StandardRetryStrategy {\n /**\n * @param maxAttempts - the maximum number of retry attempts allowed.\n * e.g., if set to 3, then 4 total requests are possible.\n * @param computeNextBackoffDelay - a millisecond delay for each retry or a function that takes the retry attempt\n * and returns the delay.\n *\n * @example exponential backoff.\n * ```js\n * new Client({\n * retryStrategy: new ConfiguredRetryStrategy(3, (attempt) => attempt ** 2)\n * });\n * ```\n * @example constant delay.\n * ```js\n * new Client({\n * retryStrategy: new ConfiguredRetryStrategy(3, 2000)\n * });\n * ```\n */\n constructor(maxAttempts, computeNextBackoffDelay = DEFAULT_RETRY_DELAY_BASE) {\n super(typeof maxAttempts === \"function\" ? maxAttempts : async () => maxAttempts);\n if (typeof computeNextBackoffDelay === \"number\") {\n this.computeNextBackoffDelay = () => computeNextBackoffDelay;\n } else {\n this.computeNextBackoffDelay = computeNextBackoffDelay;\n }\n }\n async refreshRetryTokenForRetry(tokenToRenew, errorInfo) {\n const token = await super.refreshRetryTokenForRetry(tokenToRenew, errorInfo);\n token.getRetryDelay = () => this.computeNextBackoffDelay(token.getRetryCount());\n return token;\n }\n};\n__name(_ConfiguredRetryStrategy, \"ConfiguredRetryStrategy\");\nvar ConfiguredRetryStrategy = _ConfiguredRetryStrategy;\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n AdaptiveRetryStrategy,\n ConfiguredRetryStrategy,\n DefaultRateLimiter,\n StandardRetryStrategy,\n RETRY_MODES,\n DEFAULT_MAX_ATTEMPTS,\n DEFAULT_RETRY_MODE,\n DEFAULT_RETRY_DELAY_BASE,\n MAXIMUM_RETRY_DELAY,\n THROTTLING_RETRY_DELAY_BASE,\n INITIAL_RETRY_TOKENS,\n RETRY_COST,\n TIMEOUT_RETRY_COST,\n NO_RETRY_INCREMENT,\n INVOCATION_ID_HEADER,\n REQUEST_HEADER\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getAwsChunkedEncodingStream = void 0;\nconst stream_1 = require(\"stream\");\nconst getAwsChunkedEncodingStream = (readableStream, options) => {\n const { base64Encoder, bodyLengthChecker, checksumAlgorithmFn, checksumLocationName, streamHasher } = options;\n const checksumRequired = base64Encoder !== undefined &&\n checksumAlgorithmFn !== undefined &&\n checksumLocationName !== undefined &&\n streamHasher !== undefined;\n const digest = checksumRequired ? streamHasher(checksumAlgorithmFn, readableStream) : undefined;\n const awsChunkedEncodingStream = new stream_1.Readable({ read: () => { } });\n readableStream.on(\"data\", (data) => {\n const length = bodyLengthChecker(data) || 0;\n awsChunkedEncodingStream.push(`${length.toString(16)}\\r\\n`);\n awsChunkedEncodingStream.push(data);\n awsChunkedEncodingStream.push(\"\\r\\n\");\n });\n readableStream.on(\"end\", async () => {\n awsChunkedEncodingStream.push(`0\\r\\n`);\n if (checksumRequired) {\n const checksum = base64Encoder(await digest);\n awsChunkedEncodingStream.push(`${checksumLocationName}:${checksum}\\r\\n`);\n awsChunkedEncodingStream.push(`\\r\\n`);\n }\n awsChunkedEncodingStream.push(null);\n });\n return awsChunkedEncodingStream;\n};\nexports.getAwsChunkedEncodingStream = getAwsChunkedEncodingStream;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n Uint8ArrayBlobAdapter: () => Uint8ArrayBlobAdapter\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/blob/transforms.ts\nvar import_util_base64 = require(\"@smithy/util-base64\");\nvar import_util_utf8 = require(\"@smithy/util-utf8\");\nfunction transformToString(payload, encoding = \"utf-8\") {\n if (encoding === \"base64\") {\n return (0, import_util_base64.toBase64)(payload);\n }\n return (0, import_util_utf8.toUtf8)(payload);\n}\n__name(transformToString, \"transformToString\");\nfunction transformFromString(str, encoding) {\n if (encoding === \"base64\") {\n return Uint8ArrayBlobAdapter.mutate((0, import_util_base64.fromBase64)(str));\n }\n return Uint8ArrayBlobAdapter.mutate((0, import_util_utf8.fromUtf8)(str));\n}\n__name(transformFromString, \"transformFromString\");\n\n// src/blob/Uint8ArrayBlobAdapter.ts\nvar _Uint8ArrayBlobAdapter = class _Uint8ArrayBlobAdapter extends Uint8Array {\n /**\n * @param source - such as a string or Stream.\n * @returns a new Uint8ArrayBlobAdapter extending Uint8Array.\n */\n static fromString(source, encoding = \"utf-8\") {\n switch (typeof source) {\n case \"string\":\n return transformFromString(source, encoding);\n default:\n throw new Error(`Unsupported conversion from ${typeof source} to Uint8ArrayBlobAdapter.`);\n }\n }\n /**\n * @param source - Uint8Array to be mutated.\n * @returns the same Uint8Array but with prototype switched to Uint8ArrayBlobAdapter.\n */\n static mutate(source) {\n Object.setPrototypeOf(source, _Uint8ArrayBlobAdapter.prototype);\n return source;\n }\n /**\n * @param encoding - default 'utf-8'.\n * @returns the blob as string.\n */\n transformToString(encoding = \"utf-8\") {\n return transformToString(this, encoding);\n }\n};\n__name(_Uint8ArrayBlobAdapter, \"Uint8ArrayBlobAdapter\");\nvar Uint8ArrayBlobAdapter = _Uint8ArrayBlobAdapter;\n\n// src/index.ts\n__reExport(src_exports, require(\"././getAwsChunkedEncodingStream\"), module.exports);\n__reExport(src_exports, require(\"././sdk-stream-mixin\"), module.exports);\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n Uint8ArrayBlobAdapter,\n getAwsChunkedEncodingStream,\n sdkStreamMixin\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sdkStreamMixin = void 0;\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst util_buffer_from_1 = require(\"@smithy/util-buffer-from\");\nconst stream_1 = require(\"stream\");\nconst util_1 = require(\"util\");\nconst ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED = \"The stream has already been transformed.\";\nconst sdkStreamMixin = (stream) => {\n var _a, _b;\n if (!(stream instanceof stream_1.Readable)) {\n const name = ((_b = (_a = stream === null || stream === void 0 ? void 0 : stream.__proto__) === null || _a === void 0 ? void 0 : _a.constructor) === null || _b === void 0 ? void 0 : _b.name) || stream;\n throw new Error(`Unexpected stream implementation, expect Stream.Readable instance, got ${name}`);\n }\n let transformed = false;\n const transformToByteArray = async () => {\n if (transformed) {\n throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED);\n }\n transformed = true;\n return await (0, node_http_handler_1.streamCollector)(stream);\n };\n return Object.assign(stream, {\n transformToByteArray,\n transformToString: async (encoding) => {\n const buf = await transformToByteArray();\n if (encoding === undefined || Buffer.isEncoding(encoding)) {\n return (0, util_buffer_from_1.fromArrayBuffer)(buf.buffer, buf.byteOffset, buf.byteLength).toString(encoding);\n }\n else {\n const decoder = new util_1.TextDecoder(encoding);\n return decoder.decode(buf);\n }\n },\n transformToWebStream: () => {\n if (transformed) {\n throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED);\n }\n if (stream.readableFlowing !== null) {\n throw new Error(\"The stream has been consumed by other callbacks.\");\n }\n if (typeof stream_1.Readable.toWeb !== \"function\") {\n throw new Error(\"Readable.toWeb() is not supported. Please make sure you are using Node.js >= 17.0.0, or polyfill is available.\");\n }\n transformed = true;\n return stream_1.Readable.toWeb(stream);\n },\n });\n};\nexports.sdkStreamMixin = sdkStreamMixin;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n escapeUri: () => escapeUri,\n escapeUriPath: () => escapeUriPath\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/escape-uri.ts\nvar escapeUri = /* @__PURE__ */ __name((uri) => (\n // AWS percent-encodes some extra non-standard characters in a URI\n encodeURIComponent(uri).replace(/[!'()*]/g, hexEncode)\n), \"escapeUri\");\nvar hexEncode = /* @__PURE__ */ __name((c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`, \"hexEncode\");\n\n// src/escape-uri-path.ts\nvar escapeUriPath = /* @__PURE__ */ __name((uri) => uri.split(\"/\").map(escapeUri).join(\"/\"), \"escapeUriPath\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n escapeUri,\n escapeUriPath\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromUtf8: () => fromUtf8,\n toUint8Array: () => toUint8Array,\n toUtf8: () => toUtf8\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromUtf8.ts\nvar import_util_buffer_from = require(\"@smithy/util-buffer-from\");\nvar fromUtf8 = /* @__PURE__ */ __name((input) => {\n const buf = (0, import_util_buffer_from.fromString)(input, \"utf8\");\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n}, \"fromUtf8\");\n\n// src/toUint8Array.ts\nvar toUint8Array = /* @__PURE__ */ __name((data) => {\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n }\n return new Uint8Array(data);\n}, \"toUint8Array\");\n\n// src/toUtf8.ts\n\nvar toUtf8 = /* @__PURE__ */ __name((input) => {\n if (typeof input === \"string\") {\n return input;\n }\n if (typeof input !== \"object\" || typeof input.byteOffset !== \"number\" || typeof input.byteLength !== \"number\") {\n throw new Error(\"@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.\");\n }\n return (0, import_util_buffer_from.fromArrayBuffer)(input.buffer, input.byteOffset, input.byteLength).toString(\"utf8\");\n}, \"toUtf8\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromUtf8,\n toUint8Array,\n toUtf8\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n WaiterState: () => WaiterState,\n checkExceptions: () => checkExceptions,\n createWaiter: () => createWaiter,\n waiterServiceDefaults: () => waiterServiceDefaults\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/utils/sleep.ts\nvar sleep = /* @__PURE__ */ __name((seconds) => {\n return new Promise((resolve) => setTimeout(resolve, seconds * 1e3));\n}, \"sleep\");\n\n// src/waiter.ts\nvar waiterServiceDefaults = {\n minDelay: 2,\n maxDelay: 120\n};\nvar WaiterState = /* @__PURE__ */ ((WaiterState2) => {\n WaiterState2[\"ABORTED\"] = \"ABORTED\";\n WaiterState2[\"FAILURE\"] = \"FAILURE\";\n WaiterState2[\"SUCCESS\"] = \"SUCCESS\";\n WaiterState2[\"RETRY\"] = \"RETRY\";\n WaiterState2[\"TIMEOUT\"] = \"TIMEOUT\";\n return WaiterState2;\n})(WaiterState || {});\nvar checkExceptions = /* @__PURE__ */ __name((result) => {\n if (result.state === \"ABORTED\" /* ABORTED */) {\n const abortError = new Error(\n `${JSON.stringify({\n ...result,\n reason: \"Request was aborted\"\n })}`\n );\n abortError.name = \"AbortError\";\n throw abortError;\n } else if (result.state === \"TIMEOUT\" /* TIMEOUT */) {\n const timeoutError = new Error(\n `${JSON.stringify({\n ...result,\n reason: \"Waiter has timed out\"\n })}`\n );\n timeoutError.name = \"TimeoutError\";\n throw timeoutError;\n } else if (result.state !== \"SUCCESS\" /* SUCCESS */) {\n throw new Error(`${JSON.stringify({ result })}`);\n }\n return result;\n}, \"checkExceptions\");\n\n// src/poller.ts\nvar exponentialBackoffWithJitter = /* @__PURE__ */ __name((minDelay, maxDelay, attemptCeiling, attempt) => {\n if (attempt > attemptCeiling)\n return maxDelay;\n const delay = minDelay * 2 ** (attempt - 1);\n return randomInRange(minDelay, delay);\n}, \"exponentialBackoffWithJitter\");\nvar randomInRange = /* @__PURE__ */ __name((min, max) => min + Math.random() * (max - min), \"randomInRange\");\nvar runPolling = /* @__PURE__ */ __name(async ({ minDelay, maxDelay, maxWaitTime, abortController, client, abortSignal }, input, acceptorChecks) => {\n var _a;\n const { state, reason } = await acceptorChecks(client, input);\n if (state !== \"RETRY\" /* RETRY */) {\n return { state, reason };\n }\n let currentAttempt = 1;\n const waitUntil = Date.now() + maxWaitTime * 1e3;\n const attemptCeiling = Math.log(maxDelay / minDelay) / Math.log(2) + 1;\n while (true) {\n if (((_a = abortController == null ? void 0 : abortController.signal) == null ? void 0 : _a.aborted) || (abortSignal == null ? void 0 : abortSignal.aborted)) {\n return { state: \"ABORTED\" /* ABORTED */ };\n }\n const delay = exponentialBackoffWithJitter(minDelay, maxDelay, attemptCeiling, currentAttempt);\n if (Date.now() + delay * 1e3 > waitUntil) {\n return { state: \"TIMEOUT\" /* TIMEOUT */ };\n }\n await sleep(delay);\n const { state: state2, reason: reason2 } = await acceptorChecks(client, input);\n if (state2 !== \"RETRY\" /* RETRY */) {\n return { state: state2, reason: reason2 };\n }\n currentAttempt += 1;\n }\n}, \"runPolling\");\n\n// src/utils/validate.ts\nvar validateWaiterOptions = /* @__PURE__ */ __name((options) => {\n if (options.maxWaitTime < 1) {\n throw new Error(`WaiterConfiguration.maxWaitTime must be greater than 0`);\n } else if (options.minDelay < 1) {\n throw new Error(`WaiterConfiguration.minDelay must be greater than 0`);\n } else if (options.maxDelay < 1) {\n throw new Error(`WaiterConfiguration.maxDelay must be greater than 0`);\n } else if (options.maxWaitTime <= options.minDelay) {\n throw new Error(\n `WaiterConfiguration.maxWaitTime [${options.maxWaitTime}] must be greater than WaiterConfiguration.minDelay [${options.minDelay}] for this waiter`\n );\n } else if (options.maxDelay < options.minDelay) {\n throw new Error(\n `WaiterConfiguration.maxDelay [${options.maxDelay}] must be greater than WaiterConfiguration.minDelay [${options.minDelay}] for this waiter`\n );\n }\n}, \"validateWaiterOptions\");\n\n// src/createWaiter.ts\nvar abortTimeout = /* @__PURE__ */ __name(async (abortSignal) => {\n return new Promise((resolve) => {\n abortSignal.onabort = () => resolve({ state: \"ABORTED\" /* ABORTED */ });\n });\n}, \"abortTimeout\");\nvar createWaiter = /* @__PURE__ */ __name(async (options, input, acceptorChecks) => {\n const params = {\n ...waiterServiceDefaults,\n ...options\n };\n validateWaiterOptions(params);\n const exitConditions = [runPolling(params, input, acceptorChecks)];\n if (options.abortController) {\n exitConditions.push(abortTimeout(options.abortController.signal));\n }\n if (options.abortSignal) {\n exitConditions.push(abortTimeout(options.abortSignal));\n }\n return Promise.race(exitConditions);\n}, \"createWaiter\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n createWaiter,\n waiterServiceDefaults,\n WaiterState,\n checkExceptions\n});\n\n","'use strict';\n\nmodule.exports = ({onlyFirst = false} = {}) => {\n\tconst pattern = [\n\t\t'[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n};\n","'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","'use strict';\nconst regex = '[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]';\n\nconst astralRegex = options => options && options.exact ? new RegExp(`^${regex}$`) : new RegExp(regex, 'g');\n\nmodule.exports = astralRegex;\n","var register = require(\"./lib/register\");\nvar addHook = require(\"./lib/add\");\nvar removeHook = require(\"./lib/remove\");\n\n// bind with array of arguments: https://stackoverflow.com/a/21792913\nvar bind = Function.bind;\nvar bindable = bind.bind(bind);\n\nfunction bindApi(hook, state, name) {\n var removeHookRef = bindable(removeHook, null).apply(\n null,\n name ? [state, name] : [state]\n );\n hook.api = { remove: removeHookRef };\n hook.remove = removeHookRef;\n [\"before\", \"error\", \"after\", \"wrap\"].forEach(function (kind) {\n var args = name ? [state, kind, name] : [state, kind];\n hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args);\n });\n}\n\nfunction HookSingular() {\n var singularHookName = \"h\";\n var singularHookState = {\n registry: {},\n };\n var singularHook = register.bind(null, singularHookState, singularHookName);\n bindApi(singularHook, singularHookState, singularHookName);\n return singularHook;\n}\n\nfunction HookCollection() {\n var state = {\n registry: {},\n };\n\n var hook = register.bind(null, state);\n bindApi(hook, state);\n\n return hook;\n}\n\nvar collectionHookDeprecationMessageDisplayed = false;\nfunction Hook() {\n if (!collectionHookDeprecationMessageDisplayed) {\n console.warn(\n '[before-after-hook]: \"Hook()\" repurposing warning, use \"Hook.Collection()\". Read more: https://git.io/upgrade-before-after-hook-to-1.4'\n );\n collectionHookDeprecationMessageDisplayed = true;\n }\n return HookCollection();\n}\n\nHook.Singular = HookSingular.bind();\nHook.Collection = HookCollection.bind();\n\nmodule.exports = Hook;\n// expose constructors as a named property for TypeScript\nmodule.exports.Hook = Hook;\nmodule.exports.Singular = Hook.Singular;\nmodule.exports.Collection = Hook.Collection;\n","module.exports = addHook;\n\nfunction addHook(state, kind, name, hook) {\n var orig = hook;\n if (!state.registry[name]) {\n state.registry[name] = [];\n }\n\n if (kind === \"before\") {\n hook = function (method, options) {\n return Promise.resolve()\n .then(orig.bind(null, options))\n .then(method.bind(null, options));\n };\n }\n\n if (kind === \"after\") {\n hook = function (method, options) {\n var result;\n return Promise.resolve()\n .then(method.bind(null, options))\n .then(function (result_) {\n result = result_;\n return orig(result, options);\n })\n .then(function () {\n return result;\n });\n };\n }\n\n if (kind === \"error\") {\n hook = function (method, options) {\n return Promise.resolve()\n .then(method.bind(null, options))\n .catch(function (error) {\n return orig(error, options);\n });\n };\n }\n\n state.registry[name].push({\n hook: hook,\n orig: orig,\n });\n}\n","module.exports = register;\n\nfunction register(state, name, method, options) {\n if (typeof method !== \"function\") {\n throw new Error(\"method for before hook must be a function\");\n }\n\n if (!options) {\n options = {};\n }\n\n if (Array.isArray(name)) {\n return name.reverse().reduce(function (callback, name) {\n return register.bind(null, state, name, callback, options);\n }, method)();\n }\n\n return Promise.resolve().then(function () {\n if (!state.registry[name]) {\n return method(options);\n }\n\n return state.registry[name].reduce(function (method, registered) {\n return registered.hook.bind(null, method, options);\n }, method)();\n });\n}\n","module.exports = removeHook;\n\nfunction removeHook(state, name, method) {\n if (!state.registry[name]) {\n return;\n }\n\n var index = state.registry[name]\n .map(function (registered) {\n return registered.orig;\n })\n .indexOf(method);\n\n if (index === -1) {\n return;\n }\n\n state.registry[name].splice(index, 1);\n}\n","'use strict';\nconst ansiStyles = require('ansi-styles');\nconst {stdout: stdoutColor, stderr: stderrColor} = require('supports-color');\nconst {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n} = require('./util');\n\nconst {isArray} = Array;\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m'\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nclass ChalkClass {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = {};\n\tapplyOptions(chalk, options);\n\n\tchalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);\n\n\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\tObject.setPrototypeOf(chalk.template, chalk);\n\n\tchalk.template.constructor = () => {\n\t\tthrow new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');\n\t};\n\n\tchalk.template.Instance = ChalkClass;\n\n\treturn chalk.template;\n};\n\nfunction Chalk(options) {\n\treturn chalkFactory(options);\n}\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this._styler, true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t}\n};\n\nconst usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nfor (const model of usedModels) {\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this._generator.level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis._generator.level = level;\n\t\t}\n\t}\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\tconst builder = (...arguments_) => {\n\t\tif (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {\n\t\t\t// Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`\n\t\t\treturn applyStyle(builder, chalkTag(builder, ...arguments_));\n\t\t}\n\n\t\t// Single argument is hot path, implicit coercion is faster than anything\n\t\t// eslint-disable-next-line no-implicit-coercion\n\t\treturn applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\t};\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder._generator = self;\n\tbuilder._styler = _styler;\n\tbuilder._isEmpty = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self._isEmpty ? '' : string;\n\t}\n\n\tlet styler = self._styler;\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.indexOf('\\u001B') !== -1) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nlet template;\nconst chalkTag = (chalk, ...strings) => {\n\tconst [firstString] = strings;\n\n\tif (!isArray(firstString) || !isArray(firstString.raw)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn strings.join(' ');\n\t}\n\n\tconst arguments_ = strings.slice(1);\n\tconst parts = [firstString.raw[0]];\n\n\tfor (let i = 1; i < firstString.length; i++) {\n\t\tparts.push(\n\t\t\tString(arguments_[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'),\n\t\t\tString(firstString.raw[i])\n\t\t);\n\t}\n\n\tif (template === undefined) {\n\t\ttemplate = require('./templates');\n\t}\n\n\treturn template(chalk, parts.join(''));\n};\n\nObject.defineProperties(Chalk.prototype, styles);\n\nconst chalk = Chalk(); // eslint-disable-line new-cap\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap\nchalk.stderr.supportsColor = stderrColor;\n\nmodule.exports = chalk;\n","'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tconst u = c[0] === 'u';\n\tconst bracket = c[1] === '{';\n\n\tif ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\tif (u && bracket) {\n\t\treturn String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, arguments_) {\n\tconst results = [];\n\tconst chunks = arguments_.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tconst number = Number(chunk);\n\t\tif (!Number.isNaN(number)) {\n\t\t\tresults.push(number);\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const [styleName, styles] of Object.entries(enabled)) {\n\t\tif (!Array.isArray(styles)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!(styleName in current)) {\n\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t}\n\n\t\tcurrent = styles.length > 0 ? current[styleName](...styles) : current[styleName];\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, temporary) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttemporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n\t\tif (escapeCharacter) {\n\t\t\tchunk.push(unescape(escapeCharacter));\n\t\t} else if (style) {\n\t\t\tconst string = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(character);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMessage);\n\t}\n\n\treturn chunks.join('');\n};\n","'use strict';\n\nconst stringReplaceAll = (string, substring, replacer) => {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nconst stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nmodule.exports = {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n};\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nclass Deprecation extends Error {\n constructor(message) {\n super(message); // Maintains proper stack trace (only available on V8)\n\n /* istanbul ignore next */\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = 'Deprecation';\n }\n\n}\n\nexports.Deprecation = Deprecation;\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.convertChangesToDMP = convertChangesToDMP;\n\n/*istanbul ignore end*/\n// See: http://code.google.com/p/google-diff-match-patch/wiki/API\nfunction convertChangesToDMP(changes) {\n var ret = [],\n change,\n operation;\n\n for (var i = 0; i < changes.length; i++) {\n change = changes[i];\n\n if (change.added) {\n operation = 1;\n } else if (change.removed) {\n operation = -1;\n } else {\n operation = 0;\n }\n\n ret.push([operation, change.value]);\n }\n\n return ret;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L2RtcC5qcyJdLCJuYW1lcyI6WyJjb252ZXJ0Q2hhbmdlc1RvRE1QIiwiY2hhbmdlcyIsInJldCIsImNoYW5nZSIsIm9wZXJhdGlvbiIsImkiLCJsZW5ndGgiLCJhZGRlZCIsInJlbW92ZWQiLCJwdXNoIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ08sU0FBU0EsbUJBQVQsQ0FBNkJDLE9BQTdCLEVBQXNDO0FBQzNDLE1BQUlDLEdBQUcsR0FBRyxFQUFWO0FBQUEsTUFDSUMsTUFESjtBQUFBLE1BRUlDLFNBRko7O0FBR0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHSixPQUFPLENBQUNLLE1BQTVCLEVBQW9DRCxDQUFDLEVBQXJDLEVBQXlDO0FBQ3ZDRixJQUFBQSxNQUFNLEdBQUdGLE9BQU8sQ0FBQ0ksQ0FBRCxDQUFoQjs7QUFDQSxRQUFJRixNQUFNLENBQUNJLEtBQVgsRUFBa0I7QUFDaEJILE1BQUFBLFNBQVMsR0FBRyxDQUFaO0FBQ0QsS0FGRCxNQUVPLElBQUlELE1BQU0sQ0FBQ0ssT0FBWCxFQUFvQjtBQUN6QkosTUFBQUEsU0FBUyxHQUFHLENBQUMsQ0FBYjtBQUNELEtBRk0sTUFFQTtBQUNMQSxNQUFBQSxTQUFTLEdBQUcsQ0FBWjtBQUNEOztBQUVERixJQUFBQSxHQUFHLENBQUNPLElBQUosQ0FBUyxDQUFDTCxTQUFELEVBQVlELE1BQU0sQ0FBQ08sS0FBbkIsQ0FBVDtBQUNEOztBQUNELFNBQU9SLEdBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIFNlZTogaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS1kaWZmLW1hdGNoLXBhdGNoL3dpa2kvQVBJXG5leHBvcnQgZnVuY3Rpb24gY29udmVydENoYW5nZXNUb0RNUChjaGFuZ2VzKSB7XG4gIGxldCByZXQgPSBbXSxcbiAgICAgIGNoYW5nZSxcbiAgICAgIG9wZXJhdGlvbjtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgY2hhbmdlID0gY2hhbmdlc1tpXTtcbiAgICBpZiAoY2hhbmdlLmFkZGVkKSB7XG4gICAgICBvcGVyYXRpb24gPSAxO1xuICAgIH0gZWxzZSBpZiAoY2hhbmdlLnJlbW92ZWQpIHtcbiAgICAgIG9wZXJhdGlvbiA9IC0xO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcGVyYXRpb24gPSAwO1xuICAgIH1cblxuICAgIHJldC5wdXNoKFtvcGVyYXRpb24sIGNoYW5nZS52YWx1ZV0pO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.convertChangesToXML = convertChangesToXML;\n\n/*istanbul ignore end*/\nfunction convertChangesToXML(changes) {\n var ret = [];\n\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n\n if (change.added) {\n ret.push('');\n } else if (change.removed) {\n ret.push('');\n }\n\n ret.push(escapeHTML(change.value));\n\n if (change.added) {\n ret.push('');\n } else if (change.removed) {\n ret.push('');\n }\n }\n\n return ret.join('');\n}\n\nfunction escapeHTML(s) {\n var n = s;\n n = n.replace(/&/g, '&');\n n = n.replace(//g, '>');\n n = n.replace(/\"/g, '"');\n return n;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L3htbC5qcyJdLCJuYW1lcyI6WyJjb252ZXJ0Q2hhbmdlc1RvWE1MIiwiY2hhbmdlcyIsInJldCIsImkiLCJsZW5ndGgiLCJjaGFuZ2UiLCJhZGRlZCIsInB1c2giLCJyZW1vdmVkIiwiZXNjYXBlSFRNTCIsInZhbHVlIiwiam9pbiIsInMiLCJuIiwicmVwbGFjZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsbUJBQVQsQ0FBNkJDLE9BQTdCLEVBQXNDO0FBQzNDLE1BQUlDLEdBQUcsR0FBRyxFQUFWOztBQUNBLE9BQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0YsT0FBTyxDQUFDRyxNQUE1QixFQUFvQ0QsQ0FBQyxFQUFyQyxFQUF5QztBQUN2QyxRQUFJRSxNQUFNLEdBQUdKLE9BQU8sQ0FBQ0UsQ0FBRCxDQUFwQjs7QUFDQSxRQUFJRSxNQUFNLENBQUNDLEtBQVgsRUFBa0I7QUFDaEJKLE1BQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTLE9BQVQ7QUFDRCxLQUZELE1BRU8sSUFBSUYsTUFBTSxDQUFDRyxPQUFYLEVBQW9CO0FBQ3pCTixNQUFBQSxHQUFHLENBQUNLLElBQUosQ0FBUyxPQUFUO0FBQ0Q7O0FBRURMLElBQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTRSxVQUFVLENBQUNKLE1BQU0sQ0FBQ0ssS0FBUixDQUFuQjs7QUFFQSxRQUFJTCxNQUFNLENBQUNDLEtBQVgsRUFBa0I7QUFDaEJKLE1BQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTLFFBQVQ7QUFDRCxLQUZELE1BRU8sSUFBSUYsTUFBTSxDQUFDRyxPQUFYLEVBQW9CO0FBQ3pCTixNQUFBQSxHQUFHLENBQUNLLElBQUosQ0FBUyxRQUFUO0FBQ0Q7QUFDRjs7QUFDRCxTQUFPTCxHQUFHLENBQUNTLElBQUosQ0FBUyxFQUFULENBQVA7QUFDRDs7QUFFRCxTQUFTRixVQUFULENBQW9CRyxDQUFwQixFQUF1QjtBQUNyQixNQUFJQyxDQUFDLEdBQUdELENBQVI7QUFDQUMsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE9BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE1BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE1BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLFFBQWhCLENBQUo7QUFFQSxTQUFPRCxDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY29udmVydENoYW5nZXNUb1hNTChjaGFuZ2VzKSB7XG4gIGxldCByZXQgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGNoYW5nZSA9IGNoYW5nZXNbaV07XG4gICAgaWYgKGNoYW5nZS5hZGRlZCkge1xuICAgICAgcmV0LnB1c2goJzxpbnM+Jyk7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2UucmVtb3ZlZCkge1xuICAgICAgcmV0LnB1c2goJzxkZWw+Jyk7XG4gICAgfVxuXG4gICAgcmV0LnB1c2goZXNjYXBlSFRNTChjaGFuZ2UudmFsdWUpKTtcblxuICAgIGlmIChjaGFuZ2UuYWRkZWQpIHtcbiAgICAgIHJldC5wdXNoKCc8L2lucz4nKTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZS5yZW1vdmVkKSB7XG4gICAgICByZXQucHVzaCgnPC9kZWw+Jyk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUhUTUwocykge1xuICBsZXQgbiA9IHM7XG4gIG4gPSBuLnJlcGxhY2UoLyYvZywgJyZhbXA7Jyk7XG4gIG4gPSBuLnJlcGxhY2UoLzwvZywgJyZsdDsnKTtcbiAgbiA9IG4ucmVwbGFjZSgvPi9nLCAnJmd0OycpO1xuICBuID0gbi5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7Jyk7XG5cbiAgcmV0dXJuIG47XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffArrays = diffArrays;\nexports.arrayDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar arrayDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.arrayDiff = arrayDiff;\n\n/*istanbul ignore end*/\narrayDiff.tokenize = function (value) {\n return value.slice();\n};\n\narrayDiff.join = arrayDiff.removeEmpty = function (value) {\n return value;\n};\n\nfunction diffArrays(oldArr, newArr, callback) {\n return arrayDiff.diff(oldArr, newArr, callback);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2FycmF5LmpzIl0sIm5hbWVzIjpbImFycmF5RGlmZiIsIkRpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic2xpY2UiLCJqb2luIiwicmVtb3ZlRW1wdHkiLCJkaWZmQXJyYXlzIiwib2xkQXJyIiwibmV3QXJyIiwiY2FsbGJhY2siLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxJQUFNQSxTQUFTLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUFsQjs7Ozs7O0FBQ1BELFNBQVMsQ0FBQ0UsUUFBVixHQUFxQixVQUFTQyxLQUFULEVBQWdCO0FBQ25DLFNBQU9BLEtBQUssQ0FBQ0MsS0FBTixFQUFQO0FBQ0QsQ0FGRDs7QUFHQUosU0FBUyxDQUFDSyxJQUFWLEdBQWlCTCxTQUFTLENBQUNNLFdBQVYsR0FBd0IsVUFBU0gsS0FBVCxFQUFnQjtBQUN2RCxTQUFPQSxLQUFQO0FBQ0QsQ0FGRDs7QUFJTyxTQUFTSSxVQUFULENBQW9CQyxNQUFwQixFQUE0QkMsTUFBNUIsRUFBb0NDLFFBQXBDLEVBQThDO0FBQUUsU0FBT1YsU0FBUyxDQUFDVyxJQUFWLENBQWVILE1BQWYsRUFBdUJDLE1BQXZCLEVBQStCQyxRQUEvQixDQUFQO0FBQWtEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGFycmF5RGlmZiA9IG5ldyBEaWZmKCk7XG5hcnJheURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc2xpY2UoKTtcbn07XG5hcnJheURpZmYuam9pbiA9IGFycmF5RGlmZi5yZW1vdmVFbXB0eSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmQXJyYXlzKG9sZEFyciwgbmV3QXJyLCBjYWxsYmFjaykgeyByZXR1cm4gYXJyYXlEaWZmLmRpZmYob2xkQXJyLCBuZXdBcnIsIGNhbGxiYWNrKTsgfVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Diff;\n\n/*istanbul ignore end*/\nfunction Diff() {}\n\nDiff.prototype = {\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n diff: function diff(oldString, newString) {\n /*istanbul ignore start*/\n var _options$timeout;\n\n var\n /*istanbul ignore end*/\n options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = options.callback;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n this.options = options;\n var self = this;\n\n function done(value) {\n if (callback) {\n setTimeout(function () {\n callback(undefined, value);\n }, 0);\n return true;\n } else {\n return value;\n }\n } // Allow subclasses to massage the input prior to running\n\n\n oldString = this.castInput(oldString);\n newString = this.castInput(newString);\n oldString = this.removeEmpty(this.tokenize(oldString));\n newString = this.removeEmpty(this.tokenize(newString));\n var newLen = newString.length,\n oldLen = oldString.length;\n var editLength = 1;\n var maxEditLength = newLen + oldLen;\n\n if (options.maxEditLength) {\n maxEditLength = Math.min(maxEditLength, options.maxEditLength);\n }\n\n var maxExecutionTime =\n /*istanbul ignore start*/\n (_options$timeout =\n /*istanbul ignore end*/\n options.timeout) !== null && _options$timeout !== void 0 ? _options$timeout : Infinity;\n var abortAfterTimestamp = Date.now() + maxExecutionTime;\n var bestPath = [{\n oldPos: -1,\n lastComponent: undefined\n }]; // Seed editLength = 0, i.e. the content starts with the same values\n\n var newPos = this.extractCommon(bestPath[0], newString, oldString, 0);\n\n if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // Identity per the equality and tokenizer\n return done([{\n value: this.join(newString),\n count: newString.length\n }]);\n } // Once we hit the right edge of the edit graph on some diagonal k, we can\n // definitely reach the end of the edit graph in no more than k edits, so\n // there's no point in considering any moves to diagonal k+1 any more (from\n // which we're guaranteed to need at least k+1 more edits).\n // Similarly, once we've reached the bottom of the edit graph, there's no\n // point considering moves to lower diagonals.\n // We record this fact by setting minDiagonalToConsider and\n // maxDiagonalToConsider to some finite value once we've hit the edge of\n // the edit graph.\n // This optimization is not faithful to the original algorithm presented in\n // Myers's paper, which instead pointlessly extends D-paths off the end of\n // the edit graph - see page 7 of Myers's paper which notes this point\n // explicitly and illustrates it with a diagram. This has major performance\n // implications for some common scenarios. For instance, to compute a diff\n // where the new text simply appends d characters on the end of the\n // original text of length n, the true Myers algorithm will take O(n+d^2)\n // time while this optimization needs only O(n+d) time.\n\n\n var minDiagonalToConsider = -Infinity,\n maxDiagonalToConsider = Infinity; // Main worker method. checks all permutations of a given edit length for acceptance.\n\n function execEditLength() {\n for (var diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) {\n var basePath =\n /*istanbul ignore start*/\n void 0\n /*istanbul ignore end*/\n ;\n var removePath = bestPath[diagonalPath - 1],\n addPath = bestPath[diagonalPath + 1];\n\n if (removePath) {\n // No one else is going to attempt to use this value, clear it\n bestPath[diagonalPath - 1] = undefined;\n }\n\n var canAdd = false;\n\n if (addPath) {\n // what newPos will be after we do an insertion:\n var addPathNewPos = addPath.oldPos - diagonalPath;\n canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen;\n }\n\n var canRemove = removePath && removePath.oldPos + 1 < oldLen;\n\n if (!canAdd && !canRemove) {\n // If this path is a terminal then prune\n bestPath[diagonalPath] = undefined;\n continue;\n } // Select the diagonal that we want to branch from. We select the prior\n // path whose position in the old string is the farthest from the origin\n // and does not pass the bounds of the diff graph\n // TODO: Remove the `+ 1` here to make behavior match Myers algorithm\n // and prefer to order removals before insertions.\n\n\n if (!canRemove || canAdd && removePath.oldPos + 1 < addPath.oldPos) {\n basePath = self.addToPath(addPath, true, undefined, 0);\n } else {\n basePath = self.addToPath(removePath, undefined, true, 1);\n }\n\n newPos = self.extractCommon(basePath, newString, oldString, diagonalPath);\n\n if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // If we have hit the end of both strings, then we are done\n return done(buildValues(self, basePath.lastComponent, newString, oldString, self.useLongestToken));\n } else {\n bestPath[diagonalPath] = basePath;\n\n if (basePath.oldPos + 1 >= oldLen) {\n maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1);\n }\n\n if (newPos + 1 >= newLen) {\n minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1);\n }\n }\n }\n\n editLength++;\n } // Performs the length of edit iteration. Is a bit fugly as this has to support the\n // sync and async mode which is never fun. Loops over execEditLength until a value\n // is produced, or until the edit length exceeds options.maxEditLength (if given),\n // in which case it will return undefined.\n\n\n if (callback) {\n (function exec() {\n setTimeout(function () {\n if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) {\n return callback();\n }\n\n if (!execEditLength()) {\n exec();\n }\n }, 0);\n })();\n } else {\n while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) {\n var ret = execEditLength();\n\n if (ret) {\n return ret;\n }\n }\n }\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n addToPath: function addToPath(path, added, removed, oldPosInc) {\n var last = path.lastComponent;\n\n if (last && last.added === added && last.removed === removed) {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: {\n count: last.count + 1,\n added: added,\n removed: removed,\n previousComponent: last.previousComponent\n }\n };\n } else {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: {\n count: 1,\n added: added,\n removed: removed,\n previousComponent: last\n }\n };\n }\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {\n var newLen = newString.length,\n oldLen = oldString.length,\n oldPos = basePath.oldPos,\n newPos = oldPos - diagonalPath,\n commonCount = 0;\n\n while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {\n newPos++;\n oldPos++;\n commonCount++;\n }\n\n if (commonCount) {\n basePath.lastComponent = {\n count: commonCount,\n previousComponent: basePath.lastComponent\n };\n }\n\n basePath.oldPos = oldPos;\n return newPos;\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n equals: function equals(left, right) {\n if (this.options.comparator) {\n return this.options.comparator(left, right);\n } else {\n return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase();\n }\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n removeEmpty: function removeEmpty(array) {\n var ret = [];\n\n for (var i = 0; i < array.length; i++) {\n if (array[i]) {\n ret.push(array[i]);\n }\n }\n\n return ret;\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n castInput: function castInput(value) {\n return value;\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n tokenize: function tokenize(value) {\n return value.split('');\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n join: function join(chars) {\n return chars.join('');\n }\n};\n\nfunction buildValues(diff, lastComponent, newString, oldString, useLongestToken) {\n // First we convert our linked list of components in reverse order to an\n // array in the right order:\n var components = [];\n var nextComponent;\n\n while (lastComponent) {\n components.push(lastComponent);\n nextComponent = lastComponent.previousComponent;\n delete lastComponent.previousComponent;\n lastComponent = nextComponent;\n }\n\n components.reverse();\n var componentPos = 0,\n componentLen = components.length,\n newPos = 0,\n oldPos = 0;\n\n for (; componentPos < componentLen; componentPos++) {\n var component = components[componentPos];\n\n if (!component.removed) {\n if (!component.added && useLongestToken) {\n var value = newString.slice(newPos, newPos + component.count);\n value = value.map(function (value, i) {\n var oldValue = oldString[oldPos + i];\n return oldValue.length > value.length ? oldValue : value;\n });\n component.value = diff.join(value);\n } else {\n component.value = diff.join(newString.slice(newPos, newPos + component.count));\n }\n\n newPos += component.count; // Common case\n\n if (!component.added) {\n oldPos += component.count;\n }\n } else {\n component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));\n oldPos += component.count; // Reverse add and remove so removes are output first to match common convention\n // The diffing algorithm is tied to add then remove output and this is the simplest\n // route to get the desired output with minimal overhead.\n\n if (componentPos && components[componentPos - 1].added) {\n var tmp = components[componentPos - 1];\n components[componentPos - 1] = components[componentPos];\n components[componentPos] = tmp;\n }\n }\n } // Special case handle for when one terminal is ignored (i.e. whitespace).\n // For this case we merge the terminal into the prior string and drop the change.\n // This is only available for string mode.\n\n\n var finalComponent = components[componentLen - 1];\n\n if (componentLen > 1 && typeof finalComponent.value === 'string' && (finalComponent.added || finalComponent.removed) && diff.equals('', finalComponent.value)) {\n components[componentLen - 2].value += finalComponent.value;\n components.pop();\n }\n\n return components;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Jhc2UuanMiXSwibmFtZXMiOlsiRGlmZiIsInByb3RvdHlwZSIsImRpZmYiLCJvbGRTdHJpbmciLCJuZXdTdHJpbmciLCJvcHRpb25zIiwiY2FsbGJhY2siLCJzZWxmIiwiZG9uZSIsInZhbHVlIiwic2V0VGltZW91dCIsInVuZGVmaW5lZCIsImNhc3RJbnB1dCIsInJlbW92ZUVtcHR5IiwidG9rZW5pemUiLCJuZXdMZW4iLCJsZW5ndGgiLCJvbGRMZW4iLCJlZGl0TGVuZ3RoIiwibWF4RWRpdExlbmd0aCIsIk1hdGgiLCJtaW4iLCJtYXhFeGVjdXRpb25UaW1lIiwidGltZW91dCIsIkluZmluaXR5IiwiYWJvcnRBZnRlclRpbWVzdGFtcCIsIkRhdGUiLCJub3ciLCJiZXN0UGF0aCIsIm9sZFBvcyIsImxhc3RDb21wb25lbnQiLCJuZXdQb3MiLCJleHRyYWN0Q29tbW9uIiwiam9pbiIsImNvdW50IiwibWluRGlhZ29uYWxUb0NvbnNpZGVyIiwibWF4RGlhZ29uYWxUb0NvbnNpZGVyIiwiZXhlY0VkaXRMZW5ndGgiLCJkaWFnb25hbFBhdGgiLCJtYXgiLCJiYXNlUGF0aCIsInJlbW92ZVBhdGgiLCJhZGRQYXRoIiwiY2FuQWRkIiwiYWRkUGF0aE5ld1BvcyIsImNhblJlbW92ZSIsImFkZFRvUGF0aCIsImJ1aWxkVmFsdWVzIiwidXNlTG9uZ2VzdFRva2VuIiwiZXhlYyIsInJldCIsInBhdGgiLCJhZGRlZCIsInJlbW92ZWQiLCJvbGRQb3NJbmMiLCJsYXN0IiwicHJldmlvdXNDb21wb25lbnQiLCJjb21tb25Db3VudCIsImVxdWFscyIsImxlZnQiLCJyaWdodCIsImNvbXBhcmF0b3IiLCJpZ25vcmVDYXNlIiwidG9Mb3dlckNhc2UiLCJhcnJheSIsImkiLCJwdXNoIiwic3BsaXQiLCJjaGFycyIsImNvbXBvbmVudHMiLCJuZXh0Q29tcG9uZW50IiwicmV2ZXJzZSIsImNvbXBvbmVudFBvcyIsImNvbXBvbmVudExlbiIsImNvbXBvbmVudCIsInNsaWNlIiwibWFwIiwib2xkVmFsdWUiLCJ0bXAiLCJmaW5hbENvbXBvbmVudCIsInBvcCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQWUsU0FBU0EsSUFBVCxHQUFnQixDQUFFOztBQUVqQ0EsSUFBSSxDQUFDQyxTQUFMLEdBQWlCO0FBQUE7O0FBQUE7QUFDZkMsRUFBQUEsSUFEZSxnQkFDVkMsU0FEVSxFQUNDQyxTQURELEVBQzBCO0FBQUE7QUFBQTs7QUFBQTtBQUFBO0FBQWRDLElBQUFBLE9BQWMsdUVBQUosRUFBSTtBQUN2QyxRQUFJQyxRQUFRLEdBQUdELE9BQU8sQ0FBQ0MsUUFBdkI7O0FBQ0EsUUFBSSxPQUFPRCxPQUFQLEtBQW1CLFVBQXZCLEVBQW1DO0FBQ2pDQyxNQUFBQSxRQUFRLEdBQUdELE9BQVg7QUFDQUEsTUFBQUEsT0FBTyxHQUFHLEVBQVY7QUFDRDs7QUFDRCxTQUFLQSxPQUFMLEdBQWVBLE9BQWY7QUFFQSxRQUFJRSxJQUFJLEdBQUcsSUFBWDs7QUFFQSxhQUFTQyxJQUFULENBQWNDLEtBQWQsRUFBcUI7QUFDbkIsVUFBSUgsUUFBSixFQUFjO0FBQ1pJLFFBQUFBLFVBQVUsQ0FBQyxZQUFXO0FBQUVKLFVBQUFBLFFBQVEsQ0FBQ0ssU0FBRCxFQUFZRixLQUFaLENBQVI7QUFBNkIsU0FBM0MsRUFBNkMsQ0FBN0MsQ0FBVjtBQUNBLGVBQU8sSUFBUDtBQUNELE9BSEQsTUFHTztBQUNMLGVBQU9BLEtBQVA7QUFDRDtBQUNGLEtBakJzQyxDQW1CdkM7OztBQUNBTixJQUFBQSxTQUFTLEdBQUcsS0FBS1MsU0FBTCxDQUFlVCxTQUFmLENBQVo7QUFDQUMsSUFBQUEsU0FBUyxHQUFHLEtBQUtRLFNBQUwsQ0FBZVIsU0FBZixDQUFaO0FBRUFELElBQUFBLFNBQVMsR0FBRyxLQUFLVSxXQUFMLENBQWlCLEtBQUtDLFFBQUwsQ0FBY1gsU0FBZCxDQUFqQixDQUFaO0FBQ0FDLElBQUFBLFNBQVMsR0FBRyxLQUFLUyxXQUFMLENBQWlCLEtBQUtDLFFBQUwsQ0FBY1YsU0FBZCxDQUFqQixDQUFaO0FBRUEsUUFBSVcsTUFBTSxHQUFHWCxTQUFTLENBQUNZLE1BQXZCO0FBQUEsUUFBK0JDLE1BQU0sR0FBR2QsU0FBUyxDQUFDYSxNQUFsRDtBQUNBLFFBQUlFLFVBQVUsR0FBRyxDQUFqQjtBQUNBLFFBQUlDLGFBQWEsR0FBR0osTUFBTSxHQUFHRSxNQUE3Qjs7QUFDQSxRQUFHWixPQUFPLENBQUNjLGFBQVgsRUFBMEI7QUFDeEJBLE1BQUFBLGFBQWEsR0FBR0MsSUFBSSxDQUFDQyxHQUFMLENBQVNGLGFBQVQsRUFBd0JkLE9BQU8sQ0FBQ2MsYUFBaEMsQ0FBaEI7QUFDRDs7QUFDRCxRQUFNRyxnQkFBZ0I7QUFBQTtBQUFBO0FBQUE7QUFBR2pCLElBQUFBLE9BQU8sQ0FBQ2tCLE9BQVgsK0RBQXNCQyxRQUE1QztBQUNBLFFBQU1DLG1CQUFtQixHQUFHQyxJQUFJLENBQUNDLEdBQUwsS0FBYUwsZ0JBQXpDO0FBRUEsUUFBSU0sUUFBUSxHQUFHLENBQUM7QUFBRUMsTUFBQUEsTUFBTSxFQUFFLENBQUMsQ0FBWDtBQUFjQyxNQUFBQSxhQUFhLEVBQUVuQjtBQUE3QixLQUFELENBQWYsQ0FuQ3VDLENBcUN2Qzs7QUFDQSxRQUFJb0IsTUFBTSxHQUFHLEtBQUtDLGFBQUwsQ0FBbUJKLFFBQVEsQ0FBQyxDQUFELENBQTNCLEVBQWdDeEIsU0FBaEMsRUFBMkNELFNBQTNDLEVBQXNELENBQXRELENBQWI7O0FBQ0EsUUFBSXlCLFFBQVEsQ0FBQyxDQUFELENBQVIsQ0FBWUMsTUFBWixHQUFxQixDQUFyQixJQUEwQlosTUFBMUIsSUFBb0NjLE1BQU0sR0FBRyxDQUFULElBQWNoQixNQUF0RCxFQUE4RDtBQUM1RDtBQUNBLGFBQU9QLElBQUksQ0FBQyxDQUFDO0FBQUNDLFFBQUFBLEtBQUssRUFBRSxLQUFLd0IsSUFBTCxDQUFVN0IsU0FBVixDQUFSO0FBQThCOEIsUUFBQUEsS0FBSyxFQUFFOUIsU0FBUyxDQUFDWTtBQUEvQyxPQUFELENBQUQsQ0FBWDtBQUNELEtBMUNzQyxDQTRDdkM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBQ0EsUUFBSW1CLHFCQUFxQixHQUFHLENBQUNYLFFBQTdCO0FBQUEsUUFBdUNZLHFCQUFxQixHQUFHWixRQUEvRCxDQTdEdUMsQ0ErRHZDOztBQUNBLGFBQVNhLGNBQVQsR0FBMEI7QUFDeEIsV0FDRSxJQUFJQyxZQUFZLEdBQUdsQixJQUFJLENBQUNtQixHQUFMLENBQVNKLHFCQUFULEVBQWdDLENBQUNqQixVQUFqQyxDQURyQixFQUVFb0IsWUFBWSxJQUFJbEIsSUFBSSxDQUFDQyxHQUFMLENBQVNlLHFCQUFULEVBQWdDbEIsVUFBaEMsQ0FGbEIsRUFHRW9CLFlBQVksSUFBSSxDQUhsQixFQUlFO0FBQ0EsWUFBSUUsUUFBUTtBQUFBO0FBQUE7QUFBWjtBQUFBO0FBQ0EsWUFBSUMsVUFBVSxHQUFHYixRQUFRLENBQUNVLFlBQVksR0FBRyxDQUFoQixDQUF6QjtBQUFBLFlBQ0lJLE9BQU8sR0FBR2QsUUFBUSxDQUFDVSxZQUFZLEdBQUcsQ0FBaEIsQ0FEdEI7O0FBRUEsWUFBSUcsVUFBSixFQUFnQjtBQUNkO0FBQ0FiLFVBQUFBLFFBQVEsQ0FBQ1UsWUFBWSxHQUFHLENBQWhCLENBQVIsR0FBNkIzQixTQUE3QjtBQUNEOztBQUVELFlBQUlnQyxNQUFNLEdBQUcsS0FBYjs7QUFDQSxZQUFJRCxPQUFKLEVBQWE7QUFDWDtBQUNBLGNBQU1FLGFBQWEsR0FBR0YsT0FBTyxDQUFDYixNQUFSLEdBQWlCUyxZQUF2QztBQUNBSyxVQUFBQSxNQUFNLEdBQUdELE9BQU8sSUFBSSxLQUFLRSxhQUFoQixJQUFpQ0EsYUFBYSxHQUFHN0IsTUFBMUQ7QUFDRDs7QUFFRCxZQUFJOEIsU0FBUyxHQUFHSixVQUFVLElBQUlBLFVBQVUsQ0FBQ1osTUFBWCxHQUFvQixDQUFwQixHQUF3QlosTUFBdEQ7O0FBQ0EsWUFBSSxDQUFDMEIsTUFBRCxJQUFXLENBQUNFLFNBQWhCLEVBQTJCO0FBQ3pCO0FBQ0FqQixVQUFBQSxRQUFRLENBQUNVLFlBQUQsQ0FBUixHQUF5QjNCLFNBQXpCO0FBQ0E7QUFDRCxTQXJCRCxDQXVCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQSxZQUFJLENBQUNrQyxTQUFELElBQWVGLE1BQU0sSUFBSUYsVUFBVSxDQUFDWixNQUFYLEdBQW9CLENBQXBCLEdBQXdCYSxPQUFPLENBQUNiLE1BQTdELEVBQXNFO0FBQ3BFVyxVQUFBQSxRQUFRLEdBQUdqQyxJQUFJLENBQUN1QyxTQUFMLENBQWVKLE9BQWYsRUFBd0IsSUFBeEIsRUFBOEIvQixTQUE5QixFQUF5QyxDQUF6QyxDQUFYO0FBQ0QsU0FGRCxNQUVPO0FBQ0w2QixVQUFBQSxRQUFRLEdBQUdqQyxJQUFJLENBQUN1QyxTQUFMLENBQWVMLFVBQWYsRUFBMkI5QixTQUEzQixFQUFzQyxJQUF0QyxFQUE0QyxDQUE1QyxDQUFYO0FBQ0Q7O0FBRURvQixRQUFBQSxNQUFNLEdBQUd4QixJQUFJLENBQUN5QixhQUFMLENBQW1CUSxRQUFuQixFQUE2QnBDLFNBQTdCLEVBQXdDRCxTQUF4QyxFQUFtRG1DLFlBQW5ELENBQVQ7O0FBRUEsWUFBSUUsUUFBUSxDQUFDWCxNQUFULEdBQWtCLENBQWxCLElBQXVCWixNQUF2QixJQUFpQ2MsTUFBTSxHQUFHLENBQVQsSUFBY2hCLE1BQW5ELEVBQTJEO0FBQ3pEO0FBQ0EsaUJBQU9QLElBQUksQ0FBQ3VDLFdBQVcsQ0FBQ3hDLElBQUQsRUFBT2lDLFFBQVEsQ0FBQ1YsYUFBaEIsRUFBK0IxQixTQUEvQixFQUEwQ0QsU0FBMUMsRUFBcURJLElBQUksQ0FBQ3lDLGVBQTFELENBQVosQ0FBWDtBQUNELFNBSEQsTUFHTztBQUNMcEIsVUFBQUEsUUFBUSxDQUFDVSxZQUFELENBQVIsR0FBeUJFLFFBQXpCOztBQUNBLGNBQUlBLFFBQVEsQ0FBQ1gsTUFBVCxHQUFrQixDQUFsQixJQUF1QlosTUFBM0IsRUFBbUM7QUFDakNtQixZQUFBQSxxQkFBcUIsR0FBR2hCLElBQUksQ0FBQ0MsR0FBTCxDQUFTZSxxQkFBVCxFQUFnQ0UsWUFBWSxHQUFHLENBQS9DLENBQXhCO0FBQ0Q7O0FBQ0QsY0FBSVAsTUFBTSxHQUFHLENBQVQsSUFBY2hCLE1BQWxCLEVBQTBCO0FBQ3hCb0IsWUFBQUEscUJBQXFCLEdBQUdmLElBQUksQ0FBQ21CLEdBQUwsQ0FBU0oscUJBQVQsRUFBZ0NHLFlBQVksR0FBRyxDQUEvQyxDQUF4QjtBQUNEO0FBQ0Y7QUFDRjs7QUFFRHBCLE1BQUFBLFVBQVU7QUFDWCxLQXhIc0MsQ0EwSHZDO0FBQ0E7QUFDQTtBQUNBOzs7QUFDQSxRQUFJWixRQUFKLEVBQWM7QUFDWCxnQkFBUzJDLElBQVQsR0FBZ0I7QUFDZnZDLFFBQUFBLFVBQVUsQ0FBQyxZQUFXO0FBQ3BCLGNBQUlRLFVBQVUsR0FBR0MsYUFBYixJQUE4Qk8sSUFBSSxDQUFDQyxHQUFMLEtBQWFGLG1CQUEvQyxFQUFvRTtBQUNsRSxtQkFBT25CLFFBQVEsRUFBZjtBQUNEOztBQUVELGNBQUksQ0FBQytCLGNBQWMsRUFBbkIsRUFBdUI7QUFDckJZLFlBQUFBLElBQUk7QUFDTDtBQUNGLFNBUlMsRUFRUCxDQVJPLENBQVY7QUFTRCxPQVZBLEdBQUQ7QUFXRCxLQVpELE1BWU87QUFDTCxhQUFPL0IsVUFBVSxJQUFJQyxhQUFkLElBQStCTyxJQUFJLENBQUNDLEdBQUwsTUFBY0YsbUJBQXBELEVBQXlFO0FBQ3ZFLFlBQUl5QixHQUFHLEdBQUdiLGNBQWMsRUFBeEI7O0FBQ0EsWUFBSWEsR0FBSixFQUFTO0FBQ1AsaUJBQU9BLEdBQVA7QUFDRDtBQUNGO0FBQ0Y7QUFDRixHQW5KYzs7QUFBQTs7QUFBQTtBQXFKZkosRUFBQUEsU0FySmUscUJBcUpMSyxJQXJKSyxFQXFKQ0MsS0FySkQsRUFxSlFDLE9BckpSLEVBcUppQkMsU0FySmpCLEVBcUo0QjtBQUN6QyxRQUFJQyxJQUFJLEdBQUdKLElBQUksQ0FBQ3JCLGFBQWhCOztBQUNBLFFBQUl5QixJQUFJLElBQUlBLElBQUksQ0FBQ0gsS0FBTCxLQUFlQSxLQUF2QixJQUFnQ0csSUFBSSxDQUFDRixPQUFMLEtBQWlCQSxPQUFyRCxFQUE4RDtBQUM1RCxhQUFPO0FBQ0x4QixRQUFBQSxNQUFNLEVBQUVzQixJQUFJLENBQUN0QixNQUFMLEdBQWN5QixTQURqQjtBQUVMeEIsUUFBQUEsYUFBYSxFQUFFO0FBQUNJLFVBQUFBLEtBQUssRUFBRXFCLElBQUksQ0FBQ3JCLEtBQUwsR0FBYSxDQUFyQjtBQUF3QmtCLFVBQUFBLEtBQUssRUFBRUEsS0FBL0I7QUFBc0NDLFVBQUFBLE9BQU8sRUFBRUEsT0FBL0M7QUFBd0RHLFVBQUFBLGlCQUFpQixFQUFFRCxJQUFJLENBQUNDO0FBQWhGO0FBRlYsT0FBUDtBQUlELEtBTEQsTUFLTztBQUNMLGFBQU87QUFDTDNCLFFBQUFBLE1BQU0sRUFBRXNCLElBQUksQ0FBQ3RCLE1BQUwsR0FBY3lCLFNBRGpCO0FBRUx4QixRQUFBQSxhQUFhLEVBQUU7QUFBQ0ksVUFBQUEsS0FBSyxFQUFFLENBQVI7QUFBV2tCLFVBQUFBLEtBQUssRUFBRUEsS0FBbEI7QUFBeUJDLFVBQUFBLE9BQU8sRUFBRUEsT0FBbEM7QUFBMkNHLFVBQUFBLGlCQUFpQixFQUFFRDtBQUE5RDtBQUZWLE9BQVA7QUFJRDtBQUNGLEdBbEtjOztBQUFBOztBQUFBO0FBbUtmdkIsRUFBQUEsYUFuS2UseUJBbUtEUSxRQW5LQyxFQW1LU3BDLFNBbktULEVBbUtvQkQsU0FuS3BCLEVBbUsrQm1DLFlBbksvQixFQW1LNkM7QUFDMUQsUUFBSXZCLE1BQU0sR0FBR1gsU0FBUyxDQUFDWSxNQUF2QjtBQUFBLFFBQ0lDLE1BQU0sR0FBR2QsU0FBUyxDQUFDYSxNQUR2QjtBQUFBLFFBRUlhLE1BQU0sR0FBR1csUUFBUSxDQUFDWCxNQUZ0QjtBQUFBLFFBR0lFLE1BQU0sR0FBR0YsTUFBTSxHQUFHUyxZQUh0QjtBQUFBLFFBS0ltQixXQUFXLEdBQUcsQ0FMbEI7O0FBTUEsV0FBTzFCLE1BQU0sR0FBRyxDQUFULEdBQWFoQixNQUFiLElBQXVCYyxNQUFNLEdBQUcsQ0FBVCxHQUFhWixNQUFwQyxJQUE4QyxLQUFLeUMsTUFBTCxDQUFZdEQsU0FBUyxDQUFDMkIsTUFBTSxHQUFHLENBQVYsQ0FBckIsRUFBbUM1QixTQUFTLENBQUMwQixNQUFNLEdBQUcsQ0FBVixDQUE1QyxDQUFyRCxFQUFnSDtBQUM5R0UsTUFBQUEsTUFBTTtBQUNORixNQUFBQSxNQUFNO0FBQ040QixNQUFBQSxXQUFXO0FBQ1o7O0FBRUQsUUFBSUEsV0FBSixFQUFpQjtBQUNmakIsTUFBQUEsUUFBUSxDQUFDVixhQUFULEdBQXlCO0FBQUNJLFFBQUFBLEtBQUssRUFBRXVCLFdBQVI7QUFBcUJELFFBQUFBLGlCQUFpQixFQUFFaEIsUUFBUSxDQUFDVjtBQUFqRCxPQUF6QjtBQUNEOztBQUVEVSxJQUFBQSxRQUFRLENBQUNYLE1BQVQsR0FBa0JBLE1BQWxCO0FBQ0EsV0FBT0UsTUFBUDtBQUNELEdBdExjOztBQUFBOztBQUFBO0FBd0xmMkIsRUFBQUEsTUF4TGUsa0JBd0xSQyxJQXhMUSxFQXdMRkMsS0F4TEUsRUF3TEs7QUFDbEIsUUFBSSxLQUFLdkQsT0FBTCxDQUFhd0QsVUFBakIsRUFBNkI7QUFDM0IsYUFBTyxLQUFLeEQsT0FBTCxDQUFhd0QsVUFBYixDQUF3QkYsSUFBeEIsRUFBOEJDLEtBQTlCLENBQVA7QUFDRCxLQUZELE1BRU87QUFDTCxhQUFPRCxJQUFJLEtBQUtDLEtBQVQsSUFDRCxLQUFLdkQsT0FBTCxDQUFheUQsVUFBYixJQUEyQkgsSUFBSSxDQUFDSSxXQUFMLE9BQXVCSCxLQUFLLENBQUNHLFdBQU4sRUFEeEQ7QUFFRDtBQUNGLEdBL0xjOztBQUFBOztBQUFBO0FBZ01mbEQsRUFBQUEsV0FoTWUsdUJBZ01IbUQsS0FoTUcsRUFnTUk7QUFDakIsUUFBSWQsR0FBRyxHQUFHLEVBQVY7O0FBQ0EsU0FBSyxJQUFJZSxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRCxLQUFLLENBQUNoRCxNQUExQixFQUFrQ2lELENBQUMsRUFBbkMsRUFBdUM7QUFDckMsVUFBSUQsS0FBSyxDQUFDQyxDQUFELENBQVQsRUFBYztBQUNaZixRQUFBQSxHQUFHLENBQUNnQixJQUFKLENBQVNGLEtBQUssQ0FBQ0MsQ0FBRCxDQUFkO0FBQ0Q7QUFDRjs7QUFDRCxXQUFPZixHQUFQO0FBQ0QsR0F4TWM7O0FBQUE7O0FBQUE7QUF5TWZ0QyxFQUFBQSxTQXpNZSxxQkF5TUxILEtBek1LLEVBeU1FO0FBQ2YsV0FBT0EsS0FBUDtBQUNELEdBM01jOztBQUFBOztBQUFBO0FBNE1mSyxFQUFBQSxRQTVNZSxvQkE0TU5MLEtBNU1NLEVBNE1DO0FBQ2QsV0FBT0EsS0FBSyxDQUFDMEQsS0FBTixDQUFZLEVBQVosQ0FBUDtBQUNELEdBOU1jOztBQUFBOztBQUFBO0FBK01mbEMsRUFBQUEsSUEvTWUsZ0JBK01WbUMsS0EvTVUsRUErTUg7QUFDVixXQUFPQSxLQUFLLENBQUNuQyxJQUFOLENBQVcsRUFBWCxDQUFQO0FBQ0Q7QUFqTmMsQ0FBakI7O0FBb05BLFNBQVNjLFdBQVQsQ0FBcUI3QyxJQUFyQixFQUEyQjRCLGFBQTNCLEVBQTBDMUIsU0FBMUMsRUFBcURELFNBQXJELEVBQWdFNkMsZUFBaEUsRUFBaUY7QUFDL0U7QUFDQTtBQUNBLE1BQU1xQixVQUFVLEdBQUcsRUFBbkI7QUFDQSxNQUFJQyxhQUFKOztBQUNBLFNBQU94QyxhQUFQLEVBQXNCO0FBQ3BCdUMsSUFBQUEsVUFBVSxDQUFDSCxJQUFYLENBQWdCcEMsYUFBaEI7QUFDQXdDLElBQUFBLGFBQWEsR0FBR3hDLGFBQWEsQ0FBQzBCLGlCQUE5QjtBQUNBLFdBQU8xQixhQUFhLENBQUMwQixpQkFBckI7QUFDQTFCLElBQUFBLGFBQWEsR0FBR3dDLGFBQWhCO0FBQ0Q7O0FBQ0RELEVBQUFBLFVBQVUsQ0FBQ0UsT0FBWDtBQUVBLE1BQUlDLFlBQVksR0FBRyxDQUFuQjtBQUFBLE1BQ0lDLFlBQVksR0FBR0osVUFBVSxDQUFDckQsTUFEOUI7QUFBQSxNQUVJZSxNQUFNLEdBQUcsQ0FGYjtBQUFBLE1BR0lGLE1BQU0sR0FBRyxDQUhiOztBQUtBLFNBQU8yQyxZQUFZLEdBQUdDLFlBQXRCLEVBQW9DRCxZQUFZLEVBQWhELEVBQW9EO0FBQ2xELFFBQUlFLFNBQVMsR0FBR0wsVUFBVSxDQUFDRyxZQUFELENBQTFCOztBQUNBLFFBQUksQ0FBQ0UsU0FBUyxDQUFDckIsT0FBZixFQUF3QjtBQUN0QixVQUFJLENBQUNxQixTQUFTLENBQUN0QixLQUFYLElBQW9CSixlQUF4QixFQUF5QztBQUN2QyxZQUFJdkMsS0FBSyxHQUFHTCxTQUFTLENBQUN1RSxLQUFWLENBQWdCNUMsTUFBaEIsRUFBd0JBLE1BQU0sR0FBRzJDLFNBQVMsQ0FBQ3hDLEtBQTNDLENBQVo7QUFDQXpCLFFBQUFBLEtBQUssR0FBR0EsS0FBSyxDQUFDbUUsR0FBTixDQUFVLFVBQVNuRSxLQUFULEVBQWdCd0QsQ0FBaEIsRUFBbUI7QUFDbkMsY0FBSVksUUFBUSxHQUFHMUUsU0FBUyxDQUFDMEIsTUFBTSxHQUFHb0MsQ0FBVixDQUF4QjtBQUNBLGlCQUFPWSxRQUFRLENBQUM3RCxNQUFULEdBQWtCUCxLQUFLLENBQUNPLE1BQXhCLEdBQWlDNkQsUUFBakMsR0FBNENwRSxLQUFuRDtBQUNELFNBSE8sQ0FBUjtBQUtBaUUsUUFBQUEsU0FBUyxDQUFDakUsS0FBVixHQUFrQlAsSUFBSSxDQUFDK0IsSUFBTCxDQUFVeEIsS0FBVixDQUFsQjtBQUNELE9BUkQsTUFRTztBQUNMaUUsUUFBQUEsU0FBUyxDQUFDakUsS0FBVixHQUFrQlAsSUFBSSxDQUFDK0IsSUFBTCxDQUFVN0IsU0FBUyxDQUFDdUUsS0FBVixDQUFnQjVDLE1BQWhCLEVBQXdCQSxNQUFNLEdBQUcyQyxTQUFTLENBQUN4QyxLQUEzQyxDQUFWLENBQWxCO0FBQ0Q7O0FBQ0RILE1BQUFBLE1BQU0sSUFBSTJDLFNBQVMsQ0FBQ3hDLEtBQXBCLENBWnNCLENBY3RCOztBQUNBLFVBQUksQ0FBQ3dDLFNBQVMsQ0FBQ3RCLEtBQWYsRUFBc0I7QUFDcEJ2QixRQUFBQSxNQUFNLElBQUk2QyxTQUFTLENBQUN4QyxLQUFwQjtBQUNEO0FBQ0YsS0FsQkQsTUFrQk87QUFDTHdDLE1BQUFBLFNBQVMsQ0FBQ2pFLEtBQVYsR0FBa0JQLElBQUksQ0FBQytCLElBQUwsQ0FBVTlCLFNBQVMsQ0FBQ3dFLEtBQVYsQ0FBZ0I5QyxNQUFoQixFQUF3QkEsTUFBTSxHQUFHNkMsU0FBUyxDQUFDeEMsS0FBM0MsQ0FBVixDQUFsQjtBQUNBTCxNQUFBQSxNQUFNLElBQUk2QyxTQUFTLENBQUN4QyxLQUFwQixDQUZLLENBSUw7QUFDQTtBQUNBOztBQUNBLFVBQUlzQyxZQUFZLElBQUlILFVBQVUsQ0FBQ0csWUFBWSxHQUFHLENBQWhCLENBQVYsQ0FBNkJwQixLQUFqRCxFQUF3RDtBQUN0RCxZQUFJMEIsR0FBRyxHQUFHVCxVQUFVLENBQUNHLFlBQVksR0FBRyxDQUFoQixDQUFwQjtBQUNBSCxRQUFBQSxVQUFVLENBQUNHLFlBQVksR0FBRyxDQUFoQixDQUFWLEdBQStCSCxVQUFVLENBQUNHLFlBQUQsQ0FBekM7QUFDQUgsUUFBQUEsVUFBVSxDQUFDRyxZQUFELENBQVYsR0FBMkJNLEdBQTNCO0FBQ0Q7QUFDRjtBQUNGLEdBbkQ4RSxDQXFEL0U7QUFDQTtBQUNBOzs7QUFDQSxNQUFJQyxjQUFjLEdBQUdWLFVBQVUsQ0FBQ0ksWUFBWSxHQUFHLENBQWhCLENBQS9COztBQUNBLE1BQUlBLFlBQVksR0FBRyxDQUFmLElBQ0csT0FBT00sY0FBYyxDQUFDdEUsS0FBdEIsS0FBZ0MsUUFEbkMsS0FFSXNFLGNBQWMsQ0FBQzNCLEtBQWYsSUFBd0IyQixjQUFjLENBQUMxQixPQUYzQyxLQUdHbkQsSUFBSSxDQUFDd0QsTUFBTCxDQUFZLEVBQVosRUFBZ0JxQixjQUFjLENBQUN0RSxLQUEvQixDQUhQLEVBRzhDO0FBQzVDNEQsSUFBQUEsVUFBVSxDQUFDSSxZQUFZLEdBQUcsQ0FBaEIsQ0FBVixDQUE2QmhFLEtBQTdCLElBQXNDc0UsY0FBYyxDQUFDdEUsS0FBckQ7QUFDQTRELElBQUFBLFVBQVUsQ0FBQ1csR0FBWDtBQUNEOztBQUVELFNBQU9YLFVBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERpZmYoKSB7fVxuXG5EaWZmLnByb3RvdHlwZSA9IHtcbiAgZGlmZihvbGRTdHJpbmcsIG5ld1N0cmluZywgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGNhbGxiYWNrID0gb3B0aW9ucy5jYWxsYmFjaztcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNhbGxiYWNrID0gb3B0aW9ucztcbiAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICB9XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIGxldCBzZWxmID0gdGhpcztcblxuICAgIGZ1bmN0aW9uIGRvbmUodmFsdWUpIHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBjYWxsYmFjayh1bmRlZmluZWQsIHZhbHVlKTsgfSwgMCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFsbG93IHN1YmNsYXNzZXMgdG8gbWFzc2FnZSB0aGUgaW5wdXQgcHJpb3IgdG8gcnVubmluZ1xuICAgIG9sZFN0cmluZyA9IHRoaXMuY2FzdElucHV0KG9sZFN0cmluZyk7XG4gICAgbmV3U3RyaW5nID0gdGhpcy5jYXN0SW5wdXQobmV3U3RyaW5nKTtcblxuICAgIG9sZFN0cmluZyA9IHRoaXMucmVtb3ZlRW1wdHkodGhpcy50b2tlbml6ZShvbGRTdHJpbmcpKTtcbiAgICBuZXdTdHJpbmcgPSB0aGlzLnJlbW92ZUVtcHR5KHRoaXMudG9rZW5pemUobmV3U3RyaW5nKSk7XG5cbiAgICBsZXQgbmV3TGVuID0gbmV3U3RyaW5nLmxlbmd0aCwgb2xkTGVuID0gb2xkU3RyaW5nLmxlbmd0aDtcbiAgICBsZXQgZWRpdExlbmd0aCA9IDE7XG4gICAgbGV0IG1heEVkaXRMZW5ndGggPSBuZXdMZW4gKyBvbGRMZW47XG4gICAgaWYob3B0aW9ucy5tYXhFZGl0TGVuZ3RoKSB7XG4gICAgICBtYXhFZGl0TGVuZ3RoID0gTWF0aC5taW4obWF4RWRpdExlbmd0aCwgb3B0aW9ucy5tYXhFZGl0TGVuZ3RoKTtcbiAgICB9XG4gICAgY29uc3QgbWF4RXhlY3V0aW9uVGltZSA9IG9wdGlvbnMudGltZW91dCA/PyBJbmZpbml0eTtcbiAgICBjb25zdCBhYm9ydEFmdGVyVGltZXN0YW1wID0gRGF0ZS5ub3coKSArIG1heEV4ZWN1dGlvblRpbWU7XG5cbiAgICBsZXQgYmVzdFBhdGggPSBbeyBvbGRQb3M6IC0xLCBsYXN0Q29tcG9uZW50OiB1bmRlZmluZWQgfV07XG5cbiAgICAvLyBTZWVkIGVkaXRMZW5ndGggPSAwLCBpLmUuIHRoZSBjb250ZW50IHN0YXJ0cyB3aXRoIHRoZSBzYW1lIHZhbHVlc1xuICAgIGxldCBuZXdQb3MgPSB0aGlzLmV4dHJhY3RDb21tb24oYmVzdFBhdGhbMF0sIG5ld1N0cmluZywgb2xkU3RyaW5nLCAwKTtcbiAgICBpZiAoYmVzdFBhdGhbMF0ub2xkUG9zICsgMSA+PSBvbGRMZW4gJiYgbmV3UG9zICsgMSA+PSBuZXdMZW4pIHtcbiAgICAgIC8vIElkZW50aXR5IHBlciB0aGUgZXF1YWxpdHkgYW5kIHRva2VuaXplclxuICAgICAgcmV0dXJuIGRvbmUoW3t2YWx1ZTogdGhpcy5qb2luKG5ld1N0cmluZyksIGNvdW50OiBuZXdTdHJpbmcubGVuZ3RofV0pO1xuICAgIH1cblxuICAgIC8vIE9uY2Ugd2UgaGl0IHRoZSByaWdodCBlZGdlIG9mIHRoZSBlZGl0IGdyYXBoIG9uIHNvbWUgZGlhZ29uYWwgaywgd2UgY2FuXG4gICAgLy8gZGVmaW5pdGVseSByZWFjaCB0aGUgZW5kIG9mIHRoZSBlZGl0IGdyYXBoIGluIG5vIG1vcmUgdGhhbiBrIGVkaXRzLCBzb1xuICAgIC8vIHRoZXJlJ3Mgbm8gcG9pbnQgaW4gY29uc2lkZXJpbmcgYW55IG1vdmVzIHRvIGRpYWdvbmFsIGsrMSBhbnkgbW9yZSAoZnJvbVxuICAgIC8vIHdoaWNoIHdlJ3JlIGd1YXJhbnRlZWQgdG8gbmVlZCBhdCBsZWFzdCBrKzEgbW9yZSBlZGl0cykuXG4gICAgLy8gU2ltaWxhcmx5LCBvbmNlIHdlJ3ZlIHJlYWNoZWQgdGhlIGJvdHRvbSBvZiB0aGUgZWRpdCBncmFwaCwgdGhlcmUncyBub1xuICAgIC8vIHBvaW50IGNvbnNpZGVyaW5nIG1vdmVzIHRvIGxvd2VyIGRpYWdvbmFscy5cbiAgICAvLyBXZSByZWNvcmQgdGhpcyBmYWN0IGJ5IHNldHRpbmcgbWluRGlhZ29uYWxUb0NvbnNpZGVyIGFuZFxuICAgIC8vIG1heERpYWdvbmFsVG9Db25zaWRlciB0byBzb21lIGZpbml0ZSB2YWx1ZSBvbmNlIHdlJ3ZlIGhpdCB0aGUgZWRnZSBvZlxuICAgIC8vIHRoZSBlZGl0IGdyYXBoLlxuICAgIC8vIFRoaXMgb3B0aW1pemF0aW9uIGlzIG5vdCBmYWl0aGZ1bCB0byB0aGUgb3JpZ2luYWwgYWxnb3JpdGhtIHByZXNlbnRlZCBpblxuICAgIC8vIE15ZXJzJ3MgcGFwZXIsIHdoaWNoIGluc3RlYWQgcG9pbnRsZXNzbHkgZXh0ZW5kcyBELXBhdGhzIG9mZiB0aGUgZW5kIG9mXG4gICAgLy8gdGhlIGVkaXQgZ3JhcGggLSBzZWUgcGFnZSA3IG9mIE15ZXJzJ3MgcGFwZXIgd2hpY2ggbm90ZXMgdGhpcyBwb2ludFxuICAgIC8vIGV4cGxpY2l0bHkgYW5kIGlsbHVzdHJhdGVzIGl0IHdpdGggYSBkaWFncmFtLiBUaGlzIGhhcyBtYWpvciBwZXJmb3JtYW5jZVxuICAgIC8vIGltcGxpY2F0aW9ucyBmb3Igc29tZSBjb21tb24gc2NlbmFyaW9zLiBGb3IgaW5zdGFuY2UsIHRvIGNvbXB1dGUgYSBkaWZmXG4gICAgLy8gd2hlcmUgdGhlIG5ldyB0ZXh0IHNpbXBseSBhcHBlbmRzIGQgY2hhcmFjdGVycyBvbiB0aGUgZW5kIG9mIHRoZVxuICAgIC8vIG9yaWdpbmFsIHRleHQgb2YgbGVuZ3RoIG4sIHRoZSB0cnVlIE15ZXJzIGFsZ29yaXRobSB3aWxsIHRha2UgTyhuK2ReMilcbiAgICAvLyB0aW1lIHdoaWxlIHRoaXMgb3B0aW1pemF0aW9uIG5lZWRzIG9ubHkgTyhuK2QpIHRpbWUuXG4gICAgbGV0IG1pbkRpYWdvbmFsVG9Db25zaWRlciA9IC1JbmZpbml0eSwgbWF4RGlhZ29uYWxUb0NvbnNpZGVyID0gSW5maW5pdHk7XG5cbiAgICAvLyBNYWluIHdvcmtlciBtZXRob2QuIGNoZWNrcyBhbGwgcGVybXV0YXRpb25zIG9mIGEgZ2l2ZW4gZWRpdCBsZW5ndGggZm9yIGFjY2VwdGFuY2UuXG4gICAgZnVuY3Rpb24gZXhlY0VkaXRMZW5ndGgoKSB7XG4gICAgICBmb3IgKFxuICAgICAgICBsZXQgZGlhZ29uYWxQYXRoID0gTWF0aC5tYXgobWluRGlhZ29uYWxUb0NvbnNpZGVyLCAtZWRpdExlbmd0aCk7XG4gICAgICAgIGRpYWdvbmFsUGF0aCA8PSBNYXRoLm1pbihtYXhEaWFnb25hbFRvQ29uc2lkZXIsIGVkaXRMZW5ndGgpO1xuICAgICAgICBkaWFnb25hbFBhdGggKz0gMlxuICAgICAgKSB7XG4gICAgICAgIGxldCBiYXNlUGF0aDtcbiAgICAgICAgbGV0IHJlbW92ZVBhdGggPSBiZXN0UGF0aFtkaWFnb25hbFBhdGggLSAxXSxcbiAgICAgICAgICAgIGFkZFBhdGggPSBiZXN0UGF0aFtkaWFnb25hbFBhdGggKyAxXTtcbiAgICAgICAgaWYgKHJlbW92ZVBhdGgpIHtcbiAgICAgICAgICAvLyBObyBvbmUgZWxzZSBpcyBnb2luZyB0byBhdHRlbXB0IHRvIHVzZSB0aGlzIHZhbHVlLCBjbGVhciBpdFxuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aCAtIDFdID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNhbkFkZCA9IGZhbHNlO1xuICAgICAgICBpZiAoYWRkUGF0aCkge1xuICAgICAgICAgIC8vIHdoYXQgbmV3UG9zIHdpbGwgYmUgYWZ0ZXIgd2UgZG8gYW4gaW5zZXJ0aW9uOlxuICAgICAgICAgIGNvbnN0IGFkZFBhdGhOZXdQb3MgPSBhZGRQYXRoLm9sZFBvcyAtIGRpYWdvbmFsUGF0aDtcbiAgICAgICAgICBjYW5BZGQgPSBhZGRQYXRoICYmIDAgPD0gYWRkUGF0aE5ld1BvcyAmJiBhZGRQYXRoTmV3UG9zIDwgbmV3TGVuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNhblJlbW92ZSA9IHJlbW92ZVBhdGggJiYgcmVtb3ZlUGF0aC5vbGRQb3MgKyAxIDwgb2xkTGVuO1xuICAgICAgICBpZiAoIWNhbkFkZCAmJiAhY2FuUmVtb3ZlKSB7XG4gICAgICAgICAgLy8gSWYgdGhpcyBwYXRoIGlzIGEgdGVybWluYWwgdGhlbiBwcnVuZVxuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aF0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZWxlY3QgdGhlIGRpYWdvbmFsIHRoYXQgd2Ugd2FudCB0byBicmFuY2ggZnJvbS4gV2Ugc2VsZWN0IHRoZSBwcmlvclxuICAgICAgICAvLyBwYXRoIHdob3NlIHBvc2l0aW9uIGluIHRoZSBvbGQgc3RyaW5nIGlzIHRoZSBmYXJ0aGVzdCBmcm9tIHRoZSBvcmlnaW5cbiAgICAgICAgLy8gYW5kIGRvZXMgbm90IHBhc3MgdGhlIGJvdW5kcyBvZiB0aGUgZGlmZiBncmFwaFxuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgdGhlIGArIDFgIGhlcmUgdG8gbWFrZSBiZWhhdmlvciBtYXRjaCBNeWVycyBhbGdvcml0aG1cbiAgICAgICAgLy8gICAgICAgYW5kIHByZWZlciB0byBvcmRlciByZW1vdmFscyBiZWZvcmUgaW5zZXJ0aW9ucy5cbiAgICAgICAgaWYgKCFjYW5SZW1vdmUgfHwgKGNhbkFkZCAmJiByZW1vdmVQYXRoLm9sZFBvcyArIDEgPCBhZGRQYXRoLm9sZFBvcykpIHtcbiAgICAgICAgICBiYXNlUGF0aCA9IHNlbGYuYWRkVG9QYXRoKGFkZFBhdGgsIHRydWUsIHVuZGVmaW5lZCwgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzZVBhdGggPSBzZWxmLmFkZFRvUGF0aChyZW1vdmVQYXRoLCB1bmRlZmluZWQsIHRydWUsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgbmV3UG9zID0gc2VsZi5leHRyYWN0Q29tbW9uKGJhc2VQYXRoLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgZGlhZ29uYWxQYXRoKTtcblxuICAgICAgICBpZiAoYmFzZVBhdGgub2xkUG9zICsgMSA+PSBvbGRMZW4gJiYgbmV3UG9zICsgMSA+PSBuZXdMZW4pIHtcbiAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGhpdCB0aGUgZW5kIG9mIGJvdGggc3RyaW5ncywgdGhlbiB3ZSBhcmUgZG9uZVxuICAgICAgICAgIHJldHVybiBkb25lKGJ1aWxkVmFsdWVzKHNlbGYsIGJhc2VQYXRoLmxhc3RDb21wb25lbnQsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBzZWxmLnVzZUxvbmdlc3RUb2tlbikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aF0gPSBiYXNlUGF0aDtcbiAgICAgICAgICBpZiAoYmFzZVBhdGgub2xkUG9zICsgMSA+PSBvbGRMZW4pIHtcbiAgICAgICAgICAgIG1heERpYWdvbmFsVG9Db25zaWRlciA9IE1hdGgubWluKG1heERpYWdvbmFsVG9Db25zaWRlciwgZGlhZ29uYWxQYXRoIC0gMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChuZXdQb3MgKyAxID49IG5ld0xlbikge1xuICAgICAgICAgICAgbWluRGlhZ29uYWxUb0NvbnNpZGVyID0gTWF0aC5tYXgobWluRGlhZ29uYWxUb0NvbnNpZGVyLCBkaWFnb25hbFBhdGggKyAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZWRpdExlbmd0aCsrO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm1zIHRoZSBsZW5ndGggb2YgZWRpdCBpdGVyYXRpb24uIElzIGEgYml0IGZ1Z2x5IGFzIHRoaXMgaGFzIHRvIHN1cHBvcnQgdGhlXG4gICAgLy8gc3luYyBhbmQgYXN5bmMgbW9kZSB3aGljaCBpcyBuZXZlciBmdW4uIExvb3BzIG92ZXIgZXhlY0VkaXRMZW5ndGggdW50aWwgYSB2YWx1ZVxuICAgIC8vIGlzIHByb2R1Y2VkLCBvciB1bnRpbCB0aGUgZWRpdCBsZW5ndGggZXhjZWVkcyBvcHRpb25zLm1heEVkaXRMZW5ndGggKGlmIGdpdmVuKSxcbiAgICAvLyBpbiB3aGljaCBjYXNlIGl0IHdpbGwgcmV0dXJuIHVuZGVmaW5lZC5cbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIChmdW5jdGlvbiBleGVjKCkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGlmIChlZGl0TGVuZ3RoID4gbWF4RWRpdExlbmd0aCB8fCBEYXRlLm5vdygpID4gYWJvcnRBZnRlclRpbWVzdGFtcCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFleGVjRWRpdExlbmd0aCgpKSB7XG4gICAgICAgICAgICBleGVjKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICAgIH0oKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdoaWxlIChlZGl0TGVuZ3RoIDw9IG1heEVkaXRMZW5ndGggJiYgRGF0ZS5ub3coKSA8PSBhYm9ydEFmdGVyVGltZXN0YW1wKSB7XG4gICAgICAgIGxldCByZXQgPSBleGVjRWRpdExlbmd0aCgpO1xuICAgICAgICBpZiAocmV0KSB7XG4gICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBhZGRUb1BhdGgocGF0aCwgYWRkZWQsIHJlbW92ZWQsIG9sZFBvc0luYykge1xuICAgIGxldCBsYXN0ID0gcGF0aC5sYXN0Q29tcG9uZW50O1xuICAgIGlmIChsYXN0ICYmIGxhc3QuYWRkZWQgPT09IGFkZGVkICYmIGxhc3QucmVtb3ZlZCA9PT0gcmVtb3ZlZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2xkUG9zOiBwYXRoLm9sZFBvcyArIG9sZFBvc0luYyxcbiAgICAgICAgbGFzdENvbXBvbmVudDoge2NvdW50OiBsYXN0LmNvdW50ICsgMSwgYWRkZWQ6IGFkZGVkLCByZW1vdmVkOiByZW1vdmVkLCBwcmV2aW91c0NvbXBvbmVudDogbGFzdC5wcmV2aW91c0NvbXBvbmVudCB9XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvbGRQb3M6IHBhdGgub2xkUG9zICsgb2xkUG9zSW5jLFxuICAgICAgICBsYXN0Q29tcG9uZW50OiB7Y291bnQ6IDEsIGFkZGVkOiBhZGRlZCwgcmVtb3ZlZDogcmVtb3ZlZCwgcHJldmlvdXNDb21wb25lbnQ6IGxhc3QgfVxuICAgICAgfTtcbiAgICB9XG4gIH0sXG4gIGV4dHJhY3RDb21tb24oYmFzZVBhdGgsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBkaWFnb25hbFBhdGgpIHtcbiAgICBsZXQgbmV3TGVuID0gbmV3U3RyaW5nLmxlbmd0aCxcbiAgICAgICAgb2xkTGVuID0gb2xkU3RyaW5nLmxlbmd0aCxcbiAgICAgICAgb2xkUG9zID0gYmFzZVBhdGgub2xkUG9zLFxuICAgICAgICBuZXdQb3MgPSBvbGRQb3MgLSBkaWFnb25hbFBhdGgsXG5cbiAgICAgICAgY29tbW9uQ291bnQgPSAwO1xuICAgIHdoaWxlIChuZXdQb3MgKyAxIDwgbmV3TGVuICYmIG9sZFBvcyArIDEgPCBvbGRMZW4gJiYgdGhpcy5lcXVhbHMobmV3U3RyaW5nW25ld1BvcyArIDFdLCBvbGRTdHJpbmdbb2xkUG9zICsgMV0pKSB7XG4gICAgICBuZXdQb3MrKztcbiAgICAgIG9sZFBvcysrO1xuICAgICAgY29tbW9uQ291bnQrKztcbiAgICB9XG5cbiAgICBpZiAoY29tbW9uQ291bnQpIHtcbiAgICAgIGJhc2VQYXRoLmxhc3RDb21wb25lbnQgPSB7Y291bnQ6IGNvbW1vbkNvdW50LCBwcmV2aW91c0NvbXBvbmVudDogYmFzZVBhdGgubGFzdENvbXBvbmVudH07XG4gICAgfVxuXG4gICAgYmFzZVBhdGgub2xkUG9zID0gb2xkUG9zO1xuICAgIHJldHVybiBuZXdQb3M7XG4gIH0sXG5cbiAgZXF1YWxzKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5jb21wYXJhdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvbXBhcmF0b3IobGVmdCwgcmlnaHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbGVmdCA9PT0gcmlnaHRcbiAgICAgICAgfHwgKHRoaXMub3B0aW9ucy5pZ25vcmVDYXNlICYmIGxlZnQudG9Mb3dlckNhc2UoKSA9PT0gcmlnaHQudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuICB9LFxuICByZW1vdmVFbXB0eShhcnJheSkge1xuICAgIGxldCByZXQgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYXJyYXlbaV0pIHtcbiAgICAgICAgcmV0LnB1c2goYXJyYXlbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9LFxuICBjYXN0SW5wdXQodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG4gIHRva2VuaXplKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLnNwbGl0KCcnKTtcbiAgfSxcbiAgam9pbihjaGFycykge1xuICAgIHJldHVybiBjaGFycy5qb2luKCcnKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gYnVpbGRWYWx1ZXMoZGlmZiwgbGFzdENvbXBvbmVudCwgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIHVzZUxvbmdlc3RUb2tlbikge1xuICAvLyBGaXJzdCB3ZSBjb252ZXJ0IG91ciBsaW5rZWQgbGlzdCBvZiBjb21wb25lbnRzIGluIHJldmVyc2Ugb3JkZXIgdG8gYW5cbiAgLy8gYXJyYXkgaW4gdGhlIHJpZ2h0IG9yZGVyOlxuICBjb25zdCBjb21wb25lbnRzID0gW107XG4gIGxldCBuZXh0Q29tcG9uZW50O1xuICB3aGlsZSAobGFzdENvbXBvbmVudCkge1xuICAgIGNvbXBvbmVudHMucHVzaChsYXN0Q29tcG9uZW50KTtcbiAgICBuZXh0Q29tcG9uZW50ID0gbGFzdENvbXBvbmVudC5wcmV2aW91c0NvbXBvbmVudDtcbiAgICBkZWxldGUgbGFzdENvbXBvbmVudC5wcmV2aW91c0NvbXBvbmVudDtcbiAgICBsYXN0Q29tcG9uZW50ID0gbmV4dENvbXBvbmVudDtcbiAgfVxuICBjb21wb25lbnRzLnJldmVyc2UoKTtcblxuICBsZXQgY29tcG9uZW50UG9zID0gMCxcbiAgICAgIGNvbXBvbmVudExlbiA9IGNvbXBvbmVudHMubGVuZ3RoLFxuICAgICAgbmV3UG9zID0gMCxcbiAgICAgIG9sZFBvcyA9IDA7XG5cbiAgZm9yICg7IGNvbXBvbmVudFBvcyA8IGNvbXBvbmVudExlbjsgY29tcG9uZW50UG9zKyspIHtcbiAgICBsZXQgY29tcG9uZW50ID0gY29tcG9uZW50c1tjb21wb25lbnRQb3NdO1xuICAgIGlmICghY29tcG9uZW50LnJlbW92ZWQpIHtcbiAgICAgIGlmICghY29tcG9uZW50LmFkZGVkICYmIHVzZUxvbmdlc3RUb2tlbikge1xuICAgICAgICBsZXQgdmFsdWUgPSBuZXdTdHJpbmcuc2xpY2UobmV3UG9zLCBuZXdQb3MgKyBjb21wb25lbnQuY291bnQpO1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLm1hcChmdW5jdGlvbih2YWx1ZSwgaSkge1xuICAgICAgICAgIGxldCBvbGRWYWx1ZSA9IG9sZFN0cmluZ1tvbGRQb3MgKyBpXTtcbiAgICAgICAgICByZXR1cm4gb2xkVmFsdWUubGVuZ3RoID4gdmFsdWUubGVuZ3RoID8gb2xkVmFsdWUgOiB2YWx1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29tcG9uZW50LnZhbHVlID0gZGlmZi5qb2luKHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbXBvbmVudC52YWx1ZSA9IGRpZmYuam9pbihuZXdTdHJpbmcuc2xpY2UobmV3UG9zLCBuZXdQb3MgKyBjb21wb25lbnQuY291bnQpKTtcbiAgICAgIH1cbiAgICAgIG5ld1BvcyArPSBjb21wb25lbnQuY291bnQ7XG5cbiAgICAgIC8vIENvbW1vbiBjYXNlXG4gICAgICBpZiAoIWNvbXBvbmVudC5hZGRlZCkge1xuICAgICAgICBvbGRQb3MgKz0gY29tcG9uZW50LmNvdW50O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb21wb25lbnQudmFsdWUgPSBkaWZmLmpvaW4ob2xkU3RyaW5nLnNsaWNlKG9sZFBvcywgb2xkUG9zICsgY29tcG9uZW50LmNvdW50KSk7XG4gICAgICBvbGRQb3MgKz0gY29tcG9uZW50LmNvdW50O1xuXG4gICAgICAvLyBSZXZlcnNlIGFkZCBhbmQgcmVtb3ZlIHNvIHJlbW92ZXMgYXJlIG91dHB1dCBmaXJzdCB0byBtYXRjaCBjb21tb24gY29udmVudGlvblxuICAgICAgLy8gVGhlIGRpZmZpbmcgYWxnb3JpdGhtIGlzIHRpZWQgdG8gYWRkIHRoZW4gcmVtb3ZlIG91dHB1dCBhbmQgdGhpcyBpcyB0aGUgc2ltcGxlc3RcbiAgICAgIC8vIHJvdXRlIHRvIGdldCB0aGUgZGVzaXJlZCBvdXRwdXQgd2l0aCBtaW5pbWFsIG92ZXJoZWFkLlxuICAgICAgaWYgKGNvbXBvbmVudFBvcyAmJiBjb21wb25lbnRzW2NvbXBvbmVudFBvcyAtIDFdLmFkZGVkKSB7XG4gICAgICAgIGxldCB0bXAgPSBjb21wb25lbnRzW2NvbXBvbmVudFBvcyAtIDFdO1xuICAgICAgICBjb21wb25lbnRzW2NvbXBvbmVudFBvcyAtIDFdID0gY29tcG9uZW50c1tjb21wb25lbnRQb3NdO1xuICAgICAgICBjb21wb25lbnRzW2NvbXBvbmVudFBvc10gPSB0bXA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU3BlY2lhbCBjYXNlIGhhbmRsZSBmb3Igd2hlbiBvbmUgdGVybWluYWwgaXMgaWdub3JlZCAoaS5lLiB3aGl0ZXNwYWNlKS5cbiAgLy8gRm9yIHRoaXMgY2FzZSB3ZSBtZXJnZSB0aGUgdGVybWluYWwgaW50byB0aGUgcHJpb3Igc3RyaW5nIGFuZCBkcm9wIHRoZSBjaGFuZ2UuXG4gIC8vIFRoaXMgaXMgb25seSBhdmFpbGFibGUgZm9yIHN0cmluZyBtb2RlLlxuICBsZXQgZmluYWxDb21wb25lbnQgPSBjb21wb25lbnRzW2NvbXBvbmVudExlbiAtIDFdO1xuICBpZiAoY29tcG9uZW50TGVuID4gMVxuICAgICAgJiYgdHlwZW9mIGZpbmFsQ29tcG9uZW50LnZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgJiYgKGZpbmFsQ29tcG9uZW50LmFkZGVkIHx8IGZpbmFsQ29tcG9uZW50LnJlbW92ZWQpXG4gICAgICAmJiBkaWZmLmVxdWFscygnJywgZmluYWxDb21wb25lbnQudmFsdWUpKSB7XG4gICAgY29tcG9uZW50c1tjb21wb25lbnRMZW4gLSAyXS52YWx1ZSArPSBmaW5hbENvbXBvbmVudC52YWx1ZTtcbiAgICBjb21wb25lbnRzLnBvcCgpO1xuICB9XG5cbiAgcmV0dXJuIGNvbXBvbmVudHM7XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffChars = diffChars;\nexports.characterDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar characterDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.characterDiff = characterDiff;\n\n/*istanbul ignore end*/\nfunction diffChars(oldStr, newStr, options) {\n return characterDiff.diff(oldStr, newStr, options);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2NoYXJhY3Rlci5qcyJdLCJuYW1lcyI6WyJjaGFyYWN0ZXJEaWZmIiwiRGlmZiIsImRpZmZDaGFycyIsIm9sZFN0ciIsIm5ld1N0ciIsIm9wdGlvbnMiLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxJQUFNQSxhQUFhLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUF0Qjs7Ozs7O0FBQ0EsU0FBU0MsU0FBVCxDQUFtQkMsTUFBbkIsRUFBMkJDLE1BQTNCLEVBQW1DQyxPQUFuQyxFQUE0QztBQUFFLFNBQU9MLGFBQWEsQ0FBQ00sSUFBZCxDQUFtQkgsTUFBbkIsRUFBMkJDLE1BQTNCLEVBQW1DQyxPQUFuQyxDQUFQO0FBQXFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGNoYXJhY3RlckRpZmYgPSBuZXcgRGlmZigpO1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZDaGFycyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykgeyByZXR1cm4gY2hhcmFjdGVyRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTsgfVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffCss = diffCss;\nexports.cssDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar cssDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.cssDiff = cssDiff;\n\n/*istanbul ignore end*/\ncssDiff.tokenize = function (value) {\n return value.split(/([{}:;,]|\\s+)/);\n};\n\nfunction diffCss(oldStr, newStr, callback) {\n return cssDiff.diff(oldStr, newStr, callback);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Nzcy5qcyJdLCJuYW1lcyI6WyJjc3NEaWZmIiwiRGlmZiIsInRva2VuaXplIiwidmFsdWUiLCJzcGxpdCIsImRpZmZDc3MiLCJvbGRTdHIiLCJuZXdTdHIiLCJjYWxsYmFjayIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7OztBQUVPLElBQU1BLE9BQU8sR0FBRztBQUFJQztBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQSxDQUFKLEVBQWhCOzs7Ozs7QUFDUEQsT0FBTyxDQUFDRSxRQUFSLEdBQW1CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDakMsU0FBT0EsS0FBSyxDQUFDQyxLQUFOLENBQVksZUFBWixDQUFQO0FBQ0QsQ0FGRDs7QUFJTyxTQUFTQyxPQUFULENBQWlCQyxNQUFqQixFQUF5QkMsTUFBekIsRUFBaUNDLFFBQWpDLEVBQTJDO0FBQUUsU0FBT1IsT0FBTyxDQUFDUyxJQUFSLENBQWFILE1BQWIsRUFBcUJDLE1BQXJCLEVBQTZCQyxRQUE3QixDQUFQO0FBQWdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGNzc0RpZmYgPSBuZXcgRGlmZigpO1xuY3NzRGlmZi50b2tlbml6ZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZS5zcGxpdCgvKFt7fTo7LF18XFxzKykvKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmQ3NzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykgeyByZXR1cm4gY3NzRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffJson = diffJson;\nexports.canonicalize = canonicalize;\nexports.jsonDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_line = require(\"./line\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*istanbul ignore end*/\nvar objectPrototypeToString = Object.prototype.toString;\nvar jsonDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n](); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a\n// dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:\n\n/*istanbul ignore start*/\nexports.jsonDiff = jsonDiff;\n\n/*istanbul ignore end*/\njsonDiff.useLongestToken = true;\njsonDiff.tokenize =\n/*istanbul ignore start*/\n_line\n/*istanbul ignore end*/\n.\n/*istanbul ignore start*/\nlineDiff\n/*istanbul ignore end*/\n.tokenize;\n\njsonDiff.castInput = function (value) {\n /*istanbul ignore start*/\n var _this$options =\n /*istanbul ignore end*/\n this.options,\n undefinedReplacement = _this$options.undefinedReplacement,\n _this$options$stringi = _this$options.stringifyReplacer,\n stringifyReplacer = _this$options$stringi === void 0 ? function (k, v)\n /*istanbul ignore start*/\n {\n return (\n /*istanbul ignore end*/\n typeof v === 'undefined' ? undefinedReplacement : v\n );\n } : _this$options$stringi;\n return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, ' ');\n};\n\njsonDiff.equals = function (left, right) {\n return (\n /*istanbul ignore start*/\n _base\n /*istanbul ignore end*/\n [\n /*istanbul ignore start*/\n \"default\"\n /*istanbul ignore end*/\n ].prototype.equals.call(jsonDiff, left.replace(/,([\\r\\n])/g, '$1'), right.replace(/,([\\r\\n])/g, '$1'))\n );\n};\n\nfunction diffJson(oldObj, newObj, options) {\n return jsonDiff.diff(oldObj, newObj, options);\n} // This function handles the presence of circular references by bailing out when encountering an\n// object that is already on the \"stack\" of items being processed. Accepts an optional replacer\n\n\nfunction canonicalize(obj, stack, replacementStack, replacer, key) {\n stack = stack || [];\n replacementStack = replacementStack || [];\n\n if (replacer) {\n obj = replacer(key, obj);\n }\n\n var i;\n\n for (i = 0; i < stack.length; i += 1) {\n if (stack[i] === obj) {\n return replacementStack[i];\n }\n }\n\n var canonicalizedObj;\n\n if ('[object Array]' === objectPrototypeToString.call(obj)) {\n stack.push(obj);\n canonicalizedObj = new Array(obj.length);\n replacementStack.push(canonicalizedObj);\n\n for (i = 0; i < obj.length; i += 1) {\n canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key);\n }\n\n stack.pop();\n replacementStack.pop();\n return canonicalizedObj;\n }\n\n if (obj && obj.toJSON) {\n obj = obj.toJSON();\n }\n\n if (\n /*istanbul ignore start*/\n _typeof(\n /*istanbul ignore end*/\n obj) === 'object' && obj !== null) {\n stack.push(obj);\n canonicalizedObj = {};\n replacementStack.push(canonicalizedObj);\n\n var sortedKeys = [],\n _key;\n\n for (_key in obj) {\n /* istanbul ignore else */\n if (obj.hasOwnProperty(_key)) {\n sortedKeys.push(_key);\n }\n }\n\n sortedKeys.sort();\n\n for (i = 0; i < sortedKeys.length; i += 1) {\n _key = sortedKeys[i];\n canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);\n }\n\n stack.pop();\n replacementStack.pop();\n } else {\n canonicalizedObj = obj;\n }\n\n return canonicalizedObj;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2pzb24uanMiXSwibmFtZXMiOlsib2JqZWN0UHJvdG90eXBlVG9TdHJpbmciLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImpzb25EaWZmIiwiRGlmZiIsInVzZUxvbmdlc3RUb2tlbiIsInRva2VuaXplIiwibGluZURpZmYiLCJjYXN0SW5wdXQiLCJ2YWx1ZSIsIm9wdGlvbnMiLCJ1bmRlZmluZWRSZXBsYWNlbWVudCIsInN0cmluZ2lmeVJlcGxhY2VyIiwiayIsInYiLCJKU09OIiwic3RyaW5naWZ5IiwiY2Fub25pY2FsaXplIiwiZXF1YWxzIiwibGVmdCIsInJpZ2h0IiwiY2FsbCIsInJlcGxhY2UiLCJkaWZmSnNvbiIsIm9sZE9iaiIsIm5ld09iaiIsImRpZmYiLCJvYmoiLCJzdGFjayIsInJlcGxhY2VtZW50U3RhY2siLCJyZXBsYWNlciIsImtleSIsImkiLCJsZW5ndGgiLCJjYW5vbmljYWxpemVkT2JqIiwicHVzaCIsIkFycmF5IiwicG9wIiwidG9KU09OIiwic29ydGVkS2V5cyIsImhhc093blByb3BlcnR5Iiwic29ydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7QUFFQSxJQUFNQSx1QkFBdUIsR0FBR0MsTUFBTSxDQUFDQyxTQUFQLENBQWlCQyxRQUFqRDtBQUdPLElBQU1DLFFBQVEsR0FBRztBQUFJQztBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQSxDQUFKLEVBQWpCLEMsQ0FDUDtBQUNBOzs7Ozs7QUFDQUQsUUFBUSxDQUFDRSxlQUFULEdBQTJCLElBQTNCO0FBRUFGLFFBQVEsQ0FBQ0csUUFBVDtBQUFvQkM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQTtBQUFBLENBQVNELFFBQTdCOztBQUNBSCxRQUFRLENBQUNLLFNBQVQsR0FBcUIsVUFBU0MsS0FB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Z0IsR0FBR1AsR0FBbkI7QUFDRDs7QUFDRCxTQUFPTyxnQkFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7bGluZURpZmZ9IGZyb20gJy4vbGluZSc7XG5cbmNvbnN0IG9iamVjdFByb3RvdHlwZVRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuXG5leHBvcnQgY29uc3QganNvbkRpZmYgPSBuZXcgRGlmZigpO1xuLy8gRGlzY3JpbWluYXRlIGJldHdlZW4gdHdvIGxpbmVzIG9mIHByZXR0eS1wcmludGVkLCBzZXJpYWxpemVkIEpTT04gd2hlcmUgb25lIG9mIHRoZW0gaGFzIGFcbi8vIGRhbmdsaW5nIGNvbW1hIGFuZCB0aGUgb3RoZXIgZG9lc24ndC4gVHVybnMgb3V0IGluY2x1ZGluZyB0aGUgZGFuZ2xpbmcgY29tbWEgeWllbGRzIHRoZSBuaWNlc3Qgb3V0cHV0OlxuanNvbkRpZmYudXNlTG9uZ2VzdFRva2VuID0gdHJ1ZTtcblxuanNvbkRpZmYudG9rZW5pemUgPSBsaW5lRGlmZi50b2tlbml6ZTtcbmpzb25EaWZmLmNhc3RJbnB1dCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIGNvbnN0IHt1bmRlZmluZWRSZXBsYWNlbWVudCwgc3RyaW5naWZ5UmVwbGFjZXIgPSAoaywgdikgPT4gdHlwZW9mIHYgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkUmVwbGFjZW1lbnQgOiB2fSA9IHRoaXMub3B0aW9ucztcblxuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkoY2Fub25pY2FsaXplKHZhbHVlLCBudWxsLCBudWxsLCBzdHJpbmdpZnlSZXBsYWNlciksIHN0cmluZ2lmeVJlcGxhY2VyLCAnICAnKTtcbn07XG5qc29uRGlmZi5lcXVhbHMgPSBmdW5jdGlvbihsZWZ0LCByaWdodCkge1xuICByZXR1cm4gRGlmZi5wcm90b3R5cGUuZXF1YWxzLmNhbGwoanNvbkRpZmYsIGxlZnQucmVwbGFjZSgvLChbXFxyXFxuXSkvZywgJyQxJyksIHJpZ2h0LnJlcGxhY2UoLywoW1xcclxcbl0pL2csICckMScpKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmSnNvbihvbGRPYmosIG5ld09iaiwgb3B0aW9ucykgeyByZXR1cm4ganNvbkRpZmYuZGlmZihvbGRPYmosIG5ld09iaiwgb3B0aW9ucyk7IH1cblxuLy8gVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBwcmVzZW5jZSBvZiBjaXJjdWxhciByZWZlcmVuY2VzIGJ5IGJhaWxpbmcgb3V0IHdoZW4gZW5jb3VudGVyaW5nIGFuXG4vLyBvYmplY3QgdGhhdCBpcyBhbHJlYWR5IG9uIHRoZSBcInN0YWNrXCIgb2YgaXRlbXMgYmVpbmcgcHJvY2Vzc2VkLiBBY2NlcHRzIGFuIG9wdGlvbmFsIHJlcGxhY2VyXG5leHBvcnQgZnVuY3Rpb24gY2Fub25pY2FsaXplKG9iaiwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpIHtcbiAgc3RhY2sgPSBzdGFjayB8fCBbXTtcbiAgcmVwbGFjZW1lbnRTdGFjayA9IHJlcGxhY2VtZW50U3RhY2sgfHwgW107XG5cbiAgaWYgKHJlcGxhY2VyKSB7XG4gICAgb2JqID0gcmVwbGFjZXIoa2V5LCBvYmopO1xuICB9XG5cbiAgbGV0IGk7XG5cbiAgZm9yIChpID0gMDsgaSA8IHN0YWNrLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKHN0YWNrW2ldID09PSBvYmopIHtcbiAgICAgIHJldHVybiByZXBsYWNlbWVudFN0YWNrW2ldO1xuICAgIH1cbiAgfVxuXG4gIGxldCBjYW5vbmljYWxpemVkT2JqO1xuXG4gIGlmICgnW29iamVjdCBBcnJheV0nID09PSBvYmplY3RQcm90b3R5cGVUb1N0cmluZy5jYWxsKG9iaikpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IG5ldyBBcnJheShvYmoubGVuZ3RoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnB1c2goY2Fub25pY2FsaXplZE9iaik7XG4gICAgZm9yIChpID0gMDsgaSA8IG9iai5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY2Fub25pY2FsaXplZE9ialtpXSA9IGNhbm9uaWNhbGl6ZShvYmpbaV0sIHN0YWNrLCByZXBsYWNlbWVudFN0YWNrLCByZXBsYWNlciwga2V5KTtcbiAgICB9XG4gICAgc3RhY2sucG9wKCk7XG4gICAgcmVwbGFjZW1lbnRTdGFjay5wb3AoKTtcbiAgICByZXR1cm4gY2Fub25pY2FsaXplZE9iajtcbiAgfVxuXG4gIGlmIChvYmogJiYgb2JqLnRvSlNPTikge1xuICAgIG9iaiA9IG9iai50b0pTT04oKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IHt9O1xuICAgIHJlcGxhY2VtZW50U3RhY2sucHVzaChjYW5vbmljYWxpemVkT2JqKTtcbiAgICBsZXQgc29ydGVkS2V5cyA9IFtdLFxuICAgICAgICBrZXk7XG4gICAgZm9yIChrZXkgaW4gb2JqKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIHNvcnRlZEtleXMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICBzb3J0ZWRLZXlzLnNvcnQoKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgc29ydGVkS2V5cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAga2V5ID0gc29ydGVkS2V5c1tpXTtcbiAgICAgIGNhbm9uaWNhbGl6ZWRPYmpba2V5XSA9IGNhbm9uaWNhbGl6ZShvYmpba2V5XSwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpO1xuICAgIH1cbiAgICBzdGFjay5wb3AoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIGNhbm9uaWNhbGl6ZWRPYmogPSBvYmo7XG4gIH1cbiAgcmV0dXJuIGNhbm9uaWNhbGl6ZWRPYmo7XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffLines = diffLines;\nexports.diffTrimmedLines = diffTrimmedLines;\nexports.lineDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_params = require(\"../util/params\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar lineDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.lineDiff = lineDiff;\n\n/*istanbul ignore end*/\nlineDiff.tokenize = function (value) {\n if (this.options.stripTrailingCr) {\n // remove one \\r before \\n to match GNU diff's --strip-trailing-cr behavior\n value = value.replace(/\\r\\n/g, '\\n');\n }\n\n var retLines = [],\n linesAndNewlines = value.split(/(\\n|\\r\\n)/); // Ignore the final empty token that occurs if the string ends with a new line\n\n if (!linesAndNewlines[linesAndNewlines.length - 1]) {\n linesAndNewlines.pop();\n } // Merge the content and line separators into single tokens\n\n\n for (var i = 0; i < linesAndNewlines.length; i++) {\n var line = linesAndNewlines[i];\n\n if (i % 2 && !this.options.newlineIsToken) {\n retLines[retLines.length - 1] += line;\n } else {\n if (this.options.ignoreWhitespace) {\n line = line.trim();\n }\n\n retLines.push(line);\n }\n }\n\n return retLines;\n};\n\nfunction diffLines(oldStr, newStr, callback) {\n return lineDiff.diff(oldStr, newStr, callback);\n}\n\nfunction diffTrimmedLines(oldStr, newStr, callback) {\n var options =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _params\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n generateOptions)\n /*istanbul ignore end*/\n (callback, {\n ignoreWhitespace: true\n });\n return lineDiff.diff(oldStr, newStr, options);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2xpbmUuanMiXSwibmFtZXMiOlsibGluZURpZmYiLCJEaWZmIiwidG9rZW5pemUiLCJ2YWx1ZSIsIm9wdGlvbnMiLCJzdHJpcFRyYWlsaW5nQ3IiLCJyZXBsYWNlIiwicmV0TGluZXMiLCJsaW5lc0FuZE5ld2xpbmVzIiwic3BsaXQiLCJsZW5ndGgiLCJwb3AiLCJpIiwibGluZSIsIm5ld2xpbmVJc1Rva2VuIiwiaWdub3JlV2hpdGVzcGFjZSIsInRyaW0iLCJwdXNoIiwiZGlmZkxpbmVzIiwib2xkU3RyIiwibmV3U3RyIiwiY2FsbGJhY2siLCJkaWZmIiwiZGlmZlRyaW1tZWRMaW5lcyIsImdlbmVyYXRlT3B0aW9ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7O0FBRU8sSUFBTUEsUUFBUSxHQUFHO0FBQUlDO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBLENBQUosRUFBakI7Ozs7OztBQUNQRCxRQUFRLENBQUNFLFFBQVQsR0FBb0IsVUFBU0MsS0FBVCxFQUFnQjtBQUNsQyxNQUFHLEtBQUtDLE9BQUwsQ0FBYUMsZUFBaEIsRUFBaUM7QUFDL0I7QUFDQUYsSUFBQUEsS0FBSyxHQUFHQSxLQUFLLENBQUNHLE9BQU4sQ0FBYyxPQUFkLEVBQXVCLElBQXZCLENBQVI7QUFDRDs7QUFFRCxNQUFJQyxRQUFRLEdBQUcsRUFBZjtBQUFBLE1BQ0lDLGdCQUFnQixHQUFHTCxLQUFLLENBQUNNLEtBQU4sQ0FBWSxXQUFaLENBRHZCLENBTmtDLENBU2xDOztBQUNBLE1BQUksQ0FBQ0QsZ0JBQWdCLENBQUNBLGdCQUFnQixDQUFDRSxNQUFqQixHQUEwQixDQUEzQixDQUFyQixFQUFvRDtBQUNsREYsSUFBQUEsZ0JBQWdCLENBQUNHLEdBQWpCO0FBQ0QsR0FaaUMsQ0FjbEM7OztBQUNBLE9BQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0osZ0JBQWdCLENBQUNFLE1BQXJDLEVBQTZDRSxDQUFDLEVBQTlDLEVBQWtEO0FBQ2hELFFBQUlDLElBQUksR0FBR0wsZ0JBQWdCLENBQUNJLENBQUQsQ0FBM0I7O0FBRUEsUUFBSUEsQ0FBQyxHQUFHLENBQUosSUFBUyxDQUFDLEtBQUtSLE9BQUwsQ0FBYVUsY0FBM0IsRUFBMkM7QUFDekNQLE1BQUFBLFFBQVEsQ0FBQ0EsUUFBUSxDQUFDRyxNQUFULEdBQWtCLENBQW5CLENBQVIsSUFBaUNHLElBQWpDO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsVUFBSSxLQUFLVCxPQUFMLENBQWFXLGdCQUFqQixFQUFtQztBQUNqQ0YsUUFBQUEsSUFBSSxHQUFHQSxJQUFJLENBQUNHLElBQUwsRUFBUDtBQUNEOztBQUNEVCxNQUFBQSxRQUFRLENBQUNVLElBQVQsQ0FBY0osSUFBZDtBQUNEO0FBQ0Y7O0FBRUQsU0FBT04sUUFBUDtBQUNELENBN0JEOztBQStCTyxTQUFTVyxTQUFULENBQW1CQyxNQUFuQixFQUEyQkMsTUFBM0IsRUFBbUNDLFFBQW5DLEVBQTZDO0FBQUUsU0FBT3JCLFFBQVEsQ0FBQ3NCLElBQVQsQ0FBY0gsTUFBZCxFQUFzQkMsTUFBdEIsRUFBOEJDLFFBQTlCLENBQVA7QUFBaUQ7O0FBQ2hHLFNBQVNFLGdCQUFULENBQTBCSixNQUExQixFQUFrQ0MsTUFBbEMsRUFBMENDLFFBQTFDLEVBQW9EO0FBQ3pELE1BQUlqQixPQUFPO0FBQUc7QUFBQTtBQUFBOztBQUFBb0I7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQTtBQUFBLEdBQWdCSCxRQUFoQixFQUEwQjtBQUFDTixJQUFBQSxnQkFBZ0IsRUFBRTtBQUFuQixHQUExQixDQUFkO0FBQ0EsU0FBT2YsUUFBUSxDQUFDc0IsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QmhCLE9BQTlCLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQge2dlbmVyYXRlT3B0aW9uc30gZnJvbSAnLi4vdXRpbC9wYXJhbXMnO1xuXG5leHBvcnQgY29uc3QgbGluZURpZmYgPSBuZXcgRGlmZigpO1xubGluZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICBpZih0aGlzLm9wdGlvbnMuc3RyaXBUcmFpbGluZ0NyKSB7XG4gICAgLy8gcmVtb3ZlIG9uZSBcXHIgYmVmb3JlIFxcbiB0byBtYXRjaCBHTlUgZGlmZidzIC0tc3RyaXAtdHJhaWxpbmctY3IgYmVoYXZpb3JcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1xcclxcbi9nLCAnXFxuJyk7XG4gIH1cblxuICBsZXQgcmV0TGluZXMgPSBbXSxcbiAgICAgIGxpbmVzQW5kTmV3bGluZXMgPSB2YWx1ZS5zcGxpdCgvKFxcbnxcXHJcXG4pLyk7XG5cbiAgLy8gSWdub3JlIHRoZSBmaW5hbCBlbXB0eSB0b2tlbiB0aGF0IG9jY3VycyBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCBhIG5ldyBsaW5lXG4gIGlmICghbGluZXNBbmROZXdsaW5lc1tsaW5lc0FuZE5ld2xpbmVzLmxlbmd0aCAtIDFdKSB7XG4gICAgbGluZXNBbmROZXdsaW5lcy5wb3AoKTtcbiAgfVxuXG4gIC8vIE1lcmdlIHRoZSBjb250ZW50IGFuZCBsaW5lIHNlcGFyYXRvcnMgaW50byBzaW5nbGUgdG9rZW5zXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXNBbmROZXdsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBsaW5lID0gbGluZXNBbmROZXdsaW5lc1tpXTtcblxuICAgIGlmIChpICUgMiAmJiAhdGhpcy5vcHRpb25zLm5ld2xpbmVJc1Rva2VuKSB7XG4gICAgICByZXRMaW5lc1tyZXRMaW5lcy5sZW5ndGggLSAxXSArPSBsaW5lO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmlnbm9yZVdoaXRlc3BhY2UpIHtcbiAgICAgICAgbGluZSA9IGxpbmUudHJpbSgpO1xuICAgICAgfVxuICAgICAgcmV0TGluZXMucHVzaChsaW5lKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0TGluZXM7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZkxpbmVzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykgeyByZXR1cm4gbGluZURpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spOyB9XG5leHBvcnQgZnVuY3Rpb24gZGlmZlRyaW1tZWRMaW5lcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHtcbiAgbGV0IG9wdGlvbnMgPSBnZW5lcmF0ZU9wdGlvbnMoY2FsbGJhY2ssIHtpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gIHJldHVybiBsaW5lRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffSentences = diffSentences;\nexports.sentenceDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar sentenceDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.sentenceDiff = sentenceDiff;\n\n/*istanbul ignore end*/\nsentenceDiff.tokenize = function (value) {\n return value.split(/(\\S.+?[.!?])(?=\\s+|$)/);\n};\n\nfunction diffSentences(oldStr, newStr, callback) {\n return sentenceDiff.diff(oldStr, newStr, callback);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3NlbnRlbmNlLmpzIl0sIm5hbWVzIjpbInNlbnRlbmNlRGlmZiIsIkRpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic3BsaXQiLCJkaWZmU2VudGVuY2VzIiwib2xkU3RyIiwibmV3U3RyIiwiY2FsbGJhY2siLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFHTyxJQUFNQSxZQUFZLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUFyQjs7Ozs7O0FBQ1BELFlBQVksQ0FBQ0UsUUFBYixHQUF3QixVQUFTQyxLQUFULEVBQWdCO0FBQ3RDLFNBQU9BLEtBQUssQ0FBQ0MsS0FBTixDQUFZLHVCQUFaLENBQVA7QUFDRCxDQUZEOztBQUlPLFNBQVNDLGFBQVQsQ0FBdUJDLE1BQXZCLEVBQStCQyxNQUEvQixFQUF1Q0MsUUFBdkMsRUFBaUQ7QUFBRSxTQUFPUixZQUFZLENBQUNTLElBQWIsQ0FBa0JILE1BQWxCLEVBQTBCQyxNQUExQixFQUFrQ0MsUUFBbEMsQ0FBUDtBQUFxRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cblxuZXhwb3J0IGNvbnN0IHNlbnRlbmNlRGlmZiA9IG5ldyBEaWZmKCk7XG5zZW50ZW5jZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc3BsaXQoLyhcXFMuKz9bLiE/XSkoPz1cXHMrfCQpLyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlNlbnRlbmNlcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHsgcmV0dXJuIHNlbnRlbmNlRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffWords = diffWords;\nexports.diffWordsWithSpace = diffWordsWithSpace;\nexports.wordDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_params = require(\"../util/params\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\n// Based on https://en.wikipedia.org/wiki/Latin_script_in_Unicode\n//\n// Ranges and exceptions:\n// Latin-1 Supplement, 0080–00FF\n// - U+00D7 × Multiplication sign\n// - U+00F7 ÷ Division sign\n// Latin Extended-A, 0100–017F\n// Latin Extended-B, 0180–024F\n// IPA Extensions, 0250–02AF\n// Spacing Modifier Letters, 02B0–02FF\n// - U+02C7 ˇ ˇ Caron\n// - U+02D8 ˘ ˘ Breve\n// - U+02D9 ˙ ˙ Dot Above\n// - U+02DA ˚ ˚ Ring Above\n// - U+02DB ˛ ˛ Ogonek\n// - U+02DC ˜ ˜ Small Tilde\n// - U+02DD ˝ ˝ Double Acute Accent\n// Latin Extended Additional, 1E00–1EFF\nvar extendedWordChars = /^[A-Za-z\\xC0-\\u02C6\\u02C8-\\u02D7\\u02DE-\\u02FF\\u1E00-\\u1EFF]+$/;\nvar reWhitespace = /\\S/;\nvar wordDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.wordDiff = wordDiff;\n\n/*istanbul ignore end*/\nwordDiff.equals = function (left, right) {\n if (this.options.ignoreCase) {\n left = left.toLowerCase();\n right = right.toLowerCase();\n }\n\n return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);\n};\n\nwordDiff.tokenize = function (value) {\n // All whitespace symbols except newline group into one token, each newline - in separate token\n var tokens = value.split(/([^\\S\\r\\n]+|[()[\\]{}'\"\\r\\n]|\\b)/); // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.\n\n for (var i = 0; i < tokens.length - 1; i++) {\n // If we have an empty string in the next field and we have only word chars before and after, merge\n if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {\n tokens[i] += tokens[i + 2];\n tokens.splice(i + 1, 2);\n i--;\n }\n }\n\n return tokens;\n};\n\nfunction diffWords(oldStr, newStr, options) {\n options =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _params\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n generateOptions)\n /*istanbul ignore end*/\n (options, {\n ignoreWhitespace: true\n });\n return wordDiff.diff(oldStr, newStr, options);\n}\n\nfunction diffWordsWithSpace(oldStr, newStr, options) {\n return wordDiff.diff(oldStr, newStr, options);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3dvcmQuanMiXSwibmFtZXMiOlsiZXh0ZW5kZWRXb3JkQ2hhcnMiLCJyZVdoaXRlc3BhY2UiLCJ3b3JkRGlmZiIsIkRpZmYiLCJlcXVhbHMiLCJsZWZ0IiwicmlnaHQiLCJvcHRpb25zIiwiaWdub3JlQ2FzZSIsInRvTG93ZXJDYXNlIiwiaWdub3JlV2hpdGVzcGFjZSIsInRlc3QiLCJ0b2tlbml6ZSIsInZhbHVlIiwidG9rZW5zIiwic3BsaXQiLCJpIiwibGVuZ3RoIiwic3BsaWNlIiwiZGlmZldvcmRzIiwib2xkU3RyIiwibmV3U3RyIiwiZ2VuZXJhdGVPcHRpb25zIiwiZGlmZiIsImRpZmZXb3Jkc1dpdGhTcGFjZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUEsaUJBQWlCLEdBQUcsK0RBQTFCO0FBRUEsSUFBTUMsWUFBWSxHQUFHLElBQXJCO0FBRU8sSUFBTUMsUUFBUSxHQUFHO0FBQUlDO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBLENBQUosRUFBakI7Ozs7OztBQUNQRCxRQUFRLENBQUNFLE1BQVQsR0FBa0IsVUFBU0MsSUFBVCxFQUFlQyxLQUFmLEVBQXNCO0FBQ3RDLE1BQUksS0FBS0MsT0FBTCxDQUFhQyxVQUFqQixFQUE2QjtBQUMzQkgsSUFBQUEsSUFBSSxHQUFHQSxJQUFJLENBQUNJLFdBQUwsRUFBUDtBQUNBSCxJQUFBQSxLQUFLLEdBQUdBLEtBQUssQ0FBQ0csV0FBTixFQUFSO0FBQ0Q7O0FBQ0QsU0FBT0osSUFBSSxLQUFLQyxLQUFULElBQW1CLEtBQUtDLE9BQUwsQ0FBYUcsZ0JBQWIsSUFBaUMsQ0FBQ1QsWUFBWSxDQUFDVSxJQUFiLENBQWtCTixJQUFsQixDQUFsQyxJQUE2RCxDQUFDSixZQUFZLENBQUNVLElBQWIsQ0FBa0JMLEtBQWxCLENBQXhGO0FBQ0QsQ0FORDs7QUFPQUosUUFBUSxDQUFDVSxRQUFULEdBQW9CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDbEM7QUFDQSxNQUFJQyxNQUFNLEdBQUdELEtBQUssQ0FBQ0UsS0FBTixDQUFZLGlDQUFaLENBQWIsQ0FGa0MsQ0FJbEM7O0FBQ0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRixNQUFNLENBQUNHLE1BQVAsR0FBZ0IsQ0FBcEMsRUFBdUNELENBQUMsRUFBeEMsRUFBNEM7QUFDMUM7QUFDQSxRQUFJLENBQUNGLE1BQU0sQ0FBQ0UsQ0FBQyxHQUFHLENBQUwsQ0FBUCxJQUFrQkYsTUFBTSxDQUFDRSxDQUFDLEdBQUcsQ0FBTCxDQUF4QixJQUNLaEIsaUJBQWlCLENBQUNXLElBQWxCLENBQXVCRyxNQUFNLENBQUNFLENBQUQsQ0FBN0IsQ0FETCxJQUVLaEIsaUJBQWlCLENBQUNXLElBQWxCLENBQXVCRyxNQUFNLENBQUNFLENBQUMsR0FBRyxDQUFMLENBQTdCLENBRlQsRUFFZ0Q7QUFDOUNGLE1BQUFBLE1BQU0sQ0FBQ0UsQ0FBRCxDQUFOLElBQWFGLE1BQU0sQ0FBQ0UsQ0FBQyxHQUFHLENBQUwsQ0FBbkI7QUFDQUYsTUFBQUEsTUFBTSxDQUFDSSxNQUFQLENBQWNGLENBQUMsR0FBRyxDQUFsQixFQUFxQixDQUFyQjtBQUNBQSxNQUFBQSxDQUFDO0FBQ0Y7QUFDRjs7QUFFRCxTQUFPRixNQUFQO0FBQ0QsQ0FqQkQ7O0FBbUJPLFNBQVNLLFNBQVQsQ0FBbUJDLE1BQW5CLEVBQTJCQyxNQUEzQixFQUFtQ2QsT0FBbkMsRUFBNEM7QUFDakRBLEVBQUFBLE9BQU87QUFBRztBQUFBO0FBQUE7O0FBQUFlO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxHQUFnQmYsT0FBaEIsRUFBeUI7QUFBQ0csSUFBQUEsZ0JBQWdCLEVBQUU7QUFBbkIsR0FBekIsQ0FBVjtBQUNBLFNBQU9SLFFBQVEsQ0FBQ3FCLElBQVQsQ0FBY0gsTUFBZCxFQUFzQkMsTUFBdEIsRUFBOEJkLE9BQTlCLENBQVA7QUFDRDs7QUFFTSxTQUFTaUIsa0JBQVQsQ0FBNEJKLE1BQTVCLEVBQW9DQyxNQUFwQyxFQUE0Q2QsT0FBNUMsRUFBcUQ7QUFDMUQsU0FBT0wsUUFBUSxDQUFDcUIsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QmQsT0FBOUIsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7Z2VuZXJhdGVPcHRpb25zfSBmcm9tICcuLi91dGlsL3BhcmFtcyc7XG5cbi8vIEJhc2VkIG9uIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhdGluX3NjcmlwdF9pbl9Vbmljb2RlXG4vL1xuLy8gUmFuZ2VzIGFuZCBleGNlcHRpb25zOlxuLy8gTGF0aW4tMSBTdXBwbGVtZW50LCAwMDgw4oCTMDBGRlxuLy8gIC0gVSswMEQ3ICDDlyBNdWx0aXBsaWNhdGlvbiBzaWduXG4vLyAgLSBVKzAwRjcgIMO3IERpdmlzaW9uIHNpZ25cbi8vIExhdGluIEV4dGVuZGVkLUEsIDAxMDDigJMwMTdGXG4vLyBMYXRpbiBFeHRlbmRlZC1CLCAwMTgw4oCTMDI0RlxuLy8gSVBBIEV4dGVuc2lvbnMsIDAyNTDigJMwMkFGXG4vLyBTcGFjaW5nIE1vZGlmaWVyIExldHRlcnMsIDAyQjDigJMwMkZGXG4vLyAgLSBVKzAyQzcgIMuHICYjNzExOyAgQ2Fyb25cbi8vICAtIFUrMDJEOCAgy5ggJiM3Mjg7ICBCcmV2ZVxuLy8gIC0gVSswMkQ5ICDLmSAmIzcyOTsgIERvdCBBYm92ZVxuLy8gIC0gVSswMkRBICDLmiAmIzczMDsgIFJpbmcgQWJvdmVcbi8vICAtIFUrMDJEQiAgy5sgJiM3MzE7ICBPZ29uZWtcbi8vICAtIFUrMDJEQyAgy5wgJiM3MzI7ICBTbWFsbCBUaWxkZVxuLy8gIC0gVSswMkREICDLnSAmIzczMzsgIERvdWJsZSBBY3V0ZSBBY2NlbnRcbi8vIExhdGluIEV4dGVuZGVkIEFkZGl0aW9uYWwsIDFFMDDigJMxRUZGXG5jb25zdCBleHRlbmRlZFdvcmRDaGFycyA9IC9eW2EtekEtWlxcdXtDMH0tXFx1e0ZGfVxcdXtEOH0tXFx1e0Y2fVxcdXtGOH0tXFx1ezJDNn1cXHV7MkM4fS1cXHV7MkQ3fVxcdXsyREV9LVxcdXsyRkZ9XFx1ezFFMDB9LVxcdXsxRUZGfV0rJC91O1xuXG5jb25zdCByZVdoaXRlc3BhY2UgPSAvXFxTLztcblxuZXhwb3J0IGNvbnN0IHdvcmREaWZmID0gbmV3IERpZmYoKTtcbndvcmREaWZmLmVxdWFscyA9IGZ1bmN0aW9uKGxlZnQsIHJpZ2h0KSB7XG4gIGlmICh0aGlzLm9wdGlvbnMuaWdub3JlQ2FzZSkge1xuICAgIGxlZnQgPSBsZWZ0LnRvTG93ZXJDYXNlKCk7XG4gICAgcmlnaHQgPSByaWdodC50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIHJldHVybiBsZWZ0ID09PSByaWdodCB8fCAodGhpcy5vcHRpb25zLmlnbm9yZVdoaXRlc3BhY2UgJiYgIXJlV2hpdGVzcGFjZS50ZXN0KGxlZnQpICYmICFyZVdoaXRlc3BhY2UudGVzdChyaWdodCkpO1xufTtcbndvcmREaWZmLnRva2VuaXplID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgLy8gQWxsIHdoaXRlc3BhY2Ugc3ltYm9scyBleGNlcHQgbmV3bGluZSBncm91cCBpbnRvIG9uZSB0b2tlbiwgZWFjaCBuZXdsaW5lIC0gaW4gc2VwYXJhdGUgdG9rZW5cbiAgbGV0IHRva2VucyA9IHZhbHVlLnNwbGl0KC8oW15cXFNcXHJcXG5dK3xbKClbXFxde30nXCJcXHJcXG5dfFxcYikvKTtcblxuICAvLyBKb2luIHRoZSBib3VuZGFyeSBzcGxpdHMgdGhhdCB3ZSBkbyBub3QgY29uc2lkZXIgdG8gYmUgYm91bmRhcmllcy4gVGhpcyBpcyBwcmltYXJpbHkgdGhlIGV4dGVuZGVkIExhdGluIGNoYXJhY3RlciBzZXQuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIC8vIElmIHdlIGhhdmUgYW4gZW1wdHkgc3RyaW5nIGluIHRoZSBuZXh0IGZpZWxkIGFuZCB3ZSBoYXZlIG9ubHkgd29yZCBjaGFycyBiZWZvcmUgYW5kIGFmdGVyLCBtZXJnZVxuICAgIGlmICghdG9rZW5zW2kgKyAxXSAmJiB0b2tlbnNbaSArIDJdXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaV0pXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaSArIDJdKSkge1xuICAgICAgdG9rZW5zW2ldICs9IHRva2Vuc1tpICsgMl07XG4gICAgICB0b2tlbnMuc3BsaWNlKGkgKyAxLCAyKTtcbiAgICAgIGktLTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3JkcyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICBvcHRpb25zID0gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIHtpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gIHJldHVybiB3b3JkRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3Jkc1dpdGhTcGFjZShvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICByZXR1cm4gd29yZERpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucyk7XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Diff\", {\n enumerable: true,\n get: function get() {\n return _base[\"default\"];\n }\n});\nObject.defineProperty(exports, \"diffChars\", {\n enumerable: true,\n get: function get() {\n return _character.diffChars;\n }\n});\nObject.defineProperty(exports, \"diffWords\", {\n enumerable: true,\n get: function get() {\n return _word.diffWords;\n }\n});\nObject.defineProperty(exports, \"diffWordsWithSpace\", {\n enumerable: true,\n get: function get() {\n return _word.diffWordsWithSpace;\n }\n});\nObject.defineProperty(exports, \"diffLines\", {\n enumerable: true,\n get: function get() {\n return _line.diffLines;\n }\n});\nObject.defineProperty(exports, \"diffTrimmedLines\", {\n enumerable: true,\n get: function get() {\n return _line.diffTrimmedLines;\n }\n});\nObject.defineProperty(exports, \"diffSentences\", {\n enumerable: true,\n get: function get() {\n return _sentence.diffSentences;\n }\n});\nObject.defineProperty(exports, \"diffCss\", {\n enumerable: true,\n get: function get() {\n return _css.diffCss;\n }\n});\nObject.defineProperty(exports, \"diffJson\", {\n enumerable: true,\n get: function get() {\n return _json.diffJson;\n }\n});\nObject.defineProperty(exports, \"canonicalize\", {\n enumerable: true,\n get: function get() {\n return _json.canonicalize;\n }\n});\nObject.defineProperty(exports, \"diffArrays\", {\n enumerable: true,\n get: function get() {\n return _array.diffArrays;\n }\n});\nObject.defineProperty(exports, \"applyPatch\", {\n enumerable: true,\n get: function get() {\n return _apply.applyPatch;\n }\n});\nObject.defineProperty(exports, \"applyPatches\", {\n enumerable: true,\n get: function get() {\n return _apply.applyPatches;\n }\n});\nObject.defineProperty(exports, \"parsePatch\", {\n enumerable: true,\n get: function get() {\n return _parse.parsePatch;\n }\n});\nObject.defineProperty(exports, \"merge\", {\n enumerable: true,\n get: function get() {\n return _merge.merge;\n }\n});\nObject.defineProperty(exports, \"reversePatch\", {\n enumerable: true,\n get: function get() {\n return _reverse.reversePatch;\n }\n});\nObject.defineProperty(exports, \"structuredPatch\", {\n enumerable: true,\n get: function get() {\n return _create.structuredPatch;\n }\n});\nObject.defineProperty(exports, \"createTwoFilesPatch\", {\n enumerable: true,\n get: function get() {\n return _create.createTwoFilesPatch;\n }\n});\nObject.defineProperty(exports, \"createPatch\", {\n enumerable: true,\n get: function get() {\n return _create.createPatch;\n }\n});\nObject.defineProperty(exports, \"formatPatch\", {\n enumerable: true,\n get: function get() {\n return _create.formatPatch;\n }\n});\nObject.defineProperty(exports, \"convertChangesToDMP\", {\n enumerable: true,\n get: function get() {\n return _dmp.convertChangesToDMP;\n }\n});\nObject.defineProperty(exports, \"convertChangesToXML\", {\n enumerable: true,\n get: function get() {\n return _xml.convertChangesToXML;\n }\n});\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./diff/base\"))\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_character = require(\"./diff/character\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_word = require(\"./diff/word\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_line = require(\"./diff/line\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_sentence = require(\"./diff/sentence\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_css = require(\"./diff/css\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_json = require(\"./diff/json\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_array = require(\"./diff/array\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_apply = require(\"./patch/apply\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_parse = require(\"./patch/parse\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_merge = require(\"./patch/merge\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_reverse = require(\"./patch/reverse\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_create = require(\"./patch/create\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_dmp = require(\"./convert/dmp\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_xml = require(\"./convert/xml\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIFNlZSBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zIG9mIHVzZSAqL1xuXG4vKlxuICogVGV4dCBkaWZmIGltcGxlbWVudGF0aW9uLlxuICpcbiAqIFRoaXMgbGlicmFyeSBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4gKiBEaWZmLmRpZmZDaGFyczogQ2hhcmFjdGVyIGJ5IGNoYXJhY3RlciBkaWZmXG4gKiBEaWZmLmRpZmZXb3JkczogV29yZCAoYXMgZGVmaW5lZCBieSBcXGIgcmVnZXgpIGRpZmYgd2hpY2ggaWdub3JlcyB3aGl0ZXNwYWNlXG4gKiBEaWZmLmRpZmZMaW5lczogTGluZSBiYXNlZCBkaWZmXG4gKlxuICogRGlmZi5kaWZmQ3NzOiBEaWZmIHRhcmdldGVkIGF0IENTUyBjb250ZW50XG4gKlxuICogVGhlc2UgbWV0aG9kcyBhcmUgYmFzZWQgb24gdGhlIGltcGxlbWVudGF0aW9uIHByb3Bvc2VkIGluXG4gKiBcIkFuIE8oTkQpIERpZmZlcmVuY2UgQWxnb3JpdGhtIGFuZCBpdHMgVmFyaWF0aW9uc1wiIChNeWVycywgMTk4NikuXG4gKiBodHRwOi8vY2l0ZXNlZXJ4LmlzdC5wc3UuZWR1L3ZpZXdkb2Mvc3VtbWFyeT9kb2k9MTAuMS4xLjQuNjkyN1xuICovXG5pbXBvcnQgRGlmZiBmcm9tICcuL2RpZmYvYmFzZSc7XG5pbXBvcnQge2RpZmZDaGFyc30gZnJvbSAnLi9kaWZmL2NoYXJhY3Rlcic7XG5pbXBvcnQge2RpZmZXb3JkcywgZGlmZldvcmRzV2l0aFNwYWNlfSBmcm9tICcuL2RpZmYvd29yZCc7XG5pbXBvcnQge2RpZmZMaW5lcywgZGlmZlRyaW1tZWRMaW5lc30gZnJvbSAnLi9kaWZmL2xpbmUnO1xuaW1wb3J0IHtkaWZmU2VudGVuY2VzfSBmcm9tICcuL2RpZmYvc2VudGVuY2UnO1xuXG5pbXBvcnQge2RpZmZDc3N9IGZyb20gJy4vZGlmZi9jc3MnO1xuaW1wb3J0IHtkaWZmSnNvbiwgY2Fub25pY2FsaXplfSBmcm9tICcuL2RpZmYvanNvbic7XG5cbmltcG9ydCB7ZGlmZkFycmF5c30gZnJvbSAnLi9kaWZmL2FycmF5JztcblxuaW1wb3J0IHthcHBseVBhdGNoLCBhcHBseVBhdGNoZXN9IGZyb20gJy4vcGF0Y2gvYXBwbHknO1xuaW1wb3J0IHtwYXJzZVBhdGNofSBmcm9tICcuL3BhdGNoL3BhcnNlJztcbmltcG9ydCB7bWVyZ2V9IGZyb20gJy4vcGF0Y2gvbWVyZ2UnO1xuaW1wb3J0IHtyZXZlcnNlUGF0Y2h9IGZyb20gJy4vcGF0Y2gvcmV2ZXJzZSc7XG5pbXBvcnQge3N0cnVjdHVyZWRQYXRjaCwgY3JlYXRlVHdvRmlsZXNQYXRjaCwgY3JlYXRlUGF0Y2gsIGZvcm1hdFBhdGNofSBmcm9tICcuL3BhdGNoL2NyZWF0ZSc7XG5cbmltcG9ydCB7Y29udmVydENoYW5nZXNUb0RNUH0gZnJvbSAnLi9jb252ZXJ0L2RtcCc7XG5pbXBvcnQge2NvbnZlcnRDaGFuZ2VzVG9YTUx9IGZyb20gJy4vY29udmVydC94bWwnO1xuXG5leHBvcnQge1xuICBEaWZmLFxuXG4gIGRpZmZDaGFycyxcbiAgZGlmZldvcmRzLFxuICBkaWZmV29yZHNXaXRoU3BhY2UsXG4gIGRpZmZMaW5lcyxcbiAgZGlmZlRyaW1tZWRMaW5lcyxcbiAgZGlmZlNlbnRlbmNlcyxcblxuICBkaWZmQ3NzLFxuICBkaWZmSnNvbixcblxuICBkaWZmQXJyYXlzLFxuXG4gIHN0cnVjdHVyZWRQYXRjaCxcbiAgY3JlYXRlVHdvRmlsZXNQYXRjaCxcbiAgY3JlYXRlUGF0Y2gsXG4gIGZvcm1hdFBhdGNoLFxuICBhcHBseVBhdGNoLFxuICBhcHBseVBhdGNoZXMsXG4gIHBhcnNlUGF0Y2gsXG4gIG1lcmdlLFxuICByZXZlcnNlUGF0Y2gsXG4gIGNvbnZlcnRDaGFuZ2VzVG9ETVAsXG4gIGNvbnZlcnRDaGFuZ2VzVG9YTUwsXG4gIGNhbm9uaWNhbGl6ZVxufTtcbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.applyPatch = applyPatch;\nexports.applyPatches = applyPatches;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_parse = require(\"./parse\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_distanceIterator = _interopRequireDefault(require(\"../util/distance-iterator\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nfunction applyPatch(source, uniDiff) {\n /*istanbul ignore start*/\n var\n /*istanbul ignore end*/\n options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof uniDiff === 'string') {\n uniDiff =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _parse\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n parsePatch)\n /*istanbul ignore end*/\n (uniDiff);\n }\n\n if (Array.isArray(uniDiff)) {\n if (uniDiff.length > 1) {\n throw new Error('applyPatch only works with a single input.');\n }\n\n uniDiff = uniDiff[0];\n } // Apply the diff to the input\n\n\n var lines = source.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/),\n delimiters = source.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [],\n hunks = uniDiff.hunks,\n compareLine = options.compareLine || function (lineNumber, line, operation, patchContent)\n /*istanbul ignore start*/\n {\n return (\n /*istanbul ignore end*/\n line === patchContent\n );\n },\n errorCount = 0,\n fuzzFactor = options.fuzzFactor || 0,\n minLine = 0,\n offset = 0,\n removeEOFNL,\n addEOFNL;\n /**\n * Checks if the hunk exactly fits on the provided location\n */\n\n\n function hunkFits(hunk, toPos) {\n for (var j = 0; j < hunk.lines.length; j++) {\n var line = hunk.lines[j],\n operation = line.length > 0 ? line[0] : ' ',\n content = line.length > 0 ? line.substr(1) : line;\n\n if (operation === ' ' || operation === '-') {\n // Context sanity check\n if (!compareLine(toPos + 1, lines[toPos], operation, content)) {\n errorCount++;\n\n if (errorCount > fuzzFactor) {\n return false;\n }\n }\n\n toPos++;\n }\n }\n\n return true;\n } // Search best fit offsets for each hunk based on the previous ones\n\n\n for (var i = 0; i < hunks.length; i++) {\n var hunk = hunks[i],\n maxLine = lines.length - hunk.oldLines,\n localOffset = 0,\n toPos = offset + hunk.oldStart - 1;\n var iterator =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _distanceIterator\n /*istanbul ignore end*/\n [\n /*istanbul ignore start*/\n \"default\"\n /*istanbul ignore end*/\n ])(toPos, minLine, maxLine);\n\n for (; localOffset !== undefined; localOffset = iterator()) {\n if (hunkFits(hunk, toPos + localOffset)) {\n hunk.offset = offset += localOffset;\n break;\n }\n }\n\n if (localOffset === undefined) {\n return false;\n } // Set lower text limit to end of the current hunk, so next ones don't try\n // to fit over already patched text\n\n\n minLine = hunk.offset + hunk.oldStart + hunk.oldLines;\n } // Apply patch hunks\n\n\n var diffOffset = 0;\n\n for (var _i = 0; _i < hunks.length; _i++) {\n var _hunk = hunks[_i],\n _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1;\n\n diffOffset += _hunk.newLines - _hunk.oldLines;\n\n for (var j = 0; j < _hunk.lines.length; j++) {\n var line = _hunk.lines[j],\n operation = line.length > 0 ? line[0] : ' ',\n content = line.length > 0 ? line.substr(1) : line,\n delimiter = _hunk.linedelimiters && _hunk.linedelimiters[j] || '\\n';\n\n if (operation === ' ') {\n _toPos++;\n } else if (operation === '-') {\n lines.splice(_toPos, 1);\n delimiters.splice(_toPos, 1);\n /* istanbul ignore else */\n } else if (operation === '+') {\n lines.splice(_toPos, 0, content);\n delimiters.splice(_toPos, 0, delimiter);\n _toPos++;\n } else if (operation === '\\\\') {\n var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;\n\n if (previousOperation === '+') {\n removeEOFNL = true;\n } else if (previousOperation === '-') {\n addEOFNL = true;\n }\n }\n }\n } // Handle EOFNL insertion/removal\n\n\n if (removeEOFNL) {\n while (!lines[lines.length - 1]) {\n lines.pop();\n delimiters.pop();\n }\n } else if (addEOFNL) {\n lines.push('');\n delimiters.push('\\n');\n }\n\n for (var _k = 0; _k < lines.length - 1; _k++) {\n lines[_k] = lines[_k] + delimiters[_k];\n }\n\n return lines.join('');\n} // Wrapper that supports multiple file patches via callbacks.\n\n\nfunction applyPatches(uniDiff, options) {\n if (typeof uniDiff === 'string') {\n uniDiff =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _parse\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n parsePatch)\n /*istanbul ignore end*/\n (uniDiff);\n }\n\n var currentIndex = 0;\n\n function processIndex() {\n var index = uniDiff[currentIndex++];\n\n if (!index) {\n return options.complete();\n }\n\n options.loadFile(index, function (err, data) {\n if (err) {\n return options.complete(err);\n }\n\n var updatedContent = applyPatch(data, index, options);\n options.patched(index, updatedContent, function (err) {\n if (err) {\n return options.complete(err);\n }\n\n processIndex();\n });\n });\n }\n\n processIndex();\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9hcHBseS5qcyJdLCJuYW1lcyI6WyJhcHBseVBhdGNoIiwic291cmNlIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJwYXJzZVBhdGNoIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiRXJyb3IiLCJsaW5lcyIsInNwbGl0IiwiZGVsaW1pdGVycyIsIm1hdGNoIiwiaHVua3MiLCJjb21wYXJlTGluZSIsImxpbmVOdW1iZXIiLCJsaW5lIiwib3BlcmF0aW9uIiwicGF0Y2hDb250ZW50IiwiZXJyb3JDb3VudCIsImZ1enpGYWN0b3IiLCJtaW5MaW5lIiwib2Zmc2V0IiwicmVtb3ZlRU9GTkwiLCJhZGRFT0ZOTCIsImh1bmtGaXRzIiwiaHVuayIsInRvUG9zIiwiaiIsImNvbnRlbnQiLCJzdWJzdHIiLCJpIiwibWF4TGluZSIsIm9sZExpbmVzIiwibG9jYWxPZmZzZXQiLCJvbGRTdGFydCIsIml0ZXJhdG9yIiwiZGlzdGFuY2VJdGVyYXRvciIsInVuZGVmaW5lZCIsImRpZmZPZmZzZXQiLCJuZXdMaW5lcyIsImRlbGltaXRlciIsImxpbmVkZWxpbWl0ZXJzIiwic3BsaWNlIiwicHJldmlvdXNPcGVyYXRpb24iLCJwb3AiLCJwdXNoIiwiX2siLCJqb2luIiwiYXBwbHlQYXRjaGVzIiwiY3VycmVudEluZGV4IiwicHJvY2Vzc0luZGV4IiwiaW5kZXgiLCJjb21wbGV0ZSIsImxvYWRGaWxlIiwiZXJyIiwiZGF0YSIsInVwZGF0ZWRDb250ZW50IiwicGF0Y2hlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxTQUFTQSxVQUFULENBQW9CQyxNQUFwQixFQUE0QkMsT0FBNUIsRUFBbUQ7QUFBQTtBQUFBO0FBQUE7QUFBZEMsRUFBQUEsT0FBYyx1RUFBSixFQUFJOztBQUN4RCxNQUFJLE9BQU9ELE9BQVAsS0FBbUIsUUFBdkIsRUFBaUM7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QUFBO0FBQUFBO0FBQUE7QUFBQSxLQUFXRixPQUFYLENBQVY7QUFDRDs7QUFFRCxNQUFJZ0QsWUFBWSxHQUFHLENBQW5COztBQUNBLFdBQVNDLFlBQVQsR0FBd0I7QUFDdEIsUUFBSUMsS0FBSyxHQUFHbEQsT0FBTyxDQUFDZ0QsWUFBWSxFQUFiLENBQW5COztBQUNBLFFBQUksQ0FBQ0UsS0FBTCxFQUFZO0FBQ1YsYUFBT2pELE9BQU8sQ0FBQ2tELFFBQVIsRUFBUDtBQUNEOztBQUVEbEQsSUFBQUEsT0FBTyxDQUFDbUQsUUFBUixDQUFpQkYsS0FBakIsRUFBd0IsVUFBU0csR0FBVCxFQUFjQyxJQUFkLEVBQW9CO0FBQzFDLFVBQUlELEdBQUosRUFBUztBQUNQLGVBQU9wRCxPQUFPLENBQUNrRCxRQUFSLENBQWlCRSxHQUFqQixDQUFQO0FBQ0Q7O0FBRUQsVUFBSUUsY0FBYyxHQUFHekQsVUFBVSxDQUFDd0QsSUFBRCxFQUFPSixLQUFQLEVBQWNqRCxPQUFkLENBQS9CO0FBQ0FBLE1BQUFBLE9BQU8sQ0FBQ3VELE9BQVIsQ0FBZ0JOLEtBQWhCLEVBQXVCSyxjQUF2QixFQUF1QyxVQUFTRixHQUFULEVBQWM7QUFDbkQsWUFBSUEsR0FBSixFQUFTO0FBQ1AsaUJBQU9wRCxPQUFPLENBQUNrRCxRQUFSLENBQWlCRSxHQUFqQixDQUFQO0FBQ0Q7O0FBRURKLFFBQUFBLFlBQVk7QUFDYixPQU5EO0FBT0QsS0FiRDtBQWNEOztBQUNEQSxFQUFBQSxZQUFZO0FBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3BhcnNlUGF0Y2h9IGZyb20gJy4vcGFyc2UnO1xuaW1wb3J0IGRpc3RhbmNlSXRlcmF0b3IgZnJvbSAnLi4vdXRpbC9kaXN0YW5jZS1pdGVyYXRvcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVBhdGNoKHNvdXJjZSwgdW5pRGlmZiwgb3B0aW9ucyA9IHt9KSB7XG4gIGlmICh0eXBlb2YgdW5pRGlmZiA9PT0gJ3N0cmluZycpIHtcbiAgICB1bmlEaWZmID0gcGFyc2VQYXRjaCh1bmlEaWZmKTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHVuaURpZmYpKSB7XG4gICAgaWYgKHVuaURpZmYubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhcHBseVBhdGNoIG9ubHkgd29ya3Mgd2l0aCBhIHNpbmdsZSBpbnB1dC4nKTtcbiAgICB9XG5cbiAgICB1bmlEaWZmID0gdW5pRGlmZlswXTtcbiAgfVxuXG4gIC8vIEFwcGx5IHRoZSBkaWZmIHRvIHRoZSBpbnB1dFxuICBsZXQgbGluZXMgPSBzb3VyY2Uuc3BsaXQoL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdLyksXG4gICAgICBkZWxpbWl0ZXJzID0gc291cmNlLm1hdGNoKC9cXHJcXG58W1xcblxcdlxcZlxcclxceDg1XS9nKSB8fCBbXSxcbiAgICAgIGh1bmtzID0gdW5pRGlmZi5odW5rcyxcblxuICAgICAgY29tcGFyZUxpbmUgPSBvcHRpb25zLmNvbXBhcmVMaW5lIHx8ICgobGluZU51bWJlciwgbGluZSwgb3BlcmF0aW9uLCBwYXRjaENvbnRlbnQpID0+IGxpbmUgPT09IHBhdGNoQ29udGVudCksXG4gICAgICBlcnJvckNvdW50ID0gMCxcbiAgICAgIGZ1enpGYWN0b3IgPSBvcHRpb25zLmZ1enpGYWN0b3IgfHwgMCxcbiAgICAgIG1pbkxpbmUgPSAwLFxuICAgICAgb2Zmc2V0ID0gMCxcblxuICAgICAgcmVtb3ZlRU9GTkwsXG4gICAgICBhZGRFT0ZOTDtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBodW5rIGV4YWN0bHkgZml0cyBvbiB0aGUgcHJvdmlkZWQgbG9jYXRpb25cbiAgICovXG4gIGZ1bmN0aW9uIGh1bmtGaXRzKGh1bmssIHRvUG9zKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBodW5rLmxpbmVzLmxlbmd0aDsgaisrKSB7XG4gICAgICBsZXQgbGluZSA9IGh1bmsubGluZXNbal0sXG4gICAgICAgICAgb3BlcmF0aW9uID0gKGxpbmUubGVuZ3RoID4gMCA/IGxpbmVbMF0gOiAnICcpLFxuICAgICAgICAgIGNvbnRlbnQgPSAobGluZS5sZW5ndGggPiAwID8gbGluZS5zdWJzdHIoMSkgOiBsaW5lKTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJyAnIHx8IG9wZXJhdGlvbiA9PT0gJy0nKSB7XG4gICAgICAgIC8vIENvbnRleHQgc2FuaXR5IGNoZWNrXG4gICAgICAgIGlmICghY29tcGFyZUxpbmUodG9Qb3MgKyAxLCBsaW5lc1t0b1Bvc10sIG9wZXJhdGlvbiwgY29udGVudCkpIHtcbiAgICAgICAgICBlcnJvckNvdW50Kys7XG5cbiAgICAgICAgICBpZiAoZXJyb3JDb3VudCA+IGZ1enpGYWN0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdG9Qb3MrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIFNlYXJjaCBiZXN0IGZpdCBvZmZzZXRzIGZvciBlYWNoIGh1bmsgYmFzZWQgb24gdGhlIHByZXZpb3VzIG9uZXNcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBodW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBodW5rID0gaHVua3NbaV0sXG4gICAgICAgIG1heExpbmUgPSBsaW5lcy5sZW5ndGggLSBodW5rLm9sZExpbmVzLFxuICAgICAgICBsb2NhbE9mZnNldCA9IDAsXG4gICAgICAgIHRvUG9zID0gb2Zmc2V0ICsgaHVuay5vbGRTdGFydCAtIDE7XG5cbiAgICBsZXQgaXRlcmF0b3IgPSBkaXN0YW5jZUl0ZXJhdG9yKHRvUG9zLCBtaW5MaW5lLCBtYXhMaW5lKTtcblxuICAgIGZvciAoOyBsb2NhbE9mZnNldCAhPT0gdW5kZWZpbmVkOyBsb2NhbE9mZnNldCA9IGl0ZXJhdG9yKCkpIHtcbiAgICAgIGlmIChodW5rRml0cyhodW5rLCB0b1BvcyArIGxvY2FsT2Zmc2V0KSkge1xuICAgICAgICBodW5rLm9mZnNldCA9IG9mZnNldCArPSBsb2NhbE9mZnNldDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGxvY2FsT2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTZXQgbG93ZXIgdGV4dCBsaW1pdCB0byBlbmQgb2YgdGhlIGN1cnJlbnQgaHVuaywgc28gbmV4dCBvbmVzIGRvbid0IHRyeVxuICAgIC8vIHRvIGZpdCBvdmVyIGFscmVhZHkgcGF0Y2hlZCB0ZXh0XG4gICAgbWluTGluZSA9IGh1bmsub2Zmc2V0ICsgaHVuay5vbGRTdGFydCArIGh1bmsub2xkTGluZXM7XG4gIH1cblxuICAvLyBBcHBseSBwYXRjaCBodW5rc1xuICBsZXQgZGlmZk9mZnNldCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaHVua3MubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgaHVuayA9IGh1bmtzW2ldLFxuICAgICAgICB0b1BvcyA9IGh1bmsub2xkU3RhcnQgKyBodW5rLm9mZnNldCArIGRpZmZPZmZzZXQgLSAxO1xuICAgIGRpZmZPZmZzZXQgKz0gaHVuay5uZXdMaW5lcyAtIGh1bmsub2xkTGluZXM7XG5cbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGh1bmsubGluZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIGxldCBsaW5lID0gaHVuay5saW5lc1tqXSxcbiAgICAgICAgICBvcGVyYXRpb24gPSAobGluZS5sZW5ndGggPiAwID8gbGluZVswXSA6ICcgJyksXG4gICAgICAgICAgY29udGVudCA9IChsaW5lLmxlbmd0aCA+IDAgPyBsaW5lLnN1YnN0cigxKSA6IGxpbmUpLFxuICAgICAgICAgIGRlbGltaXRlciA9IGh1bmsubGluZWRlbGltaXRlcnMgJiYgaHVuay5saW5lZGVsaW1pdGVyc1tqXSB8fCAnXFxuJztcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgIHRvUG9zKys7XG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJy0nKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMSk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAxKTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMCwgY29udGVudCk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAwLCBkZWxpbWl0ZXIpO1xuICAgICAgICB0b1BvcysrO1xuICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICdcXFxcJykge1xuICAgICAgICBsZXQgcHJldmlvdXNPcGVyYXRpb24gPSBodW5rLmxpbmVzW2ogLSAxXSA/IGh1bmsubGluZXNbaiAtIDFdWzBdIDogbnVsbDtcbiAgICAgICAgaWYgKHByZXZpb3VzT3BlcmF0aW9uID09PSAnKycpIHtcbiAgICAgICAgICByZW1vdmVFT0ZOTCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAocHJldmlvdXNPcGVyYXRpb24gPT09ICctJykge1xuICAgICAgICAgIGFkZEVPRk5MID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEhhbmRsZSBFT0ZOTCBpbnNlcnRpb24vcmVtb3ZhbFxuICBpZiAocmVtb3ZlRU9GTkwpIHtcbiAgICB3aGlsZSAoIWxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdKSB7XG4gICAgICBsaW5lcy5wb3AoKTtcbiAgICAgIGRlbGltaXRlcnMucG9wKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGFkZEVPRk5MKSB7XG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgZGVsaW1pdGVycy5wdXNoKCdcXG4nKTtcbiAgfVxuICBmb3IgKGxldCBfayA9IDA7IF9rIDwgbGluZXMubGVuZ3RoIC0gMTsgX2srKykge1xuICAgIGxpbmVzW19rXSA9IGxpbmVzW19rXSArIGRlbGltaXRlcnNbX2tdO1xuICB9XG4gIHJldHVybiBsaW5lcy5qb2luKCcnKTtcbn1cblxuLy8gV3JhcHBlciB0aGF0IHN1cHBvcnRzIG11bHRpcGxlIGZpbGUgcGF0Y2hlcyB2aWEgY2FsbGJhY2tzLlxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2hlcyh1bmlEaWZmLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgdW5pRGlmZiA9PT0gJ3N0cmluZycpIHtcbiAgICB1bmlEaWZmID0gcGFyc2VQYXRjaCh1bmlEaWZmKTtcbiAgfVxuXG4gIGxldCBjdXJyZW50SW5kZXggPSAwO1xuICBmdW5jdGlvbiBwcm9jZXNzSW5kZXgoKSB7XG4gICAgbGV0IGluZGV4ID0gdW5pRGlmZltjdXJyZW50SW5kZXgrK107XG4gICAgaWYgKCFpbmRleCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBvcHRpb25zLmxvYWRGaWxlKGluZGV4LCBmdW5jdGlvbihlcnIsIGRhdGEpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoZXJyKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHVwZGF0ZWRDb250ZW50ID0gYXBwbHlQYXRjaChkYXRhLCBpbmRleCwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLnBhdGNoZWQoaW5kZXgsIHVwZGF0ZWRDb250ZW50LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLmNvbXBsZXRlKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9jZXNzSW5kZXgoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIHByb2Nlc3NJbmRleCgpO1xufVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.structuredPatch = structuredPatch;\nexports.formatPatch = formatPatch;\nexports.createTwoFilesPatch = createTwoFilesPatch;\nexports.createPatch = createPatch;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_line = require(\"../diff/line\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/*istanbul ignore end*/\nfunction structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n if (!options) {\n options = {};\n }\n\n if (typeof options.context === 'undefined') {\n options.context = 4;\n }\n\n var diff =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _line\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n diffLines)\n /*istanbul ignore end*/\n (oldStr, newStr, options);\n\n if (!diff) {\n return;\n }\n\n diff.push({\n value: '',\n lines: []\n }); // Append an empty value to make cleanup easier\n\n function contextLines(lines) {\n return lines.map(function (entry) {\n return ' ' + entry;\n });\n }\n\n var hunks = [];\n var oldRangeStart = 0,\n newRangeStart = 0,\n curRange = [],\n oldLine = 1,\n newLine = 1;\n\n /*istanbul ignore start*/\n var _loop = function _loop(\n /*istanbul ignore end*/\n i) {\n var current = diff[i],\n lines = current.lines || current.value.replace(/\\n$/, '').split('\\n');\n current.lines = lines;\n\n if (current.added || current.removed) {\n /*istanbul ignore start*/\n var _curRange;\n\n /*istanbul ignore end*/\n // If we have previous context, start with that\n if (!oldRangeStart) {\n var prev = diff[i - 1];\n oldRangeStart = oldLine;\n newRangeStart = newLine;\n\n if (prev) {\n curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];\n oldRangeStart -= curRange.length;\n newRangeStart -= curRange.length;\n }\n } // Output our changes\n\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_curRange =\n /*istanbul ignore end*/\n curRange).push.apply(\n /*istanbul ignore start*/\n _curRange\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n lines.map(function (entry) {\n return (current.added ? '+' : '-') + entry;\n }))); // Track the updated file position\n\n\n if (current.added) {\n newLine += lines.length;\n } else {\n oldLine += lines.length;\n }\n } else {\n // Identical context lines. Track line changes\n if (oldRangeStart) {\n // Close out any changes that have been output (or join overlapping)\n if (lines.length <= options.context * 2 && i < diff.length - 2) {\n /*istanbul ignore start*/\n var _curRange2;\n\n /*istanbul ignore end*/\n // Overlapping\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_curRange2 =\n /*istanbul ignore end*/\n curRange).push.apply(\n /*istanbul ignore start*/\n _curRange2\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n contextLines(lines)));\n } else {\n /*istanbul ignore start*/\n var _curRange3;\n\n /*istanbul ignore end*/\n // end the range and output\n var contextSize = Math.min(lines.length, options.context);\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_curRange3 =\n /*istanbul ignore end*/\n curRange).push.apply(\n /*istanbul ignore start*/\n _curRange3\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n contextLines(lines.slice(0, contextSize))));\n\n var hunk = {\n oldStart: oldRangeStart,\n oldLines: oldLine - oldRangeStart + contextSize,\n newStart: newRangeStart,\n newLines: newLine - newRangeStart + contextSize,\n lines: curRange\n };\n\n if (i >= diff.length - 2 && lines.length <= options.context) {\n // EOF is inside this hunk\n var oldEOFNewline = /\\n$/.test(oldStr);\n var newEOFNewline = /\\n$/.test(newStr);\n var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines;\n\n if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) {\n // special case: old has no eol and no trailing context; no-nl can end up before adds\n // however, if the old file is empty, do not output the no-nl line\n curRange.splice(hunk.oldLines, 0, '\\\\ No newline at end of file');\n }\n\n if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) {\n curRange.push('\\\\ No newline at end of file');\n }\n }\n\n hunks.push(hunk);\n oldRangeStart = 0;\n newRangeStart = 0;\n curRange = [];\n }\n }\n\n oldLine += lines.length;\n newLine += lines.length;\n }\n };\n\n for (var i = 0; i < diff.length; i++) {\n /*istanbul ignore start*/\n _loop(\n /*istanbul ignore end*/\n i);\n }\n\n return {\n oldFileName: oldFileName,\n newFileName: newFileName,\n oldHeader: oldHeader,\n newHeader: newHeader,\n hunks: hunks\n };\n}\n\nfunction formatPatch(diff) {\n if (Array.isArray(diff)) {\n return diff.map(formatPatch).join('\\n');\n }\n\n var ret = [];\n\n if (diff.oldFileName == diff.newFileName) {\n ret.push('Index: ' + diff.oldFileName);\n }\n\n ret.push('===================================================================');\n ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\\t' + diff.oldHeader));\n ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\\t' + diff.newHeader));\n\n for (var i = 0; i < diff.hunks.length; i++) {\n var hunk = diff.hunks[i]; // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n\n if (hunk.oldLines === 0) {\n hunk.oldStart -= 1;\n }\n\n if (hunk.newLines === 0) {\n hunk.newStart -= 1;\n }\n\n ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');\n ret.push.apply(ret, hunk.lines);\n }\n\n return ret.join('\\n') + '\\n';\n}\n\nfunction createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options));\n}\n\nfunction createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {\n return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9jcmVhdGUuanMiXSwibmFtZXMiOlsic3RydWN0dXJlZFBhdGNoIiwib2xkRmlsZU5hbWUiLCJuZXdGaWxlTmFtZSIsIm9sZFN0ciIsIm5ld1N0ciIsIm9sZEhlYWRlciIsIm5ld0hlYWRlciIsIm9wdGlvbnMiLCJjb250ZXh0IiwiZGlmZiIsImRpZmZMaW5lcyIsInB1c2giLCJ2YWx1ZSIsImxpbmVzIiwiY29udGV4dExpbmVzIiwibWFwIiwiZW50cnkiLCJodW5rcyIsIm9sZFJhbmdlU3RhcnQiLCJuZXdSYW5nZVN0YXJ0IiwiY3VyUmFuZ2UiLCJvbGRMaW5lIiwibmV3TGluZSIsImkiLCJjdXJyZW50IiwicmVwbGFjZSIsInNwbGl0IiwiYWRkZWQiLCJyZW1vdmVkIiwicHJldiIsInNsaWNlIiwibGVuZ3RoIiwiY29udGV4dFNpemUiLCJNYXRoIiwibWluIiwiaHVuayIsIm9sZFN0YXJ0Iiwib2xkTGluZXMiLCJuZXdTdGFydCIsIm5ld0xpbmVzIiwib2xkRU9GTmV3bGluZSIsInRlc3QiLCJuZXdFT0ZOZXdsaW5lIiwibm9ObEJlZm9yZUFkZHMiLCJzcGxpY2UiLCJmb3JtYXRQYXRjaCIsIkFycmF5IiwiaXNBcnJheSIsImpvaW4iLCJyZXQiLCJhcHBseSIsImNyZWF0ZVR3b0ZpbGVzUGF0Y2giLCJjcmVhdGVQYXRjaCIsImZpbGVOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7QUFFTyxTQUFTQSxlQUFULENBQXlCQyxXQUF6QixFQUFzQ0MsV0FBdEMsRUFBbURDLE1BQW5ELEVBQTJEQyxNQUEzRCxFQUFtRUMsU0FBbkUsRUFBOEVDLFNBQTlFLEVBQXlGQyxPQUF6RixFQUFrRztBQUN2RyxNQUFJLENBQUNBLE9BQUwsRUFBYztBQUNaQSxJQUFBQSxPQUFPLEdBQUcsRUFBVjtBQUNEOztBQUNELE1BQUksT0FBT0EsT0FBTyxDQUFDQyxPQUFmLEtB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QUNuRixTQUFPNEMsbUJBQW1CLENBQUNFLFFBQUQsRUFBV0EsUUFBWCxFQUFxQmxELE1BQXJCLEVBQTZCQyxNQUE3QixFQUFxQ0MsU0FBckMsRUFBZ0RDLFNBQWhELEVBQTJEQyxPQUEzRCxDQUExQjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkaWZmTGluZXN9IGZyb20gJy4uL2RpZmYvbGluZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJ1Y3R1cmVkUGF0Y2gob2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5jb250ZXh0ID09PSAndW5kZWZpbmVkJykge1xuICAgIG9wdGlvbnMuY29udGV4dCA9IDQ7XG4gIH1cblxuICBjb25zdCBkaWZmID0gZGlmZkxpbmVzKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbiAgaWYoIWRpZmYpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBkaWZmLnB1c2goe3ZhbHVlOiAnJywgbGluZXM6IFtdfSk7IC8vIEFwcGVuZCBhbiBlbXB0eSB2YWx1ZSB0byBtYWtlIGNsZWFudXAgZWFzaWVyXG5cbiAgZnVuY3Rpb24gY29udGV4dExpbmVzKGxpbmVzKSB7XG4gICAgcmV0dXJuIGxpbmVzLm1hcChmdW5jdGlvbihlbnRyeSkgeyByZXR1cm4gJyAnICsgZW50cnk7IH0pO1xuICB9XG5cbiAgbGV0IGh1bmtzID0gW107XG4gIGxldCBvbGRSYW5nZVN0YXJ0ID0gMCwgbmV3UmFuZ2VTdGFydCA9IDAsIGN1clJhbmdlID0gW10sXG4gICAgICBvbGRMaW5lID0gMSwgbmV3TGluZSA9IDE7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZi5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBkaWZmW2ldLFxuICAgICAgICAgIGxpbmVzID0gY3VycmVudC5saW5lcyB8fCBjdXJyZW50LnZhbHVlLnJlcGxhY2UoL1xcbiQvLCAnJykuc3BsaXQoJ1xcbicpO1xuICAgIGN1cnJlbnQubGluZXMgPSBsaW5lcztcblxuICAgIGlmIChjdXJyZW50LmFkZGVkIHx8IGN1cnJlbnQucmVtb3ZlZCkge1xuICAgICAgLy8gSWYgd2UgaGF2ZSBwcmV2aW91cyBjb250ZXh0LCBzdGFydCB3aXRoIHRoYXRcbiAgICAgIGlmICghb2xkUmFuZ2VTdGFydCkge1xuICAgICAgICBjb25zdCBwcmV2ID0gZGlmZltpIC0gMV07XG4gICAgICAgIG9sZFJhbmdlU3RhcnQgPSBvbGRMaW5lO1xuICAgICAgICBuZXdSYW5nZVN0YXJ0ID0gbmV3TGluZTtcblxuICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgIGN1clJhbmdlID0gb3B0aW9ucy5jb250ZXh0ID4gMCA/IGNvbnRleHRMaW5lcyhwcmV2LmxpbmVzLnNsaWNlKC1vcHRpb25zLmNvbnRleHQpKSA6IFtdO1xuICAgICAgICAgIG9sZFJhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoO1xuICAgICAgICAgIG5ld1JhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE91dHB1dCBvdXIgY2hhbmdlc1xuICAgICAgY3VyUmFuZ2UucHVzaCguLi4gbGluZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgICAgIHJldHVybiAoY3VycmVudC5hZGRlZCA/ICcrJyA6ICctJykgKyBlbnRyeTtcbiAgICAgIH0pKTtcblxuICAgICAgLy8gVHJhY2sgdGhlIHVwZGF0ZWQgZmlsZSBwb3NpdGlvblxuICAgICAgaWYgKGN1cnJlbnQuYWRkZWQpIHtcbiAgICAgICAgbmV3TGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbGRMaW5lICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWRlbnRpY2FsIGNvbnRleHQgbGluZXMuIFRyYWNrIGxpbmUgY2hhbmdlc1xuICAgICAgaWYgKG9sZFJhbmdlU3RhcnQpIHtcbiAgICAgICAgLy8gQ2xvc2Ugb3V0IGFueSBjaGFuZ2VzIHRoYXQgaGF2ZSBiZWVuIG91dHB1dCAob3Igam9pbiBvdmVybGFwcGluZylcbiAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCA8PSBvcHRpb25zLmNvbnRleHQgKiAyICYmIGkgPCBkaWZmLmxlbmd0aCAtIDIpIHtcbiAgICAgICAgICAvLyBPdmVybGFwcGluZ1xuICAgICAgICAgIGN1clJhbmdlLnB1c2goLi4uIGNvbnRleHRMaW5lcyhsaW5lcykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGVuZCB0aGUgcmFuZ2UgYW5kIG91dHB1dFxuICAgICAgICAgIGxldCBjb250ZXh0U2l6ZSA9IE1hdGgubWluKGxpbmVzLmxlbmd0aCwgb3B0aW9ucy5jb250ZXh0KTtcbiAgICAgICAgICBjdXJSYW5nZS5wdXNoKC4uLiBjb250ZXh0TGluZXMobGluZXMuc2xpY2UoMCwgY29udGV4dFNpemUpKSk7XG5cbiAgICAgICAgICBsZXQgaHVuayA9IHtcbiAgICAgICAgICAgIG9sZFN0YXJ0OiBvbGRSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgb2xkTGluZXM6IChvbGRMaW5lIC0gb2xkUmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgIG5ld1N0YXJ0OiBuZXdSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgbmV3TGluZXM6IChuZXdMaW5lIC0gbmV3UmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgIGxpbmVzOiBjdXJSYW5nZVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKGkgPj0gZGlmZi5sZW5ndGggLSAyICYmIGxpbmVzLmxlbmd0aCA8PSBvcHRpb25zLmNvbnRleHQpIHtcbiAgICAgICAgICAgIC8vIEVPRiBpcyBpbnNpZGUgdGhpcyBodW5rXG4gICAgICAgICAgICBsZXQgb2xkRU9GTmV3bGluZSA9ICgoL1xcbiQvKS50ZXN0KG9sZFN0cikpO1xuICAgICAgICAgICAgbGV0IG5ld0VPRk5ld2xpbmUgPSAoKC9cXG4kLykudGVzdChuZXdTdHIpKTtcbiAgICAgICAgICAgIGxldCBub05sQmVmb3JlQWRkcyA9IGxpbmVzLmxlbmd0aCA9PSAwICYmIGN1clJhbmdlLmxlbmd0aCA+IGh1bmsub2xkTGluZXM7XG4gICAgICAgICAgICBpZiAoIW9sZEVPRk5ld2xpbmUgJiYgbm9ObEJlZm9yZUFkZHMgJiYgb2xkU3RyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlOiBvbGQgaGFzIG5vIGVvbCBhbmQgbm8gdHJhaWxpbmcgY29udGV4dDsgbm8tbmwgY2FuIGVuZCB1cCBiZWZvcmUgYWRkc1xuICAgICAgICAgICAgICAvLyBob3dldmVyLCBpZiB0aGUgb2xkIGZpbGUgaXMgZW1wdHksIGRvIG5vdCBvdXRwdXQgdGhlIG5vLW5sIGxpbmVcbiAgICAgICAgICAgICAgY3VyUmFuZ2Uuc3BsaWNlKGh1bmsub2xkTGluZXMsIDAsICdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgoIW9sZEVPRk5ld2xpbmUgJiYgIW5vTmxCZWZvcmVBZGRzKSB8fCAhbmV3RU9GTmV3bGluZSkge1xuICAgICAgICAgICAgICBjdXJSYW5nZS5wdXNoKCdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaHVua3MucHVzaChodW5rKTtcblxuICAgICAgICAgIG9sZFJhbmdlU3RhcnQgPSAwO1xuICAgICAgICAgIG5ld1JhbmdlU3RhcnQgPSAwO1xuICAgICAgICAgIGN1clJhbmdlID0gW107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG9sZExpbmUgKz0gbGluZXMubGVuZ3RoO1xuICAgICAgbmV3TGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBvbGRGaWxlTmFtZTogb2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lOiBuZXdGaWxlTmFtZSxcbiAgICBvbGRIZWFkZXI6IG9sZEhlYWRlciwgbmV3SGVhZGVyOiBuZXdIZWFkZXIsXG4gICAgaHVua3M6IGh1bmtzXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRQYXRjaChkaWZmKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGRpZmYpKSB7XG4gICAgcmV0dXJuIGRpZmYubWFwKGZvcm1hdFBhdGNoKS5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIGNvbnN0IHJldCA9IFtdO1xuICBpZiAoZGlmZi5vbGRGaWxlTmFtZSA9PSBkaWZmLm5ld0ZpbGVOYW1lKSB7XG4gICAgcmV0LnB1c2goJ0luZGV4OiAnICsgZGlmZi5vbGRGaWxlTmFtZSk7XG4gIH1cbiAgcmV0LnB1c2goJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0nKTtcbiAgcmV0LnB1c2goJy0tLSAnICsgZGlmZi5vbGRGaWxlTmFtZSArICh0eXBlb2YgZGlmZi5vbGRIZWFkZXIgPT09ICd1bmRlZmluZWQnID8gJycgOiAnXFx0JyArIGRpZmYub2xkSGVhZGVyKSk7XG4gIHJldC5wdXNoKCcrKysgJyArIGRpZmYubmV3RmlsZU5hbWUgKyAodHlwZW9mIGRpZmYubmV3SGVhZGVyID09PSAndW5kZWZpbmVkJyA/ICcnIDogJ1xcdCcgKyBkaWZmLm5ld0hlYWRlcikpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZi5odW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGh1bmsgPSBkaWZmLmh1bmtzW2ldO1xuICAgIC8vIFVuaWZpZWQgRGlmZiBGb3JtYXQgcXVpcms6IElmIHRoZSBjaHVuayBzaXplIGlzIDAsXG4gICAgLy8gdGhlIGZpcnN0IG51bWJlciBpcyBvbmUgbG93ZXIgdGhhbiBvbmUgd291bGQgZXhwZWN0LlxuICAgIC8vIGh0dHBzOi8vd3d3LmFydGltYS5jb20vd2VibG9ncy92aWV3cG9zdC5qc3A/dGhyZWFkPTE2NDI5M1xuICAgIGlmIChodW5rLm9sZExpbmVzID09PSAwKSB7XG4gICAgICBodW5rLm9sZFN0YXJ0IC09IDE7XG4gICAgfVxuICAgIGlmIChodW5rLm5ld0xpbmVzID09PSAwKSB7XG4gICAgICBodW5rLm5ld1N0YXJ0IC09IDE7XG4gICAgfVxuICAgIHJldC5wdXNoKFxuICAgICAgJ0BAIC0nICsgaHVuay5vbGRTdGFydCArICcsJyArIGh1bmsub2xkTGluZXNcbiAgICAgICsgJyArJyArIGh1bmsubmV3U3RhcnQgKyAnLCcgKyBodW5rLm5ld0xpbmVzXG4gICAgICArICcgQEAnXG4gICAgKTtcbiAgICByZXQucHVzaC5hcHBseShyZXQsIGh1bmsubGluZXMpO1xuICB9XG5cbiAgcmV0dXJuIHJldC5qb2luKCdcXG4nKSArICdcXG4nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHdvRmlsZXNQYXRjaChvbGRGaWxlTmFtZSwgbmV3RmlsZU5hbWUsIG9sZFN0ciwgbmV3U3RyLCBvbGRIZWFkZXIsIG5ld0hlYWRlciwgb3B0aW9ucykge1xuICByZXR1cm4gZm9ybWF0UGF0Y2goc3RydWN0dXJlZFBhdGNoKG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQYXRjaChmaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSB7XG4gIHJldHVybiBjcmVhdGVUd29GaWxlc1BhdGNoKGZpbGVOYW1lLCBmaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKTtcbn1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.calcLineCount = calcLineCount;\nexports.merge = merge;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_create = require(\"./create\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_parse = require(\"./parse\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_array = require(\"../util/array\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/*istanbul ignore end*/\nfunction calcLineCount(hunk) {\n /*istanbul ignore start*/\n var _calcOldNewLineCount =\n /*istanbul ignore end*/\n calcOldNewLineCount(hunk.lines),\n oldLines = _calcOldNewLineCount.oldLines,\n newLines = _calcOldNewLineCount.newLines;\n\n if (oldLines !== undefined) {\n hunk.oldLines = oldLines;\n } else {\n delete hunk.oldLines;\n }\n\n if (newLines !== undefined) {\n hunk.newLines = newLines;\n } else {\n delete hunk.newLines;\n }\n}\n\nfunction merge(mine, theirs, base) {\n mine = loadPatch(mine, base);\n theirs = loadPatch(theirs, base);\n var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning.\n // Leaving sanity checks on this to the API consumer that may know more about the\n // meaning in their own context.\n\n if (mine.index || theirs.index) {\n ret.index = mine.index || theirs.index;\n }\n\n if (mine.newFileName || theirs.newFileName) {\n if (!fileNameChanged(mine)) {\n // No header or no change in ours, use theirs (and ours if theirs does not exist)\n ret.oldFileName = theirs.oldFileName || mine.oldFileName;\n ret.newFileName = theirs.newFileName || mine.newFileName;\n ret.oldHeader = theirs.oldHeader || mine.oldHeader;\n ret.newHeader = theirs.newHeader || mine.newHeader;\n } else if (!fileNameChanged(theirs)) {\n // No header or no change in theirs, use ours\n ret.oldFileName = mine.oldFileName;\n ret.newFileName = mine.newFileName;\n ret.oldHeader = mine.oldHeader;\n ret.newHeader = mine.newHeader;\n } else {\n // Both changed... figure it out\n ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);\n ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);\n ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);\n ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);\n }\n }\n\n ret.hunks = [];\n var mineIndex = 0,\n theirsIndex = 0,\n mineOffset = 0,\n theirsOffset = 0;\n\n while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {\n var mineCurrent = mine.hunks[mineIndex] || {\n oldStart: Infinity\n },\n theirsCurrent = theirs.hunks[theirsIndex] || {\n oldStart: Infinity\n };\n\n if (hunkBefore(mineCurrent, theirsCurrent)) {\n // This patch does not overlap with any of the others, yay.\n ret.hunks.push(cloneHunk(mineCurrent, mineOffset));\n mineIndex++;\n theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;\n } else if (hunkBefore(theirsCurrent, mineCurrent)) {\n // This patch does not overlap with any of the others, yay.\n ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));\n theirsIndex++;\n mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;\n } else {\n // Overlap, merge as best we can\n var mergedHunk = {\n oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),\n oldLines: 0,\n newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),\n newLines: 0,\n lines: []\n };\n mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);\n theirsIndex++;\n mineIndex++;\n ret.hunks.push(mergedHunk);\n }\n }\n\n return ret;\n}\n\nfunction loadPatch(param, base) {\n if (typeof param === 'string') {\n if (/^@@/m.test(param) || /^Index:/m.test(param)) {\n return (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _parse\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n parsePatch)\n /*istanbul ignore end*/\n (param)[0]\n );\n }\n\n if (!base) {\n throw new Error('Must provide a base reference or pass in a patch');\n }\n\n return (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _create\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n structuredPatch)\n /*istanbul ignore end*/\n (undefined, undefined, base, param)\n );\n }\n\n return param;\n}\n\nfunction fileNameChanged(patch) {\n return patch.newFileName && patch.newFileName !== patch.oldFileName;\n}\n\nfunction selectField(index, mine, theirs) {\n if (mine === theirs) {\n return mine;\n } else {\n index.conflict = true;\n return {\n mine: mine,\n theirs: theirs\n };\n }\n}\n\nfunction hunkBefore(test, check) {\n return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;\n}\n\nfunction cloneHunk(hunk, offset) {\n return {\n oldStart: hunk.oldStart,\n oldLines: hunk.oldLines,\n newStart: hunk.newStart + offset,\n newLines: hunk.newLines,\n lines: hunk.lines\n };\n}\n\nfunction mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {\n // This will generally result in a conflicted hunk, but there are cases where the context\n // is the only overlap where we can successfully merge the content here.\n var mine = {\n offset: mineOffset,\n lines: mineLines,\n index: 0\n },\n their = {\n offset: theirOffset,\n lines: theirLines,\n index: 0\n }; // Handle any leading content\n\n insertLeading(hunk, mine, their);\n insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each.\n\n while (mine.index < mine.lines.length && their.index < their.lines.length) {\n var mineCurrent = mine.lines[mine.index],\n theirCurrent = their.lines[their.index];\n\n if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {\n // Both modified ...\n mutualChange(hunk, mine, their);\n } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {\n /*istanbul ignore start*/\n var _hunk$lines;\n\n /*istanbul ignore end*/\n // Mine inserted\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n collectChange(mine)));\n } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {\n /*istanbul ignore start*/\n var _hunk$lines2;\n\n /*istanbul ignore end*/\n // Theirs inserted\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines2 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines2\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n collectChange(their)));\n } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {\n // Mine removed or edited\n removal(hunk, mine, their);\n } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {\n // Their removed or edited\n removal(hunk, their, mine, true);\n } else if (mineCurrent === theirCurrent) {\n // Context identity\n hunk.lines.push(mineCurrent);\n mine.index++;\n their.index++;\n } else {\n // Context mismatch\n conflict(hunk, collectChange(mine), collectChange(their));\n }\n } // Now push anything that may be remaining\n\n\n insertTrailing(hunk, mine);\n insertTrailing(hunk, their);\n calcLineCount(hunk);\n}\n\nfunction mutualChange(hunk, mine, their) {\n var myChanges = collectChange(mine),\n theirChanges = collectChange(their);\n\n if (allRemoves(myChanges) && allRemoves(theirChanges)) {\n // Special case for remove changes that are supersets of one another\n if (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _array\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n arrayStartsWith)\n /*istanbul ignore end*/\n (myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {\n /*istanbul ignore start*/\n var _hunk$lines3;\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines3 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines3\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n myChanges));\n\n return;\n } else if (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _array\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n arrayStartsWith)\n /*istanbul ignore end*/\n (theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {\n /*istanbul ignore start*/\n var _hunk$lines4;\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines4 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines4\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n theirChanges));\n\n return;\n }\n } else if (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _array\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n arrayEqual)\n /*istanbul ignore end*/\n (myChanges, theirChanges)) {\n /*istanbul ignore start*/\n var _hunk$lines5;\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines5 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines5\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n myChanges));\n\n return;\n }\n\n conflict(hunk, myChanges, theirChanges);\n}\n\nfunction removal(hunk, mine, their, swap) {\n var myChanges = collectChange(mine),\n theirChanges = collectContext(their, myChanges);\n\n if (theirChanges.merged) {\n /*istanbul ignore start*/\n var _hunk$lines6;\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines6 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines6\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n theirChanges.merged));\n } else {\n conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);\n }\n}\n\nfunction conflict(hunk, mine, their) {\n hunk.conflict = true;\n hunk.lines.push({\n conflict: true,\n mine: mine,\n theirs: their\n });\n}\n\nfunction insertLeading(hunk, insert, their) {\n while (insert.offset < their.offset && insert.index < insert.lines.length) {\n var line = insert.lines[insert.index++];\n hunk.lines.push(line);\n insert.offset++;\n }\n}\n\nfunction insertTrailing(hunk, insert) {\n while (insert.index < insert.lines.length) {\n var line = insert.lines[insert.index++];\n hunk.lines.push(line);\n }\n}\n\nfunction collectChange(state) {\n var ret = [],\n operation = state.lines[state.index][0];\n\n while (state.index < state.lines.length) {\n var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one \"atomic\" modify change.\n\n if (operation === '-' && line[0] === '+') {\n operation = '+';\n }\n\n if (operation === line[0]) {\n ret.push(line);\n state.index++;\n } else {\n break;\n }\n }\n\n return ret;\n}\n\nfunction collectContext(state, matchChanges) {\n var changes = [],\n merged = [],\n matchIndex = 0,\n contextChanges = false,\n conflicted = false;\n\n while (matchIndex < matchChanges.length && state.index < state.lines.length) {\n var change = state.lines[state.index],\n match = matchChanges[matchIndex]; // Once we've hit our add, then we are done\n\n if (match[0] === '+') {\n break;\n }\n\n contextChanges = contextChanges || change[0] !== ' ';\n merged.push(match);\n matchIndex++; // Consume any additions in the other block as a conflict to attempt\n // to pull in the remaining context after this\n\n if (change[0] === '+') {\n conflicted = true;\n\n while (change[0] === '+') {\n changes.push(change);\n change = state.lines[++state.index];\n }\n }\n\n if (match.substr(1) === change.substr(1)) {\n changes.push(change);\n state.index++;\n } else {\n conflicted = true;\n }\n }\n\n if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {\n conflicted = true;\n }\n\n if (conflicted) {\n return changes;\n }\n\n while (matchIndex < matchChanges.length) {\n merged.push(matchChanges[matchIndex++]);\n }\n\n return {\n merged: merged,\n changes: changes\n };\n}\n\nfunction allRemoves(changes) {\n return changes.reduce(function (prev, change) {\n return prev && change[0] === '-';\n }, true);\n}\n\nfunction skipRemoveSuperset(state, removeChanges, delta) {\n for (var i = 0; i < delta; i++) {\n var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);\n\n if (state.lines[state.index + i] !== ' ' + changeContent) {\n return false;\n }\n }\n\n state.index += delta;\n return true;\n}\n\nfunction calcOldNewLineCount(lines) {\n var oldLines = 0;\n var newLines = 0;\n lines.forEach(function (line) {\n if (typeof line !== 'string') {\n var myCount = calcOldNewLineCount(line.mine);\n var theirCount = calcOldNewLineCount(line.theirs);\n\n if (oldLines !== undefined) {\n if (myCount.oldLines === theirCount.oldLines) {\n oldLines += myCount.oldLines;\n } else {\n oldLines = undefined;\n }\n }\n\n if (newLines !== undefined) {\n if (myCount.newLines === theirCount.newLines) {\n newLines += myCount.newLines;\n } else {\n newLines = undefined;\n }\n }\n } else {\n if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) {\n newLines++;\n }\n\n if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) {\n oldLines++;\n }\n }\n });\n return {\n oldLines: oldLines,\n newLines: newLines\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9tZXJnZS5qcyJdLCJuYW1lcyI6WyJjYWxjTGluZUNvdW50IiwiaHVuayIsImNhbGNPbGROZXdMaW5lQ291bnQiLCJsaW5lcyIsIm9sZExpbmVzIiwibmV3TGluZXMiLCJ1bmRlZmluZWQiLCJtZXJnZSIsIm1pbmUiLCJ0aGVpcnMiLCJiYXNlIiwibG9hZFBhdGNoIiwicmV0IiwiaW5kZXgiLCJuZXdGaWxlTmFtZSIsImZpbGVOYW1lQ2hhbmdlZCIsIm9sZEZpbGVOYW1lIiwib2xkSGVhZGVyIiwibmV3SGVhZGVyIiwic2VsZWN0RmllbGQiLCJodW5rcyIsIm1pbmVJbmRleCIsInRoZWlyc0luZGV4IiwibWluZU9mZnNldCIsInRoZWlyc09mZnNldCIsImxlbmd0aCIsIm1pbmVDdXJyZW50Iiwib2xkU3RhcnQiLCJJbmZpbml0eSIsInRoZWlyc0N1cnJlbnQiLCJodW5rQmVmb3JlIiwicHVzaCIsImNsb25lSHVuayIsIm1lcmdlZEh1bmsiLCJNYXRoIiwibWluIiwibmV3U3RhcnQiLCJtZXJnZUxpbmVzIiwicGFyYW0iLCJ0ZXN0IiwicGFyc2VQYXRjaCIsIkVycm9yIiwic3RydWN0dXJlZFBhdGNoIiwicGF0Y2giLCJjb25mbGljdCIsImNoZWNrIiwib2Zmc2V0IiwibWluZUxpbmVzIiwidGhlaXJPZmZzZXQiLCJ0aGVpckxpbmVzIiwidGhlaXIiLCJpbnNlcnRMZWFkaW5nIiwidGhlaXJDdXJyZW50IiwibXV0dWFsQ2hhbmdlIiwiY29sbGVjdENoYW5nZSIsInJlbW92YWwiLCJpbnNlcnRUcmFpbGluZyIsIm15Q2hhbmdlcyIsInRoZWlyQ2hhbmdlcyIsImFsbFJlbW92ZXMiLCJhcnJheVN0YXJ0c1dpdGgiLCJza2lwUmVtb3ZlU3VwZXJzZXQiLCJhcnJheUVxdWFsIiwic3dhcCIsImNvbGxlY3RDb250ZXh0IiwibWVyZ2VkIiwiaW5zZXJ0IiwibGluZSIsInN0YXRlIiwib3BlcmF0aW9uIiwibWF0Y2hDaGFuZ2VzIiwiY2hhbmdlcyIsIm1hdGNoSW5kZXgiLCJjb250ZXh0Q2hhbmdlcyIsImNvbmZsaWN0ZWQiLCJjaGFuZ2UiLCJtYXRjaCIsInN1YnN0ciIsInJlZHVjZSIsInByZXYiLCJyZW1vdmVDaGFuZ2VzIiwiZGVsdGEiLCJpIiwiY2hhbmdlQ29udGVudCIsImZvckVhY2giLCJteUNvdW50IiwidGhlaXJDb3VudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7QUFFTyxTQUFTQSxhQUFULENBQXVCQyxJQUF2QixFQUE2QjtBQUFBO0FBQUE7QUFBQTtBQUNMQyxFQUFBQSxtQkFBbUIsQ0FBQ0QsSUFBSSxDQUFDRSxLQUFOLENBRGQ7QUFBQSxNQUMzQkMsUUFEMkIsd0JBQzNCQSxRQUQyQjtBQUFBLE1BQ2pCQyxRQURpQix3QkFDakJBLFFBRGlCOztBQUdsQyxNQUFJRCxRQUFRLEtBQUtFLFNBQWpCLEVBQTRCO0FBQzFCTCxJQUFBQSxJQUFJLENBQUNHLFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0QsR0FGRCxNQUVPO0FBQ0wsV0FBT0gsSUFBSSxDQUFDRyxRQUFaO0FBQ0Q7O0FBRUQsTUFBSUMsUUFBUSxLQUFLQyxTQUFqQixFQUE0QjtBQUMxQkwsSUFBQUEsSUFBSSxDQUFDSSxRQUFMLEdBQWdCQSxRQUFoQjtBQUNELEdBRkQsTUFFTztBQUNMLFdBQU9KLElBQUksQ0FBQ0ksUUFBWjtBQUNEO0FBQ0Y7O0FBRU0sU0FBU0UsS0FBVCxDQUFlQyxJQUFmLEVBQXFCQyxNQUFyQixFQUE2QkMsSUFBN0IsRUFBbUM7QUFDeENGLEVBQUFBLElBQUksR0FBR0csU0FBUyxDQUFDSCxJQUFELEVBQU9FLElBQVAsQ0FBaEI7QUFDQUQsRUFBQUEsTUFBTSxHQUFHRSxTQUFTLENBQUNGLE1BQUQsRUFBU0MsSUFBVCxDQUFsQjtBQUVBLE1BQUlFLEdBQUcsR0FBRyxFQUFWLENBSndDLENBTXhDO0FBQ0E7QUFDQTs7QUFDQSxNQUFJSixJQUFJLENBQUNLLEtBQUwsSUFBY0osTUFBTSxDQUFDSSxLQUF6QixFQUFnQztBQUM5QkQsSUFBQUEsR0FBRyxDQUFDQyxLQUFKLEdBQVlMLElBQUksQ0FBQ0ssS0FBTCxJQUFjSixNQUFNLENBQUNJLEtBQWpDO0FBQ0Q7O0FBRUQsTUFBSUwsSUFBSSxDQUFDTSxXQUFMLElBQW9CTCxNQUFNLENBQUNLLFdBQS9CLEVBQTRDO0FBQzFDLFFBQUksQ0FBQ0MsZUFBZSxDQUFDUCxJQUFELENBQXBCLEVBQTRCO0FBQzFCO0FBQ0FJLE1BQUFBLEdBQUcsQ0FBQ0ksV0FBSixHQUFrQlAsTUFBTSxDQUFDTyxXQUFQLElBQXNCUixJQUFJLENBQUNRLFdBQTdDO0FBQ0FKLE1BQUFBLEdBQUcsQ0FBQ0UsV0FBSixHQUFrQkwsTUFBTSxDQUFDSyxXQUFQLElBQXNCTixJQUFJLENBQUNNLFdBQTdDO0FBQ0FGLE1BQUFBLEdBQUcsQ0FBQ0ssU0FBSixHQUFnQlIsTUFBTSxDQUFDUSxTQUFQLElBQW9CVCxJQUFJLENBQUNTLFNBQXpDO0FBQ0FMLE1BQUFBLEdBQUcsQ0FBQ00sU0FBSixHQUFnQlQsTUFBTSxDQUFDUyxTQUFQLElBQW9CVixJQUFJLENBQUNVLFNBQXpDO0FBQ0QsS0FORCxNQU1PLElBQUksQ0FBQ0gsZUFBZSxDQUFDTixNQUFELENBQXBCLEVBQThCO0FBQ25DO0FBQ0FHLE1BQUFBLEdBQUcsQ0FBQ0ksV0FBSixHQUFrQlIsSUFBSSxDQUFDUSxXQUF2QjtBQUNBSixNQUFBQSxHQUFHLENBQUNFLFdBQUosR0FBa0JOLElBQUksQ0FBQ00sV0FBdkI7QUFDQUYsTUFBQUEsR0FBRyxDQUFDSyxTQUFKLEdBQWdCVCxJQUFJLENBQUNTLFNBQXJCO0FBQ0FMLE1BQUFBLEdBQUcsQ0FBQ00sU0FBSixHQUFnQlYsSUFBSSxDQUFDVSxTQUFyQjtBQUNELEtBTk0sTUFNQTtBQUNMO0FBQ0FOLE1BQUFBLEdBQUcsQ0FBQ0ksV0FBSixHQUFrQkcsV0FBVyxDQUFDUCxHQUFELEVBQU1KLElBQUksQ0FBQ1EsV0FBWCxFQUF3QlAsTUFBTSxDQUFDTyxXQUEvQixDQUE3QjtBQUNBSixNQUFBQSxHQUFHLENBQUNFLFdBQUosR0FBa0JLLFdBQVcsQ0FBQ1AsR0FBRCxFQUFNSixJQUFJLENBQUNNLFdBQVgsRUFBd0JMLE1BQU0sQ0FBQ0ssV0FBL0IsQ0FBN0I7QUFDQUYsTUFBQUEsR0FBRyxDQUFDSyxTQUFKLEdBQWdCRSxXQUFXLENBQUNQLEdBQUQsRUFBTUosSUFBSSxDQUFDUyxTQUFYLEVBQXNCUixNQUFNLENBQUNRLFNBQTdCLENBQTNCO0FBQ0FMLE1BQUFBLEdBQUcsQ0FBQ00sU0FBSixHQUFnQkMsV0FBVyxDQUFDUCxHQUFELEVBQU1KLElBQUksQ0FBQ1UsU0FBWCxFQUFzQlQsTUFBTSxDQUFDUyxTQUE3QixDQUEzQjtBQUNEO0FBQ0Y7O0FBRUROLEVBQUFBLEdBQUcsQ0FBQ1EsS0FBSixHQUFZLEVBQVo7QUFFQSxNQUFJQyxTQUFTLEdBQUcsQ0FBaEI7QUFBQSxNQUNJQyxXQUFXLEdBQUcsQ0FEbEI7QUFBQSxNQUVJQyxVQUFVLEdBQUcsQ0FGakI7QUFBQSxNQUdJQyxZQUFZLEdBQUcsQ0FIbkI7O0FBS0EsU0FBT0gsU0FBUyxHQUFHYixJQUFJLENBQUNZLEtBQUwsQ0FBV0ssTUFBdkIsSUFBaUNILFdBQVcsR0FBR2IsTUFBTSxDQUFDVyxLQUFQLENBQWFLLE1BQW5FLEVBQTJFO0FBQ3pFLFFBQUlDLFdBQVcsR0FBR2xCLElBQUksQ0FBQ1ksS0FBTCxDQUFXQyxTQUFYLEtBQXlCO0FBQUNNLE1BQUFBLFFBQVEsRUFBRUM7QUFBWCxLQUEzQztBQUFBLFFBQ0lDLGFBQWEsR0FBR3BCLE1BQU0sQ0FBQ1csS0FBUCxDQUFhRSxXQUFiLEtBQTZCO0FBQUNLLE1BQUFBLFFBQVEsRUFBRUM7QUFBWCxLQURqRDs7QUFHQSxRQUFJRSxVQUFVLENBQUNKLFdBQUQsRUFBY0csYUFBZCxDQUFkLEVBQTRDO0FBQzFDO0FBQ0FqQixNQUFBQSxHQUFHLENBQUNRLEtBQUosQ0FBVVcsSUFBVixDQUFlQyxTQUFTLENBQUNOLFdBQUQsRUFBY0gsVUFBZCxDQUF4QjtBQUNBRixNQUFBQSxTQUFTO0FBQ1RHLE1BQUFBLFlBQVksSUFBSUUsV0FBVyxDQUFDckIsUUFBWixHQUF1QnFCLFdBQVcsQ0FBQ3RCLFFBQW5EO0FBQ0QsS0FMRCxNQUtPLElBQUkwQixVQUFVLENBQUNELGFBQUQsRUFBZ0JILFdBQWhCLENBQWQsRUFBNEM7QUFDakQ7QUFDQWQsTUFBQUEsR0FBRyxDQUFDUSxLQUFKLENBQVVXLElBQVYsQ0FBZUMsU0FBUyxDQUFDSCxhQUFELEVBQWdCTCxZQUFoQixDQUF4QjtBQUNBRixNQUFBQSxXQUFXO0FBQ1hDLE1BQUFBLFVBQVUsSUFBSU0sYUFBYSxDQUFDeEIsUUFBZCxHQUF5QndCLGFBQWEsQ0FBQ3pCLFFBQXJEO0FBQ0QsS0FMTSxNQUtBO0FBQ0w7QUFDQSxVQUFJNkIsVUFBVSxHQUFHO0FBQ2ZOLFFBQUFBLFFBQVEsRUFBRU8sSUFBSSxDQUFDQyxHQUFMLENBQVNULFdBQVcsQ0FBQ0MsUUFBckIsRUFBK0JFLGFBQWEsQ0FBQ0YsUUFBN0MsQ0FESztBQUVmdkIsUUFBQUEsUUFBUSxFQUFFLENBRks7QUFHZmdDLFFBQUFBLFFBQVEsRUFBRUYsSUFBSSxDQUFDQyxHQUFMLENBQVNULFdBQVcsQ0FBQ1UsUUFBWixHQUF1QmIsVUFBaEMsRUFBNENNLGFBQWEsQ0FBQ0YsUUFBZCxHQUF5QkgsWUFBckUsQ0FISztBQUlmbkIsUUFBQUEsUUFBUSxFQUFFLENBSks7QUFLZkYsUUFBQUEsS0FBSyxFQUFFO0FBTFEsT0FBakI7QUFPQWtDLE1BQUFBLFVBQVUsQ0FBQ0osVUFBRCxFQUFhUCxXQUFXLENBQUNDLFFBQXpCLEVBQW1DRCxXQUFXLENBQUN2QixLQUEvQyxFQUFzRDBCLGFBQWEsQ0FBQ0YsUUFBcEUsRUFBOEVFLGFBQWEsQ0FBQzFCLEtBQTVGLENBQVY7QUFDQW1CLE1BQUFBLFdBQVc7QUFDWEQsTUFBQUEsU0FBUztBQUVUVCxNQUFBQSxHQUFHLENBQUNRLEtBQUosQ0FBVVcsSUFBVixDQUFlRSxVQUFmO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPckIsR0FBUDtBQUNEOztBQUVELFNBQVNELFNBQVQsQ0FBbUIyQixLQUFuQixFQUEwQjVCLElBQTFCLEVBQWdDO0FBQzlCLE1BQUksT0FBTzRCLEtBQVAsS0FBaUIsUUFBckIsRUFBK0I7QUFDN0IsUUFBSyxNQUFELENBQVNDLElBQVQsQ0FBY0QsS0FBZCxLQUEwQixVQUFELENBQWFDLElBQWIsQ0FBa0JELEtBQWxCLENBQTdCLEVBQXdEO0FBQ3RELGFBQU87QUFBQTtBQUFBO0FBQUE7O0FBQUFFO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxTQUFXRixLQUFYLEVBQWtCLENBQWxCO0FBQVA7QUFDRDs7QUFFRCxRQUFJLENBQUM1QixJQUFMLEVBQVc7QUFDVCxZQUFNLElBQUkrQixLQUFKLENBQVUsa0RBQVYsQ0FBTjtBQUNEOztBQUNELFdBQU87QUFBQTtBQUFBO0FBQUE7O0FBQUFDO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxPQUFnQnBDLFNBQWhCLEVBQTJCQSxTQUEzQixFQUFzQ0ksSUFBdEMsRUFBNEM0QixLQUE1QztBQUFQO0FBQ0Q7O0FBRUQsU0FBT0EsS0FBUDtBQUNEOztBQUVELFNBQVN2QixlQUFULENBQXlCNEIsS0FBekIsRUFBZ0M7QUFDOUIsU0FBT0EsS0FBSyxDQUFDN0IsV0FBTixJQUFxQjZCLEtBQUssQ0FBQzdCLFdBQU4sS0FBc0I2QixLQUFLLENBQUMzQixXQUF4RDtBQUNEOztBQUVELFNBQVNHLFdBQVQsQ0FBcUJOLEtBQXJCLEVBQTRCTCxJQUE1QixFQUFrQ0MsTUFBbEMsRUFBMEM7QUFDeEMsTUFBSUQsSUFBSSxLQUFLQyxNQUFiLEVBQXFCO0FBQ25CLFdBQU9ELElBQVA7QUFDRCxHQUZELE1BRU87QUFDTEssSUFBQUEsS0FBSyxDQUFDK0IsUUFBTixHQUFpQixJQUFqQjtBQUNBLFdBQU87QUFBQ3BDLE1BQUFBLElBQUksRUFBSkEsSUFBRDtBQUFPQyxNQUFBQSxNQUFNLEVBQU5BO0FBQVAsS0FBUDtBQUNEO0FBQ0Y7O0FBRUQsU0FBU3FCLFVBQVQsQ0FBb0JTLElBQXBCLEVBQTBCTSxLQUExQixFQUFpQztBQUMvQixTQUFPTixJQUFJLENBQUNaLFFBQUwsR0FBZ0JrQixLQUFLLENBQUNsQixRQUF0QixJQUNEWSxJQUFJLENBQUNaLFFBQUwsR0FBZ0JZLElBQUksQ0FBQ25DLFFBQXRCLEdBQWtDeUMsS0FBSyxDQUFDbEIsUUFEN0M7QUFFRDs7QUFFRCxTQUFTSyxTQUFULENBQW1CL0IsSUFBbkIsRUFBeUI2QyxNQUF6QixFQUFpQztBQUMvQixTQUFPO0FBQ0xuQixJQUFBQSxRQUFRLEVBQUUxQixJQUFJLENBQUMwQixRQURWO0FBQ29CdkIsSUFBQUEsUUFBUSxFQUFFSCxJQUFJLENBQUNHLFFBRG5DO0FBRUxnQyxJQUFBQSxRQUFRLEVBQUVuQyxJQUFJLENBQUNtQyxRQUFMLEdBQWdCVSxNQUZyQjtBQUU2QnpDLElBQUFBLFFBQVEsRUFBRUosSUFBSSxDQUFDSSxRQUY1QztBQUdMRixJQUFBQSxLQUFLLEVBQUVGLElBQUksQ0FBQ0U7QUFIUCxHQUFQO0FBS0Q7O0FBRUQsU0FBU2tDLFVBQVQsQ0FBb0JwQyxJQUFwQixFQUEwQnNCLFVBQTFCLEVBQXNDd0IsU0FBdEMsRUFBaURDLFdBQWpELEVBQThEQyxVQUE5RCxFQUEwRTtBQUN4RTtBQUNBO0FBQ0EsTUFBSXpDLElBQUksR0FBRztBQUFDc0MsSUFBQUEsTUFBTSxFQUFFdkIsVUFBVDtBQUFxQnBCLElBQUFBLEtBQUssRUFBRTRDLFNBQTVCO0FBQXVDbEMsSUFBQUEsS0FBSyxFQUFFO0FBQTlDLEdBQVg7QUFBQSxNQUNJcUMsS0FBSyxHQUFHO0FBQUNKLElBQUFBLE1BQU0sRUFBRUUsV0FBVDtBQUFzQjdDLElBQUFBLEtBQUssRUFBRThDLFVBQTdCO0FBQXlDcEMsSUFBQUEsS0FBSyxFQUFFO0FBQWhELEdBRFosQ0FId0UsQ0FNeEU7O0FBQ0FzQyxFQUFBQSxhQUFhLENBQUNsRCxJQUFELEVBQU9PLElBQVAsRUFBYTBDLEtBQWIsQ0FBYjtBQUNBQyxFQUFBQSxhQUFhLENBQUNsRCxJQUFELEVBQU9pRCxLQUFQLEVBQWMxQyxJQUFkLENBQWIsQ0FSd0UsQ0FVeEU7O0FBQ0EsU0FBT0EsSUFBSSxDQUFDSyxLQUFMLEdBQWFMLElBQUksQ0FBQ0wsS0FBTCxDQUFXc0IsTUFBeEIsSUFBa0N5QixLQUFLLENBQUNyQyxLQUFOLEdBQWNxQyxLQUFLLENBQUMvQyxLQUFOLENBQVlzQixNQUFuRSxFQUEyRTtBQUN6RSxRQUFJQyxXQUFXLEdBQUdsQixJQUFJLENBQUNMLEtBQUwsQ0FBV0ssSUFBSSxDQUFDSyxLQUFoQixDQUFsQjtBQUFBLFFBQ0l1QyxZQUFZLEdBQUdGLEtBQUssQ0FBQy9DLEtBQU4sQ0FBWStDLEtBQUssQ0FBQ3JDLEtBQWxCLENBRG5COztBQUdBLFFBQUksQ0FBQ2EsV0FBVyxDQUFDLENBQUQsQ0FBWCxLQUFtQixHQUFuQixJQUEwQkEsV0FBVyxDQUFDLENBQUQsQ0FBWCxLQUFtQixHQUE5QyxNQUNJMEIsWUFBWSxDQUFDLENBQUQsQ0FBWixLQUFvQixHQUFwQixJQUEyQkEsWUFBWSxDQUFDLENBQUQsQ0FBWixLQUFvQixHQURuRCxDQUFKLEVBQzZEO0FBQzNEO0FBQ0FDLE1BQUFBLFlBQVksQ0FBQ3BELElBQUQsRUFBT08sSUFBUCxFQUFhMEMsS0FBYixDQUFaO0FBQ0QsS0FKRCxNQUlPLElBQUl4QixXQUFXLENBQUMsQ0FBRCxDQUFYLEtBQW1CLEdBQW5CLElBQTBCMEIsWUFBWSxDQUFDLENBQUQsQ0FBWixLQUFvQixHQUFsRCxFQUF1RDtBQUFBO0FBQUE7O0FBQUE7QUFDNUQ7O0FBQ0E7O0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUFuRCxNQUFBQSxJQUFJLENBQUNFLEtBQUwsRUFBVzRCLElBQVg7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvQnVCLE1BQUFBLGFBQWEsQ0FBQzlDLElBQUQsQ0FBakM7QUFDRCxLQUhNLE1BR0EsSUFBSTRDLFlBQVksQ0FBQyxDQUFELENBQVosS0FBb0IsR0FBcEIsSUFBMkIxQixXQUFXLENBQUMsQ0FBRCxDQUFYLEtBQW1CLEdBQWxELEVBQXVEO0FBQUE7QUFBQTs7QUFBQTtBQUM1RDs7QUFDQTs7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQXpCLE1BQUFBLElBQUksQ0FBQ0UsS0FBTCxFQUFXNEIsSUFBWDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9CdUIsTUFBQUEsYUFBYSxDQUFDSixLQUFELENBQWpDO0FBQ0QsS0FITSxNQUdBLElBQUl4QixXQUFXLENBQUMsQ0FBRCxDQUFYLEtBQW1CLEdBQW5CLElBQTBCMEIsWUFBWSxDQUFDLENBQUQsQ0FBWixLQUFvQixHQUFsRCxFQUF1RDtBQUM1RDtBQUNBRyxNQUFBQSxPQUFPLENBQUN0RCxJQUFELEVBQU9PLElBQVAsRUFBYTBDLEtBQWIsQ0FBUDtBQUNELEtBSE0sTUFHQSxJQUFJRSxZQUFZLENBQUMsQ0FBRCxDQUFaLEtBQW9CLEdBQXBCLElBQTJCMUIsV0FBVyxDQUFDLENBQUQsQ0FBWCxLQUFtQixHQUFsRCxFQUF1RDtBQUM1RDtBQUNBNkIsTUFBQUEsT0FBTyxDQUFDdEQsSUFBRCxFQUFPaUQsS0FBUCxFQUFjMUMsSUFBZCxFQUFvQixJQUFwQixDQUFQO0FBQ0QsS0FITSxNQUdBLElBQUlrQixXQUFXLEtBQUswQixZQUFwQixFQUFrQztBQUN2QztBQUNBbkQsTUFBQUEsSUFBSSxDQUFDRSxLQUFMLENBQVc0QixJQUFYLENBQWdCTCxXQUFoQjtBQUNBbEIsTUFBQUEsSUFBSSxDQUFDSyxLQUFMO0FBQ0FxQyxNQUFBQSxLQUFLLENBQUNyQyxLQUFOO0FBQ0QsS0FMTSxNQUtBO0FBQ0w7QUFDQStCLE1BQUFBLFFBQVEsQ0FBQzNDLElBQUQsRUFBT3FELGFBQWEsQ0FBQzlDLElBQUQsQ0FBcEIsRUFBNEI4QyxhQUFhLENBQUNKLEtBQUQsQ0FBekMsQ0FBUjtBQUNEO0FBQ0YsR0F4Q3VFLENBMEN4RTs7O0FBQ0FNLEVBQUFBLGNBQWMsQ0FBQ3ZELElBQUQsRUFBT08sSUFBUCxDQUFkO0FBQ0FnRCxFQUFBQSxjQUFjLENBQUN2RCxJQUFELEVBQU9pRCxLQUFQLENBQWQ7QUFFQWxELEVBQUFBLGFBQWEsQ0FBQ0MsSUFBRCxDQUFiO0FBQ0Q7O0FBRUQsU0FBU29ELFlBQVQsQ0FBc0JwRCxJQUF0QixFQUE0Qk8sSUFBNUIsRUFBa0MwQyxLQUFsQyxFQUF5QztBQUN2QyxNQUFJTyxTQUFTLEdBQUdILGFBQWEsQ0FBQzlDLElBQUQsQ0FBN0I7QUFBQSxNQUNJa0QsWUFBWSxHQUFHSixhQUFhLENBQUNKLEtBQUQsQ0FEaEM7O0FBR0EsTUFBSVMsVUFBVSxDQUFDRixTQUFELENBQVYsSUFBeUJFLFVBQVUsQ0FBQ0QsWUFBRCxDQUF2QyxFQUF1RDtBQUNyRDtBQUNBO0FBQUk7QUFBQTtBQUFBOztBQUFBRTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBO0FBQUEsS0FBZ0JILFNBQWhCLEVBQTJCQyxZQUEzQixLQUNHRyxrQkFBa0IsQ0FBQ1gsS0FBRCxFQUFRTyxTQUFSLEVBQW1CQSxTQUFTLENBQUNoQyxNQUFWLEdBQW1CaUMsWUFBWSxDQUFDakMsTUFBbkQsQ0FEekIsRUFDcUY7QUFBQTtBQUFBOztBQUFBOztBQUNuRjs7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQXhCLE1BQUFBLElBQUksQ0FBQ0UsS0FBTCxFQUFXNEIsSUFBWDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9CMEIsTUFBQUEsU0FBcEI7O0FBQ0E7QUFDRCxLQUpELE1BSU87QUFBSTtBQUFBO0FBQUE7O0FBQUFHO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxLQUFnQkYsWUFBaEIsRUFBOEJELFNBQTlCLEtBQ0pJLGtCQUFrQixDQUFDckQsSUFBRCxFQUFPa0QsWUFBUCxFQUFxQkEsWUFBWSxDQUFDakMsTUFBYixHQUFzQmdDLFNBQVMsQ0FBQ2hDLE1BQXJELENBRGxCLEVBQ2dGO0FBQUE7QUFBQTs7QUFBQTs7QUFDckY7O0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUF4QixNQUFBQSxJQUFJLENBQUNFLEtBQUwsRUFBVzRCLElBQVg7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvQjJCLE1BQUFBLFlBQXBCOztBQUNBO0FBQ0Q7QUFDRixHQVhELE1BV087QUFBSTtBQUFBO0FBQUE7O0FBQUFJO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxHQUFXTCxTQUFYLEVBQXNCQyxZQUF0QixDQUFKLEVBQXlDO0FBQUE7QUFBQTs7QUFBQTs7QUFDOUM7O0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUF6RCxJQUFBQSxJQUFJLENBQUNFLEtBQUwsRUFBVzRCLElBQVg7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvQjBCLElBQUFBLFNBQXBCOztBQUNBO0FBQ0Q7O0FBRURiLEVBQUFBLFFBQVEsQ0FBQzNDLElBQUQsRUFBT3dELFNBQVAsRUFBa0JDLFlBQWxCLENBQVI7QUFDRDs7QUFFRCxTQUFTSCxPQUFULENBQWlCdEQsSUFBakIsRUFBdUJPLElBQXZCLEVBQTZCMEMsS0FBN0IsRUFBb0NhLElBQXBDLEVBQTBDO0FBQ3hDLE1BQUlOLFNBQVMsR0FBR0gsYUFBYSxDQUFDOUMsSUFBRCxDQUE3QjtBQUFBLE1BQ0lrRCxZQUFZLEdBQUdNLGNBQWMsQ0FBQ2QsS0FBRCxFQUFRTyxTQUFSLENBRGpDOztBQUVBLE1BQUlDLFlBQVksQ0FBQ08sTUFBakIsRUFBeUI7QUFBQTtBQUFBOztBQUFBOztBQUN2Qjs7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQWhFLElBQUFBLElBQUksQ0FBQ0UsS0FBTCxFQUFXNEIsSUFBWDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9CMkIsSUFBQUEsWUFBWSxDQUFDTyxNQUFqQztBQUNELEdBRkQsTUFFTztBQUNMckIsSUFBQUEsUUFBUSxDQUFDM0MsSUFBRCxFQUFPOEQsSUFBSSxHQUFHTCxZQUFILEdBQWtCRCxTQUE3QixFQUF3Q00sSUFBSSxHQUFHTixTQUFILEdBQWVDLFlBQTNELENBQVI7QUFDRDtBQUNGOztBQUVELFNBQVNkLFFBQVQsQ0FBa0IzQyxJQUFsQixFQUF3Qk8sSUFBeEIsRUFBOEIwQyxLQUE5QixFQUFxQztBQUNuQ2pELEVBQUFBLElBQUksQ0FBQzJDLFFBQUwsR0FBZ0IsSUFBaEI7QUFDQTNDLEVBQUFBLElBQUksQ0FBQ0UsS0FBTCxDQUFXNEIsSUFBWCxDQUFnQjtBQUNkYSxJQUFBQSxRQUFRLEVBQUUsSUFESTtBQUVkcEMsSUFBQUEsSUFBSSxFQUFFQSxJQUZRO0FBR2RDLElBQUFBLE1BQU0sRUFBRXlDO0FBSE0sR0FBaEI7QUFLRDs7QUFFRCxTQUFTQyxhQUFULENBQXVCbEQsSUFBdkIsRUFBNkJpRSxNQUE3QixFQUFxQ2hCLEtBQXJDLEVBQTRDO0FBQzFDLFNBQU9nQixNQUFNLENBQUNwQixNQUFQLEdBQWdCSSxLQUFLLENBQUNKLE1BQXRCLElBQWdDb0IsTUFBTSxDQUFDckQsS0FBUCxHQUFlcUQsTUFBTSxDQUFDL0QsS0FBUCxDQUFhc0IsTUFBbkUsRUFBMkU7QUFDekUsUUFBSTBDLElBQUksR0FBR0QsTUFBTSxDQUFDL0QsS0FBUCxDQUFhK0QsTUFBTSxDQUFDckQsS0FBUCxFQUFiLENBQVg7QUFDQVosSUFBQUEsSUFBSSxDQUFDRSxLQUFMLENBQVc0QixJQUFYLENBQWdCb0MsSUFBaEI7QUFDQUQsSUFBQUEsTUFBTSxDQUFDcEIsTUFBUDtBQUNEO0FBQ0Y7O0FBQ0QsU0FBU1UsY0FBVCxDQUF3QnZELElBQXhCLEVBQThCaUUsTUFBOUIsRUFBc0M7QUFDcEMsU0FBT0EsTUFBTSxDQUFDckQsS0FBUCxHQUFlcUQsTUFBTSxDQUFDL0QsS0FBUCxDQUFhc0IsTUFBbkMsRUFBMkM7QUFDekMsUUFBSTBDLElBQUksR0FBR0QsTUFBTSxDQUFDL0QsS0FBUCxDQUFhK0QsTUFBTSxDQUFDckQsS0FBUCxFQUFiLENBQVg7QUFDQVosSUFBQUEsSUFBSSxDQUFDRSxLQUFMLENBQVc0QixJQUFYLENBQWdCb0MsSUFBaEI7QUFDRDtBQUNGOztBQUVELFNBQVNiLGFBQVQsQ0FBdUJjLEtBQXZCLEVBQThCO0FBQzVCLE1BQUl4RCxHQUFHLEdBQUcsRUFBVjtBQUFBLE1BQ0l5RCxTQUFTLEdBQUdELEtBQUssQ0FBQ2pFLEtBQU4sQ0FBWWlFLEtBQUssQ0FBQ3ZELEtBQWxCLEVBQXlCLENBQXpCLENBRGhCOztBQUVBLFNBQU91RCxLQUFLLENBQUN2RCxLQUFOLEdBQWN1RCxLQUFLLENBQUNqRSxLQUFOLENBQVlzQixNQUFqQyxFQUF5QztBQUN2QyxRQUFJMEMsSUFBSSxHQUFHQyxLQUFLLENBQUNqRSxLQUFOLENBQVlpRSxLQUFLLENBQUN2RCxLQUFsQixDQUFYLENBRHVDLENBR3ZDOztBQUNBLFFBQUl3RCxTQUFTLEtBQUssR0FBZCxJQUFxQkYsSUFBSSxDQUFDLENBQUQsQ0FBSixLQUFZLEdBQXJDLEVBQTBDO0FBQ3hDRSxNQUFBQSxTQUFTLEdBQUcsR0FBWjtBQUNEOztBQUVELFFBQUlBLFNBQVMsS0FBS0YsSUFBSSxDQUFDLENBQUQsQ0FBdEIsRUFBMkI7QUFDekJ2RCxNQUFBQSxHQUFHLENBQUNtQixJQUFKLENBQVNvQyxJQUFUO0FBQ0FDLE1BQUFBLEtBQUssQ0FBQ3ZELEtBQU47QUFDRCxLQUhELE1BR087QUFDTDtBQUNEO0FBQ0Y7O0FBRUQsU0FBT0QsR0FBUDtBQUNEOztBQUNELFNBQVNvRCxjQUFULENBQXdCSSxLQUF4QixFQUErQkUsWUFBL0IsRUFBNkM7QUFDM0MsTUFBSUMsT0FBTyxHQUFHLEVBQWQ7QUFBQSxNQUNJTixNQUFNLEdBQUcsRUFEYjtBQUFBLE1BRUlPLFVBQVUsR0FBRyxDQUZqQjtBQUFBLE1BR0lDLGNBQWMsR0FBRyxLQUhyQjtBQUFBLE1BSUlDLFVBQVUsR0FBRyxLQUpqQjs7QUFLQSxTQUFPRixVQUFVLEdBQUdGLFlBQVksQ0FBQzdDLE1BQTFCLElBQ0UyQyxLQUFLLENBQUN2RCxLQUFOLEdBQWN1RCxLQUFLLENBQUNqRSxLQUFOLENBQVlzQixNQURuQyxFQUMyQztBQUN6QyxRQUFJa0QsTUFBTSxHQUFHUCxLQUFLLENBQUNqRSxLQUFOLENBQVlpRSxLQUFLLENBQUN2RCxLQUFsQixDQUFiO0FBQUEsUUFDSStELEtBQUssR0FBR04sWUFBWSxDQUFDRSxVQUFELENBRHhCLENBRHlDLENBSXpDOztBQUNBLFFBQUlJLEtBQUssQ0FBQyxDQUFELENBQUwsS0FBYSxHQUFqQixFQUFzQjtBQUNwQjtBQUNEOztBQUVESCxJQUFBQSxjQUFjLEdBQUdBLGNBQWMsSUFBSUUsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjLEdBQWpEO0FBRUFWLElBQUFBLE1BQU0sQ0FBQ2xDLElBQVAsQ0FBWTZDLEtBQVo7QUFDQUosSUFBQUEsVUFBVSxHQVorQixDQWN6QztBQUNBOztBQUNBLFFBQUlHLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBYyxHQUFsQixFQUF1QjtBQUNyQkQsTUFBQUEsVUFBVSxHQUFHLElBQWI7O0FBRUEsYUFBT0MsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjLEdBQXJCLEVBQTBCO0FBQ3hCSixRQUFBQSxPQUFPLENBQUN4QyxJQUFSLENBQWE0QyxNQUFiO0FBQ0FBLFFBQUFBLE1BQU0sR0FBR1AsS0FBSyxDQUFDakUsS0FBTixDQUFZLEVBQUVpRSxLQUFLLENBQUN2RCxLQUFwQixDQUFUO0FBQ0Q7QUFDRjs7QUFFRCxRQUFJK0QsS0FBSyxDQUFDQyxNQUFOLENBQWEsQ0FBYixNQUFvQkYsTUFBTSxDQUFDRSxNQUFQLENBQWMsQ0FBZCxDQUF4QixFQUEwQztBQUN4Q04sTUFBQUEsT0FBTyxDQUFDeEMsSUFBUixDQUFhNEMsTUFBYjtBQUNBUCxNQUFBQSxLQUFLLENBQUN2RCxLQUFOO0FBQ0QsS0FIRCxNQUdPO0FBQ0w2RCxNQUFBQSxVQUFVLEdBQUcsSUFBYjtBQUNEO0FBQ0Y7O0FBRUQsTUFBSSxDQUFDSixZQUFZLENBQUNFLFVBQUQsQ0FBWixJQUE0QixFQUE3QixFQUFpQyxDQUFqQyxNQUF3QyxHQUF4QyxJQUNHQyxjQURQLEVBQ3VCO0FBQ3JCQyxJQUFBQSxVQUFVLEdBQUcsSUFBYjtBQUNEOztBQUVELE1BQUlBLFVBQUosRUFBZ0I7QUFDZCxXQUFPSCxPQUFQO0FBQ0Q7O0FBRUQsU0FBT0MsVUFBVSxHQUFHRixZQUFZLENBQUM3QyxNQUFqQyxFQUF5QztBQUN2Q3dDLElBQUFBLE1BQU0sQ0FBQ2xDLElBQVAsQ0FBWXVDLFlBQVksQ0FBQ0UsVUFBVSxFQUFYLENBQXhCO0FBQ0Q7O0FBRUQsU0FBTztBQUNMUCxJQUFBQSxNQUFNLEVBQU5BLE1BREs7QUFFTE0sSUFBQUEsT0FBTyxFQUFQQTtBQUZLLEdBQVA7QUFJRDs7QUFFRCxTQUFTWixVQUFULENBQW9CWSxPQUFwQixFQUE2QjtBQUMzQixTQUFPQSxPQUFPLENBQUNPLE1BQVIsQ0FBZSxVQUFTQyxJQUFULEVBQWVKLE1BQWYsRUFBdUI7QUFDM0MsV0FBT0ksSUFBSSxJQUFJSixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWMsR0FBN0I7QUFDRCxHQUZNLEVBRUosSUFGSSxDQUFQO0FBR0Q7O0FBQ0QsU0FBU2Qsa0JBQVQsQ0FBNEJPLEtBQTVCLEVBQW1DWSxhQUFuQyxFQUFrREMsS0FBbEQsRUFBeUQ7QUFDdkQsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRCxLQUFwQixFQUEyQkMsQ0FBQyxFQUE1QixFQUFnQztBQUM5QixRQUFJQyxhQUFhLEdBQUdILGFBQWEsQ0FBQ0EsYUFBYSxDQUFDdkQsTUFBZCxHQUF1QndELEtBQXZCLEdBQStCQyxDQUFoQyxDQUFiLENBQWdETCxNQUFoRCxDQUF1RCxDQUF2RCxDQUFwQjs7QUFDQSxRQUFJVCxLQUFLLENBQUNqRSxLQUFOLENBQVlpRSxLQUFLLENBQUN2RCxLQUFOLEdBQWNxRSxDQUExQixNQUFpQyxNQUFNQyxhQUEzQyxFQUEwRDtBQUN4RCxhQUFPLEtBQVA7QUFDRDtBQUNGOztBQUVEZixFQUFBQSxLQUFLLENBQUN2RCxLQUFOLElBQWVvRSxLQUFmO0FBQ0EsU0FBTyxJQUFQO0FBQ0Q7O0FBRUQsU0FBUy9FLG1CQUFULENBQTZCQyxLQUE3QixFQUFvQztBQUNsQyxNQUFJQyxRQUFRLEdBQUcsQ0FBZjtBQUNBLE1BQUlDLFFBQVEsR0FBRyxDQUFmO0FBRUFGLEVBQUFBLEtBQUssQ0FBQ2lGLE9BQU4sQ0FBYyxVQUFTakIsSUFBVCxFQUFlO0FBQzNCLFFBQUksT0FBT0EsSUFBUCxLQUFnQixRQUFwQixFQUE4QjtBQUM1QixVQUFJa0IsT0FBTyxHQUFHbkYsbUJBQW1CLENBQUNpRSxJQUFJLENBQUMzRCxJQUFOLENBQWpDO0FBQ0EsVUFBSThFLFVBQVUsR0FBR3BGLG1CQUFtQixDQUFDaUUsSUFBSSxDQUFDMUQsTUFBTixDQUFwQzs7QUFFQSxVQUFJTCxRQUFRLEtBQUtFLFNBQWpCLEVBQTRCO0FBQzFCLFlBQUkrRSxPQUFPLENBQUNqRixRQUFSLEtBQXFCa0YsVUFBVSxDQUFDbEYsUUFBcEMsRUFBOEM7QUFDNUNBLFVBQUFBLFFBQVEsSUFBSWlGLE9BQU8sQ0FBQ2pGLFFBQXBCO0FBQ0QsU0FGRCxNQUVPO0FBQ0xBLFVBQUFBLFFBQVEsR0FBR0UsU0FBWDtBQUNEO0FBQ0Y7O0FBRUQsVUFBSUQsUUFBUSxLQUFLQyxTQUFqQixFQUE0QjtBQUMxQixZQUFJK0UsT0FBTyxDQUFDaEYsUUFBUixLQUFxQmlGLFVBQVUsQ0FBQ2pGLFFBQXBDLEVBQThDO0FBQzVDQSxVQUFBQSxRQUFRLElBQUlnRixPQUFPLENBQUNoRixRQUFwQjtBQUNELFNBRkQsTUFFTztBQUNMQSxVQUFBQSxRQUFRLEdBQUdDLFNBQVg7QUFDRDtBQUNGO0FBQ0YsS0FuQkQsTUFtQk87QUFDTCxVQUFJRCxRQUFRLEtBQUtDLFNBQWIsS0FBMkI2RCxJQUFJLENBQUMsQ0FBRCxDQUFKLEtBQVksR0FBWixJQUFtQkEsSUFBSSxDQUFDLENBQUQsQ0FBSixLQUFZLEdBQTFELENBQUosRUFBb0U7QUFDbEU5RCxRQUFBQSxRQUFRO0FBQ1Q7O0FBQ0QsVUFBSUQsUUFBUSxLQUFLRSxTQUFiLEtBQTJCNkQsSUFBSSxDQUFDLENBQUQsQ0FBSixLQUFZLEdBQVosSUFBbUJBLElBQUksQ0FBQyxDQUFELENBQUosS0FBWSxHQUExRCxDQUFKLEVBQW9FO0FBQ2xFL0QsUUFBQUEsUUFBUTtBQUNUO0FBQ0Y7QUFDRixHQTVCRDtBQThCQSxTQUFPO0FBQUNBLElBQUFBLFFBQVEsRUFBUkEsUUFBRDtBQUFXQyxJQUFBQSxRQUFRLEVBQVJBO0FBQVgsR0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzdHJ1Y3R1cmVkUGF0Y2h9IGZyb20gJy4vY3JlYXRlJztcbmltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXJzZSc7XG5cbmltcG9ydCB7YXJyYXlFcXVhbCwgYXJyYXlTdGFydHNXaXRofSBmcm9tICcuLi91dGlsL2FycmF5JztcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGNMaW5lQ291bnQoaHVuaykge1xuICBjb25zdCB7b2xkTGluZXMsIG5ld0xpbmVzfSA9IGNhbGNPbGROZXdMaW5lQ291bnQoaHVuay5saW5lcyk7XG5cbiAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBodW5rLm9sZExpbmVzID0gb2xkTGluZXM7XG4gIH0gZWxzZSB7XG4gICAgZGVsZXRlIGh1bmsub2xkTGluZXM7XG4gIH1cblxuICBpZiAobmV3TGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGh1bmsubmV3TGluZXMgPSBuZXdMaW5lcztcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgaHVuay5uZXdMaW5lcztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UobWluZSwgdGhlaXJzLCBiYXNlKSB7XG4gIG1pbmUgPSBsb2FkUGF0Y2gobWluZSwgYmFzZSk7XG4gIHRoZWlycyA9IGxvYWRQYXRjaCh0aGVpcnMsIGJhc2UpO1xuXG4gIGxldCByZXQgPSB7fTtcblxuICAvLyBGb3IgaW5kZXggd2UganVzdCBsZXQgaXQgcGFzcyB0aHJvdWdoIGFzIGl0IGRvZXNuJ3QgaGF2ZSBhbnkgbmVjZXNzYXJ5IG1lYW5pbmcuXG4gIC8vIExlYXZpbmcgc2FuaXR5IGNoZWNrcyBvbiB0aGlzIHRvIHRoZSBBUEkgY29uc3VtZXIgdGhhdCBtYXkga25vdyBtb3JlIGFib3V0IHRoZVxuICAvLyBtZWFuaW5nIGluIHRoZWlyIG93biBjb250ZXh0LlxuICBpZiAobWluZS5pbmRleCB8fCB0aGVpcnMuaW5kZXgpIHtcbiAgICByZXQuaW5kZXggPSBtaW5lLmluZGV4IHx8IHRoZWlycy5pbmRleDtcbiAgfVxuXG4gIGlmIChtaW5lLm5ld0ZpbGVOYW1lIHx8IHRoZWlycy5uZXdGaWxlTmFtZSkge1xuICAgIGlmICghZmlsZU5hbWVDaGFuZ2VkKG1pbmUpKSB7XG4gICAgICAvLyBObyBoZWFkZXIgb3Igbm8gY2hhbmdlIGluIG91cnMsIHVzZSB0aGVpcnMgKGFuZCBvdXJzIGlmIHRoZWlycyBkb2VzIG5vdCBleGlzdClcbiAgICAgIHJldC5vbGRGaWxlTmFtZSA9IHRoZWlycy5vbGRGaWxlTmFtZSB8fCBtaW5lLm9sZEZpbGVOYW1lO1xuICAgICAgcmV0Lm5ld0ZpbGVOYW1lID0gdGhlaXJzLm5ld0ZpbGVOYW1lIHx8IG1pbmUubmV3RmlsZU5hbWU7XG4gICAgICByZXQub2xkSGVhZGVyID0gdGhlaXJzLm9sZEhlYWRlciB8fCBtaW5lLm9sZEhlYWRlcjtcbiAgICAgIHJldC5uZXdIZWFkZXIgPSB0aGVpcnMubmV3SGVhZGVyIHx8IG1pbmUubmV3SGVhZGVyO1xuICAgIH0gZWxzZSBpZiAoIWZpbGVOYW1lQ2hhbmdlZCh0aGVpcnMpKSB7XG4gICAgICAvLyBObyBoZWFkZXIgb3Igbm8gY2hhbmdlIGluIHRoZWlycywgdXNlIG91cnNcbiAgICAgIHJldC5vbGRGaWxlTmFtZSA9IG1pbmUub2xkRmlsZU5hbWU7XG4gICAgICByZXQubmV3RmlsZU5hbWUgPSBtaW5lLm5ld0ZpbGVOYW1lO1xuICAgICAgcmV0Lm9sZEhlYWRlciA9IG1pbmUub2xkSGVhZGVyO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IG1pbmUubmV3SGVhZGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBCb3RoIGNoYW5nZWQuLi4gZmlndXJlIGl0IG91dFxuICAgICAgcmV0Lm9sZEZpbGVOYW1lID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm9sZEZpbGVOYW1lLCB0aGVpcnMub2xkRmlsZU5hbWUpO1xuICAgICAgcmV0Lm5ld0ZpbGVOYW1lID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm5ld0ZpbGVOYW1lLCB0aGVpcnMubmV3RmlsZU5hbWUpO1xuICAgICAgcmV0Lm9sZEhlYWRlciA9IHNlbGVjdEZpZWxkKHJldCwgbWluZS5vbGRIZWFkZXIsIHRoZWlycy5vbGRIZWFkZXIpO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IHNlbGVjdEZpZWxkKHJldCwgbWluZS5uZXdIZWFkZXIsIHRoZWlycy5uZXdIZWFkZXIpO1xuICAgIH1cbiAgfVxuXG4gIHJldC5odW5rcyA9IFtdO1xuXG4gIGxldCBtaW5lSW5kZXggPSAwLFxuICAgICAgdGhlaXJzSW5kZXggPSAwLFxuICAgICAgbWluZU9mZnNldCA9IDAsXG4gICAgICB0aGVpcnNPZmZzZXQgPSAwO1xuXG4gIHdoaWxlIChtaW5lSW5kZXggPCBtaW5lLmh1bmtzLmxlbmd0aCB8fCB0aGVpcnNJbmRleCA8IHRoZWlycy5odW5rcy5sZW5ndGgpIHtcbiAgICBsZXQgbWluZUN1cnJlbnQgPSBtaW5lLmh1bmtzW21pbmVJbmRleF0gfHwge29sZFN0YXJ0OiBJbmZpbml0eX0sXG4gICAgICAgIHRoZWlyc0N1cnJlbnQgPSB0aGVpcnMuaHVua3NbdGhlaXJzSW5kZXhdIHx8IHtvbGRTdGFydDogSW5maW5pdHl9O1xuXG4gICAgaWYgKGh1bmtCZWZvcmUobWluZUN1cnJlbnQsIHRoZWlyc0N1cnJlbnQpKSB7XG4gICAgICAvLyBUaGlzIHBhdGNoIGRvZXMgbm90IG92ZXJsYXAgd2l0aCBhbnkgb2YgdGhlIG90aGVycywgeWF5LlxuICAgICAgcmV0Lmh1bmtzLnB1c2goY2xvbmVIdW5rKG1pbmVDdXJyZW50LCBtaW5lT2Zmc2V0KSk7XG4gICAgICBtaW5lSW5kZXgrKztcbiAgICAgIHRoZWlyc09mZnNldCArPSBtaW5lQ3VycmVudC5uZXdMaW5lcyAtIG1pbmVDdXJyZW50Lm9sZExpbmVzO1xuICAgIH0gZWxzZSBpZiAoaHVua0JlZm9yZSh0aGVpcnNDdXJyZW50LCBtaW5lQ3VycmVudCkpIHtcbiAgICAgIC8vIFRoaXMgcGF0Y2ggZG9lcyBub3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgb3RoZXJzLCB5YXkuXG4gICAgICByZXQuaHVua3MucHVzaChjbG9uZUh1bmsodGhlaXJzQ3VycmVudCwgdGhlaXJzT2Zmc2V0KSk7XG4gICAgICB0aGVpcnNJbmRleCsrO1xuICAgICAgbWluZU9mZnNldCArPSB0aGVpcnNDdXJyZW50Lm5ld0xpbmVzIC0gdGhlaXJzQ3VycmVudC5vbGRMaW5lcztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT3ZlcmxhcCwgbWVyZ2UgYXMgYmVzdCB3ZSBjYW5cbiAgICAgIGxldCBtZXJnZWRIdW5rID0ge1xuICAgICAgICBvbGRTdGFydDogTWF0aC5taW4obWluZUN1cnJlbnQub2xkU3RhcnQsIHRoZWlyc0N1cnJlbnQub2xkU3RhcnQpLFxuICAgICAgICBvbGRMaW5lczogMCxcbiAgICAgICAgbmV3U3RhcnQ6IE1hdGgubWluKG1pbmVDdXJyZW50Lm5ld1N0YXJ0ICsgbWluZU9mZnNldCwgdGhlaXJzQ3VycmVudC5vbGRTdGFydCArIHRoZWlyc09mZnNldCksXG4gICAgICAgIG5ld0xpbmVzOiAwLFxuICAgICAgICBsaW5lczogW11cbiAgICAgIH07XG4gICAgICBtZXJnZUxpbmVzKG1lcmdlZEh1bmssIG1pbmVDdXJyZW50Lm9sZFN0YXJ0LCBtaW5lQ3VycmVudC5saW5lcywgdGhlaXJzQ3VycmVudC5vbGRTdGFydCwgdGhlaXJzQ3VycmVudC5saW5lcyk7XG4gICAgICB0aGVpcnNJbmRleCsrO1xuICAgICAgbWluZUluZGV4Kys7XG5cbiAgICAgIHJldC5odW5rcy5wdXNoKG1lcmdlZEh1bmspO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGxvYWRQYXRjaChwYXJhbSwgYmFzZSkge1xuICBpZiAodHlwZW9mIHBhcmFtID09PSAnc3RyaW5nJykge1xuICAgIGlmICgoL15AQC9tKS50ZXN0KHBhcmFtKSB8fCAoKC9eSW5kZXg6L20pLnRlc3QocGFyYW0pKSkge1xuICAgICAgcmV0dXJuIHBhcnNlUGF0Y2gocGFyYW0pWzBdO1xuICAgIH1cblxuICAgIGlmICghYmFzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNdXN0IHByb3ZpZGUgYSBiYXNlIHJlZmVyZW5jZSBvciBwYXNzIGluIGEgcGF0Y2gnKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cnVjdHVyZWRQYXRjaCh1bmRlZmluZWQsIHVuZGVmaW5lZCwgYmFzZSwgcGFyYW0pO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtO1xufVxuXG5mdW5jdGlvbiBmaWxlTmFtZUNoYW5nZWQocGF0Y2gpIHtcbiAgcmV0dXJuIHBhdGNoLm5ld0ZpbGVOYW1lICYmIHBhdGNoLm5ld0ZpbGVOYW1lICE9PSBwYXRjaC5vbGRGaWxlTmFtZTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0RmllbGQoaW5kZXgsIG1pbmUsIHRoZWlycykge1xuICBpZiAobWluZSA9PT0gdGhlaXJzKSB7XG4gICAgcmV0dXJuIG1pbmU7XG4gIH0gZWxzZSB7XG4gICAgaW5kZXguY29uZmxpY3QgPSB0cnVlO1xuICAgIHJldHVybiB7bWluZSwgdGhlaXJzfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBodW5rQmVmb3JlKHRlc3QsIGNoZWNrKSB7XG4gIHJldHVybiB0ZXN0Lm9sZFN0YXJ0IDwgY2hlY2sub2xkU3RhcnRcbiAgICAmJiAodGVzdC5vbGRTdGFydCArIHRlc3Qub2xkTGluZXMpIDwgY2hlY2sub2xkU3RhcnQ7XG59XG5cbmZ1bmN0aW9uIGNsb25lSHVuayhodW5rLCBvZmZzZXQpIHtcbiAgcmV0dXJuIHtcbiAgICBvbGRTdGFydDogaHVuay5vbGRTdGFydCwgb2xkTGluZXM6IGh1bmsub2xkTGluZXMsXG4gICAgbmV3U3RhcnQ6IGh1bmsubmV3U3RhcnQgKyBvZmZzZXQsIG5ld0xpbmVzOiBodW5rLm5ld0xpbmVzLFxuICAgIGxpbmVzOiBodW5rLmxpbmVzXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1lcmdlTGluZXMoaHVuaywgbWluZU9mZnNldCwgbWluZUxpbmVzLCB0aGVpck9mZnNldCwgdGhlaXJMaW5lcykge1xuICAvLyBUaGlzIHdpbGwgZ2VuZXJhbGx5IHJlc3VsdCBpbiBhIGNvbmZsaWN0ZWQgaHVuaywgYnV0IHRoZXJlIGFyZSBjYXNlcyB3aGVyZSB0aGUgY29udGV4dFxuICAvLyBpcyB0aGUgb25seSBvdmVybGFwIHdoZXJlIHdlIGNhbiBzdWNjZXNzZnVsbHkgbWVyZ2UgdGhlIGNvbnRlbnQgaGVyZS5cbiAgbGV0IG1pbmUgPSB7b2Zmc2V0OiBtaW5lT2Zmc2V0LCBsaW5lczogbWluZUxpbmVzLCBpbmRleDogMH0sXG4gICAgICB0aGVpciA9IHtvZmZzZXQ6IHRoZWlyT2Zmc2V0LCBsaW5lczogdGhlaXJMaW5lcywgaW5kZXg6IDB9O1xuXG4gIC8vIEhhbmRsZSBhbnkgbGVhZGluZyBjb250ZW50XG4gIGluc2VydExlYWRpbmcoaHVuaywgbWluZSwgdGhlaXIpO1xuICBpbnNlcnRMZWFkaW5nKGh1bmssIHRoZWlyLCBtaW5lKTtcblxuICAvLyBOb3cgaW4gdGhlIG92ZXJsYXAgY29udGVudC4gU2NhbiB0aHJvdWdoIGFuZCBzZWxlY3QgdGhlIGJlc3QgY2hhbmdlcyBmcm9tIGVhY2guXG4gIHdoaWxlIChtaW5lLmluZGV4IDwgbWluZS5saW5lcy5sZW5ndGggJiYgdGhlaXIuaW5kZXggPCB0aGVpci5saW5lcy5sZW5ndGgpIHtcbiAgICBsZXQgbWluZUN1cnJlbnQgPSBtaW5lLmxpbmVzW21pbmUuaW5kZXhdLFxuICAgICAgICB0aGVpckN1cnJlbnQgPSB0aGVpci5saW5lc1t0aGVpci5pbmRleF07XG5cbiAgICBpZiAoKG1pbmVDdXJyZW50WzBdID09PSAnLScgfHwgbWluZUN1cnJlbnRbMF0gPT09ICcrJylcbiAgICAgICAgJiYgKHRoZWlyQ3VycmVudFswXSA9PT0gJy0nIHx8IHRoZWlyQ3VycmVudFswXSA9PT0gJysnKSkge1xuICAgICAgLy8gQm90aCBtb2RpZmllZCAuLi5cbiAgICAgIG11dHVhbENoYW5nZShodW5rLCBtaW5lLCB0aGVpcik7XG4gICAgfSBlbHNlIGlmIChtaW5lQ3VycmVudFswXSA9PT0gJysnICYmIHRoZWlyQ3VycmVudFswXSA9PT0gJyAnKSB7XG4gICAgICAvLyBNaW5lIGluc2VydGVkXG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIGNvbGxlY3RDaGFuZ2UobWluZSkpO1xuICAgIH0gZWxzZSBpZiAodGhlaXJDdXJyZW50WzBdID09PSAnKycgJiYgbWluZUN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gVGhlaXJzIGluc2VydGVkXG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIGNvbGxlY3RDaGFuZ2UodGhlaXIpKTtcbiAgICB9IGVsc2UgaWYgKG1pbmVDdXJyZW50WzBdID09PSAnLScgJiYgdGhlaXJDdXJyZW50WzBdID09PSAnICcpIHtcbiAgICAgIC8vIE1pbmUgcmVtb3ZlZCBvciBlZGl0ZWRcbiAgICAgIHJlbW92YWwoaHVuaywgbWluZSwgdGhlaXIpO1xuICAgIH0gZWxzZSBpZiAodGhlaXJDdXJyZW50WzBdID09PSAnLScgJiYgbWluZUN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gVGhlaXIgcmVtb3ZlZCBvciBlZGl0ZWRcbiAgICAgIHJlbW92YWwoaHVuaywgdGhlaXIsIG1pbmUsIHRydWUpO1xuICAgIH0gZWxzZSBpZiAobWluZUN1cnJlbnQgPT09IHRoZWlyQ3VycmVudCkge1xuICAgICAgLy8gQ29udGV4dCBpZGVudGl0eVxuICAgICAgaHVuay5saW5lcy5wdXNoKG1pbmVDdXJyZW50KTtcbiAgICAgIG1pbmUuaW5kZXgrKztcbiAgICAgIHRoZWlyLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENvbnRleHQgbWlzbWF0Y2hcbiAgICAgIGNvbmZsaWN0KGh1bmssIGNvbGxlY3RDaGFuZ2UobWluZSksIGNvbGxlY3RDaGFuZ2UodGhlaXIpKTtcbiAgICB9XG4gIH1cblxuICAvLyBOb3cgcHVzaCBhbnl0aGluZyB0aGF0IG1heSBiZSByZW1haW5pbmdcbiAgaW5zZXJ0VHJhaWxpbmcoaHVuaywgbWluZSk7XG4gIGluc2VydFRyYWlsaW5nKGh1bmssIHRoZWlyKTtcblxuICBjYWxjTGluZUNvdW50KGh1bmspO1xufVxuXG5mdW5jdGlvbiBtdXR1YWxDaGFuZ2UoaHVuaywgbWluZSwgdGhlaXIpIHtcbiAgbGV0IG15Q2hhbmdlcyA9IGNvbGxlY3RDaGFuZ2UobWluZSksXG4gICAgICB0aGVpckNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKHRoZWlyKTtcblxuICBpZiAoYWxsUmVtb3ZlcyhteUNoYW5nZXMpICYmIGFsbFJlbW92ZXModGhlaXJDaGFuZ2VzKSkge1xuICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgcmVtb3ZlIGNoYW5nZXMgdGhhdCBhcmUgc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyXG4gICAgaWYgKGFycmF5U3RhcnRzV2l0aChteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcylcbiAgICAgICAgJiYgc2tpcFJlbW92ZVN1cGVyc2V0KHRoZWlyLCBteUNoYW5nZXMsIG15Q2hhbmdlcy5sZW5ndGggLSB0aGVpckNoYW5nZXMubGVuZ3RoKSkge1xuICAgICAgaHVuay5saW5lcy5wdXNoKC4uLiBteUNoYW5nZXMpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoYXJyYXlTdGFydHNXaXRoKHRoZWlyQ2hhbmdlcywgbXlDaGFuZ2VzKVxuICAgICAgICAmJiBza2lwUmVtb3ZlU3VwZXJzZXQobWluZSwgdGhlaXJDaGFuZ2VzLCB0aGVpckNoYW5nZXMubGVuZ3RoIC0gbXlDaGFuZ2VzLmxlbmd0aCkpIHtcbiAgICAgIGh1bmsubGluZXMucHVzaCguLi4gdGhlaXJDaGFuZ2VzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0gZWxzZSBpZiAoYXJyYXlFcXVhbChteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcykpIHtcbiAgICBodW5rLmxpbmVzLnB1c2goLi4uIG15Q2hhbmdlcyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uZmxpY3QoaHVuaywgbXlDaGFuZ2VzLCB0aGVpckNoYW5nZXMpO1xufVxuXG5mdW5jdGlvbiByZW1vdmFsKGh1bmssIG1pbmUsIHRoZWlyLCBzd2FwKSB7XG4gIGxldCBteUNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKG1pbmUpLFxuICAgICAgdGhlaXJDaGFuZ2VzID0gY29sbGVjdENvbnRleHQodGhlaXIsIG15Q2hhbmdlcyk7XG4gIGlmICh0aGVpckNoYW5nZXMubWVyZ2VkKSB7XG4gICAgaHVuay5saW5lcy5wdXNoKC4uLiB0aGVpckNoYW5nZXMubWVyZ2VkKTtcbiAgfSBlbHNlIHtcbiAgICBjb25mbGljdChodW5rLCBzd2FwID8gdGhlaXJDaGFuZ2VzIDogbXlDaGFuZ2VzLCBzd2FwID8gbXlDaGFuZ2VzIDogdGhlaXJDaGFuZ2VzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb25mbGljdChodW5rLCBtaW5lLCB0aGVpcikge1xuICBodW5rLmNvbmZsaWN0ID0gdHJ1ZTtcbiAgaHVuay5saW5lcy5wdXNoKHtcbiAgICBjb25mbGljdDogdHJ1ZSxcbiAgICBtaW5lOiBtaW5lLFxuICAgIHRoZWlyczogdGhlaXJcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGluc2VydExlYWRpbmcoaHVuaywgaW5zZXJ0LCB0aGVpcikge1xuICB3aGlsZSAoaW5zZXJ0Lm9mZnNldCA8IHRoZWlyLm9mZnNldCAmJiBpbnNlcnQuaW5kZXggPCBpbnNlcnQubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGxpbmUgPSBpbnNlcnQubGluZXNbaW5zZXJ0LmluZGV4KytdO1xuICAgIGh1bmsubGluZXMucHVzaChsaW5lKTtcbiAgICBpbnNlcnQub2Zmc2V0Kys7XG4gIH1cbn1cbmZ1bmN0aW9uIGluc2VydFRyYWlsaW5nKGh1bmssIGluc2VydCkge1xuICB3aGlsZSAoaW5zZXJ0LmluZGV4IDwgaW5zZXJ0LmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gaW5zZXJ0LmxpbmVzW2luc2VydC5pbmRleCsrXTtcbiAgICBodW5rLmxpbmVzLnB1c2gobGluZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29sbGVjdENoYW5nZShzdGF0ZSkge1xuICBsZXQgcmV0ID0gW10sXG4gICAgICBvcGVyYXRpb24gPSBzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleF1bMF07XG4gIHdoaWxlIChzdGF0ZS5pbmRleCA8IHN0YXRlLmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gc3RhdGUubGluZXNbc3RhdGUuaW5kZXhdO1xuXG4gICAgLy8gR3JvdXAgYWRkaXRpb25zIHRoYXQgYXJlIGltbWVkaWF0ZWx5IGFmdGVyIHN1YnRyYWN0aW9ucyBhbmQgdHJlYXQgdGhlbSBhcyBvbmUgXCJhdG9taWNcIiBtb2RpZnkgY2hhbmdlLlxuICAgIGlmIChvcGVyYXRpb24gPT09ICctJyAmJiBsaW5lWzBdID09PSAnKycpIHtcbiAgICAgIG9wZXJhdGlvbiA9ICcrJztcbiAgICB9XG5cbiAgICBpZiAob3BlcmF0aW9uID09PSBsaW5lWzBdKSB7XG4gICAgICByZXQucHVzaChsaW5lKTtcbiAgICAgIHN0YXRlLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5mdW5jdGlvbiBjb2xsZWN0Q29udGV4dChzdGF0ZSwgbWF0Y2hDaGFuZ2VzKSB7XG4gIGxldCBjaGFuZ2VzID0gW10sXG4gICAgICBtZXJnZWQgPSBbXSxcbiAgICAgIG1hdGNoSW5kZXggPSAwLFxuICAgICAgY29udGV4dENoYW5nZXMgPSBmYWxzZSxcbiAgICAgIGNvbmZsaWN0ZWQgPSBmYWxzZTtcbiAgd2hpbGUgKG1hdGNoSW5kZXggPCBtYXRjaENoYW5nZXMubGVuZ3RoXG4gICAgICAgICYmIHN0YXRlLmluZGV4IDwgc3RhdGUubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGNoYW5nZSA9IHN0YXRlLmxpbmVzW3N0YXRlLmluZGV4XSxcbiAgICAgICAgbWF0Y2ggPSBtYXRjaENoYW5nZXNbbWF0Y2hJbmRleF07XG5cbiAgICAvLyBPbmNlIHdlJ3ZlIGhpdCBvdXIgYWRkLCB0aGVuIHdlIGFyZSBkb25lXG4gICAgaWYgKG1hdGNoWzBdID09PSAnKycpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnRleHRDaGFuZ2VzID0gY29udGV4dENoYW5nZXMgfHwgY2hhbmdlWzBdICE9PSAnICc7XG5cbiAgICBtZXJnZWQucHVzaChtYXRjaCk7XG4gICAgbWF0Y2hJbmRleCsrO1xuXG4gICAgLy8gQ29uc3VtZSBhbnkgYWRkaXRpb25zIGluIHRoZSBvdGhlciBibG9jayBhcyBhIGNvbmZsaWN0IHRvIGF0dGVtcHRcbiAgICAvLyB0byBwdWxsIGluIHRoZSByZW1haW5pbmcgY29udGV4dCBhZnRlciB0aGlzXG4gICAgaWYgKGNoYW5nZVswXSA9PT0gJysnKSB7XG4gICAgICBjb25mbGljdGVkID0gdHJ1ZTtcblxuICAgICAgd2hpbGUgKGNoYW5nZVswXSA9PT0gJysnKSB7XG4gICAgICAgIGNoYW5nZXMucHVzaChjaGFuZ2UpO1xuICAgICAgICBjaGFuZ2UgPSBzdGF0ZS5saW5lc1srK3N0YXRlLmluZGV4XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobWF0Y2guc3Vic3RyKDEpID09PSBjaGFuZ2Uuc3Vic3RyKDEpKSB7XG4gICAgICBjaGFuZ2VzLnB1c2goY2hhbmdlKTtcbiAgICAgIHN0YXRlLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICgobWF0Y2hDaGFuZ2VzW21hdGNoSW5kZXhdIHx8ICcnKVswXSA9PT0gJysnXG4gICAgICAmJiBjb250ZXh0Q2hhbmdlcykge1xuICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGNvbmZsaWN0ZWQpIHtcbiAgICByZXR1cm4gY2hhbmdlcztcbiAgfVxuXG4gIHdoaWxlIChtYXRjaEluZGV4IDwgbWF0Y2hDaGFuZ2VzLmxlbmd0aCkge1xuICAgIG1lcmdlZC5wdXNoKG1hdGNoQ2hhbmdlc1ttYXRjaEluZGV4KytdKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVyZ2VkLFxuICAgIGNoYW5nZXNcbiAgfTtcbn1cblxuZnVuY3Rpb24gYWxsUmVtb3ZlcyhjaGFuZ2VzKSB7XG4gIHJldHVybiBjaGFuZ2VzLnJlZHVjZShmdW5jdGlvbihwcmV2LCBjaGFuZ2UpIHtcbiAgICByZXR1cm4gcHJldiAmJiBjaGFuZ2VbMF0gPT09ICctJztcbiAgfSwgdHJ1ZSk7XG59XG5mdW5jdGlvbiBza2lwUmVtb3ZlU3VwZXJzZXQoc3RhdGUsIHJlbW92ZUNoYW5nZXMsIGRlbHRhKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGVsdGE7IGkrKykge1xuICAgIGxldCBjaGFuZ2VDb250ZW50ID0gcmVtb3ZlQ2hhbmdlc1tyZW1vdmVDaGFuZ2VzLmxlbmd0aCAtIGRlbHRhICsgaV0uc3Vic3RyKDEpO1xuICAgIGlmIChzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleCArIGldICE9PSAnICcgKyBjaGFuZ2VDb250ZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc3RhdGUuaW5kZXggKz0gZGVsdGE7XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmVzKSB7XG4gIGxldCBvbGRMaW5lcyA9IDA7XG4gIGxldCBuZXdMaW5lcyA9IDA7XG5cbiAgbGluZXMuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7XG4gICAgaWYgKHR5cGVvZiBsaW5lICE9PSAnc3RyaW5nJykge1xuICAgICAgbGV0IG15Q291bnQgPSBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmUubWluZSk7XG4gICAgICBsZXQgdGhlaXJDb3VudCA9IGNhbGNPbGROZXdMaW5lQ291bnQobGluZS50aGVpcnMpO1xuXG4gICAgICBpZiAob2xkTGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAobXlDb3VudC5vbGRMaW5lcyA9PT0gdGhlaXJDb3VudC5vbGRMaW5lcykge1xuICAgICAgICAgIG9sZExpbmVzICs9IG15Q291bnQub2xkTGluZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2xkTGluZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5ld0xpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKG15Q291bnQubmV3TGluZXMgPT09IHRoZWlyQ291bnQubmV3TGluZXMpIHtcbiAgICAgICAgICBuZXdMaW5lcyArPSBteUNvdW50Lm5ld0xpbmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0xpbmVzID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZXdMaW5lcyAhPT0gdW5kZWZpbmVkICYmIChsaW5lWzBdID09PSAnKycgfHwgbGluZVswXSA9PT0gJyAnKSkge1xuICAgICAgICBuZXdMaW5lcysrO1xuICAgICAgfVxuICAgICAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQgJiYgKGxpbmVbMF0gPT09ICctJyB8fCBsaW5lWzBdID09PSAnICcpKSB7XG4gICAgICAgIG9sZExpbmVzKys7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4ge29sZExpbmVzLCBuZXdMaW5lc307XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parsePatch = parsePatch;\n\n/*istanbul ignore end*/\nfunction parsePatch(uniDiff) {\n /*istanbul ignore start*/\n var\n /*istanbul ignore end*/\n options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var diffstr = uniDiff.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/),\n delimiters = uniDiff.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [],\n list = [],\n i = 0;\n\n function parseIndex() {\n var index = {};\n list.push(index); // Parse diff metadata\n\n while (i < diffstr.length) {\n var line = diffstr[i]; // File header found, end parsing diff metadata\n\n if (/^(\\-\\-\\-|\\+\\+\\+|@@)\\s/.test(line)) {\n break;\n } // Diff index\n\n\n var header = /^(?:Index:|diff(?: -r \\w+)+)\\s+(.+?)\\s*$/.exec(line);\n\n if (header) {\n index.index = header[1];\n }\n\n i++;\n } // Parse file headers if they are defined. Unified diff requires them, but\n // there's no technical issues to have an isolated hunk without file header\n\n\n parseFileHeader(index);\n parseFileHeader(index); // Parse hunks\n\n index.hunks = [];\n\n while (i < diffstr.length) {\n var _line = diffstr[i];\n\n if (/^(Index:|diff|\\-\\-\\-|\\+\\+\\+)\\s/.test(_line)) {\n break;\n } else if (/^@@/.test(_line)) {\n index.hunks.push(parseHunk());\n } else if (_line && options.strict) {\n // Ignore unexpected content unless in strict mode\n throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));\n } else {\n i++;\n }\n }\n } // Parses the --- and +++ headers, if none are found, no lines\n // are consumed.\n\n\n function parseFileHeader(index) {\n var fileHeader = /^(---|\\+\\+\\+)\\s+(.*)$/.exec(diffstr[i]);\n\n if (fileHeader) {\n var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';\n var data = fileHeader[2].split('\\t', 2);\n var fileName = data[0].replace(/\\\\\\\\/g, '\\\\');\n\n if (/^\".*\"$/.test(fileName)) {\n fileName = fileName.substr(1, fileName.length - 2);\n }\n\n index[keyPrefix + 'FileName'] = fileName;\n index[keyPrefix + 'Header'] = (data[1] || '').trim();\n i++;\n }\n } // Parses a hunk\n // This assumes that we are at the start of a hunk.\n\n\n function parseHunk() {\n var chunkHeaderIndex = i,\n chunkHeaderLine = diffstr[i++],\n chunkHeader = chunkHeaderLine.split(/@@ -(\\d+)(?:,(\\d+))? \\+(\\d+)(?:,(\\d+))? @@/);\n var hunk = {\n oldStart: +chunkHeader[1],\n oldLines: typeof chunkHeader[2] === 'undefined' ? 1 : +chunkHeader[2],\n newStart: +chunkHeader[3],\n newLines: typeof chunkHeader[4] === 'undefined' ? 1 : +chunkHeader[4],\n lines: [],\n linedelimiters: []\n }; // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n\n if (hunk.oldLines === 0) {\n hunk.oldStart += 1;\n }\n\n if (hunk.newLines === 0) {\n hunk.newStart += 1;\n }\n\n var addCount = 0,\n removeCount = 0;\n\n for (; i < diffstr.length; i++) {\n // Lines starting with '---' could be mistaken for the \"remove line\" operation\n // But they could be the header for the next file. Therefore prune such cases out.\n if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) {\n break;\n }\n\n var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0];\n\n if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\\\') {\n hunk.lines.push(diffstr[i]);\n hunk.linedelimiters.push(delimiters[i] || '\\n');\n\n if (operation === '+') {\n addCount++;\n } else if (operation === '-') {\n removeCount++;\n } else if (operation === ' ') {\n addCount++;\n removeCount++;\n }\n } else {\n break;\n }\n } // Handle the empty block count case\n\n\n if (!addCount && hunk.newLines === 1) {\n hunk.newLines = 0;\n }\n\n if (!removeCount && hunk.oldLines === 1) {\n hunk.oldLines = 0;\n } // Perform optional sanity checking\n\n\n if (options.strict) {\n if (addCount !== hunk.newLines) {\n throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n }\n\n if (removeCount !== hunk.oldLines) {\n throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n }\n }\n\n return hunk;\n }\n\n while (i < diffstr.length) {\n parseIndex();\n }\n\n return list;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9wYXJzZS5qcyJdLCJuYW1lcyI6WyJwYXJzZVBhdGNoIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJkaWZmc3RyIiwic3BsaXQiLCJkZWxpbWl0ZXJzIiwibWF0Y2giLCJsaXN0IiwiaSIsInBhcnNlSW5kZXgiLCJpbmRleCIsInB1c2giLCJsZW5ndGgiLCJsaW5lIiwidGVzdCIsImhlYWRlciIsImV4ZWMiLCJwYXJzZUZpbGVIZWFkZXIiLCJodW5rcyIsInBhcnNlSHVuayIsInN0cmljdCIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImZpbGVIZWFkZXIiLCJrZXlQcmVmaXgiLCJkYXRhIiwiZmlsZU5hbWUiLCJyZXBsYWNlIiwic3Vic3RyIiwidHJpbSIsImNodW5rSGVhZGVySW5kZXgiLCJjaHVua0hlYWRlckxpbmUiLCJjaHVua0hlYWRlciIsImh1bmsiLCJvbGRTdGFydCIsIm9sZExpbmVzIiwibmV3U3RhcnQiLCJuZXdMaW5lcyIsImxpbmVzIiwibGluZWRlbGltaXRlcnMiLCJhZGRDb3VudCIsInJlbW92ZUNvdW50IiwiaW5kZXhPZiIsIm9wZXJhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsVUFBVCxDQUFvQkMsT0FBcEIsRUFBMkM7QUFBQTtBQUFBO0FBQUE7QUFBZEMsRUFBQUEsT0FBYyx1RUFBSixFQUFJO0FBQ2hELE1BQUlDLE9BQU8sR0FBR0YsT0FBTyxDQUFDRyxLQUFSLENBQWMscUJBQWQsQ0FBZDtBQUFBLE1BQ0lDLFVBQVUsR0FBR0osT0FBTyxDQUFDSyxLQUFSLENBQWMsc0JBQWQsS0FBeUMsRUFEMUQ7QUFBQSxNQUVJQyxJQUFJLEdBQUcsRUFGWDtBQUFBLE1BR0lDLENBQUMsR0FBRyxDQUhSOztBQUtBLFdBQVNDLFVBQVQsR0FBc0I7QUFDcEIsUUFBSUMsS0FBSyxHQUFHLEVBQVo7QUFDQUgsSUFBQUEsSUFBSSxDQUFDSSxJQUFMLENBQVVELEtBQVYsRUFGb0IsQ0FJcEI7O0FB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QUwsS0FBa0IsQ0FBbkMsRUFBc0M7QUFDcENKLE1BQUFBLElBQUksQ0FBQ0ksUUFBTCxHQUFnQixDQUFoQjtBQUNEOztBQUNELFFBQUksQ0FBQ0ksV0FBRCxJQUFnQlIsSUFBSSxDQUFDRSxRQUFMLEtBQWtCLENBQXRDLEVBQXlDO0FBQ3ZDRixNQUFBQSxJQUFJLENBQUNFLFFBQUwsR0FBZ0IsQ0FBaEI7QUFDRCxLQTVEa0IsQ0E4RG5COzs7QUFDQSxRQUFJbEMsT0FBTyxDQUFDa0IsTUFBWixFQUFvQjtBQUNsQixVQUFJcUIsUUFBUSxLQUFLUCxJQUFJLENBQUNJLFFBQXRCLEVBQWdDO0FBQzlCLGNBQU0sSUFBSWpCLEtBQUosQ0FBVSxzREFBc0RVLGdCQUFnQixHQUFHLENBQXpFLENBQVYsQ0FBTjtBQUNEOztBQUNELFVBQUlXLFdBQVcsS0FBS1IsSUFBSSxDQUFDRSxRQUF6QixFQUFtQztBQUNqQyxjQUFNLElBQUlmLEtBQUosQ0FBVSx3REFBd0RVLGdCQUFnQixHQUFHLENBQTNFLENBQVYsQ0FBTjtBQUNEO0FBQ0Y7O0FBRUQsV0FBT0csSUFBUDtBQUNEOztBQUVELFNBQU8xQixDQUFDLEdBQUdMLE9BQU8sQ0FBQ1MsTUFBbkIsRUFBMkI7QUFDekJILElBQUFBLFVBQVU7QUFDWDs7QUFFRCxTQUFPRixJQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcGFyc2VQYXRjaCh1bmlEaWZmLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IGRpZmZzdHIgPSB1bmlEaWZmLnNwbGl0KC9cXHJcXG58W1xcblxcdlxcZlxcclxceDg1XS8pLFxuICAgICAgZGVsaW1pdGVycyA9IHVuaURpZmYubWF0Y2goL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdL2cpIHx8IFtdLFxuICAgICAgbGlzdCA9IFtdLFxuICAgICAgaSA9IDA7XG5cbiAgZnVuY3Rpb24gcGFyc2VJbmRleCgpIHtcbiAgICBsZXQgaW5kZXggPSB7fTtcbiAgICBsaXN0LnB1c2goaW5kZXgpO1xuXG4gICAgLy8gUGFyc2UgZGlmZiBtZXRhZGF0YVxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgLy8gRmlsZSBoZWFkZXIgZm91bmQsIGVuZCBwYXJzaW5nIGRpZmYgbWV0YWRhdGFcbiAgICAgIGlmICgoL14oXFwtXFwtXFwtfFxcK1xcK1xcK3xAQClcXHMvKS50ZXN0KGxpbmUpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBEaWZmIGluZGV4XG4gICAgICBsZXQgaGVhZGVyID0gKC9eKD86SW5kZXg6fGRpZmYoPzogLXIgXFx3KykrKVxccysoLis/KVxccyokLykuZXhlYyhsaW5lKTtcbiAgICAgIGlmIChoZWFkZXIpIHtcbiAgICAgICAgaW5kZXguaW5kZXggPSBoZWFkZXJbMV07XG4gICAgICB9XG5cbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICAvLyBQYXJzZSBmaWxlIGhlYWRlcnMgaWYgdGhleSBhcmUgZGVmaW5lZC4gVW5pZmllZCBkaWZmIHJlcXVpcmVzIHRoZW0sIGJ1dFxuICAgIC8vIHRoZXJlJ3Mgbm8gdGVjaG5pY2FsIGlzc3VlcyB0byBoYXZlIGFuIGlzb2xhdGVkIGh1bmsgd2l0aG91dCBmaWxlIGhlYWRlclxuICAgIHBhcnNlRmlsZUhlYWRlcihpbmRleCk7XG4gICAgcGFyc2VGaWxlSGVhZGVyKGluZGV4KTtcblxuICAgIC8vIFBhcnNlIGh1bmtzXG4gICAgaW5kZXguaHVua3MgPSBbXTtcblxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgaWYgKCgvXihJbmRleDp8ZGlmZnxcXC1cXC1cXC18XFwrXFwrXFwrKVxccy8pLnRlc3QobGluZSkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2UgaWYgKCgvXkBALykudGVzdChsaW5lKSkge1xuICAgICAgICBpbmRleC5odW5rcy5wdXNoKHBhcnNlSHVuaygpKTtcbiAgICAgIH0gZWxzZSBpZiAobGluZSAmJiBvcHRpb25zLnN0cmljdCkge1xuICAgICAgICAvLyBJZ25vcmUgdW5leHBlY3RlZCBjb250ZW50IHVubGVzcyBpbiBzdHJpY3QgbW9kZVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbGluZSAnICsgKGkgKyAxKSArICcgJyArIEpTT04uc3RyaW5naWZ5KGxpbmUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGkrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQYXJzZXMgdGhlIC0tLSBhbmQgKysrIGhlYWRlcnMsIGlmIG5vbmUgYXJlIGZvdW5kLCBubyBsaW5lc1xuICAvLyBhcmUgY29uc3VtZWQuXG4gIGZ1bmN0aW9uIHBhcnNlRmlsZUhlYWRlcihpbmRleCkge1xuICAgIGNvbnN0IGZpbGVIZWFkZXIgPSAoL14oLS0tfFxcK1xcK1xcKylcXHMrKC4qKSQvKS5leGVjKGRpZmZzdHJbaV0pO1xuICAgIGlmIChmaWxlSGVhZGVyKSB7XG4gICAgICBsZXQga2V5UHJlZml4ID0gZmlsZUhlYWRlclsxXSA9PT0gJy0tLScgPyAnb2xkJyA6ICduZXcnO1xuICAgICAgY29uc3QgZGF0YSA9IGZpbGVIZWFkZXJbMl0uc3BsaXQoJ1xcdCcsIDIpO1xuICAgICAgbGV0IGZpbGVOYW1lID0gZGF0YVswXS5yZXBsYWNlKC9cXFxcXFxcXC9nLCAnXFxcXCcpO1xuICAgICAgaWYgKCgvXlwiLipcIiQvKS50ZXN0KGZpbGVOYW1lKSkge1xuICAgICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lLnN1YnN0cigxLCBmaWxlTmFtZS5sZW5ndGggLSAyKTtcbiAgICAgIH1cbiAgICAgIGluZGV4W2tleVByZWZpeCArICdGaWxlTmFtZSddID0gZmlsZU5hbWU7XG4gICAgICBpbmRleFtrZXlQcmVmaXggKyAnSGVhZGVyJ10gPSAoZGF0YVsxXSB8fCAnJykudHJpbSgpO1xuXG4gICAgICBpKys7XG4gICAgfVxuICB9XG5cbiAgLy8gUGFyc2VzIGEgaHVua1xuICAvLyBUaGlzIGFzc3VtZXMgdGhhdCB3ZSBhcmUgYXQgdGhlIHN0YXJ0IG9mIGEgaHVuay5cbiAgZnVuY3Rpb24gcGFyc2VIdW5rKCkge1xuICAgIGxldCBjaHVua0hlYWRlckluZGV4ID0gaSxcbiAgICAgICAgY2h1bmtIZWFkZXJMaW5lID0gZGlmZnN0cltpKytdLFxuICAgICAgICBjaHVua0hlYWRlciA9IGNodW5rSGVhZGVyTGluZS5zcGxpdCgvQEAgLShcXGQrKSg/OiwoXFxkKykpPyBcXCsoXFxkKykoPzosKFxcZCspKT8gQEAvKTtcblxuICAgIGxldCBodW5rID0ge1xuICAgICAgb2xkU3RhcnQ6ICtjaHVua0hlYWRlclsxXSxcbiAgICAgIG9sZExpbmVzOiB0eXBlb2YgY2h1bmtIZWFkZXJbMl0gPT09ICd1bmRlZmluZWQnID8gMSA6ICtjaHVua0hlYWRlclsyXSxcbiAgICAgIG5ld1N0YXJ0OiArY2h1bmtIZWFkZXJbM10sXG4gICAgICBuZXdMaW5lczogdHlwZW9mIGNodW5rSGVhZGVyWzRdID09PSAndW5kZWZpbmVkJyA/IDEgOiArY2h1bmtIZWFkZXJbNF0sXG4gICAgICBsaW5lczogW10sXG4gICAgICBsaW5lZGVsaW1pdGVyczogW11cbiAgICB9O1xuXG4gICAgLy8gVW5pZmllZCBEaWZmIEZvcm1hdCBxdWlyazogSWYgdGhlIGNodW5rIHNpemUgaXMgMCxcbiAgICAvLyB0aGUgZmlyc3QgbnVtYmVyIGlzIG9uZSBsb3dlciB0aGFuIG9uZSB3b3VsZCBleHBlY3QuXG4gICAgLy8gaHR0cHM6Ly93d3cuYXJ0aW1hLmNvbS93ZWJsb2dzL3ZpZXdwb3N0LmpzcD90aHJlYWQ9MTY0MjkzXG4gICAgaWYgKGh1bmsub2xkTGluZXMgPT09IDApIHtcbiAgICAgIGh1bmsub2xkU3RhcnQgKz0gMTtcbiAgICB9XG4gICAgaWYgKGh1bmsubmV3TGluZXMgPT09IDApIHtcbiAgICAgIGh1bmsubmV3U3RhcnQgKz0gMTtcbiAgICB9XG5cbiAgICBsZXQgYWRkQ291bnQgPSAwLFxuICAgICAgICByZW1vdmVDb3VudCA9IDA7XG4gICAgZm9yICg7IGkgPCBkaWZmc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAvLyBMaW5lcyBzdGFydGluZyB3aXRoICctLS0nIGNvdWxkIGJlIG1pc3Rha2VuIGZvciB0aGUgXCJyZW1vdmUgbGluZVwiIG9wZXJhdGlvblxuICAgICAgLy8gQnV0IHRoZXkgY291bGQgYmUgdGhlIGhlYWRlciBmb3IgdGhlIG5leHQgZmlsZS4gVGhlcmVmb3JlIHBydW5lIHN1Y2ggY2FzZXMgb3V0LlxuICAgICAgaWYgKGRpZmZzdHJbaV0uaW5kZXhPZignLS0tICcpID09PSAwXG4gICAgICAgICAgICAmJiAoaSArIDIgPCBkaWZmc3RyLmxlbmd0aClcbiAgICAgICAgICAgICYmIGRpZmZzdHJbaSArIDFdLmluZGV4T2YoJysrKyAnKSA9PT0gMFxuICAgICAgICAgICAgJiYgZGlmZnN0cltpICsgMl0uaW5kZXhPZignQEAnKSA9PT0gMCkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgbGV0IG9wZXJhdGlvbiA9IChkaWZmc3RyW2ldLmxlbmd0aCA9PSAwICYmIGkgIT0gKGRpZmZzdHIubGVuZ3RoIC0gMSkpID8gJyAnIDogZGlmZnN0cltpXVswXTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJysnIHx8IG9wZXJhdGlvbiA9PT0gJy0nIHx8IG9wZXJhdGlvbiA9PT0gJyAnIHx8IG9wZXJhdGlvbiA9PT0gJ1xcXFwnKSB7XG4gICAgICAgIGh1bmsubGluZXMucHVzaChkaWZmc3RyW2ldKTtcbiAgICAgICAgaHVuay5saW5lZGVsaW1pdGVycy5wdXNoKGRlbGltaXRlcnNbaV0gfHwgJ1xcbicpO1xuXG4gICAgICAgIGlmIChvcGVyYXRpb24gPT09ICcrJykge1xuICAgICAgICAgIGFkZENvdW50Kys7XG4gICAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgICByZW1vdmVDb3VudCsrO1xuICAgICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgICAgYWRkQ291bnQrKztcbiAgICAgICAgICByZW1vdmVDb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIGVtcHR5IGJsb2NrIGNvdW50IGNhc2VcbiAgICBpZiAoIWFkZENvdW50ICYmIGh1bmsubmV3TGluZXMgPT09IDEpIHtcbiAgICAgIGh1bmsubmV3TGluZXMgPSAwO1xuICAgIH1cbiAgICBpZiAoIXJlbW92ZUNvdW50ICYmIGh1bmsub2xkTGluZXMgPT09IDEpIHtcbiAgICAgIGh1bmsub2xkTGluZXMgPSAwO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm0gb3B0aW9uYWwgc2FuaXR5IGNoZWNraW5nXG4gICAgaWYgKG9wdGlvbnMuc3RyaWN0KSB7XG4gICAgICBpZiAoYWRkQ291bnQgIT09IGh1bmsubmV3TGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBZGRlZCBsaW5lIGNvdW50IGRpZCBub3QgbWF0Y2ggZm9yIGh1bmsgYXQgbGluZSAnICsgKGNodW5rSGVhZGVySW5kZXggKyAxKSk7XG4gICAgICB9XG4gICAgICBpZiAocmVtb3ZlQ291bnQgIT09IGh1bmsub2xkTGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZW1vdmVkIGxpbmUgY291bnQgZGlkIG5vdCBtYXRjaCBmb3IgaHVuayBhdCBsaW5lICcgKyAoY2h1bmtIZWFkZXJJbmRleCArIDEpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaHVuaztcbiAgfVxuXG4gIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICBwYXJzZUluZGV4KCk7XG4gIH1cblxuICByZXR1cm4gbGlzdDtcbn1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.reversePatch = reversePatch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/*istanbul ignore end*/\nfunction reversePatch(structuredPatch) {\n if (Array.isArray(structuredPatch)) {\n return structuredPatch.map(reversePatch).reverse();\n }\n\n return (\n /*istanbul ignore start*/\n _objectSpread(_objectSpread({},\n /*istanbul ignore end*/\n structuredPatch), {}, {\n oldFileName: structuredPatch.newFileName,\n oldHeader: structuredPatch.newHeader,\n newFileName: structuredPatch.oldFileName,\n newHeader: structuredPatch.oldHeader,\n hunks: structuredPatch.hunks.map(function (hunk) {\n return {\n oldLines: hunk.newLines,\n oldStart: hunk.newStart,\n newLines: hunk.oldLines,\n newStart: hunk.oldStart,\n linedelimiters: hunk.linedelimiters,\n lines: hunk.lines.map(function (l) {\n if (l.startsWith('-')) {\n return (\n /*istanbul ignore start*/\n \"+\".concat(\n /*istanbul ignore end*/\n l.slice(1))\n );\n }\n\n if (l.startsWith('+')) {\n return (\n /*istanbul ignore start*/\n \"-\".concat(\n /*istanbul ignore end*/\n l.slice(1))\n );\n }\n\n return l;\n })\n };\n })\n })\n );\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9yZXZlcnNlLmpzIl0sIm5hbWVzIjpbInJldmVyc2VQYXRjaCIsInN0cnVjdHVyZWRQYXRjaCIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsInJldmVyc2UiLCJvbGRGaWxlTmFtZSIsIm5ld0ZpbGVOYW1lIiwib2xkSGVhZGVyIiwibmV3SGVhZGVyIiwiaHVua3MiLCJodW5rIiwib2xkTGluZXMiLCJuZXdMaW5lcyIsIm9sZFN0YXJ0IiwibmV3U3RhcnQiLCJsaW5lZGVsaW1pdGVycyIsImxpbmVzIiwibCIsInN0YXJ0c1dpdGgiLCJzbGljZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQU8sU0FBU0EsWUFBVCxDQUFzQkMsZUFBdEIsRUFBdUM7QUFDNUMsTUFBSUMsS0FBSyxDQUFDQyxPQUFOLENBQWNGLGVBQWQsQ0FBSixFQUFvQztBQUNsQyxXQUFPQSxlQUFlLENBQUNHLEdBQWhCLENBQW9CSixZQUFwQixFQUFrQ0ssT0FBbEMsRUFBUDtBQUNEOztBQUVEO0FBQUE7QUFBQTtBQUFBO0FBQ0tKLElBQUFBLGVBREw7QUFFRUssTUFBQUEsV0FBVyxFQUFFTCxlQUFlLENBQUNNLFdBRi9CO0FBR0VDLE1BQUFBLFNBQVMsRUFBRVAsZUFBZSxDQUFDUSxTQUg3QjtBQUlFRixNQUFBQSxXQUFXLEVBQUVOLGVBQWUsQ0FBQ0ssV0FKL0I7QUFLRUcsTUFBQUEsU0FBUyxFQUFFUixlQUFlLENBQUNPLFNBTDdCO0FBTUVFLE1BQUFBLEtBQUssRUFBRVQsZUFBZSxDQUFDUyxLQUFoQixDQUFzQk4sR0FBdEIsQ0FBMEIsVUFBQU8sSUFBSSxFQUFJO0FBQ3ZDLGVBQU87QUFDTEMsVUFBQUEsUUFBUSxFQUFFRCxJQUFJLENBQUNFLFFBRFY7QUFFTEMsVUFBQUEsUUFBUSxFQUFFSCxJQUFJLENBQUNJLFFBRlY7QUFHTEYsVUFBQUEsUUFBUSxFQUFFRixJQUFJLENBQUNDLFFBSFY7QUFJTEcsVUFBQUEsUUFBUSxFQUFFSixJQUFJLENBQUNHLFFBSlY7QUFLTEUsVUFBQUEsY0FBYyxFQUFFTCxJQUFJLENBQUNLLGNBTGhCO0FBTUxDLFVBQUFBLEtBQUssRUFBRU4sSUFBSSxDQUFDTSxLQUFMLENBQVdiLEdBQVgsQ0FBZSxVQUFBYyxDQUFDLEVBQUk7QUFDekIsZ0JBQUlBLENBQUMsQ0FBQ0MsVUFBRixDQUFhLEdBQWIsQ0FBSixFQUF1QjtBQUFFO0FBQUE7QUFBQTtBQUFBO0FBQVdELGdCQUFBQSxDQUFDLENBQUNFLEtBQUYsQ0FBUSxDQUFSLENBQVg7QUFBQTtBQUEwQjs7QUFDbkQsZ0JBQUlGLENBQUMsQ0FBQ0MsVUFBRixDQUFhLEdBQWIsQ0FBSixFQUF1QjtBQUFFO0FBQUE7QUFBQTtBQUFBO0FBQVdELGdCQUFBQSxDQUFDLENBQUNFLEtBQUYsQ0FBUSxDQUFSLENBQVg7QUFBQTtBQUEwQjs7QUFDbkQsbUJBQU9GLENBQVA7QUFDRCxXQUpNO0FBTkYsU0FBUDtBQVlELE9BYk07QUFOVDtBQUFBO0FBcUJEIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHJldmVyc2VQYXRjaChzdHJ1Y3R1cmVkUGF0Y2gpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoc3RydWN0dXJlZFBhdGNoKSkge1xuICAgIHJldHVybiBzdHJ1Y3R1cmVkUGF0Y2gubWFwKHJldmVyc2VQYXRjaCkucmV2ZXJzZSgpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdHJ1Y3R1cmVkUGF0Y2gsXG4gICAgb2xkRmlsZU5hbWU6IHN0cnVjdHVyZWRQYXRjaC5uZXdGaWxlTmFtZSxcbiAgICBvbGRIZWFkZXI6IHN0cnVjdHVyZWRQYXRjaC5uZXdIZWFkZXIsXG4gICAgbmV3RmlsZU5hbWU6IHN0cnVjdHVyZWRQYXRjaC5vbGRGaWxlTmFtZSxcbiAgICBuZXdIZWFkZXI6IHN0cnVjdHVyZWRQYXRjaC5vbGRIZWFkZXIsXG4gICAgaHVua3M6IHN0cnVjdHVyZWRQYXRjaC5odW5rcy5tYXAoaHVuayA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvbGRMaW5lczogaHVuay5uZXdMaW5lcyxcbiAgICAgICAgb2xkU3RhcnQ6IGh1bmsubmV3U3RhcnQsXG4gICAgICAgIG5ld0xpbmVzOiBodW5rLm9sZExpbmVzLFxuICAgICAgICBuZXdTdGFydDogaHVuay5vbGRTdGFydCxcbiAgICAgICAgbGluZWRlbGltaXRlcnM6IGh1bmsubGluZWRlbGltaXRlcnMsXG4gICAgICAgIGxpbmVzOiBodW5rLmxpbmVzLm1hcChsID0+IHtcbiAgICAgICAgICBpZiAobC5zdGFydHNXaXRoKCctJykpIHsgcmV0dXJuIGArJHtsLnNsaWNlKDEpfWA7IH1cbiAgICAgICAgICBpZiAobC5zdGFydHNXaXRoKCcrJykpIHsgcmV0dXJuIGAtJHtsLnNsaWNlKDEpfWA7IH1cbiAgICAgICAgICByZXR1cm4gbDtcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfSlcbiAgfTtcbn1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.arrayEqual = arrayEqual;\nexports.arrayStartsWith = arrayStartsWith;\n\n/*istanbul ignore end*/\nfunction arrayEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n\n return arrayStartsWith(a, b);\n}\n\nfunction arrayStartsWith(array, start) {\n if (start.length > array.length) {\n return false;\n }\n\n for (var i = 0; i < start.length; i++) {\n if (start[i] !== array[i]) {\n return false;\n }\n }\n\n return true;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2FycmF5LmpzIl0sIm5hbWVzIjpbImFycmF5RXF1YWwiLCJhIiwiYiIsImxlbmd0aCIsImFycmF5U3RhcnRzV2l0aCIsImFycmF5Iiwic3RhcnQiLCJpIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQU8sU0FBU0EsVUFBVCxDQUFvQkMsQ0FBcEIsRUFBdUJDLENBQXZCLEVBQTBCO0FBQy9CLE1BQUlELENBQUMsQ0FBQ0UsTUFBRixLQUFhRCxDQUFDLENBQUNDLE1BQW5CLEVBQTJCO0FBQ3pCLFdBQU8sS0FBUDtBQUNEOztBQUVELFNBQU9DLGVBQWUsQ0FBQ0gsQ0FBRCxFQUFJQyxDQUFKLENBQXRCO0FBQ0Q7O0FBRU0sU0FBU0UsZUFBVCxDQUF5QkMsS0FBekIsRUFBZ0NDLEtBQWhDLEVBQXVDO0FBQzVDLE1BQUlBLEtBQUssQ0FBQ0gsTUFBTixHQUFlRSxLQUFLLENBQUNGLE1BQXpCLEVBQWlDO0FBQy9CLFdBQU8sS0FBUDtBQUNEOztBQUVELE9BQUssSUFBSUksQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0QsS0FBSyxDQUFDSCxNQUExQixFQUFrQ0ksQ0FBQyxFQUFuQyxFQUF1QztBQUNyQyxRQUFJRCxLQUFLLENBQUNDLENBQUQsQ0FBTCxLQUFhRixLQUFLLENBQUNFLENBQUQsQ0FBdEIsRUFBMkI7QUFDekIsYUFBTyxLQUFQO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPLElBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBhcnJheUVxdWFsKGEsIGIpIHtcbiAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBhcnJheVN0YXJ0c1dpdGgoYSwgYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheVN0YXJ0c1dpdGgoYXJyYXksIHN0YXJ0KSB7XG4gIGlmIChzdGFydC5sZW5ndGggPiBhcnJheS5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YXJ0Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0YXJ0W2ldICE9PSBhcnJheVtpXSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = _default;\n\n/*istanbul ignore end*/\n// Iterator that traverses in the range of [min, max], stepping\n// by distance from a given start position. I.e. for [0, 4], with\n// start of 2, this will iterate 2, 3, 1, 4, 0.\nfunction\n/*istanbul ignore start*/\n_default\n/*istanbul ignore end*/\n(start, minLine, maxLine) {\n var wantForward = true,\n backwardExhausted = false,\n forwardExhausted = false,\n localOffset = 1;\n return function iterator() {\n if (wantForward && !forwardExhausted) {\n if (backwardExhausted) {\n localOffset++;\n } else {\n wantForward = false;\n } // Check if trying to fit beyond text length, and if not, check it fits\n // after offset location (or desired location on first iteration)\n\n\n if (start + localOffset <= maxLine) {\n return localOffset;\n }\n\n forwardExhausted = true;\n }\n\n if (!backwardExhausted) {\n if (!forwardExhausted) {\n wantForward = true;\n } // Check if trying to fit before text beginning, and if not, check it fits\n // before offset location\n\n\n if (minLine <= start - localOffset) {\n return -localOffset++;\n }\n\n backwardExhausted = true;\n return iterator();\n } // We tried to fit hunk before text beginning and beyond text length, then\n // hunk can't fit on the text. Return undefined\n\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yLmpzIl0sIm5hbWVzIjpbInN0YXJ0IiwibWluTGluZSIsIm1heExpbmUiLCJ3YW50Rm9yd2FyZCIsImJhY2t3YXJkRXhoYXVzdGVkIiwiZm9yd2FyZEV4aGF1c3RlZCIsImxvY2FsT2Zmc2V0IiwiaXRlcmF0b3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNlO0FBQUE7QUFBQTtBQUFBO0FBQUEsQ0FBU0EsS0FBVCxFQUFnQkMsT0FBaEIsRUFBeUJDLE9BQXpCLEVBQWtDO0FBQy9DLE1BQUlDLFdBQVcsR0FBRyxJQUFsQjtBQUFBLE1BQ0lDLGlCQUFpQixHQUFHLEtBRHhCO0FBQUEsTUFFSUMsZ0JBQWdCLEdBQUcsS0FGdkI7QUFBQSxNQUdJQyxXQUFXLEdBQUcsQ0FIbEI7QUFLQSxTQUFPLFNBQVNDLFFBQVQsR0FBb0I7QUFDekIsUUFBSUosV0FBVyxJQUFJLENBQUNFLGdCQUFwQixFQUFzQztBQUNwQyxVQUFJRCxpQkFBSixFQUF1QjtBQUNyQkUsUUFBQUEsV0FBVztBQUNaLE9BRkQsTUFFTztBQUNMSCxRQUFBQSxXQUFXLEdBQUcsS0FBZDtBQUNELE9BTG1DLENBT3BDO0FBQ0E7OztBQUNBLFVBQUlILEtBQUssR0FBR00sV0FBUixJQUF1QkosT0FBM0IsRUFBb0M7QUFDbEMsZUFBT0ksV0FBUDtBQUNEOztBQUVERCxNQUFBQSxnQkFBZ0IsR0FBRyxJQUFuQjtBQUNEOztBQUVELFFBQUksQ0FBQ0QsaUJBQUwsRUFBd0I7QUFDdEIsVUFBSSxDQUFDQyxnQkFBTCxFQUF1QjtBQUNyQkYsUUFBQUEsV0FBVyxHQUFHLElBQWQ7QUFDRCxPQUhxQixDQUt0QjtBQUNBOzs7QUFDQSxVQUFJRixPQUFPLElBQUlELEtBQUssR0FBR00sV0FBdkIsRUFBb0M7QUFDbEMsZUFBTyxDQUFDQSxXQUFXLEVBQW5CO0FBQ0Q7O0FBRURGLE1BQUFBLGlCQUFpQixHQUFHLElBQXBCO0FBQ0EsYUFBT0csUUFBUSxFQUFmO0FBQ0QsS0E5QndCLENBZ0N6QjtBQUNBOztBQUNELEdBbENEO0FBbUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSXRlcmF0b3IgdGhhdCB0cmF2ZXJzZXMgaW4gdGhlIHJhbmdlIG9mIFttaW4sIG1heF0sIHN0ZXBwaW5nXG4vLyBieSBkaXN0YW5jZSBmcm9tIGEgZ2l2ZW4gc3RhcnQgcG9zaXRpb24uIEkuZS4gZm9yIFswLCA0XSwgd2l0aFxuLy8gc3RhcnQgb2YgMiwgdGhpcyB3aWxsIGl0ZXJhdGUgMiwgMywgMSwgNCwgMC5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHN0YXJ0LCBtaW5MaW5lLCBtYXhMaW5lKSB7XG4gIGxldCB3YW50Rm9yd2FyZCA9IHRydWUsXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgbG9jYWxPZmZzZXQgPSAxO1xuXG4gIHJldHVybiBmdW5jdGlvbiBpdGVyYXRvcigpIHtcbiAgICBpZiAod2FudEZvcndhcmQgJiYgIWZvcndhcmRFeGhhdXN0ZWQpIHtcbiAgICAgIGlmIChiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgICBsb2NhbE9mZnNldCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FudEZvcndhcmQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZXlvbmQgdGV4dCBsZW5ndGgsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGFmdGVyIG9mZnNldCBsb2NhdGlvbiAob3IgZGVzaXJlZCBsb2NhdGlvbiBvbiBmaXJzdCBpdGVyYXRpb24pXG4gICAgICBpZiAoc3RhcnQgKyBsb2NhbE9mZnNldCA8PSBtYXhMaW5lKSB7XG4gICAgICAgIHJldHVybiBsb2NhbE9mZnNldDtcbiAgICAgIH1cblxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgaWYgKCFmb3J3YXJkRXhoYXVzdGVkKSB7XG4gICAgICAgIHdhbnRGb3J3YXJkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZWZvcmUgdGV4dCBiZWdpbm5pbmcsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGJlZm9yZSBvZmZzZXQgbG9jYXRpb25cbiAgICAgIGlmIChtaW5MaW5lIDw9IHN0YXJ0IC0gbG9jYWxPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIC1sb2NhbE9mZnNldCsrO1xuICAgICAgfVxuXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgICByZXR1cm4gaXRlcmF0b3IoKTtcbiAgICB9XG5cbiAgICAvLyBXZSB0cmllZCB0byBmaXQgaHVuayBiZWZvcmUgdGV4dCBiZWdpbm5pbmcgYW5kIGJleW9uZCB0ZXh0IGxlbmd0aCwgdGhlblxuICAgIC8vIGh1bmsgY2FuJ3QgZml0IG9uIHRoZSB0ZXh0LiBSZXR1cm4gdW5kZWZpbmVkXG4gIH07XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.generateOptions = generateOptions;\n\n/*istanbul ignore end*/\nfunction generateOptions(options, defaults) {\n if (typeof options === 'function') {\n defaults.callback = options;\n } else if (options) {\n for (var name in options) {\n /* istanbul ignore else */\n if (options.hasOwnProperty(name)) {\n defaults[name] = options[name];\n }\n }\n }\n\n return defaults;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3BhcmFtcy5qcyJdLCJuYW1lcyI6WyJnZW5lcmF0ZU9wdGlvbnMiLCJvcHRpb25zIiwiZGVmYXVsdHMiLCJjYWxsYmFjayIsIm5hbWUiLCJoYXNPd25Qcm9wZXJ0eSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsZUFBVCxDQUF5QkMsT0FBekIsRUFBa0NDLFFBQWxDLEVBQTRDO0FBQ2pELE1BQUksT0FBT0QsT0FBUCxLQUFtQixVQUF2QixFQUFtQztBQUNqQ0MsSUFBQUEsUUFBUSxDQUFDQyxRQUFULEdBQW9CRixPQUFwQjtBQUNELEdBRkQsTUFFTyxJQUFJQSxPQUFKLEVBQWE7QUFDbEIsU0FBSyxJQUFJRyxJQUFULElBQWlCSCxPQUFqQixFQUEwQjtBQUN4QjtBQUNBLFVBQUlBLE9BQU8sQ0FBQ0ksY0FBUixDQUF1QkQsSUFBdkIsQ0FBSixFQUFrQztBQUNoQ0YsUUFBQUEsUUFBUSxDQUFDRSxJQUFELENBQVIsR0FBaUJILE9BQU8sQ0FBQ0csSUFBRCxDQUF4QjtBQUNEO0FBQ0Y7QUFDRjs7QUFDRCxTQUFPRixRQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIGRlZmF1bHRzKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRlZmF1bHRzLmNhbGxiYWNrID0gb3B0aW9ucztcbiAgfSBlbHNlIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgbmFtZSBpbiBvcHRpb25zKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9wdGlvbnMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgZGVmYXVsdHNbbmFtZV0gPSBvcHRpb25zW25hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGVmYXVsdHM7XG59XG4iXX0=\n","\"use strict\";\n\nmodule.exports = function () {\n // https://mths.be/emoji\n return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F|\\uD83D\\uDC68(?:\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C\\uDFFB|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83D[\\uDC66\\uDC67]|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C[\\uDFFB-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)\\uD83C\\uDFFB|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83D\\uDC69(?:\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|(?:(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)\\uFE0F|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\u200D[\\u2640\\u2642])|\\uD83C\\uDFF4\\u200D\\u2620)\\uFE0F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83C\\uDDF6\\uD83C\\uDDE6|[#\\*0-9]\\uFE0F\\u20E3|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC70\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD74\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD36\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5\\uDEEB\\uDEEC\\uDEF4-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g;\n};\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nconst validator = require('./validator');\nconst XMLParser = require('./xmlparser/XMLParser');\nconst XMLBuilder = require('./xmlbuilder/json2xml');\n\nmodule.exports = {\n XMLParser: XMLParser,\n XMLValidator: validator,\n XMLBuilder: XMLBuilder\n}","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n};\n\nconst isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if (arrayMode === 'strict') {\n target[keys[i]] = [ a[keys[i]] ];\n } else {\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n};\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n","'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n \n for (let i = 0; i < xmlData.length; i++) {\n\n if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n i+=2;\n i = readPI(xmlData,i);\n if (i.err) return i;\n }else if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n let tagStartPos = i;\n i++;\n \n if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject('InvalidTag',\n \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n getLineNumberForPosition(xmlData, tagStartPos));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else if(options.unpairedTags.indexOf(tagName) !== -1){\n //don't push into stack\n } else {\n tags.push({tagName, tagStartPos});\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i+1] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else{\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n }else{\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if ( isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n }else if (tags.length == 1) {\n return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n }else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\"+\n JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n \"' found.\", {line: 1, col: 1});\n }\n\n return true;\n};\n\nfunction isWhiteSpace(char){\n return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return util.isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return util.isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\n","'use strict';\n//parse Empty Node as self closing node\nconst buildFromOrderedJs = require('./orderedJs2Xml');\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: ' ',\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a) {\n return a;\n },\n attributeValueProcessor: function(attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n};\n\nfunction Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes || this.options.attributesGroupName) {\n this.isAttribute = function(/*a*/) {\n return false;\n };\n } else {\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n\n this.processTextOrObjNode = processTextOrObjNode\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function() {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n}\n\nBuilder.prototype.build = function(jObj) {\n if(this.options.preserveOrder){\n return buildFromOrderedJs(jObj, this.options);\n }else {\n if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n jObj = {\n [this.options.arrayNodeName] : jObj\n }\n }\n return this.j2x(jObj, 0).val;\n }\n};\n\nBuilder.prototype.j2x = function(jObj, level) {\n let attrStr = '';\n let val = '';\n for (let key in jObj) {\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node\n } else if (jObj[key] === null) {\n if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr) {\n attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n }else {\n //tag value\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n if(this.options.oneListGroup ){\n listTagVal += this.j2x(item, level + 1).val;\n }else{\n listTagVal += this.processTextOrObjNode(item, key, level)\n }\n } else {\n listTagVal += this.buildTextValNode(item, key, '', level);\n }\n }\n if(this.options.oneListGroup){\n listTagVal = this.buildObjectNode(listTagVal, key, '', level);\n }\n val += listTagVal;\n } else {\n //nested node\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level)\n }\n }\n }\n return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n val = this.options.attributeValueProcessor(attrName, '' + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return ' ' + attrName;\n } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level) {\n const result = this.j2x(object, level + 1);\n if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if(val === \"\"){\n if(key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n }else{\n\n let tagEndExp = '' + val + tagEndExp );\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n }else {\n return (\n this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n val +\n this.indentate(level) + tagEndExp );\n }\n }\n}\n\nBuilder.prototype.closeTag = function(key){\n let closeTag = \"\";\n if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n }else if(this.options.suppressEmptyNode){ //empty\n closeTag = \"/\";\n }else{\n closeTag = `>` + this.newLine;\n }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n }else if(key[0] === \"?\") {//PI tag\n return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n }else{\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n \n if( textValue === ''){\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }else{\n return this.indentate(level) + '<' + key + attrStr + '>' +\n textValue +\n ' 0 && this.options.processEntities){\n for (let i=0; i 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName\n else newJPath = `${jPath}.${tagName}`;\n\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n }\n\n return xmlStr;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (key !== \":@\") return key;\n }\n}\n\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i = 0; i < options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\nmodule.exports = toXml;\n","const util = require('../util');\n\n//TODO: handle comments\nfunction readDocType(xmlData, i){\n \n const entities = {};\n if( xmlData[i + 3] === 'O' &&\n xmlData[i + 4] === 'C' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'Y' &&\n xmlData[i + 7] === 'P' &&\n xmlData[i + 8] === 'E')\n { \n i = i+9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for(;i') { //Read tag content\n if(comment){\n if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n comment = false;\n angleBracketsCount--;\n }\n }else{\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n }else if( xmlData[i] === '['){\n hasBody = true;\n }else{\n exp += xmlData[i];\n }\n }\n if(angleBracketsCount !== 0){\n throw new Error(`Unclosed DOCTYPE`);\n }\n }else{\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return {entities, i};\n}\n\nfunction readEntityExp(xmlData,i){\n //External entities are not supported\n // \n\n //Parameter entities are not supported\n // \n\n //Internal entities are supported\n // \n \n //read EntityName\n let entityName = \"\";\n for (; i < xmlData.length && (xmlData[i] !== \"'\" && xmlData[i] !== '\"' ); i++) {\n // if(xmlData[i] === \" \") continue;\n // else \n entityName += xmlData[i];\n }\n entityName = entityName.trim();\n if(entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n\n //read Entity Value\n const startChar = xmlData[i++];\n let val = \"\"\n for (; i < xmlData.length && xmlData[i] !== startChar ; i++) {\n val += xmlData[i];\n }\n return [entityName, val, i];\n}\n\nfunction isComment(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === '-' &&\n xmlData[i+3] === '-') return true\n return false\n}\nfunction isEntity(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'N' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'I' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'Y') return true\n return false\n}\nfunction isElement(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'L' &&\n xmlData[i+4] === 'E' &&\n xmlData[i+5] === 'M' &&\n xmlData[i+6] === 'E' &&\n xmlData[i+7] === 'N' &&\n xmlData[i+8] === 'T') return true\n return false\n}\n\nfunction isAttlist(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'A' &&\n xmlData[i+3] === 'T' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'L' &&\n xmlData[i+6] === 'I' &&\n xmlData[i+7] === 'S' &&\n xmlData[i+8] === 'T') return true\n return false\n}\nfunction isNotation(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'N' &&\n xmlData[i+3] === 'O' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'A' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'I' &&\n xmlData[i+8] === 'O' &&\n xmlData[i+9] === 'N') return true\n return false\n}\n\nfunction validateEntityName(name){\n if (util.isName(name))\n\treturn name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}\n\nmodule.exports = readDocType;\n","\nconst defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n removeNSPrefix: false, // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [], //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs){\n return tagName\n },\n // skipEmptyListItem: false\n};\n \nconst buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n};\n\nexports.buildOptions = buildOptions;\nexports.defaultOptions = defaultOptions;","'use strict';\n///@ts-check\n\nconst util = require('../util');\nconst xmlNode = require('./xmlNode');\nconst readDocType = require(\"./DocTypeReader\");\nconst toNumber = require(\"strnum\");\n\nconst regx =\n '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nclass OrderedObjParser{\n constructor(options){\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\" : { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\" : { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\" : { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\" : { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\" : { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\" : { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\" : { regex: /&(inr|#8377);/g, val: \"₹\" },\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n }\n\n}\n\nfunction addExternalEntities(externalEntities){\n const entKeys = Object.keys(externalEntities);\n for (let i = 0; i < entKeys.length; i++) {\n const ent = entKeys[i];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n val : externalEntities[ent]\n }\n }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== undefined) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if(val.length > 0){\n if(!escapeEntities) val = this.replaceEntitiesValue(val);\n \n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if(newval === null || newval === undefined){\n //don't parse\n return val;\n }else if(typeof newval !== typeof val || newval !== val){\n //overwrite\n return newval;\n }else if(this.options.trimValues){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n const trimmedVal = val.trim();\n if(trimmedVal === val){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n return val;\n }\n }\n }\n }\n}\n\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (!this.options.ignoreAttributes && typeof attrStr === 'string') {\n // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n let oldVal = matches[i][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if(aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== undefined) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if(newVal === null || newVal === undefined){\n //don't parse\n attrs[aName] = oldVal;\n }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n //overwrite\n attrs[aName] = newVal;\n }else{\n //parse\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs\n }\n}\n\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for(let i=0; i< xmlData.length; i++){//for each char in XML data\n const ch = xmlData[i];\n if(ch === '<'){\n // const nextIndex = i+1;\n // const _2ndChar = xmlData[nextIndex];\n if( xmlData[i+1] === '/') {//Closing Tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n if(this.options.removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n }\n }\n\n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n if(currentNode){\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n\n //check if last tag of nested tag was unpaired tag\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\")+1);\n if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){\n throw new Error(`Unpaired tag can not be used as closing tag: `);\n }\n let propIndex = 0\n if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){\n propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)\n this.tagsNodeStack.pop();\n }else{\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n\n currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n textData = \"\";\n i = closeIndex;\n } else if( xmlData[i+1] === '?') {\n\n let tagData = readTagExp(xmlData,i, false, \"?>\");\n if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n\n }else{\n \n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n \n if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n\n }\n\n\n i = tagData.closeIndex + 1;\n } else if(xmlData.substr(i + 1, 3) === '!--') {\n const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n if(this.options.commentPropName){\n const comment = xmlData.substring(i + 4, endIndex - 2);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n }\n i = endIndex;\n } else if( xmlData.substr(i + 1, 2) === '!D') {\n const result = readDocType(xmlData, i);\n this.docTypeEntities = result.entities;\n i = result.i;\n }else if(xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i + 9,closeIndex);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n //cdata should be set even if it is 0 length string\n if(this.options.cdataPropName){\n // let val = this.parseTextData(tagExp, this.options.cdataPropName, jPath + \".\" + this.options.cdataPropName, true, false, true);\n // if(!val) val = \"\";\n currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n }else{\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true);\n if(val == undefined) val = \"\";\n currentNode.add(this.options.textNodeName, val);\n }\n \n i = closeIndex + 2;\n }else {//Opening tag\n let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n let tagName= result.tagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n \n //save text as child node\n if (currentNode && textData) {\n if(currentNode.tagname !== '!xml'){\n //when nested tag is found\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n\n //check if last tag was unpaired tag\n const lastTag = currentNode;\n if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if(tagName !== xmlObj.tagname){\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) { //TODO: namespace\n let tagContent = \"\";\n //self-closing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n i = result.closeIndex;\n }\n //unpaired tag\n else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n i = result.closeIndex;\n }\n //normal tag\n else{\n //read until closing tag is found\n const result = this.readStopNodeData(xmlData, tagName, closeIndex + 1);\n if(!result) throw new Error(`Unexpected end of ${tagName}`);\n i = result.i;\n tagContent = result.tagContent;\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if(tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n \n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n \n this.addChild(currentNode, childNode, jPath)\n }else{\n //selfClosing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n \n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n }\n //opening tag\n else{\n const childNode = new xmlNode( tagName);\n this.tagsNodeStack.push(currentNode);\n \n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }\n }else{\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath){\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n if(result === false){\n }else if(typeof result === \"string\"){\n childNode.tagname = result\n currentNode.addChild(childNode);\n }else{\n currentNode.addChild(childNode);\n }\n}\n\nconst replaceEntitiesValue = function(val){\n\n if(this.options.processEntities){\n for(let entityName in this.docTypeEntities){\n const entity = this.docTypeEntities[entityName];\n val = val.replace( entity.regx, entity.val);\n }\n for(let entityName in this.lastEntities){\n const entity = this.lastEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n if(this.options.htmlEntities){\n for(let entityName in this.htmlEntities){\n const entity = this.htmlEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n }\n val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) { //store previously collected data as textNode\n if(isLeafNode === undefined) isLeafNode = Object.keys(currentNode.child).length === 0\n \n textData = this.parseTextData(textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode);\n\n if (textData !== undefined && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * \n * @param {string[]} stopNodes \n * @param {string} jPath\n * @param {string} currentTagName \n */\nfunction isItStopNode(stopNodes, jPath, currentTagName){\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if( allNodesExp === stopNodeExp || jPath === stopNodeExp ) return true;\n }\n return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";//reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if(closingChar[1]){\n if(xmlData[index + 1] === closingChar[1]){\n return {\n data: tagExp,\n index: index\n }\n }\n }else{\n return {\n data: tagExp,\n index: index\n }\n }\n } else if (ch === '\\t') {\n ch = \" \"\n }\n tagExp += ch;\n }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n const closingIndex = xmlData.indexOf(str, i);\n if(closingIndex === -1){\n throw new Error(errMsg)\n }else{\n return closingIndex + str.length - 1;\n }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n if(!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if(separatorIndex !== -1){//separate tag name and attributes expression\n tagName = tagExp.substr(0, separatorIndex).replace(/\\s\\s*$/, '');\n tagExp = tagExp.substr(separatorIndex + 1);\n }\n\n if(removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n\n return {\n tagName: tagName,\n tagExp: tagExp,\n closeIndex: closeIndex,\n attrExpPresent: attrExpPresent,\n }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n const startIndex = i;\n // Starting at 1 since we already have an open tag\n let openTagCount = 1;\n\n for (; i < xmlData.length; i++) {\n if( xmlData[i] === \"<\"){ \n if (xmlData[i+1] === \"/\") {//close tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n if(closeTagName === tagName){\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i),\n i : closeIndex\n }\n }\n }\n i=closeIndex;\n } else if(xmlData[i+1] === '?') { \n const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 3) === '!--') { \n const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 2) === '![') { \n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n i=closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i, '>')\n\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n openTagCount++;\n }\n i=tagData.closeIndex;\n }\n }\n }\n }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === 'string') {\n //console.log(options)\n const newval = val.trim();\n if(newval === 'true' ) return true;\n else if(newval === 'false' ) return false;\n else return toNumber(val, options);\n } else {\n if (util.isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\n\nmodule.exports = OrderedObjParser;\n","const { buildOptions} = require(\"./OptionsBuilder\");\nconst OrderedObjParser = require(\"./OrderedObjParser\");\nconst { prettify} = require(\"./node2json\");\nconst validator = require('../validator');\n\nclass XMLParser{\n \n constructor(options){\n this.externalEntities = {};\n this.options = buildOptions(options);\n \n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData,validationOption){\n if(typeof xmlData === \"string\"){\n }else if( xmlData.toString){\n xmlData = xmlData.toString();\n }else{\n throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n }\n if( validationOption){\n if(validationOption === true) validationOption = {}; //validate with default options\n \n const result = validator.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value){\n if(value.indexOf(\"&\") !== -1){\n throw new Error(\"Entity value can't have '&'\")\n }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\")\n }else if(value === \"&\"){\n throw new Error(\"An entity with value '&' is not permitted\");\n }else{\n this.externalEntities[key] = value;\n }\n }\n}\n\nmodule.exports = XMLParser;","'use strict';\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nfunction prettify(node, options){\n return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n let text;\n const compressedObj = {};\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const property = propName(tagObj);\n let newJpath = \"\";\n if(jPath === undefined) newJpath = property;\n else newJpath = jPath + \".\" + property;\n\n if(property === options.textNodeName){\n if(text === undefined) text = tagObj[property];\n else text += \"\" + tagObj[property];\n }else if(property === undefined){\n continue;\n }else if(tagObj[property]){\n \n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n\n if(tagObj[\":@\"]){\n assignAttributes( val, tagObj[\":@\"], newJpath, options);\n }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n val = val[options.textNodeName];\n }else if(Object.keys(val).length === 0){\n if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n\n if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n if(!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [ compressedObj[property] ];\n }\n compressedObj[property].push(val);\n }else{\n //TODO: if a node is not an array, then check if it should be an array\n //also determine if it is a leaf node\n if (options.isArray(property, newJpath, isLeaf )) {\n compressedObj[property] = [val];\n }else{\n compressedObj[property] = val;\n }\n }\n }\n \n }\n // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n if(typeof text === \"string\"){\n if(text.length > 0) compressedObj[options.textNodeName] = text;\n }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\n\nfunction propName(obj){\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(key !== \":@\") return key;\n }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n const atrrName = keys[i];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [ attrMap[atrrName] ];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\n\nfunction isLeafTag(obj, options){\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n \n if (propCount === 0) {\n return true;\n }\n\n if (\n propCount === 1 &&\n (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n ) {\n return true;\n }\n\n return false;\n}\nexports.prettify = prettify;\n","'use strict';\n\nclass XmlNode{\n constructor(tagname) {\n this.tagname = tagname;\n this.child = []; //nested tags, text, cdata, comments in order\n this[\":@\"] = {}; //attributes map\n }\n add(key,val){\n // this.child.push( {name : key, val: val, isCdata: isCdata });\n if(key === \"__proto__\") key = \"#__proto__\";\n this.child.push( {[key]: val });\n }\n addChild(node) {\n if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n }else{\n this.child.push( { [node.tagname]: node.child });\n }\n };\n};\n\n\nmodule.exports = XmlNode;","'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst mkdirsSync = require('../mkdirs').mkdirsSync\nconst utimesMillisSync = require('../util/utimes').utimesMillisSync\nconst stat = require('../util/stat')\n\nfunction copySync (src, dest, opts) {\n if (typeof opts === 'function') {\n opts = { filter: opts }\n }\n\n opts = opts || {}\n opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now\n opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber\n\n // Warn about using preserveTimestamps on 32-bit node\n if (opts.preserveTimestamps && process.arch === 'ia32') {\n process.emitWarning(\n 'Using the preserveTimestamps option in 32-bit node is not recommended;\\n\\n' +\n '\\tsee https://github.com/jprichardson/node-fs-extra/issues/269',\n 'Warning', 'fs-extra-WARN0002'\n )\n }\n\n const { srcStat, destStat } = stat.checkPathsSync(src, dest, 'copy', opts)\n stat.checkParentPathsSync(src, srcStat, dest, 'copy')\n if (opts.filter && !opts.filter(src, dest)) return\n const destParent = path.dirname(dest)\n if (!fs.existsSync(destParent)) mkdirsSync(destParent)\n return getStats(destStat, src, dest, opts)\n}\n\nfunction getStats (destStat, src, dest, opts) {\n const statSync = opts.dereference ? fs.statSync : fs.lstatSync\n const srcStat = statSync(src)\n\n if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)\n else if (srcStat.isFile() ||\n srcStat.isCharacterDevice() ||\n srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts)\n else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)\n else if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`)\n else if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`)\n throw new Error(`Unknown file: ${src}`)\n}\n\nfunction onFile (srcStat, destStat, src, dest, opts) {\n if (!destStat) return copyFile(srcStat, src, dest, opts)\n return mayCopyFile(srcStat, src, dest, opts)\n}\n\nfunction mayCopyFile (srcStat, src, dest, opts) {\n if (opts.overwrite) {\n fs.unlinkSync(dest)\n return copyFile(srcStat, src, dest, opts)\n } else if (opts.errorOnExist) {\n throw new Error(`'${dest}' already exists`)\n }\n}\n\nfunction copyFile (srcStat, src, dest, opts) {\n fs.copyFileSync(src, dest)\n if (opts.preserveTimestamps) handleTimestamps(srcStat.mode, src, dest)\n return setDestMode(dest, srcStat.mode)\n}\n\nfunction handleTimestamps (srcMode, src, dest) {\n // Make sure the file is writable before setting the timestamp\n // otherwise open fails with EPERM when invoked with 'r+'\n // (through utimes call)\n if (fileIsNotWritable(srcMode)) makeFileWritable(dest, srcMode)\n return setDestTimestamps(src, dest)\n}\n\nfunction fileIsNotWritable (srcMode) {\n return (srcMode & 0o200) === 0\n}\n\nfunction makeFileWritable (dest, srcMode) {\n return setDestMode(dest, srcMode | 0o200)\n}\n\nfunction setDestMode (dest, srcMode) {\n return fs.chmodSync(dest, srcMode)\n}\n\nfunction setDestTimestamps (src, dest) {\n // The initial srcStat.atime cannot be trusted\n // because it is modified by the read(2) system call\n // (See https://nodejs.org/api/fs.html#fs_stat_time_values)\n const updatedSrcStat = fs.statSync(src)\n return utimesMillisSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime)\n}\n\nfunction onDir (srcStat, destStat, src, dest, opts) {\n if (!destStat) return mkDirAndCopy(srcStat.mode, src, dest, opts)\n return copyDir(src, dest, opts)\n}\n\nfunction mkDirAndCopy (srcMode, src, dest, opts) {\n fs.mkdirSync(dest)\n copyDir(src, dest, opts)\n return setDestMode(dest, srcMode)\n}\n\nfunction copyDir (src, dest, opts) {\n fs.readdirSync(src).forEach(item => copyDirItem(item, src, dest, opts))\n}\n\nfunction copyDirItem (item, src, dest, opts) {\n const srcItem = path.join(src, item)\n const destItem = path.join(dest, item)\n if (opts.filter && !opts.filter(srcItem, destItem)) return\n const { destStat } = stat.checkPathsSync(srcItem, destItem, 'copy', opts)\n return getStats(destStat, srcItem, destItem, opts)\n}\n\nfunction onLink (destStat, src, dest, opts) {\n let resolvedSrc = fs.readlinkSync(src)\n if (opts.dereference) {\n resolvedSrc = path.resolve(process.cwd(), resolvedSrc)\n }\n\n if (!destStat) {\n return fs.symlinkSync(resolvedSrc, dest)\n } else {\n let resolvedDest\n try {\n resolvedDest = fs.readlinkSync(dest)\n } catch (err) {\n // dest exists and is a regular file or directory,\n // Windows may throw UNKNOWN error. If dest already exists,\n // fs throws error anyway, so no need to guard against it here.\n if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs.symlinkSync(resolvedSrc, dest)\n throw err\n }\n if (opts.dereference) {\n resolvedDest = path.resolve(process.cwd(), resolvedDest)\n }\n if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {\n throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)\n }\n\n // prevent copy if src is a subdir of dest since unlinking\n // dest in this case would result in removing src contents\n // and therefore a broken symlink would be created.\n if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) {\n throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)\n }\n return copyLink(resolvedSrc, dest)\n }\n}\n\nfunction copyLink (resolvedSrc, dest) {\n fs.unlinkSync(dest)\n return fs.symlinkSync(resolvedSrc, dest)\n}\n\nmodule.exports = copySync\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst { mkdirs } = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst { utimesMillis } = require('../util/utimes')\nconst stat = require('../util/stat')\n\nasync function copy (src, dest, opts = {}) {\n if (typeof opts === 'function') {\n opts = { filter: opts }\n }\n\n opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now\n opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber\n\n // Warn about using preserveTimestamps on 32-bit node\n if (opts.preserveTimestamps && process.arch === 'ia32') {\n process.emitWarning(\n 'Using the preserveTimestamps option in 32-bit node is not recommended;\\n\\n' +\n '\\tsee https://github.com/jprichardson/node-fs-extra/issues/269',\n 'Warning', 'fs-extra-WARN0001'\n )\n }\n\n const { srcStat, destStat } = await stat.checkPaths(src, dest, 'copy', opts)\n\n await stat.checkParentPaths(src, srcStat, dest, 'copy')\n\n const include = await runFilter(src, dest, opts)\n\n if (!include) return\n\n // check if the parent of dest exists, and create it if it doesn't exist\n const destParent = path.dirname(dest)\n const dirExists = await pathExists(destParent)\n if (!dirExists) {\n await mkdirs(destParent)\n }\n\n await getStatsAndPerformCopy(destStat, src, dest, opts)\n}\n\nasync function runFilter (src, dest, opts) {\n if (!opts.filter) return true\n return opts.filter(src, dest)\n}\n\nasync function getStatsAndPerformCopy (destStat, src, dest, opts) {\n const statFn = opts.dereference ? fs.stat : fs.lstat\n const srcStat = await statFn(src)\n\n if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)\n\n if (\n srcStat.isFile() ||\n srcStat.isCharacterDevice() ||\n srcStat.isBlockDevice()\n ) return onFile(srcStat, destStat, src, dest, opts)\n\n if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)\n if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`)\n if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`)\n throw new Error(`Unknown file: ${src}`)\n}\n\nasync function onFile (srcStat, destStat, src, dest, opts) {\n if (!destStat) return copyFile(srcStat, src, dest, opts)\n\n if (opts.overwrite) {\n await fs.unlink(dest)\n return copyFile(srcStat, src, dest, opts)\n }\n if (opts.errorOnExist) {\n throw new Error(`'${dest}' already exists`)\n }\n}\n\nasync function copyFile (srcStat, src, dest, opts) {\n await fs.copyFile(src, dest)\n if (opts.preserveTimestamps) {\n // Make sure the file is writable before setting the timestamp\n // otherwise open fails with EPERM when invoked with 'r+'\n // (through utimes call)\n if (fileIsNotWritable(srcStat.mode)) {\n await makeFileWritable(dest, srcStat.mode)\n }\n\n // Set timestamps and mode correspondingly\n\n // Note that The initial srcStat.atime cannot be trusted\n // because it is modified by the read(2) system call\n // (See https://nodejs.org/api/fs.html#fs_stat_time_values)\n const updatedSrcStat = await fs.stat(src)\n await utimesMillis(dest, updatedSrcStat.atime, updatedSrcStat.mtime)\n }\n\n return fs.chmod(dest, srcStat.mode)\n}\n\nfunction fileIsNotWritable (srcMode) {\n return (srcMode & 0o200) === 0\n}\n\nfunction makeFileWritable (dest, srcMode) {\n return fs.chmod(dest, srcMode | 0o200)\n}\n\nasync function onDir (srcStat, destStat, src, dest, opts) {\n // the dest directory might not exist, create it\n if (!destStat) {\n await fs.mkdir(dest)\n }\n\n const items = await fs.readdir(src)\n\n // loop through the files in the current directory to copy everything\n await Promise.all(items.map(async item => {\n const srcItem = path.join(src, item)\n const destItem = path.join(dest, item)\n\n // skip the item if it is matches by the filter function\n const include = await runFilter(srcItem, destItem, opts)\n if (!include) return\n\n const { destStat } = await stat.checkPaths(srcItem, destItem, 'copy', opts)\n\n // If the item is a copyable file, `getStatsAndPerformCopy` will copy it\n // If the item is a directory, `getStatsAndPerformCopy` will call `onDir` recursively\n return getStatsAndPerformCopy(destStat, srcItem, destItem, opts)\n }))\n\n if (!destStat) {\n await fs.chmod(dest, srcStat.mode)\n }\n}\n\nasync function onLink (destStat, src, dest, opts) {\n let resolvedSrc = await fs.readlink(src)\n if (opts.dereference) {\n resolvedSrc = path.resolve(process.cwd(), resolvedSrc)\n }\n if (!destStat) {\n return fs.symlink(resolvedSrc, dest)\n }\n\n let resolvedDest = null\n try {\n resolvedDest = await fs.readlink(dest)\n } catch (e) {\n // dest exists and is a regular file or directory,\n // Windows may throw UNKNOWN error. If dest already exists,\n // fs throws error anyway, so no need to guard against it here.\n if (e.code === 'EINVAL' || e.code === 'UNKNOWN') return fs.symlink(resolvedSrc, dest)\n throw e\n }\n if (opts.dereference) {\n resolvedDest = path.resolve(process.cwd(), resolvedDest)\n }\n if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {\n throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)\n }\n\n // do not copy if src is a subdir of dest since unlinking\n // dest in this case would result in removing src contents\n // and therefore a broken symlink would be created.\n if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) {\n throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)\n }\n\n // copy the link\n await fs.unlink(dest)\n return fs.symlink(resolvedSrc, dest)\n}\n\nmodule.exports = copy\n","'use strict'\n\nconst u = require('universalify').fromPromise\nmodule.exports = {\n copy: u(require('./copy')),\n copySync: require('./copy-sync')\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\nconst path = require('path')\nconst mkdir = require('../mkdirs')\nconst remove = require('../remove')\n\nconst emptyDir = u(async function emptyDir (dir) {\n let items\n try {\n items = await fs.readdir(dir)\n } catch {\n return mkdir.mkdirs(dir)\n }\n\n return Promise.all(items.map(item => remove.remove(path.join(dir, item))))\n})\n\nfunction emptyDirSync (dir) {\n let items\n try {\n items = fs.readdirSync(dir)\n } catch {\n return mkdir.mkdirsSync(dir)\n }\n\n items.forEach(item => {\n item = path.join(dir, item)\n remove.removeSync(item)\n })\n}\n\nmodule.exports = {\n emptyDirSync,\n emptydirSync: emptyDirSync,\n emptyDir,\n emptydir: emptyDir\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\nconst mkdir = require('../mkdirs')\n\nasync function createFile (file) {\n let stats\n try {\n stats = await fs.stat(file)\n } catch { }\n if (stats && stats.isFile()) return\n\n const dir = path.dirname(file)\n\n let dirStats = null\n try {\n dirStats = await fs.stat(dir)\n } catch (err) {\n // if the directory doesn't exist, make it\n if (err.code === 'ENOENT') {\n await mkdir.mkdirs(dir)\n await fs.writeFile(file, '')\n return\n } else {\n throw err\n }\n }\n\n if (dirStats.isDirectory()) {\n await fs.writeFile(file, '')\n } else {\n // parent is not a directory\n // This is just to cause an internal ENOTDIR error to be thrown\n await fs.readdir(dir)\n }\n}\n\nfunction createFileSync (file) {\n let stats\n try {\n stats = fs.statSync(file)\n } catch { }\n if (stats && stats.isFile()) return\n\n const dir = path.dirname(file)\n try {\n if (!fs.statSync(dir).isDirectory()) {\n // parent is not a directory\n // This is just to cause an internal ENOTDIR error to be thrown\n fs.readdirSync(dir)\n }\n } catch (err) {\n // If the stat call above failed because the directory doesn't exist, create it\n if (err && err.code === 'ENOENT') mkdir.mkdirsSync(dir)\n else throw err\n }\n\n fs.writeFileSync(file, '')\n}\n\nmodule.exports = {\n createFile: u(createFile),\n createFileSync\n}\n","'use strict'\n\nconst { createFile, createFileSync } = require('./file')\nconst { createLink, createLinkSync } = require('./link')\nconst { createSymlink, createSymlinkSync } = require('./symlink')\n\nmodule.exports = {\n // file\n createFile,\n createFileSync,\n ensureFile: createFile,\n ensureFileSync: createFileSync,\n // link\n createLink,\n createLinkSync,\n ensureLink: createLink,\n ensureLinkSync: createLinkSync,\n // symlink\n createSymlink,\n createSymlinkSync,\n ensureSymlink: createSymlink,\n ensureSymlinkSync: createSymlinkSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\nconst mkdir = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst { areIdentical } = require('../util/stat')\n\nasync function createLink (srcpath, dstpath) {\n let dstStat\n try {\n dstStat = await fs.lstat(dstpath)\n } catch {\n // ignore error\n }\n\n let srcStat\n try {\n srcStat = await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureLink')\n throw err\n }\n\n if (dstStat && areIdentical(srcStat, dstStat)) return\n\n const dir = path.dirname(dstpath)\n\n const dirExists = await pathExists(dir)\n\n if (!dirExists) {\n await mkdir.mkdirs(dir)\n }\n\n await fs.link(srcpath, dstpath)\n}\n\nfunction createLinkSync (srcpath, dstpath) {\n let dstStat\n try {\n dstStat = fs.lstatSync(dstpath)\n } catch {}\n\n try {\n const srcStat = fs.lstatSync(srcpath)\n if (dstStat && areIdentical(srcStat, dstStat)) return\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureLink')\n throw err\n }\n\n const dir = path.dirname(dstpath)\n const dirExists = fs.existsSync(dir)\n if (dirExists) return fs.linkSync(srcpath, dstpath)\n mkdir.mkdirsSync(dir)\n\n return fs.linkSync(srcpath, dstpath)\n}\n\nmodule.exports = {\n createLink: u(createLink),\n createLinkSync\n}\n","'use strict'\n\nconst path = require('path')\nconst fs = require('../fs')\nconst { pathExists } = require('../path-exists')\n\nconst u = require('universalify').fromPromise\n\n/**\n * Function that returns two types of paths, one relative to symlink, and one\n * relative to the current working directory. Checks if path is absolute or\n * relative. If the path is relative, this function checks if the path is\n * relative to symlink or relative to current working directory. This is an\n * initiative to find a smarter `srcpath` to supply when building symlinks.\n * This allows you to determine which path to use out of one of three possible\n * types of source paths. The first is an absolute path. This is detected by\n * `path.isAbsolute()`. When an absolute path is provided, it is checked to\n * see if it exists. If it does it's used, if not an error is returned\n * (callback)/ thrown (sync). The other two options for `srcpath` are a\n * relative url. By default Node's `fs.symlink` works by creating a symlink\n * using `dstpath` and expects the `srcpath` to be relative to the newly\n * created symlink. If you provide a `srcpath` that does not exist on the file\n * system it results in a broken symlink. To minimize this, the function\n * checks to see if the 'relative to symlink' source file exists, and if it\n * does it will use it. If it does not, it checks if there's a file that\n * exists that is relative to the current working directory, if does its used.\n * This preserves the expectations of the original fs.symlink spec and adds\n * the ability to pass in `relative to current working direcotry` paths.\n */\n\nasync function symlinkPaths (srcpath, dstpath) {\n if (path.isAbsolute(srcpath)) {\n try {\n await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureSymlink')\n throw err\n }\n\n return {\n toCwd: srcpath,\n toDst: srcpath\n }\n }\n\n const dstdir = path.dirname(dstpath)\n const relativeToDst = path.join(dstdir, srcpath)\n\n const exists = await pathExists(relativeToDst)\n if (exists) {\n return {\n toCwd: relativeToDst,\n toDst: srcpath\n }\n }\n\n try {\n await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureSymlink')\n throw err\n }\n\n return {\n toCwd: srcpath,\n toDst: path.relative(dstdir, srcpath)\n }\n}\n\nfunction symlinkPathsSync (srcpath, dstpath) {\n if (path.isAbsolute(srcpath)) {\n const exists = fs.existsSync(srcpath)\n if (!exists) throw new Error('absolute srcpath does not exist')\n return {\n toCwd: srcpath,\n toDst: srcpath\n }\n }\n\n const dstdir = path.dirname(dstpath)\n const relativeToDst = path.join(dstdir, srcpath)\n const exists = fs.existsSync(relativeToDst)\n if (exists) {\n return {\n toCwd: relativeToDst,\n toDst: srcpath\n }\n }\n\n const srcExists = fs.existsSync(srcpath)\n if (!srcExists) throw new Error('relative srcpath does not exist')\n return {\n toCwd: srcpath,\n toDst: path.relative(dstdir, srcpath)\n }\n}\n\nmodule.exports = {\n symlinkPaths: u(symlinkPaths),\n symlinkPathsSync\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst u = require('universalify').fromPromise\n\nasync function symlinkType (srcpath, type) {\n if (type) return type\n\n let stats\n try {\n stats = await fs.lstat(srcpath)\n } catch {\n return 'file'\n }\n\n return (stats && stats.isDirectory()) ? 'dir' : 'file'\n}\n\nfunction symlinkTypeSync (srcpath, type) {\n if (type) return type\n\n let stats\n try {\n stats = fs.lstatSync(srcpath)\n } catch {\n return 'file'\n }\n return (stats && stats.isDirectory()) ? 'dir' : 'file'\n}\n\nmodule.exports = {\n symlinkType: u(symlinkType),\n symlinkTypeSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\n\nconst { mkdirs, mkdirsSync } = require('../mkdirs')\n\nconst { symlinkPaths, symlinkPathsSync } = require('./symlink-paths')\nconst { symlinkType, symlinkTypeSync } = require('./symlink-type')\n\nconst { pathExists } = require('../path-exists')\n\nconst { areIdentical } = require('../util/stat')\n\nasync function createSymlink (srcpath, dstpath, type) {\n let stats\n try {\n stats = await fs.lstat(dstpath)\n } catch { }\n\n if (stats && stats.isSymbolicLink()) {\n const [srcStat, dstStat] = await Promise.all([\n fs.stat(srcpath),\n fs.stat(dstpath)\n ])\n\n if (areIdentical(srcStat, dstStat)) return\n }\n\n const relative = await symlinkPaths(srcpath, dstpath)\n srcpath = relative.toDst\n const toType = await symlinkType(relative.toCwd, type)\n const dir = path.dirname(dstpath)\n\n if (!(await pathExists(dir))) {\n await mkdirs(dir)\n }\n\n return fs.symlink(srcpath, dstpath, toType)\n}\n\nfunction createSymlinkSync (srcpath, dstpath, type) {\n let stats\n try {\n stats = fs.lstatSync(dstpath)\n } catch { }\n if (stats && stats.isSymbolicLink()) {\n const srcStat = fs.statSync(srcpath)\n const dstStat = fs.statSync(dstpath)\n if (areIdentical(srcStat, dstStat)) return\n }\n\n const relative = symlinkPathsSync(srcpath, dstpath)\n srcpath = relative.toDst\n type = symlinkTypeSync(relative.toCwd, type)\n const dir = path.dirname(dstpath)\n const exists = fs.existsSync(dir)\n if (exists) return fs.symlinkSync(srcpath, dstpath, type)\n mkdirsSync(dir)\n return fs.symlinkSync(srcpath, dstpath, type)\n}\n\nmodule.exports = {\n createSymlink: u(createSymlink),\n createSymlinkSync\n}\n","'use strict'\n// This is adapted from https://github.com/normalize/mz\n// Copyright (c) 2014-2016 Jonathan Ong me@jongleberry.com and Contributors\nconst u = require('universalify').fromCallback\nconst fs = require('graceful-fs')\n\nconst api = [\n 'access',\n 'appendFile',\n 'chmod',\n 'chown',\n 'close',\n 'copyFile',\n 'fchmod',\n 'fchown',\n 'fdatasync',\n 'fstat',\n 'fsync',\n 'ftruncate',\n 'futimes',\n 'lchmod',\n 'lchown',\n 'link',\n 'lstat',\n 'mkdir',\n 'mkdtemp',\n 'open',\n 'opendir',\n 'readdir',\n 'readFile',\n 'readlink',\n 'realpath',\n 'rename',\n 'rm',\n 'rmdir',\n 'stat',\n 'symlink',\n 'truncate',\n 'unlink',\n 'utimes',\n 'writeFile'\n].filter(key => {\n // Some commands are not available on some systems. Ex:\n // fs.cp was added in Node.js v16.7.0\n // fs.lchown is not available on at least some Linux\n return typeof fs[key] === 'function'\n})\n\n// Export cloned fs:\nObject.assign(exports, fs)\n\n// Universalify async methods:\napi.forEach(method => {\n exports[method] = u(fs[method])\n})\n\n// We differ from mz/fs in that we still ship the old, broken, fs.exists()\n// since we are a drop-in replacement for the native module\nexports.exists = function (filename, callback) {\n if (typeof callback === 'function') {\n return fs.exists(filename, callback)\n }\n return new Promise(resolve => {\n return fs.exists(filename, resolve)\n })\n}\n\n// fs.read(), fs.write(), fs.readv(), & fs.writev() need special treatment due to multiple callback args\n\nexports.read = function (fd, buffer, offset, length, position, callback) {\n if (typeof callback === 'function') {\n return fs.read(fd, buffer, offset, length, position, callback)\n }\n return new Promise((resolve, reject) => {\n fs.read(fd, buffer, offset, length, position, (err, bytesRead, buffer) => {\n if (err) return reject(err)\n resolve({ bytesRead, buffer })\n })\n })\n}\n\n// Function signature can be\n// fs.write(fd, buffer[, offset[, length[, position]]], callback)\n// OR\n// fs.write(fd, string[, position[, encoding]], callback)\n// We need to handle both cases, so we use ...args\nexports.write = function (fd, buffer, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.write(fd, buffer, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.write(fd, buffer, ...args, (err, bytesWritten, buffer) => {\n if (err) return reject(err)\n resolve({ bytesWritten, buffer })\n })\n })\n}\n\n// Function signature is\n// s.readv(fd, buffers[, position], callback)\n// We need to handle the optional arg, so we use ...args\nexports.readv = function (fd, buffers, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.readv(fd, buffers, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.readv(fd, buffers, ...args, (err, bytesRead, buffers) => {\n if (err) return reject(err)\n resolve({ bytesRead, buffers })\n })\n })\n}\n\n// Function signature is\n// s.writev(fd, buffers[, position], callback)\n// We need to handle the optional arg, so we use ...args\nexports.writev = function (fd, buffers, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.writev(fd, buffers, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.writev(fd, buffers, ...args, (err, bytesWritten, buffers) => {\n if (err) return reject(err)\n resolve({ bytesWritten, buffers })\n })\n })\n}\n\n// fs.realpath.native sometimes not available if fs is monkey-patched\nif (typeof fs.realpath.native === 'function') {\n exports.realpath.native = u(fs.realpath.native)\n} else {\n process.emitWarning(\n 'fs.realpath.native is not a function. Is fs being monkey-patched?',\n 'Warning', 'fs-extra-WARN0003'\n )\n}\n","'use strict'\n\nmodule.exports = {\n // Export promiseified graceful-fs:\n ...require('./fs'),\n // Export extra methods:\n ...require('./copy'),\n ...require('./empty'),\n ...require('./ensure'),\n ...require('./json'),\n ...require('./mkdirs'),\n ...require('./move'),\n ...require('./output-file'),\n ...require('./path-exists'),\n ...require('./remove')\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst jsonFile = require('./jsonfile')\n\njsonFile.outputJson = u(require('./output-json'))\njsonFile.outputJsonSync = require('./output-json-sync')\n// aliases\njsonFile.outputJSON = jsonFile.outputJson\njsonFile.outputJSONSync = jsonFile.outputJsonSync\njsonFile.writeJSON = jsonFile.writeJson\njsonFile.writeJSONSync = jsonFile.writeJsonSync\njsonFile.readJSON = jsonFile.readJson\njsonFile.readJSONSync = jsonFile.readJsonSync\n\nmodule.exports = jsonFile\n","'use strict'\n\nconst jsonFile = require('jsonfile')\n\nmodule.exports = {\n // jsonfile exports\n readJson: jsonFile.readFile,\n readJsonSync: jsonFile.readFileSync,\n writeJson: jsonFile.writeFile,\n writeJsonSync: jsonFile.writeFileSync\n}\n","'use strict'\n\nconst { stringify } = require('jsonfile/utils')\nconst { outputFileSync } = require('../output-file')\n\nfunction outputJsonSync (file, data, options) {\n const str = stringify(data, options)\n\n outputFileSync(file, str, options)\n}\n\nmodule.exports = outputJsonSync\n","'use strict'\n\nconst { stringify } = require('jsonfile/utils')\nconst { outputFile } = require('../output-file')\n\nasync function outputJson (file, data, options = {}) {\n const str = stringify(data, options)\n\n await outputFile(file, str, options)\n}\n\nmodule.exports = outputJson\n","'use strict'\nconst u = require('universalify').fromPromise\nconst { makeDir: _makeDir, makeDirSync } = require('./make-dir')\nconst makeDir = u(_makeDir)\n\nmodule.exports = {\n mkdirs: makeDir,\n mkdirsSync: makeDirSync,\n // alias\n mkdirp: makeDir,\n mkdirpSync: makeDirSync,\n ensureDir: makeDir,\n ensureDirSync: makeDirSync\n}\n","'use strict'\nconst fs = require('../fs')\nconst { checkPath } = require('./utils')\n\nconst getMode = options => {\n const defaults = { mode: 0o777 }\n if (typeof options === 'number') return options\n return ({ ...defaults, ...options }).mode\n}\n\nmodule.exports.makeDir = async (dir, options) => {\n checkPath(dir)\n\n return fs.mkdir(dir, {\n mode: getMode(options),\n recursive: true\n })\n}\n\nmodule.exports.makeDirSync = (dir, options) => {\n checkPath(dir)\n\n return fs.mkdirSync(dir, {\n mode: getMode(options),\n recursive: true\n })\n}\n","// Adapted from https://github.com/sindresorhus/make-dir\n// Copyright (c) Sindre Sorhus (sindresorhus.com)\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict'\nconst path = require('path')\n\n// https://github.com/nodejs/node/issues/8987\n// https://github.com/libuv/libuv/pull/1088\nmodule.exports.checkPath = function checkPath (pth) {\n if (process.platform === 'win32') {\n const pathHasInvalidWinCharacters = /[<>:\"|?*]/.test(pth.replace(path.parse(pth).root, ''))\n\n if (pathHasInvalidWinCharacters) {\n const error = new Error(`Path contains invalid characters: ${pth}`)\n error.code = 'EINVAL'\n throw error\n }\n }\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nmodule.exports = {\n move: u(require('./move')),\n moveSync: require('./move-sync')\n}\n","'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst copySync = require('../copy').copySync\nconst removeSync = require('../remove').removeSync\nconst mkdirpSync = require('../mkdirs').mkdirpSync\nconst stat = require('../util/stat')\n\nfunction moveSync (src, dest, opts) {\n opts = opts || {}\n const overwrite = opts.overwrite || opts.clobber || false\n\n const { srcStat, isChangingCase = false } = stat.checkPathsSync(src, dest, 'move', opts)\n stat.checkParentPathsSync(src, srcStat, dest, 'move')\n if (!isParentRoot(dest)) mkdirpSync(path.dirname(dest))\n return doRename(src, dest, overwrite, isChangingCase)\n}\n\nfunction isParentRoot (dest) {\n const parent = path.dirname(dest)\n const parsedPath = path.parse(parent)\n return parsedPath.root === parent\n}\n\nfunction doRename (src, dest, overwrite, isChangingCase) {\n if (isChangingCase) return rename(src, dest, overwrite)\n if (overwrite) {\n removeSync(dest)\n return rename(src, dest, overwrite)\n }\n if (fs.existsSync(dest)) throw new Error('dest already exists.')\n return rename(src, dest, overwrite)\n}\n\nfunction rename (src, dest, overwrite) {\n try {\n fs.renameSync(src, dest)\n } catch (err) {\n if (err.code !== 'EXDEV') throw err\n return moveAcrossDevice(src, dest, overwrite)\n }\n}\n\nfunction moveAcrossDevice (src, dest, overwrite) {\n const opts = {\n overwrite,\n errorOnExist: true,\n preserveTimestamps: true\n }\n copySync(src, dest, opts)\n return removeSync(src)\n}\n\nmodule.exports = moveSync\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst { copy } = require('../copy')\nconst { remove } = require('../remove')\nconst { mkdirp } = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst stat = require('../util/stat')\n\nasync function move (src, dest, opts = {}) {\n const overwrite = opts.overwrite || opts.clobber || false\n\n const { srcStat, isChangingCase = false } = await stat.checkPaths(src, dest, 'move', opts)\n\n await stat.checkParentPaths(src, srcStat, dest, 'move')\n\n // If the parent of dest is not root, make sure it exists before proceeding\n const destParent = path.dirname(dest)\n const parsedParentPath = path.parse(destParent)\n if (parsedParentPath.root !== destParent) {\n await mkdirp(destParent)\n }\n\n return doRename(src, dest, overwrite, isChangingCase)\n}\n\nasync function doRename (src, dest, overwrite, isChangingCase) {\n if (!isChangingCase) {\n if (overwrite) {\n await remove(dest)\n } else if (await pathExists(dest)) {\n throw new Error('dest already exists.')\n }\n }\n\n try {\n // Try w/ rename first, and try copy + remove if EXDEV\n await fs.rename(src, dest)\n } catch (err) {\n if (err.code !== 'EXDEV') {\n throw err\n }\n await moveAcrossDevice(src, dest, overwrite)\n }\n}\n\nasync function moveAcrossDevice (src, dest, overwrite) {\n const opts = {\n overwrite,\n errorOnExist: true,\n preserveTimestamps: true\n }\n\n await copy(src, dest, opts)\n return remove(src)\n}\n\nmodule.exports = move\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\nconst path = require('path')\nconst mkdir = require('../mkdirs')\nconst pathExists = require('../path-exists').pathExists\n\nasync function outputFile (file, data, encoding = 'utf-8') {\n const dir = path.dirname(file)\n\n if (!(await pathExists(dir))) {\n await mkdir.mkdirs(dir)\n }\n\n return fs.writeFile(file, data, encoding)\n}\n\nfunction outputFileSync (file, ...args) {\n const dir = path.dirname(file)\n if (!fs.existsSync(dir)) {\n mkdir.mkdirsSync(dir)\n }\n\n fs.writeFileSync(file, ...args)\n}\n\nmodule.exports = {\n outputFile: u(outputFile),\n outputFileSync\n}\n","'use strict'\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\n\nfunction pathExists (path) {\n return fs.access(path).then(() => true).catch(() => false)\n}\n\nmodule.exports = {\n pathExists: u(pathExists),\n pathExistsSync: fs.existsSync\n}\n","'use strict'\n\nconst fs = require('graceful-fs')\nconst u = require('universalify').fromCallback\n\nfunction remove (path, callback) {\n fs.rm(path, { recursive: true, force: true }, callback)\n}\n\nfunction removeSync (path) {\n fs.rmSync(path, { recursive: true, force: true })\n}\n\nmodule.exports = {\n remove: u(remove),\n removeSync\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst u = require('universalify').fromPromise\n\nfunction getStats (src, dest, opts) {\n const statFunc = opts.dereference\n ? (file) => fs.stat(file, { bigint: true })\n : (file) => fs.lstat(file, { bigint: true })\n return Promise.all([\n statFunc(src),\n statFunc(dest).catch(err => {\n if (err.code === 'ENOENT') return null\n throw err\n })\n ]).then(([srcStat, destStat]) => ({ srcStat, destStat }))\n}\n\nfunction getStatsSync (src, dest, opts) {\n let destStat\n const statFunc = opts.dereference\n ? (file) => fs.statSync(file, { bigint: true })\n : (file) => fs.lstatSync(file, { bigint: true })\n const srcStat = statFunc(src)\n try {\n destStat = statFunc(dest)\n } catch (err) {\n if (err.code === 'ENOENT') return { srcStat, destStat: null }\n throw err\n }\n return { srcStat, destStat }\n}\n\nasync function checkPaths (src, dest, funcName, opts) {\n const { srcStat, destStat } = await getStats(src, dest, opts)\n if (destStat) {\n if (areIdentical(srcStat, destStat)) {\n const srcBaseName = path.basename(src)\n const destBaseName = path.basename(dest)\n if (funcName === 'move' &&\n srcBaseName !== destBaseName &&\n srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {\n return { srcStat, destStat, isChangingCase: true }\n }\n throw new Error('Source and destination must not be the same.')\n }\n if (srcStat.isDirectory() && !destStat.isDirectory()) {\n throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)\n }\n if (!srcStat.isDirectory() && destStat.isDirectory()) {\n throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)\n }\n }\n\n if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n\n return { srcStat, destStat }\n}\n\nfunction checkPathsSync (src, dest, funcName, opts) {\n const { srcStat, destStat } = getStatsSync(src, dest, opts)\n\n if (destStat) {\n if (areIdentical(srcStat, destStat)) {\n const srcBaseName = path.basename(src)\n const destBaseName = path.basename(dest)\n if (funcName === 'move' &&\n srcBaseName !== destBaseName &&\n srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {\n return { srcStat, destStat, isChangingCase: true }\n }\n throw new Error('Source and destination must not be the same.')\n }\n if (srcStat.isDirectory() && !destStat.isDirectory()) {\n throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)\n }\n if (!srcStat.isDirectory() && destStat.isDirectory()) {\n throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)\n }\n }\n\n if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n return { srcStat, destStat }\n}\n\n// recursively check if dest parent is a subdirectory of src.\n// It works for all file types including symlinks since it\n// checks the src and dest inodes. It starts from the deepest\n// parent and stops once it reaches the src parent or the root path.\nasync function checkParentPaths (src, srcStat, dest, funcName) {\n const srcParent = path.resolve(path.dirname(src))\n const destParent = path.resolve(path.dirname(dest))\n if (destParent === srcParent || destParent === path.parse(destParent).root) return\n\n let destStat\n try {\n destStat = await fs.stat(destParent, { bigint: true })\n } catch (err) {\n if (err.code === 'ENOENT') return\n throw err\n }\n\n if (areIdentical(srcStat, destStat)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n\n return checkParentPaths(src, srcStat, destParent, funcName)\n}\n\nfunction checkParentPathsSync (src, srcStat, dest, funcName) {\n const srcParent = path.resolve(path.dirname(src))\n const destParent = path.resolve(path.dirname(dest))\n if (destParent === srcParent || destParent === path.parse(destParent).root) return\n let destStat\n try {\n destStat = fs.statSync(destParent, { bigint: true })\n } catch (err) {\n if (err.code === 'ENOENT') return\n throw err\n }\n if (areIdentical(srcStat, destStat)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n return checkParentPathsSync(src, srcStat, destParent, funcName)\n}\n\nfunction areIdentical (srcStat, destStat) {\n return destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev\n}\n\n// return true if dest is a subdir of src, otherwise false.\n// It only checks the path strings.\nfunction isSrcSubdir (src, dest) {\n const srcArr = path.resolve(src).split(path.sep).filter(i => i)\n const destArr = path.resolve(dest).split(path.sep).filter(i => i)\n return srcArr.every((cur, i) => destArr[i] === cur)\n}\n\nfunction errMsg (src, dest, funcName) {\n return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`\n}\n\nmodule.exports = {\n // checkPaths\n checkPaths: u(checkPaths),\n checkPathsSync,\n // checkParent\n checkParentPaths: u(checkParentPaths),\n checkParentPathsSync,\n // Misc\n isSrcSubdir,\n areIdentical\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst u = require('universalify').fromPromise\n\nasync function utimesMillis (path, atime, mtime) {\n // if (!HAS_MILLIS_RES) return fs.utimes(path, atime, mtime, callback)\n const fd = await fs.open(path, 'r+')\n\n let closeErr = null\n\n try {\n await fs.futimes(fd, atime, mtime)\n } finally {\n try {\n await fs.close(fd)\n } catch (e) {\n closeErr = e\n }\n }\n\n if (closeErr) {\n throw closeErr\n }\n}\n\nfunction utimesMillisSync (path, atime, mtime) {\n const fd = fs.openSync(path, 'r+')\n fs.futimesSync(fd, atime, mtime)\n return fs.closeSync(fd)\n}\n\nmodule.exports = {\n utimesMillis: u(utimesMillis),\n utimesMillisSync\n}\n","'use strict'\n\nmodule.exports = clone\n\nvar getPrototypeOf = Object.getPrototypeOf || function (obj) {\n return obj.__proto__\n}\n\nfunction clone (obj) {\n if (obj === null || typeof obj !== 'object')\n return obj\n\n if (obj instanceof Object)\n var copy = { __proto__: getPrototypeOf(obj) }\n else\n var copy = Object.create(null)\n\n Object.getOwnPropertyNames(obj).forEach(function (key) {\n Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))\n })\n\n return copy\n}\n","var fs = require('fs')\nvar polyfills = require('./polyfills.js')\nvar legacy = require('./legacy-streams.js')\nvar clone = require('./clone.js')\n\nvar util = require('util')\n\n/* istanbul ignore next - node 0.x polyfill */\nvar gracefulQueue\nvar previousSymbol\n\n/* istanbul ignore else - node 0.x polyfill */\nif (typeof Symbol === 'function' && typeof Symbol.for === 'function') {\n gracefulQueue = Symbol.for('graceful-fs.queue')\n // This is used in testing by future versions\n previousSymbol = Symbol.for('graceful-fs.previous')\n} else {\n gracefulQueue = '___graceful-fs.queue'\n previousSymbol = '___graceful-fs.previous'\n}\n\nfunction noop () {}\n\nfunction publishQueue(context, queue) {\n Object.defineProperty(context, gracefulQueue, {\n get: function() {\n return queue\n }\n })\n}\n\nvar debug = noop\nif (util.debuglog)\n debug = util.debuglog('gfs4')\nelse if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || ''))\n debug = function() {\n var m = util.format.apply(util, arguments)\n m = 'GFS4: ' + m.split(/\\n/).join('\\nGFS4: ')\n console.error(m)\n }\n\n// Once time initialization\nif (!fs[gracefulQueue]) {\n // This queue can be shared by multiple loaded instances\n var queue = global[gracefulQueue] || []\n publishQueue(fs, queue)\n\n // Patch fs.close/closeSync to shared queue version, because we need\n // to retry() whenever a close happens *anywhere* in the program.\n // This is essential when multiple graceful-fs instances are\n // in play at the same time.\n fs.close = (function (fs$close) {\n function close (fd, cb) {\n return fs$close.call(fs, fd, function (err) {\n // This function uses the graceful-fs shared queue\n if (!err) {\n resetQueue()\n }\n\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n })\n }\n\n Object.defineProperty(close, previousSymbol, {\n value: fs$close\n })\n return close\n })(fs.close)\n\n fs.closeSync = (function (fs$closeSync) {\n function closeSync (fd) {\n // This function uses the graceful-fs shared queue\n fs$closeSync.apply(fs, arguments)\n resetQueue()\n }\n\n Object.defineProperty(closeSync, previousSymbol, {\n value: fs$closeSync\n })\n return closeSync\n })(fs.closeSync)\n\n if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || '')) {\n process.on('exit', function() {\n debug(fs[gracefulQueue])\n require('assert').equal(fs[gracefulQueue].length, 0)\n })\n }\n}\n\nif (!global[gracefulQueue]) {\n publishQueue(global, fs[gracefulQueue]);\n}\n\nmodule.exports = patch(clone(fs))\nif (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {\n module.exports = patch(fs)\n fs.__patched = true;\n}\n\nfunction patch (fs) {\n // Everything that references the open() function needs to be in here\n polyfills(fs)\n fs.gracefulify = patch\n\n fs.createReadStream = createReadStream\n fs.createWriteStream = createWriteStream\n var fs$readFile = fs.readFile\n fs.readFile = readFile\n function readFile (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$readFile(path, options, cb)\n\n function go$readFile (path, options, cb, startTime) {\n return fs$readFile(path, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$writeFile = fs.writeFile\n fs.writeFile = writeFile\n function writeFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$writeFile(path, data, options, cb)\n\n function go$writeFile (path, data, options, cb, startTime) {\n return fs$writeFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$appendFile = fs.appendFile\n if (fs$appendFile)\n fs.appendFile = appendFile\n function appendFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$appendFile(path, data, options, cb)\n\n function go$appendFile (path, data, options, cb, startTime) {\n return fs$appendFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$copyFile = fs.copyFile\n if (fs$copyFile)\n fs.copyFile = copyFile\n function copyFile (src, dest, flags, cb) {\n if (typeof flags === 'function') {\n cb = flags\n flags = 0\n }\n return go$copyFile(src, dest, flags, cb)\n\n function go$copyFile (src, dest, flags, cb, startTime) {\n return fs$copyFile(src, dest, flags, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$readdir = fs.readdir\n fs.readdir = readdir\n var noReaddirOptionVersions = /^v[0-5]\\./\n function readdir (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n var go$readdir = noReaddirOptionVersions.test(process.version)\n ? function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n : function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, options, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n\n return go$readdir(path, options, cb)\n\n function fs$readdirCallback (path, options, cb, startTime) {\n return function (err, files) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([\n go$readdir,\n [path, options, cb],\n err,\n startTime || Date.now(),\n Date.now()\n ])\n else {\n if (files && files.sort)\n files.sort()\n\n if (typeof cb === 'function')\n cb.call(this, err, files)\n }\n }\n }\n }\n\n if (process.version.substr(0, 4) === 'v0.8') {\n var legStreams = legacy(fs)\n ReadStream = legStreams.ReadStream\n WriteStream = legStreams.WriteStream\n }\n\n var fs$ReadStream = fs.ReadStream\n if (fs$ReadStream) {\n ReadStream.prototype = Object.create(fs$ReadStream.prototype)\n ReadStream.prototype.open = ReadStream$open\n }\n\n var fs$WriteStream = fs.WriteStream\n if (fs$WriteStream) {\n WriteStream.prototype = Object.create(fs$WriteStream.prototype)\n WriteStream.prototype.open = WriteStream$open\n }\n\n Object.defineProperty(fs, 'ReadStream', {\n get: function () {\n return ReadStream\n },\n set: function (val) {\n ReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n Object.defineProperty(fs, 'WriteStream', {\n get: function () {\n return WriteStream\n },\n set: function (val) {\n WriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n // legacy names\n var FileReadStream = ReadStream\n Object.defineProperty(fs, 'FileReadStream', {\n get: function () {\n return FileReadStream\n },\n set: function (val) {\n FileReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n var FileWriteStream = WriteStream\n Object.defineProperty(fs, 'FileWriteStream', {\n get: function () {\n return FileWriteStream\n },\n set: function (val) {\n FileWriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n function ReadStream (path, options) {\n if (this instanceof ReadStream)\n return fs$ReadStream.apply(this, arguments), this\n else\n return ReadStream.apply(Object.create(ReadStream.prototype), arguments)\n }\n\n function ReadStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n if (that.autoClose)\n that.destroy()\n\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n that.read()\n }\n })\n }\n\n function WriteStream (path, options) {\n if (this instanceof WriteStream)\n return fs$WriteStream.apply(this, arguments), this\n else\n return WriteStream.apply(Object.create(WriteStream.prototype), arguments)\n }\n\n function WriteStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n that.destroy()\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n }\n })\n }\n\n function createReadStream (path, options) {\n return new fs.ReadStream(path, options)\n }\n\n function createWriteStream (path, options) {\n return new fs.WriteStream(path, options)\n }\n\n var fs$open = fs.open\n fs.open = open\n function open (path, flags, mode, cb) {\n if (typeof mode === 'function')\n cb = mode, mode = null\n\n return go$open(path, flags, mode, cb)\n\n function go$open (path, flags, mode, cb, startTime) {\n return fs$open(path, flags, mode, function (err, fd) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n return fs\n}\n\nfunction enqueue (elem) {\n debug('ENQUEUE', elem[0].name, elem[1])\n fs[gracefulQueue].push(elem)\n retry()\n}\n\n// keep track of the timeout between retry() calls\nvar retryTimer\n\n// reset the startTime and lastTime to now\n// this resets the start of the 60 second overall timeout as well as the\n// delay between attempts so that we'll retry these jobs sooner\nfunction resetQueue () {\n var now = Date.now()\n for (var i = 0; i < fs[gracefulQueue].length; ++i) {\n // entries that are only a length of 2 are from an older version, don't\n // bother modifying those since they'll be retried anyway.\n if (fs[gracefulQueue][i].length > 2) {\n fs[gracefulQueue][i][3] = now // startTime\n fs[gracefulQueue][i][4] = now // lastTime\n }\n }\n // call retry to make sure we're actively processing the queue\n retry()\n}\n\nfunction retry () {\n // clear the timer and remove it to help prevent unintended concurrency\n clearTimeout(retryTimer)\n retryTimer = undefined\n\n if (fs[gracefulQueue].length === 0)\n return\n\n var elem = fs[gracefulQueue].shift()\n var fn = elem[0]\n var args = elem[1]\n // these items may be unset if they were added by an older graceful-fs\n var err = elem[2]\n var startTime = elem[3]\n var lastTime = elem[4]\n\n // if we don't have a startTime we have no way of knowing if we've waited\n // long enough, so go ahead and retry this item now\n if (startTime === undefined) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args)\n } else if (Date.now() - startTime >= 60000) {\n // it's been more than 60 seconds total, bail now\n debug('TIMEOUT', fn.name, args)\n var cb = args.pop()\n if (typeof cb === 'function')\n cb.call(null, err)\n } else {\n // the amount of time between the last attempt and right now\n var sinceAttempt = Date.now() - lastTime\n // the amount of time between when we first tried, and when we last tried\n // rounded up to at least 1\n var sinceStart = Math.max(lastTime - startTime, 1)\n // backoff. wait longer than the total time we've been retrying, but only\n // up to a maximum of 100ms\n var desiredDelay = Math.min(sinceStart * 1.2, 100)\n // it's been long enough since the last retry, do it again\n if (sinceAttempt >= desiredDelay) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args.concat([startTime]))\n } else {\n // if we can't do this job yet, push it to the end of the queue\n // and let the next iteration check again\n fs[gracefulQueue].push(elem)\n }\n }\n\n // schedule our next run if one isn't already scheduled\n if (retryTimer === undefined) {\n retryTimer = setTimeout(retry, 0)\n }\n}\n","var Stream = require('stream').Stream\n\nmodule.exports = legacy\n\nfunction legacy (fs) {\n return {\n ReadStream: ReadStream,\n WriteStream: WriteStream\n }\n\n function ReadStream (path, options) {\n if (!(this instanceof ReadStream)) return new ReadStream(path, options);\n\n Stream.call(this);\n\n var self = this;\n\n this.path = path;\n this.fd = null;\n this.readable = true;\n this.paused = false;\n\n this.flags = 'r';\n this.mode = 438; /*=0666*/\n this.bufferSize = 64 * 1024;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.encoding) this.setEncoding(this.encoding);\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.end === undefined) {\n this.end = Infinity;\n } else if ('number' !== typeof this.end) {\n throw TypeError('end must be a Number');\n }\n\n if (this.start > this.end) {\n throw new Error('start must be <= end');\n }\n\n this.pos = this.start;\n }\n\n if (this.fd !== null) {\n process.nextTick(function() {\n self._read();\n });\n return;\n }\n\n fs.open(this.path, this.flags, this.mode, function (err, fd) {\n if (err) {\n self.emit('error', err);\n self.readable = false;\n return;\n }\n\n self.fd = fd;\n self.emit('open', fd);\n self._read();\n })\n }\n\n function WriteStream (path, options) {\n if (!(this instanceof WriteStream)) return new WriteStream(path, options);\n\n Stream.call(this);\n\n this.path = path;\n this.fd = null;\n this.writable = true;\n\n this.flags = 'w';\n this.encoding = 'binary';\n this.mode = 438; /*=0666*/\n this.bytesWritten = 0;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.start < 0) {\n throw new Error('start must be >= zero');\n }\n\n this.pos = this.start;\n }\n\n this.busy = false;\n this._queue = [];\n\n if (this.fd === null) {\n this._open = fs.open;\n this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);\n this.flush();\n }\n }\n}\n","var constants = require('constants')\n\nvar origCwd = process.cwd\nvar cwd = null\n\nvar platform = process.env.GRACEFUL_FS_PLATFORM || process.platform\n\nprocess.cwd = function() {\n if (!cwd)\n cwd = origCwd.call(process)\n return cwd\n}\ntry {\n process.cwd()\n} catch (er) {}\n\n// This check is needed until node.js 12 is required\nif (typeof process.chdir === 'function') {\n var chdir = process.chdir\n process.chdir = function (d) {\n cwd = null\n chdir.call(process, d)\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir)\n}\n\nmodule.exports = patch\n\nfunction patch (fs) {\n // (re-)implement some things that are known busted or missing.\n\n // lchmod, broken prior to 0.6.2\n // back-port the fix here.\n if (constants.hasOwnProperty('O_SYMLINK') &&\n process.version.match(/^v0\\.6\\.[0-2]|^v0\\.5\\./)) {\n patchLchmod(fs)\n }\n\n // lutimes implementation, or no-op\n if (!fs.lutimes) {\n patchLutimes(fs)\n }\n\n // https://github.com/isaacs/node-graceful-fs/issues/4\n // Chown should not fail on einval or eperm if non-root.\n // It should not fail on enosys ever, as this just indicates\n // that a fs doesn't support the intended operation.\n\n fs.chown = chownFix(fs.chown)\n fs.fchown = chownFix(fs.fchown)\n fs.lchown = chownFix(fs.lchown)\n\n fs.chmod = chmodFix(fs.chmod)\n fs.fchmod = chmodFix(fs.fchmod)\n fs.lchmod = chmodFix(fs.lchmod)\n\n fs.chownSync = chownFixSync(fs.chownSync)\n fs.fchownSync = chownFixSync(fs.fchownSync)\n fs.lchownSync = chownFixSync(fs.lchownSync)\n\n fs.chmodSync = chmodFixSync(fs.chmodSync)\n fs.fchmodSync = chmodFixSync(fs.fchmodSync)\n fs.lchmodSync = chmodFixSync(fs.lchmodSync)\n\n fs.stat = statFix(fs.stat)\n fs.fstat = statFix(fs.fstat)\n fs.lstat = statFix(fs.lstat)\n\n fs.statSync = statFixSync(fs.statSync)\n fs.fstatSync = statFixSync(fs.fstatSync)\n fs.lstatSync = statFixSync(fs.lstatSync)\n\n // if lchmod/lchown do not exist, then make them no-ops\n if (fs.chmod && !fs.lchmod) {\n fs.lchmod = function (path, mode, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchmodSync = function () {}\n }\n if (fs.chown && !fs.lchown) {\n fs.lchown = function (path, uid, gid, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchownSync = function () {}\n }\n\n // on Windows, A/V software can lock the directory, causing this\n // to fail with an EACCES or EPERM if the directory contains newly\n // created files. Try again on failure, for up to 60 seconds.\n\n // Set the timeout this long because some Windows Anti-Virus, such as Parity\n // bit9, may lock files for up to a minute, causing npm package install\n // failures. Also, take care to yield the scheduler. Windows scheduling gives\n // CPU to a busy looping process, which can cause the program causing the lock\n // contention to be starved of CPU by node, so the contention doesn't resolve.\n if (platform === \"win32\") {\n fs.rename = typeof fs.rename !== 'function' ? fs.rename\n : (function (fs$rename) {\n function rename (from, to, cb) {\n var start = Date.now()\n var backoff = 0;\n fs$rename(from, to, function CB (er) {\n if (er\n && (er.code === \"EACCES\" || er.code === \"EPERM\" || er.code === \"EBUSY\")\n && Date.now() - start < 60000) {\n setTimeout(function() {\n fs.stat(to, function (stater, st) {\n if (stater && stater.code === \"ENOENT\")\n fs$rename(from, to, CB);\n else\n cb(er)\n })\n }, backoff)\n if (backoff < 100)\n backoff += 10;\n return;\n }\n if (cb) cb(er)\n })\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename)\n return rename\n })(fs.rename)\n }\n\n // if read() returns EAGAIN, then just try it again.\n fs.read = typeof fs.read !== 'function' ? fs.read\n : (function (fs$read) {\n function read (fd, buffer, offset, length, position, callback_) {\n var callback\n if (callback_ && typeof callback_ === 'function') {\n var eagCounter = 0\n callback = function (er, _, __) {\n if (er && er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n callback_.apply(this, arguments)\n }\n }\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n\n // This ensures `util.promisify` works as it does for native `fs.read`.\n if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read)\n return read\n })(fs.read)\n\n fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync\n : (function (fs$readSync) { return function (fd, buffer, offset, length, position) {\n var eagCounter = 0\n while (true) {\n try {\n return fs$readSync.call(fs, fd, buffer, offset, length, position)\n } catch (er) {\n if (er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n continue\n }\n throw er\n }\n }\n }})(fs.readSync)\n\n function patchLchmod (fs) {\n fs.lchmod = function (path, mode, callback) {\n fs.open( path\n , constants.O_WRONLY | constants.O_SYMLINK\n , mode\n , function (err, fd) {\n if (err) {\n if (callback) callback(err)\n return\n }\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n fs.fchmod(fd, mode, function (err) {\n fs.close(fd, function(err2) {\n if (callback) callback(err || err2)\n })\n })\n })\n }\n\n fs.lchmodSync = function (path, mode) {\n var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)\n\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n var threw = true\n var ret\n try {\n ret = fs.fchmodSync(fd, mode)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n }\n\n function patchLutimes (fs) {\n if (constants.hasOwnProperty(\"O_SYMLINK\") && fs.futimes) {\n fs.lutimes = function (path, at, mt, cb) {\n fs.open(path, constants.O_SYMLINK, function (er, fd) {\n if (er) {\n if (cb) cb(er)\n return\n }\n fs.futimes(fd, at, mt, function (er) {\n fs.close(fd, function (er2) {\n if (cb) cb(er || er2)\n })\n })\n })\n }\n\n fs.lutimesSync = function (path, at, mt) {\n var fd = fs.openSync(path, constants.O_SYMLINK)\n var ret\n var threw = true\n try {\n ret = fs.futimesSync(fd, at, mt)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n\n } else if (fs.futimes) {\n fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }\n fs.lutimesSync = function () {}\n }\n }\n\n function chmodFix (orig) {\n if (!orig) return orig\n return function (target, mode, cb) {\n return orig.call(fs, target, mode, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chmodFixSync (orig) {\n if (!orig) return orig\n return function (target, mode) {\n try {\n return orig.call(fs, target, mode)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n\n function chownFix (orig) {\n if (!orig) return orig\n return function (target, uid, gid, cb) {\n return orig.call(fs, target, uid, gid, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chownFixSync (orig) {\n if (!orig) return orig\n return function (target, uid, gid) {\n try {\n return orig.call(fs, target, uid, gid)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n function statFix (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n function callback (er, stats) {\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n if (cb) cb.apply(this, arguments)\n }\n return options ? orig.call(fs, target, options, callback)\n : orig.call(fs, target, callback)\n }\n }\n\n function statFixSync (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options) {\n var stats = options ? orig.call(fs, target, options)\n : orig.call(fs, target)\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n return stats;\n }\n }\n\n // ENOSYS means that the fs doesn't support the op. Just ignore\n // that, because it doesn't matter.\n //\n // if there's no getuid, or if getuid() is something other\n // than 0, and the error is EINVAL or EPERM, then just ignore\n // it.\n //\n // This specific case is a silent failure in cp, install, tar,\n // and most other unix tools that manage permissions.\n //\n // When running as root, or if other types of errors are\n // encountered, then it's strict.\n function chownErOk (er) {\n if (!er)\n return true\n\n if (er.code === \"ENOSYS\")\n return true\n\n var nonroot = !process.getuid || process.getuid() !== 0\n if (nonroot) {\n if (er.code === \"EINVAL\" || er.code === \"EPERM\")\n return true\n }\n\n return false\n }\n}\n","'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n","/* eslint-disable yoda */\n'use strict';\n\nconst isFullwidthCodePoint = codePoint => {\n\tif (Number.isNaN(codePoint)) {\n\t\treturn false;\n\t}\n\n\t// Code points are derived from:\n\t// http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt\n\tif (\n\t\tcodePoint >= 0x1100 && (\n\t\t\tcodePoint <= 0x115F || // Hangul Jamo\n\t\t\tcodePoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET\n\t\t\tcodePoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET\n\t\t\t// CJK Radicals Supplement .. Enclosed CJK Letters and Months\n\t\t\t(0x2E80 <= codePoint && codePoint <= 0x3247 && codePoint !== 0x303F) ||\n\t\t\t// Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A\n\t\t\t(0x3250 <= codePoint && codePoint <= 0x4DBF) ||\n\t\t\t// CJK Unified Ideographs .. Yi Radicals\n\t\t\t(0x4E00 <= codePoint && codePoint <= 0xA4C6) ||\n\t\t\t// Hangul Jamo Extended-A\n\t\t\t(0xA960 <= codePoint && codePoint <= 0xA97C) ||\n\t\t\t// Hangul Syllables\n\t\t\t(0xAC00 <= codePoint && codePoint <= 0xD7A3) ||\n\t\t\t// CJK Compatibility Ideographs\n\t\t\t(0xF900 <= codePoint && codePoint <= 0xFAFF) ||\n\t\t\t// Vertical Forms\n\t\t\t(0xFE10 <= codePoint && codePoint <= 0xFE19) ||\n\t\t\t// CJK Compatibility Forms .. Small Form Variants\n\t\t\t(0xFE30 <= codePoint && codePoint <= 0xFE6B) ||\n\t\t\t// Halfwidth and Fullwidth Forms\n\t\t\t(0xFF01 <= codePoint && codePoint <= 0xFF60) ||\n\t\t\t(0xFFE0 <= codePoint && codePoint <= 0xFFE6) ||\n\t\t\t// Kana Supplement\n\t\t\t(0x1B000 <= codePoint && codePoint <= 0x1B001) ||\n\t\t\t// Enclosed Ideographic Supplement\n\t\t\t(0x1F200 <= codePoint && codePoint <= 0x1F251) ||\n\t\t\t// CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane\n\t\t\t(0x20000 <= codePoint && codePoint <= 0x3FFFD)\n\t\t)\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nmodule.exports = isFullwidthCodePoint;\nmodule.exports.default = isFullwidthCodePoint;\n","let _fs\ntry {\n _fs = require('graceful-fs')\n} catch (_) {\n _fs = require('fs')\n}\nconst universalify = require('universalify')\nconst { stringify, stripBom } = require('./utils')\n\nasync function _readFile (file, options = {}) {\n if (typeof options === 'string') {\n options = { encoding: options }\n }\n\n const fs = options.fs || _fs\n\n const shouldThrow = 'throws' in options ? options.throws : true\n\n let data = await universalify.fromCallback(fs.readFile)(file, options)\n\n data = stripBom(data)\n\n let obj\n try {\n obj = JSON.parse(data, options ? options.reviver : null)\n } catch (err) {\n if (shouldThrow) {\n err.message = `${file}: ${err.message}`\n throw err\n } else {\n return null\n }\n }\n\n return obj\n}\n\nconst readFile = universalify.fromPromise(_readFile)\n\nfunction readFileSync (file, options = {}) {\n if (typeof options === 'string') {\n options = { encoding: options }\n }\n\n const fs = options.fs || _fs\n\n const shouldThrow = 'throws' in options ? options.throws : true\n\n try {\n let content = fs.readFileSync(file, options)\n content = stripBom(content)\n return JSON.parse(content, options.reviver)\n } catch (err) {\n if (shouldThrow) {\n err.message = `${file}: ${err.message}`\n throw err\n } else {\n return null\n }\n }\n}\n\nasync function _writeFile (file, obj, options = {}) {\n const fs = options.fs || _fs\n\n const str = stringify(obj, options)\n\n await universalify.fromCallback(fs.writeFile)(file, str, options)\n}\n\nconst writeFile = universalify.fromPromise(_writeFile)\n\nfunction writeFileSync (file, obj, options = {}) {\n const fs = options.fs || _fs\n\n const str = stringify(obj, options)\n // not sure if fs.writeFileSync returns anything, but just in case\n return fs.writeFileSync(file, str, options)\n}\n\nconst jsonfile = {\n readFile,\n readFileSync,\n writeFile,\n writeFileSync\n}\n\nmodule.exports = jsonfile\n","function stringify (obj, { EOL = '\\n', finalEOL = true, replacer = null, spaces } = {}) {\n const EOF = finalEOL ? EOL : ''\n const str = JSON.stringify(obj, replacer, spaces)\n\n return str.replace(/\\n/g, EOL) + EOF\n}\n\nfunction stripBom (content) {\n // we do this because JSON.parse would convert it to a utf8 string if encoding wasn't specified\n if (Buffer.isBuffer(content)) content = content.toString('utf8')\n return content.replace(/^\\uFEFF/, '')\n}\n\nmodule.exports = { stringify, stripBom }\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as default options for `_.truncate`. */\nvar DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar regexpTag = '[object RegExp]',\n symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe23',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20f0',\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']');\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\n/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n}\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n result++;\n }\n return result;\n}\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\nfunction baseIsRegExp(value) {\n return isObject(value) && objectToString.call(value) == regexpTag;\n}\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\nvar isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\nfunction truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n}\n\nmodule.exports = truncate;\n","var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n","'use strict';\nconst isFullwidthCodePoint = require('is-fullwidth-code-point');\nconst astralRegex = require('astral-regex');\nconst ansiStyles = require('ansi-styles');\n\nconst ESCAPES = [\n\t'\\u001B',\n\t'\\u009B'\n];\n\nconst wrapAnsi = code => `${ESCAPES[0]}[${code}m`;\n\nconst checkAnsi = (ansiCodes, isEscapes, endAnsiCode) => {\n\tlet output = [];\n\tansiCodes = [...ansiCodes];\n\n\tfor (let ansiCode of ansiCodes) {\n\t\tconst ansiCodeOrigin = ansiCode;\n\t\tif (ansiCode.includes(';')) {\n\t\t\tansiCode = ansiCode.split(';')[0][0] + '0';\n\t\t}\n\n\t\tconst item = ansiStyles.codes.get(Number.parseInt(ansiCode, 10));\n\t\tif (item) {\n\t\t\tconst indexEscape = ansiCodes.indexOf(item.toString());\n\t\t\tif (indexEscape === -1) {\n\t\t\t\toutput.push(wrapAnsi(isEscapes ? item : ansiCodeOrigin));\n\t\t\t} else {\n\t\t\t\tansiCodes.splice(indexEscape, 1);\n\t\t\t}\n\t\t} else if (isEscapes) {\n\t\t\toutput.push(wrapAnsi(0));\n\t\t\tbreak;\n\t\t} else {\n\t\t\toutput.push(wrapAnsi(ansiCodeOrigin));\n\t\t}\n\t}\n\n\tif (isEscapes) {\n\t\toutput = output.filter((element, index) => output.indexOf(element) === index);\n\n\t\tif (endAnsiCode !== undefined) {\n\t\t\tconst fistEscapeCode = wrapAnsi(ansiStyles.codes.get(Number.parseInt(endAnsiCode, 10)));\n\t\t\toutput = output.reduce((current, next) => next === fistEscapeCode ? [next, ...current] : [...current, next], []);\n\t\t}\n\t}\n\n\treturn output.join('');\n};\n\nmodule.exports = (string, begin, end) => {\n\tconst characters = [...string];\n\tconst ansiCodes = [];\n\n\tlet stringEnd = typeof end === 'number' ? end : characters.length;\n\tlet isInsideEscape = false;\n\tlet ansiCode;\n\tlet visible = 0;\n\tlet output = '';\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tlet leftEscape = false;\n\n\t\tif (ESCAPES.includes(character)) {\n\t\t\tconst code = /\\d[^m]*/.exec(string.slice(index, index + 18));\n\t\t\tansiCode = code && code.length > 0 ? code[0] : undefined;\n\n\t\t\tif (visible < stringEnd) {\n\t\t\t\tisInsideEscape = true;\n\n\t\t\t\tif (ansiCode !== undefined) {\n\t\t\t\t\tansiCodes.push(ansiCode);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (isInsideEscape && character === 'm') {\n\t\t\tisInsideEscape = false;\n\t\t\tleftEscape = true;\n\t\t}\n\n\t\tif (!isInsideEscape && !leftEscape) {\n\t\t\tvisible++;\n\t\t}\n\n\t\tif (!astralRegex({exact: true}).test(character) && isFullwidthCodePoint(character.codePointAt())) {\n\t\t\tvisible++;\n\n\t\t\tif (typeof end !== 'number') {\n\t\t\t\tstringEnd++;\n\t\t\t}\n\t\t}\n\n\t\tif (visible > begin && visible <= stringEnd) {\n\t\t\toutput += character;\n\t\t} else if (visible === begin && !isInsideEscape && ansiCode !== undefined) {\n\t\t\toutput = checkAnsi(ansiCodes);\n\t\t} else if (visible >= stringEnd) {\n\t\t\toutput += checkAnsi(ansiCodes, true, ansiCode);\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn output;\n};\n","'use strict';\nconst stripAnsi = require('strip-ansi');\nconst isFullwidthCodePoint = require('is-fullwidth-code-point');\nconst emojiRegex = require('emoji-regex');\n\nconst stringWidth = string => {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = stripAnsi(string);\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = string.replace(emojiRegex(), ' ');\n\n\tlet width = 0;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst code = string.codePointAt(i);\n\n\t\t// Ignore control characters\n\t\tif (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (code >= 0x300 && code <= 0x36F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Surrogates\n\t\tif (code > 0xFFFF) {\n\t\t\ti++;\n\t\t}\n\n\t\twidth += isFullwidthCodePoint(code) ? 2 : 1;\n\t}\n\n\treturn width;\n};\n\nmodule.exports = stringWidth;\n// TODO: remove this in the next major version\nmodule.exports.default = stringWidth;\n","'use strict';\nconst ansiRegex = require('ansi-regex');\n\nmodule.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;\n","const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n// const octRegex = /0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\n\n \nconst consider = {\n hex : true,\n leadingZeros: true,\n decimalPoint: \"\\.\",\n eNotation: true\n //skipLike: /regex/\n};\n\nfunction toNumber(str, options = {}){\n // const options = Object.assign({}, consider);\n // if(opt.leadingZeros === false){\n // options.leadingZeros = false;\n // }else if(opt.hex === false){\n // options.hex = false;\n // }\n\n options = Object.assign({}, consider, options );\n if(!str || typeof str !== \"string\" ) return str;\n \n let trimmedStr = str.trim();\n // if(trimmedStr === \"0.0\") return 0;\n // else if(trimmedStr === \"+0.0\") return 0;\n // else if(trimmedStr === \"-0.0\") return -0;\n\n if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n // } else if (options.parseOct && octRegex.test(str)) {\n // return Number.parseInt(val, 8);\n // }else if (options.parseBin && binRegex.test(str)) {\n // return Number.parseInt(val, 2);\n }else{\n //separate negative sign, leading zeros, and rest number\n const match = numRegex.exec(trimmedStr);\n if(match){\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n //trim ending zeros for floating number\n \n const eNotation = match[4] || match[6];\n if(!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str; //-0123\n else if(!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str; //0123\n else{//no leading zeros or leading zeros are allowed\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if(numStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n if(options.eNotation) return num;\n else return str;\n }else if(eNotation){ //given number has enotation\n if(options.eNotation) return num;\n else return str;\n }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n // const decimalPart = match[5].substr(1);\n // const intPart = trimmedStr.substr(0,trimmedStr.indexOf(\".\"));\n\n \n // const p = numStr.indexOf(\".\");\n // const givenIntPart = numStr.substr(0,p);\n // const givenDecPart = numStr.substr(p+1);\n if(numStr === \"0\" && (numTrimmedByZeros === \"\") ) return num; //0.0\n else if(numStr === numTrimmedByZeros) return num; //0.456. 0.79000\n else if( sign && numStr === \"-\"+numTrimmedByZeros) return num;\n else return str;\n }\n \n if(leadingZeros){\n // if(numTrimmedByZeros === numStr){\n // if(options.leadingZeros) return num;\n // else return str;\n // }else return str;\n if(numTrimmedByZeros === numStr) return num;\n else if(sign+numTrimmedByZeros === numStr) return num;\n else return str;\n }\n\n if(trimmedStr === numStr) return num;\n else if(trimmedStr === sign+numStr) return num;\n // else{\n // //number with +/- sign\n // trimmedStr.test(/[-+][0-9]);\n\n // }\n return str;\n }\n // else if(!eNotation && trimmedStr && trimmedStr !== Number(trimmedStr) ) return str;\n \n }else{ //non-numeric string\n return str;\n }\n }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n if(numStr && numStr.indexOf(\".\") !== -1){//float\n numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n if(numStr === \".\") numStr = \"0\";\n else if(numStr[0] === \".\") numStr = \"0\"+numStr;\n else if(numStr[numStr.length-1] === \".\") numStr = numStr.substr(0,numStr.length-1);\n return numStr;\n }\n return numStr;\n}\nmodule.exports = toNumber\n","'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.alignVerticalRangeContent = exports.wrapRangeContent = void 0;\nconst string_width_1 = __importDefault(require(\"string-width\"));\nconst alignString_1 = require(\"./alignString\");\nconst mapDataUsingRowHeights_1 = require(\"./mapDataUsingRowHeights\");\nconst padTableData_1 = require(\"./padTableData\");\nconst truncateTableData_1 = require(\"./truncateTableData\");\nconst utils_1 = require(\"./utils\");\nconst wrapCell_1 = require(\"./wrapCell\");\n/**\n * Fill content into all cells in range in order to calculate total height\n */\nconst wrapRangeContent = (rangeConfig, rangeWidth, context) => {\n const { topLeft, paddingRight, paddingLeft, truncate, wrapWord, alignment } = rangeConfig;\n const originalContent = context.rows[topLeft.row][topLeft.col];\n const contentWidth = rangeWidth - paddingLeft - paddingRight;\n return (0, wrapCell_1.wrapCell)((0, truncateTableData_1.truncateString)(originalContent, truncate), contentWidth, wrapWord).map((line) => {\n const alignedLine = (0, alignString_1.alignString)(line, contentWidth, alignment);\n return (0, padTableData_1.padString)(alignedLine, paddingLeft, paddingRight);\n });\n};\nexports.wrapRangeContent = wrapRangeContent;\nconst alignVerticalRangeContent = (range, content, context) => {\n const { rows, drawHorizontalLine, rowHeights } = context;\n const { topLeft, bottomRight, verticalAlignment } = range;\n // They are empty before calculateRowHeights function run\n if (rowHeights.length === 0) {\n return [];\n }\n const totalCellHeight = (0, utils_1.sumArray)(rowHeights.slice(topLeft.row, bottomRight.row + 1));\n const totalBorderHeight = bottomRight.row - topLeft.row;\n const hiddenHorizontalBorderCount = (0, utils_1.sequence)(topLeft.row + 1, bottomRight.row).filter((horizontalBorderIndex) => {\n return !drawHorizontalLine(horizontalBorderIndex, rows.length);\n }).length;\n const availableRangeHeight = totalCellHeight + totalBorderHeight - hiddenHorizontalBorderCount;\n return (0, mapDataUsingRowHeights_1.padCellVertically)(content, availableRangeHeight, verticalAlignment).map((line) => {\n if (line.length === 0) {\n return ' '.repeat((0, string_width_1.default)(content[0]));\n }\n return line;\n });\n};\nexports.alignVerticalRangeContent = alignVerticalRangeContent;\n//# sourceMappingURL=alignSpanningCell.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.alignString = void 0;\nconst string_width_1 = __importDefault(require(\"string-width\"));\nconst utils_1 = require(\"./utils\");\nconst alignLeft = (subject, width) => {\n return subject + ' '.repeat(width);\n};\nconst alignRight = (subject, width) => {\n return ' '.repeat(width) + subject;\n};\nconst alignCenter = (subject, width) => {\n return ' '.repeat(Math.floor(width / 2)) + subject + ' '.repeat(Math.ceil(width / 2));\n};\nconst alignJustify = (subject, width) => {\n const spaceSequenceCount = (0, utils_1.countSpaceSequence)(subject);\n if (spaceSequenceCount === 0) {\n return alignLeft(subject, width);\n }\n const addingSpaces = (0, utils_1.distributeUnevenly)(width, spaceSequenceCount);\n if (Math.max(...addingSpaces) > 3) {\n return alignLeft(subject, width);\n }\n let spaceSequenceIndex = 0;\n return subject.replace(/\\s+/g, (groupSpace) => {\n return groupSpace + ' '.repeat(addingSpaces[spaceSequenceIndex++]);\n });\n};\n/**\n * Pads a string to the left and/or right to position the subject\n * text in a desired alignment within a container.\n */\nconst alignString = (subject, containerWidth, alignment) => {\n const subjectWidth = (0, string_width_1.default)(subject);\n if (subjectWidth === containerWidth) {\n return subject;\n }\n if (subjectWidth > containerWidth) {\n throw new Error('Subject parameter value width cannot be greater than the container width.');\n }\n if (subjectWidth === 0) {\n return ' '.repeat(containerWidth);\n }\n const availableWidth = containerWidth - subjectWidth;\n if (alignment === 'left') {\n return alignLeft(subject, availableWidth);\n }\n if (alignment === 'right') {\n return alignRight(subject, availableWidth);\n }\n if (alignment === 'justify') {\n return alignJustify(subject, availableWidth);\n }\n return alignCenter(subject, availableWidth);\n};\nexports.alignString = alignString;\n//# sourceMappingURL=alignString.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.alignTableData = void 0;\nconst alignString_1 = require(\"./alignString\");\nconst alignTableData = (rows, config) => {\n return rows.map((row, rowIndex) => {\n return row.map((cell, cellIndex) => {\n var _a;\n const { width, alignment } = config.columns[cellIndex];\n const containingRange = (_a = config.spanningCellManager) === null || _a === void 0 ? void 0 : _a.getContainingRange({ col: cellIndex,\n row: rowIndex }, { mapped: true });\n if (containingRange) {\n return cell;\n }\n return (0, alignString_1.alignString)(cell, width, alignment);\n });\n });\n};\nexports.alignTableData = alignTableData;\n//# sourceMappingURL=alignTableData.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateCellHeight = void 0;\nconst wrapCell_1 = require(\"./wrapCell\");\n/**\n * Calculates height of cell content in regard to its width and word wrapping.\n */\nconst calculateCellHeight = (value, columnWidth, useWrapWord = false) => {\n return (0, wrapCell_1.wrapCell)(value, columnWidth, useWrapWord).length;\n};\nexports.calculateCellHeight = calculateCellHeight;\n//# sourceMappingURL=calculateCellHeight.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateMaximumColumnWidths = exports.calculateMaximumCellWidth = void 0;\nconst string_width_1 = __importDefault(require(\"string-width\"));\nconst utils_1 = require(\"./utils\");\nconst calculateMaximumCellWidth = (cell) => {\n return Math.max(...cell.split('\\n').map(string_width_1.default));\n};\nexports.calculateMaximumCellWidth = calculateMaximumCellWidth;\n/**\n * Produces an array of values that describe the largest value length (width) in every column.\n */\nconst calculateMaximumColumnWidths = (rows, spanningCellConfigs = []) => {\n const columnWidths = new Array(rows[0].length).fill(0);\n const rangeCoordinates = spanningCellConfigs.map(utils_1.calculateRangeCoordinate);\n const isSpanningCell = (rowIndex, columnIndex) => {\n return rangeCoordinates.some((rangeCoordinate) => {\n return (0, utils_1.isCellInRange)({ col: columnIndex,\n row: rowIndex }, rangeCoordinate);\n });\n };\n rows.forEach((row, rowIndex) => {\n row.forEach((cell, cellIndex) => {\n if (isSpanningCell(rowIndex, cellIndex)) {\n return;\n }\n columnWidths[cellIndex] = Math.max(columnWidths[cellIndex], (0, exports.calculateMaximumCellWidth)(cell));\n });\n });\n return columnWidths;\n};\nexports.calculateMaximumColumnWidths = calculateMaximumColumnWidths;\n//# sourceMappingURL=calculateMaximumColumnWidths.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateOutputColumnWidths = void 0;\nconst calculateOutputColumnWidths = (config) => {\n return config.columns.map((col) => {\n return col.paddingLeft + col.width + col.paddingRight;\n });\n};\nexports.calculateOutputColumnWidths = calculateOutputColumnWidths;\n//# sourceMappingURL=calculateOutputColumnWidths.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateRowHeights = void 0;\nconst calculateCellHeight_1 = require(\"./calculateCellHeight\");\nconst utils_1 = require(\"./utils\");\n/**\n * Produces an array of values that describe the largest value length (height) in every row.\n */\nconst calculateRowHeights = (rows, config) => {\n const rowHeights = [];\n for (const [rowIndex, row] of rows.entries()) {\n let rowHeight = 1;\n row.forEach((cell, cellIndex) => {\n var _a;\n const containingRange = (_a = config.spanningCellManager) === null || _a === void 0 ? void 0 : _a.getContainingRange({ col: cellIndex,\n row: rowIndex });\n if (!containingRange) {\n const cellHeight = (0, calculateCellHeight_1.calculateCellHeight)(cell, config.columns[cellIndex].width, config.columns[cellIndex].wrapWord);\n rowHeight = Math.max(rowHeight, cellHeight);\n return;\n }\n const { topLeft, bottomRight, height } = containingRange;\n // bottom-most cell of a range needs to contain all remain lines of spanning cells\n if (rowIndex === bottomRight.row) {\n const totalOccupiedSpanningCellHeight = (0, utils_1.sumArray)(rowHeights.slice(topLeft.row));\n const totalHorizontalBorderHeight = bottomRight.row - topLeft.row;\n const totalHiddenHorizontalBorderHeight = (0, utils_1.sequence)(topLeft.row + 1, bottomRight.row).filter((horizontalBorderIndex) => {\n var _a;\n /* istanbul ignore next */\n return !((_a = config.drawHorizontalLine) === null || _a === void 0 ? void 0 : _a.call(config, horizontalBorderIndex, rows.length));\n }).length;\n const cellHeight = height - totalOccupiedSpanningCellHeight - totalHorizontalBorderHeight + totalHiddenHorizontalBorderHeight;\n rowHeight = Math.max(rowHeight, cellHeight);\n }\n // otherwise, just depend on other sibling cell heights in the row\n });\n rowHeights.push(rowHeight);\n }\n return rowHeights;\n};\nexports.calculateRowHeights = calculateRowHeights;\n//# sourceMappingURL=calculateRowHeights.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateSpanningCellWidth = void 0;\nconst utils_1 = require(\"./utils\");\nconst calculateSpanningCellWidth = (rangeConfig, dependencies) => {\n const { columnsConfig, drawVerticalLine } = dependencies;\n const { topLeft, bottomRight } = rangeConfig;\n const totalWidth = (0, utils_1.sumArray)(columnsConfig.slice(topLeft.col, bottomRight.col + 1).map(({ width }) => {\n return width;\n }));\n const totalPadding = topLeft.col === bottomRight.col ?\n columnsConfig[topLeft.col].paddingRight +\n columnsConfig[bottomRight.col].paddingLeft :\n (0, utils_1.sumArray)(columnsConfig\n .slice(topLeft.col, bottomRight.col + 1)\n .map(({ paddingLeft, paddingRight }) => {\n return paddingLeft + paddingRight;\n }));\n const totalBorderWidths = bottomRight.col - topLeft.col;\n const totalHiddenVerticalBorders = (0, utils_1.sequence)(topLeft.col + 1, bottomRight.col).filter((verticalBorderIndex) => {\n return !drawVerticalLine(verticalBorderIndex, columnsConfig.length);\n }).length;\n return totalWidth + totalPadding + totalBorderWidths - totalHiddenVerticalBorders;\n};\nexports.calculateSpanningCellWidth = calculateSpanningCellWidth;\n//# sourceMappingURL=calculateSpanningCellWidth.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createStream = void 0;\nconst alignTableData_1 = require(\"./alignTableData\");\nconst calculateRowHeights_1 = require(\"./calculateRowHeights\");\nconst drawBorder_1 = require(\"./drawBorder\");\nconst drawRow_1 = require(\"./drawRow\");\nconst makeStreamConfig_1 = require(\"./makeStreamConfig\");\nconst mapDataUsingRowHeights_1 = require(\"./mapDataUsingRowHeights\");\nconst padTableData_1 = require(\"./padTableData\");\nconst stringifyTableData_1 = require(\"./stringifyTableData\");\nconst truncateTableData_1 = require(\"./truncateTableData\");\nconst utils_1 = require(\"./utils\");\nconst prepareData = (data, config) => {\n let rows = (0, stringifyTableData_1.stringifyTableData)(data);\n rows = (0, truncateTableData_1.truncateTableData)(rows, (0, utils_1.extractTruncates)(config));\n const rowHeights = (0, calculateRowHeights_1.calculateRowHeights)(rows, config);\n rows = (0, mapDataUsingRowHeights_1.mapDataUsingRowHeights)(rows, rowHeights, config);\n rows = (0, alignTableData_1.alignTableData)(rows, config);\n rows = (0, padTableData_1.padTableData)(rows, config);\n return rows;\n};\nconst create = (row, columnWidths, config) => {\n const rows = prepareData([row], config);\n const body = rows.map((literalRow) => {\n return (0, drawRow_1.drawRow)(literalRow, config);\n }).join('');\n let output;\n output = '';\n output += (0, drawBorder_1.drawBorderTop)(columnWidths, config);\n output += body;\n output += (0, drawBorder_1.drawBorderBottom)(columnWidths, config);\n output = output.trimEnd();\n process.stdout.write(output);\n};\nconst append = (row, columnWidths, config) => {\n const rows = prepareData([row], config);\n const body = rows.map((literalRow) => {\n return (0, drawRow_1.drawRow)(literalRow, config);\n }).join('');\n let output = '';\n const bottom = (0, drawBorder_1.drawBorderBottom)(columnWidths, config);\n if (bottom !== '\\n') {\n output = '\\r\\u001B[K';\n }\n output += (0, drawBorder_1.drawBorderJoin)(columnWidths, config);\n output += body;\n output += bottom;\n output = output.trimEnd();\n process.stdout.write(output);\n};\nconst createStream = (userConfig) => {\n const config = (0, makeStreamConfig_1.makeStreamConfig)(userConfig);\n const columnWidths = Object.values(config.columns).map((column) => {\n return column.width + column.paddingLeft + column.paddingRight;\n });\n let empty = true;\n return {\n write: (row) => {\n if (row.length !== config.columnCount) {\n throw new Error('Row cell count does not match the config.columnCount.');\n }\n if (empty) {\n empty = false;\n create(row, columnWidths, config);\n }\n else {\n append(row, columnWidths, config);\n }\n },\n };\n};\nexports.createStream = createStream;\n//# sourceMappingURL=createStream.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createTableBorderGetter = exports.drawBorderBottom = exports.drawBorderJoin = exports.drawBorderTop = exports.drawBorder = exports.createSeparatorGetter = exports.drawBorderSegments = void 0;\nconst drawContent_1 = require(\"./drawContent\");\nconst drawBorderSegments = (columnWidths, parameters) => {\n const { separator, horizontalBorderIndex, spanningCellManager } = parameters;\n return columnWidths.map((columnWidth, columnIndex) => {\n const normalSegment = separator.body.repeat(columnWidth);\n if (horizontalBorderIndex === undefined) {\n return normalSegment;\n }\n /* istanbul ignore next */\n const range = spanningCellManager === null || spanningCellManager === void 0 ? void 0 : spanningCellManager.getContainingRange({ col: columnIndex,\n row: horizontalBorderIndex });\n if (!range) {\n return normalSegment;\n }\n const { topLeft } = range;\n // draw border segments as usual for top border of spanning cell\n if (horizontalBorderIndex === topLeft.row) {\n return normalSegment;\n }\n // if for first column/row of spanning cell, just skip\n if (columnIndex !== topLeft.col) {\n return '';\n }\n return range.extractBorderContent(horizontalBorderIndex);\n });\n};\nexports.drawBorderSegments = drawBorderSegments;\nconst createSeparatorGetter = (dependencies) => {\n const { separator, spanningCellManager, horizontalBorderIndex, rowCount } = dependencies;\n // eslint-disable-next-line complexity\n return (verticalBorderIndex, columnCount) => {\n const inSameRange = spanningCellManager === null || spanningCellManager === void 0 ? void 0 : spanningCellManager.inSameRange;\n if (horizontalBorderIndex !== undefined && inSameRange) {\n const topCell = { col: verticalBorderIndex,\n row: horizontalBorderIndex - 1 };\n const leftCell = { col: verticalBorderIndex - 1,\n row: horizontalBorderIndex };\n const oppositeCell = { col: verticalBorderIndex - 1,\n row: horizontalBorderIndex - 1 };\n const currentCell = { col: verticalBorderIndex,\n row: horizontalBorderIndex };\n const pairs = [\n [oppositeCell, topCell],\n [topCell, currentCell],\n [currentCell, leftCell],\n [leftCell, oppositeCell],\n ];\n // left side of horizontal border\n if (verticalBorderIndex === 0) {\n if (inSameRange(currentCell, topCell) && separator.bodyJoinOuter) {\n return separator.bodyJoinOuter;\n }\n return separator.left;\n }\n // right side of horizontal border\n if (verticalBorderIndex === columnCount) {\n if (inSameRange(oppositeCell, leftCell) && separator.bodyJoinOuter) {\n return separator.bodyJoinOuter;\n }\n return separator.right;\n }\n // top horizontal border\n if (horizontalBorderIndex === 0) {\n if (inSameRange(currentCell, leftCell)) {\n return separator.body;\n }\n return separator.join;\n }\n // bottom horizontal border\n if (horizontalBorderIndex === rowCount) {\n if (inSameRange(topCell, oppositeCell)) {\n return separator.body;\n }\n return separator.join;\n }\n const sameRangeCount = pairs.map((pair) => {\n return inSameRange(...pair);\n }).filter(Boolean).length;\n // four cells are belongs to different spanning cells\n if (sameRangeCount === 0) {\n return separator.join;\n }\n // belong to one spanning cell\n if (sameRangeCount === 4) {\n return '';\n }\n // belongs to two spanning cell\n if (sameRangeCount === 2) {\n if (inSameRange(...pairs[1]) && inSameRange(...pairs[3]) && separator.bodyJoinInner) {\n return separator.bodyJoinInner;\n }\n return separator.body;\n }\n /* istanbul ignore next */\n if (sameRangeCount === 1) {\n if (!separator.joinRight || !separator.joinLeft || !separator.joinUp || !separator.joinDown) {\n throw new Error(`Can not get border separator for position [${horizontalBorderIndex}, ${verticalBorderIndex}]`);\n }\n if (inSameRange(...pairs[0])) {\n return separator.joinDown;\n }\n if (inSameRange(...pairs[1])) {\n return separator.joinLeft;\n }\n if (inSameRange(...pairs[2])) {\n return separator.joinUp;\n }\n return separator.joinRight;\n }\n /* istanbul ignore next */\n throw new Error('Invalid case');\n }\n if (verticalBorderIndex === 0) {\n return separator.left;\n }\n if (verticalBorderIndex === columnCount) {\n return separator.right;\n }\n return separator.join;\n };\n};\nexports.createSeparatorGetter = createSeparatorGetter;\nconst drawBorder = (columnWidths, parameters) => {\n const borderSegments = (0, exports.drawBorderSegments)(columnWidths, parameters);\n const { drawVerticalLine, horizontalBorderIndex, spanningCellManager } = parameters;\n return (0, drawContent_1.drawContent)({\n contents: borderSegments,\n drawSeparator: drawVerticalLine,\n elementType: 'border',\n rowIndex: horizontalBorderIndex,\n separatorGetter: (0, exports.createSeparatorGetter)(parameters),\n spanningCellManager,\n }) + '\\n';\n};\nexports.drawBorder = drawBorder;\nconst drawBorderTop = (columnWidths, parameters) => {\n const { border } = parameters;\n const result = (0, exports.drawBorder)(columnWidths, {\n ...parameters,\n separator: {\n body: border.topBody,\n join: border.topJoin,\n left: border.topLeft,\n right: border.topRight,\n },\n });\n if (result === '\\n') {\n return '';\n }\n return result;\n};\nexports.drawBorderTop = drawBorderTop;\nconst drawBorderJoin = (columnWidths, parameters) => {\n const { border } = parameters;\n return (0, exports.drawBorder)(columnWidths, {\n ...parameters,\n separator: {\n body: border.joinBody,\n bodyJoinInner: border.bodyJoin,\n bodyJoinOuter: border.bodyLeft,\n join: border.joinJoin,\n joinDown: border.joinMiddleDown,\n joinLeft: border.joinMiddleLeft,\n joinRight: border.joinMiddleRight,\n joinUp: border.joinMiddleUp,\n left: border.joinLeft,\n right: border.joinRight,\n },\n });\n};\nexports.drawBorderJoin = drawBorderJoin;\nconst drawBorderBottom = (columnWidths, parameters) => {\n const { border } = parameters;\n return (0, exports.drawBorder)(columnWidths, {\n ...parameters,\n separator: {\n body: border.bottomBody,\n join: border.bottomJoin,\n left: border.bottomLeft,\n right: border.bottomRight,\n },\n });\n};\nexports.drawBorderBottom = drawBorderBottom;\nconst createTableBorderGetter = (columnWidths, parameters) => {\n return (index, size) => {\n const drawBorderParameters = { ...parameters,\n horizontalBorderIndex: index };\n if (index === 0) {\n return (0, exports.drawBorderTop)(columnWidths, drawBorderParameters);\n }\n else if (index === size) {\n return (0, exports.drawBorderBottom)(columnWidths, drawBorderParameters);\n }\n return (0, exports.drawBorderJoin)(columnWidths, drawBorderParameters);\n };\n};\nexports.createTableBorderGetter = createTableBorderGetter;\n//# sourceMappingURL=drawBorder.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.drawContent = void 0;\nconst drawContent = (parameters) => {\n const { contents, separatorGetter, drawSeparator, spanningCellManager, rowIndex, elementType } = parameters;\n const contentSize = contents.length;\n const result = [];\n if (drawSeparator(0, contentSize)) {\n result.push(separatorGetter(0, contentSize));\n }\n contents.forEach((content, contentIndex) => {\n if (!elementType || elementType === 'border' || elementType === 'row') {\n result.push(content);\n }\n if (elementType === 'cell' && rowIndex === undefined) {\n result.push(content);\n }\n if (elementType === 'cell' && rowIndex !== undefined) {\n /* istanbul ignore next */\n const containingRange = spanningCellManager === null || spanningCellManager === void 0 ? void 0 : spanningCellManager.getContainingRange({ col: contentIndex,\n row: rowIndex });\n // when drawing content row, just add a cell when it is a normal cell\n // or belongs to first column of spanning cell\n if (!containingRange || contentIndex === containingRange.topLeft.col) {\n result.push(content);\n }\n }\n // Only append the middle separator if the content is not the last\n if (contentIndex + 1 < contentSize && drawSeparator(contentIndex + 1, contentSize)) {\n const separator = separatorGetter(contentIndex + 1, contentSize);\n if (elementType === 'cell' && rowIndex !== undefined) {\n const currentCell = { col: contentIndex + 1,\n row: rowIndex };\n /* istanbul ignore next */\n const containingRange = spanningCellManager === null || spanningCellManager === void 0 ? void 0 : spanningCellManager.getContainingRange(currentCell);\n if (!containingRange || containingRange.topLeft.col === currentCell.col) {\n result.push(separator);\n }\n }\n else {\n result.push(separator);\n }\n }\n });\n if (drawSeparator(contentSize, contentSize)) {\n result.push(separatorGetter(contentSize, contentSize));\n }\n return result.join('');\n};\nexports.drawContent = drawContent;\n//# sourceMappingURL=drawContent.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.drawRow = void 0;\nconst drawContent_1 = require(\"./drawContent\");\nconst drawRow = (row, config) => {\n const { border, drawVerticalLine, rowIndex, spanningCellManager } = config;\n return (0, drawContent_1.drawContent)({\n contents: row,\n drawSeparator: drawVerticalLine,\n elementType: 'cell',\n rowIndex,\n separatorGetter: (index, columnCount) => {\n if (index === 0) {\n return border.bodyLeft;\n }\n if (index === columnCount) {\n return border.bodyRight;\n }\n return border.bodyJoin;\n },\n spanningCellManager,\n }) + '\\n';\n};\nexports.drawRow = drawRow;\n//# sourceMappingURL=drawRow.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.drawTable = void 0;\nconst drawBorder_1 = require(\"./drawBorder\");\nconst drawContent_1 = require(\"./drawContent\");\nconst drawRow_1 = require(\"./drawRow\");\nconst utils_1 = require(\"./utils\");\nconst drawTable = (rows, outputColumnWidths, rowHeights, config) => {\n const { drawHorizontalLine, singleLine, } = config;\n const contents = (0, utils_1.groupBySizes)(rows, rowHeights).map((group, groupIndex) => {\n return group.map((row) => {\n return (0, drawRow_1.drawRow)(row, { ...config,\n rowIndex: groupIndex });\n }).join('');\n });\n return (0, drawContent_1.drawContent)({ contents,\n drawSeparator: (index, size) => {\n // Top/bottom border\n if (index === 0 || index === size) {\n return drawHorizontalLine(index, size);\n }\n return !singleLine && drawHorizontalLine(index, size);\n },\n elementType: 'row',\n rowIndex: -1,\n separatorGetter: (0, drawBorder_1.createTableBorderGetter)(outputColumnWidths, { ...config,\n rowCount: contents.length }),\n spanningCellManager: config.spanningCellManager });\n};\nexports.drawTable = drawTable;\n//# sourceMappingURL=drawTable.js.map","\"use strict\";\nexports[\"config.json\"] = validate43;\nconst schema13 = {\n \"$id\": \"config.json\",\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"type\": \"object\",\n \"properties\": {\n \"border\": {\n \"$ref\": \"shared.json#/definitions/borders\"\n },\n \"header\": {\n \"type\": \"object\",\n \"properties\": {\n \"content\": {\n \"type\": \"string\"\n },\n \"alignment\": {\n \"$ref\": \"shared.json#/definitions/alignment\"\n },\n \"wrapWord\": {\n \"type\": \"boolean\"\n },\n \"truncate\": {\n \"type\": \"integer\"\n },\n \"paddingLeft\": {\n \"type\": \"integer\"\n },\n \"paddingRight\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\"content\"],\n \"additionalProperties\": false\n },\n \"columns\": {\n \"$ref\": \"shared.json#/definitions/columns\"\n },\n \"columnDefault\": {\n \"$ref\": \"shared.json#/definitions/column\"\n },\n \"drawVerticalLine\": {\n \"typeof\": \"function\"\n },\n \"drawHorizontalLine\": {\n \"typeof\": \"function\"\n },\n \"singleLine\": {\n \"typeof\": \"boolean\"\n },\n \"spanningCells\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"col\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"row\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"colSpan\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"rowSpan\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"alignment\": {\n \"$ref\": \"shared.json#/definitions/alignment\"\n },\n \"verticalAlignment\": {\n \"$ref\": \"shared.json#/definitions/verticalAlignment\"\n },\n \"wrapWord\": {\n \"type\": \"boolean\"\n },\n \"truncate\": {\n \"type\": \"integer\"\n },\n \"paddingLeft\": {\n \"type\": \"integer\"\n },\n \"paddingRight\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\"row\", \"col\"],\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n};\nconst schema15 = {\n \"type\": \"object\",\n \"properties\": {\n \"topBody\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"topJoin\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"topLeft\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"topRight\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bottomBody\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bottomJoin\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bottomLeft\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bottomRight\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bodyLeft\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bodyRight\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bodyJoin\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"headerJoin\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinBody\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinLeft\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinRight\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinJoin\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinMiddleUp\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinMiddleDown\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinMiddleLeft\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinMiddleRight\": {\n \"$ref\": \"#/definitions/border\"\n }\n },\n \"additionalProperties\": false\n};\nconst func8 = Object.prototype.hasOwnProperty;\nconst schema16 = {\n \"type\": \"string\"\n};\nfunction validate46(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (typeof data !== \"string\") {\n const err0 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"string\"\n },\n message: \"must be string\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n validate46.errors = vErrors;\n return errors === 0;\n}\nfunction validate45(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(func8.call(schema15.properties, key0))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n if (data.topBody !== undefined) {\n if (!(validate46(data.topBody, {\n instancePath: instancePath + \"/topBody\",\n parentData: data,\n parentDataProperty: \"topBody\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.topJoin !== undefined) {\n if (!(validate46(data.topJoin, {\n instancePath: instancePath + \"/topJoin\",\n parentData: data,\n parentDataProperty: \"topJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.topLeft !== undefined) {\n if (!(validate46(data.topLeft, {\n instancePath: instancePath + \"/topLeft\",\n parentData: data,\n parentDataProperty: \"topLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.topRight !== undefined) {\n if (!(validate46(data.topRight, {\n instancePath: instancePath + \"/topRight\",\n parentData: data,\n parentDataProperty: \"topRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomBody !== undefined) {\n if (!(validate46(data.bottomBody, {\n instancePath: instancePath + \"/bottomBody\",\n parentData: data,\n parentDataProperty: \"bottomBody\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomJoin !== undefined) {\n if (!(validate46(data.bottomJoin, {\n instancePath: instancePath + \"/bottomJoin\",\n parentData: data,\n parentDataProperty: \"bottomJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomLeft !== undefined) {\n if (!(validate46(data.bottomLeft, {\n instancePath: instancePath + \"/bottomLeft\",\n parentData: data,\n parentDataProperty: \"bottomLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomRight !== undefined) {\n if (!(validate46(data.bottomRight, {\n instancePath: instancePath + \"/bottomRight\",\n parentData: data,\n parentDataProperty: \"bottomRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bodyLeft !== undefined) {\n if (!(validate46(data.bodyLeft, {\n instancePath: instancePath + \"/bodyLeft\",\n parentData: data,\n parentDataProperty: \"bodyLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bodyRight !== undefined) {\n if (!(validate46(data.bodyRight, {\n instancePath: instancePath + \"/bodyRight\",\n parentData: data,\n parentDataProperty: \"bodyRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bodyJoin !== undefined) {\n if (!(validate46(data.bodyJoin, {\n instancePath: instancePath + \"/bodyJoin\",\n parentData: data,\n parentDataProperty: \"bodyJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.headerJoin !== undefined) {\n if (!(validate46(data.headerJoin, {\n instancePath: instancePath + \"/headerJoin\",\n parentData: data,\n parentDataProperty: \"headerJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinBody !== undefined) {\n if (!(validate46(data.joinBody, {\n instancePath: instancePath + \"/joinBody\",\n parentData: data,\n parentDataProperty: \"joinBody\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinLeft !== undefined) {\n if (!(validate46(data.joinLeft, {\n instancePath: instancePath + \"/joinLeft\",\n parentData: data,\n parentDataProperty: \"joinLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinRight !== undefined) {\n if (!(validate46(data.joinRight, {\n instancePath: instancePath + \"/joinRight\",\n parentData: data,\n parentDataProperty: \"joinRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinJoin !== undefined) {\n if (!(validate46(data.joinJoin, {\n instancePath: instancePath + \"/joinJoin\",\n parentData: data,\n parentDataProperty: \"joinJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleUp !== undefined) {\n if (!(validate46(data.joinMiddleUp, {\n instancePath: instancePath + \"/joinMiddleUp\",\n parentData: data,\n parentDataProperty: \"joinMiddleUp\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleDown !== undefined) {\n if (!(validate46(data.joinMiddleDown, {\n instancePath: instancePath + \"/joinMiddleDown\",\n parentData: data,\n parentDataProperty: \"joinMiddleDown\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleLeft !== undefined) {\n if (!(validate46(data.joinMiddleLeft, {\n instancePath: instancePath + \"/joinMiddleLeft\",\n parentData: data,\n parentDataProperty: \"joinMiddleLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleRight !== undefined) {\n if (!(validate46(data.joinMiddleRight, {\n instancePath: instancePath + \"/joinMiddleRight\",\n parentData: data,\n parentDataProperty: \"joinMiddleRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n }\n else {\n const err1 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate45.errors = vErrors;\n return errors === 0;\n}\nconst schema17 = {\n \"type\": \"string\",\n \"enum\": [\"left\", \"right\", \"center\", \"justify\"]\n};\nconst func0 = require(\"ajv/dist/runtime/equal\").default;\nfunction validate68(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (typeof data !== \"string\") {\n const err0 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"string\"\n },\n message: \"must be string\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n if (!((((data === \"left\") || (data === \"right\")) || (data === \"center\")) || (data === \"justify\"))) {\n const err1 = {\n instancePath,\n schemaPath: \"#/enum\",\n keyword: \"enum\",\n params: {\n allowedValues: schema17.enum\n },\n message: \"must be equal to one of the allowed values\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate68.errors = vErrors;\n return errors === 0;\n}\nconst schema18 = {\n \"oneOf\": [{\n \"type\": \"object\",\n \"patternProperties\": {\n \"^[0-9]+$\": {\n \"$ref\": \"#/definitions/column\"\n }\n },\n \"additionalProperties\": false\n }, {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/column\"\n }\n }]\n};\nconst pattern0 = new RegExp(\"^[0-9]+$\", \"u\");\nconst schema19 = {\n \"type\": \"object\",\n \"properties\": {\n \"alignment\": {\n \"$ref\": \"#/definitions/alignment\"\n },\n \"verticalAlignment\": {\n \"$ref\": \"#/definitions/verticalAlignment\"\n },\n \"width\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"wrapWord\": {\n \"type\": \"boolean\"\n },\n \"truncate\": {\n \"type\": \"integer\"\n },\n \"paddingLeft\": {\n \"type\": \"integer\"\n },\n \"paddingRight\": {\n \"type\": \"integer\"\n }\n },\n \"additionalProperties\": false\n};\nfunction validate72(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (typeof data !== \"string\") {\n const err0 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"string\"\n },\n message: \"must be string\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n if (!((((data === \"left\") || (data === \"right\")) || (data === \"center\")) || (data === \"justify\"))) {\n const err1 = {\n instancePath,\n schemaPath: \"#/enum\",\n keyword: \"enum\",\n params: {\n allowedValues: schema17.enum\n },\n message: \"must be equal to one of the allowed values\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate72.errors = vErrors;\n return errors === 0;\n}\nconst schema21 = {\n \"type\": \"string\",\n \"enum\": [\"top\", \"middle\", \"bottom\"]\n};\nfunction validate74(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (typeof data !== \"string\") {\n const err0 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"string\"\n },\n message: \"must be string\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n if (!(((data === \"top\") || (data === \"middle\")) || (data === \"bottom\"))) {\n const err1 = {\n instancePath,\n schemaPath: \"#/enum\",\n keyword: \"enum\",\n params: {\n allowedValues: schema21.enum\n },\n message: \"must be equal to one of the allowed values\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate74.errors = vErrors;\n return errors === 0;\n}\nfunction validate71(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(((((((key0 === \"alignment\") || (key0 === \"verticalAlignment\")) || (key0 === \"width\")) || (key0 === \"wrapWord\")) || (key0 === \"truncate\")) || (key0 === \"paddingLeft\")) || (key0 === \"paddingRight\"))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n if (data.alignment !== undefined) {\n if (!(validate72(data.alignment, {\n instancePath: instancePath + \"/alignment\",\n parentData: data,\n parentDataProperty: \"alignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate72.errors : vErrors.concat(validate72.errors);\n errors = vErrors.length;\n }\n }\n if (data.verticalAlignment !== undefined) {\n if (!(validate74(data.verticalAlignment, {\n instancePath: instancePath + \"/verticalAlignment\",\n parentData: data,\n parentDataProperty: \"verticalAlignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate74.errors : vErrors.concat(validate74.errors);\n errors = vErrors.length;\n }\n }\n if (data.width !== undefined) {\n let data2 = data.width;\n if (!(((typeof data2 == \"number\") && (!(data2 % 1) && !isNaN(data2))) && (isFinite(data2)))) {\n const err1 = {\n instancePath: instancePath + \"/width\",\n schemaPath: \"#/properties/width/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n if ((typeof data2 == \"number\") && (isFinite(data2))) {\n if (data2 < 1 || isNaN(data2)) {\n const err2 = {\n instancePath: instancePath + \"/width\",\n schemaPath: \"#/properties/width/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 1\n },\n message: \"must be >= 1\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n }\n }\n if (data.wrapWord !== undefined) {\n if (typeof data.wrapWord !== \"boolean\") {\n const err3 = {\n instancePath: instancePath + \"/wrapWord\",\n schemaPath: \"#/properties/wrapWord/type\",\n keyword: \"type\",\n params: {\n type: \"boolean\"\n },\n message: \"must be boolean\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n }\n if (data.truncate !== undefined) {\n let data4 = data.truncate;\n if (!(((typeof data4 == \"number\") && (!(data4 % 1) && !isNaN(data4))) && (isFinite(data4)))) {\n const err4 = {\n instancePath: instancePath + \"/truncate\",\n schemaPath: \"#/properties/truncate/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err4];\n }\n else {\n vErrors.push(err4);\n }\n errors++;\n }\n }\n if (data.paddingLeft !== undefined) {\n let data5 = data.paddingLeft;\n if (!(((typeof data5 == \"number\") && (!(data5 % 1) && !isNaN(data5))) && (isFinite(data5)))) {\n const err5 = {\n instancePath: instancePath + \"/paddingLeft\",\n schemaPath: \"#/properties/paddingLeft/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err5];\n }\n else {\n vErrors.push(err5);\n }\n errors++;\n }\n }\n if (data.paddingRight !== undefined) {\n let data6 = data.paddingRight;\n if (!(((typeof data6 == \"number\") && (!(data6 % 1) && !isNaN(data6))) && (isFinite(data6)))) {\n const err6 = {\n instancePath: instancePath + \"/paddingRight\",\n schemaPath: \"#/properties/paddingRight/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err6];\n }\n else {\n vErrors.push(err6);\n }\n errors++;\n }\n }\n }\n else {\n const err7 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err7];\n }\n else {\n vErrors.push(err7);\n }\n errors++;\n }\n validate71.errors = vErrors;\n return errors === 0;\n}\nfunction validate70(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n const _errs0 = errors;\n let valid0 = false;\n let passing0 = null;\n const _errs1 = errors;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(pattern0.test(key0))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/oneOf/0/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n for (const key1 in data) {\n if (pattern0.test(key1)) {\n if (!(validate71(data[key1], {\n instancePath: instancePath + \"/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),\n parentData: data,\n parentDataProperty: key1,\n rootData\n }))) {\n vErrors = vErrors === null ? validate71.errors : vErrors.concat(validate71.errors);\n errors = vErrors.length;\n }\n }\n }\n }\n else {\n const err1 = {\n instancePath,\n schemaPath: \"#/oneOf/0/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n var _valid0 = _errs1 === errors;\n if (_valid0) {\n valid0 = true;\n passing0 = 0;\n }\n const _errs5 = errors;\n if (Array.isArray(data)) {\n const len0 = data.length;\n for (let i0 = 0; i0 < len0; i0++) {\n if (!(validate71(data[i0], {\n instancePath: instancePath + \"/\" + i0,\n parentData: data,\n parentDataProperty: i0,\n rootData\n }))) {\n vErrors = vErrors === null ? validate71.errors : vErrors.concat(validate71.errors);\n errors = vErrors.length;\n }\n }\n }\n else {\n const err2 = {\n instancePath,\n schemaPath: \"#/oneOf/1/type\",\n keyword: \"type\",\n params: {\n type: \"array\"\n },\n message: \"must be array\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n var _valid0 = _errs5 === errors;\n if (_valid0 && valid0) {\n valid0 = false;\n passing0 = [passing0, 1];\n }\n else {\n if (_valid0) {\n valid0 = true;\n passing0 = 1;\n }\n }\n if (!valid0) {\n const err3 = {\n instancePath,\n schemaPath: \"#/oneOf\",\n keyword: \"oneOf\",\n params: {\n passingSchemas: passing0\n },\n message: \"must match exactly one schema in oneOf\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n else {\n errors = _errs0;\n if (vErrors !== null) {\n if (_errs0) {\n vErrors.length = _errs0;\n }\n else {\n vErrors = null;\n }\n }\n }\n validate70.errors = vErrors;\n return errors === 0;\n}\nfunction validate79(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(((((((key0 === \"alignment\") || (key0 === \"verticalAlignment\")) || (key0 === \"width\")) || (key0 === \"wrapWord\")) || (key0 === \"truncate\")) || (key0 === \"paddingLeft\")) || (key0 === \"paddingRight\"))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n if (data.alignment !== undefined) {\n if (!(validate72(data.alignment, {\n instancePath: instancePath + \"/alignment\",\n parentData: data,\n parentDataProperty: \"alignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate72.errors : vErrors.concat(validate72.errors);\n errors = vErrors.length;\n }\n }\n if (data.verticalAlignment !== undefined) {\n if (!(validate74(data.verticalAlignment, {\n instancePath: instancePath + \"/verticalAlignment\",\n parentData: data,\n parentDataProperty: \"verticalAlignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate74.errors : vErrors.concat(validate74.errors);\n errors = vErrors.length;\n }\n }\n if (data.width !== undefined) {\n let data2 = data.width;\n if (!(((typeof data2 == \"number\") && (!(data2 % 1) && !isNaN(data2))) && (isFinite(data2)))) {\n const err1 = {\n instancePath: instancePath + \"/width\",\n schemaPath: \"#/properties/width/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n if ((typeof data2 == \"number\") && (isFinite(data2))) {\n if (data2 < 1 || isNaN(data2)) {\n const err2 = {\n instancePath: instancePath + \"/width\",\n schemaPath: \"#/properties/width/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 1\n },\n message: \"must be >= 1\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n }\n }\n if (data.wrapWord !== undefined) {\n if (typeof data.wrapWord !== \"boolean\") {\n const err3 = {\n instancePath: instancePath + \"/wrapWord\",\n schemaPath: \"#/properties/wrapWord/type\",\n keyword: \"type\",\n params: {\n type: \"boolean\"\n },\n message: \"must be boolean\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n }\n if (data.truncate !== undefined) {\n let data4 = data.truncate;\n if (!(((typeof data4 == \"number\") && (!(data4 % 1) && !isNaN(data4))) && (isFinite(data4)))) {\n const err4 = {\n instancePath: instancePath + \"/truncate\",\n schemaPath: \"#/properties/truncate/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err4];\n }\n else {\n vErrors.push(err4);\n }\n errors++;\n }\n }\n if (data.paddingLeft !== undefined) {\n let data5 = data.paddingLeft;\n if (!(((typeof data5 == \"number\") && (!(data5 % 1) && !isNaN(data5))) && (isFinite(data5)))) {\n const err5 = {\n instancePath: instancePath + \"/paddingLeft\",\n schemaPath: \"#/properties/paddingLeft/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err5];\n }\n else {\n vErrors.push(err5);\n }\n errors++;\n }\n }\n if (data.paddingRight !== undefined) {\n let data6 = data.paddingRight;\n if (!(((typeof data6 == \"number\") && (!(data6 % 1) && !isNaN(data6))) && (isFinite(data6)))) {\n const err6 = {\n instancePath: instancePath + \"/paddingRight\",\n schemaPath: \"#/properties/paddingRight/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err6];\n }\n else {\n vErrors.push(err6);\n }\n errors++;\n }\n }\n }\n else {\n const err7 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err7];\n }\n else {\n vErrors.push(err7);\n }\n errors++;\n }\n validate79.errors = vErrors;\n return errors === 0;\n}\nfunction validate84(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (typeof data !== \"string\") {\n const err0 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"string\"\n },\n message: \"must be string\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n if (!(((data === \"top\") || (data === \"middle\")) || (data === \"bottom\"))) {\n const err1 = {\n instancePath,\n schemaPath: \"#/enum\",\n keyword: \"enum\",\n params: {\n allowedValues: schema21.enum\n },\n message: \"must be equal to one of the allowed values\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate84.errors = vErrors;\n return errors === 0;\n}\nfunction validate43(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n /*# sourceURL=\"config.json\" */ ;\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!((((((((key0 === \"border\") || (key0 === \"header\")) || (key0 === \"columns\")) || (key0 === \"columnDefault\")) || (key0 === \"drawVerticalLine\")) || (key0 === \"drawHorizontalLine\")) || (key0 === \"singleLine\")) || (key0 === \"spanningCells\"))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n if (data.border !== undefined) {\n if (!(validate45(data.border, {\n instancePath: instancePath + \"/border\",\n parentData: data,\n parentDataProperty: \"border\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors);\n errors = vErrors.length;\n }\n }\n if (data.header !== undefined) {\n let data1 = data.header;\n if (data1 && typeof data1 == \"object\" && !Array.isArray(data1)) {\n if (data1.content === undefined) {\n const err1 = {\n instancePath: instancePath + \"/header\",\n schemaPath: \"#/properties/header/required\",\n keyword: \"required\",\n params: {\n missingProperty: \"content\"\n },\n message: \"must have required property '\" + \"content\" + \"'\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n for (const key1 in data1) {\n if (!((((((key1 === \"content\") || (key1 === \"alignment\")) || (key1 === \"wrapWord\")) || (key1 === \"truncate\")) || (key1 === \"paddingLeft\")) || (key1 === \"paddingRight\"))) {\n const err2 = {\n instancePath: instancePath + \"/header\",\n schemaPath: \"#/properties/header/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key1\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n }\n if (data1.content !== undefined) {\n if (typeof data1.content !== \"string\") {\n const err3 = {\n instancePath: instancePath + \"/header/content\",\n schemaPath: \"#/properties/header/properties/content/type\",\n keyword: \"type\",\n params: {\n type: \"string\"\n },\n message: \"must be string\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n }\n if (data1.alignment !== undefined) {\n if (!(validate68(data1.alignment, {\n instancePath: instancePath + \"/header/alignment\",\n parentData: data1,\n parentDataProperty: \"alignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate68.errors : vErrors.concat(validate68.errors);\n errors = vErrors.length;\n }\n }\n if (data1.wrapWord !== undefined) {\n if (typeof data1.wrapWord !== \"boolean\") {\n const err4 = {\n instancePath: instancePath + \"/header/wrapWord\",\n schemaPath: \"#/properties/header/properties/wrapWord/type\",\n keyword: \"type\",\n params: {\n type: \"boolean\"\n },\n message: \"must be boolean\"\n };\n if (vErrors === null) {\n vErrors = [err4];\n }\n else {\n vErrors.push(err4);\n }\n errors++;\n }\n }\n if (data1.truncate !== undefined) {\n let data5 = data1.truncate;\n if (!(((typeof data5 == \"number\") && (!(data5 % 1) && !isNaN(data5))) && (isFinite(data5)))) {\n const err5 = {\n instancePath: instancePath + \"/header/truncate\",\n schemaPath: \"#/properties/header/properties/truncate/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err5];\n }\n else {\n vErrors.push(err5);\n }\n errors++;\n }\n }\n if (data1.paddingLeft !== undefined) {\n let data6 = data1.paddingLeft;\n if (!(((typeof data6 == \"number\") && (!(data6 % 1) && !isNaN(data6))) && (isFinite(data6)))) {\n const err6 = {\n instancePath: instancePath + \"/header/paddingLeft\",\n schemaPath: \"#/properties/header/properties/paddingLeft/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err6];\n }\n else {\n vErrors.push(err6);\n }\n errors++;\n }\n }\n if (data1.paddingRight !== undefined) {\n let data7 = data1.paddingRight;\n if (!(((typeof data7 == \"number\") && (!(data7 % 1) && !isNaN(data7))) && (isFinite(data7)))) {\n const err7 = {\n instancePath: instancePath + \"/header/paddingRight\",\n schemaPath: \"#/properties/header/properties/paddingRight/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err7];\n }\n else {\n vErrors.push(err7);\n }\n errors++;\n }\n }\n }\n else {\n const err8 = {\n instancePath: instancePath + \"/header\",\n schemaPath: \"#/properties/header/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err8];\n }\n else {\n vErrors.push(err8);\n }\n errors++;\n }\n }\n if (data.columns !== undefined) {\n if (!(validate70(data.columns, {\n instancePath: instancePath + \"/columns\",\n parentData: data,\n parentDataProperty: \"columns\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate70.errors : vErrors.concat(validate70.errors);\n errors = vErrors.length;\n }\n }\n if (data.columnDefault !== undefined) {\n if (!(validate79(data.columnDefault, {\n instancePath: instancePath + \"/columnDefault\",\n parentData: data,\n parentDataProperty: \"columnDefault\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate79.errors : vErrors.concat(validate79.errors);\n errors = vErrors.length;\n }\n }\n if (data.drawVerticalLine !== undefined) {\n if (typeof data.drawVerticalLine != \"function\") {\n const err9 = {\n instancePath: instancePath + \"/drawVerticalLine\",\n schemaPath: \"#/properties/drawVerticalLine/typeof\",\n keyword: \"typeof\",\n params: {},\n message: \"must pass \\\"typeof\\\" keyword validation\"\n };\n if (vErrors === null) {\n vErrors = [err9];\n }\n else {\n vErrors.push(err9);\n }\n errors++;\n }\n }\n if (data.drawHorizontalLine !== undefined) {\n if (typeof data.drawHorizontalLine != \"function\") {\n const err10 = {\n instancePath: instancePath + \"/drawHorizontalLine\",\n schemaPath: \"#/properties/drawHorizontalLine/typeof\",\n keyword: \"typeof\",\n params: {},\n message: \"must pass \\\"typeof\\\" keyword validation\"\n };\n if (vErrors === null) {\n vErrors = [err10];\n }\n else {\n vErrors.push(err10);\n }\n errors++;\n }\n }\n if (data.singleLine !== undefined) {\n if (typeof data.singleLine != \"boolean\") {\n const err11 = {\n instancePath: instancePath + \"/singleLine\",\n schemaPath: \"#/properties/singleLine/typeof\",\n keyword: \"typeof\",\n params: {},\n message: \"must pass \\\"typeof\\\" keyword validation\"\n };\n if (vErrors === null) {\n vErrors = [err11];\n }\n else {\n vErrors.push(err11);\n }\n errors++;\n }\n }\n if (data.spanningCells !== undefined) {\n let data13 = data.spanningCells;\n if (Array.isArray(data13)) {\n const len0 = data13.length;\n for (let i0 = 0; i0 < len0; i0++) {\n let data14 = data13[i0];\n if (data14 && typeof data14 == \"object\" && !Array.isArray(data14)) {\n if (data14.row === undefined) {\n const err12 = {\n instancePath: instancePath + \"/spanningCells/\" + i0,\n schemaPath: \"#/properties/spanningCells/items/required\",\n keyword: \"required\",\n params: {\n missingProperty: \"row\"\n },\n message: \"must have required property '\" + \"row\" + \"'\"\n };\n if (vErrors === null) {\n vErrors = [err12];\n }\n else {\n vErrors.push(err12);\n }\n errors++;\n }\n if (data14.col === undefined) {\n const err13 = {\n instancePath: instancePath + \"/spanningCells/\" + i0,\n schemaPath: \"#/properties/spanningCells/items/required\",\n keyword: \"required\",\n params: {\n missingProperty: \"col\"\n },\n message: \"must have required property '\" + \"col\" + \"'\"\n };\n if (vErrors === null) {\n vErrors = [err13];\n }\n else {\n vErrors.push(err13);\n }\n errors++;\n }\n for (const key2 in data14) {\n if (!(func8.call(schema13.properties.spanningCells.items.properties, key2))) {\n const err14 = {\n instancePath: instancePath + \"/spanningCells/\" + i0,\n schemaPath: \"#/properties/spanningCells/items/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key2\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err14];\n }\n else {\n vErrors.push(err14);\n }\n errors++;\n }\n }\n if (data14.col !== undefined) {\n let data15 = data14.col;\n if (!(((typeof data15 == \"number\") && (!(data15 % 1) && !isNaN(data15))) && (isFinite(data15)))) {\n const err15 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/col\",\n schemaPath: \"#/properties/spanningCells/items/properties/col/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err15];\n }\n else {\n vErrors.push(err15);\n }\n errors++;\n }\n if ((typeof data15 == \"number\") && (isFinite(data15))) {\n if (data15 < 0 || isNaN(data15)) {\n const err16 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/col\",\n schemaPath: \"#/properties/spanningCells/items/properties/col/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 0\n },\n message: \"must be >= 0\"\n };\n if (vErrors === null) {\n vErrors = [err16];\n }\n else {\n vErrors.push(err16);\n }\n errors++;\n }\n }\n }\n if (data14.row !== undefined) {\n let data16 = data14.row;\n if (!(((typeof data16 == \"number\") && (!(data16 % 1) && !isNaN(data16))) && (isFinite(data16)))) {\n const err17 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/row\",\n schemaPath: \"#/properties/spanningCells/items/properties/row/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err17];\n }\n else {\n vErrors.push(err17);\n }\n errors++;\n }\n if ((typeof data16 == \"number\") && (isFinite(data16))) {\n if (data16 < 0 || isNaN(data16)) {\n const err18 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/row\",\n schemaPath: \"#/properties/spanningCells/items/properties/row/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 0\n },\n message: \"must be >= 0\"\n };\n if (vErrors === null) {\n vErrors = [err18];\n }\n else {\n vErrors.push(err18);\n }\n errors++;\n }\n }\n }\n if (data14.colSpan !== undefined) {\n let data17 = data14.colSpan;\n if (!(((typeof data17 == \"number\") && (!(data17 % 1) && !isNaN(data17))) && (isFinite(data17)))) {\n const err19 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/colSpan\",\n schemaPath: \"#/properties/spanningCells/items/properties/colSpan/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err19];\n }\n else {\n vErrors.push(err19);\n }\n errors++;\n }\n if ((typeof data17 == \"number\") && (isFinite(data17))) {\n if (data17 < 1 || isNaN(data17)) {\n const err20 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/colSpan\",\n schemaPath: \"#/properties/spanningCells/items/properties/colSpan/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 1\n },\n message: \"must be >= 1\"\n };\n if (vErrors === null) {\n vErrors = [err20];\n }\n else {\n vErrors.push(err20);\n }\n errors++;\n }\n }\n }\n if (data14.rowSpan !== undefined) {\n let data18 = data14.rowSpan;\n if (!(((typeof data18 == \"number\") && (!(data18 % 1) && !isNaN(data18))) && (isFinite(data18)))) {\n const err21 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/rowSpan\",\n schemaPath: \"#/properties/spanningCells/items/properties/rowSpan/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err21];\n }\n else {\n vErrors.push(err21);\n }\n errors++;\n }\n if ((typeof data18 == \"number\") && (isFinite(data18))) {\n if (data18 < 1 || isNaN(data18)) {\n const err22 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/rowSpan\",\n schemaPath: \"#/properties/spanningCells/items/properties/rowSpan/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 1\n },\n message: \"must be >= 1\"\n };\n if (vErrors === null) {\n vErrors = [err22];\n }\n else {\n vErrors.push(err22);\n }\n errors++;\n }\n }\n }\n if (data14.alignment !== undefined) {\n if (!(validate68(data14.alignment, {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/alignment\",\n parentData: data14,\n parentDataProperty: \"alignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate68.errors : vErrors.concat(validate68.errors);\n errors = vErrors.length;\n }\n }\n if (data14.verticalAlignment !== undefined) {\n if (!(validate84(data14.verticalAlignment, {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/verticalAlignment\",\n parentData: data14,\n parentDataProperty: \"verticalAlignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate84.errors : vErrors.concat(validate84.errors);\n errors = vErrors.length;\n }\n }\n if (data14.wrapWord !== undefined) {\n if (typeof data14.wrapWord !== \"boolean\") {\n const err23 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/wrapWord\",\n schemaPath: \"#/properties/spanningCells/items/properties/wrapWord/type\",\n keyword: \"type\",\n params: {\n type: \"boolean\"\n },\n message: \"must be boolean\"\n };\n if (vErrors === null) {\n vErrors = [err23];\n }\n else {\n vErrors.push(err23);\n }\n errors++;\n }\n }\n if (data14.truncate !== undefined) {\n let data22 = data14.truncate;\n if (!(((typeof data22 == \"number\") && (!(data22 % 1) && !isNaN(data22))) && (isFinite(data22)))) {\n const err24 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/truncate\",\n schemaPath: \"#/properties/spanningCells/items/properties/truncate/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err24];\n }\n else {\n vErrors.push(err24);\n }\n errors++;\n }\n }\n if (data14.paddingLeft !== undefined) {\n let data23 = data14.paddingLeft;\n if (!(((typeof data23 == \"number\") && (!(data23 % 1) && !isNaN(data23))) && (isFinite(data23)))) {\n const err25 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/paddingLeft\",\n schemaPath: \"#/properties/spanningCells/items/properties/paddingLeft/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err25];\n }\n else {\n vErrors.push(err25);\n }\n errors++;\n }\n }\n if (data14.paddingRight !== undefined) {\n let data24 = data14.paddingRight;\n if (!(((typeof data24 == \"number\") && (!(data24 % 1) && !isNaN(data24))) && (isFinite(data24)))) {\n const err26 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/paddingRight\",\n schemaPath: \"#/properties/spanningCells/items/properties/paddingRight/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err26];\n }\n else {\n vErrors.push(err26);\n }\n errors++;\n }\n }\n }\n else {\n const err27 = {\n instancePath: instancePath + \"/spanningCells/\" + i0,\n schemaPath: \"#/properties/spanningCells/items/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err27];\n }\n else {\n vErrors.push(err27);\n }\n errors++;\n }\n }\n }\n else {\n const err28 = {\n instancePath: instancePath + \"/spanningCells\",\n schemaPath: \"#/properties/spanningCells/type\",\n keyword: \"type\",\n params: {\n type: \"array\"\n },\n message: \"must be array\"\n };\n if (vErrors === null) {\n vErrors = [err28];\n }\n else {\n vErrors.push(err28);\n }\n errors++;\n }\n }\n }\n else {\n const err29 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err29];\n }\n else {\n vErrors.push(err29);\n }\n errors++;\n }\n validate43.errors = vErrors;\n return errors === 0;\n}\nexports[\"streamConfig.json\"] = validate86;\nconst schema24 = {\n \"$id\": \"streamConfig.json\",\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"type\": \"object\",\n \"properties\": {\n \"border\": {\n \"$ref\": \"shared.json#/definitions/borders\"\n },\n \"columns\": {\n \"$ref\": \"shared.json#/definitions/columns\"\n },\n \"columnDefault\": {\n \"$ref\": \"shared.json#/definitions/column\"\n },\n \"columnCount\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"drawVerticalLine\": {\n \"typeof\": \"function\"\n }\n },\n \"required\": [\"columnDefault\", \"columnCount\"],\n \"additionalProperties\": false\n};\nfunction validate87(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(func8.call(schema15.properties, key0))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n if (data.topBody !== undefined) {\n if (!(validate46(data.topBody, {\n instancePath: instancePath + \"/topBody\",\n parentData: data,\n parentDataProperty: \"topBody\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.topJoin !== undefined) {\n if (!(validate46(data.topJoin, {\n instancePath: instancePath + \"/topJoin\",\n parentData: data,\n parentDataProperty: \"topJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.topLeft !== undefined) {\n if (!(validate46(data.topLeft, {\n instancePath: instancePath + \"/topLeft\",\n parentData: data,\n parentDataProperty: \"topLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.topRight !== undefined) {\n if (!(validate46(data.topRight, {\n instancePath: instancePath + \"/topRight\",\n parentData: data,\n parentDataProperty: \"topRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomBody !== undefined) {\n if (!(validate46(data.bottomBody, {\n instancePath: instancePath + \"/bottomBody\",\n parentData: data,\n parentDataProperty: \"bottomBody\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomJoin !== undefined) {\n if (!(validate46(data.bottomJoin, {\n instancePath: instancePath + \"/bottomJoin\",\n parentData: data,\n parentDataProperty: \"bottomJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomLeft !== undefined) {\n if (!(validate46(data.bottomLeft, {\n instancePath: instancePath + \"/bottomLeft\",\n parentData: data,\n parentDataProperty: \"bottomLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomRight !== undefined) {\n if (!(validate46(data.bottomRight, {\n instancePath: instancePath + \"/bottomRight\",\n parentData: data,\n parentDataProperty: \"bottomRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bodyLeft !== undefined) {\n if (!(validate46(data.bodyLeft, {\n instancePath: instancePath + \"/bodyLeft\",\n parentData: data,\n parentDataProperty: \"bodyLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bodyRight !== undefined) {\n if (!(validate46(data.bodyRight, {\n instancePath: instancePath + \"/bodyRight\",\n parentData: data,\n parentDataProperty: \"bodyRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bodyJoin !== undefined) {\n if (!(validate46(data.bodyJoin, {\n instancePath: instancePath + \"/bodyJoin\",\n parentData: data,\n parentDataProperty: \"bodyJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.headerJoin !== undefined) {\n if (!(validate46(data.headerJoin, {\n instancePath: instancePath + \"/headerJoin\",\n parentData: data,\n parentDataProperty: \"headerJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinBody !== undefined) {\n if (!(validate46(data.joinBody, {\n instancePath: instancePath + \"/joinBody\",\n parentData: data,\n parentDataProperty: \"joinBody\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinLeft !== undefined) {\n if (!(validate46(data.joinLeft, {\n instancePath: instancePath + \"/joinLeft\",\n parentData: data,\n parentDataProperty: \"joinLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinRight !== undefined) {\n if (!(validate46(data.joinRight, {\n instancePath: instancePath + \"/joinRight\",\n parentData: data,\n parentDataProperty: \"joinRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinJoin !== undefined) {\n if (!(validate46(data.joinJoin, {\n instancePath: instancePath + \"/joinJoin\",\n parentData: data,\n parentDataProperty: \"joinJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleUp !== undefined) {\n if (!(validate46(data.joinMiddleUp, {\n instancePath: instancePath + \"/joinMiddleUp\",\n parentData: data,\n parentDataProperty: \"joinMiddleUp\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleDown !== undefined) {\n if (!(validate46(data.joinMiddleDown, {\n instancePath: instancePath + \"/joinMiddleDown\",\n parentData: data,\n parentDataProperty: \"joinMiddleDown\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleLeft !== undefined) {\n if (!(validate46(data.joinMiddleLeft, {\n instancePath: instancePath + \"/joinMiddleLeft\",\n parentData: data,\n parentDataProperty: \"joinMiddleLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleRight !== undefined) {\n if (!(validate46(data.joinMiddleRight, {\n instancePath: instancePath + \"/joinMiddleRight\",\n parentData: data,\n parentDataProperty: \"joinMiddleRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n }\n else {\n const err1 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate87.errors = vErrors;\n return errors === 0;\n}\nfunction validate109(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n const _errs0 = errors;\n let valid0 = false;\n let passing0 = null;\n const _errs1 = errors;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(pattern0.test(key0))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/oneOf/0/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n for (const key1 in data) {\n if (pattern0.test(key1)) {\n if (!(validate71(data[key1], {\n instancePath: instancePath + \"/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),\n parentData: data,\n parentDataProperty: key1,\n rootData\n }))) {\n vErrors = vErrors === null ? validate71.errors : vErrors.concat(validate71.errors);\n errors = vErrors.length;\n }\n }\n }\n }\n else {\n const err1 = {\n instancePath,\n schemaPath: \"#/oneOf/0/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n var _valid0 = _errs1 === errors;\n if (_valid0) {\n valid0 = true;\n passing0 = 0;\n }\n const _errs5 = errors;\n if (Array.isArray(data)) {\n const len0 = data.length;\n for (let i0 = 0; i0 < len0; i0++) {\n if (!(validate71(data[i0], {\n instancePath: instancePath + \"/\" + i0,\n parentData: data,\n parentDataProperty: i0,\n rootData\n }))) {\n vErrors = vErrors === null ? validate71.errors : vErrors.concat(validate71.errors);\n errors = vErrors.length;\n }\n }\n }\n else {\n const err2 = {\n instancePath,\n schemaPath: \"#/oneOf/1/type\",\n keyword: \"type\",\n params: {\n type: \"array\"\n },\n message: \"must be array\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n var _valid0 = _errs5 === errors;\n if (_valid0 && valid0) {\n valid0 = false;\n passing0 = [passing0, 1];\n }\n else {\n if (_valid0) {\n valid0 = true;\n passing0 = 1;\n }\n }\n if (!valid0) {\n const err3 = {\n instancePath,\n schemaPath: \"#/oneOf\",\n keyword: \"oneOf\",\n params: {\n passingSchemas: passing0\n },\n message: \"must match exactly one schema in oneOf\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n else {\n errors = _errs0;\n if (vErrors !== null) {\n if (_errs0) {\n vErrors.length = _errs0;\n }\n else {\n vErrors = null;\n }\n }\n }\n validate109.errors = vErrors;\n return errors === 0;\n}\nfunction validate113(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(((((((key0 === \"alignment\") || (key0 === \"verticalAlignment\")) || (key0 === \"width\")) || (key0 === \"wrapWord\")) || (key0 === \"truncate\")) || (key0 === \"paddingLeft\")) || (key0 === \"paddingRight\"))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n if (data.alignment !== undefined) {\n if (!(validate72(data.alignment, {\n instancePath: instancePath + \"/alignment\",\n parentData: data,\n parentDataProperty: \"alignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate72.errors : vErrors.concat(validate72.errors);\n errors = vErrors.length;\n }\n }\n if (data.verticalAlignment !== undefined) {\n if (!(validate74(data.verticalAlignment, {\n instancePath: instancePath + \"/verticalAlignment\",\n parentData: data,\n parentDataProperty: \"verticalAlignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate74.errors : vErrors.concat(validate74.errors);\n errors = vErrors.length;\n }\n }\n if (data.width !== undefined) {\n let data2 = data.width;\n if (!(((typeof data2 == \"number\") && (!(data2 % 1) && !isNaN(data2))) && (isFinite(data2)))) {\n const err1 = {\n instancePath: instancePath + \"/width\",\n schemaPath: \"#/properties/width/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n if ((typeof data2 == \"number\") && (isFinite(data2))) {\n if (data2 < 1 || isNaN(data2)) {\n const err2 = {\n instancePath: instancePath + \"/width\",\n schemaPath: \"#/properties/width/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 1\n },\n message: \"must be >= 1\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n }\n }\n if (data.wrapWord !== undefined) {\n if (typeof data.wrapWord !== \"boolean\") {\n const err3 = {\n instancePath: instancePath + \"/wrapWord\",\n schemaPath: \"#/properties/wrapWord/type\",\n keyword: \"type\",\n params: {\n type: \"boolean\"\n },\n message: \"must be boolean\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n }\n if (data.truncate !== undefined) {\n let data4 = data.truncate;\n if (!(((typeof data4 == \"number\") && (!(data4 % 1) && !isNaN(data4))) && (isFinite(data4)))) {\n const err4 = {\n instancePath: instancePath + \"/truncate\",\n schemaPath: \"#/properties/truncate/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err4];\n }\n else {\n vErrors.push(err4);\n }\n errors++;\n }\n }\n if (data.paddingLeft !== undefined) {\n let data5 = data.paddingLeft;\n if (!(((typeof data5 == \"number\") && (!(data5 % 1) && !isNaN(data5))) && (isFinite(data5)))) {\n const err5 = {\n instancePath: instancePath + \"/paddingLeft\",\n schemaPath: \"#/properties/paddingLeft/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err5];\n }\n else {\n vErrors.push(err5);\n }\n errors++;\n }\n }\n if (data.paddingRight !== undefined) {\n let data6 = data.paddingRight;\n if (!(((typeof data6 == \"number\") && (!(data6 % 1) && !isNaN(data6))) && (isFinite(data6)))) {\n const err6 = {\n instancePath: instancePath + \"/paddingRight\",\n schemaPath: \"#/properties/paddingRight/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err6];\n }\n else {\n vErrors.push(err6);\n }\n errors++;\n }\n }\n }\n else {\n const err7 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err7];\n }\n else {\n vErrors.push(err7);\n }\n errors++;\n }\n validate113.errors = vErrors;\n return errors === 0;\n}\nfunction validate86(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n /*# sourceURL=\"streamConfig.json\" */ ;\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n if (data.columnDefault === undefined) {\n const err0 = {\n instancePath,\n schemaPath: \"#/required\",\n keyword: \"required\",\n params: {\n missingProperty: \"columnDefault\"\n },\n message: \"must have required property '\" + \"columnDefault\" + \"'\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n if (data.columnCount === undefined) {\n const err1 = {\n instancePath,\n schemaPath: \"#/required\",\n keyword: \"required\",\n params: {\n missingProperty: \"columnCount\"\n },\n message: \"must have required property '\" + \"columnCount\" + \"'\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n for (const key0 in data) {\n if (!(((((key0 === \"border\") || (key0 === \"columns\")) || (key0 === \"columnDefault\")) || (key0 === \"columnCount\")) || (key0 === \"drawVerticalLine\"))) {\n const err2 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n }\n if (data.border !== undefined) {\n if (!(validate87(data.border, {\n instancePath: instancePath + \"/border\",\n parentData: data,\n parentDataProperty: \"border\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate87.errors : vErrors.concat(validate87.errors);\n errors = vErrors.length;\n }\n }\n if (data.columns !== undefined) {\n if (!(validate109(data.columns, {\n instancePath: instancePath + \"/columns\",\n parentData: data,\n parentDataProperty: \"columns\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate109.errors : vErrors.concat(validate109.errors);\n errors = vErrors.length;\n }\n }\n if (data.columnDefault !== undefined) {\n if (!(validate113(data.columnDefault, {\n instancePath: instancePath + \"/columnDefault\",\n parentData: data,\n parentDataProperty: \"columnDefault\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate113.errors : vErrors.concat(validate113.errors);\n errors = vErrors.length;\n }\n }\n if (data.columnCount !== undefined) {\n let data3 = data.columnCount;\n if (!(((typeof data3 == \"number\") && (!(data3 % 1) && !isNaN(data3))) && (isFinite(data3)))) {\n const err3 = {\n instancePath: instancePath + \"/columnCount\",\n schemaPath: \"#/properties/columnCount/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n if ((typeof data3 == \"number\") && (isFinite(data3))) {\n if (data3 < 1 || isNaN(data3)) {\n const err4 = {\n instancePath: instancePath + \"/columnCount\",\n schemaPath: \"#/properties/columnCount/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 1\n },\n message: \"must be >= 1\"\n };\n if (vErrors === null) {\n vErrors = [err4];\n }\n else {\n vErrors.push(err4);\n }\n errors++;\n }\n }\n }\n if (data.drawVerticalLine !== undefined) {\n if (typeof data.drawVerticalLine != \"function\") {\n const err5 = {\n instancePath: instancePath + \"/drawVerticalLine\",\n schemaPath: \"#/properties/drawVerticalLine/typeof\",\n keyword: \"typeof\",\n params: {},\n message: \"must pass \\\"typeof\\\" keyword validation\"\n };\n if (vErrors === null) {\n vErrors = [err5];\n }\n else {\n vErrors.push(err5);\n }\n errors++;\n }\n }\n }\n else {\n const err6 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err6];\n }\n else {\n vErrors.push(err6);\n }\n errors++;\n }\n validate86.errors = vErrors;\n return errors === 0;\n}\n//# sourceMappingURL=validators.js.map","\"use strict\";\n/* eslint-disable sort-keys-fix/sort-keys-fix */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBorderCharacters = void 0;\nconst getBorderCharacters = (name) => {\n if (name === 'honeywell') {\n return {\n topBody: '═',\n topJoin: '╤',\n topLeft: '╔',\n topRight: '╗',\n bottomBody: '═',\n bottomJoin: '╧',\n bottomLeft: '╚',\n bottomRight: '╝',\n bodyLeft: '║',\n bodyRight: '║',\n bodyJoin: '│',\n headerJoin: '┬',\n joinBody: '─',\n joinLeft: '╟',\n joinRight: '╢',\n joinJoin: '┼',\n joinMiddleDown: '┬',\n joinMiddleUp: '┴',\n joinMiddleLeft: '┤',\n joinMiddleRight: '├',\n };\n }\n if (name === 'norc') {\n return {\n topBody: '─',\n topJoin: '┬',\n topLeft: '┌',\n topRight: '┐',\n bottomBody: '─',\n bottomJoin: '┴',\n bottomLeft: '└',\n bottomRight: '┘',\n bodyLeft: '│',\n bodyRight: '│',\n bodyJoin: '│',\n headerJoin: '┬',\n joinBody: '─',\n joinLeft: '├',\n joinRight: '┤',\n joinJoin: '┼',\n joinMiddleDown: '┬',\n joinMiddleUp: '┴',\n joinMiddleLeft: '┤',\n joinMiddleRight: '├',\n };\n }\n if (name === 'ramac') {\n return {\n topBody: '-',\n topJoin: '+',\n topLeft: '+',\n topRight: '+',\n bottomBody: '-',\n bottomJoin: '+',\n bottomLeft: '+',\n bottomRight: '+',\n bodyLeft: '|',\n bodyRight: '|',\n bodyJoin: '|',\n headerJoin: '+',\n joinBody: '-',\n joinLeft: '|',\n joinRight: '|',\n joinJoin: '|',\n joinMiddleDown: '+',\n joinMiddleUp: '+',\n joinMiddleLeft: '+',\n joinMiddleRight: '+',\n };\n }\n if (name === 'void') {\n return {\n topBody: '',\n topJoin: '',\n topLeft: '',\n topRight: '',\n bottomBody: '',\n bottomJoin: '',\n bottomLeft: '',\n bottomRight: '',\n bodyLeft: '',\n bodyRight: '',\n bodyJoin: '',\n headerJoin: '',\n joinBody: '',\n joinLeft: '',\n joinRight: '',\n joinJoin: '',\n joinMiddleDown: '',\n joinMiddleUp: '',\n joinMiddleLeft: '',\n joinMiddleRight: '',\n };\n }\n throw new Error('Unknown border template \"' + name + '\".');\n};\nexports.getBorderCharacters = getBorderCharacters;\n//# sourceMappingURL=getBorderCharacters.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBorderCharacters = exports.createStream = exports.table = void 0;\nconst createStream_1 = require(\"./createStream\");\nObject.defineProperty(exports, \"createStream\", { enumerable: true, get: function () { return createStream_1.createStream; } });\nconst getBorderCharacters_1 = require(\"./getBorderCharacters\");\nObject.defineProperty(exports, \"getBorderCharacters\", { enumerable: true, get: function () { return getBorderCharacters_1.getBorderCharacters; } });\nconst table_1 = require(\"./table\");\nObject.defineProperty(exports, \"table\", { enumerable: true, get: function () { return table_1.table; } });\n__exportStar(require(\"./types/api\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.injectHeaderConfig = void 0;\nconst injectHeaderConfig = (rows, config) => {\n var _a;\n let spanningCellConfig = (_a = config.spanningCells) !== null && _a !== void 0 ? _a : [];\n const headerConfig = config.header;\n const adjustedRows = [...rows];\n if (headerConfig) {\n spanningCellConfig = spanningCellConfig.map(({ row, ...rest }) => {\n return { ...rest,\n row: row + 1 };\n });\n const { content, ...headerStyles } = headerConfig;\n spanningCellConfig.unshift({ alignment: 'center',\n col: 0,\n colSpan: rows[0].length,\n paddingLeft: 1,\n paddingRight: 1,\n row: 0,\n wrapWord: false,\n ...headerStyles });\n adjustedRows.unshift([content, ...Array.from({ length: rows[0].length - 1 }).fill('')]);\n }\n return [adjustedRows,\n spanningCellConfig];\n};\nexports.injectHeaderConfig = injectHeaderConfig;\n//# sourceMappingURL=injectHeaderConfig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeRangeConfig = void 0;\nconst utils_1 = require(\"./utils\");\nconst makeRangeConfig = (spanningCellConfig, columnsConfig) => {\n var _a;\n const { topLeft, bottomRight } = (0, utils_1.calculateRangeCoordinate)(spanningCellConfig);\n const cellConfig = {\n ...columnsConfig[topLeft.col],\n ...spanningCellConfig,\n paddingRight: (_a = spanningCellConfig.paddingRight) !== null && _a !== void 0 ? _a : columnsConfig[bottomRight.col].paddingRight,\n };\n return { ...cellConfig,\n bottomRight,\n topLeft };\n};\nexports.makeRangeConfig = makeRangeConfig;\n//# sourceMappingURL=makeRangeConfig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeStreamConfig = void 0;\nconst utils_1 = require(\"./utils\");\nconst validateConfig_1 = require(\"./validateConfig\");\n/**\n * Creates a configuration for every column using default\n * values for the missing configuration properties.\n */\nconst makeColumnsConfig = (columnCount, columns = {}, columnDefault) => {\n return Array.from({ length: columnCount }).map((_, index) => {\n return {\n alignment: 'left',\n paddingLeft: 1,\n paddingRight: 1,\n truncate: Number.POSITIVE_INFINITY,\n verticalAlignment: 'top',\n wrapWord: false,\n ...columnDefault,\n ...columns[index],\n };\n });\n};\n/**\n * Makes a new configuration object out of the userConfig object\n * using default values for the missing configuration properties.\n */\nconst makeStreamConfig = (config) => {\n (0, validateConfig_1.validateConfig)('streamConfig.json', config);\n if (config.columnDefault.width === undefined) {\n throw new Error('Must provide config.columnDefault.width when creating a stream.');\n }\n return {\n drawVerticalLine: () => {\n return true;\n },\n ...config,\n border: (0, utils_1.makeBorderConfig)(config.border),\n columns: makeColumnsConfig(config.columnCount, config.columns, config.columnDefault),\n };\n};\nexports.makeStreamConfig = makeStreamConfig;\n//# sourceMappingURL=makeStreamConfig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeTableConfig = void 0;\nconst calculateMaximumColumnWidths_1 = require(\"./calculateMaximumColumnWidths\");\nconst spanningCellManager_1 = require(\"./spanningCellManager\");\nconst utils_1 = require(\"./utils\");\nconst validateConfig_1 = require(\"./validateConfig\");\nconst validateSpanningCellConfig_1 = require(\"./validateSpanningCellConfig\");\n/**\n * Creates a configuration for every column using default\n * values for the missing configuration properties.\n */\nconst makeColumnsConfig = (rows, columns, columnDefault, spanningCellConfigs) => {\n const columnWidths = (0, calculateMaximumColumnWidths_1.calculateMaximumColumnWidths)(rows, spanningCellConfigs);\n return rows[0].map((_, columnIndex) => {\n return {\n alignment: 'left',\n paddingLeft: 1,\n paddingRight: 1,\n truncate: Number.POSITIVE_INFINITY,\n verticalAlignment: 'top',\n width: columnWidths[columnIndex],\n wrapWord: false,\n ...columnDefault,\n ...columns === null || columns === void 0 ? void 0 : columns[columnIndex],\n };\n });\n};\n/**\n * Makes a new configuration object out of the userConfig object\n * using default values for the missing configuration properties.\n */\nconst makeTableConfig = (rows, config = {}, injectedSpanningCellConfig) => {\n var _a, _b, _c, _d, _e;\n (0, validateConfig_1.validateConfig)('config.json', config);\n (0, validateSpanningCellConfig_1.validateSpanningCellConfig)(rows, (_a = config.spanningCells) !== null && _a !== void 0 ? _a : []);\n const spanningCellConfigs = (_b = injectedSpanningCellConfig !== null && injectedSpanningCellConfig !== void 0 ? injectedSpanningCellConfig : config.spanningCells) !== null && _b !== void 0 ? _b : [];\n const columnsConfig = makeColumnsConfig(rows, config.columns, config.columnDefault, spanningCellConfigs);\n const drawVerticalLine = (_c = config.drawVerticalLine) !== null && _c !== void 0 ? _c : (() => {\n return true;\n });\n const drawHorizontalLine = (_d = config.drawHorizontalLine) !== null && _d !== void 0 ? _d : (() => {\n return true;\n });\n return {\n ...config,\n border: (0, utils_1.makeBorderConfig)(config.border),\n columns: columnsConfig,\n drawHorizontalLine,\n drawVerticalLine,\n singleLine: (_e = config.singleLine) !== null && _e !== void 0 ? _e : false,\n spanningCellManager: (0, spanningCellManager_1.createSpanningCellManager)({\n columnsConfig,\n drawHorizontalLine,\n drawVerticalLine,\n rows,\n spanningCellConfigs,\n }),\n };\n};\nexports.makeTableConfig = makeTableConfig;\n//# sourceMappingURL=makeTableConfig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mapDataUsingRowHeights = exports.padCellVertically = void 0;\nconst utils_1 = require(\"./utils\");\nconst wrapCell_1 = require(\"./wrapCell\");\nconst createEmptyStrings = (length) => {\n return new Array(length).fill('');\n};\nconst padCellVertically = (lines, rowHeight, verticalAlignment) => {\n const availableLines = rowHeight - lines.length;\n if (verticalAlignment === 'top') {\n return [...lines, ...createEmptyStrings(availableLines)];\n }\n if (verticalAlignment === 'bottom') {\n return [...createEmptyStrings(availableLines), ...lines];\n }\n return [\n ...createEmptyStrings(Math.floor(availableLines / 2)),\n ...lines,\n ...createEmptyStrings(Math.ceil(availableLines / 2)),\n ];\n};\nexports.padCellVertically = padCellVertically;\nconst mapDataUsingRowHeights = (unmappedRows, rowHeights, config) => {\n const nColumns = unmappedRows[0].length;\n const mappedRows = unmappedRows.map((unmappedRow, unmappedRowIndex) => {\n const outputRowHeight = rowHeights[unmappedRowIndex];\n const outputRow = Array.from({ length: outputRowHeight }, () => {\n return new Array(nColumns).fill('');\n });\n unmappedRow.forEach((cell, cellIndex) => {\n var _a;\n const containingRange = (_a = config.spanningCellManager) === null || _a === void 0 ? void 0 : _a.getContainingRange({ col: cellIndex,\n row: unmappedRowIndex });\n if (containingRange) {\n containingRange.extractCellContent(unmappedRowIndex).forEach((cellLine, cellLineIndex) => {\n outputRow[cellLineIndex][cellIndex] = cellLine;\n });\n return;\n }\n const cellLines = (0, wrapCell_1.wrapCell)(cell, config.columns[cellIndex].width, config.columns[cellIndex].wrapWord);\n const paddedCellLines = (0, exports.padCellVertically)(cellLines, outputRowHeight, config.columns[cellIndex].verticalAlignment);\n paddedCellLines.forEach((cellLine, cellLineIndex) => {\n outputRow[cellLineIndex][cellIndex] = cellLine;\n });\n });\n return outputRow;\n });\n return (0, utils_1.flatten)(mappedRows);\n};\nexports.mapDataUsingRowHeights = mapDataUsingRowHeights;\n//# sourceMappingURL=mapDataUsingRowHeights.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.padTableData = exports.padString = void 0;\nconst padString = (input, paddingLeft, paddingRight) => {\n return ' '.repeat(paddingLeft) + input + ' '.repeat(paddingRight);\n};\nexports.padString = padString;\nconst padTableData = (rows, config) => {\n return rows.map((cells, rowIndex) => {\n return cells.map((cell, cellIndex) => {\n var _a;\n const containingRange = (_a = config.spanningCellManager) === null || _a === void 0 ? void 0 : _a.getContainingRange({ col: cellIndex,\n row: rowIndex }, { mapped: true });\n if (containingRange) {\n return cell;\n }\n const { paddingLeft, paddingRight } = config.columns[cellIndex];\n return (0, exports.padString)(cell, paddingLeft, paddingRight);\n });\n });\n};\nexports.padTableData = padTableData;\n//# sourceMappingURL=padTableData.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createSpanningCellManager = void 0;\nconst alignSpanningCell_1 = require(\"./alignSpanningCell\");\nconst calculateSpanningCellWidth_1 = require(\"./calculateSpanningCellWidth\");\nconst makeRangeConfig_1 = require(\"./makeRangeConfig\");\nconst utils_1 = require(\"./utils\");\nconst findRangeConfig = (cell, rangeConfigs) => {\n return rangeConfigs.find((rangeCoordinate) => {\n return (0, utils_1.isCellInRange)(cell, rangeCoordinate);\n });\n};\nconst getContainingRange = (rangeConfig, context) => {\n const width = (0, calculateSpanningCellWidth_1.calculateSpanningCellWidth)(rangeConfig, context);\n const wrappedContent = (0, alignSpanningCell_1.wrapRangeContent)(rangeConfig, width, context);\n const alignedContent = (0, alignSpanningCell_1.alignVerticalRangeContent)(rangeConfig, wrappedContent, context);\n const getCellContent = (rowIndex) => {\n const { topLeft } = rangeConfig;\n const { drawHorizontalLine, rowHeights } = context;\n const totalWithinHorizontalBorderHeight = rowIndex - topLeft.row;\n const totalHiddenHorizontalBorderHeight = (0, utils_1.sequence)(topLeft.row + 1, rowIndex).filter((index) => {\n /* istanbul ignore next */\n return !(drawHorizontalLine === null || drawHorizontalLine === void 0 ? void 0 : drawHorizontalLine(index, rowHeights.length));\n }).length;\n const offset = (0, utils_1.sumArray)(rowHeights.slice(topLeft.row, rowIndex)) + totalWithinHorizontalBorderHeight - totalHiddenHorizontalBorderHeight;\n return alignedContent.slice(offset, offset + rowHeights[rowIndex]);\n };\n const getBorderContent = (borderIndex) => {\n const { topLeft } = rangeConfig;\n const offset = (0, utils_1.sumArray)(context.rowHeights.slice(topLeft.row, borderIndex)) + (borderIndex - topLeft.row - 1);\n return alignedContent[offset];\n };\n return {\n ...rangeConfig,\n extractBorderContent: getBorderContent,\n extractCellContent: getCellContent,\n height: wrappedContent.length,\n width,\n };\n};\nconst inSameRange = (cell1, cell2, ranges) => {\n const range1 = findRangeConfig(cell1, ranges);\n const range2 = findRangeConfig(cell2, ranges);\n if (range1 && range2) {\n return (0, utils_1.areCellEqual)(range1.topLeft, range2.topLeft);\n }\n return false;\n};\nconst hashRange = (range) => {\n const { row, col } = range.topLeft;\n return `${row}/${col}`;\n};\nconst createSpanningCellManager = (parameters) => {\n const { spanningCellConfigs, columnsConfig } = parameters;\n const ranges = spanningCellConfigs.map((config) => {\n return (0, makeRangeConfig_1.makeRangeConfig)(config, columnsConfig);\n });\n const rangeCache = {};\n let rowHeights = [];\n let rowIndexMapping = [];\n return { getContainingRange: (cell, options) => {\n var _a;\n const originalRow = (options === null || options === void 0 ? void 0 : options.mapped) ? rowIndexMapping[cell.row] : cell.row;\n const range = findRangeConfig({ ...cell,\n row: originalRow }, ranges);\n if (!range) {\n return undefined;\n }\n if (rowHeights.length === 0) {\n return getContainingRange(range, { ...parameters,\n rowHeights });\n }\n const hash = hashRange(range);\n (_a = rangeCache[hash]) !== null && _a !== void 0 ? _a : (rangeCache[hash] = getContainingRange(range, { ...parameters,\n rowHeights }));\n return rangeCache[hash];\n },\n inSameRange: (cell1, cell2) => {\n return inSameRange(cell1, cell2, ranges);\n },\n rowHeights,\n rowIndexMapping,\n setRowHeights: (_rowHeights) => {\n rowHeights = _rowHeights;\n },\n setRowIndexMapping: (mappedRowHeights) => {\n rowIndexMapping = (0, utils_1.flatten)(mappedRowHeights.map((height, index) => {\n return Array.from({ length: height }, () => {\n return index;\n });\n }));\n } };\n};\nexports.createSpanningCellManager = createSpanningCellManager;\n//# sourceMappingURL=spanningCellManager.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringifyTableData = void 0;\nconst utils_1 = require(\"./utils\");\nconst stringifyTableData = (rows) => {\n return rows.map((cells) => {\n return cells.map((cell) => {\n return (0, utils_1.normalizeString)(String(cell));\n });\n });\n};\nexports.stringifyTableData = stringifyTableData;\n//# sourceMappingURL=stringifyTableData.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.table = void 0;\nconst alignTableData_1 = require(\"./alignTableData\");\nconst calculateOutputColumnWidths_1 = require(\"./calculateOutputColumnWidths\");\nconst calculateRowHeights_1 = require(\"./calculateRowHeights\");\nconst drawTable_1 = require(\"./drawTable\");\nconst injectHeaderConfig_1 = require(\"./injectHeaderConfig\");\nconst makeTableConfig_1 = require(\"./makeTableConfig\");\nconst mapDataUsingRowHeights_1 = require(\"./mapDataUsingRowHeights\");\nconst padTableData_1 = require(\"./padTableData\");\nconst stringifyTableData_1 = require(\"./stringifyTableData\");\nconst truncateTableData_1 = require(\"./truncateTableData\");\nconst utils_1 = require(\"./utils\");\nconst validateTableData_1 = require(\"./validateTableData\");\nconst table = (data, userConfig = {}) => {\n (0, validateTableData_1.validateTableData)(data);\n let rows = (0, stringifyTableData_1.stringifyTableData)(data);\n const [injectedRows, injectedSpanningCellConfig] = (0, injectHeaderConfig_1.injectHeaderConfig)(rows, userConfig);\n const config = (0, makeTableConfig_1.makeTableConfig)(injectedRows, userConfig, injectedSpanningCellConfig);\n rows = (0, truncateTableData_1.truncateTableData)(injectedRows, (0, utils_1.extractTruncates)(config));\n const rowHeights = (0, calculateRowHeights_1.calculateRowHeights)(rows, config);\n config.spanningCellManager.setRowHeights(rowHeights);\n config.spanningCellManager.setRowIndexMapping(rowHeights);\n rows = (0, mapDataUsingRowHeights_1.mapDataUsingRowHeights)(rows, rowHeights, config);\n rows = (0, alignTableData_1.alignTableData)(rows, config);\n rows = (0, padTableData_1.padTableData)(rows, config);\n const outputColumnWidths = (0, calculateOutputColumnWidths_1.calculateOutputColumnWidths)(config);\n return (0, drawTable_1.drawTable)(rows, outputColumnWidths, rowHeights, config);\n};\nexports.table = table;\n//# sourceMappingURL=table.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.truncateTableData = exports.truncateString = void 0;\nconst lodash_truncate_1 = __importDefault(require(\"lodash.truncate\"));\nconst truncateString = (input, length) => {\n return (0, lodash_truncate_1.default)(input, { length,\n omission: '…' });\n};\nexports.truncateString = truncateString;\n/**\n * @todo Make it work with ASCII content.\n */\nconst truncateTableData = (rows, truncates) => {\n return rows.map((cells) => {\n return cells.map((cell, cellIndex) => {\n return (0, exports.truncateString)(cell, truncates[cellIndex]);\n });\n });\n};\nexports.truncateTableData = truncateTableData;\n//# sourceMappingURL=truncateTableData.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=api.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isCellInRange = exports.areCellEqual = exports.calculateRangeCoordinate = exports.flatten = exports.extractTruncates = exports.sumArray = exports.sequence = exports.distributeUnevenly = exports.countSpaceSequence = exports.groupBySizes = exports.makeBorderConfig = exports.splitAnsi = exports.normalizeString = void 0;\nconst slice_ansi_1 = __importDefault(require(\"slice-ansi\"));\nconst string_width_1 = __importDefault(require(\"string-width\"));\nconst strip_ansi_1 = __importDefault(require(\"strip-ansi\"));\nconst getBorderCharacters_1 = require(\"./getBorderCharacters\");\n/**\n * Converts Windows-style newline to Unix-style\n *\n * @internal\n */\nconst normalizeString = (input) => {\n return input.replace(/\\r\\n/g, '\\n');\n};\nexports.normalizeString = normalizeString;\n/**\n * Splits ansi string by newlines\n *\n * @internal\n */\nconst splitAnsi = (input) => {\n const lengths = (0, strip_ansi_1.default)(input).split('\\n').map(string_width_1.default);\n const result = [];\n let startIndex = 0;\n lengths.forEach((length) => {\n result.push(length === 0 ? '' : (0, slice_ansi_1.default)(input, startIndex, startIndex + length));\n // Plus 1 for the newline character itself\n startIndex += length + 1;\n });\n return result;\n};\nexports.splitAnsi = splitAnsi;\n/**\n * Merges user provided border characters with the default border (\"honeywell\") characters.\n *\n * @internal\n */\nconst makeBorderConfig = (border) => {\n return {\n ...(0, getBorderCharacters_1.getBorderCharacters)('honeywell'),\n ...border,\n };\n};\nexports.makeBorderConfig = makeBorderConfig;\n/**\n * Groups the array into sub-arrays by sizes.\n *\n * @internal\n * @example\n * groupBySizes(['a', 'b', 'c', 'd', 'e'], [2, 1, 2]) = [ ['a', 'b'], ['c'], ['d', 'e'] ]\n */\nconst groupBySizes = (array, sizes) => {\n let startIndex = 0;\n return sizes.map((size) => {\n const group = array.slice(startIndex, startIndex + size);\n startIndex += size;\n return group;\n });\n};\nexports.groupBySizes = groupBySizes;\n/**\n * Counts the number of continuous spaces in a string\n *\n * @internal\n * @example\n * countGroupSpaces('a bc de f') = 3\n */\nconst countSpaceSequence = (input) => {\n var _a, _b;\n return (_b = (_a = input.match(/\\s+/g)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;\n};\nexports.countSpaceSequence = countSpaceSequence;\n/**\n * Creates the non-increasing number array given sum and length\n * whose the difference between maximum and minimum is not greater than 1\n *\n * @internal\n * @example\n * distributeUnevenly(6, 3) = [2, 2, 2]\n * distributeUnevenly(8, 3) = [3, 3, 2]\n */\nconst distributeUnevenly = (sum, length) => {\n const result = Array.from({ length }).fill(Math.floor(sum / length));\n return result.map((element, index) => {\n return element + (index < sum % length ? 1 : 0);\n });\n};\nexports.distributeUnevenly = distributeUnevenly;\nconst sequence = (start, end) => {\n return Array.from({ length: end - start + 1 }, (_, index) => {\n return index + start;\n });\n};\nexports.sequence = sequence;\nconst sumArray = (array) => {\n return array.reduce((accumulator, element) => {\n return accumulator + element;\n }, 0);\n};\nexports.sumArray = sumArray;\nconst extractTruncates = (config) => {\n return config.columns.map(({ truncate }) => {\n return truncate;\n });\n};\nexports.extractTruncates = extractTruncates;\nconst flatten = (array) => {\n return [].concat(...array);\n};\nexports.flatten = flatten;\nconst calculateRangeCoordinate = (spanningCellConfig) => {\n const { row, col, colSpan = 1, rowSpan = 1 } = spanningCellConfig;\n return { bottomRight: { col: col + colSpan - 1,\n row: row + rowSpan - 1 },\n topLeft: { col,\n row } };\n};\nexports.calculateRangeCoordinate = calculateRangeCoordinate;\nconst areCellEqual = (cell1, cell2) => {\n return cell1.row === cell2.row && cell1.col === cell2.col;\n};\nexports.areCellEqual = areCellEqual;\nconst isCellInRange = (cell, { topLeft, bottomRight }) => {\n return (topLeft.row <= cell.row &&\n cell.row <= bottomRight.row &&\n topLeft.col <= cell.col &&\n cell.col <= bottomRight.col);\n};\nexports.isCellInRange = isCellInRange;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateConfig = void 0;\nconst validators_1 = __importDefault(require(\"./generated/validators\"));\nconst validateConfig = (schemaId, config) => {\n const validate = validators_1.default[schemaId];\n if (!validate(config) && validate.errors) {\n // eslint-disable-next-line promise/prefer-await-to-callbacks\n const errors = validate.errors.map((error) => {\n return {\n message: error.message,\n params: error.params,\n schemaPath: error.schemaPath,\n };\n });\n /* eslint-disable no-console */\n console.log('config', config);\n console.log('errors', errors);\n /* eslint-enable no-console */\n throw new Error('Invalid config.');\n }\n};\nexports.validateConfig = validateConfig;\n//# sourceMappingURL=validateConfig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateSpanningCellConfig = void 0;\nconst utils_1 = require(\"./utils\");\nconst inRange = (start, end, value) => {\n return start <= value && value <= end;\n};\nconst validateSpanningCellConfig = (rows, configs) => {\n const [nRow, nCol] = [rows.length, rows[0].length];\n configs.forEach((config, configIndex) => {\n const { colSpan, rowSpan } = config;\n if (colSpan === undefined && rowSpan === undefined) {\n throw new Error(`Expect at least colSpan or rowSpan is provided in config.spanningCells[${configIndex}]`);\n }\n if (colSpan !== undefined && colSpan < 1) {\n throw new Error(`Expect colSpan is not equal zero, instead got: ${colSpan} in config.spanningCells[${configIndex}]`);\n }\n if (rowSpan !== undefined && rowSpan < 1) {\n throw new Error(`Expect rowSpan is not equal zero, instead got: ${rowSpan} in config.spanningCells[${configIndex}]`);\n }\n });\n const rangeCoordinates = configs.map(utils_1.calculateRangeCoordinate);\n rangeCoordinates.forEach(({ topLeft, bottomRight }, rangeIndex) => {\n if (!inRange(0, nCol - 1, topLeft.col) ||\n !inRange(0, nRow - 1, topLeft.row) ||\n !inRange(0, nCol - 1, bottomRight.col) ||\n !inRange(0, nRow - 1, bottomRight.row)) {\n throw new Error(`Some cells in config.spanningCells[${rangeIndex}] are out of the table`);\n }\n });\n const configOccupy = Array.from({ length: nRow }, () => {\n return Array.from({ length: nCol });\n });\n rangeCoordinates.forEach(({ topLeft, bottomRight }, rangeIndex) => {\n (0, utils_1.sequence)(topLeft.row, bottomRight.row).forEach((row) => {\n (0, utils_1.sequence)(topLeft.col, bottomRight.col).forEach((col) => {\n if (configOccupy[row][col] !== undefined) {\n throw new Error(`Spanning cells in config.spanningCells[${configOccupy[row][col]}] and config.spanningCells[${rangeIndex}] are overlap each other`);\n }\n configOccupy[row][col] = rangeIndex;\n });\n });\n });\n};\nexports.validateSpanningCellConfig = validateSpanningCellConfig;\n//# sourceMappingURL=validateSpanningCellConfig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateTableData = void 0;\nconst utils_1 = require(\"./utils\");\nconst validateTableData = (rows) => {\n if (!Array.isArray(rows)) {\n throw new TypeError('Table data must be an array.');\n }\n if (rows.length === 0) {\n throw new Error('Table must define at least one row.');\n }\n if (rows[0].length === 0) {\n throw new Error('Table must define at least one column.');\n }\n const columnNumber = rows[0].length;\n for (const row of rows) {\n if (!Array.isArray(row)) {\n throw new TypeError('Table row data must be an array.');\n }\n if (row.length !== columnNumber) {\n throw new Error('Table must have a consistent number of cells.');\n }\n for (const cell of row) {\n // eslint-disable-next-line no-control-regex\n if (/[\\u0001-\\u0006\\u0008\\u0009\\u000B-\\u001A]/.test((0, utils_1.normalizeString)(String(cell)))) {\n throw new Error('Table data must not contain control characters.');\n }\n }\n }\n};\nexports.validateTableData = validateTableData;\n//# sourceMappingURL=validateTableData.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapCell = void 0;\nconst utils_1 = require(\"./utils\");\nconst wrapString_1 = require(\"./wrapString\");\nconst wrapWord_1 = require(\"./wrapWord\");\n/**\n * Wrap a single cell value into a list of lines\n *\n * Always wraps on newlines, for the remainder uses either word or string wrapping\n * depending on user configuration.\n *\n */\nconst wrapCell = (cellValue, cellWidth, useWrapWord) => {\n // First split on literal newlines\n const cellLines = (0, utils_1.splitAnsi)(cellValue);\n // Then iterate over the list and word-wrap every remaining line if necessary.\n for (let lineNr = 0; lineNr < cellLines.length;) {\n let lineChunks;\n if (useWrapWord) {\n lineChunks = (0, wrapWord_1.wrapWord)(cellLines[lineNr], cellWidth);\n }\n else {\n lineChunks = (0, wrapString_1.wrapString)(cellLines[lineNr], cellWidth);\n }\n // Replace our original array element with whatever the wrapping returned\n cellLines.splice(lineNr, 1, ...lineChunks);\n lineNr += lineChunks.length;\n }\n return cellLines;\n};\nexports.wrapCell = wrapCell;\n//# sourceMappingURL=wrapCell.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapString = void 0;\nconst slice_ansi_1 = __importDefault(require(\"slice-ansi\"));\nconst string_width_1 = __importDefault(require(\"string-width\"));\n/**\n * Creates an array of strings split into groups the length of size.\n * This function works with strings that contain ASCII characters.\n *\n * wrapText is different from would-be \"chunk\" implementation\n * in that whitespace characters that occur on a chunk size limit are trimmed.\n *\n */\nconst wrapString = (subject, size) => {\n let subjectSlice = subject;\n const chunks = [];\n do {\n chunks.push((0, slice_ansi_1.default)(subjectSlice, 0, size));\n subjectSlice = (0, slice_ansi_1.default)(subjectSlice, size).trim();\n } while ((0, string_width_1.default)(subjectSlice));\n return chunks;\n};\nexports.wrapString = wrapString;\n//# sourceMappingURL=wrapString.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapWord = void 0;\nconst slice_ansi_1 = __importDefault(require(\"slice-ansi\"));\nconst strip_ansi_1 = __importDefault(require(\"strip-ansi\"));\nconst calculateStringLengths = (input, size) => {\n let subject = (0, strip_ansi_1.default)(input);\n const chunks = [];\n // https://regex101.com/r/gY5kZ1/1\n const re = new RegExp('(^.{1,' + String(Math.max(size, 1)) + '}(\\\\s+|$))|(^.{1,' + String(Math.max(size - 1, 1)) + '}(\\\\\\\\|/|_|\\\\.|,|;|-))');\n do {\n let chunk;\n const match = re.exec(subject);\n if (match) {\n chunk = match[0];\n subject = subject.slice(chunk.length);\n const trimmedLength = chunk.trim().length;\n const offset = chunk.length - trimmedLength;\n chunks.push([trimmedLength, offset]);\n }\n else {\n chunk = subject.slice(0, size);\n subject = subject.slice(size);\n chunks.push([chunk.length, 0]);\n }\n } while (subject.length);\n return chunks;\n};\nconst wrapWord = (input, size) => {\n const result = [];\n let startIndex = 0;\n calculateStringLengths(input, size).forEach(([length, offset]) => {\n result.push((0, slice_ansi_1.default)(input, startIndex, startIndex + length));\n startIndex += length + offset;\n });\n return result;\n};\nexports.wrapWord = wrapWord;\n//# sourceMappingURL=wrapWord.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// https://github.com/ajv-validator/ajv/issues/889\nconst equal = require(\"fast-deep-equal\");\nequal.code = 'require(\"ajv/dist/runtime/equal\").default';\nexports.default = equal;\n//# sourceMappingURL=equal.js.map","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global global, define, Symbol, Reflect, Promise, SuppressedError */\r\nvar __extends;\r\nvar __assign;\r\nvar __rest;\r\nvar __decorate;\r\nvar __param;\r\nvar __esDecorate;\r\nvar __runInitializers;\r\nvar __propKey;\r\nvar __setFunctionName;\r\nvar __metadata;\r\nvar __awaiter;\r\nvar __generator;\r\nvar __exportStar;\r\nvar __values;\r\nvar __read;\r\nvar __spread;\r\nvar __spreadArrays;\r\nvar __spreadArray;\r\nvar __await;\r\nvar __asyncGenerator;\r\nvar __asyncDelegator;\r\nvar __asyncValues;\r\nvar __makeTemplateObject;\r\nvar __importStar;\r\nvar __importDefault;\r\nvar __classPrivateFieldGet;\r\nvar __classPrivateFieldSet;\r\nvar __classPrivateFieldIn;\r\nvar __createBinding;\r\nvar __addDisposableResource;\r\nvar __disposeResources;\r\n(function (factory) {\r\n var root = typeof global === \"object\" ? global : typeof self === \"object\" ? self : typeof this === \"object\" ? this : {};\r\n if (typeof define === \"function\" && define.amd) {\r\n define(\"tslib\", [\"exports\"], function (exports) { factory(createExporter(root, createExporter(exports))); });\r\n }\r\n else if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n factory(createExporter(root, createExporter(module.exports)));\r\n }\r\n else {\r\n factory(createExporter(root));\r\n }\r\n function createExporter(exports, previous) {\r\n if (exports !== root) {\r\n if (typeof Object.create === \"function\") {\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n }\r\n else {\r\n exports.__esModule = true;\r\n }\r\n }\r\n return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };\r\n }\r\n})\r\n(function (exporter) {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n\r\n __extends = function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n\r\n __assign = Object.assign || function (t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n\r\n __rest = function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n };\r\n\r\n __decorate = function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n };\r\n\r\n __param = function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n };\r\n\r\n __esDecorate = function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n };\r\n\r\n __runInitializers = function (thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n };\r\n\r\n __propKey = function (x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n };\r\n\r\n __setFunctionName = function (f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n };\r\n\r\n __metadata = function (metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n };\r\n\r\n __awaiter = function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n };\r\n\r\n __generator = function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n };\r\n\r\n __exportStar = function(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n };\r\n\r\n __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n }) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n });\r\n\r\n __values = function (o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n };\r\n\r\n __read = function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spread = function () {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spreadArrays = function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n };\r\n\r\n __spreadArray = function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n };\r\n\r\n __await = function (v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n };\r\n\r\n __asyncGenerator = function (thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n };\r\n\r\n __asyncDelegator = function (o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n };\r\n\r\n __asyncValues = function (o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n };\r\n\r\n __makeTemplateObject = function (cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n };\r\n\r\n var __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n }) : function(o, v) {\r\n o[\"default\"] = v;\r\n };\r\n\r\n __importStar = function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n };\r\n\r\n __importDefault = function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n };\r\n\r\n __classPrivateFieldGet = function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n };\r\n\r\n __classPrivateFieldSet = function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n };\r\n\r\n __classPrivateFieldIn = function (state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n };\r\n\r\n __addDisposableResource = function (env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n };\r\n\r\n var _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n };\r\n\r\n __disposeResources = function (env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n };\r\n\r\n exporter(\"__extends\", __extends);\r\n exporter(\"__assign\", __assign);\r\n exporter(\"__rest\", __rest);\r\n exporter(\"__decorate\", __decorate);\r\n exporter(\"__param\", __param);\r\n exporter(\"__esDecorate\", __esDecorate);\r\n exporter(\"__runInitializers\", __runInitializers);\r\n exporter(\"__propKey\", __propKey);\r\n exporter(\"__setFunctionName\", __setFunctionName);\r\n exporter(\"__metadata\", __metadata);\r\n exporter(\"__awaiter\", __awaiter);\r\n exporter(\"__generator\", __generator);\r\n exporter(\"__exportStar\", __exportStar);\r\n exporter(\"__createBinding\", __createBinding);\r\n exporter(\"__values\", __values);\r\n exporter(\"__read\", __read);\r\n exporter(\"__spread\", __spread);\r\n exporter(\"__spreadArrays\", __spreadArrays);\r\n exporter(\"__spreadArray\", __spreadArray);\r\n exporter(\"__await\", __await);\r\n exporter(\"__asyncGenerator\", __asyncGenerator);\r\n exporter(\"__asyncDelegator\", __asyncDelegator);\r\n exporter(\"__asyncValues\", __asyncValues);\r\n exporter(\"__makeTemplateObject\", __makeTemplateObject);\r\n exporter(\"__importStar\", __importStar);\r\n exporter(\"__importDefault\", __importDefault);\r\n exporter(\"__classPrivateFieldGet\", __classPrivateFieldGet);\r\n exporter(\"__classPrivateFieldSet\", __classPrivateFieldSet);\r\n exporter(\"__classPrivateFieldIn\", __classPrivateFieldIn);\r\n exporter(\"__addDisposableResource\", __addDisposableResource);\r\n exporter(\"__disposeResources\", __disposeResources);\r\n});\r\n","module.exports = require('./lib/tunnel');\n","'use strict';\n\nvar net = require('net');\nvar tls = require('tls');\nvar http = require('http');\nvar https = require('https');\nvar events = require('events');\nvar assert = require('assert');\nvar util = require('util');\n\n\nexports.httpOverHttp = httpOverHttp;\nexports.httpsOverHttp = httpsOverHttp;\nexports.httpOverHttps = httpOverHttps;\nexports.httpsOverHttps = httpsOverHttps;\n\n\nfunction httpOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n return agent;\n}\n\nfunction httpsOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\nfunction httpOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n return agent;\n}\n\nfunction httpsOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\n\nfunction TunnelingAgent(options) {\n var self = this;\n self.options = options || {};\n self.proxyOptions = self.options.proxy || {};\n self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;\n self.requests = [];\n self.sockets = [];\n\n self.on('free', function onFree(socket, host, port, localAddress) {\n var options = toOptions(host, port, localAddress);\n for (var i = 0, len = self.requests.length; i < len; ++i) {\n var pending = self.requests[i];\n if (pending.host === options.host && pending.port === options.port) {\n // Detect the request to connect same origin server,\n // reuse the connection.\n self.requests.splice(i, 1);\n pending.request.onSocket(socket);\n return;\n }\n }\n socket.destroy();\n self.removeSocket(socket);\n });\n}\nutil.inherits(TunnelingAgent, events.EventEmitter);\n\nTunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {\n var self = this;\n var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));\n\n if (self.sockets.length >= this.maxSockets) {\n // We are over limit so we'll add it to the queue.\n self.requests.push(options);\n return;\n }\n\n // If we are under maxSockets create a new one.\n self.createSocket(options, function(socket) {\n socket.on('free', onFree);\n socket.on('close', onCloseOrRemove);\n socket.on('agentRemove', onCloseOrRemove);\n req.onSocket(socket);\n\n function onFree() {\n self.emit('free', socket, options);\n }\n\n function onCloseOrRemove(err) {\n self.removeSocket(socket);\n socket.removeListener('free', onFree);\n socket.removeListener('close', onCloseOrRemove);\n socket.removeListener('agentRemove', onCloseOrRemove);\n }\n });\n};\n\nTunnelingAgent.prototype.createSocket = function createSocket(options, cb) {\n var self = this;\n var placeholder = {};\n self.sockets.push(placeholder);\n\n var connectOptions = mergeOptions({}, self.proxyOptions, {\n method: 'CONNECT',\n path: options.host + ':' + options.port,\n agent: false,\n headers: {\n host: options.host + ':' + options.port\n }\n });\n if (options.localAddress) {\n connectOptions.localAddress = options.localAddress;\n }\n if (connectOptions.proxyAuth) {\n connectOptions.headers = connectOptions.headers || {};\n connectOptions.headers['Proxy-Authorization'] = 'Basic ' +\n new Buffer(connectOptions.proxyAuth).toString('base64');\n }\n\n debug('making CONNECT request');\n var connectReq = self.request(connectOptions);\n connectReq.useChunkedEncodingByDefault = false; // for v0.6\n connectReq.once('response', onResponse); // for v0.6\n connectReq.once('upgrade', onUpgrade); // for v0.6\n connectReq.once('connect', onConnect); // for v0.7 or later\n connectReq.once('error', onError);\n connectReq.end();\n\n function onResponse(res) {\n // Very hacky. This is necessary to avoid http-parser leaks.\n res.upgrade = true;\n }\n\n function onUpgrade(res, socket, head) {\n // Hacky.\n process.nextTick(function() {\n onConnect(res, socket, head);\n });\n }\n\n function onConnect(res, socket, head) {\n connectReq.removeAllListeners();\n socket.removeAllListeners();\n\n if (res.statusCode !== 200) {\n debug('tunneling socket could not be established, statusCode=%d',\n res.statusCode);\n socket.destroy();\n var error = new Error('tunneling socket could not be established, ' +\n 'statusCode=' + res.statusCode);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n if (head.length > 0) {\n debug('got illegal response body from proxy');\n socket.destroy();\n var error = new Error('got illegal response body from proxy');\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n debug('tunneling connection has established');\n self.sockets[self.sockets.indexOf(placeholder)] = socket;\n return cb(socket);\n }\n\n function onError(cause) {\n connectReq.removeAllListeners();\n\n debug('tunneling socket could not be established, cause=%s\\n',\n cause.message, cause.stack);\n var error = new Error('tunneling socket could not be established, ' +\n 'cause=' + cause.message);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n }\n};\n\nTunnelingAgent.prototype.removeSocket = function removeSocket(socket) {\n var pos = this.sockets.indexOf(socket)\n if (pos === -1) {\n return;\n }\n this.sockets.splice(pos, 1);\n\n var pending = this.requests.shift();\n if (pending) {\n // If we have pending requests and a socket gets closed a new one\n // needs to be created to take over in the pool for the one that closed.\n this.createSocket(pending, function(socket) {\n pending.request.onSocket(socket);\n });\n }\n};\n\nfunction createSecureSocket(options, cb) {\n var self = this;\n TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {\n var hostHeader = options.request.getHeader('host');\n var tlsOptions = mergeOptions({}, self.options, {\n socket: socket,\n servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host\n });\n\n // 0 is dummy port for v0.6\n var secureSocket = tls.connect(0, tlsOptions);\n self.sockets[self.sockets.indexOf(socket)] = secureSocket;\n cb(secureSocket);\n });\n}\n\n\nfunction toOptions(host, port, localAddress) {\n if (typeof host === 'string') { // since v0.10\n return {\n host: host,\n port: port,\n localAddress: localAddress\n };\n }\n return host; // for v0.11 or later\n}\n\nfunction mergeOptions(target) {\n for (var i = 1, len = arguments.length; i < len; ++i) {\n var overrides = arguments[i];\n if (typeof overrides === 'object') {\n var keys = Object.keys(overrides);\n for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {\n var k = keys[j];\n if (overrides[k] !== undefined) {\n target[k] = overrides[k];\n }\n }\n }\n }\n return target;\n}\n\n\nvar debug;\nif (process.env.NODE_DEBUG && /\\btunnel\\b/.test(process.env.NODE_DEBUG)) {\n debug = function() {\n var args = Array.prototype.slice.call(arguments);\n if (typeof args[0] === 'string') {\n args[0] = 'TUNNEL: ' + args[0];\n } else {\n args.unshift('TUNNEL:');\n }\n console.error.apply(console, args);\n }\n} else {\n debug = function() {};\n}\nexports.debug = debug; // for test\n","'use strict'\n\nconst Client = require('./lib/client')\nconst Dispatcher = require('./lib/dispatcher')\nconst errors = require('./lib/core/errors')\nconst Pool = require('./lib/pool')\nconst BalancedPool = require('./lib/balanced-pool')\nconst Agent = require('./lib/agent')\nconst util = require('./lib/core/util')\nconst { InvalidArgumentError } = errors\nconst api = require('./lib/api')\nconst buildConnector = require('./lib/core/connect')\nconst MockClient = require('./lib/mock/mock-client')\nconst MockAgent = require('./lib/mock/mock-agent')\nconst MockPool = require('./lib/mock/mock-pool')\nconst mockErrors = require('./lib/mock/mock-errors')\nconst ProxyAgent = require('./lib/proxy-agent')\nconst RetryHandler = require('./lib/handler/RetryHandler')\nconst { getGlobalDispatcher, setGlobalDispatcher } = require('./lib/global')\nconst DecoratorHandler = require('./lib/handler/DecoratorHandler')\nconst RedirectHandler = require('./lib/handler/RedirectHandler')\nconst createRedirectInterceptor = require('./lib/interceptor/redirectInterceptor')\n\nlet hasCrypto\ntry {\n require('crypto')\n hasCrypto = true\n} catch {\n hasCrypto = false\n}\n\nObject.assign(Dispatcher.prototype, api)\n\nmodule.exports.Dispatcher = Dispatcher\nmodule.exports.Client = Client\nmodule.exports.Pool = Pool\nmodule.exports.BalancedPool = BalancedPool\nmodule.exports.Agent = Agent\nmodule.exports.ProxyAgent = ProxyAgent\nmodule.exports.RetryHandler = RetryHandler\n\nmodule.exports.DecoratorHandler = DecoratorHandler\nmodule.exports.RedirectHandler = RedirectHandler\nmodule.exports.createRedirectInterceptor = createRedirectInterceptor\n\nmodule.exports.buildConnector = buildConnector\nmodule.exports.errors = errors\n\nfunction makeDispatcher (fn) {\n return (url, opts, handler) => {\n if (typeof opts === 'function') {\n handler = opts\n opts = null\n }\n\n if (!url || (typeof url !== 'string' && typeof url !== 'object' && !(url instanceof URL))) {\n throw new InvalidArgumentError('invalid url')\n }\n\n if (opts != null && typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (opts && opts.path != null) {\n if (typeof opts.path !== 'string') {\n throw new InvalidArgumentError('invalid opts.path')\n }\n\n let path = opts.path\n if (!opts.path.startsWith('/')) {\n path = `/${path}`\n }\n\n url = new URL(util.parseOrigin(url).origin + path)\n } else {\n if (!opts) {\n opts = typeof url === 'object' ? url : {}\n }\n\n url = util.parseURL(url)\n }\n\n const { agent, dispatcher = getGlobalDispatcher() } = opts\n\n if (agent) {\n throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?')\n }\n\n return fn.call(dispatcher, {\n ...opts,\n origin: url.origin,\n path: url.search ? `${url.pathname}${url.search}` : url.pathname,\n method: opts.method || (opts.body ? 'PUT' : 'GET')\n }, handler)\n }\n}\n\nmodule.exports.setGlobalDispatcher = setGlobalDispatcher\nmodule.exports.getGlobalDispatcher = getGlobalDispatcher\n\nif (util.nodeMajor > 16 || (util.nodeMajor === 16 && util.nodeMinor >= 8)) {\n let fetchImpl = null\n module.exports.fetch = async function fetch (resource) {\n if (!fetchImpl) {\n fetchImpl = require('./lib/fetch').fetch\n }\n\n try {\n return await fetchImpl(...arguments)\n } catch (err) {\n if (typeof err === 'object') {\n Error.captureStackTrace(err, this)\n }\n\n throw err\n }\n }\n module.exports.Headers = require('./lib/fetch/headers').Headers\n module.exports.Response = require('./lib/fetch/response').Response\n module.exports.Request = require('./lib/fetch/request').Request\n module.exports.FormData = require('./lib/fetch/formdata').FormData\n module.exports.File = require('./lib/fetch/file').File\n module.exports.FileReader = require('./lib/fileapi/filereader').FileReader\n\n const { setGlobalOrigin, getGlobalOrigin } = require('./lib/fetch/global')\n\n module.exports.setGlobalOrigin = setGlobalOrigin\n module.exports.getGlobalOrigin = getGlobalOrigin\n\n const { CacheStorage } = require('./lib/cache/cachestorage')\n const { kConstruct } = require('./lib/cache/symbols')\n\n // Cache & CacheStorage are tightly coupled with fetch. Even if it may run\n // in an older version of Node, it doesn't have any use without fetch.\n module.exports.caches = new CacheStorage(kConstruct)\n}\n\nif (util.nodeMajor >= 16) {\n const { deleteCookie, getCookies, getSetCookies, setCookie } = require('./lib/cookies')\n\n module.exports.deleteCookie = deleteCookie\n module.exports.getCookies = getCookies\n module.exports.getSetCookies = getSetCookies\n module.exports.setCookie = setCookie\n\n const { parseMIMEType, serializeAMimeType } = require('./lib/fetch/dataURL')\n\n module.exports.parseMIMEType = parseMIMEType\n module.exports.serializeAMimeType = serializeAMimeType\n}\n\nif (util.nodeMajor >= 18 && hasCrypto) {\n const { WebSocket } = require('./lib/websocket/websocket')\n\n module.exports.WebSocket = WebSocket\n}\n\nmodule.exports.request = makeDispatcher(api.request)\nmodule.exports.stream = makeDispatcher(api.stream)\nmodule.exports.pipeline = makeDispatcher(api.pipeline)\nmodule.exports.connect = makeDispatcher(api.connect)\nmodule.exports.upgrade = makeDispatcher(api.upgrade)\n\nmodule.exports.MockClient = MockClient\nmodule.exports.MockPool = MockPool\nmodule.exports.MockAgent = MockAgent\nmodule.exports.mockErrors = mockErrors\n","'use strict'\n\nconst { InvalidArgumentError } = require('./core/errors')\nconst { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require('./core/symbols')\nconst DispatcherBase = require('./dispatcher-base')\nconst Pool = require('./pool')\nconst Client = require('./client')\nconst util = require('./core/util')\nconst createRedirectInterceptor = require('./interceptor/redirectInterceptor')\nconst { WeakRef, FinalizationRegistry } = require('./compat/dispatcher-weakref')()\n\nconst kOnConnect = Symbol('onConnect')\nconst kOnDisconnect = Symbol('onDisconnect')\nconst kOnConnectionError = Symbol('onConnectionError')\nconst kMaxRedirections = Symbol('maxRedirections')\nconst kOnDrain = Symbol('onDrain')\nconst kFactory = Symbol('factory')\nconst kFinalizer = Symbol('finalizer')\nconst kOptions = Symbol('options')\n\nfunction defaultFactory (origin, opts) {\n return opts && opts.connections === 1\n ? new Client(origin, opts)\n : new Pool(origin, opts)\n}\n\nclass Agent extends DispatcherBase {\n constructor ({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) {\n super()\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('factory must be a function.')\n }\n\n if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n throw new InvalidArgumentError('connect must be a function or an object')\n }\n\n if (!Number.isInteger(maxRedirections) || maxRedirections < 0) {\n throw new InvalidArgumentError('maxRedirections must be a positive number')\n }\n\n if (connect && typeof connect !== 'function') {\n connect = { ...connect }\n }\n\n this[kInterceptors] = options.interceptors && options.interceptors.Agent && Array.isArray(options.interceptors.Agent)\n ? options.interceptors.Agent\n : [createRedirectInterceptor({ maxRedirections })]\n\n this[kOptions] = { ...util.deepClone(options), connect }\n this[kOptions].interceptors = options.interceptors\n ? { ...options.interceptors }\n : undefined\n this[kMaxRedirections] = maxRedirections\n this[kFactory] = factory\n this[kClients] = new Map()\n this[kFinalizer] = new FinalizationRegistry(/* istanbul ignore next: gc is undeterministic */ key => {\n const ref = this[kClients].get(key)\n if (ref !== undefined && ref.deref() === undefined) {\n this[kClients].delete(key)\n }\n })\n\n const agent = this\n\n this[kOnDrain] = (origin, targets) => {\n agent.emit('drain', origin, [agent, ...targets])\n }\n\n this[kOnConnect] = (origin, targets) => {\n agent.emit('connect', origin, [agent, ...targets])\n }\n\n this[kOnDisconnect] = (origin, targets, err) => {\n agent.emit('disconnect', origin, [agent, ...targets], err)\n }\n\n this[kOnConnectionError] = (origin, targets, err) => {\n agent.emit('connectionError', origin, [agent, ...targets], err)\n }\n }\n\n get [kRunning] () {\n let ret = 0\n for (const ref of this[kClients].values()) {\n const client = ref.deref()\n /* istanbul ignore next: gc is undeterministic */\n if (client) {\n ret += client[kRunning]\n }\n }\n return ret\n }\n\n [kDispatch] (opts, handler) {\n let key\n if (opts.origin && (typeof opts.origin === 'string' || opts.origin instanceof URL)) {\n key = String(opts.origin)\n } else {\n throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.')\n }\n\n const ref = this[kClients].get(key)\n\n let dispatcher = ref ? ref.deref() : null\n if (!dispatcher) {\n dispatcher = this[kFactory](opts.origin, this[kOptions])\n .on('drain', this[kOnDrain])\n .on('connect', this[kOnConnect])\n .on('disconnect', this[kOnDisconnect])\n .on('connectionError', this[kOnConnectionError])\n\n this[kClients].set(key, new WeakRef(dispatcher))\n this[kFinalizer].register(dispatcher, key)\n }\n\n return dispatcher.dispatch(opts, handler)\n }\n\n async [kClose] () {\n const closePromises = []\n for (const ref of this[kClients].values()) {\n const client = ref.deref()\n /* istanbul ignore else: gc is undeterministic */\n if (client) {\n closePromises.push(client.close())\n }\n }\n\n await Promise.all(closePromises)\n }\n\n async [kDestroy] (err) {\n const destroyPromises = []\n for (const ref of this[kClients].values()) {\n const client = ref.deref()\n /* istanbul ignore else: gc is undeterministic */\n if (client) {\n destroyPromises.push(client.destroy(err))\n }\n }\n\n await Promise.all(destroyPromises)\n }\n}\n\nmodule.exports = Agent\n","const { addAbortListener } = require('../core/util')\nconst { RequestAbortedError } = require('../core/errors')\n\nconst kListener = Symbol('kListener')\nconst kSignal = Symbol('kSignal')\n\nfunction abort (self) {\n if (self.abort) {\n self.abort()\n } else {\n self.onError(new RequestAbortedError())\n }\n}\n\nfunction addSignal (self, signal) {\n self[kSignal] = null\n self[kListener] = null\n\n if (!signal) {\n return\n }\n\n if (signal.aborted) {\n abort(self)\n return\n }\n\n self[kSignal] = signal\n self[kListener] = () => {\n abort(self)\n }\n\n addAbortListener(self[kSignal], self[kListener])\n}\n\nfunction removeSignal (self) {\n if (!self[kSignal]) {\n return\n }\n\n if ('removeEventListener' in self[kSignal]) {\n self[kSignal].removeEventListener('abort', self[kListener])\n } else {\n self[kSignal].removeListener('abort', self[kListener])\n }\n\n self[kSignal] = null\n self[kListener] = null\n}\n\nmodule.exports = {\n addSignal,\n removeSignal\n}\n","'use strict'\n\nconst { AsyncResource } = require('async_hooks')\nconst { InvalidArgumentError, RequestAbortedError, SocketError } = require('../core/errors')\nconst util = require('../core/util')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass ConnectHandler extends AsyncResource {\n constructor (opts, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n const { signal, opaque, responseHeaders } = opts\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n super('UNDICI_CONNECT')\n\n this.opaque = opaque || null\n this.responseHeaders = responseHeaders || null\n this.callback = callback\n this.abort = null\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders () {\n throw new SocketError('bad connect', null)\n }\n\n onUpgrade (statusCode, rawHeaders, socket) {\n const { callback, opaque, context } = this\n\n removeSignal(this)\n\n this.callback = null\n\n let headers = rawHeaders\n // Indicates is an HTTP2Session\n if (headers != null) {\n headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n }\n\n this.runInAsyncScope(callback, null, null, {\n statusCode,\n headers,\n socket,\n opaque,\n context\n })\n }\n\n onError (err) {\n const { callback, opaque } = this\n\n removeSignal(this)\n\n if (callback) {\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n }\n}\n\nfunction connect (opts, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n connect.call(this, opts, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n const connectHandler = new ConnectHandler(opts, callback)\n this.dispatch({ ...opts, method: 'CONNECT' }, connectHandler)\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = connect\n","'use strict'\n\nconst {\n Readable,\n Duplex,\n PassThrough\n} = require('stream')\nconst {\n InvalidArgumentError,\n InvalidReturnValueError,\n RequestAbortedError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { AsyncResource } = require('async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\nconst assert = require('assert')\n\nconst kResume = Symbol('resume')\n\nclass PipelineRequest extends Readable {\n constructor () {\n super({ autoDestroy: true })\n\n this[kResume] = null\n }\n\n _read () {\n const { [kResume]: resume } = this\n\n if (resume) {\n this[kResume] = null\n resume()\n }\n }\n\n _destroy (err, callback) {\n this._read()\n\n callback(err)\n }\n}\n\nclass PipelineResponse extends Readable {\n constructor (resume) {\n super({ autoDestroy: true })\n this[kResume] = resume\n }\n\n _read () {\n this[kResume]()\n }\n\n _destroy (err, callback) {\n if (!err && !this._readableState.endEmitted) {\n err = new RequestAbortedError()\n }\n\n callback(err)\n }\n}\n\nclass PipelineHandler extends AsyncResource {\n constructor (opts, handler) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (typeof handler !== 'function') {\n throw new InvalidArgumentError('invalid handler')\n }\n\n const { signal, method, opaque, onInfo, responseHeaders } = opts\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n if (method === 'CONNECT') {\n throw new InvalidArgumentError('invalid method')\n }\n\n if (onInfo && typeof onInfo !== 'function') {\n throw new InvalidArgumentError('invalid onInfo callback')\n }\n\n super('UNDICI_PIPELINE')\n\n this.opaque = opaque || null\n this.responseHeaders = responseHeaders || null\n this.handler = handler\n this.abort = null\n this.context = null\n this.onInfo = onInfo || null\n\n this.req = new PipelineRequest().on('error', util.nop)\n\n this.ret = new Duplex({\n readableObjectMode: opts.objectMode,\n autoDestroy: true,\n read: () => {\n const { body } = this\n\n if (body && body.resume) {\n body.resume()\n }\n },\n write: (chunk, encoding, callback) => {\n const { req } = this\n\n if (req.push(chunk, encoding) || req._readableState.destroyed) {\n callback()\n } else {\n req[kResume] = callback\n }\n },\n destroy: (err, callback) => {\n const { body, req, res, ret, abort } = this\n\n if (!err && !ret._readableState.endEmitted) {\n err = new RequestAbortedError()\n }\n\n if (abort && err) {\n abort()\n }\n\n util.destroy(body, err)\n util.destroy(req, err)\n util.destroy(res, err)\n\n removeSignal(this)\n\n callback(err)\n }\n }).on('prefinish', () => {\n const { req } = this\n\n // Node < 15 does not call _final in same tick.\n req.push(null)\n })\n\n this.res = null\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n const { ret, res } = this\n\n assert(!res, 'pipeline cannot be retried')\n\n if (ret.destroyed) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders (statusCode, rawHeaders, resume) {\n const { opaque, handler, context } = this\n\n if (statusCode < 200) {\n if (this.onInfo) {\n const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n this.onInfo({ statusCode, headers })\n }\n return\n }\n\n this.res = new PipelineResponse(resume)\n\n let body\n try {\n this.handler = null\n const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n body = this.runInAsyncScope(handler, null, {\n statusCode,\n headers,\n opaque,\n body: this.res,\n context\n })\n } catch (err) {\n this.res.on('error', util.nop)\n throw err\n }\n\n if (!body || typeof body.on !== 'function') {\n throw new InvalidReturnValueError('expected Readable')\n }\n\n body\n .on('data', (chunk) => {\n const { ret, body } = this\n\n if (!ret.push(chunk) && body.pause) {\n body.pause()\n }\n })\n .on('error', (err) => {\n const { ret } = this\n\n util.destroy(ret, err)\n })\n .on('end', () => {\n const { ret } = this\n\n ret.push(null)\n })\n .on('close', () => {\n const { ret } = this\n\n if (!ret._readableState.ended) {\n util.destroy(ret, new RequestAbortedError())\n }\n })\n\n this.body = body\n }\n\n onData (chunk) {\n const { res } = this\n return res.push(chunk)\n }\n\n onComplete (trailers) {\n const { res } = this\n res.push(null)\n }\n\n onError (err) {\n const { ret } = this\n this.handler = null\n util.destroy(ret, err)\n }\n}\n\nfunction pipeline (opts, handler) {\n try {\n const pipelineHandler = new PipelineHandler(opts, handler)\n this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler)\n return pipelineHandler.ret\n } catch (err) {\n return new PassThrough().destroy(err)\n }\n}\n\nmodule.exports = pipeline\n","'use strict'\n\nconst Readable = require('./readable')\nconst {\n InvalidArgumentError,\n RequestAbortedError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { getResolveErrorBodyCallback } = require('./util')\nconst { AsyncResource } = require('async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass RequestHandler extends AsyncResource {\n constructor (opts, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError, highWaterMark } = opts\n\n try {\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (highWaterMark && (typeof highWaterMark !== 'number' || highWaterMark < 0)) {\n throw new InvalidArgumentError('invalid highWaterMark')\n }\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n if (method === 'CONNECT') {\n throw new InvalidArgumentError('invalid method')\n }\n\n if (onInfo && typeof onInfo !== 'function') {\n throw new InvalidArgumentError('invalid onInfo callback')\n }\n\n super('UNDICI_REQUEST')\n } catch (err) {\n if (util.isStream(body)) {\n util.destroy(body.on('error', util.nop), err)\n }\n throw err\n }\n\n this.responseHeaders = responseHeaders || null\n this.opaque = opaque || null\n this.callback = callback\n this.res = null\n this.abort = null\n this.body = body\n this.trailers = {}\n this.context = null\n this.onInfo = onInfo || null\n this.throwOnError = throwOnError\n this.highWaterMark = highWaterMark\n\n if (util.isStream(body)) {\n body.on('error', (err) => {\n this.onError(err)\n })\n }\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this\n\n const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n\n if (statusCode < 200) {\n if (this.onInfo) {\n this.onInfo({ statusCode, headers })\n }\n return\n }\n\n const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers\n const contentType = parsedHeaders['content-type']\n const body = new Readable({ resume, abort, contentType, highWaterMark })\n\n this.callback = null\n this.res = body\n if (callback !== null) {\n if (this.throwOnError && statusCode >= 400) {\n this.runInAsyncScope(getResolveErrorBodyCallback, null,\n { callback, body, contentType, statusCode, statusMessage, headers }\n )\n } else {\n this.runInAsyncScope(callback, null, null, {\n statusCode,\n headers,\n trailers: this.trailers,\n opaque,\n body,\n context\n })\n }\n }\n }\n\n onData (chunk) {\n const { res } = this\n return res.push(chunk)\n }\n\n onComplete (trailers) {\n const { res } = this\n\n removeSignal(this)\n\n util.parseHeaders(trailers, this.trailers)\n\n res.push(null)\n }\n\n onError (err) {\n const { res, callback, body, opaque } = this\n\n removeSignal(this)\n\n if (callback) {\n // TODO: Does this need queueMicrotask?\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n\n if (res) {\n this.res = null\n // Ensure all queued handlers are invoked before destroying res.\n queueMicrotask(() => {\n util.destroy(res, err)\n })\n }\n\n if (body) {\n this.body = null\n util.destroy(body, err)\n }\n }\n}\n\nfunction request (opts, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n request.call(this, opts, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n this.dispatch(opts, new RequestHandler(opts, callback))\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = request\nmodule.exports.RequestHandler = RequestHandler\n","'use strict'\n\nconst { finished, PassThrough } = require('stream')\nconst {\n InvalidArgumentError,\n InvalidReturnValueError,\n RequestAbortedError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { getResolveErrorBodyCallback } = require('./util')\nconst { AsyncResource } = require('async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass StreamHandler extends AsyncResource {\n constructor (opts, factory, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts\n\n try {\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('invalid factory')\n }\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n if (method === 'CONNECT') {\n throw new InvalidArgumentError('invalid method')\n }\n\n if (onInfo && typeof onInfo !== 'function') {\n throw new InvalidArgumentError('invalid onInfo callback')\n }\n\n super('UNDICI_STREAM')\n } catch (err) {\n if (util.isStream(body)) {\n util.destroy(body.on('error', util.nop), err)\n }\n throw err\n }\n\n this.responseHeaders = responseHeaders || null\n this.opaque = opaque || null\n this.factory = factory\n this.callback = callback\n this.res = null\n this.abort = null\n this.context = null\n this.trailers = null\n this.body = body\n this.onInfo = onInfo || null\n this.throwOnError = throwOnError || false\n\n if (util.isStream(body)) {\n body.on('error', (err) => {\n this.onError(err)\n })\n }\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n const { factory, opaque, context, callback, responseHeaders } = this\n\n const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n\n if (statusCode < 200) {\n if (this.onInfo) {\n this.onInfo({ statusCode, headers })\n }\n return\n }\n\n this.factory = null\n\n let res\n\n if (this.throwOnError && statusCode >= 400) {\n const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers\n const contentType = parsedHeaders['content-type']\n res = new PassThrough()\n\n this.callback = null\n this.runInAsyncScope(getResolveErrorBodyCallback, null,\n { callback, body: res, contentType, statusCode, statusMessage, headers }\n )\n } else {\n if (factory === null) {\n return\n }\n\n res = this.runInAsyncScope(factory, null, {\n statusCode,\n headers,\n opaque,\n context\n })\n\n if (\n !res ||\n typeof res.write !== 'function' ||\n typeof res.end !== 'function' ||\n typeof res.on !== 'function'\n ) {\n throw new InvalidReturnValueError('expected Writable')\n }\n\n // TODO: Avoid finished. It registers an unnecessary amount of listeners.\n finished(res, { readable: false }, (err) => {\n const { callback, res, opaque, trailers, abort } = this\n\n this.res = null\n if (err || !res.readable) {\n util.destroy(res, err)\n }\n\n this.callback = null\n this.runInAsyncScope(callback, null, err || null, { opaque, trailers })\n\n if (err) {\n abort()\n }\n })\n }\n\n res.on('drain', resume)\n\n this.res = res\n\n const needDrain = res.writableNeedDrain !== undefined\n ? res.writableNeedDrain\n : res._writableState && res._writableState.needDrain\n\n return needDrain !== true\n }\n\n onData (chunk) {\n const { res } = this\n\n return res ? res.write(chunk) : true\n }\n\n onComplete (trailers) {\n const { res } = this\n\n removeSignal(this)\n\n if (!res) {\n return\n }\n\n this.trailers = util.parseHeaders(trailers)\n\n res.end()\n }\n\n onError (err) {\n const { res, callback, opaque, body } = this\n\n removeSignal(this)\n\n this.factory = null\n\n if (res) {\n this.res = null\n util.destroy(res, err)\n } else if (callback) {\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n\n if (body) {\n this.body = null\n util.destroy(body, err)\n }\n }\n}\n\nfunction stream (opts, factory, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n stream.call(this, opts, factory, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n this.dispatch(opts, new StreamHandler(opts, factory, callback))\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = stream\n","'use strict'\n\nconst { InvalidArgumentError, RequestAbortedError, SocketError } = require('../core/errors')\nconst { AsyncResource } = require('async_hooks')\nconst util = require('../core/util')\nconst { addSignal, removeSignal } = require('./abort-signal')\nconst assert = require('assert')\n\nclass UpgradeHandler extends AsyncResource {\n constructor (opts, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n const { signal, opaque, responseHeaders } = opts\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n super('UNDICI_UPGRADE')\n\n this.responseHeaders = responseHeaders || null\n this.opaque = opaque || null\n this.callback = callback\n this.abort = null\n this.context = null\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = null\n }\n\n onHeaders () {\n throw new SocketError('bad upgrade', null)\n }\n\n onUpgrade (statusCode, rawHeaders, socket) {\n const { callback, opaque, context } = this\n\n assert.strictEqual(statusCode, 101)\n\n removeSignal(this)\n\n this.callback = null\n const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n this.runInAsyncScope(callback, null, null, {\n headers,\n socket,\n opaque,\n context\n })\n }\n\n onError (err) {\n const { callback, opaque } = this\n\n removeSignal(this)\n\n if (callback) {\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n }\n}\n\nfunction upgrade (opts, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n upgrade.call(this, opts, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n const upgradeHandler = new UpgradeHandler(opts, callback)\n this.dispatch({\n ...opts,\n method: opts.method || 'GET',\n upgrade: opts.protocol || 'Websocket'\n }, upgradeHandler)\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = upgrade\n","'use strict'\n\nmodule.exports.request = require('./api-request')\nmodule.exports.stream = require('./api-stream')\nmodule.exports.pipeline = require('./api-pipeline')\nmodule.exports.upgrade = require('./api-upgrade')\nmodule.exports.connect = require('./api-connect')\n","// Ported from https://github.com/nodejs/undici/pull/907\n\n'use strict'\n\nconst assert = require('assert')\nconst { Readable } = require('stream')\nconst { RequestAbortedError, NotSupportedError, InvalidArgumentError } = require('../core/errors')\nconst util = require('../core/util')\nconst { ReadableStreamFrom, toUSVString } = require('../core/util')\n\nlet Blob\n\nconst kConsume = Symbol('kConsume')\nconst kReading = Symbol('kReading')\nconst kBody = Symbol('kBody')\nconst kAbort = Symbol('abort')\nconst kContentType = Symbol('kContentType')\n\nconst noop = () => {}\n\nmodule.exports = class BodyReadable extends Readable {\n constructor ({\n resume,\n abort,\n contentType = '',\n highWaterMark = 64 * 1024 // Same as nodejs fs streams.\n }) {\n super({\n autoDestroy: true,\n read: resume,\n highWaterMark\n })\n\n this._readableState.dataEmitted = false\n\n this[kAbort] = abort\n this[kConsume] = null\n this[kBody] = null\n this[kContentType] = contentType\n\n // Is stream being consumed through Readable API?\n // This is an optimization so that we avoid checking\n // for 'data' and 'readable' listeners in the hot path\n // inside push().\n this[kReading] = false\n }\n\n destroy (err) {\n if (this.destroyed) {\n // Node < 16\n return this\n }\n\n if (!err && !this._readableState.endEmitted) {\n err = new RequestAbortedError()\n }\n\n if (err) {\n this[kAbort]()\n }\n\n return super.destroy(err)\n }\n\n emit (ev, ...args) {\n if (ev === 'data') {\n // Node < 16.7\n this._readableState.dataEmitted = true\n } else if (ev === 'error') {\n // Node < 16\n this._readableState.errorEmitted = true\n }\n return super.emit(ev, ...args)\n }\n\n on (ev, ...args) {\n if (ev === 'data' || ev === 'readable') {\n this[kReading] = true\n }\n return super.on(ev, ...args)\n }\n\n addListener (ev, ...args) {\n return this.on(ev, ...args)\n }\n\n off (ev, ...args) {\n const ret = super.off(ev, ...args)\n if (ev === 'data' || ev === 'readable') {\n this[kReading] = (\n this.listenerCount('data') > 0 ||\n this.listenerCount('readable') > 0\n )\n }\n return ret\n }\n\n removeListener (ev, ...args) {\n return this.off(ev, ...args)\n }\n\n push (chunk) {\n if (this[kConsume] && chunk !== null && this.readableLength === 0) {\n consumePush(this[kConsume], chunk)\n return this[kReading] ? super.push(chunk) : true\n }\n return super.push(chunk)\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-text\n async text () {\n return consume(this, 'text')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-json\n async json () {\n return consume(this, 'json')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-blob\n async blob () {\n return consume(this, 'blob')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-arraybuffer\n async arrayBuffer () {\n return consume(this, 'arrayBuffer')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-formdata\n async formData () {\n // TODO: Implement.\n throw new NotSupportedError()\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-bodyused\n get bodyUsed () {\n return util.isDisturbed(this)\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-body\n get body () {\n if (!this[kBody]) {\n this[kBody] = ReadableStreamFrom(this)\n if (this[kConsume]) {\n // TODO: Is this the best way to force a lock?\n this[kBody].getReader() // Ensure stream is locked.\n assert(this[kBody].locked)\n }\n }\n return this[kBody]\n }\n\n dump (opts) {\n let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144\n const signal = opts && opts.signal\n\n if (signal) {\n try {\n if (typeof signal !== 'object' || !('aborted' in signal)) {\n throw new InvalidArgumentError('signal must be an AbortSignal')\n }\n util.throwIfAborted(signal)\n } catch (err) {\n return Promise.reject(err)\n }\n }\n\n if (this.closed) {\n return Promise.resolve(null)\n }\n\n return new Promise((resolve, reject) => {\n const signalListenerCleanup = signal\n ? util.addAbortListener(signal, () => {\n this.destroy()\n })\n : noop\n\n this\n .on('close', function () {\n signalListenerCleanup()\n if (signal && signal.aborted) {\n reject(signal.reason || Object.assign(new Error('The operation was aborted'), { name: 'AbortError' }))\n } else {\n resolve(null)\n }\n })\n .on('error', noop)\n .on('data', function (chunk) {\n limit -= chunk.length\n if (limit <= 0) {\n this.destroy()\n }\n })\n .resume()\n })\n }\n}\n\n// https://streams.spec.whatwg.org/#readablestream-locked\nfunction isLocked (self) {\n // Consume is an implicit lock.\n return (self[kBody] && self[kBody].locked === true) || self[kConsume]\n}\n\n// https://fetch.spec.whatwg.org/#body-unusable\nfunction isUnusable (self) {\n return util.isDisturbed(self) || isLocked(self)\n}\n\nasync function consume (stream, type) {\n if (isUnusable(stream)) {\n throw new TypeError('unusable')\n }\n\n assert(!stream[kConsume])\n\n return new Promise((resolve, reject) => {\n stream[kConsume] = {\n type,\n stream,\n resolve,\n reject,\n length: 0,\n body: []\n }\n\n stream\n .on('error', function (err) {\n consumeFinish(this[kConsume], err)\n })\n .on('close', function () {\n if (this[kConsume].body !== null) {\n consumeFinish(this[kConsume], new RequestAbortedError())\n }\n })\n\n process.nextTick(consumeStart, stream[kConsume])\n })\n}\n\nfunction consumeStart (consume) {\n if (consume.body === null) {\n return\n }\n\n const { _readableState: state } = consume.stream\n\n for (const chunk of state.buffer) {\n consumePush(consume, chunk)\n }\n\n if (state.endEmitted) {\n consumeEnd(this[kConsume])\n } else {\n consume.stream.on('end', function () {\n consumeEnd(this[kConsume])\n })\n }\n\n consume.stream.resume()\n\n while (consume.stream.read() != null) {\n // Loop\n }\n}\n\nfunction consumeEnd (consume) {\n const { type, body, resolve, stream, length } = consume\n\n try {\n if (type === 'text') {\n resolve(toUSVString(Buffer.concat(body)))\n } else if (type === 'json') {\n resolve(JSON.parse(Buffer.concat(body)))\n } else if (type === 'arrayBuffer') {\n const dst = new Uint8Array(length)\n\n let pos = 0\n for (const buf of body) {\n dst.set(buf, pos)\n pos += buf.byteLength\n }\n\n resolve(dst.buffer)\n } else if (type === 'blob') {\n if (!Blob) {\n Blob = require('buffer').Blob\n }\n resolve(new Blob(body, { type: stream[kContentType] }))\n }\n\n consumeFinish(consume)\n } catch (err) {\n stream.destroy(err)\n }\n}\n\nfunction consumePush (consume, chunk) {\n consume.length += chunk.length\n consume.body.push(chunk)\n}\n\nfunction consumeFinish (consume, err) {\n if (consume.body === null) {\n return\n }\n\n if (err) {\n consume.reject(err)\n } else {\n consume.resolve()\n }\n\n consume.type = null\n consume.stream = null\n consume.resolve = null\n consume.reject = null\n consume.length = 0\n consume.body = null\n}\n","const assert = require('assert')\nconst {\n ResponseStatusCodeError\n} = require('../core/errors')\nconst { toUSVString } = require('../core/util')\n\nasync function getResolveErrorBodyCallback ({ callback, body, contentType, statusCode, statusMessage, headers }) {\n assert(body)\n\n let chunks = []\n let limit = 0\n\n for await (const chunk of body) {\n chunks.push(chunk)\n limit += chunk.length\n if (limit > 128 * 1024) {\n chunks = null\n break\n }\n }\n\n if (statusCode === 204 || !contentType || !chunks) {\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers))\n return\n }\n\n try {\n if (contentType.startsWith('application/json')) {\n const payload = JSON.parse(toUSVString(Buffer.concat(chunks)))\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload))\n return\n }\n\n if (contentType.startsWith('text/')) {\n const payload = toUSVString(Buffer.concat(chunks))\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload))\n return\n }\n } catch (err) {\n // Process in a fallback if error\n }\n\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers))\n}\n\nmodule.exports = { getResolveErrorBodyCallback }\n","'use strict'\n\nconst {\n BalancedPoolMissingUpstreamError,\n InvalidArgumentError\n} = require('./core/errors')\nconst {\n PoolBase,\n kClients,\n kNeedDrain,\n kAddClient,\n kRemoveClient,\n kGetDispatcher\n} = require('./pool-base')\nconst Pool = require('./pool')\nconst { kUrl, kInterceptors } = require('./core/symbols')\nconst { parseOrigin } = require('./core/util')\nconst kFactory = Symbol('factory')\n\nconst kOptions = Symbol('options')\nconst kGreatestCommonDivisor = Symbol('kGreatestCommonDivisor')\nconst kCurrentWeight = Symbol('kCurrentWeight')\nconst kIndex = Symbol('kIndex')\nconst kWeight = Symbol('kWeight')\nconst kMaxWeightPerServer = Symbol('kMaxWeightPerServer')\nconst kErrorPenalty = Symbol('kErrorPenalty')\n\nfunction getGreatestCommonDivisor (a, b) {\n if (b === 0) return a\n return getGreatestCommonDivisor(b, a % b)\n}\n\nfunction defaultFactory (origin, opts) {\n return new Pool(origin, opts)\n}\n\nclass BalancedPool extends PoolBase {\n constructor (upstreams = [], { factory = defaultFactory, ...opts } = {}) {\n super()\n\n this[kOptions] = opts\n this[kIndex] = -1\n this[kCurrentWeight] = 0\n\n this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100\n this[kErrorPenalty] = this[kOptions].errorPenalty || 15\n\n if (!Array.isArray(upstreams)) {\n upstreams = [upstreams]\n }\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('factory must be a function.')\n }\n\n this[kInterceptors] = opts.interceptors && opts.interceptors.BalancedPool && Array.isArray(opts.interceptors.BalancedPool)\n ? opts.interceptors.BalancedPool\n : []\n this[kFactory] = factory\n\n for (const upstream of upstreams) {\n this.addUpstream(upstream)\n }\n this._updateBalancedPoolStats()\n }\n\n addUpstream (upstream) {\n const upstreamOrigin = parseOrigin(upstream).origin\n\n if (this[kClients].find((pool) => (\n pool[kUrl].origin === upstreamOrigin &&\n pool.closed !== true &&\n pool.destroyed !== true\n ))) {\n return this\n }\n const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions]))\n\n this[kAddClient](pool)\n pool.on('connect', () => {\n pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty])\n })\n\n pool.on('connectionError', () => {\n pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty])\n this._updateBalancedPoolStats()\n })\n\n pool.on('disconnect', (...args) => {\n const err = args[2]\n if (err && err.code === 'UND_ERR_SOCKET') {\n // decrease the weight of the pool.\n pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty])\n this._updateBalancedPoolStats()\n }\n })\n\n for (const client of this[kClients]) {\n client[kWeight] = this[kMaxWeightPerServer]\n }\n\n this._updateBalancedPoolStats()\n\n return this\n }\n\n _updateBalancedPoolStats () {\n this[kGreatestCommonDivisor] = this[kClients].map(p => p[kWeight]).reduce(getGreatestCommonDivisor, 0)\n }\n\n removeUpstream (upstream) {\n const upstreamOrigin = parseOrigin(upstream).origin\n\n const pool = this[kClients].find((pool) => (\n pool[kUrl].origin === upstreamOrigin &&\n pool.closed !== true &&\n pool.destroyed !== true\n ))\n\n if (pool) {\n this[kRemoveClient](pool)\n }\n\n return this\n }\n\n get upstreams () {\n return this[kClients]\n .filter(dispatcher => dispatcher.closed !== true && dispatcher.destroyed !== true)\n .map((p) => p[kUrl].origin)\n }\n\n [kGetDispatcher] () {\n // We validate that pools is greater than 0,\n // otherwise we would have to wait until an upstream\n // is added, which might never happen.\n if (this[kClients].length === 0) {\n throw new BalancedPoolMissingUpstreamError()\n }\n\n const dispatcher = this[kClients].find(dispatcher => (\n !dispatcher[kNeedDrain] &&\n dispatcher.closed !== true &&\n dispatcher.destroyed !== true\n ))\n\n if (!dispatcher) {\n return\n }\n\n const allClientsBusy = this[kClients].map(pool => pool[kNeedDrain]).reduce((a, b) => a && b, true)\n\n if (allClientsBusy) {\n return\n }\n\n let counter = 0\n\n let maxWeightIndex = this[kClients].findIndex(pool => !pool[kNeedDrain])\n\n while (counter++ < this[kClients].length) {\n this[kIndex] = (this[kIndex] + 1) % this[kClients].length\n const pool = this[kClients][this[kIndex]]\n\n // find pool index with the largest weight\n if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) {\n maxWeightIndex = this[kIndex]\n }\n\n // decrease the current weight every `this[kClients].length`.\n if (this[kIndex] === 0) {\n // Set the current weight to the next lower weight.\n this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor]\n\n if (this[kCurrentWeight] <= 0) {\n this[kCurrentWeight] = this[kMaxWeightPerServer]\n }\n }\n if (pool[kWeight] >= this[kCurrentWeight] && (!pool[kNeedDrain])) {\n return pool\n }\n }\n\n this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight]\n this[kIndex] = maxWeightIndex\n return this[kClients][maxWeightIndex]\n }\n}\n\nmodule.exports = BalancedPool\n","'use strict'\n\nconst { kConstruct } = require('./symbols')\nconst { urlEquals, fieldValues: getFieldValues } = require('./util')\nconst { kEnumerableProperty, isDisturbed } = require('../core/util')\nconst { kHeadersList } = require('../core/symbols')\nconst { webidl } = require('../fetch/webidl')\nconst { Response, cloneResponse } = require('../fetch/response')\nconst { Request } = require('../fetch/request')\nconst { kState, kHeaders, kGuard, kRealm } = require('../fetch/symbols')\nconst { fetching } = require('../fetch/index')\nconst { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = require('../fetch/util')\nconst assert = require('assert')\nconst { getGlobalDispatcher } = require('../global')\n\n/**\n * @see https://w3c.github.io/ServiceWorker/#dfn-cache-batch-operation\n * @typedef {Object} CacheBatchOperation\n * @property {'delete' | 'put'} type\n * @property {any} request\n * @property {any} response\n * @property {import('../../types/cache').CacheQueryOptions} options\n */\n\n/**\n * @see https://w3c.github.io/ServiceWorker/#dfn-request-response-list\n * @typedef {[any, any][]} requestResponseList\n */\n\nclass Cache {\n /**\n * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list\n * @type {requestResponseList}\n */\n #relevantRequestResponseList\n\n constructor () {\n if (arguments[0] !== kConstruct) {\n webidl.illegalConstructor()\n }\n\n this.#relevantRequestResponseList = arguments[1]\n }\n\n async match (request, options = {}) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.match' })\n\n request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n const p = await this.matchAll(request, options)\n\n if (p.length === 0) {\n return\n }\n\n return p[0]\n }\n\n async matchAll (request = undefined, options = {}) {\n webidl.brandCheck(this, Cache)\n\n if (request !== undefined) request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n // 1.\n let r = null\n\n // 2.\n if (request !== undefined) {\n if (request instanceof Request) {\n // 2.1.1\n r = request[kState]\n\n // 2.1.2\n if (r.method !== 'GET' && !options.ignoreMethod) {\n return []\n }\n } else if (typeof request === 'string') {\n // 2.2.1\n r = new Request(request)[kState]\n }\n }\n\n // 5.\n // 5.1\n const responses = []\n\n // 5.2\n if (request === undefined) {\n // 5.2.1\n for (const requestResponse of this.#relevantRequestResponseList) {\n responses.push(requestResponse[1])\n }\n } else { // 5.3\n // 5.3.1\n const requestResponses = this.#queryCache(r, options)\n\n // 5.3.2\n for (const requestResponse of requestResponses) {\n responses.push(requestResponse[1])\n }\n }\n\n // 5.4\n // We don't implement CORs so we don't need to loop over the responses, yay!\n\n // 5.5.1\n const responseList = []\n\n // 5.5.2\n for (const response of responses) {\n // 5.5.2.1\n const responseObject = new Response(response.body?.source ?? null)\n const body = responseObject[kState].body\n responseObject[kState] = response\n responseObject[kState].body = body\n responseObject[kHeaders][kHeadersList] = response.headersList\n responseObject[kHeaders][kGuard] = 'immutable'\n\n responseList.push(responseObject)\n }\n\n // 6.\n return Object.freeze(responseList)\n }\n\n async add (request) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.add' })\n\n request = webidl.converters.RequestInfo(request)\n\n // 1.\n const requests = [request]\n\n // 2.\n const responseArrayPromise = this.addAll(requests)\n\n // 3.\n return await responseArrayPromise\n }\n\n async addAll (requests) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.addAll' })\n\n requests = webidl.converters['sequence'](requests)\n\n // 1.\n const responsePromises = []\n\n // 2.\n const requestList = []\n\n // 3.\n for (const request of requests) {\n if (typeof request === 'string') {\n continue\n }\n\n // 3.1\n const r = request[kState]\n\n // 3.2\n if (!urlIsHttpHttpsScheme(r.url) || r.method !== 'GET') {\n throw webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'Expected http/s scheme when method is not GET.'\n })\n }\n }\n\n // 4.\n /** @type {ReturnType[]} */\n const fetchControllers = []\n\n // 5.\n for (const request of requests) {\n // 5.1\n const r = new Request(request)[kState]\n\n // 5.2\n if (!urlIsHttpHttpsScheme(r.url)) {\n throw webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'Expected http/s scheme.'\n })\n }\n\n // 5.4\n r.initiator = 'fetch'\n r.destination = 'subresource'\n\n // 5.5\n requestList.push(r)\n\n // 5.6\n const responsePromise = createDeferredPromise()\n\n // 5.7\n fetchControllers.push(fetching({\n request: r,\n dispatcher: getGlobalDispatcher(),\n processResponse (response) {\n // 1.\n if (response.type === 'error' || response.status === 206 || response.status < 200 || response.status > 299) {\n responsePromise.reject(webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'Received an invalid status code or the request failed.'\n }))\n } else if (response.headersList.contains('vary')) { // 2.\n // 2.1\n const fieldValues = getFieldValues(response.headersList.get('vary'))\n\n // 2.2\n for (const fieldValue of fieldValues) {\n // 2.2.1\n if (fieldValue === '*') {\n responsePromise.reject(webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'invalid vary field value'\n }))\n\n for (const controller of fetchControllers) {\n controller.abort()\n }\n\n return\n }\n }\n }\n },\n processResponseEndOfBody (response) {\n // 1.\n if (response.aborted) {\n responsePromise.reject(new DOMException('aborted', 'AbortError'))\n return\n }\n\n // 2.\n responsePromise.resolve(response)\n }\n }))\n\n // 5.8\n responsePromises.push(responsePromise.promise)\n }\n\n // 6.\n const p = Promise.all(responsePromises)\n\n // 7.\n const responses = await p\n\n // 7.1\n const operations = []\n\n // 7.2\n let index = 0\n\n // 7.3\n for (const response of responses) {\n // 7.3.1\n /** @type {CacheBatchOperation} */\n const operation = {\n type: 'put', // 7.3.2\n request: requestList[index], // 7.3.3\n response // 7.3.4\n }\n\n operations.push(operation) // 7.3.5\n\n index++ // 7.3.6\n }\n\n // 7.5\n const cacheJobPromise = createDeferredPromise()\n\n // 7.6.1\n let errorData = null\n\n // 7.6.2\n try {\n this.#batchCacheOperations(operations)\n } catch (e) {\n errorData = e\n }\n\n // 7.6.3\n queueMicrotask(() => {\n // 7.6.3.1\n if (errorData === null) {\n cacheJobPromise.resolve(undefined)\n } else {\n // 7.6.3.2\n cacheJobPromise.reject(errorData)\n }\n })\n\n // 7.7\n return cacheJobPromise.promise\n }\n\n async put (request, response) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 2, { header: 'Cache.put' })\n\n request = webidl.converters.RequestInfo(request)\n response = webidl.converters.Response(response)\n\n // 1.\n let innerRequest = null\n\n // 2.\n if (request instanceof Request) {\n innerRequest = request[kState]\n } else { // 3.\n innerRequest = new Request(request)[kState]\n }\n\n // 4.\n if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== 'GET') {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Expected an http/s scheme when method is not GET'\n })\n }\n\n // 5.\n const innerResponse = response[kState]\n\n // 6.\n if (innerResponse.status === 206) {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Got 206 status'\n })\n }\n\n // 7.\n if (innerResponse.headersList.contains('vary')) {\n // 7.1.\n const fieldValues = getFieldValues(innerResponse.headersList.get('vary'))\n\n // 7.2.\n for (const fieldValue of fieldValues) {\n // 7.2.1\n if (fieldValue === '*') {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Got * vary field value'\n })\n }\n }\n }\n\n // 8.\n if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Response body is locked or disturbed'\n })\n }\n\n // 9.\n const clonedResponse = cloneResponse(innerResponse)\n\n // 10.\n const bodyReadPromise = createDeferredPromise()\n\n // 11.\n if (innerResponse.body != null) {\n // 11.1\n const stream = innerResponse.body.stream\n\n // 11.2\n const reader = stream.getReader()\n\n // 11.3\n readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject)\n } else {\n bodyReadPromise.resolve(undefined)\n }\n\n // 12.\n /** @type {CacheBatchOperation[]} */\n const operations = []\n\n // 13.\n /** @type {CacheBatchOperation} */\n const operation = {\n type: 'put', // 14.\n request: innerRequest, // 15.\n response: clonedResponse // 16.\n }\n\n // 17.\n operations.push(operation)\n\n // 19.\n const bytes = await bodyReadPromise.promise\n\n if (clonedResponse.body != null) {\n clonedResponse.body.source = bytes\n }\n\n // 19.1\n const cacheJobPromise = createDeferredPromise()\n\n // 19.2.1\n let errorData = null\n\n // 19.2.2\n try {\n this.#batchCacheOperations(operations)\n } catch (e) {\n errorData = e\n }\n\n // 19.2.3\n queueMicrotask(() => {\n // 19.2.3.1\n if (errorData === null) {\n cacheJobPromise.resolve()\n } else { // 19.2.3.2\n cacheJobPromise.reject(errorData)\n }\n })\n\n return cacheJobPromise.promise\n }\n\n async delete (request, options = {}) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.delete' })\n\n request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n /**\n * @type {Request}\n */\n let r = null\n\n if (request instanceof Request) {\n r = request[kState]\n\n if (r.method !== 'GET' && !options.ignoreMethod) {\n return false\n }\n } else {\n assert(typeof request === 'string')\n\n r = new Request(request)[kState]\n }\n\n /** @type {CacheBatchOperation[]} */\n const operations = []\n\n /** @type {CacheBatchOperation} */\n const operation = {\n type: 'delete',\n request: r,\n options\n }\n\n operations.push(operation)\n\n const cacheJobPromise = createDeferredPromise()\n\n let errorData = null\n let requestResponses\n\n try {\n requestResponses = this.#batchCacheOperations(operations)\n } catch (e) {\n errorData = e\n }\n\n queueMicrotask(() => {\n if (errorData === null) {\n cacheJobPromise.resolve(!!requestResponses?.length)\n } else {\n cacheJobPromise.reject(errorData)\n }\n })\n\n return cacheJobPromise.promise\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys\n * @param {any} request\n * @param {import('../../types/cache').CacheQueryOptions} options\n * @returns {readonly Request[]}\n */\n async keys (request = undefined, options = {}) {\n webidl.brandCheck(this, Cache)\n\n if (request !== undefined) request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n // 1.\n let r = null\n\n // 2.\n if (request !== undefined) {\n // 2.1\n if (request instanceof Request) {\n // 2.1.1\n r = request[kState]\n\n // 2.1.2\n if (r.method !== 'GET' && !options.ignoreMethod) {\n return []\n }\n } else if (typeof request === 'string') { // 2.2\n r = new Request(request)[kState]\n }\n }\n\n // 4.\n const promise = createDeferredPromise()\n\n // 5.\n // 5.1\n const requests = []\n\n // 5.2\n if (request === undefined) {\n // 5.2.1\n for (const requestResponse of this.#relevantRequestResponseList) {\n // 5.2.1.1\n requests.push(requestResponse[0])\n }\n } else { // 5.3\n // 5.3.1\n const requestResponses = this.#queryCache(r, options)\n\n // 5.3.2\n for (const requestResponse of requestResponses) {\n // 5.3.2.1\n requests.push(requestResponse[0])\n }\n }\n\n // 5.4\n queueMicrotask(() => {\n // 5.4.1\n const requestList = []\n\n // 5.4.2\n for (const request of requests) {\n const requestObject = new Request('https://a')\n requestObject[kState] = request\n requestObject[kHeaders][kHeadersList] = request.headersList\n requestObject[kHeaders][kGuard] = 'immutable'\n requestObject[kRealm] = request.client\n\n // 5.4.2.1\n requestList.push(requestObject)\n }\n\n // 5.4.3\n promise.resolve(Object.freeze(requestList))\n })\n\n return promise.promise\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm\n * @param {CacheBatchOperation[]} operations\n * @returns {requestResponseList}\n */\n #batchCacheOperations (operations) {\n // 1.\n const cache = this.#relevantRequestResponseList\n\n // 2.\n const backupCache = [...cache]\n\n // 3.\n const addedItems = []\n\n // 4.1\n const resultList = []\n\n try {\n // 4.2\n for (const operation of operations) {\n // 4.2.1\n if (operation.type !== 'delete' && operation.type !== 'put') {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'operation type does not match \"delete\" or \"put\"'\n })\n }\n\n // 4.2.2\n if (operation.type === 'delete' && operation.response != null) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'delete operation should not have an associated response'\n })\n }\n\n // 4.2.3\n if (this.#queryCache(operation.request, operation.options, addedItems).length) {\n throw new DOMException('???', 'InvalidStateError')\n }\n\n // 4.2.4\n let requestResponses\n\n // 4.2.5\n if (operation.type === 'delete') {\n // 4.2.5.1\n requestResponses = this.#queryCache(operation.request, operation.options)\n\n // TODO: the spec is wrong, this is needed to pass WPTs\n if (requestResponses.length === 0) {\n return []\n }\n\n // 4.2.5.2\n for (const requestResponse of requestResponses) {\n const idx = cache.indexOf(requestResponse)\n assert(idx !== -1)\n\n // 4.2.5.2.1\n cache.splice(idx, 1)\n }\n } else if (operation.type === 'put') { // 4.2.6\n // 4.2.6.1\n if (operation.response == null) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'put operation should have an associated response'\n })\n }\n\n // 4.2.6.2\n const r = operation.request\n\n // 4.2.6.3\n if (!urlIsHttpHttpsScheme(r.url)) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'expected http or https scheme'\n })\n }\n\n // 4.2.6.4\n if (r.method !== 'GET') {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'not get method'\n })\n }\n\n // 4.2.6.5\n if (operation.options != null) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'options must not be defined'\n })\n }\n\n // 4.2.6.6\n requestResponses = this.#queryCache(operation.request)\n\n // 4.2.6.7\n for (const requestResponse of requestResponses) {\n const idx = cache.indexOf(requestResponse)\n assert(idx !== -1)\n\n // 4.2.6.7.1\n cache.splice(idx, 1)\n }\n\n // 4.2.6.8\n cache.push([operation.request, operation.response])\n\n // 4.2.6.10\n addedItems.push([operation.request, operation.response])\n }\n\n // 4.2.7\n resultList.push([operation.request, operation.response])\n }\n\n // 4.3\n return resultList\n } catch (e) { // 5.\n // 5.1\n this.#relevantRequestResponseList.length = 0\n\n // 5.2\n this.#relevantRequestResponseList = backupCache\n\n // 5.3\n throw e\n }\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#query-cache\n * @param {any} requestQuery\n * @param {import('../../types/cache').CacheQueryOptions} options\n * @param {requestResponseList} targetStorage\n * @returns {requestResponseList}\n */\n #queryCache (requestQuery, options, targetStorage) {\n /** @type {requestResponseList} */\n const resultList = []\n\n const storage = targetStorage ?? this.#relevantRequestResponseList\n\n for (const requestResponse of storage) {\n const [cachedRequest, cachedResponse] = requestResponse\n if (this.#requestMatchesCachedItem(requestQuery, cachedRequest, cachedResponse, options)) {\n resultList.push(requestResponse)\n }\n }\n\n return resultList\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm\n * @param {any} requestQuery\n * @param {any} request\n * @param {any | null} response\n * @param {import('../../types/cache').CacheQueryOptions | undefined} options\n * @returns {boolean}\n */\n #requestMatchesCachedItem (requestQuery, request, response = null, options) {\n // if (options?.ignoreMethod === false && request.method === 'GET') {\n // return false\n // }\n\n const queryURL = new URL(requestQuery.url)\n\n const cachedURL = new URL(request.url)\n\n if (options?.ignoreSearch) {\n cachedURL.search = ''\n\n queryURL.search = ''\n }\n\n if (!urlEquals(queryURL, cachedURL, true)) {\n return false\n }\n\n if (\n response == null ||\n options?.ignoreVary ||\n !response.headersList.contains('vary')\n ) {\n return true\n }\n\n const fieldValues = getFieldValues(response.headersList.get('vary'))\n\n for (const fieldValue of fieldValues) {\n if (fieldValue === '*') {\n return false\n }\n\n const requestValue = request.headersList.get(fieldValue)\n const queryValue = requestQuery.headersList.get(fieldValue)\n\n // If one has the header and the other doesn't, or one has\n // a different value than the other, return false\n if (requestValue !== queryValue) {\n return false\n }\n }\n\n return true\n }\n}\n\nObject.defineProperties(Cache.prototype, {\n [Symbol.toStringTag]: {\n value: 'Cache',\n configurable: true\n },\n match: kEnumerableProperty,\n matchAll: kEnumerableProperty,\n add: kEnumerableProperty,\n addAll: kEnumerableProperty,\n put: kEnumerableProperty,\n delete: kEnumerableProperty,\n keys: kEnumerableProperty\n})\n\nconst cacheQueryOptionConverters = [\n {\n key: 'ignoreSearch',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'ignoreMethod',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'ignoreVary',\n converter: webidl.converters.boolean,\n defaultValue: false\n }\n]\n\nwebidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters)\n\nwebidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([\n ...cacheQueryOptionConverters,\n {\n key: 'cacheName',\n converter: webidl.converters.DOMString\n }\n])\n\nwebidl.converters.Response = webidl.interfaceConverter(Response)\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.RequestInfo\n)\n\nmodule.exports = {\n Cache\n}\n","'use strict'\n\nconst { kConstruct } = require('./symbols')\nconst { Cache } = require('./cache')\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../core/util')\n\nclass CacheStorage {\n /**\n * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map\n * @type {Map}\n */\n async has (cacheName) {\n webidl.brandCheck(this, CacheStorage)\n webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.has' })\n\n cacheName = webidl.converters.DOMString(cacheName)\n\n // 2.1.1\n // 2.2\n return this.#caches.has(cacheName)\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open\n * @param {string} cacheName\n * @returns {Promise}\n */\n async open (cacheName) {\n webidl.brandCheck(this, CacheStorage)\n webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.open' })\n\n cacheName = webidl.converters.DOMString(cacheName)\n\n // 2.1\n if (this.#caches.has(cacheName)) {\n // await caches.open('v1') !== await caches.open('v1')\n\n // 2.1.1\n const cache = this.#caches.get(cacheName)\n\n // 2.1.1.1\n return new Cache(kConstruct, cache)\n }\n\n // 2.2\n const cache = []\n\n // 2.3\n this.#caches.set(cacheName, cache)\n\n // 2.4\n return new Cache(kConstruct, cache)\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete\n * @param {string} cacheName\n * @returns {Promise}\n */\n async delete (cacheName) {\n webidl.brandCheck(this, CacheStorage)\n webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.delete' })\n\n cacheName = webidl.converters.DOMString(cacheName)\n\n return this.#caches.delete(cacheName)\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys\n * @returns {string[]}\n */\n async keys () {\n webidl.brandCheck(this, CacheStorage)\n\n // 2.1\n const keys = this.#caches.keys()\n\n // 2.2\n return [...keys]\n }\n}\n\nObject.defineProperties(CacheStorage.prototype, {\n [Symbol.toStringTag]: {\n value: 'CacheStorage',\n configurable: true\n },\n match: kEnumerableProperty,\n has: kEnumerableProperty,\n open: kEnumerableProperty,\n delete: kEnumerableProperty,\n keys: kEnumerableProperty\n})\n\nmodule.exports = {\n CacheStorage\n}\n","'use strict'\n\nmodule.exports = {\n kConstruct: require('../core/symbols').kConstruct\n}\n","'use strict'\n\nconst assert = require('assert')\nconst { URLSerializer } = require('../fetch/dataURL')\nconst { isValidHeaderName } = require('../fetch/util')\n\n/**\n * @see https://url.spec.whatwg.org/#concept-url-equals\n * @param {URL} A\n * @param {URL} B\n * @param {boolean | undefined} excludeFragment\n * @returns {boolean}\n */\nfunction urlEquals (A, B, excludeFragment = false) {\n const serializedA = URLSerializer(A, excludeFragment)\n\n const serializedB = URLSerializer(B, excludeFragment)\n\n return serializedA === serializedB\n}\n\n/**\n * @see https://github.com/chromium/chromium/blob/694d20d134cb553d8d89e5500b9148012b1ba299/content/browser/cache_storage/cache_storage_cache.cc#L260-L262\n * @param {string} header\n */\nfunction fieldValues (header) {\n assert(header !== null)\n\n const values = []\n\n for (let value of header.split(',')) {\n value = value.trim()\n\n if (!value.length) {\n continue\n } else if (!isValidHeaderName(value)) {\n continue\n }\n\n values.push(value)\n }\n\n return values\n}\n\nmodule.exports = {\n urlEquals,\n fieldValues\n}\n","// @ts-check\n\n'use strict'\n\n/* global WebAssembly */\n\nconst assert = require('assert')\nconst net = require('net')\nconst http = require('http')\nconst { pipeline } = require('stream')\nconst util = require('./core/util')\nconst timers = require('./timers')\nconst Request = require('./core/request')\nconst DispatcherBase = require('./dispatcher-base')\nconst {\n RequestContentLengthMismatchError,\n ResponseContentLengthMismatchError,\n InvalidArgumentError,\n RequestAbortedError,\n HeadersTimeoutError,\n HeadersOverflowError,\n SocketError,\n InformationalError,\n BodyTimeoutError,\n HTTPParserError,\n ResponseExceededMaxSizeError,\n ClientDestroyedError\n} = require('./core/errors')\nconst buildConnector = require('./core/connect')\nconst {\n kUrl,\n kReset,\n kServerName,\n kClient,\n kBusy,\n kParser,\n kConnect,\n kBlocking,\n kResuming,\n kRunning,\n kPending,\n kSize,\n kWriting,\n kQueue,\n kConnected,\n kConnecting,\n kNeedDrain,\n kNoRef,\n kKeepAliveDefaultTimeout,\n kHostHeader,\n kPendingIdx,\n kRunningIdx,\n kError,\n kPipelining,\n kSocket,\n kKeepAliveTimeoutValue,\n kMaxHeadersSize,\n kKeepAliveMaxTimeout,\n kKeepAliveTimeoutThreshold,\n kHeadersTimeout,\n kBodyTimeout,\n kStrictContentLength,\n kConnector,\n kMaxRedirections,\n kMaxRequests,\n kCounter,\n kClose,\n kDestroy,\n kDispatch,\n kInterceptors,\n kLocalAddress,\n kMaxResponseSize,\n kHTTPConnVersion,\n // HTTP2\n kHost,\n kHTTP2Session,\n kHTTP2SessionState,\n kHTTP2BuildRequest,\n kHTTP2CopyHeaders,\n kHTTP1BuildRequest\n} = require('./core/symbols')\n\n/** @type {import('http2')} */\nlet http2\ntry {\n http2 = require('http2')\n} catch {\n // @ts-ignore\n http2 = { constants: {} }\n}\n\nconst {\n constants: {\n HTTP2_HEADER_AUTHORITY,\n HTTP2_HEADER_METHOD,\n HTTP2_HEADER_PATH,\n HTTP2_HEADER_SCHEME,\n HTTP2_HEADER_CONTENT_LENGTH,\n HTTP2_HEADER_EXPECT,\n HTTP2_HEADER_STATUS\n }\n} = http2\n\n// Experimental\nlet h2ExperimentalWarned = false\n\nconst FastBuffer = Buffer[Symbol.species]\n\nconst kClosedResolve = Symbol('kClosedResolve')\n\nconst channels = {}\n\ntry {\n const diagnosticsChannel = require('diagnostics_channel')\n channels.sendHeaders = diagnosticsChannel.channel('undici:client:sendHeaders')\n channels.beforeConnect = diagnosticsChannel.channel('undici:client:beforeConnect')\n channels.connectError = diagnosticsChannel.channel('undici:client:connectError')\n channels.connected = diagnosticsChannel.channel('undici:client:connected')\n} catch {\n channels.sendHeaders = { hasSubscribers: false }\n channels.beforeConnect = { hasSubscribers: false }\n channels.connectError = { hasSubscribers: false }\n channels.connected = { hasSubscribers: false }\n}\n\n/**\n * @type {import('../types/client').default}\n */\nclass Client extends DispatcherBase {\n /**\n *\n * @param {string|URL} url\n * @param {import('../types/client').Client.Options} options\n */\n constructor (url, {\n interceptors,\n maxHeaderSize,\n headersTimeout,\n socketTimeout,\n requestTimeout,\n connectTimeout,\n bodyTimeout,\n idleTimeout,\n keepAlive,\n keepAliveTimeout,\n maxKeepAliveTimeout,\n keepAliveMaxTimeout,\n keepAliveTimeoutThreshold,\n socketPath,\n pipelining,\n tls,\n strictContentLength,\n maxCachedSessions,\n maxRedirections,\n connect,\n maxRequestsPerClient,\n localAddress,\n maxResponseSize,\n autoSelectFamily,\n autoSelectFamilyAttemptTimeout,\n // h2\n allowH2,\n maxConcurrentStreams\n } = {}) {\n super()\n\n if (keepAlive !== undefined) {\n throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead')\n }\n\n if (socketTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported socketTimeout, use headersTimeout & bodyTimeout instead')\n }\n\n if (requestTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported requestTimeout, use headersTimeout & bodyTimeout instead')\n }\n\n if (idleTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported idleTimeout, use keepAliveTimeout instead')\n }\n\n if (maxKeepAliveTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead')\n }\n\n if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) {\n throw new InvalidArgumentError('invalid maxHeaderSize')\n }\n\n if (socketPath != null && typeof socketPath !== 'string') {\n throw new InvalidArgumentError('invalid socketPath')\n }\n\n if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) {\n throw new InvalidArgumentError('invalid connectTimeout')\n }\n\n if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) {\n throw new InvalidArgumentError('invalid keepAliveTimeout')\n }\n\n if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) {\n throw new InvalidArgumentError('invalid keepAliveMaxTimeout')\n }\n\n if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) {\n throw new InvalidArgumentError('invalid keepAliveTimeoutThreshold')\n }\n\n if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) {\n throw new InvalidArgumentError('headersTimeout must be a positive integer or zero')\n }\n\n if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) {\n throw new InvalidArgumentError('bodyTimeout must be a positive integer or zero')\n }\n\n if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n throw new InvalidArgumentError('connect must be a function or an object')\n }\n\n if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {\n throw new InvalidArgumentError('maxRedirections must be a positive number')\n }\n\n if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) {\n throw new InvalidArgumentError('maxRequestsPerClient must be a positive number')\n }\n\n if (localAddress != null && (typeof localAddress !== 'string' || net.isIP(localAddress) === 0)) {\n throw new InvalidArgumentError('localAddress must be valid string IP address')\n }\n\n if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) {\n throw new InvalidArgumentError('maxResponseSize must be a positive number')\n }\n\n if (\n autoSelectFamilyAttemptTimeout != null &&\n (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1)\n ) {\n throw new InvalidArgumentError('autoSelectFamilyAttemptTimeout must be a positive number')\n }\n\n // h2\n if (allowH2 != null && typeof allowH2 !== 'boolean') {\n throw new InvalidArgumentError('allowH2 must be a valid boolean value')\n }\n\n if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) {\n throw new InvalidArgumentError('maxConcurrentStreams must be a possitive integer, greater than 0')\n }\n\n if (typeof connect !== 'function') {\n connect = buildConnector({\n ...tls,\n maxCachedSessions,\n allowH2,\n socketPath,\n timeout: connectTimeout,\n ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),\n ...connect\n })\n }\n\n this[kInterceptors] = interceptors && interceptors.Client && Array.isArray(interceptors.Client)\n ? interceptors.Client\n : [createRedirectInterceptor({ maxRedirections })]\n this[kUrl] = util.parseOrigin(url)\n this[kConnector] = connect\n this[kSocket] = null\n this[kPipelining] = pipelining != null ? pipelining : 1\n this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize\n this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout\n this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout\n this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold\n this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout]\n this[kServerName] = null\n this[kLocalAddress] = localAddress != null ? localAddress : null\n this[kResuming] = 0 // 0, idle, 1, scheduled, 2 resuming\n this[kNeedDrain] = 0 // 0, idle, 1, scheduled, 2 resuming\n this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}\\r\\n`\n this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 300e3\n this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 300e3\n this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength\n this[kMaxRedirections] = maxRedirections\n this[kMaxRequests] = maxRequestsPerClient\n this[kClosedResolve] = null\n this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1\n this[kHTTPConnVersion] = 'h1'\n\n // HTTP/2\n this[kHTTP2Session] = null\n this[kHTTP2SessionState] = !allowH2\n ? null\n : {\n // streams: null, // Fixed queue of streams - For future support of `push`\n openStreams: 0, // Keep track of them to decide wether or not unref the session\n maxConcurrentStreams: maxConcurrentStreams != null ? maxConcurrentStreams : 100 // Max peerConcurrentStreams for a Node h2 server\n }\n this[kHost] = `${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}`\n\n // kQueue is built up of 3 sections separated by\n // the kRunningIdx and kPendingIdx indices.\n // | complete | running | pending |\n // ^ kRunningIdx ^ kPendingIdx ^ kQueue.length\n // kRunningIdx points to the first running element.\n // kPendingIdx points to the first pending element.\n // This implements a fast queue with an amortized\n // time of O(1).\n\n this[kQueue] = []\n this[kRunningIdx] = 0\n this[kPendingIdx] = 0\n }\n\n get pipelining () {\n return this[kPipelining]\n }\n\n set pipelining (value) {\n this[kPipelining] = value\n resume(this, true)\n }\n\n get [kPending] () {\n return this[kQueue].length - this[kPendingIdx]\n }\n\n get [kRunning] () {\n return this[kPendingIdx] - this[kRunningIdx]\n }\n\n get [kSize] () {\n return this[kQueue].length - this[kRunningIdx]\n }\n\n get [kConnected] () {\n return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed\n }\n\n get [kBusy] () {\n const socket = this[kSocket]\n return (\n (socket && (socket[kReset] || socket[kWriting] || socket[kBlocking])) ||\n (this[kSize] >= (this[kPipelining] || 1)) ||\n this[kPending] > 0\n )\n }\n\n /* istanbul ignore: only used for test */\n [kConnect] (cb) {\n connect(this)\n this.once('connect', cb)\n }\n\n [kDispatch] (opts, handler) {\n const origin = opts.origin || this[kUrl].origin\n\n const request = this[kHTTPConnVersion] === 'h2'\n ? Request[kHTTP2BuildRequest](origin, opts, handler)\n : Request[kHTTP1BuildRequest](origin, opts, handler)\n\n this[kQueue].push(request)\n if (this[kResuming]) {\n // Do nothing.\n } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) {\n // Wait a tick in case stream/iterator is ended in the same tick.\n this[kResuming] = 1\n process.nextTick(resume, this)\n } else {\n resume(this, true)\n }\n\n if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) {\n this[kNeedDrain] = 2\n }\n\n return this[kNeedDrain] < 2\n }\n\n async [kClose] () {\n // TODO: for H2 we need to gracefully flush the remaining enqueued\n // request and close each stream.\n return new Promise((resolve) => {\n if (!this[kSize]) {\n resolve(null)\n } else {\n this[kClosedResolve] = resolve\n }\n })\n }\n\n async [kDestroy] (err) {\n return new Promise((resolve) => {\n const requests = this[kQueue].splice(this[kPendingIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(this, request, err)\n }\n\n const callback = () => {\n if (this[kClosedResolve]) {\n // TODO (fix): Should we error here with ClientDestroyedError?\n this[kClosedResolve]()\n this[kClosedResolve] = null\n }\n resolve()\n }\n\n if (this[kHTTP2Session] != null) {\n util.destroy(this[kHTTP2Session], err)\n this[kHTTP2Session] = null\n this[kHTTP2SessionState] = null\n }\n\n if (!this[kSocket]) {\n queueMicrotask(callback)\n } else {\n util.destroy(this[kSocket].on('close', callback), err)\n }\n\n resume(this)\n })\n }\n}\n\nfunction onHttp2SessionError (err) {\n assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')\n\n this[kSocket][kError] = err\n\n onError(this[kClient], err)\n}\n\nfunction onHttp2FrameError (type, code, id) {\n const err = new InformationalError(`HTTP/2: \"frameError\" received - type ${type}, code ${code}`)\n\n if (id === 0) {\n this[kSocket][kError] = err\n onError(this[kClient], err)\n }\n}\n\nfunction onHttp2SessionEnd () {\n util.destroy(this, new SocketError('other side closed'))\n util.destroy(this[kSocket], new SocketError('other side closed'))\n}\n\nfunction onHTTP2GoAway (code) {\n const client = this[kClient]\n const err = new InformationalError(`HTTP/2: \"GOAWAY\" frame received with code ${code}`)\n client[kSocket] = null\n client[kHTTP2Session] = null\n\n if (client.destroyed) {\n assert(this[kPending] === 0)\n\n // Fail entire queue.\n const requests = client[kQueue].splice(client[kRunningIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(this, request, err)\n }\n } else if (client[kRunning] > 0) {\n // Fail head of pipeline.\n const request = client[kQueue][client[kRunningIdx]]\n client[kQueue][client[kRunningIdx]++] = null\n\n errorRequest(client, request, err)\n }\n\n client[kPendingIdx] = client[kRunningIdx]\n\n assert(client[kRunning] === 0)\n\n client.emit('disconnect',\n client[kUrl],\n [client],\n err\n )\n\n resume(client)\n}\n\nconst constants = require('./llhttp/constants')\nconst createRedirectInterceptor = require('./interceptor/redirectInterceptor')\nconst EMPTY_BUF = Buffer.alloc(0)\n\nasync function lazyllhttp () {\n const llhttpWasmData = process.env.JEST_WORKER_ID ? require('./llhttp/llhttp-wasm.js') : undefined\n\n let mod\n try {\n mod = await WebAssembly.compile(Buffer.from(require('./llhttp/llhttp_simd-wasm.js'), 'base64'))\n } catch (e) {\n /* istanbul ignore next */\n\n // We could check if the error was caused by the simd option not\n // being enabled, but the occurring of this other error\n // * https://github.com/emscripten-core/emscripten/issues/11495\n // got me to remove that check to avoid breaking Node 12.\n mod = await WebAssembly.compile(Buffer.from(llhttpWasmData || require('./llhttp/llhttp-wasm.js'), 'base64'))\n }\n\n return await WebAssembly.instantiate(mod, {\n env: {\n /* eslint-disable camelcase */\n\n wasm_on_url: (p, at, len) => {\n /* istanbul ignore next */\n return 0\n },\n wasm_on_status: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_message_begin: (p) => {\n assert.strictEqual(currentParser.ptr, p)\n return currentParser.onMessageBegin() || 0\n },\n wasm_on_header_field: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_header_value: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => {\n assert.strictEqual(currentParser.ptr, p)\n return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0\n },\n wasm_on_body: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_message_complete: (p) => {\n assert.strictEqual(currentParser.ptr, p)\n return currentParser.onMessageComplete() || 0\n }\n\n /* eslint-enable camelcase */\n }\n })\n}\n\nlet llhttpInstance = null\nlet llhttpPromise = lazyllhttp()\nllhttpPromise.catch()\n\nlet currentParser = null\nlet currentBufferRef = null\nlet currentBufferSize = 0\nlet currentBufferPtr = null\n\nconst TIMEOUT_HEADERS = 1\nconst TIMEOUT_BODY = 2\nconst TIMEOUT_IDLE = 3\n\nclass Parser {\n constructor (client, socket, { exports }) {\n assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0)\n\n this.llhttp = exports\n this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE)\n this.client = client\n this.socket = socket\n this.timeout = null\n this.timeoutValue = null\n this.timeoutType = null\n this.statusCode = null\n this.statusText = ''\n this.upgrade = false\n this.headers = []\n this.headersSize = 0\n this.headersMaxSize = client[kMaxHeadersSize]\n this.shouldKeepAlive = false\n this.paused = false\n this.resume = this.resume.bind(this)\n\n this.bytesRead = 0\n\n this.keepAlive = ''\n this.contentLength = ''\n this.connection = ''\n this.maxResponseSize = client[kMaxResponseSize]\n }\n\n setTimeout (value, type) {\n this.timeoutType = type\n if (value !== this.timeoutValue) {\n timers.clearTimeout(this.timeout)\n if (value) {\n this.timeout = timers.setTimeout(onParserTimeout, value, this)\n // istanbul ignore else: only for jest\n if (this.timeout.unref) {\n this.timeout.unref()\n }\n } else {\n this.timeout = null\n }\n this.timeoutValue = value\n } else if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n }\n\n resume () {\n if (this.socket.destroyed || !this.paused) {\n return\n }\n\n assert(this.ptr != null)\n assert(currentParser == null)\n\n this.llhttp.llhttp_resume(this.ptr)\n\n assert(this.timeoutType === TIMEOUT_BODY)\n if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n\n this.paused = false\n this.execute(this.socket.read() || EMPTY_BUF) // Flush parser.\n this.readMore()\n }\n\n readMore () {\n while (!this.paused && this.ptr) {\n const chunk = this.socket.read()\n if (chunk === null) {\n break\n }\n this.execute(chunk)\n }\n }\n\n execute (data) {\n assert(this.ptr != null)\n assert(currentParser == null)\n assert(!this.paused)\n\n const { socket, llhttp } = this\n\n if (data.length > currentBufferSize) {\n if (currentBufferPtr) {\n llhttp.free(currentBufferPtr)\n }\n currentBufferSize = Math.ceil(data.length / 4096) * 4096\n currentBufferPtr = llhttp.malloc(currentBufferSize)\n }\n\n new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data)\n\n // Call `execute` on the wasm parser.\n // We pass the `llhttp_parser` pointer address, the pointer address of buffer view data,\n // and finally the length of bytes to parse.\n // The return value is an error code or `constants.ERROR.OK`.\n try {\n let ret\n\n try {\n currentBufferRef = data\n currentParser = this\n ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length)\n /* eslint-disable-next-line no-useless-catch */\n } catch (err) {\n /* istanbul ignore next: difficult to make a test case for */\n throw err\n } finally {\n currentParser = null\n currentBufferRef = null\n }\n\n const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr\n\n if (ret === constants.ERROR.PAUSED_UPGRADE) {\n this.onUpgrade(data.slice(offset))\n } else if (ret === constants.ERROR.PAUSED) {\n this.paused = true\n socket.unshift(data.slice(offset))\n } else if (ret !== constants.ERROR.OK) {\n const ptr = llhttp.llhttp_get_error_reason(this.ptr)\n let message = ''\n /* istanbul ignore else: difficult to make a test case for */\n if (ptr) {\n const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0)\n message =\n 'Response does not match the HTTP/1.1 protocol (' +\n Buffer.from(llhttp.memory.buffer, ptr, len).toString() +\n ')'\n }\n throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset))\n }\n } catch (err) {\n util.destroy(socket, err)\n }\n }\n\n destroy () {\n assert(this.ptr != null)\n assert(currentParser == null)\n\n this.llhttp.llhttp_free(this.ptr)\n this.ptr = null\n\n timers.clearTimeout(this.timeout)\n this.timeout = null\n this.timeoutValue = null\n this.timeoutType = null\n\n this.paused = false\n }\n\n onStatus (buf) {\n this.statusText = buf.toString()\n }\n\n onMessageBegin () {\n const { socket, client } = this\n\n /* istanbul ignore next: difficult to make a test case for */\n if (socket.destroyed) {\n return -1\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n if (!request) {\n return -1\n }\n }\n\n onHeaderField (buf) {\n const len = this.headers.length\n\n if ((len & 1) === 0) {\n this.headers.push(buf)\n } else {\n this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])\n }\n\n this.trackHeader(buf.length)\n }\n\n onHeaderValue (buf) {\n let len = this.headers.length\n\n if ((len & 1) === 1) {\n this.headers.push(buf)\n len += 1\n } else {\n this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])\n }\n\n const key = this.headers[len - 2]\n if (key.length === 10 && key.toString().toLowerCase() === 'keep-alive') {\n this.keepAlive += buf.toString()\n } else if (key.length === 10 && key.toString().toLowerCase() === 'connection') {\n this.connection += buf.toString()\n } else if (key.length === 14 && key.toString().toLowerCase() === 'content-length') {\n this.contentLength += buf.toString()\n }\n\n this.trackHeader(buf.length)\n }\n\n trackHeader (len) {\n this.headersSize += len\n if (this.headersSize >= this.headersMaxSize) {\n util.destroy(this.socket, new HeadersOverflowError())\n }\n }\n\n onUpgrade (head) {\n const { upgrade, client, socket, headers, statusCode } = this\n\n assert(upgrade)\n\n const request = client[kQueue][client[kRunningIdx]]\n assert(request)\n\n assert(!socket.destroyed)\n assert(socket === client[kSocket])\n assert(!this.paused)\n assert(request.upgrade || request.method === 'CONNECT')\n\n this.statusCode = null\n this.statusText = ''\n this.shouldKeepAlive = null\n\n assert(this.headers.length % 2 === 0)\n this.headers = []\n this.headersSize = 0\n\n socket.unshift(head)\n\n socket[kParser].destroy()\n socket[kParser] = null\n\n socket[kClient] = null\n socket[kError] = null\n socket\n .removeListener('error', onSocketError)\n .removeListener('readable', onSocketReadable)\n .removeListener('end', onSocketEnd)\n .removeListener('close', onSocketClose)\n\n client[kSocket] = null\n client[kQueue][client[kRunningIdx]++] = null\n client.emit('disconnect', client[kUrl], [client], new InformationalError('upgrade'))\n\n try {\n request.onUpgrade(statusCode, headers, socket)\n } catch (err) {\n util.destroy(socket, err)\n }\n\n resume(client)\n }\n\n onHeadersComplete (statusCode, upgrade, shouldKeepAlive) {\n const { client, socket, headers, statusText } = this\n\n /* istanbul ignore next: difficult to make a test case for */\n if (socket.destroyed) {\n return -1\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n\n /* istanbul ignore next: difficult to make a test case for */\n if (!request) {\n return -1\n }\n\n assert(!this.upgrade)\n assert(this.statusCode < 200)\n\n if (statusCode === 100) {\n util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket)))\n return -1\n }\n\n /* this can only happen if server is misbehaving */\n if (upgrade && !request.upgrade) {\n util.destroy(socket, new SocketError('bad upgrade', util.getSocketInfo(socket)))\n return -1\n }\n\n assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS)\n\n this.statusCode = statusCode\n this.shouldKeepAlive = (\n shouldKeepAlive ||\n // Override llhttp value which does not allow keepAlive for HEAD.\n (request.method === 'HEAD' && !socket[kReset] && this.connection.toLowerCase() === 'keep-alive')\n )\n\n if (this.statusCode >= 200) {\n const bodyTimeout = request.bodyTimeout != null\n ? request.bodyTimeout\n : client[kBodyTimeout]\n this.setTimeout(bodyTimeout, TIMEOUT_BODY)\n } else if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n\n if (request.method === 'CONNECT') {\n assert(client[kRunning] === 1)\n this.upgrade = true\n return 2\n }\n\n if (upgrade) {\n assert(client[kRunning] === 1)\n this.upgrade = true\n return 2\n }\n\n assert(this.headers.length % 2 === 0)\n this.headers = []\n this.headersSize = 0\n\n if (this.shouldKeepAlive && client[kPipelining]) {\n const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null\n\n if (keepAliveTimeout != null) {\n const timeout = Math.min(\n keepAliveTimeout - client[kKeepAliveTimeoutThreshold],\n client[kKeepAliveMaxTimeout]\n )\n if (timeout <= 0) {\n socket[kReset] = true\n } else {\n client[kKeepAliveTimeoutValue] = timeout\n }\n } else {\n client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]\n }\n } else {\n // Stop more requests from being dispatched.\n socket[kReset] = true\n }\n\n const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false\n\n if (request.aborted) {\n return -1\n }\n\n if (request.method === 'HEAD') {\n return 1\n }\n\n if (statusCode < 200) {\n return 1\n }\n\n if (socket[kBlocking]) {\n socket[kBlocking] = false\n resume(client)\n }\n\n return pause ? constants.ERROR.PAUSED : 0\n }\n\n onBody (buf) {\n const { client, socket, statusCode, maxResponseSize } = this\n\n if (socket.destroyed) {\n return -1\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n assert(request)\n\n assert.strictEqual(this.timeoutType, TIMEOUT_BODY)\n if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n\n assert(statusCode >= 200)\n\n if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) {\n util.destroy(socket, new ResponseExceededMaxSizeError())\n return -1\n }\n\n this.bytesRead += buf.length\n\n if (request.onData(buf) === false) {\n return constants.ERROR.PAUSED\n }\n }\n\n onMessageComplete () {\n const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this\n\n if (socket.destroyed && (!statusCode || shouldKeepAlive)) {\n return -1\n }\n\n if (upgrade) {\n return\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n assert(request)\n\n assert(statusCode >= 100)\n\n this.statusCode = null\n this.statusText = ''\n this.bytesRead = 0\n this.contentLength = ''\n this.keepAlive = ''\n this.connection = ''\n\n assert(this.headers.length % 2 === 0)\n this.headers = []\n this.headersSize = 0\n\n if (statusCode < 200) {\n return\n }\n\n /* istanbul ignore next: should be handled by llhttp? */\n if (request.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) {\n util.destroy(socket, new ResponseContentLengthMismatchError())\n return -1\n }\n\n request.onComplete(headers)\n\n client[kQueue][client[kRunningIdx]++] = null\n\n if (socket[kWriting]) {\n assert.strictEqual(client[kRunning], 0)\n // Response completed before request.\n util.destroy(socket, new InformationalError('reset'))\n return constants.ERROR.PAUSED\n } else if (!shouldKeepAlive) {\n util.destroy(socket, new InformationalError('reset'))\n return constants.ERROR.PAUSED\n } else if (socket[kReset] && client[kRunning] === 0) {\n // Destroy socket once all requests have completed.\n // The request at the tail of the pipeline is the one\n // that requested reset and no further requests should\n // have been queued since then.\n util.destroy(socket, new InformationalError('reset'))\n return constants.ERROR.PAUSED\n } else if (client[kPipelining] === 1) {\n // We must wait a full event loop cycle to reuse this socket to make sure\n // that non-spec compliant servers are not closing the connection even if they\n // said they won't.\n setImmediate(resume, client)\n } else {\n resume(client)\n }\n }\n}\n\nfunction onParserTimeout (parser) {\n const { socket, timeoutType, client } = parser\n\n /* istanbul ignore else */\n if (timeoutType === TIMEOUT_HEADERS) {\n if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) {\n assert(!parser.paused, 'cannot be paused while waiting for headers')\n util.destroy(socket, new HeadersTimeoutError())\n }\n } else if (timeoutType === TIMEOUT_BODY) {\n if (!parser.paused) {\n util.destroy(socket, new BodyTimeoutError())\n }\n } else if (timeoutType === TIMEOUT_IDLE) {\n assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue])\n util.destroy(socket, new InformationalError('socket idle timeout'))\n }\n}\n\nfunction onSocketReadable () {\n const { [kParser]: parser } = this\n if (parser) {\n parser.readMore()\n }\n}\n\nfunction onSocketError (err) {\n const { [kClient]: client, [kParser]: parser } = this\n\n assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')\n\n if (client[kHTTPConnVersion] !== 'h2') {\n // On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded\n // to the user.\n if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) {\n // We treat all incoming data so for as a valid response.\n parser.onMessageComplete()\n return\n }\n }\n\n this[kError] = err\n\n onError(this[kClient], err)\n}\n\nfunction onError (client, err) {\n if (\n client[kRunning] === 0 &&\n err.code !== 'UND_ERR_INFO' &&\n err.code !== 'UND_ERR_SOCKET'\n ) {\n // Error is not caused by running request and not a recoverable\n // socket error.\n\n assert(client[kPendingIdx] === client[kRunningIdx])\n\n const requests = client[kQueue].splice(client[kRunningIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(client, request, err)\n }\n assert(client[kSize] === 0)\n }\n}\n\nfunction onSocketEnd () {\n const { [kParser]: parser, [kClient]: client } = this\n\n if (client[kHTTPConnVersion] !== 'h2') {\n if (parser.statusCode && !parser.shouldKeepAlive) {\n // We treat all incoming data so far as a valid response.\n parser.onMessageComplete()\n return\n }\n }\n\n util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this)))\n}\n\nfunction onSocketClose () {\n const { [kClient]: client, [kParser]: parser } = this\n\n if (client[kHTTPConnVersion] === 'h1' && parser) {\n if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) {\n // We treat all incoming data so far as a valid response.\n parser.onMessageComplete()\n }\n\n this[kParser].destroy()\n this[kParser] = null\n }\n\n const err = this[kError] || new SocketError('closed', util.getSocketInfo(this))\n\n client[kSocket] = null\n\n if (client.destroyed) {\n assert(client[kPending] === 0)\n\n // Fail entire queue.\n const requests = client[kQueue].splice(client[kRunningIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(client, request, err)\n }\n } else if (client[kRunning] > 0 && err.code !== 'UND_ERR_INFO') {\n // Fail head of pipeline.\n const request = client[kQueue][client[kRunningIdx]]\n client[kQueue][client[kRunningIdx]++] = null\n\n errorRequest(client, request, err)\n }\n\n client[kPendingIdx] = client[kRunningIdx]\n\n assert(client[kRunning] === 0)\n\n client.emit('disconnect', client[kUrl], [client], err)\n\n resume(client)\n}\n\nasync function connect (client) {\n assert(!client[kConnecting])\n assert(!client[kSocket])\n\n let { host, hostname, protocol, port } = client[kUrl]\n\n // Resolve ipv6\n if (hostname[0] === '[') {\n const idx = hostname.indexOf(']')\n\n assert(idx !== -1)\n const ip = hostname.substring(1, idx)\n\n assert(net.isIP(ip))\n hostname = ip\n }\n\n client[kConnecting] = true\n\n if (channels.beforeConnect.hasSubscribers) {\n channels.beforeConnect.publish({\n connectParams: {\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n },\n connector: client[kConnector]\n })\n }\n\n try {\n const socket = await new Promise((resolve, reject) => {\n client[kConnector]({\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n }, (err, socket) => {\n if (err) {\n reject(err)\n } else {\n resolve(socket)\n }\n })\n })\n\n if (client.destroyed) {\n util.destroy(socket.on('error', () => {}), new ClientDestroyedError())\n return\n }\n\n client[kConnecting] = false\n\n assert(socket)\n\n const isH2 = socket.alpnProtocol === 'h2'\n if (isH2) {\n if (!h2ExperimentalWarned) {\n h2ExperimentalWarned = true\n process.emitWarning('H2 support is experimental, expect them to change at any time.', {\n code: 'UNDICI-H2'\n })\n }\n\n const session = http2.connect(client[kUrl], {\n createConnection: () => socket,\n peerMaxConcurrentStreams: client[kHTTP2SessionState].maxConcurrentStreams\n })\n\n client[kHTTPConnVersion] = 'h2'\n session[kClient] = client\n session[kSocket] = socket\n session.on('error', onHttp2SessionError)\n session.on('frameError', onHttp2FrameError)\n session.on('end', onHttp2SessionEnd)\n session.on('goaway', onHTTP2GoAway)\n session.on('close', onSocketClose)\n session.unref()\n\n client[kHTTP2Session] = session\n socket[kHTTP2Session] = session\n } else {\n if (!llhttpInstance) {\n llhttpInstance = await llhttpPromise\n llhttpPromise = null\n }\n\n socket[kNoRef] = false\n socket[kWriting] = false\n socket[kReset] = false\n socket[kBlocking] = false\n socket[kParser] = new Parser(client, socket, llhttpInstance)\n }\n\n socket[kCounter] = 0\n socket[kMaxRequests] = client[kMaxRequests]\n socket[kClient] = client\n socket[kError] = null\n\n socket\n .on('error', onSocketError)\n .on('readable', onSocketReadable)\n .on('end', onSocketEnd)\n .on('close', onSocketClose)\n\n client[kSocket] = socket\n\n if (channels.connected.hasSubscribers) {\n channels.connected.publish({\n connectParams: {\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n },\n connector: client[kConnector],\n socket\n })\n }\n client.emit('connect', client[kUrl], [client])\n } catch (err) {\n if (client.destroyed) {\n return\n }\n\n client[kConnecting] = false\n\n if (channels.connectError.hasSubscribers) {\n channels.connectError.publish({\n connectParams: {\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n },\n connector: client[kConnector],\n error: err\n })\n }\n\n if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') {\n assert(client[kRunning] === 0)\n while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) {\n const request = client[kQueue][client[kPendingIdx]++]\n errorRequest(client, request, err)\n }\n } else {\n onError(client, err)\n }\n\n client.emit('connectionError', client[kUrl], [client], err)\n }\n\n resume(client)\n}\n\nfunction emitDrain (client) {\n client[kNeedDrain] = 0\n client.emit('drain', client[kUrl], [client])\n}\n\nfunction resume (client, sync) {\n if (client[kResuming] === 2) {\n return\n }\n\n client[kResuming] = 2\n\n _resume(client, sync)\n client[kResuming] = 0\n\n if (client[kRunningIdx] > 256) {\n client[kQueue].splice(0, client[kRunningIdx])\n client[kPendingIdx] -= client[kRunningIdx]\n client[kRunningIdx] = 0\n }\n}\n\nfunction _resume (client, sync) {\n while (true) {\n if (client.destroyed) {\n assert(client[kPending] === 0)\n return\n }\n\n if (client[kClosedResolve] && !client[kSize]) {\n client[kClosedResolve]()\n client[kClosedResolve] = null\n return\n }\n\n const socket = client[kSocket]\n\n if (socket && !socket.destroyed && socket.alpnProtocol !== 'h2') {\n if (client[kSize] === 0) {\n if (!socket[kNoRef] && socket.unref) {\n socket.unref()\n socket[kNoRef] = true\n }\n } else if (socket[kNoRef] && socket.ref) {\n socket.ref()\n socket[kNoRef] = false\n }\n\n if (client[kSize] === 0) {\n if (socket[kParser].timeoutType !== TIMEOUT_IDLE) {\n socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE)\n }\n } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) {\n if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) {\n const request = client[kQueue][client[kRunningIdx]]\n const headersTimeout = request.headersTimeout != null\n ? request.headersTimeout\n : client[kHeadersTimeout]\n socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS)\n }\n }\n }\n\n if (client[kBusy]) {\n client[kNeedDrain] = 2\n } else if (client[kNeedDrain] === 2) {\n if (sync) {\n client[kNeedDrain] = 1\n process.nextTick(emitDrain, client)\n } else {\n emitDrain(client)\n }\n continue\n }\n\n if (client[kPending] === 0) {\n return\n }\n\n if (client[kRunning] >= (client[kPipelining] || 1)) {\n return\n }\n\n const request = client[kQueue][client[kPendingIdx]]\n\n if (client[kUrl].protocol === 'https:' && client[kServerName] !== request.servername) {\n if (client[kRunning] > 0) {\n return\n }\n\n client[kServerName] = request.servername\n\n if (socket && socket.servername !== request.servername) {\n util.destroy(socket, new InformationalError('servername changed'))\n return\n }\n }\n\n if (client[kConnecting]) {\n return\n }\n\n if (!socket && !client[kHTTP2Session]) {\n connect(client)\n return\n }\n\n if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) {\n return\n }\n\n if (client[kRunning] > 0 && !request.idempotent) {\n // Non-idempotent request cannot be retried.\n // Ensure that no other requests are inflight and\n // could cause failure.\n return\n }\n\n if (client[kRunning] > 0 && (request.upgrade || request.method === 'CONNECT')) {\n // Don't dispatch an upgrade until all preceding requests have completed.\n // A misbehaving server might upgrade the connection before all pipelined\n // request has completed.\n return\n }\n\n if (client[kRunning] > 0 && util.bodyLength(request.body) !== 0 &&\n (util.isStream(request.body) || util.isAsyncIterable(request.body))) {\n // Request with stream or iterator body can error while other requests\n // are inflight and indirectly error those as well.\n // Ensure this doesn't happen by waiting for inflight\n // to complete before dispatching.\n\n // Request with stream or iterator body cannot be retried.\n // Ensure that no other requests are inflight and\n // could cause failure.\n return\n }\n\n if (!request.aborted && write(client, request)) {\n client[kPendingIdx]++\n } else {\n client[kQueue].splice(client[kPendingIdx], 1)\n }\n }\n}\n\n// https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2\nfunction shouldSendContentLength (method) {\n return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT'\n}\n\nfunction write (client, request) {\n if (client[kHTTPConnVersion] === 'h2') {\n writeH2(client, client[kHTTP2Session], request)\n return\n }\n\n const { body, method, path, host, upgrade, headers, blocking, reset } = request\n\n // https://tools.ietf.org/html/rfc7231#section-4.3.1\n // https://tools.ietf.org/html/rfc7231#section-4.3.2\n // https://tools.ietf.org/html/rfc7231#section-4.3.5\n\n // Sending a payload body on a request that does not\n // expect it can cause undefined behavior on some\n // servers and corrupt connection state. Do not\n // re-use the connection for further requests.\n\n const expectsPayload = (\n method === 'PUT' ||\n method === 'POST' ||\n method === 'PATCH'\n )\n\n if (body && typeof body.read === 'function') {\n // Try to read EOF in order to get length.\n body.read(0)\n }\n\n const bodyLength = util.bodyLength(body)\n\n let contentLength = bodyLength\n\n if (contentLength === null) {\n contentLength = request.contentLength\n }\n\n if (contentLength === 0 && !expectsPayload) {\n // https://tools.ietf.org/html/rfc7230#section-3.3.2\n // A user agent SHOULD NOT send a Content-Length header field when\n // the request message does not contain a payload body and the method\n // semantics do not anticipate such a body.\n\n contentLength = null\n }\n\n // https://github.com/nodejs/undici/issues/2046\n // A user agent may send a Content-Length header with 0 value, this should be allowed.\n if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength !== null && request.contentLength !== contentLength) {\n if (client[kStrictContentLength]) {\n errorRequest(client, request, new RequestContentLengthMismatchError())\n return false\n }\n\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n\n const socket = client[kSocket]\n\n try {\n request.onConnect((err) => {\n if (request.aborted || request.completed) {\n return\n }\n\n errorRequest(client, request, err || new RequestAbortedError())\n\n util.destroy(socket, new InformationalError('aborted'))\n })\n } catch (err) {\n errorRequest(client, request, err)\n }\n\n if (request.aborted) {\n return false\n }\n\n if (method === 'HEAD') {\n // https://github.com/mcollina/undici/issues/258\n // Close after a HEAD request to interop with misbehaving servers\n // that may send a body in the response.\n\n socket[kReset] = true\n }\n\n if (upgrade || method === 'CONNECT') {\n // On CONNECT or upgrade, block pipeline from dispatching further\n // requests on this connection.\n\n socket[kReset] = true\n }\n\n if (reset != null) {\n socket[kReset] = reset\n }\n\n if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) {\n socket[kReset] = true\n }\n\n if (blocking) {\n socket[kBlocking] = true\n }\n\n let header = `${method} ${path} HTTP/1.1\\r\\n`\n\n if (typeof host === 'string') {\n header += `host: ${host}\\r\\n`\n } else {\n header += client[kHostHeader]\n }\n\n if (upgrade) {\n header += `connection: upgrade\\r\\nupgrade: ${upgrade}\\r\\n`\n } else if (client[kPipelining] && !socket[kReset]) {\n header += 'connection: keep-alive\\r\\n'\n } else {\n header += 'connection: close\\r\\n'\n }\n\n if (headers) {\n header += headers\n }\n\n if (channels.sendHeaders.hasSubscribers) {\n channels.sendHeaders.publish({ request, headers: header, socket })\n }\n\n /* istanbul ignore else: assertion */\n if (!body || bodyLength === 0) {\n if (contentLength === 0) {\n socket.write(`${header}content-length: 0\\r\\n\\r\\n`, 'latin1')\n } else {\n assert(contentLength === null, 'no body must not have content length')\n socket.write(`${header}\\r\\n`, 'latin1')\n }\n request.onRequestSent()\n } else if (util.isBuffer(body)) {\n assert(contentLength === body.byteLength, 'buffer body must have content length')\n\n socket.cork()\n socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n socket.write(body)\n socket.uncork()\n request.onBodySent(body)\n request.onRequestSent()\n if (!expectsPayload) {\n socket[kReset] = true\n }\n } else if (util.isBlobLike(body)) {\n if (typeof body.stream === 'function') {\n writeIterable({ body: body.stream(), client, request, socket, contentLength, header, expectsPayload })\n } else {\n writeBlob({ body, client, request, socket, contentLength, header, expectsPayload })\n }\n } else if (util.isStream(body)) {\n writeStream({ body, client, request, socket, contentLength, header, expectsPayload })\n } else if (util.isIterable(body)) {\n writeIterable({ body, client, request, socket, contentLength, header, expectsPayload })\n } else {\n assert(false)\n }\n\n return true\n}\n\nfunction writeH2 (client, session, request) {\n const { body, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request\n\n let headers\n if (typeof reqHeaders === 'string') headers = Request[kHTTP2CopyHeaders](reqHeaders.trim())\n else headers = reqHeaders\n\n if (upgrade) {\n errorRequest(client, request, new Error('Upgrade not supported for H2'))\n return false\n }\n\n try {\n // TODO(HTTP/2): Should we call onConnect immediately or on stream ready event?\n request.onConnect((err) => {\n if (request.aborted || request.completed) {\n return\n }\n\n errorRequest(client, request, err || new RequestAbortedError())\n })\n } catch (err) {\n errorRequest(client, request, err)\n }\n\n if (request.aborted) {\n return false\n }\n\n /** @type {import('node:http2').ClientHttp2Stream} */\n let stream\n const h2State = client[kHTTP2SessionState]\n\n headers[HTTP2_HEADER_AUTHORITY] = host || client[kHost]\n headers[HTTP2_HEADER_METHOD] = method\n\n if (method === 'CONNECT') {\n session.ref()\n // we are already connected, streams are pending, first request\n // will create a new stream. We trigger a request to create the stream and wait until\n // `ready` event is triggered\n // We disabled endStream to allow the user to write to the stream\n stream = session.request(headers, { endStream: false, signal })\n\n if (stream.id && !stream.pending) {\n request.onUpgrade(null, null, stream)\n ++h2State.openStreams\n } else {\n stream.once('ready', () => {\n request.onUpgrade(null, null, stream)\n ++h2State.openStreams\n })\n }\n\n stream.once('close', () => {\n h2State.openStreams -= 1\n // TODO(HTTP/2): unref only if current streams count is 0\n if (h2State.openStreams === 0) session.unref()\n })\n\n return true\n }\n\n // https://tools.ietf.org/html/rfc7540#section-8.3\n // :path and :scheme headers must be omited when sending CONNECT\n\n headers[HTTP2_HEADER_PATH] = path\n headers[HTTP2_HEADER_SCHEME] = 'https'\n\n // https://tools.ietf.org/html/rfc7231#section-4.3.1\n // https://tools.ietf.org/html/rfc7231#section-4.3.2\n // https://tools.ietf.org/html/rfc7231#section-4.3.5\n\n // Sending a payload body on a request that does not\n // expect it can cause undefined behavior on some\n // servers and corrupt connection state. Do not\n // re-use the connection for further requests.\n\n const expectsPayload = (\n method === 'PUT' ||\n method === 'POST' ||\n method === 'PATCH'\n )\n\n if (body && typeof body.read === 'function') {\n // Try to read EOF in order to get length.\n body.read(0)\n }\n\n let contentLength = util.bodyLength(body)\n\n if (contentLength == null) {\n contentLength = request.contentLength\n }\n\n if (contentLength === 0 || !expectsPayload) {\n // https://tools.ietf.org/html/rfc7230#section-3.3.2\n // A user agent SHOULD NOT send a Content-Length header field when\n // the request message does not contain a payload body and the method\n // semantics do not anticipate such a body.\n\n contentLength = null\n }\n\n // https://github.com/nodejs/undici/issues/2046\n // A user agent may send a Content-Length header with 0 value, this should be allowed.\n if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength != null && request.contentLength !== contentLength) {\n if (client[kStrictContentLength]) {\n errorRequest(client, request, new RequestContentLengthMismatchError())\n return false\n }\n\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n\n if (contentLength != null) {\n assert(body, 'no body must not have content length')\n headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}`\n }\n\n session.ref()\n\n const shouldEndStream = method === 'GET' || method === 'HEAD'\n if (expectContinue) {\n headers[HTTP2_HEADER_EXPECT] = '100-continue'\n stream = session.request(headers, { endStream: shouldEndStream, signal })\n\n stream.once('continue', writeBodyH2)\n } else {\n stream = session.request(headers, {\n endStream: shouldEndStream,\n signal\n })\n writeBodyH2()\n }\n\n // Increment counter as we have new several streams open\n ++h2State.openStreams\n\n stream.once('response', headers => {\n const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers\n\n if (request.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), '') === false) {\n stream.pause()\n }\n })\n\n stream.once('end', () => {\n request.onComplete([])\n })\n\n stream.on('data', (chunk) => {\n if (request.onData(chunk) === false) {\n stream.pause()\n }\n })\n\n stream.once('close', () => {\n h2State.openStreams -= 1\n // TODO(HTTP/2): unref only if current streams count is 0\n if (h2State.openStreams === 0) {\n session.unref()\n }\n })\n\n stream.once('error', function (err) {\n if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) {\n h2State.streams -= 1\n util.destroy(stream, err)\n }\n })\n\n stream.once('frameError', (type, code) => {\n const err = new InformationalError(`HTTP/2: \"frameError\" received - type ${type}, code ${code}`)\n errorRequest(client, request, err)\n\n if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) {\n h2State.streams -= 1\n util.destroy(stream, err)\n }\n })\n\n // stream.on('aborted', () => {\n // // TODO(HTTP/2): Support aborted\n // })\n\n // stream.on('timeout', () => {\n // // TODO(HTTP/2): Support timeout\n // })\n\n // stream.on('push', headers => {\n // // TODO(HTTP/2): Suppor push\n // })\n\n // stream.on('trailers', headers => {\n // // TODO(HTTP/2): Support trailers\n // })\n\n return true\n\n function writeBodyH2 () {\n /* istanbul ignore else: assertion */\n if (!body) {\n request.onRequestSent()\n } else if (util.isBuffer(body)) {\n assert(contentLength === body.byteLength, 'buffer body must have content length')\n stream.cork()\n stream.write(body)\n stream.uncork()\n stream.end()\n request.onBodySent(body)\n request.onRequestSent()\n } else if (util.isBlobLike(body)) {\n if (typeof body.stream === 'function') {\n writeIterable({\n client,\n request,\n contentLength,\n h2stream: stream,\n expectsPayload,\n body: body.stream(),\n socket: client[kSocket],\n header: ''\n })\n } else {\n writeBlob({\n body,\n client,\n request,\n contentLength,\n expectsPayload,\n h2stream: stream,\n header: '',\n socket: client[kSocket]\n })\n }\n } else if (util.isStream(body)) {\n writeStream({\n body,\n client,\n request,\n contentLength,\n expectsPayload,\n socket: client[kSocket],\n h2stream: stream,\n header: ''\n })\n } else if (util.isIterable(body)) {\n writeIterable({\n body,\n client,\n request,\n contentLength,\n expectsPayload,\n header: '',\n h2stream: stream,\n socket: client[kSocket]\n })\n } else {\n assert(false)\n }\n }\n}\n\nfunction writeStream ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {\n assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined')\n\n if (client[kHTTPConnVersion] === 'h2') {\n // For HTTP/2, is enough to pipe the stream\n const pipe = pipeline(\n body,\n h2stream,\n (err) => {\n if (err) {\n util.destroy(body, err)\n util.destroy(h2stream, err)\n } else {\n request.onRequestSent()\n }\n }\n )\n\n pipe.on('data', onPipeData)\n pipe.once('end', () => {\n pipe.removeListener('data', onPipeData)\n util.destroy(pipe)\n })\n\n function onPipeData (chunk) {\n request.onBodySent(chunk)\n }\n\n return\n }\n\n let finished = false\n\n const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header })\n\n const onData = function (chunk) {\n if (finished) {\n return\n }\n\n try {\n if (!writer.write(chunk) && this.pause) {\n this.pause()\n }\n } catch (err) {\n util.destroy(this, err)\n }\n }\n const onDrain = function () {\n if (finished) {\n return\n }\n\n if (body.resume) {\n body.resume()\n }\n }\n const onAbort = function () {\n if (finished) {\n return\n }\n const err = new RequestAbortedError()\n queueMicrotask(() => onFinished(err))\n }\n const onFinished = function (err) {\n if (finished) {\n return\n }\n\n finished = true\n\n assert(socket.destroyed || (socket[kWriting] && client[kRunning] <= 1))\n\n socket\n .off('drain', onDrain)\n .off('error', onFinished)\n\n body\n .removeListener('data', onData)\n .removeListener('end', onFinished)\n .removeListener('error', onFinished)\n .removeListener('close', onAbort)\n\n if (!err) {\n try {\n writer.end()\n } catch (er) {\n err = er\n }\n }\n\n writer.destroy(err)\n\n if (err && (err.code !== 'UND_ERR_INFO' || err.message !== 'reset')) {\n util.destroy(body, err)\n } else {\n util.destroy(body)\n }\n }\n\n body\n .on('data', onData)\n .on('end', onFinished)\n .on('error', onFinished)\n .on('close', onAbort)\n\n if (body.resume) {\n body.resume()\n }\n\n socket\n .on('drain', onDrain)\n .on('error', onFinished)\n}\n\nasync function writeBlob ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {\n assert(contentLength === body.size, 'blob body must have content length')\n\n const isH2 = client[kHTTPConnVersion] === 'h2'\n try {\n if (contentLength != null && contentLength !== body.size) {\n throw new RequestContentLengthMismatchError()\n }\n\n const buffer = Buffer.from(await body.arrayBuffer())\n\n if (isH2) {\n h2stream.cork()\n h2stream.write(buffer)\n h2stream.uncork()\n } else {\n socket.cork()\n socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n socket.write(buffer)\n socket.uncork()\n }\n\n request.onBodySent(buffer)\n request.onRequestSent()\n\n if (!expectsPayload) {\n socket[kReset] = true\n }\n\n resume(client)\n } catch (err) {\n util.destroy(isH2 ? h2stream : socket, err)\n }\n}\n\nasync function writeIterable ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {\n assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined')\n\n let callback = null\n function onDrain () {\n if (callback) {\n const cb = callback\n callback = null\n cb()\n }\n }\n\n const waitForDrain = () => new Promise((resolve, reject) => {\n assert(callback === null)\n\n if (socket[kError]) {\n reject(socket[kError])\n } else {\n callback = resolve\n }\n })\n\n if (client[kHTTPConnVersion] === 'h2') {\n h2stream\n .on('close', onDrain)\n .on('drain', onDrain)\n\n try {\n // It's up to the user to somehow abort the async iterable.\n for await (const chunk of body) {\n if (socket[kError]) {\n throw socket[kError]\n }\n\n const res = h2stream.write(chunk)\n request.onBodySent(chunk)\n if (!res) {\n await waitForDrain()\n }\n }\n } catch (err) {\n h2stream.destroy(err)\n } finally {\n request.onRequestSent()\n h2stream.end()\n h2stream\n .off('close', onDrain)\n .off('drain', onDrain)\n }\n\n return\n }\n\n socket\n .on('close', onDrain)\n .on('drain', onDrain)\n\n const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header })\n try {\n // It's up to the user to somehow abort the async iterable.\n for await (const chunk of body) {\n if (socket[kError]) {\n throw socket[kError]\n }\n\n if (!writer.write(chunk)) {\n await waitForDrain()\n }\n }\n\n writer.end()\n } catch (err) {\n writer.destroy(err)\n } finally {\n socket\n .off('close', onDrain)\n .off('drain', onDrain)\n }\n}\n\nclass AsyncWriter {\n constructor ({ socket, request, contentLength, client, expectsPayload, header }) {\n this.socket = socket\n this.request = request\n this.contentLength = contentLength\n this.client = client\n this.bytesWritten = 0\n this.expectsPayload = expectsPayload\n this.header = header\n\n socket[kWriting] = true\n }\n\n write (chunk) {\n const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this\n\n if (socket[kError]) {\n throw socket[kError]\n }\n\n if (socket.destroyed) {\n return false\n }\n\n const len = Buffer.byteLength(chunk)\n if (!len) {\n return true\n }\n\n // We should defer writing chunks.\n if (contentLength !== null && bytesWritten + len > contentLength) {\n if (client[kStrictContentLength]) {\n throw new RequestContentLengthMismatchError()\n }\n\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n\n socket.cork()\n\n if (bytesWritten === 0) {\n if (!expectsPayload) {\n socket[kReset] = true\n }\n\n if (contentLength === null) {\n socket.write(`${header}transfer-encoding: chunked\\r\\n`, 'latin1')\n } else {\n socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n }\n }\n\n if (contentLength === null) {\n socket.write(`\\r\\n${len.toString(16)}\\r\\n`, 'latin1')\n }\n\n this.bytesWritten += len\n\n const ret = socket.write(chunk)\n\n socket.uncork()\n\n request.onBodySent(chunk)\n\n if (!ret) {\n if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {\n // istanbul ignore else: only for jest\n if (socket[kParser].timeout.refresh) {\n socket[kParser].timeout.refresh()\n }\n }\n }\n\n return ret\n }\n\n end () {\n const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this\n request.onRequestSent()\n\n socket[kWriting] = false\n\n if (socket[kError]) {\n throw socket[kError]\n }\n\n if (socket.destroyed) {\n return\n }\n\n if (bytesWritten === 0) {\n if (expectsPayload) {\n // https://tools.ietf.org/html/rfc7230#section-3.3.2\n // A user agent SHOULD send a Content-Length in a request message when\n // no Transfer-Encoding is sent and the request method defines a meaning\n // for an enclosed payload body.\n\n socket.write(`${header}content-length: 0\\r\\n\\r\\n`, 'latin1')\n } else {\n socket.write(`${header}\\r\\n`, 'latin1')\n }\n } else if (contentLength === null) {\n socket.write('\\r\\n0\\r\\n\\r\\n', 'latin1')\n }\n\n if (contentLength !== null && bytesWritten !== contentLength) {\n if (client[kStrictContentLength]) {\n throw new RequestContentLengthMismatchError()\n } else {\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n }\n\n if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {\n // istanbul ignore else: only for jest\n if (socket[kParser].timeout.refresh) {\n socket[kParser].timeout.refresh()\n }\n }\n\n resume(client)\n }\n\n destroy (err) {\n const { socket, client } = this\n\n socket[kWriting] = false\n\n if (err) {\n assert(client[kRunning] <= 1, 'pipeline should only contain this request')\n util.destroy(socket, err)\n }\n }\n}\n\nfunction errorRequest (client, request, err) {\n try {\n request.onError(err)\n assert(request.aborted)\n } catch (err) {\n client.emit('error', err)\n }\n}\n\nmodule.exports = Client\n","'use strict'\n\n/* istanbul ignore file: only for Node 12 */\n\nconst { kConnected, kSize } = require('../core/symbols')\n\nclass CompatWeakRef {\n constructor (value) {\n this.value = value\n }\n\n deref () {\n return this.value[kConnected] === 0 && this.value[kSize] === 0\n ? undefined\n : this.value\n }\n}\n\nclass CompatFinalizer {\n constructor (finalizer) {\n this.finalizer = finalizer\n }\n\n register (dispatcher, key) {\n if (dispatcher.on) {\n dispatcher.on('disconnect', () => {\n if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) {\n this.finalizer(key)\n }\n })\n }\n }\n}\n\nmodule.exports = function () {\n // FIXME: remove workaround when the Node bug is fixed\n // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308\n if (process.env.NODE_V8_COVERAGE) {\n return {\n WeakRef: CompatWeakRef,\n FinalizationRegistry: CompatFinalizer\n }\n }\n return {\n WeakRef: global.WeakRef || CompatWeakRef,\n FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer\n }\n}\n","'use strict'\n\n// https://wicg.github.io/cookie-store/#cookie-maximum-attribute-value-size\nconst maxAttributeValueSize = 1024\n\n// https://wicg.github.io/cookie-store/#cookie-maximum-name-value-pair-size\nconst maxNameValuePairSize = 4096\n\nmodule.exports = {\n maxAttributeValueSize,\n maxNameValuePairSize\n}\n","'use strict'\n\nconst { parseSetCookie } = require('./parse')\nconst { stringify, getHeadersList } = require('./util')\nconst { webidl } = require('../fetch/webidl')\nconst { Headers } = require('../fetch/headers')\n\n/**\n * @typedef {Object} Cookie\n * @property {string} name\n * @property {string} value\n * @property {Date|number|undefined} expires\n * @property {number|undefined} maxAge\n * @property {string|undefined} domain\n * @property {string|undefined} path\n * @property {boolean|undefined} secure\n * @property {boolean|undefined} httpOnly\n * @property {'Strict'|'Lax'|'None'} sameSite\n * @property {string[]} unparsed\n */\n\n/**\n * @param {Headers} headers\n * @returns {Record}\n */\nfunction getCookies (headers) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'getCookies' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n const cookie = headers.get('cookie')\n const out = {}\n\n if (!cookie) {\n return out\n }\n\n for (const piece of cookie.split(';')) {\n const [name, ...value] = piece.split('=')\n\n out[name.trim()] = value.join('=')\n }\n\n return out\n}\n\n/**\n * @param {Headers} headers\n * @param {string} name\n * @param {{ path?: string, domain?: string }|undefined} attributes\n * @returns {void}\n */\nfunction deleteCookie (headers, name, attributes) {\n webidl.argumentLengthCheck(arguments, 2, { header: 'deleteCookie' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n name = webidl.converters.DOMString(name)\n attributes = webidl.converters.DeleteCookieAttributes(attributes)\n\n // Matches behavior of\n // https://github.com/denoland/deno_std/blob/63827b16330b82489a04614027c33b7904e08be5/http/cookie.ts#L278\n setCookie(headers, {\n name,\n value: '',\n expires: new Date(0),\n ...attributes\n })\n}\n\n/**\n * @param {Headers} headers\n * @returns {Cookie[]}\n */\nfunction getSetCookies (headers) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'getSetCookies' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n const cookies = getHeadersList(headers).cookies\n\n if (!cookies) {\n return []\n }\n\n // In older versions of undici, cookies is a list of name:value.\n return cookies.map((pair) => parseSetCookie(Array.isArray(pair) ? pair[1] : pair))\n}\n\n/**\n * @param {Headers} headers\n * @param {Cookie} cookie\n * @returns {void}\n */\nfunction setCookie (headers, cookie) {\n webidl.argumentLengthCheck(arguments, 2, { header: 'setCookie' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n cookie = webidl.converters.Cookie(cookie)\n\n const str = stringify(cookie)\n\n if (str) {\n headers.append('Set-Cookie', stringify(cookie))\n }\n}\n\nwebidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'path',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'domain',\n defaultValue: null\n }\n])\n\nwebidl.converters.Cookie = webidl.dictionaryConverter([\n {\n converter: webidl.converters.DOMString,\n key: 'name'\n },\n {\n converter: webidl.converters.DOMString,\n key: 'value'\n },\n {\n converter: webidl.nullableConverter((value) => {\n if (typeof value === 'number') {\n return webidl.converters['unsigned long long'](value)\n }\n\n return new Date(value)\n }),\n key: 'expires',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters['long long']),\n key: 'maxAge',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'domain',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'path',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.boolean),\n key: 'secure',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.boolean),\n key: 'httpOnly',\n defaultValue: null\n },\n {\n converter: webidl.converters.USVString,\n key: 'sameSite',\n allowedValues: ['Strict', 'Lax', 'None']\n },\n {\n converter: webidl.sequenceConverter(webidl.converters.DOMString),\n key: 'unparsed',\n defaultValue: []\n }\n])\n\nmodule.exports = {\n getCookies,\n deleteCookie,\n getSetCookies,\n setCookie\n}\n","'use strict'\n\nconst { maxNameValuePairSize, maxAttributeValueSize } = require('./constants')\nconst { isCTLExcludingHtab } = require('./util')\nconst { collectASequenceOfCodePointsFast } = require('../fetch/dataURL')\nconst assert = require('assert')\n\n/**\n * @description Parses the field-value attributes of a set-cookie header string.\n * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4\n * @param {string} header\n * @returns if the header is invalid, null will be returned\n */\nfunction parseSetCookie (header) {\n // 1. If the set-cookie-string contains a %x00-08 / %x0A-1F / %x7F\n // character (CTL characters excluding HTAB): Abort these steps and\n // ignore the set-cookie-string entirely.\n if (isCTLExcludingHtab(header)) {\n return null\n }\n\n let nameValuePair = ''\n let unparsedAttributes = ''\n let name = ''\n let value = ''\n\n // 2. If the set-cookie-string contains a %x3B (\";\") character:\n if (header.includes(';')) {\n // 1. The name-value-pair string consists of the characters up to,\n // but not including, the first %x3B (\";\"), and the unparsed-\n // attributes consist of the remainder of the set-cookie-string\n // (including the %x3B (\";\") in question).\n const position = { position: 0 }\n\n nameValuePair = collectASequenceOfCodePointsFast(';', header, position)\n unparsedAttributes = header.slice(position.position)\n } else {\n // Otherwise:\n\n // 1. The name-value-pair string consists of all the characters\n // contained in the set-cookie-string, and the unparsed-\n // attributes is the empty string.\n nameValuePair = header\n }\n\n // 3. If the name-value-pair string lacks a %x3D (\"=\") character, then\n // the name string is empty, and the value string is the value of\n // name-value-pair.\n if (!nameValuePair.includes('=')) {\n value = nameValuePair\n } else {\n // Otherwise, the name string consists of the characters up to, but\n // not including, the first %x3D (\"=\") character, and the (possibly\n // empty) value string consists of the characters after the first\n // %x3D (\"=\") character.\n const position = { position: 0 }\n name = collectASequenceOfCodePointsFast(\n '=',\n nameValuePair,\n position\n )\n value = nameValuePair.slice(position.position + 1)\n }\n\n // 4. Remove any leading or trailing WSP characters from the name\n // string and the value string.\n name = name.trim()\n value = value.trim()\n\n // 5. If the sum of the lengths of the name string and the value string\n // is more than 4096 octets, abort these steps and ignore the set-\n // cookie-string entirely.\n if (name.length + value.length > maxNameValuePairSize) {\n return null\n }\n\n // 6. The cookie-name is the name string, and the cookie-value is the\n // value string.\n return {\n name, value, ...parseUnparsedAttributes(unparsedAttributes)\n }\n}\n\n/**\n * Parses the remaining attributes of a set-cookie header\n * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4\n * @param {string} unparsedAttributes\n * @param {[Object.]={}} cookieAttributeList\n */\nfunction parseUnparsedAttributes (unparsedAttributes, cookieAttributeList = {}) {\n // 1. If the unparsed-attributes string is empty, skip the rest of\n // these steps.\n if (unparsedAttributes.length === 0) {\n return cookieAttributeList\n }\n\n // 2. Discard the first character of the unparsed-attributes (which\n // will be a %x3B (\";\") character).\n assert(unparsedAttributes[0] === ';')\n unparsedAttributes = unparsedAttributes.slice(1)\n\n let cookieAv = ''\n\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n if (unparsedAttributes.includes(';')) {\n // 1. Consume the characters of the unparsed-attributes up to, but\n // not including, the first %x3B (\";\") character.\n cookieAv = collectASequenceOfCodePointsFast(\n ';',\n unparsedAttributes,\n { position: 0 }\n )\n unparsedAttributes = unparsedAttributes.slice(cookieAv.length)\n } else {\n // Otherwise:\n\n // 1. Consume the remainder of the unparsed-attributes.\n cookieAv = unparsedAttributes\n unparsedAttributes = ''\n }\n\n // Let the cookie-av string be the characters consumed in this step.\n\n let attributeName = ''\n let attributeValue = ''\n\n // 4. If the cookie-av string contains a %x3D (\"=\") character:\n if (cookieAv.includes('=')) {\n // 1. The (possibly empty) attribute-name string consists of the\n // characters up to, but not including, the first %x3D (\"=\")\n // character, and the (possibly empty) attribute-value string\n // consists of the characters after the first %x3D (\"=\")\n // character.\n const position = { position: 0 }\n\n attributeName = collectASequenceOfCodePointsFast(\n '=',\n cookieAv,\n position\n )\n attributeValue = cookieAv.slice(position.position + 1)\n } else {\n // Otherwise:\n\n // 1. The attribute-name string consists of the entire cookie-av\n // string, and the attribute-value string is empty.\n attributeName = cookieAv\n }\n\n // 5. Remove any leading or trailing WSP characters from the attribute-\n // name string and the attribute-value string.\n attributeName = attributeName.trim()\n attributeValue = attributeValue.trim()\n\n // 6. If the attribute-value is longer than 1024 octets, ignore the\n // cookie-av string and return to Step 1 of this algorithm.\n if (attributeValue.length > maxAttributeValueSize) {\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n }\n\n // 7. Process the attribute-name and attribute-value according to the\n // requirements in the following subsections. (Notice that\n // attributes with unrecognized attribute-names are ignored.)\n const attributeNameLowercase = attributeName.toLowerCase()\n\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.1\n // If the attribute-name case-insensitively matches the string\n // \"Expires\", the user agent MUST process the cookie-av as follows.\n if (attributeNameLowercase === 'expires') {\n // 1. Let the expiry-time be the result of parsing the attribute-value\n // as cookie-date (see Section 5.1.1).\n const expiryTime = new Date(attributeValue)\n\n // 2. If the attribute-value failed to parse as a cookie date, ignore\n // the cookie-av.\n\n cookieAttributeList.expires = expiryTime\n } else if (attributeNameLowercase === 'max-age') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.2\n // If the attribute-name case-insensitively matches the string \"Max-\n // Age\", the user agent MUST process the cookie-av as follows.\n\n // 1. If the first character of the attribute-value is not a DIGIT or a\n // \"-\" character, ignore the cookie-av.\n const charCode = attributeValue.charCodeAt(0)\n\n if ((charCode < 48 || charCode > 57) && attributeValue[0] !== '-') {\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n }\n\n // 2. If the remainder of attribute-value contains a non-DIGIT\n // character, ignore the cookie-av.\n if (!/^\\d+$/.test(attributeValue)) {\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n }\n\n // 3. Let delta-seconds be the attribute-value converted to an integer.\n const deltaSeconds = Number(attributeValue)\n\n // 4. Let cookie-age-limit be the maximum age of the cookie (which\n // SHOULD be 400 days or less, see Section 4.1.2.2).\n\n // 5. Set delta-seconds to the smaller of its present value and cookie-\n // age-limit.\n // deltaSeconds = Math.min(deltaSeconds * 1000, maxExpiresMs)\n\n // 6. If delta-seconds is less than or equal to zero (0), let expiry-\n // time be the earliest representable date and time. Otherwise, let\n // the expiry-time be the current date and time plus delta-seconds\n // seconds.\n // const expiryTime = deltaSeconds <= 0 ? Date.now() : Date.now() + deltaSeconds\n\n // 7. Append an attribute to the cookie-attribute-list with an\n // attribute-name of Max-Age and an attribute-value of expiry-time.\n cookieAttributeList.maxAge = deltaSeconds\n } else if (attributeNameLowercase === 'domain') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.3\n // If the attribute-name case-insensitively matches the string \"Domain\",\n // the user agent MUST process the cookie-av as follows.\n\n // 1. Let cookie-domain be the attribute-value.\n let cookieDomain = attributeValue\n\n // 2. If cookie-domain starts with %x2E (\".\"), let cookie-domain be\n // cookie-domain without its leading %x2E (\".\").\n if (cookieDomain[0] === '.') {\n cookieDomain = cookieDomain.slice(1)\n }\n\n // 3. Convert the cookie-domain to lower case.\n cookieDomain = cookieDomain.toLowerCase()\n\n // 4. Append an attribute to the cookie-attribute-list with an\n // attribute-name of Domain and an attribute-value of cookie-domain.\n cookieAttributeList.domain = cookieDomain\n } else if (attributeNameLowercase === 'path') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.4\n // If the attribute-name case-insensitively matches the string \"Path\",\n // the user agent MUST process the cookie-av as follows.\n\n // 1. If the attribute-value is empty or if the first character of the\n // attribute-value is not %x2F (\"/\"):\n let cookiePath = ''\n if (attributeValue.length === 0 || attributeValue[0] !== '/') {\n // 1. Let cookie-path be the default-path.\n cookiePath = '/'\n } else {\n // Otherwise:\n\n // 1. Let cookie-path be the attribute-value.\n cookiePath = attributeValue\n }\n\n // 2. Append an attribute to the cookie-attribute-list with an\n // attribute-name of Path and an attribute-value of cookie-path.\n cookieAttributeList.path = cookiePath\n } else if (attributeNameLowercase === 'secure') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.5\n // If the attribute-name case-insensitively matches the string \"Secure\",\n // the user agent MUST append an attribute to the cookie-attribute-list\n // with an attribute-name of Secure and an empty attribute-value.\n\n cookieAttributeList.secure = true\n } else if (attributeNameLowercase === 'httponly') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.6\n // If the attribute-name case-insensitively matches the string\n // \"HttpOnly\", the user agent MUST append an attribute to the cookie-\n // attribute-list with an attribute-name of HttpOnly and an empty\n // attribute-value.\n\n cookieAttributeList.httpOnly = true\n } else if (attributeNameLowercase === 'samesite') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.7\n // If the attribute-name case-insensitively matches the string\n // \"SameSite\", the user agent MUST process the cookie-av as follows:\n\n // 1. Let enforcement be \"Default\".\n let enforcement = 'Default'\n\n const attributeValueLowercase = attributeValue.toLowerCase()\n // 2. If cookie-av's attribute-value is a case-insensitive match for\n // \"None\", set enforcement to \"None\".\n if (attributeValueLowercase.includes('none')) {\n enforcement = 'None'\n }\n\n // 3. If cookie-av's attribute-value is a case-insensitive match for\n // \"Strict\", set enforcement to \"Strict\".\n if (attributeValueLowercase.includes('strict')) {\n enforcement = 'Strict'\n }\n\n // 4. If cookie-av's attribute-value is a case-insensitive match for\n // \"Lax\", set enforcement to \"Lax\".\n if (attributeValueLowercase.includes('lax')) {\n enforcement = 'Lax'\n }\n\n // 5. Append an attribute to the cookie-attribute-list with an\n // attribute-name of \"SameSite\" and an attribute-value of\n // enforcement.\n cookieAttributeList.sameSite = enforcement\n } else {\n cookieAttributeList.unparsed ??= []\n\n cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`)\n }\n\n // 8. Return to Step 1 of this algorithm.\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n}\n\nmodule.exports = {\n parseSetCookie,\n parseUnparsedAttributes\n}\n","'use strict'\n\nconst assert = require('assert')\nconst { kHeadersList } = require('../core/symbols')\n\nfunction isCTLExcludingHtab (value) {\n if (value.length === 0) {\n return false\n }\n\n for (const char of value) {\n const code = char.charCodeAt(0)\n\n if (\n (code >= 0x00 || code <= 0x08) ||\n (code >= 0x0A || code <= 0x1F) ||\n code === 0x7F\n ) {\n return false\n }\n }\n}\n\n/**\n CHAR = \n token = 1*\n separators = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n | \",\" | \";\" | \":\" | \"\\\" | <\">\n | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n | \"{\" | \"}\" | SP | HT\n * @param {string} name\n */\nfunction validateCookieName (name) {\n for (const char of name) {\n const code = char.charCodeAt(0)\n\n if (\n (code <= 0x20 || code > 0x7F) ||\n char === '(' ||\n char === ')' ||\n char === '>' ||\n char === '<' ||\n char === '@' ||\n char === ',' ||\n char === ';' ||\n char === ':' ||\n char === '\\\\' ||\n char === '\"' ||\n char === '/' ||\n char === '[' ||\n char === ']' ||\n char === '?' ||\n char === '=' ||\n char === '{' ||\n char === '}'\n ) {\n throw new Error('Invalid cookie name')\n }\n }\n}\n\n/**\n cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )\n cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\n ; US-ASCII characters excluding CTLs,\n ; whitespace DQUOTE, comma, semicolon,\n ; and backslash\n * @param {string} value\n */\nfunction validateCookieValue (value) {\n for (const char of value) {\n const code = char.charCodeAt(0)\n\n if (\n code < 0x21 || // exclude CTLs (0-31)\n code === 0x22 ||\n code === 0x2C ||\n code === 0x3B ||\n code === 0x5C ||\n code > 0x7E // non-ascii\n ) {\n throw new Error('Invalid header value')\n }\n }\n}\n\n/**\n * path-value = \n * @param {string} path\n */\nfunction validateCookiePath (path) {\n for (const char of path) {\n const code = char.charCodeAt(0)\n\n if (code < 0x21 || char === ';') {\n throw new Error('Invalid cookie path')\n }\n }\n}\n\n/**\n * I have no idea why these values aren't allowed to be honest,\n * but Deno tests these. - Khafra\n * @param {string} domain\n */\nfunction validateCookieDomain (domain) {\n if (\n domain.startsWith('-') ||\n domain.endsWith('.') ||\n domain.endsWith('-')\n ) {\n throw new Error('Invalid cookie domain')\n }\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc7231#section-7.1.1.1\n * @param {number|Date} date\n IMF-fixdate = day-name \",\" SP date1 SP time-of-day SP GMT\n ; fixed length/zone/capitalization subset of the format\n ; see Section 3.3 of [RFC5322]\n\n day-name = %x4D.6F.6E ; \"Mon\", case-sensitive\n / %x54.75.65 ; \"Tue\", case-sensitive\n / %x57.65.64 ; \"Wed\", case-sensitive\n / %x54.68.75 ; \"Thu\", case-sensitive\n / %x46.72.69 ; \"Fri\", case-sensitive\n / %x53.61.74 ; \"Sat\", case-sensitive\n / %x53.75.6E ; \"Sun\", case-sensitive\n date1 = day SP month SP year\n ; e.g., 02 Jun 1982\n\n day = 2DIGIT\n month = %x4A.61.6E ; \"Jan\", case-sensitive\n / %x46.65.62 ; \"Feb\", case-sensitive\n / %x4D.61.72 ; \"Mar\", case-sensitive\n / %x41.70.72 ; \"Apr\", case-sensitive\n / %x4D.61.79 ; \"May\", case-sensitive\n / %x4A.75.6E ; \"Jun\", case-sensitive\n / %x4A.75.6C ; \"Jul\", case-sensitive\n / %x41.75.67 ; \"Aug\", case-sensitive\n / %x53.65.70 ; \"Sep\", case-sensitive\n / %x4F.63.74 ; \"Oct\", case-sensitive\n / %x4E.6F.76 ; \"Nov\", case-sensitive\n / %x44.65.63 ; \"Dec\", case-sensitive\n year = 4DIGIT\n\n GMT = %x47.4D.54 ; \"GMT\", case-sensitive\n\n time-of-day = hour \":\" minute \":\" second\n ; 00:00:00 - 23:59:60 (leap second)\n\n hour = 2DIGIT\n minute = 2DIGIT\n second = 2DIGIT\n */\nfunction toIMFDate (date) {\n if (typeof date === 'number') {\n date = new Date(date)\n }\n\n const days = [\n 'Sun', 'Mon', 'Tue', 'Wed',\n 'Thu', 'Fri', 'Sat'\n ]\n\n const months = [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\n ]\n\n const dayName = days[date.getUTCDay()]\n const day = date.getUTCDate().toString().padStart(2, '0')\n const month = months[date.getUTCMonth()]\n const year = date.getUTCFullYear()\n const hour = date.getUTCHours().toString().padStart(2, '0')\n const minute = date.getUTCMinutes().toString().padStart(2, '0')\n const second = date.getUTCSeconds().toString().padStart(2, '0')\n\n return `${dayName}, ${day} ${month} ${year} ${hour}:${minute}:${second} GMT`\n}\n\n/**\n max-age-av = \"Max-Age=\" non-zero-digit *DIGIT\n ; In practice, both expires-av and max-age-av\n ; are limited to dates representable by the\n ; user agent.\n * @param {number} maxAge\n */\nfunction validateCookieMaxAge (maxAge) {\n if (maxAge < 0) {\n throw new Error('Invalid cookie max-age')\n }\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc6265#section-4.1.1\n * @param {import('./index').Cookie} cookie\n */\nfunction stringify (cookie) {\n if (cookie.name.length === 0) {\n return null\n }\n\n validateCookieName(cookie.name)\n validateCookieValue(cookie.value)\n\n const out = [`${cookie.name}=${cookie.value}`]\n\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.1\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.2\n if (cookie.name.startsWith('__Secure-')) {\n cookie.secure = true\n }\n\n if (cookie.name.startsWith('__Host-')) {\n cookie.secure = true\n cookie.domain = null\n cookie.path = '/'\n }\n\n if (cookie.secure) {\n out.push('Secure')\n }\n\n if (cookie.httpOnly) {\n out.push('HttpOnly')\n }\n\n if (typeof cookie.maxAge === 'number') {\n validateCookieMaxAge(cookie.maxAge)\n out.push(`Max-Age=${cookie.maxAge}`)\n }\n\n if (cookie.domain) {\n validateCookieDomain(cookie.domain)\n out.push(`Domain=${cookie.domain}`)\n }\n\n if (cookie.path) {\n validateCookiePath(cookie.path)\n out.push(`Path=${cookie.path}`)\n }\n\n if (cookie.expires && cookie.expires.toString() !== 'Invalid Date') {\n out.push(`Expires=${toIMFDate(cookie.expires)}`)\n }\n\n if (cookie.sameSite) {\n out.push(`SameSite=${cookie.sameSite}`)\n }\n\n for (const part of cookie.unparsed) {\n if (!part.includes('=')) {\n throw new Error('Invalid unparsed')\n }\n\n const [key, ...value] = part.split('=')\n\n out.push(`${key.trim()}=${value.join('=')}`)\n }\n\n return out.join('; ')\n}\n\nlet kHeadersListNode\n\nfunction getHeadersList (headers) {\n if (headers[kHeadersList]) {\n return headers[kHeadersList]\n }\n\n if (!kHeadersListNode) {\n kHeadersListNode = Object.getOwnPropertySymbols(headers).find(\n (symbol) => symbol.description === 'headers list'\n )\n\n assert(kHeadersListNode, 'Headers cannot be parsed')\n }\n\n const headersList = headers[kHeadersListNode]\n assert(headersList)\n\n return headersList\n}\n\nmodule.exports = {\n isCTLExcludingHtab,\n stringify,\n getHeadersList\n}\n","'use strict'\n\nconst net = require('net')\nconst assert = require('assert')\nconst util = require('./util')\nconst { InvalidArgumentError, ConnectTimeoutError } = require('./errors')\n\nlet tls // include tls conditionally since it is not always available\n\n// TODO: session re-use does not wait for the first\n// connection to resolve the session and might therefore\n// resolve the same servername multiple times even when\n// re-use is enabled.\n\nlet SessionCache\n// FIXME: remove workaround when the Node bug is fixed\n// https://github.com/nodejs/node/issues/49344#issuecomment-1741776308\nif (global.FinalizationRegistry && !process.env.NODE_V8_COVERAGE) {\n SessionCache = class WeakSessionCache {\n constructor (maxCachedSessions) {\n this._maxCachedSessions = maxCachedSessions\n this._sessionCache = new Map()\n this._sessionRegistry = new global.FinalizationRegistry((key) => {\n if (this._sessionCache.size < this._maxCachedSessions) {\n return\n }\n\n const ref = this._sessionCache.get(key)\n if (ref !== undefined && ref.deref() === undefined) {\n this._sessionCache.delete(key)\n }\n })\n }\n\n get (sessionKey) {\n const ref = this._sessionCache.get(sessionKey)\n return ref ? ref.deref() : null\n }\n\n set (sessionKey, session) {\n if (this._maxCachedSessions === 0) {\n return\n }\n\n this._sessionCache.set(sessionKey, new WeakRef(session))\n this._sessionRegistry.register(session, sessionKey)\n }\n }\n} else {\n SessionCache = class SimpleSessionCache {\n constructor (maxCachedSessions) {\n this._maxCachedSessions = maxCachedSessions\n this._sessionCache = new Map()\n }\n\n get (sessionKey) {\n return this._sessionCache.get(sessionKey)\n }\n\n set (sessionKey, session) {\n if (this._maxCachedSessions === 0) {\n return\n }\n\n if (this._sessionCache.size >= this._maxCachedSessions) {\n // remove the oldest session\n const { value: oldestKey } = this._sessionCache.keys().next()\n this._sessionCache.delete(oldestKey)\n }\n\n this._sessionCache.set(sessionKey, session)\n }\n }\n}\n\nfunction buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, ...opts }) {\n if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) {\n throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero')\n }\n\n const options = { path: socketPath, ...opts }\n const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions)\n timeout = timeout == null ? 10e3 : timeout\n allowH2 = allowH2 != null ? allowH2 : false\n return function connect ({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) {\n let socket\n if (protocol === 'https:') {\n if (!tls) {\n tls = require('tls')\n }\n servername = servername || options.servername || util.getServerName(host) || null\n\n const sessionKey = servername || hostname\n const session = sessionCache.get(sessionKey) || null\n\n assert(sessionKey)\n\n socket = tls.connect({\n highWaterMark: 16384, // TLS in node can't have bigger HWM anyway...\n ...options,\n servername,\n session,\n localAddress,\n // TODO(HTTP/2): Add support for h2c\n ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'],\n socket: httpSocket, // upgrade socket connection\n port: port || 443,\n host: hostname\n })\n\n socket\n .on('session', function (session) {\n // TODO (fix): Can a session become invalid once established? Don't think so?\n sessionCache.set(sessionKey, session)\n })\n } else {\n assert(!httpSocket, 'httpSocket can only be sent on TLS update')\n socket = net.connect({\n highWaterMark: 64 * 1024, // Same as nodejs fs streams.\n ...options,\n localAddress,\n port: port || 80,\n host: hostname\n })\n }\n\n // Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket\n if (options.keepAlive == null || options.keepAlive) {\n const keepAliveInitialDelay = options.keepAliveInitialDelay === undefined ? 60e3 : options.keepAliveInitialDelay\n socket.setKeepAlive(true, keepAliveInitialDelay)\n }\n\n const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout)\n\n socket\n .setNoDelay(true)\n .once(protocol === 'https:' ? 'secureConnect' : 'connect', function () {\n cancelTimeout()\n\n if (callback) {\n const cb = callback\n callback = null\n cb(null, this)\n }\n })\n .on('error', function (err) {\n cancelTimeout()\n\n if (callback) {\n const cb = callback\n callback = null\n cb(err)\n }\n })\n\n return socket\n }\n}\n\nfunction setupTimeout (onConnectTimeout, timeout) {\n if (!timeout) {\n return () => {}\n }\n\n let s1 = null\n let s2 = null\n const timeoutId = setTimeout(() => {\n // setImmediate is added to make sure that we priotorise socket error events over timeouts\n s1 = setImmediate(() => {\n if (process.platform === 'win32') {\n // Windows needs an extra setImmediate probably due to implementation differences in the socket logic\n s2 = setImmediate(() => onConnectTimeout())\n } else {\n onConnectTimeout()\n }\n })\n }, timeout)\n return () => {\n clearTimeout(timeoutId)\n clearImmediate(s1)\n clearImmediate(s2)\n }\n}\n\nfunction onConnectTimeout (socket) {\n util.destroy(socket, new ConnectTimeoutError())\n}\n\nmodule.exports = buildConnector\n","'use strict'\n\n/** @type {Record} */\nconst headerNameLowerCasedRecord = {}\n\n// https://developer.mozilla.org/docs/Web/HTTP/Headers\nconst wellknownHeaderNames = [\n 'Accept',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Ranges',\n 'Access-Control-Allow-Credentials',\n 'Access-Control-Allow-Headers',\n 'Access-Control-Allow-Methods',\n 'Access-Control-Allow-Origin',\n 'Access-Control-Expose-Headers',\n 'Access-Control-Max-Age',\n 'Access-Control-Request-Headers',\n 'Access-Control-Request-Method',\n 'Age',\n 'Allow',\n 'Alt-Svc',\n 'Alt-Used',\n 'Authorization',\n 'Cache-Control',\n 'Clear-Site-Data',\n 'Connection',\n 'Content-Disposition',\n 'Content-Encoding',\n 'Content-Language',\n 'Content-Length',\n 'Content-Location',\n 'Content-Range',\n 'Content-Security-Policy',\n 'Content-Security-Policy-Report-Only',\n 'Content-Type',\n 'Cookie',\n 'Cross-Origin-Embedder-Policy',\n 'Cross-Origin-Opener-Policy',\n 'Cross-Origin-Resource-Policy',\n 'Date',\n 'Device-Memory',\n 'Downlink',\n 'ECT',\n 'ETag',\n 'Expect',\n 'Expect-CT',\n 'Expires',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Keep-Alive',\n 'Last-Modified',\n 'Link',\n 'Location',\n 'Max-Forwards',\n 'Origin',\n 'Permissions-Policy',\n 'Pragma',\n 'Proxy-Authenticate',\n 'Proxy-Authorization',\n 'RTT',\n 'Range',\n 'Referer',\n 'Referrer-Policy',\n 'Refresh',\n 'Retry-After',\n 'Sec-WebSocket-Accept',\n 'Sec-WebSocket-Extensions',\n 'Sec-WebSocket-Key',\n 'Sec-WebSocket-Protocol',\n 'Sec-WebSocket-Version',\n 'Server',\n 'Server-Timing',\n 'Service-Worker-Allowed',\n 'Service-Worker-Navigation-Preload',\n 'Set-Cookie',\n 'SourceMap',\n 'Strict-Transport-Security',\n 'Supports-Loading-Mode',\n 'TE',\n 'Timing-Allow-Origin',\n 'Trailer',\n 'Transfer-Encoding',\n 'Upgrade',\n 'Upgrade-Insecure-Requests',\n 'User-Agent',\n 'Vary',\n 'Via',\n 'WWW-Authenticate',\n 'X-Content-Type-Options',\n 'X-DNS-Prefetch-Control',\n 'X-Frame-Options',\n 'X-Permitted-Cross-Domain-Policies',\n 'X-Powered-By',\n 'X-Requested-With',\n 'X-XSS-Protection'\n]\n\nfor (let i = 0; i < wellknownHeaderNames.length; ++i) {\n const key = wellknownHeaderNames[i]\n const lowerCasedKey = key.toLowerCase()\n headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] =\n lowerCasedKey\n}\n\n// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.\nObject.setPrototypeOf(headerNameLowerCasedRecord, null)\n\nmodule.exports = {\n wellknownHeaderNames,\n headerNameLowerCasedRecord\n}\n","'use strict'\n\nclass UndiciError extends Error {\n constructor (message) {\n super(message)\n this.name = 'UndiciError'\n this.code = 'UND_ERR'\n }\n}\n\nclass ConnectTimeoutError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ConnectTimeoutError)\n this.name = 'ConnectTimeoutError'\n this.message = message || 'Connect Timeout Error'\n this.code = 'UND_ERR_CONNECT_TIMEOUT'\n }\n}\n\nclass HeadersTimeoutError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, HeadersTimeoutError)\n this.name = 'HeadersTimeoutError'\n this.message = message || 'Headers Timeout Error'\n this.code = 'UND_ERR_HEADERS_TIMEOUT'\n }\n}\n\nclass HeadersOverflowError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, HeadersOverflowError)\n this.name = 'HeadersOverflowError'\n this.message = message || 'Headers Overflow Error'\n this.code = 'UND_ERR_HEADERS_OVERFLOW'\n }\n}\n\nclass BodyTimeoutError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, BodyTimeoutError)\n this.name = 'BodyTimeoutError'\n this.message = message || 'Body Timeout Error'\n this.code = 'UND_ERR_BODY_TIMEOUT'\n }\n}\n\nclass ResponseStatusCodeError extends UndiciError {\n constructor (message, statusCode, headers, body) {\n super(message)\n Error.captureStackTrace(this, ResponseStatusCodeError)\n this.name = 'ResponseStatusCodeError'\n this.message = message || 'Response Status Code Error'\n this.code = 'UND_ERR_RESPONSE_STATUS_CODE'\n this.body = body\n this.status = statusCode\n this.statusCode = statusCode\n this.headers = headers\n }\n}\n\nclass InvalidArgumentError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, InvalidArgumentError)\n this.name = 'InvalidArgumentError'\n this.message = message || 'Invalid Argument Error'\n this.code = 'UND_ERR_INVALID_ARG'\n }\n}\n\nclass InvalidReturnValueError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, InvalidReturnValueError)\n this.name = 'InvalidReturnValueError'\n this.message = message || 'Invalid Return Value Error'\n this.code = 'UND_ERR_INVALID_RETURN_VALUE'\n }\n}\n\nclass RequestAbortedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, RequestAbortedError)\n this.name = 'AbortError'\n this.message = message || 'Request aborted'\n this.code = 'UND_ERR_ABORTED'\n }\n}\n\nclass InformationalError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, InformationalError)\n this.name = 'InformationalError'\n this.message = message || 'Request information'\n this.code = 'UND_ERR_INFO'\n }\n}\n\nclass RequestContentLengthMismatchError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, RequestContentLengthMismatchError)\n this.name = 'RequestContentLengthMismatchError'\n this.message = message || 'Request body length does not match content-length header'\n this.code = 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH'\n }\n}\n\nclass ResponseContentLengthMismatchError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ResponseContentLengthMismatchError)\n this.name = 'ResponseContentLengthMismatchError'\n this.message = message || 'Response body length does not match content-length header'\n this.code = 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH'\n }\n}\n\nclass ClientDestroyedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ClientDestroyedError)\n this.name = 'ClientDestroyedError'\n this.message = message || 'The client is destroyed'\n this.code = 'UND_ERR_DESTROYED'\n }\n}\n\nclass ClientClosedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ClientClosedError)\n this.name = 'ClientClosedError'\n this.message = message || 'The client is closed'\n this.code = 'UND_ERR_CLOSED'\n }\n}\n\nclass SocketError extends UndiciError {\n constructor (message, socket) {\n super(message)\n Error.captureStackTrace(this, SocketError)\n this.name = 'SocketError'\n this.message = message || 'Socket error'\n this.code = 'UND_ERR_SOCKET'\n this.socket = socket\n }\n}\n\nclass NotSupportedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, NotSupportedError)\n this.name = 'NotSupportedError'\n this.message = message || 'Not supported error'\n this.code = 'UND_ERR_NOT_SUPPORTED'\n }\n}\n\nclass BalancedPoolMissingUpstreamError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, NotSupportedError)\n this.name = 'MissingUpstreamError'\n this.message = message || 'No upstream has been added to the BalancedPool'\n this.code = 'UND_ERR_BPL_MISSING_UPSTREAM'\n }\n}\n\nclass HTTPParserError extends Error {\n constructor (message, code, data) {\n super(message)\n Error.captureStackTrace(this, HTTPParserError)\n this.name = 'HTTPParserError'\n this.code = code ? `HPE_${code}` : undefined\n this.data = data ? data.toString() : undefined\n }\n}\n\nclass ResponseExceededMaxSizeError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ResponseExceededMaxSizeError)\n this.name = 'ResponseExceededMaxSizeError'\n this.message = message || 'Response content exceeded max size'\n this.code = 'UND_ERR_RES_EXCEEDED_MAX_SIZE'\n }\n}\n\nclass RequestRetryError extends UndiciError {\n constructor (message, code, { headers, data }) {\n super(message)\n Error.captureStackTrace(this, RequestRetryError)\n this.name = 'RequestRetryError'\n this.message = message || 'Request retry error'\n this.code = 'UND_ERR_REQ_RETRY'\n this.statusCode = code\n this.data = data\n this.headers = headers\n }\n}\n\nmodule.exports = {\n HTTPParserError,\n UndiciError,\n HeadersTimeoutError,\n HeadersOverflowError,\n BodyTimeoutError,\n RequestContentLengthMismatchError,\n ConnectTimeoutError,\n ResponseStatusCodeError,\n InvalidArgumentError,\n InvalidReturnValueError,\n RequestAbortedError,\n ClientDestroyedError,\n ClientClosedError,\n InformationalError,\n SocketError,\n NotSupportedError,\n ResponseContentLengthMismatchError,\n BalancedPoolMissingUpstreamError,\n ResponseExceededMaxSizeError,\n RequestRetryError\n}\n","'use strict'\n\nconst {\n InvalidArgumentError,\n NotSupportedError\n} = require('./errors')\nconst assert = require('assert')\nconst { kHTTP2BuildRequest, kHTTP2CopyHeaders, kHTTP1BuildRequest } = require('./symbols')\nconst util = require('./util')\n\n// tokenRegExp and headerCharRegex have been lifted from\n// https://github.com/nodejs/node/blob/main/lib/_http_common.js\n\n/**\n * Verifies that the given val is a valid HTTP token\n * per the rules defined in RFC 7230\n * See https://tools.ietf.org/html/rfc7230#section-3.2.6\n */\nconst tokenRegExp = /^[\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]+$/\n\n/**\n * Matches if val contains an invalid field-vchar\n * field-value = *( field-content / obs-fold )\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n */\nconst headerCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/\n\n// Verifies that a given path is valid does not contain control chars \\x00 to \\x20\nconst invalidPathRegex = /[^\\u0021-\\u00ff]/\n\nconst kHandler = Symbol('handler')\n\nconst channels = {}\n\nlet extractBody\n\ntry {\n const diagnosticsChannel = require('diagnostics_channel')\n channels.create = diagnosticsChannel.channel('undici:request:create')\n channels.bodySent = diagnosticsChannel.channel('undici:request:bodySent')\n channels.headers = diagnosticsChannel.channel('undici:request:headers')\n channels.trailers = diagnosticsChannel.channel('undici:request:trailers')\n channels.error = diagnosticsChannel.channel('undici:request:error')\n} catch {\n channels.create = { hasSubscribers: false }\n channels.bodySent = { hasSubscribers: false }\n channels.headers = { hasSubscribers: false }\n channels.trailers = { hasSubscribers: false }\n channels.error = { hasSubscribers: false }\n}\n\nclass Request {\n constructor (origin, {\n path,\n method,\n body,\n headers,\n query,\n idempotent,\n blocking,\n upgrade,\n headersTimeout,\n bodyTimeout,\n reset,\n throwOnError,\n expectContinue\n }, handler) {\n if (typeof path !== 'string') {\n throw new InvalidArgumentError('path must be a string')\n } else if (\n path[0] !== '/' &&\n !(path.startsWith('http://') || path.startsWith('https://')) &&\n method !== 'CONNECT'\n ) {\n throw new InvalidArgumentError('path must be an absolute URL or start with a slash')\n } else if (invalidPathRegex.exec(path) !== null) {\n throw new InvalidArgumentError('invalid request path')\n }\n\n if (typeof method !== 'string') {\n throw new InvalidArgumentError('method must be a string')\n } else if (tokenRegExp.exec(method) === null) {\n throw new InvalidArgumentError('invalid request method')\n }\n\n if (upgrade && typeof upgrade !== 'string') {\n throw new InvalidArgumentError('upgrade must be a string')\n }\n\n if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) {\n throw new InvalidArgumentError('invalid headersTimeout')\n }\n\n if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) {\n throw new InvalidArgumentError('invalid bodyTimeout')\n }\n\n if (reset != null && typeof reset !== 'boolean') {\n throw new InvalidArgumentError('invalid reset')\n }\n\n if (expectContinue != null && typeof expectContinue !== 'boolean') {\n throw new InvalidArgumentError('invalid expectContinue')\n }\n\n this.headersTimeout = headersTimeout\n\n this.bodyTimeout = bodyTimeout\n\n this.throwOnError = throwOnError === true\n\n this.method = method\n\n this.abort = null\n\n if (body == null) {\n this.body = null\n } else if (util.isStream(body)) {\n this.body = body\n\n const rState = this.body._readableState\n if (!rState || !rState.autoDestroy) {\n this.endHandler = function autoDestroy () {\n util.destroy(this)\n }\n this.body.on('end', this.endHandler)\n }\n\n this.errorHandler = err => {\n if (this.abort) {\n this.abort(err)\n } else {\n this.error = err\n }\n }\n this.body.on('error', this.errorHandler)\n } else if (util.isBuffer(body)) {\n this.body = body.byteLength ? body : null\n } else if (ArrayBuffer.isView(body)) {\n this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null\n } else if (body instanceof ArrayBuffer) {\n this.body = body.byteLength ? Buffer.from(body) : null\n } else if (typeof body === 'string') {\n this.body = body.length ? Buffer.from(body) : null\n } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) {\n this.body = body\n } else {\n throw new InvalidArgumentError('body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable')\n }\n\n this.completed = false\n\n this.aborted = false\n\n this.upgrade = upgrade || null\n\n this.path = query ? util.buildURL(path, query) : path\n\n this.origin = origin\n\n this.idempotent = idempotent == null\n ? method === 'HEAD' || method === 'GET'\n : idempotent\n\n this.blocking = blocking == null ? false : blocking\n\n this.reset = reset == null ? null : reset\n\n this.host = null\n\n this.contentLength = null\n\n this.contentType = null\n\n this.headers = ''\n\n // Only for H2\n this.expectContinue = expectContinue != null ? expectContinue : false\n\n if (Array.isArray(headers)) {\n if (headers.length % 2 !== 0) {\n throw new InvalidArgumentError('headers array must be even')\n }\n for (let i = 0; i < headers.length; i += 2) {\n processHeader(this, headers[i], headers[i + 1])\n }\n } else if (headers && typeof headers === 'object') {\n const keys = Object.keys(headers)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n processHeader(this, key, headers[key])\n }\n } else if (headers != null) {\n throw new InvalidArgumentError('headers must be an object or an array')\n }\n\n if (util.isFormDataLike(this.body)) {\n if (util.nodeMajor < 16 || (util.nodeMajor === 16 && util.nodeMinor < 8)) {\n throw new InvalidArgumentError('Form-Data bodies are only supported in node v16.8 and newer.')\n }\n\n if (!extractBody) {\n extractBody = require('../fetch/body.js').extractBody\n }\n\n const [bodyStream, contentType] = extractBody(body)\n if (this.contentType == null) {\n this.contentType = contentType\n this.headers += `content-type: ${contentType}\\r\\n`\n }\n this.body = bodyStream.stream\n this.contentLength = bodyStream.length\n } else if (util.isBlobLike(body) && this.contentType == null && body.type) {\n this.contentType = body.type\n this.headers += `content-type: ${body.type}\\r\\n`\n }\n\n util.validateHandler(handler, method, upgrade)\n\n this.servername = util.getServerName(this.host)\n\n this[kHandler] = handler\n\n if (channels.create.hasSubscribers) {\n channels.create.publish({ request: this })\n }\n }\n\n onBodySent (chunk) {\n if (this[kHandler].onBodySent) {\n try {\n return this[kHandler].onBodySent(chunk)\n } catch (err) {\n this.abort(err)\n }\n }\n }\n\n onRequestSent () {\n if (channels.bodySent.hasSubscribers) {\n channels.bodySent.publish({ request: this })\n }\n\n if (this[kHandler].onRequestSent) {\n try {\n return this[kHandler].onRequestSent()\n } catch (err) {\n this.abort(err)\n }\n }\n }\n\n onConnect (abort) {\n assert(!this.aborted)\n assert(!this.completed)\n\n if (this.error) {\n abort(this.error)\n } else {\n this.abort = abort\n return this[kHandler].onConnect(abort)\n }\n }\n\n onHeaders (statusCode, headers, resume, statusText) {\n assert(!this.aborted)\n assert(!this.completed)\n\n if (channels.headers.hasSubscribers) {\n channels.headers.publish({ request: this, response: { statusCode, headers, statusText } })\n }\n\n try {\n return this[kHandler].onHeaders(statusCode, headers, resume, statusText)\n } catch (err) {\n this.abort(err)\n }\n }\n\n onData (chunk) {\n assert(!this.aborted)\n assert(!this.completed)\n\n try {\n return this[kHandler].onData(chunk)\n } catch (err) {\n this.abort(err)\n return false\n }\n }\n\n onUpgrade (statusCode, headers, socket) {\n assert(!this.aborted)\n assert(!this.completed)\n\n return this[kHandler].onUpgrade(statusCode, headers, socket)\n }\n\n onComplete (trailers) {\n this.onFinally()\n\n assert(!this.aborted)\n\n this.completed = true\n if (channels.trailers.hasSubscribers) {\n channels.trailers.publish({ request: this, trailers })\n }\n\n try {\n return this[kHandler].onComplete(trailers)\n } catch (err) {\n // TODO (fix): This might be a bad idea?\n this.onError(err)\n }\n }\n\n onError (error) {\n this.onFinally()\n\n if (channels.error.hasSubscribers) {\n channels.error.publish({ request: this, error })\n }\n\n if (this.aborted) {\n return\n }\n this.aborted = true\n\n return this[kHandler].onError(error)\n }\n\n onFinally () {\n if (this.errorHandler) {\n this.body.off('error', this.errorHandler)\n this.errorHandler = null\n }\n\n if (this.endHandler) {\n this.body.off('end', this.endHandler)\n this.endHandler = null\n }\n }\n\n // TODO: adjust to support H2\n addHeader (key, value) {\n processHeader(this, key, value)\n return this\n }\n\n static [kHTTP1BuildRequest] (origin, opts, handler) {\n // TODO: Migrate header parsing here, to make Requests\n // HTTP agnostic\n return new Request(origin, opts, handler)\n }\n\n static [kHTTP2BuildRequest] (origin, opts, handler) {\n const headers = opts.headers\n opts = { ...opts, headers: null }\n\n const request = new Request(origin, opts, handler)\n\n request.headers = {}\n\n if (Array.isArray(headers)) {\n if (headers.length % 2 !== 0) {\n throw new InvalidArgumentError('headers array must be even')\n }\n for (let i = 0; i < headers.length; i += 2) {\n processHeader(request, headers[i], headers[i + 1], true)\n }\n } else if (headers && typeof headers === 'object') {\n const keys = Object.keys(headers)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n processHeader(request, key, headers[key], true)\n }\n } else if (headers != null) {\n throw new InvalidArgumentError('headers must be an object or an array')\n }\n\n return request\n }\n\n static [kHTTP2CopyHeaders] (raw) {\n const rawHeaders = raw.split('\\r\\n')\n const headers = {}\n\n for (const header of rawHeaders) {\n const [key, value] = header.split(': ')\n\n if (value == null || value.length === 0) continue\n\n if (headers[key]) headers[key] += `,${value}`\n else headers[key] = value\n }\n\n return headers\n }\n}\n\nfunction processHeaderValue (key, val, skipAppend) {\n if (val && typeof val === 'object') {\n throw new InvalidArgumentError(`invalid ${key} header`)\n }\n\n val = val != null ? `${val}` : ''\n\n if (headerCharRegex.exec(val) !== null) {\n throw new InvalidArgumentError(`invalid ${key} header`)\n }\n\n return skipAppend ? val : `${key}: ${val}\\r\\n`\n}\n\nfunction processHeader (request, key, val, skipAppend = false) {\n if (val && (typeof val === 'object' && !Array.isArray(val))) {\n throw new InvalidArgumentError(`invalid ${key} header`)\n } else if (val === undefined) {\n return\n }\n\n if (\n request.host === null &&\n key.length === 4 &&\n key.toLowerCase() === 'host'\n ) {\n if (headerCharRegex.exec(val) !== null) {\n throw new InvalidArgumentError(`invalid ${key} header`)\n }\n // Consumed by Client\n request.host = val\n } else if (\n request.contentLength === null &&\n key.length === 14 &&\n key.toLowerCase() === 'content-length'\n ) {\n request.contentLength = parseInt(val, 10)\n if (!Number.isFinite(request.contentLength)) {\n throw new InvalidArgumentError('invalid content-length header')\n }\n } else if (\n request.contentType === null &&\n key.length === 12 &&\n key.toLowerCase() === 'content-type'\n ) {\n request.contentType = val\n if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend)\n else request.headers += processHeaderValue(key, val)\n } else if (\n key.length === 17 &&\n key.toLowerCase() === 'transfer-encoding'\n ) {\n throw new InvalidArgumentError('invalid transfer-encoding header')\n } else if (\n key.length === 10 &&\n key.toLowerCase() === 'connection'\n ) {\n const value = typeof val === 'string' ? val.toLowerCase() : null\n if (value !== 'close' && value !== 'keep-alive') {\n throw new InvalidArgumentError('invalid connection header')\n } else if (value === 'close') {\n request.reset = true\n }\n } else if (\n key.length === 10 &&\n key.toLowerCase() === 'keep-alive'\n ) {\n throw new InvalidArgumentError('invalid keep-alive header')\n } else if (\n key.length === 7 &&\n key.toLowerCase() === 'upgrade'\n ) {\n throw new InvalidArgumentError('invalid upgrade header')\n } else if (\n key.length === 6 &&\n key.toLowerCase() === 'expect'\n ) {\n throw new NotSupportedError('expect header not supported')\n } else if (tokenRegExp.exec(key) === null) {\n throw new InvalidArgumentError('invalid header key')\n } else {\n if (Array.isArray(val)) {\n for (let i = 0; i < val.length; i++) {\n if (skipAppend) {\n if (request.headers[key]) request.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}`\n else request.headers[key] = processHeaderValue(key, val[i], skipAppend)\n } else {\n request.headers += processHeaderValue(key, val[i])\n }\n }\n } else {\n if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend)\n else request.headers += processHeaderValue(key, val)\n }\n }\n}\n\nmodule.exports = Request\n","module.exports = {\n kClose: Symbol('close'),\n kDestroy: Symbol('destroy'),\n kDispatch: Symbol('dispatch'),\n kUrl: Symbol('url'),\n kWriting: Symbol('writing'),\n kResuming: Symbol('resuming'),\n kQueue: Symbol('queue'),\n kConnect: Symbol('connect'),\n kConnecting: Symbol('connecting'),\n kHeadersList: Symbol('headers list'),\n kKeepAliveDefaultTimeout: Symbol('default keep alive timeout'),\n kKeepAliveMaxTimeout: Symbol('max keep alive timeout'),\n kKeepAliveTimeoutThreshold: Symbol('keep alive timeout threshold'),\n kKeepAliveTimeoutValue: Symbol('keep alive timeout'),\n kKeepAlive: Symbol('keep alive'),\n kHeadersTimeout: Symbol('headers timeout'),\n kBodyTimeout: Symbol('body timeout'),\n kServerName: Symbol('server name'),\n kLocalAddress: Symbol('local address'),\n kHost: Symbol('host'),\n kNoRef: Symbol('no ref'),\n kBodyUsed: Symbol('used'),\n kRunning: Symbol('running'),\n kBlocking: Symbol('blocking'),\n kPending: Symbol('pending'),\n kSize: Symbol('size'),\n kBusy: Symbol('busy'),\n kQueued: Symbol('queued'),\n kFree: Symbol('free'),\n kConnected: Symbol('connected'),\n kClosed: Symbol('closed'),\n kNeedDrain: Symbol('need drain'),\n kReset: Symbol('reset'),\n kDestroyed: Symbol.for('nodejs.stream.destroyed'),\n kMaxHeadersSize: Symbol('max headers size'),\n kRunningIdx: Symbol('running index'),\n kPendingIdx: Symbol('pending index'),\n kError: Symbol('error'),\n kClients: Symbol('clients'),\n kClient: Symbol('client'),\n kParser: Symbol('parser'),\n kOnDestroyed: Symbol('destroy callbacks'),\n kPipelining: Symbol('pipelining'),\n kSocket: Symbol('socket'),\n kHostHeader: Symbol('host header'),\n kConnector: Symbol('connector'),\n kStrictContentLength: Symbol('strict content length'),\n kMaxRedirections: Symbol('maxRedirections'),\n kMaxRequests: Symbol('maxRequestsPerClient'),\n kProxy: Symbol('proxy agent options'),\n kCounter: Symbol('socket request counter'),\n kInterceptors: Symbol('dispatch interceptors'),\n kMaxResponseSize: Symbol('max response size'),\n kHTTP2Session: Symbol('http2Session'),\n kHTTP2SessionState: Symbol('http2Session state'),\n kHTTP2BuildRequest: Symbol('http2 build request'),\n kHTTP1BuildRequest: Symbol('http1 build request'),\n kHTTP2CopyHeaders: Symbol('http2 copy headers'),\n kHTTPConnVersion: Symbol('http connection version'),\n kRetryHandlerDefaultRetry: Symbol('retry agent default retry'),\n kConstruct: Symbol('constructable')\n}\n","'use strict'\n\nconst assert = require('assert')\nconst { kDestroyed, kBodyUsed } = require('./symbols')\nconst { IncomingMessage } = require('http')\nconst stream = require('stream')\nconst net = require('net')\nconst { InvalidArgumentError } = require('./errors')\nconst { Blob } = require('buffer')\nconst nodeUtil = require('util')\nconst { stringify } = require('querystring')\nconst { headerNameLowerCasedRecord } = require('./constants')\n\nconst [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v))\n\nfunction nop () {}\n\nfunction isStream (obj) {\n return obj && typeof obj === 'object' && typeof obj.pipe === 'function' && typeof obj.on === 'function'\n}\n\n// based on https://github.com/node-fetch/fetch-blob/blob/8ab587d34080de94140b54f07168451e7d0b655e/index.js#L229-L241 (MIT License)\nfunction isBlobLike (object) {\n return (Blob && object instanceof Blob) || (\n object &&\n typeof object === 'object' &&\n (typeof object.stream === 'function' ||\n typeof object.arrayBuffer === 'function') &&\n /^(Blob|File)$/.test(object[Symbol.toStringTag])\n )\n}\n\nfunction buildURL (url, queryParams) {\n if (url.includes('?') || url.includes('#')) {\n throw new Error('Query params cannot be passed when url already contains \"?\" or \"#\".')\n }\n\n const stringified = stringify(queryParams)\n\n if (stringified) {\n url += '?' + stringified\n }\n\n return url\n}\n\nfunction parseURL (url) {\n if (typeof url === 'string') {\n url = new URL(url)\n\n if (!/^https?:/.test(url.origin || url.protocol)) {\n throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')\n }\n\n return url\n }\n\n if (!url || typeof url !== 'object') {\n throw new InvalidArgumentError('Invalid URL: The URL argument must be a non-null object.')\n }\n\n if (!/^https?:/.test(url.origin || url.protocol)) {\n throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')\n }\n\n if (!(url instanceof URL)) {\n if (url.port != null && url.port !== '' && !Number.isFinite(parseInt(url.port))) {\n throw new InvalidArgumentError('Invalid URL: port must be a valid integer or a string representation of an integer.')\n }\n\n if (url.path != null && typeof url.path !== 'string') {\n throw new InvalidArgumentError('Invalid URL path: the path must be a string or null/undefined.')\n }\n\n if (url.pathname != null && typeof url.pathname !== 'string') {\n throw new InvalidArgumentError('Invalid URL pathname: the pathname must be a string or null/undefined.')\n }\n\n if (url.hostname != null && typeof url.hostname !== 'string') {\n throw new InvalidArgumentError('Invalid URL hostname: the hostname must be a string or null/undefined.')\n }\n\n if (url.origin != null && typeof url.origin !== 'string') {\n throw new InvalidArgumentError('Invalid URL origin: the origin must be a string or null/undefined.')\n }\n\n const port = url.port != null\n ? url.port\n : (url.protocol === 'https:' ? 443 : 80)\n let origin = url.origin != null\n ? url.origin\n : `${url.protocol}//${url.hostname}:${port}`\n let path = url.path != null\n ? url.path\n : `${url.pathname || ''}${url.search || ''}`\n\n if (origin.endsWith('/')) {\n origin = origin.substring(0, origin.length - 1)\n }\n\n if (path && !path.startsWith('/')) {\n path = `/${path}`\n }\n // new URL(path, origin) is unsafe when `path` contains an absolute URL\n // From https://developer.mozilla.org/en-US/docs/Web/API/URL/URL:\n // If first parameter is a relative URL, second param is required, and will be used as the base URL.\n // If first parameter is an absolute URL, a given second param will be ignored.\n url = new URL(origin + path)\n }\n\n return url\n}\n\nfunction parseOrigin (url) {\n url = parseURL(url)\n\n if (url.pathname !== '/' || url.search || url.hash) {\n throw new InvalidArgumentError('invalid url')\n }\n\n return url\n}\n\nfunction getHostname (host) {\n if (host[0] === '[') {\n const idx = host.indexOf(']')\n\n assert(idx !== -1)\n return host.substring(1, idx)\n }\n\n const idx = host.indexOf(':')\n if (idx === -1) return host\n\n return host.substring(0, idx)\n}\n\n// IP addresses are not valid server names per RFC6066\n// > Currently, the only server names supported are DNS hostnames\nfunction getServerName (host) {\n if (!host) {\n return null\n }\n\n assert.strictEqual(typeof host, 'string')\n\n const servername = getHostname(host)\n if (net.isIP(servername)) {\n return ''\n }\n\n return servername\n}\n\nfunction deepClone (obj) {\n return JSON.parse(JSON.stringify(obj))\n}\n\nfunction isAsyncIterable (obj) {\n return !!(obj != null && typeof obj[Symbol.asyncIterator] === 'function')\n}\n\nfunction isIterable (obj) {\n return !!(obj != null && (typeof obj[Symbol.iterator] === 'function' || typeof obj[Symbol.asyncIterator] === 'function'))\n}\n\nfunction bodyLength (body) {\n if (body == null) {\n return 0\n } else if (isStream(body)) {\n const state = body._readableState\n return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length)\n ? state.length\n : null\n } else if (isBlobLike(body)) {\n return body.size != null ? body.size : null\n } else if (isBuffer(body)) {\n return body.byteLength\n }\n\n return null\n}\n\nfunction isDestroyed (stream) {\n return !stream || !!(stream.destroyed || stream[kDestroyed])\n}\n\nfunction isReadableAborted (stream) {\n const state = stream && stream._readableState\n return isDestroyed(stream) && state && !state.endEmitted\n}\n\nfunction destroy (stream, err) {\n if (stream == null || !isStream(stream) || isDestroyed(stream)) {\n return\n }\n\n if (typeof stream.destroy === 'function') {\n if (Object.getPrototypeOf(stream).constructor === IncomingMessage) {\n // See: https://github.com/nodejs/node/pull/38505/files\n stream.socket = null\n }\n\n stream.destroy(err)\n } else if (err) {\n process.nextTick((stream, err) => {\n stream.emit('error', err)\n }, stream, err)\n }\n\n if (stream.destroyed !== true) {\n stream[kDestroyed] = true\n }\n}\n\nconst KEEPALIVE_TIMEOUT_EXPR = /timeout=(\\d+)/\nfunction parseKeepAliveTimeout (val) {\n const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR)\n return m ? parseInt(m[1], 10) * 1000 : null\n}\n\n/**\n * Retrieves a header name and returns its lowercase value.\n * @param {string | Buffer} value Header name\n * @returns {string}\n */\nfunction headerNameToString (value) {\n return headerNameLowerCasedRecord[value] || value.toLowerCase()\n}\n\nfunction parseHeaders (headers, obj = {}) {\n // For H2 support\n if (!Array.isArray(headers)) return headers\n\n for (let i = 0; i < headers.length; i += 2) {\n const key = headers[i].toString().toLowerCase()\n let val = obj[key]\n\n if (!val) {\n if (Array.isArray(headers[i + 1])) {\n obj[key] = headers[i + 1].map(x => x.toString('utf8'))\n } else {\n obj[key] = headers[i + 1].toString('utf8')\n }\n } else {\n if (!Array.isArray(val)) {\n val = [val]\n obj[key] = val\n }\n val.push(headers[i + 1].toString('utf8'))\n }\n }\n\n // See https://github.com/nodejs/node/pull/46528\n if ('content-length' in obj && 'content-disposition' in obj) {\n obj['content-disposition'] = Buffer.from(obj['content-disposition']).toString('latin1')\n }\n\n return obj\n}\n\nfunction parseRawHeaders (headers) {\n const ret = []\n let hasContentLength = false\n let contentDispositionIdx = -1\n\n for (let n = 0; n < headers.length; n += 2) {\n const key = headers[n + 0].toString()\n const val = headers[n + 1].toString('utf8')\n\n if (key.length === 14 && (key === 'content-length' || key.toLowerCase() === 'content-length')) {\n ret.push(key, val)\n hasContentLength = true\n } else if (key.length === 19 && (key === 'content-disposition' || key.toLowerCase() === 'content-disposition')) {\n contentDispositionIdx = ret.push(key, val) - 1\n } else {\n ret.push(key, val)\n }\n }\n\n // See https://github.com/nodejs/node/pull/46528\n if (hasContentLength && contentDispositionIdx !== -1) {\n ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString('latin1')\n }\n\n return ret\n}\n\nfunction isBuffer (buffer) {\n // See, https://github.com/mcollina/undici/pull/319\n return buffer instanceof Uint8Array || Buffer.isBuffer(buffer)\n}\n\nfunction validateHandler (handler, method, upgrade) {\n if (!handler || typeof handler !== 'object') {\n throw new InvalidArgumentError('handler must be an object')\n }\n\n if (typeof handler.onConnect !== 'function') {\n throw new InvalidArgumentError('invalid onConnect method')\n }\n\n if (typeof handler.onError !== 'function') {\n throw new InvalidArgumentError('invalid onError method')\n }\n\n if (typeof handler.onBodySent !== 'function' && handler.onBodySent !== undefined) {\n throw new InvalidArgumentError('invalid onBodySent method')\n }\n\n if (upgrade || method === 'CONNECT') {\n if (typeof handler.onUpgrade !== 'function') {\n throw new InvalidArgumentError('invalid onUpgrade method')\n }\n } else {\n if (typeof handler.onHeaders !== 'function') {\n throw new InvalidArgumentError('invalid onHeaders method')\n }\n\n if (typeof handler.onData !== 'function') {\n throw new InvalidArgumentError('invalid onData method')\n }\n\n if (typeof handler.onComplete !== 'function') {\n throw new InvalidArgumentError('invalid onComplete method')\n }\n }\n}\n\n// A body is disturbed if it has been read from and it cannot\n// be re-used without losing state or data.\nfunction isDisturbed (body) {\n return !!(body && (\n stream.isDisturbed\n ? stream.isDisturbed(body) || body[kBodyUsed] // TODO (fix): Why is body[kBodyUsed] needed?\n : body[kBodyUsed] ||\n body.readableDidRead ||\n (body._readableState && body._readableState.dataEmitted) ||\n isReadableAborted(body)\n ))\n}\n\nfunction isErrored (body) {\n return !!(body && (\n stream.isErrored\n ? stream.isErrored(body)\n : /state: 'errored'/.test(nodeUtil.inspect(body)\n )))\n}\n\nfunction isReadable (body) {\n return !!(body && (\n stream.isReadable\n ? stream.isReadable(body)\n : /state: 'readable'/.test(nodeUtil.inspect(body)\n )))\n}\n\nfunction getSocketInfo (socket) {\n return {\n localAddress: socket.localAddress,\n localPort: socket.localPort,\n remoteAddress: socket.remoteAddress,\n remotePort: socket.remotePort,\n remoteFamily: socket.remoteFamily,\n timeout: socket.timeout,\n bytesWritten: socket.bytesWritten,\n bytesRead: socket.bytesRead\n }\n}\n\nasync function * convertIterableToBuffer (iterable) {\n for await (const chunk of iterable) {\n yield Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)\n }\n}\n\nlet ReadableStream\nfunction ReadableStreamFrom (iterable) {\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n if (ReadableStream.from) {\n return ReadableStream.from(convertIterableToBuffer(iterable))\n }\n\n let iterator\n return new ReadableStream(\n {\n async start () {\n iterator = iterable[Symbol.asyncIterator]()\n },\n async pull (controller) {\n const { done, value } = await iterator.next()\n if (done) {\n queueMicrotask(() => {\n controller.close()\n })\n } else {\n const buf = Buffer.isBuffer(value) ? value : Buffer.from(value)\n controller.enqueue(new Uint8Array(buf))\n }\n return controller.desiredSize > 0\n },\n async cancel (reason) {\n await iterator.return()\n }\n },\n 0\n )\n}\n\n// The chunk should be a FormData instance and contains\n// all the required methods.\nfunction isFormDataLike (object) {\n return (\n object &&\n typeof object === 'object' &&\n typeof object.append === 'function' &&\n typeof object.delete === 'function' &&\n typeof object.get === 'function' &&\n typeof object.getAll === 'function' &&\n typeof object.has === 'function' &&\n typeof object.set === 'function' &&\n object[Symbol.toStringTag] === 'FormData'\n )\n}\n\nfunction throwIfAborted (signal) {\n if (!signal) { return }\n if (typeof signal.throwIfAborted === 'function') {\n signal.throwIfAborted()\n } else {\n if (signal.aborted) {\n // DOMException not available < v17.0.0\n const err = new Error('The operation was aborted')\n err.name = 'AbortError'\n throw err\n }\n }\n}\n\nfunction addAbortListener (signal, listener) {\n if ('addEventListener' in signal) {\n signal.addEventListener('abort', listener, { once: true })\n return () => signal.removeEventListener('abort', listener)\n }\n signal.addListener('abort', listener)\n return () => signal.removeListener('abort', listener)\n}\n\nconst hasToWellFormed = !!String.prototype.toWellFormed\n\n/**\n * @param {string} val\n */\nfunction toUSVString (val) {\n if (hasToWellFormed) {\n return `${val}`.toWellFormed()\n } else if (nodeUtil.toUSVString) {\n return nodeUtil.toUSVString(val)\n }\n\n return `${val}`\n}\n\n// Parsed accordingly to RFC 9110\n// https://www.rfc-editor.org/rfc/rfc9110#field.content-range\nfunction parseRangeHeader (range) {\n if (range == null || range === '') return { start: 0, end: null, size: null }\n\n const m = range ? range.match(/^bytes (\\d+)-(\\d+)\\/(\\d+)?$/) : null\n return m\n ? {\n start: parseInt(m[1]),\n end: m[2] ? parseInt(m[2]) : null,\n size: m[3] ? parseInt(m[3]) : null\n }\n : null\n}\n\nconst kEnumerableProperty = Object.create(null)\nkEnumerableProperty.enumerable = true\n\nmodule.exports = {\n kEnumerableProperty,\n nop,\n isDisturbed,\n isErrored,\n isReadable,\n toUSVString,\n isReadableAborted,\n isBlobLike,\n parseOrigin,\n parseURL,\n getServerName,\n isStream,\n isIterable,\n isAsyncIterable,\n isDestroyed,\n headerNameToString,\n parseRawHeaders,\n parseHeaders,\n parseKeepAliveTimeout,\n destroy,\n bodyLength,\n deepClone,\n ReadableStreamFrom,\n isBuffer,\n validateHandler,\n getSocketInfo,\n isFormDataLike,\n buildURL,\n throwIfAborted,\n addAbortListener,\n parseRangeHeader,\n nodeMajor,\n nodeMinor,\n nodeHasAutoSelectFamily: nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 13),\n safeHTTPMethods: ['GET', 'HEAD', 'OPTIONS', 'TRACE']\n}\n","'use strict'\n\nconst Dispatcher = require('./dispatcher')\nconst {\n ClientDestroyedError,\n ClientClosedError,\n InvalidArgumentError\n} = require('./core/errors')\nconst { kDestroy, kClose, kDispatch, kInterceptors } = require('./core/symbols')\n\nconst kDestroyed = Symbol('destroyed')\nconst kClosed = Symbol('closed')\nconst kOnDestroyed = Symbol('onDestroyed')\nconst kOnClosed = Symbol('onClosed')\nconst kInterceptedDispatch = Symbol('Intercepted Dispatch')\n\nclass DispatcherBase extends Dispatcher {\n constructor () {\n super()\n\n this[kDestroyed] = false\n this[kOnDestroyed] = null\n this[kClosed] = false\n this[kOnClosed] = []\n }\n\n get destroyed () {\n return this[kDestroyed]\n }\n\n get closed () {\n return this[kClosed]\n }\n\n get interceptors () {\n return this[kInterceptors]\n }\n\n set interceptors (newInterceptors) {\n if (newInterceptors) {\n for (let i = newInterceptors.length - 1; i >= 0; i--) {\n const interceptor = this[kInterceptors][i]\n if (typeof interceptor !== 'function') {\n throw new InvalidArgumentError('interceptor must be an function')\n }\n }\n }\n\n this[kInterceptors] = newInterceptors\n }\n\n close (callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n this.close((err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (this[kDestroyed]) {\n queueMicrotask(() => callback(new ClientDestroyedError(), null))\n return\n }\n\n if (this[kClosed]) {\n if (this[kOnClosed]) {\n this[kOnClosed].push(callback)\n } else {\n queueMicrotask(() => callback(null, null))\n }\n return\n }\n\n this[kClosed] = true\n this[kOnClosed].push(callback)\n\n const onClosed = () => {\n const callbacks = this[kOnClosed]\n this[kOnClosed] = null\n for (let i = 0; i < callbacks.length; i++) {\n callbacks[i](null, null)\n }\n }\n\n // Should not error.\n this[kClose]()\n .then(() => this.destroy())\n .then(() => {\n queueMicrotask(onClosed)\n })\n }\n\n destroy (err, callback) {\n if (typeof err === 'function') {\n callback = err\n err = null\n }\n\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n this.destroy(err, (err, data) => {\n return err ? /* istanbul ignore next: should never error */ reject(err) : resolve(data)\n })\n })\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (this[kDestroyed]) {\n if (this[kOnDestroyed]) {\n this[kOnDestroyed].push(callback)\n } else {\n queueMicrotask(() => callback(null, null))\n }\n return\n }\n\n if (!err) {\n err = new ClientDestroyedError()\n }\n\n this[kDestroyed] = true\n this[kOnDestroyed] = this[kOnDestroyed] || []\n this[kOnDestroyed].push(callback)\n\n const onDestroyed = () => {\n const callbacks = this[kOnDestroyed]\n this[kOnDestroyed] = null\n for (let i = 0; i < callbacks.length; i++) {\n callbacks[i](null, null)\n }\n }\n\n // Should not error.\n this[kDestroy](err).then(() => {\n queueMicrotask(onDestroyed)\n })\n }\n\n [kInterceptedDispatch] (opts, handler) {\n if (!this[kInterceptors] || this[kInterceptors].length === 0) {\n this[kInterceptedDispatch] = this[kDispatch]\n return this[kDispatch](opts, handler)\n }\n\n let dispatch = this[kDispatch].bind(this)\n for (let i = this[kInterceptors].length - 1; i >= 0; i--) {\n dispatch = this[kInterceptors][i](dispatch)\n }\n this[kInterceptedDispatch] = dispatch\n return dispatch(opts, handler)\n }\n\n dispatch (opts, handler) {\n if (!handler || typeof handler !== 'object') {\n throw new InvalidArgumentError('handler must be an object')\n }\n\n try {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('opts must be an object.')\n }\n\n if (this[kDestroyed] || this[kOnDestroyed]) {\n throw new ClientDestroyedError()\n }\n\n if (this[kClosed]) {\n throw new ClientClosedError()\n }\n\n return this[kInterceptedDispatch](opts, handler)\n } catch (err) {\n if (typeof handler.onError !== 'function') {\n throw new InvalidArgumentError('invalid onError method')\n }\n\n handler.onError(err)\n\n return false\n }\n }\n}\n\nmodule.exports = DispatcherBase\n","'use strict'\n\nconst EventEmitter = require('events')\n\nclass Dispatcher extends EventEmitter {\n dispatch () {\n throw new Error('not implemented')\n }\n\n close () {\n throw new Error('not implemented')\n }\n\n destroy () {\n throw new Error('not implemented')\n }\n}\n\nmodule.exports = Dispatcher\n","'use strict'\n\nconst Busboy = require('@fastify/busboy')\nconst util = require('../core/util')\nconst {\n ReadableStreamFrom,\n isBlobLike,\n isReadableStreamLike,\n readableStreamClose,\n createDeferredPromise,\n fullyReadBody\n} = require('./util')\nconst { FormData } = require('./formdata')\nconst { kState } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { DOMException, structuredClone } = require('./constants')\nconst { Blob, File: NativeFile } = require('buffer')\nconst { kBodyUsed } = require('../core/symbols')\nconst assert = require('assert')\nconst { isErrored } = require('../core/util')\nconst { isUint8Array, isArrayBuffer } = require('util/types')\nconst { File: UndiciFile } = require('./file')\nconst { parseMIMEType, serializeAMimeType } = require('./dataURL')\n\nlet ReadableStream = globalThis.ReadableStream\n\n/** @type {globalThis['File']} */\nconst File = NativeFile ?? UndiciFile\nconst textEncoder = new TextEncoder()\nconst textDecoder = new TextDecoder()\n\n// https://fetch.spec.whatwg.org/#concept-bodyinit-extract\nfunction extractBody (object, keepalive = false) {\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n // 1. Let stream be null.\n let stream = null\n\n // 2. If object is a ReadableStream object, then set stream to object.\n if (object instanceof ReadableStream) {\n stream = object\n } else if (isBlobLike(object)) {\n // 3. Otherwise, if object is a Blob object, set stream to the\n // result of running object’s get stream.\n stream = object.stream()\n } else {\n // 4. Otherwise, set stream to a new ReadableStream object, and set\n // up stream.\n stream = new ReadableStream({\n async pull (controller) {\n controller.enqueue(\n typeof source === 'string' ? textEncoder.encode(source) : source\n )\n queueMicrotask(() => readableStreamClose(controller))\n },\n start () {},\n type: undefined\n })\n }\n\n // 5. Assert: stream is a ReadableStream object.\n assert(isReadableStreamLike(stream))\n\n // 6. Let action be null.\n let action = null\n\n // 7. Let source be null.\n let source = null\n\n // 8. Let length be null.\n let length = null\n\n // 9. Let type be null.\n let type = null\n\n // 10. Switch on object:\n if (typeof object === 'string') {\n // Set source to the UTF-8 encoding of object.\n // Note: setting source to a Uint8Array here breaks some mocking assumptions.\n source = object\n\n // Set type to `text/plain;charset=UTF-8`.\n type = 'text/plain;charset=UTF-8'\n } else if (object instanceof URLSearchParams) {\n // URLSearchParams\n\n // spec says to run application/x-www-form-urlencoded on body.list\n // this is implemented in Node.js as apart of an URLSearchParams instance toString method\n // See: https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L490\n // and https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L1100\n\n // Set source to the result of running the application/x-www-form-urlencoded serializer with object’s list.\n source = object.toString()\n\n // Set type to `application/x-www-form-urlencoded;charset=UTF-8`.\n type = 'application/x-www-form-urlencoded;charset=UTF-8'\n } else if (isArrayBuffer(object)) {\n // BufferSource/ArrayBuffer\n\n // Set source to a copy of the bytes held by object.\n source = new Uint8Array(object.slice())\n } else if (ArrayBuffer.isView(object)) {\n // BufferSource/ArrayBufferView\n\n // Set source to a copy of the bytes held by object.\n source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength))\n } else if (util.isFormDataLike(object)) {\n const boundary = `----formdata-undici-0${`${Math.floor(Math.random() * 1e11)}`.padStart(11, '0')}`\n const prefix = `--${boundary}\\r\\nContent-Disposition: form-data`\n\n /*! formdata-polyfill. MIT License. Jimmy Wärting */\n const escape = (str) =>\n str.replace(/\\n/g, '%0A').replace(/\\r/g, '%0D').replace(/\"/g, '%22')\n const normalizeLinefeeds = (value) => value.replace(/\\r?\\n|\\r/g, '\\r\\n')\n\n // Set action to this step: run the multipart/form-data\n // encoding algorithm, with object’s entry list and UTF-8.\n // - This ensures that the body is immutable and can't be changed afterwords\n // - That the content-length is calculated in advance.\n // - And that all parts are pre-encoded and ready to be sent.\n\n const blobParts = []\n const rn = new Uint8Array([13, 10]) // '\\r\\n'\n length = 0\n let hasUnknownSizeValue = false\n\n for (const [name, value] of object) {\n if (typeof value === 'string') {\n const chunk = textEncoder.encode(prefix +\n `; name=\"${escape(normalizeLinefeeds(name))}\"` +\n `\\r\\n\\r\\n${normalizeLinefeeds(value)}\\r\\n`)\n blobParts.push(chunk)\n length += chunk.byteLength\n } else {\n const chunk = textEncoder.encode(`${prefix}; name=\"${escape(normalizeLinefeeds(name))}\"` +\n (value.name ? `; filename=\"${escape(value.name)}\"` : '') + '\\r\\n' +\n `Content-Type: ${\n value.type || 'application/octet-stream'\n }\\r\\n\\r\\n`)\n blobParts.push(chunk, value, rn)\n if (typeof value.size === 'number') {\n length += chunk.byteLength + value.size + rn.byteLength\n } else {\n hasUnknownSizeValue = true\n }\n }\n }\n\n const chunk = textEncoder.encode(`--${boundary}--`)\n blobParts.push(chunk)\n length += chunk.byteLength\n if (hasUnknownSizeValue) {\n length = null\n }\n\n // Set source to object.\n source = object\n\n action = async function * () {\n for (const part of blobParts) {\n if (part.stream) {\n yield * part.stream()\n } else {\n yield part\n }\n }\n }\n\n // Set type to `multipart/form-data; boundary=`,\n // followed by the multipart/form-data boundary string generated\n // by the multipart/form-data encoding algorithm.\n type = 'multipart/form-data; boundary=' + boundary\n } else if (isBlobLike(object)) {\n // Blob\n\n // Set source to object.\n source = object\n\n // Set length to object’s size.\n length = object.size\n\n // If object’s type attribute is not the empty byte sequence, set\n // type to its value.\n if (object.type) {\n type = object.type\n }\n } else if (typeof object[Symbol.asyncIterator] === 'function') {\n // If keepalive is true, then throw a TypeError.\n if (keepalive) {\n throw new TypeError('keepalive')\n }\n\n // If object is disturbed or locked, then throw a TypeError.\n if (util.isDisturbed(object) || object.locked) {\n throw new TypeError(\n 'Response body object should not be disturbed or locked'\n )\n }\n\n stream =\n object instanceof ReadableStream ? object : ReadableStreamFrom(object)\n }\n\n // 11. If source is a byte sequence, then set action to a\n // step that returns source and length to source’s length.\n if (typeof source === 'string' || util.isBuffer(source)) {\n length = Buffer.byteLength(source)\n }\n\n // 12. If action is non-null, then run these steps in in parallel:\n if (action != null) {\n // Run action.\n let iterator\n stream = new ReadableStream({\n async start () {\n iterator = action(object)[Symbol.asyncIterator]()\n },\n async pull (controller) {\n const { value, done } = await iterator.next()\n if (done) {\n // When running action is done, close stream.\n queueMicrotask(() => {\n controller.close()\n })\n } else {\n // Whenever one or more bytes are available and stream is not errored,\n // enqueue a Uint8Array wrapping an ArrayBuffer containing the available\n // bytes into stream.\n if (!isErrored(stream)) {\n controller.enqueue(new Uint8Array(value))\n }\n }\n return controller.desiredSize > 0\n },\n async cancel (reason) {\n await iterator.return()\n },\n type: undefined\n })\n }\n\n // 13. Let body be a body whose stream is stream, source is source,\n // and length is length.\n const body = { stream, source, length }\n\n // 14. Return (body, type).\n return [body, type]\n}\n\n// https://fetch.spec.whatwg.org/#bodyinit-safely-extract\nfunction safelyExtractBody (object, keepalive = false) {\n if (!ReadableStream) {\n // istanbul ignore next\n ReadableStream = require('stream/web').ReadableStream\n }\n\n // To safely extract a body and a `Content-Type` value from\n // a byte sequence or BodyInit object object, run these steps:\n\n // 1. If object is a ReadableStream object, then:\n if (object instanceof ReadableStream) {\n // Assert: object is neither disturbed nor locked.\n // istanbul ignore next\n assert(!util.isDisturbed(object), 'The body has already been consumed.')\n // istanbul ignore next\n assert(!object.locked, 'The stream is locked.')\n }\n\n // 2. Return the results of extracting object.\n return extractBody(object, keepalive)\n}\n\nfunction cloneBody (body) {\n // To clone a body body, run these steps:\n\n // https://fetch.spec.whatwg.org/#concept-body-clone\n\n // 1. Let « out1, out2 » be the result of teeing body’s stream.\n const [out1, out2] = body.stream.tee()\n const out2Clone = structuredClone(out2, { transfer: [out2] })\n // This, for whatever reasons, unrefs out2Clone which allows\n // the process to exit by itself.\n const [, finalClone] = out2Clone.tee()\n\n // 2. Set body’s stream to out1.\n body.stream = out1\n\n // 3. Return a body whose stream is out2 and other members are copied from body.\n return {\n stream: finalClone,\n length: body.length,\n source: body.source\n }\n}\n\nasync function * consumeBody (body) {\n if (body) {\n if (isUint8Array(body)) {\n yield body\n } else {\n const stream = body.stream\n\n if (util.isDisturbed(stream)) {\n throw new TypeError('The body has already been consumed.')\n }\n\n if (stream.locked) {\n throw new TypeError('The stream is locked.')\n }\n\n // Compat.\n stream[kBodyUsed] = true\n\n yield * stream\n }\n }\n}\n\nfunction throwIfAborted (state) {\n if (state.aborted) {\n throw new DOMException('The operation was aborted.', 'AbortError')\n }\n}\n\nfunction bodyMixinMethods (instance) {\n const methods = {\n blob () {\n // The blob() method steps are to return the result of\n // running consume body with this and the following step\n // given a byte sequence bytes: return a Blob whose\n // contents are bytes and whose type attribute is this’s\n // MIME type.\n return specConsumeBody(this, (bytes) => {\n let mimeType = bodyMimeType(this)\n\n if (mimeType === 'failure') {\n mimeType = ''\n } else if (mimeType) {\n mimeType = serializeAMimeType(mimeType)\n }\n\n // Return a Blob whose contents are bytes and type attribute\n // is mimeType.\n return new Blob([bytes], { type: mimeType })\n }, instance)\n },\n\n arrayBuffer () {\n // The arrayBuffer() method steps are to return the result\n // of running consume body with this and the following step\n // given a byte sequence bytes: return a new ArrayBuffer\n // whose contents are bytes.\n return specConsumeBody(this, (bytes) => {\n return new Uint8Array(bytes).buffer\n }, instance)\n },\n\n text () {\n // The text() method steps are to return the result of running\n // consume body with this and UTF-8 decode.\n return specConsumeBody(this, utf8DecodeBytes, instance)\n },\n\n json () {\n // The json() method steps are to return the result of running\n // consume body with this and parse JSON from bytes.\n return specConsumeBody(this, parseJSONFromBytes, instance)\n },\n\n async formData () {\n webidl.brandCheck(this, instance)\n\n throwIfAborted(this[kState])\n\n const contentType = this.headers.get('Content-Type')\n\n // If mimeType’s essence is \"multipart/form-data\", then:\n if (/multipart\\/form-data/.test(contentType)) {\n const headers = {}\n for (const [key, value] of this.headers) headers[key.toLowerCase()] = value\n\n const responseFormData = new FormData()\n\n let busboy\n\n try {\n busboy = new Busboy({\n headers,\n preservePath: true\n })\n } catch (err) {\n throw new DOMException(`${err}`, 'AbortError')\n }\n\n busboy.on('field', (name, value) => {\n responseFormData.append(name, value)\n })\n busboy.on('file', (name, value, filename, encoding, mimeType) => {\n const chunks = []\n\n if (encoding === 'base64' || encoding.toLowerCase() === 'base64') {\n let base64chunk = ''\n\n value.on('data', (chunk) => {\n base64chunk += chunk.toString().replace(/[\\r\\n]/gm, '')\n\n const end = base64chunk.length - base64chunk.length % 4\n chunks.push(Buffer.from(base64chunk.slice(0, end), 'base64'))\n\n base64chunk = base64chunk.slice(end)\n })\n value.on('end', () => {\n chunks.push(Buffer.from(base64chunk, 'base64'))\n responseFormData.append(name, new File(chunks, filename, { type: mimeType }))\n })\n } else {\n value.on('data', (chunk) => {\n chunks.push(chunk)\n })\n value.on('end', () => {\n responseFormData.append(name, new File(chunks, filename, { type: mimeType }))\n })\n }\n })\n\n const busboyResolve = new Promise((resolve, reject) => {\n busboy.on('finish', resolve)\n busboy.on('error', (err) => reject(new TypeError(err)))\n })\n\n if (this.body !== null) for await (const chunk of consumeBody(this[kState].body)) busboy.write(chunk)\n busboy.end()\n await busboyResolve\n\n return responseFormData\n } else if (/application\\/x-www-form-urlencoded/.test(contentType)) {\n // Otherwise, if mimeType’s essence is \"application/x-www-form-urlencoded\", then:\n\n // 1. Let entries be the result of parsing bytes.\n let entries\n try {\n let text = ''\n // application/x-www-form-urlencoded parser will keep the BOM.\n // https://url.spec.whatwg.org/#concept-urlencoded-parser\n // Note that streaming decoder is stateful and cannot be reused\n const streamingDecoder = new TextDecoder('utf-8', { ignoreBOM: true })\n\n for await (const chunk of consumeBody(this[kState].body)) {\n if (!isUint8Array(chunk)) {\n throw new TypeError('Expected Uint8Array chunk')\n }\n text += streamingDecoder.decode(chunk, { stream: true })\n }\n text += streamingDecoder.decode()\n entries = new URLSearchParams(text)\n } catch (err) {\n // istanbul ignore next: Unclear when new URLSearchParams can fail on a string.\n // 2. If entries is failure, then throw a TypeError.\n throw Object.assign(new TypeError(), { cause: err })\n }\n\n // 3. Return a new FormData object whose entries are entries.\n const formData = new FormData()\n for (const [name, value] of entries) {\n formData.append(name, value)\n }\n return formData\n } else {\n // Wait a tick before checking if the request has been aborted.\n // Otherwise, a TypeError can be thrown when an AbortError should.\n await Promise.resolve()\n\n throwIfAborted(this[kState])\n\n // Otherwise, throw a TypeError.\n throw webidl.errors.exception({\n header: `${instance.name}.formData`,\n message: 'Could not parse content as FormData.'\n })\n }\n }\n }\n\n return methods\n}\n\nfunction mixinBody (prototype) {\n Object.assign(prototype.prototype, bodyMixinMethods(prototype))\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-body-consume-body\n * @param {Response|Request} object\n * @param {(value: unknown) => unknown} convertBytesToJSValue\n * @param {Response|Request} instance\n */\nasync function specConsumeBody (object, convertBytesToJSValue, instance) {\n webidl.brandCheck(object, instance)\n\n throwIfAborted(object[kState])\n\n // 1. If object is unusable, then return a promise rejected\n // with a TypeError.\n if (bodyUnusable(object[kState].body)) {\n throw new TypeError('Body is unusable')\n }\n\n // 2. Let promise be a new promise.\n const promise = createDeferredPromise()\n\n // 3. Let errorSteps given error be to reject promise with error.\n const errorSteps = (error) => promise.reject(error)\n\n // 4. Let successSteps given a byte sequence data be to resolve\n // promise with the result of running convertBytesToJSValue\n // with data. If that threw an exception, then run errorSteps\n // with that exception.\n const successSteps = (data) => {\n try {\n promise.resolve(convertBytesToJSValue(data))\n } catch (e) {\n errorSteps(e)\n }\n }\n\n // 5. If object’s body is null, then run successSteps with an\n // empty byte sequence.\n if (object[kState].body == null) {\n successSteps(new Uint8Array())\n return promise.promise\n }\n\n // 6. Otherwise, fully read object’s body given successSteps,\n // errorSteps, and object’s relevant global object.\n await fullyReadBody(object[kState].body, successSteps, errorSteps)\n\n // 7. Return promise.\n return promise.promise\n}\n\n// https://fetch.spec.whatwg.org/#body-unusable\nfunction bodyUnusable (body) {\n // An object including the Body interface mixin is\n // said to be unusable if its body is non-null and\n // its body’s stream is disturbed or locked.\n return body != null && (body.stream.locked || util.isDisturbed(body.stream))\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#utf-8-decode\n * @param {Buffer} buffer\n */\nfunction utf8DecodeBytes (buffer) {\n if (buffer.length === 0) {\n return ''\n }\n\n // 1. Let buffer be the result of peeking three bytes from\n // ioQueue, converted to a byte sequence.\n\n // 2. If buffer is 0xEF 0xBB 0xBF, then read three\n // bytes from ioQueue. (Do nothing with those bytes.)\n if (buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) {\n buffer = buffer.subarray(3)\n }\n\n // 3. Process a queue with an instance of UTF-8’s\n // decoder, ioQueue, output, and \"replacement\".\n const output = textDecoder.decode(buffer)\n\n // 4. Return output.\n return output\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#parse-json-bytes-to-a-javascript-value\n * @param {Uint8Array} bytes\n */\nfunction parseJSONFromBytes (bytes) {\n return JSON.parse(utf8DecodeBytes(bytes))\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-body-mime-type\n * @param {import('./response').Response|import('./request').Request} object\n */\nfunction bodyMimeType (object) {\n const { headersList } = object[kState]\n const contentType = headersList.get('content-type')\n\n if (contentType === null) {\n return 'failure'\n }\n\n return parseMIMEType(contentType)\n}\n\nmodule.exports = {\n extractBody,\n safelyExtractBody,\n cloneBody,\n mixinBody\n}\n","'use strict'\n\nconst { MessageChannel, receiveMessageOnPort } = require('worker_threads')\n\nconst corsSafeListedMethods = ['GET', 'HEAD', 'POST']\nconst corsSafeListedMethodsSet = new Set(corsSafeListedMethods)\n\nconst nullBodyStatus = [101, 204, 205, 304]\n\nconst redirectStatus = [301, 302, 303, 307, 308]\nconst redirectStatusSet = new Set(redirectStatus)\n\n// https://fetch.spec.whatwg.org/#block-bad-port\nconst badPorts = [\n '1', '7', '9', '11', '13', '15', '17', '19', '20', '21', '22', '23', '25', '37', '42', '43', '53', '69', '77', '79',\n '87', '95', '101', '102', '103', '104', '109', '110', '111', '113', '115', '117', '119', '123', '135', '137',\n '139', '143', '161', '179', '389', '427', '465', '512', '513', '514', '515', '526', '530', '531', '532',\n '540', '548', '554', '556', '563', '587', '601', '636', '989', '990', '993', '995', '1719', '1720', '1723',\n '2049', '3659', '4045', '5060', '5061', '6000', '6566', '6665', '6666', '6667', '6668', '6669', '6697',\n '10080'\n]\n\nconst badPortsSet = new Set(badPorts)\n\n// https://w3c.github.io/webappsec-referrer-policy/#referrer-policies\nconst referrerPolicy = [\n '',\n 'no-referrer',\n 'no-referrer-when-downgrade',\n 'same-origin',\n 'origin',\n 'strict-origin',\n 'origin-when-cross-origin',\n 'strict-origin-when-cross-origin',\n 'unsafe-url'\n]\nconst referrerPolicySet = new Set(referrerPolicy)\n\nconst requestRedirect = ['follow', 'manual', 'error']\n\nconst safeMethods = ['GET', 'HEAD', 'OPTIONS', 'TRACE']\nconst safeMethodsSet = new Set(safeMethods)\n\nconst requestMode = ['navigate', 'same-origin', 'no-cors', 'cors']\n\nconst requestCredentials = ['omit', 'same-origin', 'include']\n\nconst requestCache = [\n 'default',\n 'no-store',\n 'reload',\n 'no-cache',\n 'force-cache',\n 'only-if-cached'\n]\n\n// https://fetch.spec.whatwg.org/#request-body-header-name\nconst requestBodyHeader = [\n 'content-encoding',\n 'content-language',\n 'content-location',\n 'content-type',\n // See https://github.com/nodejs/undici/issues/2021\n // 'Content-Length' is a forbidden header name, which is typically\n // removed in the Headers implementation. However, undici doesn't\n // filter out headers, so we add it here.\n 'content-length'\n]\n\n// https://fetch.spec.whatwg.org/#enumdef-requestduplex\nconst requestDuplex = [\n 'half'\n]\n\n// http://fetch.spec.whatwg.org/#forbidden-method\nconst forbiddenMethods = ['CONNECT', 'TRACE', 'TRACK']\nconst forbiddenMethodsSet = new Set(forbiddenMethods)\n\nconst subresource = [\n 'audio',\n 'audioworklet',\n 'font',\n 'image',\n 'manifest',\n 'paintworklet',\n 'script',\n 'style',\n 'track',\n 'video',\n 'xslt',\n ''\n]\nconst subresourceSet = new Set(subresource)\n\n/** @type {globalThis['DOMException']} */\nconst DOMException = globalThis.DOMException ?? (() => {\n // DOMException was only made a global in Node v17.0.0,\n // but fetch supports >= v16.8.\n try {\n atob('~')\n } catch (err) {\n return Object.getPrototypeOf(err).constructor\n }\n})()\n\nlet channel\n\n/** @type {globalThis['structuredClone']} */\nconst structuredClone =\n globalThis.structuredClone ??\n // https://github.com/nodejs/node/blob/b27ae24dcc4251bad726d9d84baf678d1f707fed/lib/internal/structured_clone.js\n // structuredClone was added in v17.0.0, but fetch supports v16.8\n function structuredClone (value, options = undefined) {\n if (arguments.length === 0) {\n throw new TypeError('missing argument')\n }\n\n if (!channel) {\n channel = new MessageChannel()\n }\n channel.port1.unref()\n channel.port2.unref()\n channel.port1.postMessage(value, options?.transfer)\n return receiveMessageOnPort(channel.port2).message\n }\n\nmodule.exports = {\n DOMException,\n structuredClone,\n subresource,\n forbiddenMethods,\n requestBodyHeader,\n referrerPolicy,\n requestRedirect,\n requestMode,\n requestCredentials,\n requestCache,\n redirectStatus,\n corsSafeListedMethods,\n nullBodyStatus,\n safeMethods,\n badPorts,\n requestDuplex,\n subresourceSet,\n badPortsSet,\n redirectStatusSet,\n corsSafeListedMethodsSet,\n safeMethodsSet,\n forbiddenMethodsSet,\n referrerPolicySet\n}\n","const assert = require('assert')\nconst { atob } = require('buffer')\nconst { isomorphicDecode } = require('./util')\n\nconst encoder = new TextEncoder()\n\n/**\n * @see https://mimesniff.spec.whatwg.org/#http-token-code-point\n */\nconst HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/\nconst HTTP_WHITESPACE_REGEX = /(\\u000A|\\u000D|\\u0009|\\u0020)/ // eslint-disable-line\n/**\n * @see https://mimesniff.spec.whatwg.org/#http-quoted-string-token-code-point\n */\nconst HTTP_QUOTED_STRING_TOKENS = /[\\u0009|\\u0020-\\u007E|\\u0080-\\u00FF]/ // eslint-disable-line\n\n// https://fetch.spec.whatwg.org/#data-url-processor\n/** @param {URL} dataURL */\nfunction dataURLProcessor (dataURL) {\n // 1. Assert: dataURL’s scheme is \"data\".\n assert(dataURL.protocol === 'data:')\n\n // 2. Let input be the result of running the URL\n // serializer on dataURL with exclude fragment\n // set to true.\n let input = URLSerializer(dataURL, true)\n\n // 3. Remove the leading \"data:\" string from input.\n input = input.slice(5)\n\n // 4. Let position point at the start of input.\n const position = { position: 0 }\n\n // 5. Let mimeType be the result of collecting a\n // sequence of code points that are not equal\n // to U+002C (,), given position.\n let mimeType = collectASequenceOfCodePointsFast(\n ',',\n input,\n position\n )\n\n // 6. Strip leading and trailing ASCII whitespace\n // from mimeType.\n // Undici implementation note: we need to store the\n // length because if the mimetype has spaces removed,\n // the wrong amount will be sliced from the input in\n // step #9\n const mimeTypeLength = mimeType.length\n mimeType = removeASCIIWhitespace(mimeType, true, true)\n\n // 7. If position is past the end of input, then\n // return failure\n if (position.position >= input.length) {\n return 'failure'\n }\n\n // 8. Advance position by 1.\n position.position++\n\n // 9. Let encodedBody be the remainder of input.\n const encodedBody = input.slice(mimeTypeLength + 1)\n\n // 10. Let body be the percent-decoding of encodedBody.\n let body = stringPercentDecode(encodedBody)\n\n // 11. If mimeType ends with U+003B (;), followed by\n // zero or more U+0020 SPACE, followed by an ASCII\n // case-insensitive match for \"base64\", then:\n if (/;(\\u0020){0,}base64$/i.test(mimeType)) {\n // 1. Let stringBody be the isomorphic decode of body.\n const stringBody = isomorphicDecode(body)\n\n // 2. Set body to the forgiving-base64 decode of\n // stringBody.\n body = forgivingBase64(stringBody)\n\n // 3. If body is failure, then return failure.\n if (body === 'failure') {\n return 'failure'\n }\n\n // 4. Remove the last 6 code points from mimeType.\n mimeType = mimeType.slice(0, -6)\n\n // 5. Remove trailing U+0020 SPACE code points from mimeType,\n // if any.\n mimeType = mimeType.replace(/(\\u0020)+$/, '')\n\n // 6. Remove the last U+003B (;) code point from mimeType.\n mimeType = mimeType.slice(0, -1)\n }\n\n // 12. If mimeType starts with U+003B (;), then prepend\n // \"text/plain\" to mimeType.\n if (mimeType.startsWith(';')) {\n mimeType = 'text/plain' + mimeType\n }\n\n // 13. Let mimeTypeRecord be the result of parsing\n // mimeType.\n let mimeTypeRecord = parseMIMEType(mimeType)\n\n // 14. If mimeTypeRecord is failure, then set\n // mimeTypeRecord to text/plain;charset=US-ASCII.\n if (mimeTypeRecord === 'failure') {\n mimeTypeRecord = parseMIMEType('text/plain;charset=US-ASCII')\n }\n\n // 15. Return a new data: URL struct whose MIME\n // type is mimeTypeRecord and body is body.\n // https://fetch.spec.whatwg.org/#data-url-struct\n return { mimeType: mimeTypeRecord, body }\n}\n\n// https://url.spec.whatwg.org/#concept-url-serializer\n/**\n * @param {URL} url\n * @param {boolean} excludeFragment\n */\nfunction URLSerializer (url, excludeFragment = false) {\n if (!excludeFragment) {\n return url.href\n }\n\n const href = url.href\n const hashLength = url.hash.length\n\n return hashLength === 0 ? href : href.substring(0, href.length - hashLength)\n}\n\n// https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points\n/**\n * @param {(char: string) => boolean} condition\n * @param {string} input\n * @param {{ position: number }} position\n */\nfunction collectASequenceOfCodePoints (condition, input, position) {\n // 1. Let result be the empty string.\n let result = ''\n\n // 2. While position doesn’t point past the end of input and the\n // code point at position within input meets the condition condition:\n while (position.position < input.length && condition(input[position.position])) {\n // 1. Append that code point to the end of result.\n result += input[position.position]\n\n // 2. Advance position by 1.\n position.position++\n }\n\n // 3. Return result.\n return result\n}\n\n/**\n * A faster collectASequenceOfCodePoints that only works when comparing a single character.\n * @param {string} char\n * @param {string} input\n * @param {{ position: number }} position\n */\nfunction collectASequenceOfCodePointsFast (char, input, position) {\n const idx = input.indexOf(char, position.position)\n const start = position.position\n\n if (idx === -1) {\n position.position = input.length\n return input.slice(start)\n }\n\n position.position = idx\n return input.slice(start, position.position)\n}\n\n// https://url.spec.whatwg.org/#string-percent-decode\n/** @param {string} input */\nfunction stringPercentDecode (input) {\n // 1. Let bytes be the UTF-8 encoding of input.\n const bytes = encoder.encode(input)\n\n // 2. Return the percent-decoding of bytes.\n return percentDecode(bytes)\n}\n\n// https://url.spec.whatwg.org/#percent-decode\n/** @param {Uint8Array} input */\nfunction percentDecode (input) {\n // 1. Let output be an empty byte sequence.\n /** @type {number[]} */\n const output = []\n\n // 2. For each byte byte in input:\n for (let i = 0; i < input.length; i++) {\n const byte = input[i]\n\n // 1. If byte is not 0x25 (%), then append byte to output.\n if (byte !== 0x25) {\n output.push(byte)\n\n // 2. Otherwise, if byte is 0x25 (%) and the next two bytes\n // after byte in input are not in the ranges\n // 0x30 (0) to 0x39 (9), 0x41 (A) to 0x46 (F),\n // and 0x61 (a) to 0x66 (f), all inclusive, append byte\n // to output.\n } else if (\n byte === 0x25 &&\n !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2]))\n ) {\n output.push(0x25)\n\n // 3. Otherwise:\n } else {\n // 1. Let bytePoint be the two bytes after byte in input,\n // decoded, and then interpreted as hexadecimal number.\n const nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2])\n const bytePoint = Number.parseInt(nextTwoBytes, 16)\n\n // 2. Append a byte whose value is bytePoint to output.\n output.push(bytePoint)\n\n // 3. Skip the next two bytes in input.\n i += 2\n }\n }\n\n // 3. Return output.\n return Uint8Array.from(output)\n}\n\n// https://mimesniff.spec.whatwg.org/#parse-a-mime-type\n/** @param {string} input */\nfunction parseMIMEType (input) {\n // 1. Remove any leading and trailing HTTP whitespace\n // from input.\n input = removeHTTPWhitespace(input, true, true)\n\n // 2. Let position be a position variable for input,\n // initially pointing at the start of input.\n const position = { position: 0 }\n\n // 3. Let type be the result of collecting a sequence\n // of code points that are not U+002F (/) from\n // input, given position.\n const type = collectASequenceOfCodePointsFast(\n '/',\n input,\n position\n )\n\n // 4. If type is the empty string or does not solely\n // contain HTTP token code points, then return failure.\n // https://mimesniff.spec.whatwg.org/#http-token-code-point\n if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) {\n return 'failure'\n }\n\n // 5. If position is past the end of input, then return\n // failure\n if (position.position > input.length) {\n return 'failure'\n }\n\n // 6. Advance position by 1. (This skips past U+002F (/).)\n position.position++\n\n // 7. Let subtype be the result of collecting a sequence of\n // code points that are not U+003B (;) from input, given\n // position.\n let subtype = collectASequenceOfCodePointsFast(\n ';',\n input,\n position\n )\n\n // 8. Remove any trailing HTTP whitespace from subtype.\n subtype = removeHTTPWhitespace(subtype, false, true)\n\n // 9. If subtype is the empty string or does not solely\n // contain HTTP token code points, then return failure.\n if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) {\n return 'failure'\n }\n\n const typeLowercase = type.toLowerCase()\n const subtypeLowercase = subtype.toLowerCase()\n\n // 10. Let mimeType be a new MIME type record whose type\n // is type, in ASCII lowercase, and subtype is subtype,\n // in ASCII lowercase.\n // https://mimesniff.spec.whatwg.org/#mime-type\n const mimeType = {\n type: typeLowercase,\n subtype: subtypeLowercase,\n /** @type {Map} */\n parameters: new Map(),\n // https://mimesniff.spec.whatwg.org/#mime-type-essence\n essence: `${typeLowercase}/${subtypeLowercase}`\n }\n\n // 11. While position is not past the end of input:\n while (position.position < input.length) {\n // 1. Advance position by 1. (This skips past U+003B (;).)\n position.position++\n\n // 2. Collect a sequence of code points that are HTTP\n // whitespace from input given position.\n collectASequenceOfCodePoints(\n // https://fetch.spec.whatwg.org/#http-whitespace\n char => HTTP_WHITESPACE_REGEX.test(char),\n input,\n position\n )\n\n // 3. Let parameterName be the result of collecting a\n // sequence of code points that are not U+003B (;)\n // or U+003D (=) from input, given position.\n let parameterName = collectASequenceOfCodePoints(\n (char) => char !== ';' && char !== '=',\n input,\n position\n )\n\n // 4. Set parameterName to parameterName, in ASCII\n // lowercase.\n parameterName = parameterName.toLowerCase()\n\n // 5. If position is not past the end of input, then:\n if (position.position < input.length) {\n // 1. If the code point at position within input is\n // U+003B (;), then continue.\n if (input[position.position] === ';') {\n continue\n }\n\n // 2. Advance position by 1. (This skips past U+003D (=).)\n position.position++\n }\n\n // 6. If position is past the end of input, then break.\n if (position.position > input.length) {\n break\n }\n\n // 7. Let parameterValue be null.\n let parameterValue = null\n\n // 8. If the code point at position within input is\n // U+0022 (\"), then:\n if (input[position.position] === '\"') {\n // 1. Set parameterValue to the result of collecting\n // an HTTP quoted string from input, given position\n // and the extract-value flag.\n parameterValue = collectAnHTTPQuotedString(input, position, true)\n\n // 2. Collect a sequence of code points that are not\n // U+003B (;) from input, given position.\n collectASequenceOfCodePointsFast(\n ';',\n input,\n position\n )\n\n // 9. Otherwise:\n } else {\n // 1. Set parameterValue to the result of collecting\n // a sequence of code points that are not U+003B (;)\n // from input, given position.\n parameterValue = collectASequenceOfCodePointsFast(\n ';',\n input,\n position\n )\n\n // 2. Remove any trailing HTTP whitespace from parameterValue.\n parameterValue = removeHTTPWhitespace(parameterValue, false, true)\n\n // 3. If parameterValue is the empty string, then continue.\n if (parameterValue.length === 0) {\n continue\n }\n }\n\n // 10. If all of the following are true\n // - parameterName is not the empty string\n // - parameterName solely contains HTTP token code points\n // - parameterValue solely contains HTTP quoted-string token code points\n // - mimeType’s parameters[parameterName] does not exist\n // then set mimeType’s parameters[parameterName] to parameterValue.\n if (\n parameterName.length !== 0 &&\n HTTP_TOKEN_CODEPOINTS.test(parameterName) &&\n (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) &&\n !mimeType.parameters.has(parameterName)\n ) {\n mimeType.parameters.set(parameterName, parameterValue)\n }\n }\n\n // 12. Return mimeType.\n return mimeType\n}\n\n// https://infra.spec.whatwg.org/#forgiving-base64-decode\n/** @param {string} data */\nfunction forgivingBase64 (data) {\n // 1. Remove all ASCII whitespace from data.\n data = data.replace(/[\\u0009\\u000A\\u000C\\u000D\\u0020]/g, '') // eslint-disable-line\n\n // 2. If data’s code point length divides by 4 leaving\n // no remainder, then:\n if (data.length % 4 === 0) {\n // 1. If data ends with one or two U+003D (=) code points,\n // then remove them from data.\n data = data.replace(/=?=$/, '')\n }\n\n // 3. If data’s code point length divides by 4 leaving\n // a remainder of 1, then return failure.\n if (data.length % 4 === 1) {\n return 'failure'\n }\n\n // 4. If data contains a code point that is not one of\n // U+002B (+)\n // U+002F (/)\n // ASCII alphanumeric\n // then return failure.\n if (/[^+/0-9A-Za-z]/.test(data)) {\n return 'failure'\n }\n\n const binary = atob(data)\n const bytes = new Uint8Array(binary.length)\n\n for (let byte = 0; byte < binary.length; byte++) {\n bytes[byte] = binary.charCodeAt(byte)\n }\n\n return bytes\n}\n\n// https://fetch.spec.whatwg.org/#collect-an-http-quoted-string\n// tests: https://fetch.spec.whatwg.org/#example-http-quoted-string\n/**\n * @param {string} input\n * @param {{ position: number }} position\n * @param {boolean?} extractValue\n */\nfunction collectAnHTTPQuotedString (input, position, extractValue) {\n // 1. Let positionStart be position.\n const positionStart = position.position\n\n // 2. Let value be the empty string.\n let value = ''\n\n // 3. Assert: the code point at position within input\n // is U+0022 (\").\n assert(input[position.position] === '\"')\n\n // 4. Advance position by 1.\n position.position++\n\n // 5. While true:\n while (true) {\n // 1. Append the result of collecting a sequence of code points\n // that are not U+0022 (\") or U+005C (\\) from input, given\n // position, to value.\n value += collectASequenceOfCodePoints(\n (char) => char !== '\"' && char !== '\\\\',\n input,\n position\n )\n\n // 2. If position is past the end of input, then break.\n if (position.position >= input.length) {\n break\n }\n\n // 3. Let quoteOrBackslash be the code point at position within\n // input.\n const quoteOrBackslash = input[position.position]\n\n // 4. Advance position by 1.\n position.position++\n\n // 5. If quoteOrBackslash is U+005C (\\), then:\n if (quoteOrBackslash === '\\\\') {\n // 1. If position is past the end of input, then append\n // U+005C (\\) to value and break.\n if (position.position >= input.length) {\n value += '\\\\'\n break\n }\n\n // 2. Append the code point at position within input to value.\n value += input[position.position]\n\n // 3. Advance position by 1.\n position.position++\n\n // 6. Otherwise:\n } else {\n // 1. Assert: quoteOrBackslash is U+0022 (\").\n assert(quoteOrBackslash === '\"')\n\n // 2. Break.\n break\n }\n }\n\n // 6. If the extract-value flag is set, then return value.\n if (extractValue) {\n return value\n }\n\n // 7. Return the code points from positionStart to position,\n // inclusive, within input.\n return input.slice(positionStart, position.position)\n}\n\n/**\n * @see https://mimesniff.spec.whatwg.org/#serialize-a-mime-type\n */\nfunction serializeAMimeType (mimeType) {\n assert(mimeType !== 'failure')\n const { parameters, essence } = mimeType\n\n // 1. Let serialization be the concatenation of mimeType’s\n // type, U+002F (/), and mimeType’s subtype.\n let serialization = essence\n\n // 2. For each name → value of mimeType’s parameters:\n for (let [name, value] of parameters.entries()) {\n // 1. Append U+003B (;) to serialization.\n serialization += ';'\n\n // 2. Append name to serialization.\n serialization += name\n\n // 3. Append U+003D (=) to serialization.\n serialization += '='\n\n // 4. If value does not solely contain HTTP token code\n // points or value is the empty string, then:\n if (!HTTP_TOKEN_CODEPOINTS.test(value)) {\n // 1. Precede each occurence of U+0022 (\") or\n // U+005C (\\) in value with U+005C (\\).\n value = value.replace(/(\\\\|\")/g, '\\\\$1')\n\n // 2. Prepend U+0022 (\") to value.\n value = '\"' + value\n\n // 3. Append U+0022 (\") to value.\n value += '\"'\n }\n\n // 5. Append value to serialization.\n serialization += value\n }\n\n // 3. Return serialization.\n return serialization\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-whitespace\n * @param {string} char\n */\nfunction isHTTPWhiteSpace (char) {\n return char === '\\r' || char === '\\n' || char === '\\t' || char === ' '\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-whitespace\n * @param {string} str\n */\nfunction removeHTTPWhitespace (str, leading = true, trailing = true) {\n let lead = 0\n let trail = str.length - 1\n\n if (leading) {\n for (; lead < str.length && isHTTPWhiteSpace(str[lead]); lead++);\n }\n\n if (trailing) {\n for (; trail > 0 && isHTTPWhiteSpace(str[trail]); trail--);\n }\n\n return str.slice(lead, trail + 1)\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#ascii-whitespace\n * @param {string} char\n */\nfunction isASCIIWhitespace (char) {\n return char === '\\r' || char === '\\n' || char === '\\t' || char === '\\f' || char === ' '\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace\n */\nfunction removeASCIIWhitespace (str, leading = true, trailing = true) {\n let lead = 0\n let trail = str.length - 1\n\n if (leading) {\n for (; lead < str.length && isASCIIWhitespace(str[lead]); lead++);\n }\n\n if (trailing) {\n for (; trail > 0 && isASCIIWhitespace(str[trail]); trail--);\n }\n\n return str.slice(lead, trail + 1)\n}\n\nmodule.exports = {\n dataURLProcessor,\n URLSerializer,\n collectASequenceOfCodePoints,\n collectASequenceOfCodePointsFast,\n stringPercentDecode,\n parseMIMEType,\n collectAnHTTPQuotedString,\n serializeAMimeType\n}\n","'use strict'\n\nconst { Blob, File: NativeFile } = require('buffer')\nconst { types } = require('util')\nconst { kState } = require('./symbols')\nconst { isBlobLike } = require('./util')\nconst { webidl } = require('./webidl')\nconst { parseMIMEType, serializeAMimeType } = require('./dataURL')\nconst { kEnumerableProperty } = require('../core/util')\nconst encoder = new TextEncoder()\n\nclass File extends Blob {\n constructor (fileBits, fileName, options = {}) {\n // The File constructor is invoked with two or three parameters, depending\n // on whether the optional dictionary parameter is used. When the File()\n // constructor is invoked, user agents must run the following steps:\n webidl.argumentLengthCheck(arguments, 2, { header: 'File constructor' })\n\n fileBits = webidl.converters['sequence'](fileBits)\n fileName = webidl.converters.USVString(fileName)\n options = webidl.converters.FilePropertyBag(options)\n\n // 1. Let bytes be the result of processing blob parts given fileBits and\n // options.\n // Note: Blob handles this for us\n\n // 2. Let n be the fileName argument to the constructor.\n const n = fileName\n\n // 3. Process FilePropertyBag dictionary argument by running the following\n // substeps:\n\n // 1. If the type member is provided and is not the empty string, let t\n // be set to the type dictionary member. If t contains any characters\n // outside the range U+0020 to U+007E, then set t to the empty string\n // and return from these substeps.\n // 2. Convert every character in t to ASCII lowercase.\n let t = options.type\n let d\n\n // eslint-disable-next-line no-labels\n substep: {\n if (t) {\n t = parseMIMEType(t)\n\n if (t === 'failure') {\n t = ''\n // eslint-disable-next-line no-labels\n break substep\n }\n\n t = serializeAMimeType(t).toLowerCase()\n }\n\n // 3. If the lastModified member is provided, let d be set to the\n // lastModified dictionary member. If it is not provided, set d to the\n // current date and time represented as the number of milliseconds since\n // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]).\n d = options.lastModified\n }\n\n // 4. Return a new File object F such that:\n // F refers to the bytes byte sequence.\n // F.size is set to the number of total bytes in bytes.\n // F.name is set to n.\n // F.type is set to t.\n // F.lastModified is set to d.\n\n super(processBlobParts(fileBits, options), { type: t })\n this[kState] = {\n name: n,\n lastModified: d,\n type: t\n }\n }\n\n get name () {\n webidl.brandCheck(this, File)\n\n return this[kState].name\n }\n\n get lastModified () {\n webidl.brandCheck(this, File)\n\n return this[kState].lastModified\n }\n\n get type () {\n webidl.brandCheck(this, File)\n\n return this[kState].type\n }\n}\n\nclass FileLike {\n constructor (blobLike, fileName, options = {}) {\n // TODO: argument idl type check\n\n // The File constructor is invoked with two or three parameters, depending\n // on whether the optional dictionary parameter is used. When the File()\n // constructor is invoked, user agents must run the following steps:\n\n // 1. Let bytes be the result of processing blob parts given fileBits and\n // options.\n\n // 2. Let n be the fileName argument to the constructor.\n const n = fileName\n\n // 3. Process FilePropertyBag dictionary argument by running the following\n // substeps:\n\n // 1. If the type member is provided and is not the empty string, let t\n // be set to the type dictionary member. If t contains any characters\n // outside the range U+0020 to U+007E, then set t to the empty string\n // and return from these substeps.\n // TODO\n const t = options.type\n\n // 2. Convert every character in t to ASCII lowercase.\n // TODO\n\n // 3. If the lastModified member is provided, let d be set to the\n // lastModified dictionary member. If it is not provided, set d to the\n // current date and time represented as the number of milliseconds since\n // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]).\n const d = options.lastModified ?? Date.now()\n\n // 4. Return a new File object F such that:\n // F refers to the bytes byte sequence.\n // F.size is set to the number of total bytes in bytes.\n // F.name is set to n.\n // F.type is set to t.\n // F.lastModified is set to d.\n\n this[kState] = {\n blobLike,\n name: n,\n type: t,\n lastModified: d\n }\n }\n\n stream (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.stream(...args)\n }\n\n arrayBuffer (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.arrayBuffer(...args)\n }\n\n slice (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.slice(...args)\n }\n\n text (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.text(...args)\n }\n\n get size () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.size\n }\n\n get type () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.type\n }\n\n get name () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].name\n }\n\n get lastModified () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].lastModified\n }\n\n get [Symbol.toStringTag] () {\n return 'File'\n }\n}\n\nObject.defineProperties(File.prototype, {\n [Symbol.toStringTag]: {\n value: 'File',\n configurable: true\n },\n name: kEnumerableProperty,\n lastModified: kEnumerableProperty\n})\n\nwebidl.converters.Blob = webidl.interfaceConverter(Blob)\n\nwebidl.converters.BlobPart = function (V, opts) {\n if (webidl.util.Type(V) === 'Object') {\n if (isBlobLike(V)) {\n return webidl.converters.Blob(V, { strict: false })\n }\n\n if (\n ArrayBuffer.isView(V) ||\n types.isAnyArrayBuffer(V)\n ) {\n return webidl.converters.BufferSource(V, opts)\n }\n }\n\n return webidl.converters.USVString(V, opts)\n}\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.BlobPart\n)\n\n// https://www.w3.org/TR/FileAPI/#dfn-FilePropertyBag\nwebidl.converters.FilePropertyBag = webidl.dictionaryConverter([\n {\n key: 'lastModified',\n converter: webidl.converters['long long'],\n get defaultValue () {\n return Date.now()\n }\n },\n {\n key: 'type',\n converter: webidl.converters.DOMString,\n defaultValue: ''\n },\n {\n key: 'endings',\n converter: (value) => {\n value = webidl.converters.DOMString(value)\n value = value.toLowerCase()\n\n if (value !== 'native') {\n value = 'transparent'\n }\n\n return value\n },\n defaultValue: 'transparent'\n }\n])\n\n/**\n * @see https://www.w3.org/TR/FileAPI/#process-blob-parts\n * @param {(NodeJS.TypedArray|Blob|string)[]} parts\n * @param {{ type: string, endings: string }} options\n */\nfunction processBlobParts (parts, options) {\n // 1. Let bytes be an empty sequence of bytes.\n /** @type {NodeJS.TypedArray[]} */\n const bytes = []\n\n // 2. For each element in parts:\n for (const element of parts) {\n // 1. If element is a USVString, run the following substeps:\n if (typeof element === 'string') {\n // 1. Let s be element.\n let s = element\n\n // 2. If the endings member of options is \"native\", set s\n // to the result of converting line endings to native\n // of element.\n if (options.endings === 'native') {\n s = convertLineEndingsNative(s)\n }\n\n // 3. Append the result of UTF-8 encoding s to bytes.\n bytes.push(encoder.encode(s))\n } else if (\n types.isAnyArrayBuffer(element) ||\n types.isTypedArray(element)\n ) {\n // 2. If element is a BufferSource, get a copy of the\n // bytes held by the buffer source, and append those\n // bytes to bytes.\n if (!element.buffer) { // ArrayBuffer\n bytes.push(new Uint8Array(element))\n } else {\n bytes.push(\n new Uint8Array(element.buffer, element.byteOffset, element.byteLength)\n )\n }\n } else if (isBlobLike(element)) {\n // 3. If element is a Blob, append the bytes it represents\n // to bytes.\n bytes.push(element)\n }\n }\n\n // 3. Return bytes.\n return bytes\n}\n\n/**\n * @see https://www.w3.org/TR/FileAPI/#convert-line-endings-to-native\n * @param {string} s\n */\nfunction convertLineEndingsNative (s) {\n // 1. Let native line ending be be the code point U+000A LF.\n let nativeLineEnding = '\\n'\n\n // 2. If the underlying platform’s conventions are to\n // represent newlines as a carriage return and line feed\n // sequence, set native line ending to the code point\n // U+000D CR followed by the code point U+000A LF.\n if (process.platform === 'win32') {\n nativeLineEnding = '\\r\\n'\n }\n\n return s.replace(/\\r?\\n/g, nativeLineEnding)\n}\n\n// If this function is moved to ./util.js, some tools (such as\n// rollup) will warn about circular dependencies. See:\n// https://github.com/nodejs/undici/issues/1629\nfunction isFileLike (object) {\n return (\n (NativeFile && object instanceof NativeFile) ||\n object instanceof File || (\n object &&\n (typeof object.stream === 'function' ||\n typeof object.arrayBuffer === 'function') &&\n object[Symbol.toStringTag] === 'File'\n )\n )\n}\n\nmodule.exports = { File, FileLike, isFileLike }\n","'use strict'\n\nconst { isBlobLike, toUSVString, makeIterator } = require('./util')\nconst { kState } = require('./symbols')\nconst { File: UndiciFile, FileLike, isFileLike } = require('./file')\nconst { webidl } = require('./webidl')\nconst { Blob, File: NativeFile } = require('buffer')\n\n/** @type {globalThis['File']} */\nconst File = NativeFile ?? UndiciFile\n\n// https://xhr.spec.whatwg.org/#formdata\nclass FormData {\n constructor (form) {\n if (form !== undefined) {\n throw webidl.errors.conversionFailed({\n prefix: 'FormData constructor',\n argument: 'Argument 1',\n types: ['undefined']\n })\n }\n\n this[kState] = []\n }\n\n append (name, value, filename = undefined) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.append' })\n\n if (arguments.length === 3 && !isBlobLike(value)) {\n throw new TypeError(\n \"Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'\"\n )\n }\n\n // 1. Let value be value if given; otherwise blobValue.\n\n name = webidl.converters.USVString(name)\n value = isBlobLike(value)\n ? webidl.converters.Blob(value, { strict: false })\n : webidl.converters.USVString(value)\n filename = arguments.length === 3\n ? webidl.converters.USVString(filename)\n : undefined\n\n // 2. Let entry be the result of creating an entry with\n // name, value, and filename if given.\n const entry = makeEntry(name, value, filename)\n\n // 3. Append entry to this’s entry list.\n this[kState].push(entry)\n }\n\n delete (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.delete' })\n\n name = webidl.converters.USVString(name)\n\n // The delete(name) method steps are to remove all entries whose name\n // is name from this’s entry list.\n this[kState] = this[kState].filter(entry => entry.name !== name)\n }\n\n get (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.get' })\n\n name = webidl.converters.USVString(name)\n\n // 1. If there is no entry whose name is name in this’s entry list,\n // then return null.\n const idx = this[kState].findIndex((entry) => entry.name === name)\n if (idx === -1) {\n return null\n }\n\n // 2. Return the value of the first entry whose name is name from\n // this’s entry list.\n return this[kState][idx].value\n }\n\n getAll (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.getAll' })\n\n name = webidl.converters.USVString(name)\n\n // 1. If there is no entry whose name is name in this’s entry list,\n // then return the empty list.\n // 2. Return the values of all entries whose name is name, in order,\n // from this’s entry list.\n return this[kState]\n .filter((entry) => entry.name === name)\n .map((entry) => entry.value)\n }\n\n has (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.has' })\n\n name = webidl.converters.USVString(name)\n\n // The has(name) method steps are to return true if there is an entry\n // whose name is name in this’s entry list; otherwise false.\n return this[kState].findIndex((entry) => entry.name === name) !== -1\n }\n\n set (name, value, filename = undefined) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.set' })\n\n if (arguments.length === 3 && !isBlobLike(value)) {\n throw new TypeError(\n \"Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'\"\n )\n }\n\n // The set(name, value) and set(name, blobValue, filename) method steps\n // are:\n\n // 1. Let value be value if given; otherwise blobValue.\n\n name = webidl.converters.USVString(name)\n value = isBlobLike(value)\n ? webidl.converters.Blob(value, { strict: false })\n : webidl.converters.USVString(value)\n filename = arguments.length === 3\n ? toUSVString(filename)\n : undefined\n\n // 2. Let entry be the result of creating an entry with name, value, and\n // filename if given.\n const entry = makeEntry(name, value, filename)\n\n // 3. If there are entries in this’s entry list whose name is name, then\n // replace the first such entry with entry and remove the others.\n const idx = this[kState].findIndex((entry) => entry.name === name)\n if (idx !== -1) {\n this[kState] = [\n ...this[kState].slice(0, idx),\n entry,\n ...this[kState].slice(idx + 1).filter((entry) => entry.name !== name)\n ]\n } else {\n // 4. Otherwise, append entry to this’s entry list.\n this[kState].push(entry)\n }\n }\n\n entries () {\n webidl.brandCheck(this, FormData)\n\n return makeIterator(\n () => this[kState].map(pair => [pair.name, pair.value]),\n 'FormData',\n 'key+value'\n )\n }\n\n keys () {\n webidl.brandCheck(this, FormData)\n\n return makeIterator(\n () => this[kState].map(pair => [pair.name, pair.value]),\n 'FormData',\n 'key'\n )\n }\n\n values () {\n webidl.brandCheck(this, FormData)\n\n return makeIterator(\n () => this[kState].map(pair => [pair.name, pair.value]),\n 'FormData',\n 'value'\n )\n }\n\n /**\n * @param {(value: string, key: string, self: FormData) => void} callbackFn\n * @param {unknown} thisArg\n */\n forEach (callbackFn, thisArg = globalThis) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.forEach' })\n\n if (typeof callbackFn !== 'function') {\n throw new TypeError(\n \"Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'.\"\n )\n }\n\n for (const [key, value] of this) {\n callbackFn.apply(thisArg, [value, key, this])\n }\n }\n}\n\nFormData.prototype[Symbol.iterator] = FormData.prototype.entries\n\nObject.defineProperties(FormData.prototype, {\n [Symbol.toStringTag]: {\n value: 'FormData',\n configurable: true\n }\n})\n\n/**\n * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#create-an-entry\n * @param {string} name\n * @param {string|Blob} value\n * @param {?string} filename\n * @returns\n */\nfunction makeEntry (name, value, filename) {\n // 1. Set name to the result of converting name into a scalar value string.\n // \"To convert a string into a scalar value string, replace any surrogates\n // with U+FFFD.\"\n // see: https://nodejs.org/dist/latest-v18.x/docs/api/buffer.html#buftostringencoding-start-end\n name = Buffer.from(name).toString('utf8')\n\n // 2. If value is a string, then set value to the result of converting\n // value into a scalar value string.\n if (typeof value === 'string') {\n value = Buffer.from(value).toString('utf8')\n } else {\n // 3. Otherwise:\n\n // 1. If value is not a File object, then set value to a new File object,\n // representing the same bytes, whose name attribute value is \"blob\"\n if (!isFileLike(value)) {\n value = value instanceof Blob\n ? new File([value], 'blob', { type: value.type })\n : new FileLike(value, 'blob', { type: value.type })\n }\n\n // 2. If filename is given, then set value to a new File object,\n // representing the same bytes, whose name attribute is filename.\n if (filename !== undefined) {\n /** @type {FilePropertyBag} */\n const options = {\n type: value.type,\n lastModified: value.lastModified\n }\n\n value = (NativeFile && value instanceof NativeFile) || value instanceof UndiciFile\n ? new File([value], filename, options)\n : new FileLike(value, filename, options)\n }\n }\n\n // 4. Return an entry whose name is name and whose value is value.\n return { name, value }\n}\n\nmodule.exports = { FormData }\n","'use strict'\n\n// In case of breaking changes, increase the version\n// number to avoid conflicts.\nconst globalOrigin = Symbol.for('undici.globalOrigin.1')\n\nfunction getGlobalOrigin () {\n return globalThis[globalOrigin]\n}\n\nfunction setGlobalOrigin (newOrigin) {\n if (newOrigin === undefined) {\n Object.defineProperty(globalThis, globalOrigin, {\n value: undefined,\n writable: true,\n enumerable: false,\n configurable: false\n })\n\n return\n }\n\n const parsedURL = new URL(newOrigin)\n\n if (parsedURL.protocol !== 'http:' && parsedURL.protocol !== 'https:') {\n throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`)\n }\n\n Object.defineProperty(globalThis, globalOrigin, {\n value: parsedURL,\n writable: true,\n enumerable: false,\n configurable: false\n })\n}\n\nmodule.exports = {\n getGlobalOrigin,\n setGlobalOrigin\n}\n","// https://github.com/Ethan-Arrowood/undici-fetch\n\n'use strict'\n\nconst { kHeadersList, kConstruct } = require('../core/symbols')\nconst { kGuard } = require('./symbols')\nconst { kEnumerableProperty } = require('../core/util')\nconst {\n makeIterator,\n isValidHeaderName,\n isValidHeaderValue\n} = require('./util')\nconst { webidl } = require('./webidl')\nconst assert = require('assert')\n\nconst kHeadersMap = Symbol('headers map')\nconst kHeadersSortedMap = Symbol('headers map sorted')\n\n/**\n * @param {number} code\n */\nfunction isHTTPWhiteSpaceCharCode (code) {\n return code === 0x00a || code === 0x00d || code === 0x009 || code === 0x020\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-header-value-normalize\n * @param {string} potentialValue\n */\nfunction headerValueNormalize (potentialValue) {\n // To normalize a byte sequence potentialValue, remove\n // any leading and trailing HTTP whitespace bytes from\n // potentialValue.\n let i = 0; let j = potentialValue.length\n\n while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j\n while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i\n\n return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j)\n}\n\nfunction fill (headers, object) {\n // To fill a Headers object headers with a given object object, run these steps:\n\n // 1. If object is a sequence, then for each header in object:\n // Note: webidl conversion to array has already been done.\n if (Array.isArray(object)) {\n for (let i = 0; i < object.length; ++i) {\n const header = object[i]\n // 1. If header does not contain exactly two items, then throw a TypeError.\n if (header.length !== 2) {\n throw webidl.errors.exception({\n header: 'Headers constructor',\n message: `expected name/value pair to be length 2, found ${header.length}.`\n })\n }\n\n // 2. Append (header’s first item, header’s second item) to headers.\n appendHeader(headers, header[0], header[1])\n }\n } else if (typeof object === 'object' && object !== null) {\n // Note: null should throw\n\n // 2. Otherwise, object is a record, then for each key → value in object,\n // append (key, value) to headers\n const keys = Object.keys(object)\n for (let i = 0; i < keys.length; ++i) {\n appendHeader(headers, keys[i], object[keys[i]])\n }\n } else {\n throw webidl.errors.conversionFailed({\n prefix: 'Headers constructor',\n argument: 'Argument 1',\n types: ['sequence>', 'record']\n })\n }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-headers-append\n */\nfunction appendHeader (headers, name, value) {\n // 1. Normalize value.\n value = headerValueNormalize(value)\n\n // 2. If name is not a header name or value is not a\n // header value, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.append',\n value: name,\n type: 'header name'\n })\n } else if (!isValidHeaderValue(value)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.append',\n value,\n type: 'header value'\n })\n }\n\n // 3. If headers’s guard is \"immutable\", then throw a TypeError.\n // 4. Otherwise, if headers’s guard is \"request\" and name is a\n // forbidden header name, return.\n // Note: undici does not implement forbidden header names\n if (headers[kGuard] === 'immutable') {\n throw new TypeError('immutable')\n } else if (headers[kGuard] === 'request-no-cors') {\n // 5. Otherwise, if headers’s guard is \"request-no-cors\":\n // TODO\n }\n\n // 6. Otherwise, if headers’s guard is \"response\" and name is a\n // forbidden response-header name, return.\n\n // 7. Append (name, value) to headers’s header list.\n return headers[kHeadersList].append(name, value)\n\n // 8. If headers’s guard is \"request-no-cors\", then remove\n // privileged no-CORS request headers from headers\n}\n\nclass HeadersList {\n /** @type {[string, string][]|null} */\n cookies = null\n\n constructor (init) {\n if (init instanceof HeadersList) {\n this[kHeadersMap] = new Map(init[kHeadersMap])\n this[kHeadersSortedMap] = init[kHeadersSortedMap]\n this.cookies = init.cookies === null ? null : [...init.cookies]\n } else {\n this[kHeadersMap] = new Map(init)\n this[kHeadersSortedMap] = null\n }\n }\n\n // https://fetch.spec.whatwg.org/#header-list-contains\n contains (name) {\n // A header list list contains a header name name if list\n // contains a header whose name is a byte-case-insensitive\n // match for name.\n name = name.toLowerCase()\n\n return this[kHeadersMap].has(name)\n }\n\n clear () {\n this[kHeadersMap].clear()\n this[kHeadersSortedMap] = null\n this.cookies = null\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-append\n append (name, value) {\n this[kHeadersSortedMap] = null\n\n // 1. If list contains name, then set name to the first such\n // header’s name.\n const lowercaseName = name.toLowerCase()\n const exists = this[kHeadersMap].get(lowercaseName)\n\n // 2. Append (name, value) to list.\n if (exists) {\n const delimiter = lowercaseName === 'cookie' ? '; ' : ', '\n this[kHeadersMap].set(lowercaseName, {\n name: exists.name,\n value: `${exists.value}${delimiter}${value}`\n })\n } else {\n this[kHeadersMap].set(lowercaseName, { name, value })\n }\n\n if (lowercaseName === 'set-cookie') {\n this.cookies ??= []\n this.cookies.push(value)\n }\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-set\n set (name, value) {\n this[kHeadersSortedMap] = null\n const lowercaseName = name.toLowerCase()\n\n if (lowercaseName === 'set-cookie') {\n this.cookies = [value]\n }\n\n // 1. If list contains name, then set the value of\n // the first such header to value and remove the\n // others.\n // 2. Otherwise, append header (name, value) to list.\n this[kHeadersMap].set(lowercaseName, { name, value })\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-delete\n delete (name) {\n this[kHeadersSortedMap] = null\n\n name = name.toLowerCase()\n\n if (name === 'set-cookie') {\n this.cookies = null\n }\n\n this[kHeadersMap].delete(name)\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-get\n get (name) {\n const value = this[kHeadersMap].get(name.toLowerCase())\n\n // 1. If list does not contain name, then return null.\n // 2. Return the values of all headers in list whose name\n // is a byte-case-insensitive match for name,\n // separated from each other by 0x2C 0x20, in order.\n return value === undefined ? null : value.value\n }\n\n * [Symbol.iterator] () {\n // use the lowercased name\n for (const [name, { value }] of this[kHeadersMap]) {\n yield [name, value]\n }\n }\n\n get entries () {\n const headers = {}\n\n if (this[kHeadersMap].size) {\n for (const { name, value } of this[kHeadersMap].values()) {\n headers[name] = value\n }\n }\n\n return headers\n }\n}\n\n// https://fetch.spec.whatwg.org/#headers-class\nclass Headers {\n constructor (init = undefined) {\n if (init === kConstruct) {\n return\n }\n this[kHeadersList] = new HeadersList()\n\n // The new Headers(init) constructor steps are:\n\n // 1. Set this’s guard to \"none\".\n this[kGuard] = 'none'\n\n // 2. If init is given, then fill this with init.\n if (init !== undefined) {\n init = webidl.converters.HeadersInit(init)\n fill(this, init)\n }\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-append\n append (name, value) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.append' })\n\n name = webidl.converters.ByteString(name)\n value = webidl.converters.ByteString(value)\n\n return appendHeader(this, name, value)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-delete\n delete (name) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.delete' })\n\n name = webidl.converters.ByteString(name)\n\n // 1. If name is not a header name, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.delete',\n value: name,\n type: 'header name'\n })\n }\n\n // 2. If this’s guard is \"immutable\", then throw a TypeError.\n // 3. Otherwise, if this’s guard is \"request\" and name is a\n // forbidden header name, return.\n // 4. Otherwise, if this’s guard is \"request-no-cors\", name\n // is not a no-CORS-safelisted request-header name, and\n // name is not a privileged no-CORS request-header name,\n // return.\n // 5. Otherwise, if this’s guard is \"response\" and name is\n // a forbidden response-header name, return.\n // Note: undici does not implement forbidden header names\n if (this[kGuard] === 'immutable') {\n throw new TypeError('immutable')\n } else if (this[kGuard] === 'request-no-cors') {\n // TODO\n }\n\n // 6. If this’s header list does not contain name, then\n // return.\n if (!this[kHeadersList].contains(name)) {\n return\n }\n\n // 7. Delete name from this’s header list.\n // 8. If this’s guard is \"request-no-cors\", then remove\n // privileged no-CORS request headers from this.\n this[kHeadersList].delete(name)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-get\n get (name) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.get' })\n\n name = webidl.converters.ByteString(name)\n\n // 1. If name is not a header name, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.get',\n value: name,\n type: 'header name'\n })\n }\n\n // 2. Return the result of getting name from this’s header\n // list.\n return this[kHeadersList].get(name)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-has\n has (name) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.has' })\n\n name = webidl.converters.ByteString(name)\n\n // 1. If name is not a header name, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.has',\n value: name,\n type: 'header name'\n })\n }\n\n // 2. Return true if this’s header list contains name;\n // otherwise false.\n return this[kHeadersList].contains(name)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-set\n set (name, value) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.set' })\n\n name = webidl.converters.ByteString(name)\n value = webidl.converters.ByteString(value)\n\n // 1. Normalize value.\n value = headerValueNormalize(value)\n\n // 2. If name is not a header name or value is not a\n // header value, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.set',\n value: name,\n type: 'header name'\n })\n } else if (!isValidHeaderValue(value)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.set',\n value,\n type: 'header value'\n })\n }\n\n // 3. If this’s guard is \"immutable\", then throw a TypeError.\n // 4. Otherwise, if this’s guard is \"request\" and name is a\n // forbidden header name, return.\n // 5. Otherwise, if this’s guard is \"request-no-cors\" and\n // name/value is not a no-CORS-safelisted request-header,\n // return.\n // 6. Otherwise, if this’s guard is \"response\" and name is a\n // forbidden response-header name, return.\n // Note: undici does not implement forbidden header names\n if (this[kGuard] === 'immutable') {\n throw new TypeError('immutable')\n } else if (this[kGuard] === 'request-no-cors') {\n // TODO\n }\n\n // 7. Set (name, value) in this’s header list.\n // 8. If this’s guard is \"request-no-cors\", then remove\n // privileged no-CORS request headers from this\n this[kHeadersList].set(name, value)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie\n getSetCookie () {\n webidl.brandCheck(this, Headers)\n\n // 1. If this’s header list does not contain `Set-Cookie`, then return « ».\n // 2. Return the values of all headers in this’s header list whose name is\n // a byte-case-insensitive match for `Set-Cookie`, in order.\n\n const list = this[kHeadersList].cookies\n\n if (list) {\n return [...list]\n }\n\n return []\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine\n get [kHeadersSortedMap] () {\n if (this[kHeadersList][kHeadersSortedMap]) {\n return this[kHeadersList][kHeadersSortedMap]\n }\n\n // 1. Let headers be an empty list of headers with the key being the name\n // and value the value.\n const headers = []\n\n // 2. Let names be the result of convert header names to a sorted-lowercase\n // set with all the names of the headers in list.\n const names = [...this[kHeadersList]].sort((a, b) => a[0] < b[0] ? -1 : 1)\n const cookies = this[kHeadersList].cookies\n\n // 3. For each name of names:\n for (let i = 0; i < names.length; ++i) {\n const [name, value] = names[i]\n // 1. If name is `set-cookie`, then:\n if (name === 'set-cookie') {\n // 1. Let values be a list of all values of headers in list whose name\n // is a byte-case-insensitive match for name, in order.\n\n // 2. For each value of values:\n // 1. Append (name, value) to headers.\n for (let j = 0; j < cookies.length; ++j) {\n headers.push([name, cookies[j]])\n }\n } else {\n // 2. Otherwise:\n\n // 1. Let value be the result of getting name from list.\n\n // 2. Assert: value is non-null.\n assert(value !== null)\n\n // 3. Append (name, value) to headers.\n headers.push([name, value])\n }\n }\n\n this[kHeadersList][kHeadersSortedMap] = headers\n\n // 4. Return headers.\n return headers\n }\n\n keys () {\n webidl.brandCheck(this, Headers)\n\n if (this[kGuard] === 'immutable') {\n const value = this[kHeadersSortedMap]\n return makeIterator(() => value, 'Headers',\n 'key')\n }\n\n return makeIterator(\n () => [...this[kHeadersSortedMap].values()],\n 'Headers',\n 'key'\n )\n }\n\n values () {\n webidl.brandCheck(this, Headers)\n\n if (this[kGuard] === 'immutable') {\n const value = this[kHeadersSortedMap]\n return makeIterator(() => value, 'Headers',\n 'value')\n }\n\n return makeIterator(\n () => [...this[kHeadersSortedMap].values()],\n 'Headers',\n 'value'\n )\n }\n\n entries () {\n webidl.brandCheck(this, Headers)\n\n if (this[kGuard] === 'immutable') {\n const value = this[kHeadersSortedMap]\n return makeIterator(() => value, 'Headers',\n 'key+value')\n }\n\n return makeIterator(\n () => [...this[kHeadersSortedMap].values()],\n 'Headers',\n 'key+value'\n )\n }\n\n /**\n * @param {(value: string, key: string, self: Headers) => void} callbackFn\n * @param {unknown} thisArg\n */\n forEach (callbackFn, thisArg = globalThis) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.forEach' })\n\n if (typeof callbackFn !== 'function') {\n throw new TypeError(\n \"Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'.\"\n )\n }\n\n for (const [key, value] of this) {\n callbackFn.apply(thisArg, [value, key, this])\n }\n }\n\n [Symbol.for('nodejs.util.inspect.custom')] () {\n webidl.brandCheck(this, Headers)\n\n return this[kHeadersList]\n }\n}\n\nHeaders.prototype[Symbol.iterator] = Headers.prototype.entries\n\nObject.defineProperties(Headers.prototype, {\n append: kEnumerableProperty,\n delete: kEnumerableProperty,\n get: kEnumerableProperty,\n has: kEnumerableProperty,\n set: kEnumerableProperty,\n getSetCookie: kEnumerableProperty,\n keys: kEnumerableProperty,\n values: kEnumerableProperty,\n entries: kEnumerableProperty,\n forEach: kEnumerableProperty,\n [Symbol.iterator]: { enumerable: false },\n [Symbol.toStringTag]: {\n value: 'Headers',\n configurable: true\n }\n})\n\nwebidl.converters.HeadersInit = function (V) {\n if (webidl.util.Type(V) === 'Object') {\n if (V[Symbol.iterator]) {\n return webidl.converters['sequence>'](V)\n }\n\n return webidl.converters['record'](V)\n }\n\n throw webidl.errors.conversionFailed({\n prefix: 'Headers constructor',\n argument: 'Argument 1',\n types: ['sequence>', 'record']\n })\n}\n\nmodule.exports = {\n fill,\n Headers,\n HeadersList\n}\n","// https://github.com/Ethan-Arrowood/undici-fetch\n\n'use strict'\n\nconst {\n Response,\n makeNetworkError,\n makeAppropriateNetworkError,\n filterResponse,\n makeResponse\n} = require('./response')\nconst { Headers } = require('./headers')\nconst { Request, makeRequest } = require('./request')\nconst zlib = require('zlib')\nconst {\n bytesMatch,\n makePolicyContainer,\n clonePolicyContainer,\n requestBadPort,\n TAOCheck,\n appendRequestOriginHeader,\n responseLocationURL,\n requestCurrentURL,\n setRequestReferrerPolicyOnRedirect,\n tryUpgradeRequestToAPotentiallyTrustworthyURL,\n createOpaqueTimingInfo,\n appendFetchMetadata,\n corsCheck,\n crossOriginResourcePolicyCheck,\n determineRequestsReferrer,\n coarsenedSharedCurrentTime,\n createDeferredPromise,\n isBlobLike,\n sameOrigin,\n isCancelled,\n isAborted,\n isErrorLike,\n fullyReadBody,\n readableStreamClose,\n isomorphicEncode,\n urlIsLocal,\n urlIsHttpHttpsScheme,\n urlHasHttpsScheme\n} = require('./util')\nconst { kState, kHeaders, kGuard, kRealm } = require('./symbols')\nconst assert = require('assert')\nconst { safelyExtractBody } = require('./body')\nconst {\n redirectStatusSet,\n nullBodyStatus,\n safeMethodsSet,\n requestBodyHeader,\n subresourceSet,\n DOMException\n} = require('./constants')\nconst { kHeadersList } = require('../core/symbols')\nconst EE = require('events')\nconst { Readable, pipeline } = require('stream')\nconst { addAbortListener, isErrored, isReadable, nodeMajor, nodeMinor } = require('../core/util')\nconst { dataURLProcessor, serializeAMimeType } = require('./dataURL')\nconst { TransformStream } = require('stream/web')\nconst { getGlobalDispatcher } = require('../global')\nconst { webidl } = require('./webidl')\nconst { STATUS_CODES } = require('http')\nconst GET_OR_HEAD = ['GET', 'HEAD']\n\n/** @type {import('buffer').resolveObjectURL} */\nlet resolveObjectURL\nlet ReadableStream = globalThis.ReadableStream\n\nclass Fetch extends EE {\n constructor (dispatcher) {\n super()\n\n this.dispatcher = dispatcher\n this.connection = null\n this.dump = false\n this.state = 'ongoing'\n // 2 terminated listeners get added per request,\n // but only 1 gets removed. If there are 20 redirects,\n // 21 listeners will be added.\n // See https://github.com/nodejs/undici/issues/1711\n // TODO (fix): Find and fix root cause for leaked listener.\n this.setMaxListeners(21)\n }\n\n terminate (reason) {\n if (this.state !== 'ongoing') {\n return\n }\n\n this.state = 'terminated'\n this.connection?.destroy(reason)\n this.emit('terminated', reason)\n }\n\n // https://fetch.spec.whatwg.org/#fetch-controller-abort\n abort (error) {\n if (this.state !== 'ongoing') {\n return\n }\n\n // 1. Set controller’s state to \"aborted\".\n this.state = 'aborted'\n\n // 2. Let fallbackError be an \"AbortError\" DOMException.\n // 3. Set error to fallbackError if it is not given.\n if (!error) {\n error = new DOMException('The operation was aborted.', 'AbortError')\n }\n\n // 4. Let serializedError be StructuredSerialize(error).\n // If that threw an exception, catch it, and let\n // serializedError be StructuredSerialize(fallbackError).\n\n // 5. Set controller’s serialized abort reason to serializedError.\n this.serializedAbortReason = error\n\n this.connection?.destroy(error)\n this.emit('terminated', error)\n }\n}\n\n// https://fetch.spec.whatwg.org/#fetch-method\nfunction fetch (input, init = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'globalThis.fetch' })\n\n // 1. Let p be a new promise.\n const p = createDeferredPromise()\n\n // 2. Let requestObject be the result of invoking the initial value of\n // Request as constructor with input and init as arguments. If this throws\n // an exception, reject p with it and return p.\n let requestObject\n\n try {\n requestObject = new Request(input, init)\n } catch (e) {\n p.reject(e)\n return p.promise\n }\n\n // 3. Let request be requestObject’s request.\n const request = requestObject[kState]\n\n // 4. If requestObject’s signal’s aborted flag is set, then:\n if (requestObject.signal.aborted) {\n // 1. Abort the fetch() call with p, request, null, and\n // requestObject’s signal’s abort reason.\n abortFetch(p, request, null, requestObject.signal.reason)\n\n // 2. Return p.\n return p.promise\n }\n\n // 5. Let globalObject be request’s client’s global object.\n const globalObject = request.client.globalObject\n\n // 6. If globalObject is a ServiceWorkerGlobalScope object, then set\n // request’s service-workers mode to \"none\".\n if (globalObject?.constructor?.name === 'ServiceWorkerGlobalScope') {\n request.serviceWorkers = 'none'\n }\n\n // 7. Let responseObject be null.\n let responseObject = null\n\n // 8. Let relevantRealm be this’s relevant Realm.\n const relevantRealm = null\n\n // 9. Let locallyAborted be false.\n let locallyAborted = false\n\n // 10. Let controller be null.\n let controller = null\n\n // 11. Add the following abort steps to requestObject’s signal:\n addAbortListener(\n requestObject.signal,\n () => {\n // 1. Set locallyAborted to true.\n locallyAborted = true\n\n // 2. Assert: controller is non-null.\n assert(controller != null)\n\n // 3. Abort controller with requestObject’s signal’s abort reason.\n controller.abort(requestObject.signal.reason)\n\n // 4. Abort the fetch() call with p, request, responseObject,\n // and requestObject’s signal’s abort reason.\n abortFetch(p, request, responseObject, requestObject.signal.reason)\n }\n )\n\n // 12. Let handleFetchDone given response response be to finalize and\n // report timing with response, globalObject, and \"fetch\".\n const handleFetchDone = (response) =>\n finalizeAndReportTiming(response, 'fetch')\n\n // 13. Set controller to the result of calling fetch given request,\n // with processResponseEndOfBody set to handleFetchDone, and processResponse\n // given response being these substeps:\n\n const processResponse = (response) => {\n // 1. If locallyAborted is true, terminate these substeps.\n if (locallyAborted) {\n return Promise.resolve()\n }\n\n // 2. If response’s aborted flag is set, then:\n if (response.aborted) {\n // 1. Let deserializedError be the result of deserialize a serialized\n // abort reason given controller’s serialized abort reason and\n // relevantRealm.\n\n // 2. Abort the fetch() call with p, request, responseObject, and\n // deserializedError.\n\n abortFetch(p, request, responseObject, controller.serializedAbortReason)\n return Promise.resolve()\n }\n\n // 3. If response is a network error, then reject p with a TypeError\n // and terminate these substeps.\n if (response.type === 'error') {\n p.reject(\n Object.assign(new TypeError('fetch failed'), { cause: response.error })\n )\n return Promise.resolve()\n }\n\n // 4. Set responseObject to the result of creating a Response object,\n // given response, \"immutable\", and relevantRealm.\n responseObject = new Response()\n responseObject[kState] = response\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kHeadersList] = response.headersList\n responseObject[kHeaders][kGuard] = 'immutable'\n responseObject[kHeaders][kRealm] = relevantRealm\n\n // 5. Resolve p with responseObject.\n p.resolve(responseObject)\n }\n\n controller = fetching({\n request,\n processResponseEndOfBody: handleFetchDone,\n processResponse,\n dispatcher: init.dispatcher ?? getGlobalDispatcher() // undici\n })\n\n // 14. Return p.\n return p.promise\n}\n\n// https://fetch.spec.whatwg.org/#finalize-and-report-timing\nfunction finalizeAndReportTiming (response, initiatorType = 'other') {\n // 1. If response is an aborted network error, then return.\n if (response.type === 'error' && response.aborted) {\n return\n }\n\n // 2. If response’s URL list is null or empty, then return.\n if (!response.urlList?.length) {\n return\n }\n\n // 3. Let originalURL be response’s URL list[0].\n const originalURL = response.urlList[0]\n\n // 4. Let timingInfo be response’s timing info.\n let timingInfo = response.timingInfo\n\n // 5. Let cacheState be response’s cache state.\n let cacheState = response.cacheState\n\n // 6. If originalURL’s scheme is not an HTTP(S) scheme, then return.\n if (!urlIsHttpHttpsScheme(originalURL)) {\n return\n }\n\n // 7. If timingInfo is null, then return.\n if (timingInfo === null) {\n return\n }\n\n // 8. If response’s timing allow passed flag is not set, then:\n if (!response.timingAllowPassed) {\n // 1. Set timingInfo to a the result of creating an opaque timing info for timingInfo.\n timingInfo = createOpaqueTimingInfo({\n startTime: timingInfo.startTime\n })\n\n // 2. Set cacheState to the empty string.\n cacheState = ''\n }\n\n // 9. Set timingInfo’s end time to the coarsened shared current time\n // given global’s relevant settings object’s cross-origin isolated\n // capability.\n // TODO: given global’s relevant settings object’s cross-origin isolated\n // capability?\n timingInfo.endTime = coarsenedSharedCurrentTime()\n\n // 10. Set response’s timing info to timingInfo.\n response.timingInfo = timingInfo\n\n // 11. Mark resource timing for timingInfo, originalURL, initiatorType,\n // global, and cacheState.\n markResourceTiming(\n timingInfo,\n originalURL,\n initiatorType,\n globalThis,\n cacheState\n )\n}\n\n// https://w3c.github.io/resource-timing/#dfn-mark-resource-timing\nfunction markResourceTiming (timingInfo, originalURL, initiatorType, globalThis, cacheState) {\n if (nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 2)) {\n performance.markResourceTiming(timingInfo, originalURL.href, initiatorType, globalThis, cacheState)\n }\n}\n\n// https://fetch.spec.whatwg.org/#abort-fetch\nfunction abortFetch (p, request, responseObject, error) {\n // Note: AbortSignal.reason was added in node v17.2.0\n // which would give us an undefined error to reject with.\n // Remove this once node v16 is no longer supported.\n if (!error) {\n error = new DOMException('The operation was aborted.', 'AbortError')\n }\n\n // 1. Reject promise with error.\n p.reject(error)\n\n // 2. If request’s body is not null and is readable, then cancel request’s\n // body with error.\n if (request.body != null && isReadable(request.body?.stream)) {\n request.body.stream.cancel(error).catch((err) => {\n if (err.code === 'ERR_INVALID_STATE') {\n // Node bug?\n return\n }\n throw err\n })\n }\n\n // 3. If responseObject is null, then return.\n if (responseObject == null) {\n return\n }\n\n // 4. Let response be responseObject’s response.\n const response = responseObject[kState]\n\n // 5. If response’s body is not null and is readable, then error response’s\n // body with error.\n if (response.body != null && isReadable(response.body?.stream)) {\n response.body.stream.cancel(error).catch((err) => {\n if (err.code === 'ERR_INVALID_STATE') {\n // Node bug?\n return\n }\n throw err\n })\n }\n}\n\n// https://fetch.spec.whatwg.org/#fetching\nfunction fetching ({\n request,\n processRequestBodyChunkLength,\n processRequestEndOfBody,\n processResponse,\n processResponseEndOfBody,\n processResponseConsumeBody,\n useParallelQueue = false,\n dispatcher // undici\n}) {\n // 1. Let taskDestination be null.\n let taskDestination = null\n\n // 2. Let crossOriginIsolatedCapability be false.\n let crossOriginIsolatedCapability = false\n\n // 3. If request’s client is non-null, then:\n if (request.client != null) {\n // 1. Set taskDestination to request’s client’s global object.\n taskDestination = request.client.globalObject\n\n // 2. Set crossOriginIsolatedCapability to request’s client’s cross-origin\n // isolated capability.\n crossOriginIsolatedCapability =\n request.client.crossOriginIsolatedCapability\n }\n\n // 4. If useParallelQueue is true, then set taskDestination to the result of\n // starting a new parallel queue.\n // TODO\n\n // 5. Let timingInfo be a new fetch timing info whose start time and\n // post-redirect start time are the coarsened shared current time given\n // crossOriginIsolatedCapability.\n const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability)\n const timingInfo = createOpaqueTimingInfo({\n startTime: currenTime\n })\n\n // 6. Let fetchParams be a new fetch params whose\n // request is request,\n // timing info is timingInfo,\n // process request body chunk length is processRequestBodyChunkLength,\n // process request end-of-body is processRequestEndOfBody,\n // process response is processResponse,\n // process response consume body is processResponseConsumeBody,\n // process response end-of-body is processResponseEndOfBody,\n // task destination is taskDestination,\n // and cross-origin isolated capability is crossOriginIsolatedCapability.\n const fetchParams = {\n controller: new Fetch(dispatcher),\n request,\n timingInfo,\n processRequestBodyChunkLength,\n processRequestEndOfBody,\n processResponse,\n processResponseConsumeBody,\n processResponseEndOfBody,\n taskDestination,\n crossOriginIsolatedCapability\n }\n\n // 7. If request’s body is a byte sequence, then set request’s body to\n // request’s body as a body.\n // NOTE: Since fetching is only called from fetch, body should already be\n // extracted.\n assert(!request.body || request.body.stream)\n\n // 8. If request’s window is \"client\", then set request’s window to request’s\n // client, if request’s client’s global object is a Window object; otherwise\n // \"no-window\".\n if (request.window === 'client') {\n // TODO: What if request.client is null?\n request.window =\n request.client?.globalObject?.constructor?.name === 'Window'\n ? request.client\n : 'no-window'\n }\n\n // 9. If request’s origin is \"client\", then set request’s origin to request’s\n // client’s origin.\n if (request.origin === 'client') {\n // TODO: What if request.client is null?\n request.origin = request.client?.origin\n }\n\n // 10. If all of the following conditions are true:\n // TODO\n\n // 11. If request’s policy container is \"client\", then:\n if (request.policyContainer === 'client') {\n // 1. If request’s client is non-null, then set request’s policy\n // container to a clone of request’s client’s policy container. [HTML]\n if (request.client != null) {\n request.policyContainer = clonePolicyContainer(\n request.client.policyContainer\n )\n } else {\n // 2. Otherwise, set request’s policy container to a new policy\n // container.\n request.policyContainer = makePolicyContainer()\n }\n }\n\n // 12. If request’s header list does not contain `Accept`, then:\n if (!request.headersList.contains('accept')) {\n // 1. Let value be `*/*`.\n const value = '*/*'\n\n // 2. A user agent should set value to the first matching statement, if\n // any, switching on request’s destination:\n // \"document\"\n // \"frame\"\n // \"iframe\"\n // `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8`\n // \"image\"\n // `image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5`\n // \"style\"\n // `text/css,*/*;q=0.1`\n // TODO\n\n // 3. Append `Accept`/value to request’s header list.\n request.headersList.append('accept', value)\n }\n\n // 13. If request’s header list does not contain `Accept-Language`, then\n // user agents should append `Accept-Language`/an appropriate value to\n // request’s header list.\n if (!request.headersList.contains('accept-language')) {\n request.headersList.append('accept-language', '*')\n }\n\n // 14. If request’s priority is null, then use request’s initiator and\n // destination appropriately in setting request’s priority to a\n // user-agent-defined object.\n if (request.priority === null) {\n // TODO\n }\n\n // 15. If request is a subresource request, then:\n if (subresourceSet.has(request.destination)) {\n // TODO\n }\n\n // 16. Run main fetch given fetchParams.\n mainFetch(fetchParams)\n .catch(err => {\n fetchParams.controller.terminate(err)\n })\n\n // 17. Return fetchParam's controller\n return fetchParams.controller\n}\n\n// https://fetch.spec.whatwg.org/#concept-main-fetch\nasync function mainFetch (fetchParams, recursive = false) {\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let response be null.\n let response = null\n\n // 3. If request’s local-URLs-only flag is set and request’s current URL is\n // not local, then set response to a network error.\n if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) {\n response = makeNetworkError('local URLs only')\n }\n\n // 4. Run report Content Security Policy violations for request.\n // TODO\n\n // 5. Upgrade request to a potentially trustworthy URL, if appropriate.\n tryUpgradeRequestToAPotentiallyTrustworthyURL(request)\n\n // 6. If should request be blocked due to a bad port, should fetching request\n // be blocked as mixed content, or should request be blocked by Content\n // Security Policy returns blocked, then set response to a network error.\n if (requestBadPort(request) === 'blocked') {\n response = makeNetworkError('bad port')\n }\n // TODO: should fetching request be blocked as mixed content?\n // TODO: should request be blocked by Content Security Policy?\n\n // 7. If request’s referrer policy is the empty string, then set request’s\n // referrer policy to request’s policy container’s referrer policy.\n if (request.referrerPolicy === '') {\n request.referrerPolicy = request.policyContainer.referrerPolicy\n }\n\n // 8. If request’s referrer is not \"no-referrer\", then set request’s\n // referrer to the result of invoking determine request’s referrer.\n if (request.referrer !== 'no-referrer') {\n request.referrer = determineRequestsReferrer(request)\n }\n\n // 9. Set request’s current URL’s scheme to \"https\" if all of the following\n // conditions are true:\n // - request’s current URL’s scheme is \"http\"\n // - request’s current URL’s host is a domain\n // - Matching request’s current URL’s host per Known HSTS Host Domain Name\n // Matching results in either a superdomain match with an asserted\n // includeSubDomains directive or a congruent match (with or without an\n // asserted includeSubDomains directive). [HSTS]\n // TODO\n\n // 10. If recursive is false, then run the remaining steps in parallel.\n // TODO\n\n // 11. If response is null, then set response to the result of running\n // the steps corresponding to the first matching statement:\n if (response === null) {\n response = await (async () => {\n const currentURL = requestCurrentURL(request)\n\n if (\n // - request’s current URL’s origin is same origin with request’s origin,\n // and request’s response tainting is \"basic\"\n (sameOrigin(currentURL, request.url) && request.responseTainting === 'basic') ||\n // request’s current URL’s scheme is \"data\"\n (currentURL.protocol === 'data:') ||\n // - request’s mode is \"navigate\" or \"websocket\"\n (request.mode === 'navigate' || request.mode === 'websocket')\n ) {\n // 1. Set request’s response tainting to \"basic\".\n request.responseTainting = 'basic'\n\n // 2. Return the result of running scheme fetch given fetchParams.\n return await schemeFetch(fetchParams)\n }\n\n // request’s mode is \"same-origin\"\n if (request.mode === 'same-origin') {\n // 1. Return a network error.\n return makeNetworkError('request mode cannot be \"same-origin\"')\n }\n\n // request’s mode is \"no-cors\"\n if (request.mode === 'no-cors') {\n // 1. If request’s redirect mode is not \"follow\", then return a network\n // error.\n if (request.redirect !== 'follow') {\n return makeNetworkError(\n 'redirect mode cannot be \"follow\" for \"no-cors\" request'\n )\n }\n\n // 2. Set request’s response tainting to \"opaque\".\n request.responseTainting = 'opaque'\n\n // 3. Return the result of running scheme fetch given fetchParams.\n return await schemeFetch(fetchParams)\n }\n\n // request’s current URL’s scheme is not an HTTP(S) scheme\n if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) {\n // Return a network error.\n return makeNetworkError('URL scheme must be a HTTP(S) scheme')\n }\n\n // - request’s use-CORS-preflight flag is set\n // - request’s unsafe-request flag is set and either request’s method is\n // not a CORS-safelisted method or CORS-unsafe request-header names with\n // request’s header list is not empty\n // 1. Set request’s response tainting to \"cors\".\n // 2. Let corsWithPreflightResponse be the result of running HTTP fetch\n // given fetchParams and true.\n // 3. If corsWithPreflightResponse is a network error, then clear cache\n // entries using request.\n // 4. Return corsWithPreflightResponse.\n // TODO\n\n // Otherwise\n // 1. Set request’s response tainting to \"cors\".\n request.responseTainting = 'cors'\n\n // 2. Return the result of running HTTP fetch given fetchParams.\n return await httpFetch(fetchParams)\n })()\n }\n\n // 12. If recursive is true, then return response.\n if (recursive) {\n return response\n }\n\n // 13. If response is not a network error and response is not a filtered\n // response, then:\n if (response.status !== 0 && !response.internalResponse) {\n // If request’s response tainting is \"cors\", then:\n if (request.responseTainting === 'cors') {\n // 1. Let headerNames be the result of extracting header list values\n // given `Access-Control-Expose-Headers` and response’s header list.\n // TODO\n // 2. If request’s credentials mode is not \"include\" and headerNames\n // contains `*`, then set response’s CORS-exposed header-name list to\n // all unique header names in response’s header list.\n // TODO\n // 3. Otherwise, if headerNames is not null or failure, then set\n // response’s CORS-exposed header-name list to headerNames.\n // TODO\n }\n\n // Set response to the following filtered response with response as its\n // internal response, depending on request’s response tainting:\n if (request.responseTainting === 'basic') {\n response = filterResponse(response, 'basic')\n } else if (request.responseTainting === 'cors') {\n response = filterResponse(response, 'cors')\n } else if (request.responseTainting === 'opaque') {\n response = filterResponse(response, 'opaque')\n } else {\n assert(false)\n }\n }\n\n // 14. Let internalResponse be response, if response is a network error,\n // and response’s internal response otherwise.\n let internalResponse =\n response.status === 0 ? response : response.internalResponse\n\n // 15. If internalResponse’s URL list is empty, then set it to a clone of\n // request’s URL list.\n if (internalResponse.urlList.length === 0) {\n internalResponse.urlList.push(...request.urlList)\n }\n\n // 16. If request’s timing allow failed flag is unset, then set\n // internalResponse’s timing allow passed flag.\n if (!request.timingAllowFailed) {\n response.timingAllowPassed = true\n }\n\n // 17. If response is not a network error and any of the following returns\n // blocked\n // - should internalResponse to request be blocked as mixed content\n // - should internalResponse to request be blocked by Content Security Policy\n // - should internalResponse to request be blocked due to its MIME type\n // - should internalResponse to request be blocked due to nosniff\n // TODO\n\n // 18. If response’s type is \"opaque\", internalResponse’s status is 206,\n // internalResponse’s range-requested flag is set, and request’s header\n // list does not contain `Range`, then set response and internalResponse\n // to a network error.\n if (\n response.type === 'opaque' &&\n internalResponse.status === 206 &&\n internalResponse.rangeRequested &&\n !request.headers.contains('range')\n ) {\n response = internalResponse = makeNetworkError()\n }\n\n // 19. If response is not a network error and either request’s method is\n // `HEAD` or `CONNECT`, or internalResponse’s status is a null body status,\n // set internalResponse’s body to null and disregard any enqueuing toward\n // it (if any).\n if (\n response.status !== 0 &&\n (request.method === 'HEAD' ||\n request.method === 'CONNECT' ||\n nullBodyStatus.includes(internalResponse.status))\n ) {\n internalResponse.body = null\n fetchParams.controller.dump = true\n }\n\n // 20. If request’s integrity metadata is not the empty string, then:\n if (request.integrity) {\n // 1. Let processBodyError be this step: run fetch finale given fetchParams\n // and a network error.\n const processBodyError = (reason) =>\n fetchFinale(fetchParams, makeNetworkError(reason))\n\n // 2. If request’s response tainting is \"opaque\", or response’s body is null,\n // then run processBodyError and abort these steps.\n if (request.responseTainting === 'opaque' || response.body == null) {\n processBodyError(response.error)\n return\n }\n\n // 3. Let processBody given bytes be these steps:\n const processBody = (bytes) => {\n // 1. If bytes do not match request’s integrity metadata,\n // then run processBodyError and abort these steps. [SRI]\n if (!bytesMatch(bytes, request.integrity)) {\n processBodyError('integrity mismatch')\n return\n }\n\n // 2. Set response’s body to bytes as a body.\n response.body = safelyExtractBody(bytes)[0]\n\n // 3. Run fetch finale given fetchParams and response.\n fetchFinale(fetchParams, response)\n }\n\n // 4. Fully read response’s body given processBody and processBodyError.\n await fullyReadBody(response.body, processBody, processBodyError)\n } else {\n // 21. Otherwise, run fetch finale given fetchParams and response.\n fetchFinale(fetchParams, response)\n }\n}\n\n// https://fetch.spec.whatwg.org/#concept-scheme-fetch\n// given a fetch params fetchParams\nfunction schemeFetch (fetchParams) {\n // Note: since the connection is destroyed on redirect, which sets fetchParams to a\n // cancelled state, we do not want this condition to trigger *unless* there have been\n // no redirects. See https://github.com/nodejs/undici/issues/1776\n // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {\n return Promise.resolve(makeAppropriateNetworkError(fetchParams))\n }\n\n // 2. Let request be fetchParams’s request.\n const { request } = fetchParams\n\n const { protocol: scheme } = requestCurrentURL(request)\n\n // 3. Switch on request’s current URL’s scheme and run the associated steps:\n switch (scheme) {\n case 'about:': {\n // If request’s current URL’s path is the string \"blank\", then return a new response\n // whose status message is `OK`, header list is « (`Content-Type`, `text/html;charset=utf-8`) »,\n // and body is the empty byte sequence as a body.\n\n // Otherwise, return a network error.\n return Promise.resolve(makeNetworkError('about scheme is not supported'))\n }\n case 'blob:': {\n if (!resolveObjectURL) {\n resolveObjectURL = require('buffer').resolveObjectURL\n }\n\n // 1. Let blobURLEntry be request’s current URL’s blob URL entry.\n const blobURLEntry = requestCurrentURL(request)\n\n // https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56\n // Buffer.resolveObjectURL does not ignore URL queries.\n if (blobURLEntry.search.length !== 0) {\n return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.'))\n }\n\n const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString())\n\n // 2. If request’s method is not `GET`, blobURLEntry is null, or blobURLEntry’s\n // object is not a Blob object, then return a network error.\n if (request.method !== 'GET' || !isBlobLike(blobURLEntryObject)) {\n return Promise.resolve(makeNetworkError('invalid method'))\n }\n\n // 3. Let bodyWithType be the result of safely extracting blobURLEntry’s object.\n const bodyWithType = safelyExtractBody(blobURLEntryObject)\n\n // 4. Let body be bodyWithType’s body.\n const body = bodyWithType[0]\n\n // 5. Let length be body’s length, serialized and isomorphic encoded.\n const length = isomorphicEncode(`${body.length}`)\n\n // 6. Let type be bodyWithType’s type if it is non-null; otherwise the empty byte sequence.\n const type = bodyWithType[1] ?? ''\n\n // 7. Return a new response whose status message is `OK`, header list is\n // « (`Content-Length`, length), (`Content-Type`, type) », and body is body.\n const response = makeResponse({\n statusText: 'OK',\n headersList: [\n ['content-length', { name: 'Content-Length', value: length }],\n ['content-type', { name: 'Content-Type', value: type }]\n ]\n })\n\n response.body = body\n\n return Promise.resolve(response)\n }\n case 'data:': {\n // 1. Let dataURLStruct be the result of running the\n // data: URL processor on request’s current URL.\n const currentURL = requestCurrentURL(request)\n const dataURLStruct = dataURLProcessor(currentURL)\n\n // 2. If dataURLStruct is failure, then return a\n // network error.\n if (dataURLStruct === 'failure') {\n return Promise.resolve(makeNetworkError('failed to fetch the data URL'))\n }\n\n // 3. Let mimeType be dataURLStruct’s MIME type, serialized.\n const mimeType = serializeAMimeType(dataURLStruct.mimeType)\n\n // 4. Return a response whose status message is `OK`,\n // header list is « (`Content-Type`, mimeType) »,\n // and body is dataURLStruct’s body as a body.\n return Promise.resolve(makeResponse({\n statusText: 'OK',\n headersList: [\n ['content-type', { name: 'Content-Type', value: mimeType }]\n ],\n body: safelyExtractBody(dataURLStruct.body)[0]\n }))\n }\n case 'file:': {\n // For now, unfortunate as it is, file URLs are left as an exercise for the reader.\n // When in doubt, return a network error.\n return Promise.resolve(makeNetworkError('not implemented... yet...'))\n }\n case 'http:':\n case 'https:': {\n // Return the result of running HTTP fetch given fetchParams.\n\n return httpFetch(fetchParams)\n .catch((err) => makeNetworkError(err))\n }\n default: {\n return Promise.resolve(makeNetworkError('unknown scheme'))\n }\n }\n}\n\n// https://fetch.spec.whatwg.org/#finalize-response\nfunction finalizeResponse (fetchParams, response) {\n // 1. Set fetchParams’s request’s done flag.\n fetchParams.request.done = true\n\n // 2, If fetchParams’s process response done is not null, then queue a fetch\n // task to run fetchParams’s process response done given response, with\n // fetchParams’s task destination.\n if (fetchParams.processResponseDone != null) {\n queueMicrotask(() => fetchParams.processResponseDone(response))\n }\n}\n\n// https://fetch.spec.whatwg.org/#fetch-finale\nfunction fetchFinale (fetchParams, response) {\n // 1. If response is a network error, then:\n if (response.type === 'error') {\n // 1. Set response’s URL list to « fetchParams’s request’s URL list[0] ».\n response.urlList = [fetchParams.request.urlList[0]]\n\n // 2. Set response’s timing info to the result of creating an opaque timing\n // info for fetchParams’s timing info.\n response.timingInfo = createOpaqueTimingInfo({\n startTime: fetchParams.timingInfo.startTime\n })\n }\n\n // 2. Let processResponseEndOfBody be the following steps:\n const processResponseEndOfBody = () => {\n // 1. Set fetchParams’s request’s done flag.\n fetchParams.request.done = true\n\n // If fetchParams’s process response end-of-body is not null,\n // then queue a fetch task to run fetchParams’s process response\n // end-of-body given response with fetchParams’s task destination.\n if (fetchParams.processResponseEndOfBody != null) {\n queueMicrotask(() => fetchParams.processResponseEndOfBody(response))\n }\n }\n\n // 3. If fetchParams’s process response is non-null, then queue a fetch task\n // to run fetchParams’s process response given response, with fetchParams’s\n // task destination.\n if (fetchParams.processResponse != null) {\n queueMicrotask(() => fetchParams.processResponse(response))\n }\n\n // 4. If response’s body is null, then run processResponseEndOfBody.\n if (response.body == null) {\n processResponseEndOfBody()\n } else {\n // 5. Otherwise:\n\n // 1. Let transformStream be a new a TransformStream.\n\n // 2. Let identityTransformAlgorithm be an algorithm which, given chunk,\n // enqueues chunk in transformStream.\n const identityTransformAlgorithm = (chunk, controller) => {\n controller.enqueue(chunk)\n }\n\n // 3. Set up transformStream with transformAlgorithm set to identityTransformAlgorithm\n // and flushAlgorithm set to processResponseEndOfBody.\n const transformStream = new TransformStream({\n start () {},\n transform: identityTransformAlgorithm,\n flush: processResponseEndOfBody\n }, {\n size () {\n return 1\n }\n }, {\n size () {\n return 1\n }\n })\n\n // 4. Set response’s body to the result of piping response’s body through transformStream.\n response.body = { stream: response.body.stream.pipeThrough(transformStream) }\n }\n\n // 6. If fetchParams’s process response consume body is non-null, then:\n if (fetchParams.processResponseConsumeBody != null) {\n // 1. Let processBody given nullOrBytes be this step: run fetchParams’s\n // process response consume body given response and nullOrBytes.\n const processBody = (nullOrBytes) => fetchParams.processResponseConsumeBody(response, nullOrBytes)\n\n // 2. Let processBodyError be this step: run fetchParams’s process\n // response consume body given response and failure.\n const processBodyError = (failure) => fetchParams.processResponseConsumeBody(response, failure)\n\n // 3. If response’s body is null, then queue a fetch task to run processBody\n // given null, with fetchParams’s task destination.\n if (response.body == null) {\n queueMicrotask(() => processBody(null))\n } else {\n // 4. Otherwise, fully read response’s body given processBody, processBodyError,\n // and fetchParams’s task destination.\n return fullyReadBody(response.body, processBody, processBodyError)\n }\n return Promise.resolve()\n }\n}\n\n// https://fetch.spec.whatwg.org/#http-fetch\nasync function httpFetch (fetchParams) {\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let response be null.\n let response = null\n\n // 3. Let actualResponse be null.\n let actualResponse = null\n\n // 4. Let timingInfo be fetchParams’s timing info.\n const timingInfo = fetchParams.timingInfo\n\n // 5. If request’s service-workers mode is \"all\", then:\n if (request.serviceWorkers === 'all') {\n // TODO\n }\n\n // 6. If response is null, then:\n if (response === null) {\n // 1. If makeCORSPreflight is true and one of these conditions is true:\n // TODO\n\n // 2. If request’s redirect mode is \"follow\", then set request’s\n // service-workers mode to \"none\".\n if (request.redirect === 'follow') {\n request.serviceWorkers = 'none'\n }\n\n // 3. Set response and actualResponse to the result of running\n // HTTP-network-or-cache fetch given fetchParams.\n actualResponse = response = await httpNetworkOrCacheFetch(fetchParams)\n\n // 4. If request’s response tainting is \"cors\" and a CORS check\n // for request and response returns failure, then return a network error.\n if (\n request.responseTainting === 'cors' &&\n corsCheck(request, response) === 'failure'\n ) {\n return makeNetworkError('cors failure')\n }\n\n // 5. If the TAO check for request and response returns failure, then set\n // request’s timing allow failed flag.\n if (TAOCheck(request, response) === 'failure') {\n request.timingAllowFailed = true\n }\n }\n\n // 7. If either request’s response tainting or response’s type\n // is \"opaque\", and the cross-origin resource policy check with\n // request’s origin, request’s client, request’s destination,\n // and actualResponse returns blocked, then return a network error.\n if (\n (request.responseTainting === 'opaque' || response.type === 'opaque') &&\n crossOriginResourcePolicyCheck(\n request.origin,\n request.client,\n request.destination,\n actualResponse\n ) === 'blocked'\n ) {\n return makeNetworkError('blocked')\n }\n\n // 8. If actualResponse’s status is a redirect status, then:\n if (redirectStatusSet.has(actualResponse.status)) {\n // 1. If actualResponse’s status is not 303, request’s body is not null,\n // and the connection uses HTTP/2, then user agents may, and are even\n // encouraged to, transmit an RST_STREAM frame.\n // See, https://github.com/whatwg/fetch/issues/1288\n if (request.redirect !== 'manual') {\n fetchParams.controller.connection.destroy()\n }\n\n // 2. Switch on request’s redirect mode:\n if (request.redirect === 'error') {\n // Set response to a network error.\n response = makeNetworkError('unexpected redirect')\n } else if (request.redirect === 'manual') {\n // Set response to an opaque-redirect filtered response whose internal\n // response is actualResponse.\n // NOTE(spec): On the web this would return an `opaqueredirect` response,\n // but that doesn't make sense server side.\n // See https://github.com/nodejs/undici/issues/1193.\n response = actualResponse\n } else if (request.redirect === 'follow') {\n // Set response to the result of running HTTP-redirect fetch given\n // fetchParams and response.\n response = await httpRedirectFetch(fetchParams, response)\n } else {\n assert(false)\n }\n }\n\n // 9. Set response’s timing info to timingInfo.\n response.timingInfo = timingInfo\n\n // 10. Return response.\n return response\n}\n\n// https://fetch.spec.whatwg.org/#http-redirect-fetch\nfunction httpRedirectFetch (fetchParams, response) {\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let actualResponse be response, if response is not a filtered response,\n // and response’s internal response otherwise.\n const actualResponse = response.internalResponse\n ? response.internalResponse\n : response\n\n // 3. Let locationURL be actualResponse’s location URL given request’s current\n // URL’s fragment.\n let locationURL\n\n try {\n locationURL = responseLocationURL(\n actualResponse,\n requestCurrentURL(request).hash\n )\n\n // 4. If locationURL is null, then return response.\n if (locationURL == null) {\n return response\n }\n } catch (err) {\n // 5. If locationURL is failure, then return a network error.\n return Promise.resolve(makeNetworkError(err))\n }\n\n // 6. If locationURL’s scheme is not an HTTP(S) scheme, then return a network\n // error.\n if (!urlIsHttpHttpsScheme(locationURL)) {\n return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme'))\n }\n\n // 7. If request’s redirect count is 20, then return a network error.\n if (request.redirectCount === 20) {\n return Promise.resolve(makeNetworkError('redirect count exceeded'))\n }\n\n // 8. Increase request’s redirect count by 1.\n request.redirectCount += 1\n\n // 9. If request’s mode is \"cors\", locationURL includes credentials, and\n // request’s origin is not same origin with locationURL’s origin, then return\n // a network error.\n if (\n request.mode === 'cors' &&\n (locationURL.username || locationURL.password) &&\n !sameOrigin(request, locationURL)\n ) {\n return Promise.resolve(makeNetworkError('cross origin not allowed for request mode \"cors\"'))\n }\n\n // 10. If request’s response tainting is \"cors\" and locationURL includes\n // credentials, then return a network error.\n if (\n request.responseTainting === 'cors' &&\n (locationURL.username || locationURL.password)\n ) {\n return Promise.resolve(makeNetworkError(\n 'URL cannot contain credentials for request mode \"cors\"'\n ))\n }\n\n // 11. If actualResponse’s status is not 303, request’s body is non-null,\n // and request’s body’s source is null, then return a network error.\n if (\n actualResponse.status !== 303 &&\n request.body != null &&\n request.body.source == null\n ) {\n return Promise.resolve(makeNetworkError())\n }\n\n // 12. If one of the following is true\n // - actualResponse’s status is 301 or 302 and request’s method is `POST`\n // - actualResponse’s status is 303 and request’s method is not `GET` or `HEAD`\n if (\n ([301, 302].includes(actualResponse.status) && request.method === 'POST') ||\n (actualResponse.status === 303 &&\n !GET_OR_HEAD.includes(request.method))\n ) {\n // then:\n // 1. Set request’s method to `GET` and request’s body to null.\n request.method = 'GET'\n request.body = null\n\n // 2. For each headerName of request-body-header name, delete headerName from\n // request’s header list.\n for (const headerName of requestBodyHeader) {\n request.headersList.delete(headerName)\n }\n }\n\n // 13. If request’s current URL’s origin is not same origin with locationURL’s\n // origin, then for each headerName of CORS non-wildcard request-header name,\n // delete headerName from request’s header list.\n if (!sameOrigin(requestCurrentURL(request), locationURL)) {\n // https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name\n request.headersList.delete('authorization')\n\n // https://fetch.spec.whatwg.org/#authentication-entries\n request.headersList.delete('proxy-authorization', true)\n\n // \"Cookie\" and \"Host\" are forbidden request-headers, which undici doesn't implement.\n request.headersList.delete('cookie')\n request.headersList.delete('host')\n }\n\n // 14. If request’s body is non-null, then set request’s body to the first return\n // value of safely extracting request’s body’s source.\n if (request.body != null) {\n assert(request.body.source != null)\n request.body = safelyExtractBody(request.body.source)[0]\n }\n\n // 15. Let timingInfo be fetchParams’s timing info.\n const timingInfo = fetchParams.timingInfo\n\n // 16. Set timingInfo’s redirect end time and post-redirect start time to the\n // coarsened shared current time given fetchParams’s cross-origin isolated\n // capability.\n timingInfo.redirectEndTime = timingInfo.postRedirectStartTime =\n coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability)\n\n // 17. If timingInfo’s redirect start time is 0, then set timingInfo’s\n // redirect start time to timingInfo’s start time.\n if (timingInfo.redirectStartTime === 0) {\n timingInfo.redirectStartTime = timingInfo.startTime\n }\n\n // 18. Append locationURL to request’s URL list.\n request.urlList.push(locationURL)\n\n // 19. Invoke set request’s referrer policy on redirect on request and\n // actualResponse.\n setRequestReferrerPolicyOnRedirect(request, actualResponse)\n\n // 20. Return the result of running main fetch given fetchParams and true.\n return mainFetch(fetchParams, true)\n}\n\n// https://fetch.spec.whatwg.org/#http-network-or-cache-fetch\nasync function httpNetworkOrCacheFetch (\n fetchParams,\n isAuthenticationFetch = false,\n isNewConnectionFetch = false\n) {\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let httpFetchParams be null.\n let httpFetchParams = null\n\n // 3. Let httpRequest be null.\n let httpRequest = null\n\n // 4. Let response be null.\n let response = null\n\n // 5. Let storedResponse be null.\n // TODO: cache\n\n // 6. Let httpCache be null.\n const httpCache = null\n\n // 7. Let the revalidatingFlag be unset.\n const revalidatingFlag = false\n\n // 8. Run these steps, but abort when the ongoing fetch is terminated:\n\n // 1. If request’s window is \"no-window\" and request’s redirect mode is\n // \"error\", then set httpFetchParams to fetchParams and httpRequest to\n // request.\n if (request.window === 'no-window' && request.redirect === 'error') {\n httpFetchParams = fetchParams\n httpRequest = request\n } else {\n // Otherwise:\n\n // 1. Set httpRequest to a clone of request.\n httpRequest = makeRequest(request)\n\n // 2. Set httpFetchParams to a copy of fetchParams.\n httpFetchParams = { ...fetchParams }\n\n // 3. Set httpFetchParams’s request to httpRequest.\n httpFetchParams.request = httpRequest\n }\n\n // 3. Let includeCredentials be true if one of\n const includeCredentials =\n request.credentials === 'include' ||\n (request.credentials === 'same-origin' &&\n request.responseTainting === 'basic')\n\n // 4. Let contentLength be httpRequest’s body’s length, if httpRequest’s\n // body is non-null; otherwise null.\n const contentLength = httpRequest.body ? httpRequest.body.length : null\n\n // 5. Let contentLengthHeaderValue be null.\n let contentLengthHeaderValue = null\n\n // 6. If httpRequest’s body is null and httpRequest’s method is `POST` or\n // `PUT`, then set contentLengthHeaderValue to `0`.\n if (\n httpRequest.body == null &&\n ['POST', 'PUT'].includes(httpRequest.method)\n ) {\n contentLengthHeaderValue = '0'\n }\n\n // 7. If contentLength is non-null, then set contentLengthHeaderValue to\n // contentLength, serialized and isomorphic encoded.\n if (contentLength != null) {\n contentLengthHeaderValue = isomorphicEncode(`${contentLength}`)\n }\n\n // 8. If contentLengthHeaderValue is non-null, then append\n // `Content-Length`/contentLengthHeaderValue to httpRequest’s header\n // list.\n if (contentLengthHeaderValue != null) {\n httpRequest.headersList.append('content-length', contentLengthHeaderValue)\n }\n\n // 9. If contentLengthHeaderValue is non-null, then append (`Content-Length`,\n // contentLengthHeaderValue) to httpRequest’s header list.\n\n // 10. If contentLength is non-null and httpRequest’s keepalive is true,\n // then:\n if (contentLength != null && httpRequest.keepalive) {\n // NOTE: keepalive is a noop outside of browser context.\n }\n\n // 11. If httpRequest’s referrer is a URL, then append\n // `Referer`/httpRequest’s referrer, serialized and isomorphic encoded,\n // to httpRequest’s header list.\n if (httpRequest.referrer instanceof URL) {\n httpRequest.headersList.append('referer', isomorphicEncode(httpRequest.referrer.href))\n }\n\n // 12. Append a request `Origin` header for httpRequest.\n appendRequestOriginHeader(httpRequest)\n\n // 13. Append the Fetch metadata headers for httpRequest. [FETCH-METADATA]\n appendFetchMetadata(httpRequest)\n\n // 14. If httpRequest’s header list does not contain `User-Agent`, then\n // user agents should append `User-Agent`/default `User-Agent` value to\n // httpRequest’s header list.\n if (!httpRequest.headersList.contains('user-agent')) {\n httpRequest.headersList.append('user-agent', typeof esbuildDetection === 'undefined' ? 'undici' : 'node')\n }\n\n // 15. If httpRequest’s cache mode is \"default\" and httpRequest’s header\n // list contains `If-Modified-Since`, `If-None-Match`,\n // `If-Unmodified-Since`, `If-Match`, or `If-Range`, then set\n // httpRequest’s cache mode to \"no-store\".\n if (\n httpRequest.cache === 'default' &&\n (httpRequest.headersList.contains('if-modified-since') ||\n httpRequest.headersList.contains('if-none-match') ||\n httpRequest.headersList.contains('if-unmodified-since') ||\n httpRequest.headersList.contains('if-match') ||\n httpRequest.headersList.contains('if-range'))\n ) {\n httpRequest.cache = 'no-store'\n }\n\n // 16. If httpRequest’s cache mode is \"no-cache\", httpRequest’s prevent\n // no-cache cache-control header modification flag is unset, and\n // httpRequest’s header list does not contain `Cache-Control`, then append\n // `Cache-Control`/`max-age=0` to httpRequest’s header list.\n if (\n httpRequest.cache === 'no-cache' &&\n !httpRequest.preventNoCacheCacheControlHeaderModification &&\n !httpRequest.headersList.contains('cache-control')\n ) {\n httpRequest.headersList.append('cache-control', 'max-age=0')\n }\n\n // 17. If httpRequest’s cache mode is \"no-store\" or \"reload\", then:\n if (httpRequest.cache === 'no-store' || httpRequest.cache === 'reload') {\n // 1. If httpRequest’s header list does not contain `Pragma`, then append\n // `Pragma`/`no-cache` to httpRequest’s header list.\n if (!httpRequest.headersList.contains('pragma')) {\n httpRequest.headersList.append('pragma', 'no-cache')\n }\n\n // 2. If httpRequest’s header list does not contain `Cache-Control`,\n // then append `Cache-Control`/`no-cache` to httpRequest’s header list.\n if (!httpRequest.headersList.contains('cache-control')) {\n httpRequest.headersList.append('cache-control', 'no-cache')\n }\n }\n\n // 18. If httpRequest’s header list contains `Range`, then append\n // `Accept-Encoding`/`identity` to httpRequest’s header list.\n if (httpRequest.headersList.contains('range')) {\n httpRequest.headersList.append('accept-encoding', 'identity')\n }\n\n // 19. Modify httpRequest’s header list per HTTP. Do not append a given\n // header if httpRequest’s header list contains that header’s name.\n // TODO: https://github.com/whatwg/fetch/issues/1285#issuecomment-896560129\n if (!httpRequest.headersList.contains('accept-encoding')) {\n if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) {\n httpRequest.headersList.append('accept-encoding', 'br, gzip, deflate')\n } else {\n httpRequest.headersList.append('accept-encoding', 'gzip, deflate')\n }\n }\n\n httpRequest.headersList.delete('host')\n\n // 20. If includeCredentials is true, then:\n if (includeCredentials) {\n // 1. If the user agent is not configured to block cookies for httpRequest\n // (see section 7 of [COOKIES]), then:\n // TODO: credentials\n // 2. If httpRequest’s header list does not contain `Authorization`, then:\n // TODO: credentials\n }\n\n // 21. If there’s a proxy-authentication entry, use it as appropriate.\n // TODO: proxy-authentication\n\n // 22. Set httpCache to the result of determining the HTTP cache\n // partition, given httpRequest.\n // TODO: cache\n\n // 23. If httpCache is null, then set httpRequest’s cache mode to\n // \"no-store\".\n if (httpCache == null) {\n httpRequest.cache = 'no-store'\n }\n\n // 24. If httpRequest’s cache mode is neither \"no-store\" nor \"reload\",\n // then:\n if (httpRequest.mode !== 'no-store' && httpRequest.mode !== 'reload') {\n // TODO: cache\n }\n\n // 9. If aborted, then return the appropriate network error for fetchParams.\n // TODO\n\n // 10. If response is null, then:\n if (response == null) {\n // 1. If httpRequest’s cache mode is \"only-if-cached\", then return a\n // network error.\n if (httpRequest.mode === 'only-if-cached') {\n return makeNetworkError('only if cached')\n }\n\n // 2. Let forwardResponse be the result of running HTTP-network fetch\n // given httpFetchParams, includeCredentials, and isNewConnectionFetch.\n const forwardResponse = await httpNetworkFetch(\n httpFetchParams,\n includeCredentials,\n isNewConnectionFetch\n )\n\n // 3. If httpRequest’s method is unsafe and forwardResponse’s status is\n // in the range 200 to 399, inclusive, invalidate appropriate stored\n // responses in httpCache, as per the \"Invalidation\" chapter of HTTP\n // Caching, and set storedResponse to null. [HTTP-CACHING]\n if (\n !safeMethodsSet.has(httpRequest.method) &&\n forwardResponse.status >= 200 &&\n forwardResponse.status <= 399\n ) {\n // TODO: cache\n }\n\n // 4. If the revalidatingFlag is set and forwardResponse’s status is 304,\n // then:\n if (revalidatingFlag && forwardResponse.status === 304) {\n // TODO: cache\n }\n\n // 5. If response is null, then:\n if (response == null) {\n // 1. Set response to forwardResponse.\n response = forwardResponse\n\n // 2. Store httpRequest and forwardResponse in httpCache, as per the\n // \"Storing Responses in Caches\" chapter of HTTP Caching. [HTTP-CACHING]\n // TODO: cache\n }\n }\n\n // 11. Set response’s URL list to a clone of httpRequest’s URL list.\n response.urlList = [...httpRequest.urlList]\n\n // 12. If httpRequest’s header list contains `Range`, then set response’s\n // range-requested flag.\n if (httpRequest.headersList.contains('range')) {\n response.rangeRequested = true\n }\n\n // 13. Set response’s request-includes-credentials to includeCredentials.\n response.requestIncludesCredentials = includeCredentials\n\n // 14. If response’s status is 401, httpRequest’s response tainting is not\n // \"cors\", includeCredentials is true, and request’s window is an environment\n // settings object, then:\n // TODO\n\n // 15. If response’s status is 407, then:\n if (response.status === 407) {\n // 1. If request’s window is \"no-window\", then return a network error.\n if (request.window === 'no-window') {\n return makeNetworkError()\n }\n\n // 2. ???\n\n // 3. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n if (isCancelled(fetchParams)) {\n return makeAppropriateNetworkError(fetchParams)\n }\n\n // 4. Prompt the end user as appropriate in request’s window and store\n // the result as a proxy-authentication entry. [HTTP-AUTH]\n // TODO: Invoke some kind of callback?\n\n // 5. Set response to the result of running HTTP-network-or-cache fetch given\n // fetchParams.\n // TODO\n return makeNetworkError('proxy authentication required')\n }\n\n // 16. If all of the following are true\n if (\n // response’s status is 421\n response.status === 421 &&\n // isNewConnectionFetch is false\n !isNewConnectionFetch &&\n // request’s body is null, or request’s body is non-null and request’s body’s source is non-null\n (request.body == null || request.body.source != null)\n ) {\n // then:\n\n // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n if (isCancelled(fetchParams)) {\n return makeAppropriateNetworkError(fetchParams)\n }\n\n // 2. Set response to the result of running HTTP-network-or-cache\n // fetch given fetchParams, isAuthenticationFetch, and true.\n\n // TODO (spec): The spec doesn't specify this but we need to cancel\n // the active response before we can start a new one.\n // https://github.com/whatwg/fetch/issues/1293\n fetchParams.controller.connection.destroy()\n\n response = await httpNetworkOrCacheFetch(\n fetchParams,\n isAuthenticationFetch,\n true\n )\n }\n\n // 17. If isAuthenticationFetch is true, then create an authentication entry\n if (isAuthenticationFetch) {\n // TODO\n }\n\n // 18. Return response.\n return response\n}\n\n// https://fetch.spec.whatwg.org/#http-network-fetch\nasync function httpNetworkFetch (\n fetchParams,\n includeCredentials = false,\n forceNewConnection = false\n) {\n assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed)\n\n fetchParams.controller.connection = {\n abort: null,\n destroyed: false,\n destroy (err) {\n if (!this.destroyed) {\n this.destroyed = true\n this.abort?.(err ?? new DOMException('The operation was aborted.', 'AbortError'))\n }\n }\n }\n\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let response be null.\n let response = null\n\n // 3. Let timingInfo be fetchParams’s timing info.\n const timingInfo = fetchParams.timingInfo\n\n // 4. Let httpCache be the result of determining the HTTP cache partition,\n // given request.\n // TODO: cache\n const httpCache = null\n\n // 5. If httpCache is null, then set request’s cache mode to \"no-store\".\n if (httpCache == null) {\n request.cache = 'no-store'\n }\n\n // 6. Let networkPartitionKey be the result of determining the network\n // partition key given request.\n // TODO\n\n // 7. Let newConnection be \"yes\" if forceNewConnection is true; otherwise\n // \"no\".\n const newConnection = forceNewConnection ? 'yes' : 'no' // eslint-disable-line no-unused-vars\n\n // 8. Switch on request’s mode:\n if (request.mode === 'websocket') {\n // Let connection be the result of obtaining a WebSocket connection,\n // given request’s current URL.\n // TODO\n } else {\n // Let connection be the result of obtaining a connection, given\n // networkPartitionKey, request’s current URL’s origin,\n // includeCredentials, and forceNewConnection.\n // TODO\n }\n\n // 9. Run these steps, but abort when the ongoing fetch is terminated:\n\n // 1. If connection is failure, then return a network error.\n\n // 2. Set timingInfo’s final connection timing info to the result of\n // calling clamp and coarsen connection timing info with connection’s\n // timing info, timingInfo’s post-redirect start time, and fetchParams’s\n // cross-origin isolated capability.\n\n // 3. If connection is not an HTTP/2 connection, request’s body is non-null,\n // and request’s body’s source is null, then append (`Transfer-Encoding`,\n // `chunked`) to request’s header list.\n\n // 4. Set timingInfo’s final network-request start time to the coarsened\n // shared current time given fetchParams’s cross-origin isolated\n // capability.\n\n // 5. Set response to the result of making an HTTP request over connection\n // using request with the following caveats:\n\n // - Follow the relevant requirements from HTTP. [HTTP] [HTTP-SEMANTICS]\n // [HTTP-COND] [HTTP-CACHING] [HTTP-AUTH]\n\n // - If request’s body is non-null, and request’s body’s source is null,\n // then the user agent may have a buffer of up to 64 kibibytes and store\n // a part of request’s body in that buffer. If the user agent reads from\n // request’s body beyond that buffer’s size and the user agent needs to\n // resend request, then instead return a network error.\n\n // - Set timingInfo’s final network-response start time to the coarsened\n // shared current time given fetchParams’s cross-origin isolated capability,\n // immediately after the user agent’s HTTP parser receives the first byte\n // of the response (e.g., frame header bytes for HTTP/2 or response status\n // line for HTTP/1.x).\n\n // - Wait until all the headers are transmitted.\n\n // - Any responses whose status is in the range 100 to 199, inclusive,\n // and is not 101, are to be ignored, except for the purposes of setting\n // timingInfo’s final network-response start time above.\n\n // - If request’s header list contains `Transfer-Encoding`/`chunked` and\n // response is transferred via HTTP/1.0 or older, then return a network\n // error.\n\n // - If the HTTP request results in a TLS client certificate dialog, then:\n\n // 1. If request’s window is an environment settings object, make the\n // dialog available in request’s window.\n\n // 2. Otherwise, return a network error.\n\n // To transmit request’s body body, run these steps:\n let requestBody = null\n // 1. If body is null and fetchParams’s process request end-of-body is\n // non-null, then queue a fetch task given fetchParams’s process request\n // end-of-body and fetchParams’s task destination.\n if (request.body == null && fetchParams.processRequestEndOfBody) {\n queueMicrotask(() => fetchParams.processRequestEndOfBody())\n } else if (request.body != null) {\n // 2. Otherwise, if body is non-null:\n\n // 1. Let processBodyChunk given bytes be these steps:\n const processBodyChunk = async function * (bytes) {\n // 1. If the ongoing fetch is terminated, then abort these steps.\n if (isCancelled(fetchParams)) {\n return\n }\n\n // 2. Run this step in parallel: transmit bytes.\n yield bytes\n\n // 3. If fetchParams’s process request body is non-null, then run\n // fetchParams’s process request body given bytes’s length.\n fetchParams.processRequestBodyChunkLength?.(bytes.byteLength)\n }\n\n // 2. Let processEndOfBody be these steps:\n const processEndOfBody = () => {\n // 1. If fetchParams is canceled, then abort these steps.\n if (isCancelled(fetchParams)) {\n return\n }\n\n // 2. If fetchParams’s process request end-of-body is non-null,\n // then run fetchParams’s process request end-of-body.\n if (fetchParams.processRequestEndOfBody) {\n fetchParams.processRequestEndOfBody()\n }\n }\n\n // 3. Let processBodyError given e be these steps:\n const processBodyError = (e) => {\n // 1. If fetchParams is canceled, then abort these steps.\n if (isCancelled(fetchParams)) {\n return\n }\n\n // 2. If e is an \"AbortError\" DOMException, then abort fetchParams’s controller.\n if (e.name === 'AbortError') {\n fetchParams.controller.abort()\n } else {\n fetchParams.controller.terminate(e)\n }\n }\n\n // 4. Incrementally read request’s body given processBodyChunk, processEndOfBody,\n // processBodyError, and fetchParams’s task destination.\n requestBody = (async function * () {\n try {\n for await (const bytes of request.body.stream) {\n yield * processBodyChunk(bytes)\n }\n processEndOfBody()\n } catch (err) {\n processBodyError(err)\n }\n })()\n }\n\n try {\n // socket is only provided for websockets\n const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody })\n\n if (socket) {\n response = makeResponse({ status, statusText, headersList, socket })\n } else {\n const iterator = body[Symbol.asyncIterator]()\n fetchParams.controller.next = () => iterator.next()\n\n response = makeResponse({ status, statusText, headersList })\n }\n } catch (err) {\n // 10. If aborted, then:\n if (err.name === 'AbortError') {\n // 1. If connection uses HTTP/2, then transmit an RST_STREAM frame.\n fetchParams.controller.connection.destroy()\n\n // 2. Return the appropriate network error for fetchParams.\n return makeAppropriateNetworkError(fetchParams, err)\n }\n\n return makeNetworkError(err)\n }\n\n // 11. Let pullAlgorithm be an action that resumes the ongoing fetch\n // if it is suspended.\n const pullAlgorithm = () => {\n fetchParams.controller.resume()\n }\n\n // 12. Let cancelAlgorithm be an algorithm that aborts fetchParams’s\n // controller with reason, given reason.\n const cancelAlgorithm = (reason) => {\n fetchParams.controller.abort(reason)\n }\n\n // 13. Let highWaterMark be a non-negative, non-NaN number, chosen by\n // the user agent.\n // TODO\n\n // 14. Let sizeAlgorithm be an algorithm that accepts a chunk object\n // and returns a non-negative, non-NaN, non-infinite number, chosen by the user agent.\n // TODO\n\n // 15. Let stream be a new ReadableStream.\n // 16. Set up stream with pullAlgorithm set to pullAlgorithm,\n // cancelAlgorithm set to cancelAlgorithm, highWaterMark set to\n // highWaterMark, and sizeAlgorithm set to sizeAlgorithm.\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n const stream = new ReadableStream(\n {\n async start (controller) {\n fetchParams.controller.controller = controller\n },\n async pull (controller) {\n await pullAlgorithm(controller)\n },\n async cancel (reason) {\n await cancelAlgorithm(reason)\n }\n },\n {\n highWaterMark: 0,\n size () {\n return 1\n }\n }\n )\n\n // 17. Run these steps, but abort when the ongoing fetch is terminated:\n\n // 1. Set response’s body to a new body whose stream is stream.\n response.body = { stream }\n\n // 2. If response is not a network error and request’s cache mode is\n // not \"no-store\", then update response in httpCache for request.\n // TODO\n\n // 3. If includeCredentials is true and the user agent is not configured\n // to block cookies for request (see section 7 of [COOKIES]), then run the\n // \"set-cookie-string\" parsing algorithm (see section 5.2 of [COOKIES]) on\n // the value of each header whose name is a byte-case-insensitive match for\n // `Set-Cookie` in response’s header list, if any, and request’s current URL.\n // TODO\n\n // 18. If aborted, then:\n // TODO\n\n // 19. Run these steps in parallel:\n\n // 1. Run these steps, but abort when fetchParams is canceled:\n fetchParams.controller.on('terminated', onAborted)\n fetchParams.controller.resume = async () => {\n // 1. While true\n while (true) {\n // 1-3. See onData...\n\n // 4. Set bytes to the result of handling content codings given\n // codings and bytes.\n let bytes\n let isFailure\n try {\n const { done, value } = await fetchParams.controller.next()\n\n if (isAborted(fetchParams)) {\n break\n }\n\n bytes = done ? undefined : value\n } catch (err) {\n if (fetchParams.controller.ended && !timingInfo.encodedBodySize) {\n // zlib doesn't like empty streams.\n bytes = undefined\n } else {\n bytes = err\n\n // err may be propagated from the result of calling readablestream.cancel,\n // which might not be an error. https://github.com/nodejs/undici/issues/2009\n isFailure = true\n }\n }\n\n if (bytes === undefined) {\n // 2. Otherwise, if the bytes transmission for response’s message\n // body is done normally and stream is readable, then close\n // stream, finalize response for fetchParams and response, and\n // abort these in-parallel steps.\n readableStreamClose(fetchParams.controller.controller)\n\n finalizeResponse(fetchParams, response)\n\n return\n }\n\n // 5. Increase timingInfo’s decoded body size by bytes’s length.\n timingInfo.decodedBodySize += bytes?.byteLength ?? 0\n\n // 6. If bytes is failure, then terminate fetchParams’s controller.\n if (isFailure) {\n fetchParams.controller.terminate(bytes)\n return\n }\n\n // 7. Enqueue a Uint8Array wrapping an ArrayBuffer containing bytes\n // into stream.\n fetchParams.controller.controller.enqueue(new Uint8Array(bytes))\n\n // 8. If stream is errored, then terminate the ongoing fetch.\n if (isErrored(stream)) {\n fetchParams.controller.terminate()\n return\n }\n\n // 9. If stream doesn’t need more data ask the user agent to suspend\n // the ongoing fetch.\n if (!fetchParams.controller.controller.desiredSize) {\n return\n }\n }\n }\n\n // 2. If aborted, then:\n function onAborted (reason) {\n // 2. If fetchParams is aborted, then:\n if (isAborted(fetchParams)) {\n // 1. Set response’s aborted flag.\n response.aborted = true\n\n // 2. If stream is readable, then error stream with the result of\n // deserialize a serialized abort reason given fetchParams’s\n // controller’s serialized abort reason and an\n // implementation-defined realm.\n if (isReadable(stream)) {\n fetchParams.controller.controller.error(\n fetchParams.controller.serializedAbortReason\n )\n }\n } else {\n // 3. Otherwise, if stream is readable, error stream with a TypeError.\n if (isReadable(stream)) {\n fetchParams.controller.controller.error(new TypeError('terminated', {\n cause: isErrorLike(reason) ? reason : undefined\n }))\n }\n }\n\n // 4. If connection uses HTTP/2, then transmit an RST_STREAM frame.\n // 5. Otherwise, the user agent should close connection unless it would be bad for performance to do so.\n fetchParams.controller.connection.destroy()\n }\n\n // 20. Return response.\n return response\n\n async function dispatch ({ body }) {\n const url = requestCurrentURL(request)\n /** @type {import('../..').Agent} */\n const agent = fetchParams.controller.dispatcher\n\n return new Promise((resolve, reject) => agent.dispatch(\n {\n path: url.pathname + url.search,\n origin: url.origin,\n method: request.method,\n body: fetchParams.controller.dispatcher.isMockActive ? request.body && (request.body.source || request.body.stream) : body,\n headers: request.headersList.entries,\n maxRedirections: 0,\n upgrade: request.mode === 'websocket' ? 'websocket' : undefined\n },\n {\n body: null,\n abort: null,\n\n onConnect (abort) {\n // TODO (fix): Do we need connection here?\n const { connection } = fetchParams.controller\n\n if (connection.destroyed) {\n abort(new DOMException('The operation was aborted.', 'AbortError'))\n } else {\n fetchParams.controller.on('terminated', abort)\n this.abort = connection.abort = abort\n }\n },\n\n onHeaders (status, headersList, resume, statusText) {\n if (status < 200) {\n return\n }\n\n let codings = []\n let location = ''\n\n const headers = new Headers()\n\n // For H2, the headers are a plain JS object\n // We distinguish between them and iterate accordingly\n if (Array.isArray(headersList)) {\n for (let n = 0; n < headersList.length; n += 2) {\n const key = headersList[n + 0].toString('latin1')\n const val = headersList[n + 1].toString('latin1')\n if (key.toLowerCase() === 'content-encoding') {\n // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1\n // \"All content-coding values are case-insensitive...\"\n codings = val.toLowerCase().split(',').map((x) => x.trim())\n } else if (key.toLowerCase() === 'location') {\n location = val\n }\n\n headers[kHeadersList].append(key, val)\n }\n } else {\n const keys = Object.keys(headersList)\n for (const key of keys) {\n const val = headersList[key]\n if (key.toLowerCase() === 'content-encoding') {\n // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1\n // \"All content-coding values are case-insensitive...\"\n codings = val.toLowerCase().split(',').map((x) => x.trim()).reverse()\n } else if (key.toLowerCase() === 'location') {\n location = val\n }\n\n headers[kHeadersList].append(key, val)\n }\n }\n\n this.body = new Readable({ read: resume })\n\n const decoders = []\n\n const willFollow = request.redirect === 'follow' &&\n location &&\n redirectStatusSet.has(status)\n\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding\n if (request.method !== 'HEAD' && request.method !== 'CONNECT' && !nullBodyStatus.includes(status) && !willFollow) {\n for (const coding of codings) {\n // https://www.rfc-editor.org/rfc/rfc9112.html#section-7.2\n if (coding === 'x-gzip' || coding === 'gzip') {\n decoders.push(zlib.createGunzip({\n // Be less strict when decoding compressed responses, since sometimes\n // servers send slightly invalid responses that are still accepted\n // by common browsers.\n // Always using Z_SYNC_FLUSH is what cURL does.\n flush: zlib.constants.Z_SYNC_FLUSH,\n finishFlush: zlib.constants.Z_SYNC_FLUSH\n }))\n } else if (coding === 'deflate') {\n decoders.push(zlib.createInflate())\n } else if (coding === 'br') {\n decoders.push(zlib.createBrotliDecompress())\n } else {\n decoders.length = 0\n break\n }\n }\n }\n\n resolve({\n status,\n statusText,\n headersList: headers[kHeadersList],\n body: decoders.length\n ? pipeline(this.body, ...decoders, () => { })\n : this.body.on('error', () => {})\n })\n\n return true\n },\n\n onData (chunk) {\n if (fetchParams.controller.dump) {\n return\n }\n\n // 1. If one or more bytes have been transmitted from response’s\n // message body, then:\n\n // 1. Let bytes be the transmitted bytes.\n const bytes = chunk\n\n // 2. Let codings be the result of extracting header list values\n // given `Content-Encoding` and response’s header list.\n // See pullAlgorithm.\n\n // 3. Increase timingInfo’s encoded body size by bytes’s length.\n timingInfo.encodedBodySize += bytes.byteLength\n\n // 4. See pullAlgorithm...\n\n return this.body.push(bytes)\n },\n\n onComplete () {\n if (this.abort) {\n fetchParams.controller.off('terminated', this.abort)\n }\n\n fetchParams.controller.ended = true\n\n this.body.push(null)\n },\n\n onError (error) {\n if (this.abort) {\n fetchParams.controller.off('terminated', this.abort)\n }\n\n this.body?.destroy(error)\n\n fetchParams.controller.terminate(error)\n\n reject(error)\n },\n\n onUpgrade (status, headersList, socket) {\n if (status !== 101) {\n return\n }\n\n const headers = new Headers()\n\n for (let n = 0; n < headersList.length; n += 2) {\n const key = headersList[n + 0].toString('latin1')\n const val = headersList[n + 1].toString('latin1')\n\n headers[kHeadersList].append(key, val)\n }\n\n resolve({\n status,\n statusText: STATUS_CODES[status],\n headersList: headers[kHeadersList],\n socket\n })\n\n return true\n }\n }\n ))\n }\n}\n\nmodule.exports = {\n fetch,\n Fetch,\n fetching,\n finalizeAndReportTiming\n}\n","/* globals AbortController */\n\n'use strict'\n\nconst { extractBody, mixinBody, cloneBody } = require('./body')\nconst { Headers, fill: fillHeaders, HeadersList } = require('./headers')\nconst { FinalizationRegistry } = require('../compat/dispatcher-weakref')()\nconst util = require('../core/util')\nconst {\n isValidHTTPToken,\n sameOrigin,\n normalizeMethod,\n makePolicyContainer,\n normalizeMethodRecord\n} = require('./util')\nconst {\n forbiddenMethodsSet,\n corsSafeListedMethodsSet,\n referrerPolicy,\n requestRedirect,\n requestMode,\n requestCredentials,\n requestCache,\n requestDuplex\n} = require('./constants')\nconst { kEnumerableProperty } = util\nconst { kHeaders, kSignal, kState, kGuard, kRealm } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { getGlobalOrigin } = require('./global')\nconst { URLSerializer } = require('./dataURL')\nconst { kHeadersList, kConstruct } = require('../core/symbols')\nconst assert = require('assert')\nconst { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = require('events')\n\nlet TransformStream = globalThis.TransformStream\n\nconst kAbortController = Symbol('abortController')\n\nconst requestFinalizer = new FinalizationRegistry(({ signal, abort }) => {\n signal.removeEventListener('abort', abort)\n})\n\n// https://fetch.spec.whatwg.org/#request-class\nclass Request {\n // https://fetch.spec.whatwg.org/#dom-request\n constructor (input, init = {}) {\n if (input === kConstruct) {\n return\n }\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Request constructor' })\n\n input = webidl.converters.RequestInfo(input)\n init = webidl.converters.RequestInit(init)\n\n // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object\n this[kRealm] = {\n settingsObject: {\n baseUrl: getGlobalOrigin(),\n get origin () {\n return this.baseUrl?.origin\n },\n policyContainer: makePolicyContainer()\n }\n }\n\n // 1. Let request be null.\n let request = null\n\n // 2. Let fallbackMode be null.\n let fallbackMode = null\n\n // 3. Let baseURL be this’s relevant settings object’s API base URL.\n const baseUrl = this[kRealm].settingsObject.baseUrl\n\n // 4. Let signal be null.\n let signal = null\n\n // 5. If input is a string, then:\n if (typeof input === 'string') {\n // 1. Let parsedURL be the result of parsing input with baseURL.\n // 2. If parsedURL is failure, then throw a TypeError.\n let parsedURL\n try {\n parsedURL = new URL(input, baseUrl)\n } catch (err) {\n throw new TypeError('Failed to parse URL from ' + input, { cause: err })\n }\n\n // 3. If parsedURL includes credentials, then throw a TypeError.\n if (parsedURL.username || parsedURL.password) {\n throw new TypeError(\n 'Request cannot be constructed from a URL that includes credentials: ' +\n input\n )\n }\n\n // 4. Set request to a new request whose URL is parsedURL.\n request = makeRequest({ urlList: [parsedURL] })\n\n // 5. Set fallbackMode to \"cors\".\n fallbackMode = 'cors'\n } else {\n // 6. Otherwise:\n\n // 7. Assert: input is a Request object.\n assert(input instanceof Request)\n\n // 8. Set request to input’s request.\n request = input[kState]\n\n // 9. Set signal to input’s signal.\n signal = input[kSignal]\n }\n\n // 7. Let origin be this’s relevant settings object’s origin.\n const origin = this[kRealm].settingsObject.origin\n\n // 8. Let window be \"client\".\n let window = 'client'\n\n // 9. If request’s window is an environment settings object and its origin\n // is same origin with origin, then set window to request’s window.\n if (\n request.window?.constructor?.name === 'EnvironmentSettingsObject' &&\n sameOrigin(request.window, origin)\n ) {\n window = request.window\n }\n\n // 10. If init[\"window\"] exists and is non-null, then throw a TypeError.\n if (init.window != null) {\n throw new TypeError(`'window' option '${window}' must be null`)\n }\n\n // 11. If init[\"window\"] exists, then set window to \"no-window\".\n if ('window' in init) {\n window = 'no-window'\n }\n\n // 12. Set request to a new request with the following properties:\n request = makeRequest({\n // URL request’s URL.\n // undici implementation note: this is set as the first item in request's urlList in makeRequest\n // method request’s method.\n method: request.method,\n // header list A copy of request’s header list.\n // undici implementation note: headersList is cloned in makeRequest\n headersList: request.headersList,\n // unsafe-request flag Set.\n unsafeRequest: request.unsafeRequest,\n // client This’s relevant settings object.\n client: this[kRealm].settingsObject,\n // window window.\n window,\n // priority request’s priority.\n priority: request.priority,\n // origin request’s origin. The propagation of the origin is only significant for navigation requests\n // being handled by a service worker. In this scenario a request can have an origin that is different\n // from the current client.\n origin: request.origin,\n // referrer request’s referrer.\n referrer: request.referrer,\n // referrer policy request’s referrer policy.\n referrerPolicy: request.referrerPolicy,\n // mode request’s mode.\n mode: request.mode,\n // credentials mode request’s credentials mode.\n credentials: request.credentials,\n // cache mode request’s cache mode.\n cache: request.cache,\n // redirect mode request’s redirect mode.\n redirect: request.redirect,\n // integrity metadata request’s integrity metadata.\n integrity: request.integrity,\n // keepalive request’s keepalive.\n keepalive: request.keepalive,\n // reload-navigation flag request’s reload-navigation flag.\n reloadNavigation: request.reloadNavigation,\n // history-navigation flag request’s history-navigation flag.\n historyNavigation: request.historyNavigation,\n // URL list A clone of request’s URL list.\n urlList: [...request.urlList]\n })\n\n const initHasKey = Object.keys(init).length !== 0\n\n // 13. If init is not empty, then:\n if (initHasKey) {\n // 1. If request’s mode is \"navigate\", then set it to \"same-origin\".\n if (request.mode === 'navigate') {\n request.mode = 'same-origin'\n }\n\n // 2. Unset request’s reload-navigation flag.\n request.reloadNavigation = false\n\n // 3. Unset request’s history-navigation flag.\n request.historyNavigation = false\n\n // 4. Set request’s origin to \"client\".\n request.origin = 'client'\n\n // 5. Set request’s referrer to \"client\"\n request.referrer = 'client'\n\n // 6. Set request’s referrer policy to the empty string.\n request.referrerPolicy = ''\n\n // 7. Set request’s URL to request’s current URL.\n request.url = request.urlList[request.urlList.length - 1]\n\n // 8. Set request’s URL list to « request’s URL ».\n request.urlList = [request.url]\n }\n\n // 14. If init[\"referrer\"] exists, then:\n if (init.referrer !== undefined) {\n // 1. Let referrer be init[\"referrer\"].\n const referrer = init.referrer\n\n // 2. If referrer is the empty string, then set request’s referrer to \"no-referrer\".\n if (referrer === '') {\n request.referrer = 'no-referrer'\n } else {\n // 1. Let parsedReferrer be the result of parsing referrer with\n // baseURL.\n // 2. If parsedReferrer is failure, then throw a TypeError.\n let parsedReferrer\n try {\n parsedReferrer = new URL(referrer, baseUrl)\n } catch (err) {\n throw new TypeError(`Referrer \"${referrer}\" is not a valid URL.`, { cause: err })\n }\n\n // 3. If one of the following is true\n // - parsedReferrer’s scheme is \"about\" and path is the string \"client\"\n // - parsedReferrer’s origin is not same origin with origin\n // then set request’s referrer to \"client\".\n if (\n (parsedReferrer.protocol === 'about:' && parsedReferrer.hostname === 'client') ||\n (origin && !sameOrigin(parsedReferrer, this[kRealm].settingsObject.baseUrl))\n ) {\n request.referrer = 'client'\n } else {\n // 4. Otherwise, set request’s referrer to parsedReferrer.\n request.referrer = parsedReferrer\n }\n }\n }\n\n // 15. If init[\"referrerPolicy\"] exists, then set request’s referrer policy\n // to it.\n if (init.referrerPolicy !== undefined) {\n request.referrerPolicy = init.referrerPolicy\n }\n\n // 16. Let mode be init[\"mode\"] if it exists, and fallbackMode otherwise.\n let mode\n if (init.mode !== undefined) {\n mode = init.mode\n } else {\n mode = fallbackMode\n }\n\n // 17. If mode is \"navigate\", then throw a TypeError.\n if (mode === 'navigate') {\n throw webidl.errors.exception({\n header: 'Request constructor',\n message: 'invalid request mode navigate.'\n })\n }\n\n // 18. If mode is non-null, set request’s mode to mode.\n if (mode != null) {\n request.mode = mode\n }\n\n // 19. If init[\"credentials\"] exists, then set request’s credentials mode\n // to it.\n if (init.credentials !== undefined) {\n request.credentials = init.credentials\n }\n\n // 18. If init[\"cache\"] exists, then set request’s cache mode to it.\n if (init.cache !== undefined) {\n request.cache = init.cache\n }\n\n // 21. If request’s cache mode is \"only-if-cached\" and request’s mode is\n // not \"same-origin\", then throw a TypeError.\n if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') {\n throw new TypeError(\n \"'only-if-cached' can be set only with 'same-origin' mode\"\n )\n }\n\n // 22. If init[\"redirect\"] exists, then set request’s redirect mode to it.\n if (init.redirect !== undefined) {\n request.redirect = init.redirect\n }\n\n // 23. If init[\"integrity\"] exists, then set request’s integrity metadata to it.\n if (init.integrity != null) {\n request.integrity = String(init.integrity)\n }\n\n // 24. If init[\"keepalive\"] exists, then set request’s keepalive to it.\n if (init.keepalive !== undefined) {\n request.keepalive = Boolean(init.keepalive)\n }\n\n // 25. If init[\"method\"] exists, then:\n if (init.method !== undefined) {\n // 1. Let method be init[\"method\"].\n let method = init.method\n\n // 2. If method is not a method or method is a forbidden method, then\n // throw a TypeError.\n if (!isValidHTTPToken(method)) {\n throw new TypeError(`'${method}' is not a valid HTTP method.`)\n }\n\n if (forbiddenMethodsSet.has(method.toUpperCase())) {\n throw new TypeError(`'${method}' HTTP method is unsupported.`)\n }\n\n // 3. Normalize method.\n method = normalizeMethodRecord[method] ?? normalizeMethod(method)\n\n // 4. Set request’s method to method.\n request.method = method\n }\n\n // 26. If init[\"signal\"] exists, then set signal to it.\n if (init.signal !== undefined) {\n signal = init.signal\n }\n\n // 27. Set this’s request to request.\n this[kState] = request\n\n // 28. Set this’s signal to a new AbortSignal object with this’s relevant\n // Realm.\n // TODO: could this be simplified with AbortSignal.any\n // (https://dom.spec.whatwg.org/#dom-abortsignal-any)\n const ac = new AbortController()\n this[kSignal] = ac.signal\n this[kSignal][kRealm] = this[kRealm]\n\n // 29. If signal is not null, then make this’s signal follow signal.\n if (signal != null) {\n if (\n !signal ||\n typeof signal.aborted !== 'boolean' ||\n typeof signal.addEventListener !== 'function'\n ) {\n throw new TypeError(\n \"Failed to construct 'Request': member signal is not of type AbortSignal.\"\n )\n }\n\n if (signal.aborted) {\n ac.abort(signal.reason)\n } else {\n // Keep a strong ref to ac while request object\n // is alive. This is needed to prevent AbortController\n // from being prematurely garbage collected.\n // See, https://github.com/nodejs/undici/issues/1926.\n this[kAbortController] = ac\n\n const acRef = new WeakRef(ac)\n const abort = function () {\n const ac = acRef.deref()\n if (ac !== undefined) {\n ac.abort(this.reason)\n }\n }\n\n // Third-party AbortControllers may not work with these.\n // See, https://github.com/nodejs/undici/pull/1910#issuecomment-1464495619.\n try {\n // If the max amount of listeners is equal to the default, increase it\n // This is only available in node >= v19.9.0\n if (typeof getMaxListeners === 'function' && getMaxListeners(signal) === defaultMaxListeners) {\n setMaxListeners(100, signal)\n } else if (getEventListeners(signal, 'abort').length >= defaultMaxListeners) {\n setMaxListeners(100, signal)\n }\n } catch {}\n\n util.addAbortListener(signal, abort)\n requestFinalizer.register(ac, { signal, abort })\n }\n }\n\n // 30. Set this’s headers to a new Headers object with this’s relevant\n // Realm, whose header list is request’s header list and guard is\n // \"request\".\n this[kHeaders] = new Headers(kConstruct)\n this[kHeaders][kHeadersList] = request.headersList\n this[kHeaders][kGuard] = 'request'\n this[kHeaders][kRealm] = this[kRealm]\n\n // 31. If this’s request’s mode is \"no-cors\", then:\n if (mode === 'no-cors') {\n // 1. If this’s request’s method is not a CORS-safelisted method,\n // then throw a TypeError.\n if (!corsSafeListedMethodsSet.has(request.method)) {\n throw new TypeError(\n `'${request.method} is unsupported in no-cors mode.`\n )\n }\n\n // 2. Set this’s headers’s guard to \"request-no-cors\".\n this[kHeaders][kGuard] = 'request-no-cors'\n }\n\n // 32. If init is not empty, then:\n if (initHasKey) {\n /** @type {HeadersList} */\n const headersList = this[kHeaders][kHeadersList]\n // 1. Let headers be a copy of this’s headers and its associated header\n // list.\n // 2. If init[\"headers\"] exists, then set headers to init[\"headers\"].\n const headers = init.headers !== undefined ? init.headers : new HeadersList(headersList)\n\n // 3. Empty this’s headers’s header list.\n headersList.clear()\n\n // 4. If headers is a Headers object, then for each header in its header\n // list, append header’s name/header’s value to this’s headers.\n if (headers instanceof HeadersList) {\n for (const [key, val] of headers) {\n headersList.append(key, val)\n }\n // Note: Copy the `set-cookie` meta-data.\n headersList.cookies = headers.cookies\n } else {\n // 5. Otherwise, fill this’s headers with headers.\n fillHeaders(this[kHeaders], headers)\n }\n }\n\n // 33. Let inputBody be input’s request’s body if input is a Request\n // object; otherwise null.\n const inputBody = input instanceof Request ? input[kState].body : null\n\n // 34. If either init[\"body\"] exists and is non-null or inputBody is\n // non-null, and request’s method is `GET` or `HEAD`, then throw a\n // TypeError.\n if (\n (init.body != null || inputBody != null) &&\n (request.method === 'GET' || request.method === 'HEAD')\n ) {\n throw new TypeError('Request with GET/HEAD method cannot have body.')\n }\n\n // 35. Let initBody be null.\n let initBody = null\n\n // 36. If init[\"body\"] exists and is non-null, then:\n if (init.body != null) {\n // 1. Let Content-Type be null.\n // 2. Set initBody and Content-Type to the result of extracting\n // init[\"body\"], with keepalive set to request’s keepalive.\n const [extractedBody, contentType] = extractBody(\n init.body,\n request.keepalive\n )\n initBody = extractedBody\n\n // 3, If Content-Type is non-null and this’s headers’s header list does\n // not contain `Content-Type`, then append `Content-Type`/Content-Type to\n // this’s headers.\n if (contentType && !this[kHeaders][kHeadersList].contains('content-type')) {\n this[kHeaders].append('content-type', contentType)\n }\n }\n\n // 37. Let inputOrInitBody be initBody if it is non-null; otherwise\n // inputBody.\n const inputOrInitBody = initBody ?? inputBody\n\n // 38. If inputOrInitBody is non-null and inputOrInitBody’s source is\n // null, then:\n if (inputOrInitBody != null && inputOrInitBody.source == null) {\n // 1. If initBody is non-null and init[\"duplex\"] does not exist,\n // then throw a TypeError.\n if (initBody != null && init.duplex == null) {\n throw new TypeError('RequestInit: duplex option is required when sending a body.')\n }\n\n // 2. If this’s request’s mode is neither \"same-origin\" nor \"cors\",\n // then throw a TypeError.\n if (request.mode !== 'same-origin' && request.mode !== 'cors') {\n throw new TypeError(\n 'If request is made from ReadableStream, mode should be \"same-origin\" or \"cors\"'\n )\n }\n\n // 3. Set this’s request’s use-CORS-preflight flag.\n request.useCORSPreflightFlag = true\n }\n\n // 39. Let finalBody be inputOrInitBody.\n let finalBody = inputOrInitBody\n\n // 40. If initBody is null and inputBody is non-null, then:\n if (initBody == null && inputBody != null) {\n // 1. If input is unusable, then throw a TypeError.\n if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) {\n throw new TypeError(\n 'Cannot construct a Request with a Request object that has already been used.'\n )\n }\n\n // 2. Set finalBody to the result of creating a proxy for inputBody.\n if (!TransformStream) {\n TransformStream = require('stream/web').TransformStream\n }\n\n // https://streams.spec.whatwg.org/#readablestream-create-a-proxy\n const identityTransform = new TransformStream()\n inputBody.stream.pipeThrough(identityTransform)\n finalBody = {\n source: inputBody.source,\n length: inputBody.length,\n stream: identityTransform.readable\n }\n }\n\n // 41. Set this’s request’s body to finalBody.\n this[kState].body = finalBody\n }\n\n // Returns request’s HTTP method, which is \"GET\" by default.\n get method () {\n webidl.brandCheck(this, Request)\n\n // The method getter steps are to return this’s request’s method.\n return this[kState].method\n }\n\n // Returns the URL of request as a string.\n get url () {\n webidl.brandCheck(this, Request)\n\n // The url getter steps are to return this’s request’s URL, serialized.\n return URLSerializer(this[kState].url)\n }\n\n // Returns a Headers object consisting of the headers associated with request.\n // Note that headers added in the network layer by the user agent will not\n // be accounted for in this object, e.g., the \"Host\" header.\n get headers () {\n webidl.brandCheck(this, Request)\n\n // The headers getter steps are to return this’s headers.\n return this[kHeaders]\n }\n\n // Returns the kind of resource requested by request, e.g., \"document\"\n // or \"script\".\n get destination () {\n webidl.brandCheck(this, Request)\n\n // The destination getter are to return this’s request’s destination.\n return this[kState].destination\n }\n\n // Returns the referrer of request. Its value can be a same-origin URL if\n // explicitly set in init, the empty string to indicate no referrer, and\n // \"about:client\" when defaulting to the global’s default. This is used\n // during fetching to determine the value of the `Referer` header of the\n // request being made.\n get referrer () {\n webidl.brandCheck(this, Request)\n\n // 1. If this’s request’s referrer is \"no-referrer\", then return the\n // empty string.\n if (this[kState].referrer === 'no-referrer') {\n return ''\n }\n\n // 2. If this’s request’s referrer is \"client\", then return\n // \"about:client\".\n if (this[kState].referrer === 'client') {\n return 'about:client'\n }\n\n // Return this’s request’s referrer, serialized.\n return this[kState].referrer.toString()\n }\n\n // Returns the referrer policy associated with request.\n // This is used during fetching to compute the value of the request’s\n // referrer.\n get referrerPolicy () {\n webidl.brandCheck(this, Request)\n\n // The referrerPolicy getter steps are to return this’s request’s referrer policy.\n return this[kState].referrerPolicy\n }\n\n // Returns the mode associated with request, which is a string indicating\n // whether the request will use CORS, or will be restricted to same-origin\n // URLs.\n get mode () {\n webidl.brandCheck(this, Request)\n\n // The mode getter steps are to return this’s request’s mode.\n return this[kState].mode\n }\n\n // Returns the credentials mode associated with request,\n // which is a string indicating whether credentials will be sent with the\n // request always, never, or only when sent to a same-origin URL.\n get credentials () {\n // The credentials getter steps are to return this’s request’s credentials mode.\n return this[kState].credentials\n }\n\n // Returns the cache mode associated with request,\n // which is a string indicating how the request will\n // interact with the browser’s cache when fetching.\n get cache () {\n webidl.brandCheck(this, Request)\n\n // The cache getter steps are to return this’s request’s cache mode.\n return this[kState].cache\n }\n\n // Returns the redirect mode associated with request,\n // which is a string indicating how redirects for the\n // request will be handled during fetching. A request\n // will follow redirects by default.\n get redirect () {\n webidl.brandCheck(this, Request)\n\n // The redirect getter steps are to return this’s request’s redirect mode.\n return this[kState].redirect\n }\n\n // Returns request’s subresource integrity metadata, which is a\n // cryptographic hash of the resource being fetched. Its value\n // consists of multiple hashes separated by whitespace. [SRI]\n get integrity () {\n webidl.brandCheck(this, Request)\n\n // The integrity getter steps are to return this’s request’s integrity\n // metadata.\n return this[kState].integrity\n }\n\n // Returns a boolean indicating whether or not request can outlive the\n // global in which it was created.\n get keepalive () {\n webidl.brandCheck(this, Request)\n\n // The keepalive getter steps are to return this’s request’s keepalive.\n return this[kState].keepalive\n }\n\n // Returns a boolean indicating whether or not request is for a reload\n // navigation.\n get isReloadNavigation () {\n webidl.brandCheck(this, Request)\n\n // The isReloadNavigation getter steps are to return true if this’s\n // request’s reload-navigation flag is set; otherwise false.\n return this[kState].reloadNavigation\n }\n\n // Returns a boolean indicating whether or not request is for a history\n // navigation (a.k.a. back-foward navigation).\n get isHistoryNavigation () {\n webidl.brandCheck(this, Request)\n\n // The isHistoryNavigation getter steps are to return true if this’s request’s\n // history-navigation flag is set; otherwise false.\n return this[kState].historyNavigation\n }\n\n // Returns the signal associated with request, which is an AbortSignal\n // object indicating whether or not request has been aborted, and its\n // abort event handler.\n get signal () {\n webidl.brandCheck(this, Request)\n\n // The signal getter steps are to return this’s signal.\n return this[kSignal]\n }\n\n get body () {\n webidl.brandCheck(this, Request)\n\n return this[kState].body ? this[kState].body.stream : null\n }\n\n get bodyUsed () {\n webidl.brandCheck(this, Request)\n\n return !!this[kState].body && util.isDisturbed(this[kState].body.stream)\n }\n\n get duplex () {\n webidl.brandCheck(this, Request)\n\n return 'half'\n }\n\n // Returns a clone of request.\n clone () {\n webidl.brandCheck(this, Request)\n\n // 1. If this is unusable, then throw a TypeError.\n if (this.bodyUsed || this.body?.locked) {\n throw new TypeError('unusable')\n }\n\n // 2. Let clonedRequest be the result of cloning this’s request.\n const clonedRequest = cloneRequest(this[kState])\n\n // 3. Let clonedRequestObject be the result of creating a Request object,\n // given clonedRequest, this’s headers’s guard, and this’s relevant Realm.\n const clonedRequestObject = new Request(kConstruct)\n clonedRequestObject[kState] = clonedRequest\n clonedRequestObject[kRealm] = this[kRealm]\n clonedRequestObject[kHeaders] = new Headers(kConstruct)\n clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList\n clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard]\n clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm]\n\n // 4. Make clonedRequestObject’s signal follow this’s signal.\n const ac = new AbortController()\n if (this.signal.aborted) {\n ac.abort(this.signal.reason)\n } else {\n util.addAbortListener(\n this.signal,\n () => {\n ac.abort(this.signal.reason)\n }\n )\n }\n clonedRequestObject[kSignal] = ac.signal\n\n // 4. Return clonedRequestObject.\n return clonedRequestObject\n }\n}\n\nmixinBody(Request)\n\nfunction makeRequest (init) {\n // https://fetch.spec.whatwg.org/#requests\n const request = {\n method: 'GET',\n localURLsOnly: false,\n unsafeRequest: false,\n body: null,\n client: null,\n reservedClient: null,\n replacesClientId: '',\n window: 'client',\n keepalive: false,\n serviceWorkers: 'all',\n initiator: '',\n destination: '',\n priority: null,\n origin: 'client',\n policyContainer: 'client',\n referrer: 'client',\n referrerPolicy: '',\n mode: 'no-cors',\n useCORSPreflightFlag: false,\n credentials: 'same-origin',\n useCredentials: false,\n cache: 'default',\n redirect: 'follow',\n integrity: '',\n cryptoGraphicsNonceMetadata: '',\n parserMetadata: '',\n reloadNavigation: false,\n historyNavigation: false,\n userActivation: false,\n taintedOrigin: false,\n redirectCount: 0,\n responseTainting: 'basic',\n preventNoCacheCacheControlHeaderModification: false,\n done: false,\n timingAllowFailed: false,\n ...init,\n headersList: init.headersList\n ? new HeadersList(init.headersList)\n : new HeadersList()\n }\n request.url = request.urlList[0]\n return request\n}\n\n// https://fetch.spec.whatwg.org/#concept-request-clone\nfunction cloneRequest (request) {\n // To clone a request request, run these steps:\n\n // 1. Let newRequest be a copy of request, except for its body.\n const newRequest = makeRequest({ ...request, body: null })\n\n // 2. If request’s body is non-null, set newRequest’s body to the\n // result of cloning request’s body.\n if (request.body != null) {\n newRequest.body = cloneBody(request.body)\n }\n\n // 3. Return newRequest.\n return newRequest\n}\n\nObject.defineProperties(Request.prototype, {\n method: kEnumerableProperty,\n url: kEnumerableProperty,\n headers: kEnumerableProperty,\n redirect: kEnumerableProperty,\n clone: kEnumerableProperty,\n signal: kEnumerableProperty,\n duplex: kEnumerableProperty,\n destination: kEnumerableProperty,\n body: kEnumerableProperty,\n bodyUsed: kEnumerableProperty,\n isHistoryNavigation: kEnumerableProperty,\n isReloadNavigation: kEnumerableProperty,\n keepalive: kEnumerableProperty,\n integrity: kEnumerableProperty,\n cache: kEnumerableProperty,\n credentials: kEnumerableProperty,\n attribute: kEnumerableProperty,\n referrerPolicy: kEnumerableProperty,\n referrer: kEnumerableProperty,\n mode: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'Request',\n configurable: true\n }\n})\n\nwebidl.converters.Request = webidl.interfaceConverter(\n Request\n)\n\n// https://fetch.spec.whatwg.org/#requestinfo\nwebidl.converters.RequestInfo = function (V) {\n if (typeof V === 'string') {\n return webidl.converters.USVString(V)\n }\n\n if (V instanceof Request) {\n return webidl.converters.Request(V)\n }\n\n return webidl.converters.USVString(V)\n}\n\nwebidl.converters.AbortSignal = webidl.interfaceConverter(\n AbortSignal\n)\n\n// https://fetch.spec.whatwg.org/#requestinit\nwebidl.converters.RequestInit = webidl.dictionaryConverter([\n {\n key: 'method',\n converter: webidl.converters.ByteString\n },\n {\n key: 'headers',\n converter: webidl.converters.HeadersInit\n },\n {\n key: 'body',\n converter: webidl.nullableConverter(\n webidl.converters.BodyInit\n )\n },\n {\n key: 'referrer',\n converter: webidl.converters.USVString\n },\n {\n key: 'referrerPolicy',\n converter: webidl.converters.DOMString,\n // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy\n allowedValues: referrerPolicy\n },\n {\n key: 'mode',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#concept-request-mode\n allowedValues: requestMode\n },\n {\n key: 'credentials',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#requestcredentials\n allowedValues: requestCredentials\n },\n {\n key: 'cache',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#requestcache\n allowedValues: requestCache\n },\n {\n key: 'redirect',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#requestredirect\n allowedValues: requestRedirect\n },\n {\n key: 'integrity',\n converter: webidl.converters.DOMString\n },\n {\n key: 'keepalive',\n converter: webidl.converters.boolean\n },\n {\n key: 'signal',\n converter: webidl.nullableConverter(\n (signal) => webidl.converters.AbortSignal(\n signal,\n { strict: false }\n )\n )\n },\n {\n key: 'window',\n converter: webidl.converters.any\n },\n {\n key: 'duplex',\n converter: webidl.converters.DOMString,\n allowedValues: requestDuplex\n }\n])\n\nmodule.exports = { Request, makeRequest }\n","'use strict'\n\nconst { Headers, HeadersList, fill } = require('./headers')\nconst { extractBody, cloneBody, mixinBody } = require('./body')\nconst util = require('../core/util')\nconst { kEnumerableProperty } = util\nconst {\n isValidReasonPhrase,\n isCancelled,\n isAborted,\n isBlobLike,\n serializeJavascriptValueToJSONString,\n isErrorLike,\n isomorphicEncode\n} = require('./util')\nconst {\n redirectStatusSet,\n nullBodyStatus,\n DOMException\n} = require('./constants')\nconst { kState, kHeaders, kGuard, kRealm } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { FormData } = require('./formdata')\nconst { getGlobalOrigin } = require('./global')\nconst { URLSerializer } = require('./dataURL')\nconst { kHeadersList, kConstruct } = require('../core/symbols')\nconst assert = require('assert')\nconst { types } = require('util')\n\nconst ReadableStream = globalThis.ReadableStream || require('stream/web').ReadableStream\nconst textEncoder = new TextEncoder('utf-8')\n\n// https://fetch.spec.whatwg.org/#response-class\nclass Response {\n // Creates network error Response.\n static error () {\n // TODO\n const relevantRealm = { settingsObject: {} }\n\n // The static error() method steps are to return the result of creating a\n // Response object, given a new network error, \"immutable\", and this’s\n // relevant Realm.\n const responseObject = new Response()\n responseObject[kState] = makeNetworkError()\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList\n responseObject[kHeaders][kGuard] = 'immutable'\n responseObject[kHeaders][kRealm] = relevantRealm\n return responseObject\n }\n\n // https://fetch.spec.whatwg.org/#dom-response-json\n static json (data, init = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'Response.json' })\n\n if (init !== null) {\n init = webidl.converters.ResponseInit(init)\n }\n\n // 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data.\n const bytes = textEncoder.encode(\n serializeJavascriptValueToJSONString(data)\n )\n\n // 2. Let body be the result of extracting bytes.\n const body = extractBody(bytes)\n\n // 3. Let responseObject be the result of creating a Response object, given a new response,\n // \"response\", and this’s relevant Realm.\n const relevantRealm = { settingsObject: {} }\n const responseObject = new Response()\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kGuard] = 'response'\n responseObject[kHeaders][kRealm] = relevantRealm\n\n // 4. Perform initialize a response given responseObject, init, and (body, \"application/json\").\n initializeResponse(responseObject, init, { body: body[0], type: 'application/json' })\n\n // 5. Return responseObject.\n return responseObject\n }\n\n // Creates a redirect Response that redirects to url with status status.\n static redirect (url, status = 302) {\n const relevantRealm = { settingsObject: {} }\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Response.redirect' })\n\n url = webidl.converters.USVString(url)\n status = webidl.converters['unsigned short'](status)\n\n // 1. Let parsedURL be the result of parsing url with current settings\n // object’s API base URL.\n // 2. If parsedURL is failure, then throw a TypeError.\n // TODO: base-URL?\n let parsedURL\n try {\n parsedURL = new URL(url, getGlobalOrigin())\n } catch (err) {\n throw Object.assign(new TypeError('Failed to parse URL from ' + url), {\n cause: err\n })\n }\n\n // 3. If status is not a redirect status, then throw a RangeError.\n if (!redirectStatusSet.has(status)) {\n throw new RangeError('Invalid status code ' + status)\n }\n\n // 4. Let responseObject be the result of creating a Response object,\n // given a new response, \"immutable\", and this’s relevant Realm.\n const responseObject = new Response()\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kGuard] = 'immutable'\n responseObject[kHeaders][kRealm] = relevantRealm\n\n // 5. Set responseObject’s response’s status to status.\n responseObject[kState].status = status\n\n // 6. Let value be parsedURL, serialized and isomorphic encoded.\n const value = isomorphicEncode(URLSerializer(parsedURL))\n\n // 7. Append `Location`/value to responseObject’s response’s header list.\n responseObject[kState].headersList.append('location', value)\n\n // 8. Return responseObject.\n return responseObject\n }\n\n // https://fetch.spec.whatwg.org/#dom-response\n constructor (body = null, init = {}) {\n if (body !== null) {\n body = webidl.converters.BodyInit(body)\n }\n\n init = webidl.converters.ResponseInit(init)\n\n // TODO\n this[kRealm] = { settingsObject: {} }\n\n // 1. Set this’s response to a new response.\n this[kState] = makeResponse({})\n\n // 2. Set this’s headers to a new Headers object with this’s relevant\n // Realm, whose header list is this’s response’s header list and guard\n // is \"response\".\n this[kHeaders] = new Headers(kConstruct)\n this[kHeaders][kGuard] = 'response'\n this[kHeaders][kHeadersList] = this[kState].headersList\n this[kHeaders][kRealm] = this[kRealm]\n\n // 3. Let bodyWithType be null.\n let bodyWithType = null\n\n // 4. If body is non-null, then set bodyWithType to the result of extracting body.\n if (body != null) {\n const [extractedBody, type] = extractBody(body)\n bodyWithType = { body: extractedBody, type }\n }\n\n // 5. Perform initialize a response given this, init, and bodyWithType.\n initializeResponse(this, init, bodyWithType)\n }\n\n // Returns response’s type, e.g., \"cors\".\n get type () {\n webidl.brandCheck(this, Response)\n\n // The type getter steps are to return this’s response’s type.\n return this[kState].type\n }\n\n // Returns response’s URL, if it has one; otherwise the empty string.\n get url () {\n webidl.brandCheck(this, Response)\n\n const urlList = this[kState].urlList\n\n // The url getter steps are to return the empty string if this’s\n // response’s URL is null; otherwise this’s response’s URL,\n // serialized with exclude fragment set to true.\n const url = urlList[urlList.length - 1] ?? null\n\n if (url === null) {\n return ''\n }\n\n return URLSerializer(url, true)\n }\n\n // Returns whether response was obtained through a redirect.\n get redirected () {\n webidl.brandCheck(this, Response)\n\n // The redirected getter steps are to return true if this’s response’s URL\n // list has more than one item; otherwise false.\n return this[kState].urlList.length > 1\n }\n\n // Returns response’s status.\n get status () {\n webidl.brandCheck(this, Response)\n\n // The status getter steps are to return this’s response’s status.\n return this[kState].status\n }\n\n // Returns whether response’s status is an ok status.\n get ok () {\n webidl.brandCheck(this, Response)\n\n // The ok getter steps are to return true if this’s response’s status is an\n // ok status; otherwise false.\n return this[kState].status >= 200 && this[kState].status <= 299\n }\n\n // Returns response’s status message.\n get statusText () {\n webidl.brandCheck(this, Response)\n\n // The statusText getter steps are to return this’s response’s status\n // message.\n return this[kState].statusText\n }\n\n // Returns response’s headers as Headers.\n get headers () {\n webidl.brandCheck(this, Response)\n\n // The headers getter steps are to return this’s headers.\n return this[kHeaders]\n }\n\n get body () {\n webidl.brandCheck(this, Response)\n\n return this[kState].body ? this[kState].body.stream : null\n }\n\n get bodyUsed () {\n webidl.brandCheck(this, Response)\n\n return !!this[kState].body && util.isDisturbed(this[kState].body.stream)\n }\n\n // Returns a clone of response.\n clone () {\n webidl.brandCheck(this, Response)\n\n // 1. If this is unusable, then throw a TypeError.\n if (this.bodyUsed || (this.body && this.body.locked)) {\n throw webidl.errors.exception({\n header: 'Response.clone',\n message: 'Body has already been consumed.'\n })\n }\n\n // 2. Let clonedResponse be the result of cloning this’s response.\n const clonedResponse = cloneResponse(this[kState])\n\n // 3. Return the result of creating a Response object, given\n // clonedResponse, this’s headers’s guard, and this’s relevant Realm.\n const clonedResponseObject = new Response()\n clonedResponseObject[kState] = clonedResponse\n clonedResponseObject[kRealm] = this[kRealm]\n clonedResponseObject[kHeaders][kHeadersList] = clonedResponse.headersList\n clonedResponseObject[kHeaders][kGuard] = this[kHeaders][kGuard]\n clonedResponseObject[kHeaders][kRealm] = this[kHeaders][kRealm]\n\n return clonedResponseObject\n }\n}\n\nmixinBody(Response)\n\nObject.defineProperties(Response.prototype, {\n type: kEnumerableProperty,\n url: kEnumerableProperty,\n status: kEnumerableProperty,\n ok: kEnumerableProperty,\n redirected: kEnumerableProperty,\n statusText: kEnumerableProperty,\n headers: kEnumerableProperty,\n clone: kEnumerableProperty,\n body: kEnumerableProperty,\n bodyUsed: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'Response',\n configurable: true\n }\n})\n\nObject.defineProperties(Response, {\n json: kEnumerableProperty,\n redirect: kEnumerableProperty,\n error: kEnumerableProperty\n})\n\n// https://fetch.spec.whatwg.org/#concept-response-clone\nfunction cloneResponse (response) {\n // To clone a response response, run these steps:\n\n // 1. If response is a filtered response, then return a new identical\n // filtered response whose internal response is a clone of response’s\n // internal response.\n if (response.internalResponse) {\n return filterResponse(\n cloneResponse(response.internalResponse),\n response.type\n )\n }\n\n // 2. Let newResponse be a copy of response, except for its body.\n const newResponse = makeResponse({ ...response, body: null })\n\n // 3. If response’s body is non-null, then set newResponse’s body to the\n // result of cloning response’s body.\n if (response.body != null) {\n newResponse.body = cloneBody(response.body)\n }\n\n // 4. Return newResponse.\n return newResponse\n}\n\nfunction makeResponse (init) {\n return {\n aborted: false,\n rangeRequested: false,\n timingAllowPassed: false,\n requestIncludesCredentials: false,\n type: 'default',\n status: 200,\n timingInfo: null,\n cacheState: '',\n statusText: '',\n ...init,\n headersList: init.headersList\n ? new HeadersList(init.headersList)\n : new HeadersList(),\n urlList: init.urlList ? [...init.urlList] : []\n }\n}\n\nfunction makeNetworkError (reason) {\n const isError = isErrorLike(reason)\n return makeResponse({\n type: 'error',\n status: 0,\n error: isError\n ? reason\n : new Error(reason ? String(reason) : reason),\n aborted: reason && reason.name === 'AbortError'\n })\n}\n\nfunction makeFilteredResponse (response, state) {\n state = {\n internalResponse: response,\n ...state\n }\n\n return new Proxy(response, {\n get (target, p) {\n return p in state ? state[p] : target[p]\n },\n set (target, p, value) {\n assert(!(p in state))\n target[p] = value\n return true\n }\n })\n}\n\n// https://fetch.spec.whatwg.org/#concept-filtered-response\nfunction filterResponse (response, type) {\n // Set response to the following filtered response with response as its\n // internal response, depending on request’s response tainting:\n if (type === 'basic') {\n // A basic filtered response is a filtered response whose type is \"basic\"\n // and header list excludes any headers in internal response’s header list\n // whose name is a forbidden response-header name.\n\n // Note: undici does not implement forbidden response-header names\n return makeFilteredResponse(response, {\n type: 'basic',\n headersList: response.headersList\n })\n } else if (type === 'cors') {\n // A CORS filtered response is a filtered response whose type is \"cors\"\n // and header list excludes any headers in internal response’s header\n // list whose name is not a CORS-safelisted response-header name, given\n // internal response’s CORS-exposed header-name list.\n\n // Note: undici does not implement CORS-safelisted response-header names\n return makeFilteredResponse(response, {\n type: 'cors',\n headersList: response.headersList\n })\n } else if (type === 'opaque') {\n // An opaque filtered response is a filtered response whose type is\n // \"opaque\", URL list is the empty list, status is 0, status message\n // is the empty byte sequence, header list is empty, and body is null.\n\n return makeFilteredResponse(response, {\n type: 'opaque',\n urlList: Object.freeze([]),\n status: 0,\n statusText: '',\n body: null\n })\n } else if (type === 'opaqueredirect') {\n // An opaque-redirect filtered response is a filtered response whose type\n // is \"opaqueredirect\", status is 0, status message is the empty byte\n // sequence, header list is empty, and body is null.\n\n return makeFilteredResponse(response, {\n type: 'opaqueredirect',\n status: 0,\n statusText: '',\n headersList: [],\n body: null\n })\n } else {\n assert(false)\n }\n}\n\n// https://fetch.spec.whatwg.org/#appropriate-network-error\nfunction makeAppropriateNetworkError (fetchParams, err = null) {\n // 1. Assert: fetchParams is canceled.\n assert(isCancelled(fetchParams))\n\n // 2. Return an aborted network error if fetchParams is aborted;\n // otherwise return a network error.\n return isAborted(fetchParams)\n ? makeNetworkError(Object.assign(new DOMException('The operation was aborted.', 'AbortError'), { cause: err }))\n : makeNetworkError(Object.assign(new DOMException('Request was cancelled.'), { cause: err }))\n}\n\n// https://whatpr.org/fetch/1392.html#initialize-a-response\nfunction initializeResponse (response, init, body) {\n // 1. If init[\"status\"] is not in the range 200 to 599, inclusive, then\n // throw a RangeError.\n if (init.status !== null && (init.status < 200 || init.status > 599)) {\n throw new RangeError('init[\"status\"] must be in the range of 200 to 599, inclusive.')\n }\n\n // 2. If init[\"statusText\"] does not match the reason-phrase token production,\n // then throw a TypeError.\n if ('statusText' in init && init.statusText != null) {\n // See, https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2:\n // reason-phrase = *( HTAB / SP / VCHAR / obs-text )\n if (!isValidReasonPhrase(String(init.statusText))) {\n throw new TypeError('Invalid statusText')\n }\n }\n\n // 3. Set response’s response’s status to init[\"status\"].\n if ('status' in init && init.status != null) {\n response[kState].status = init.status\n }\n\n // 4. Set response’s response’s status message to init[\"statusText\"].\n if ('statusText' in init && init.statusText != null) {\n response[kState].statusText = init.statusText\n }\n\n // 5. If init[\"headers\"] exists, then fill response’s headers with init[\"headers\"].\n if ('headers' in init && init.headers != null) {\n fill(response[kHeaders], init.headers)\n }\n\n // 6. If body was given, then:\n if (body) {\n // 1. If response's status is a null body status, then throw a TypeError.\n if (nullBodyStatus.includes(response.status)) {\n throw webidl.errors.exception({\n header: 'Response constructor',\n message: 'Invalid response status code ' + response.status\n })\n }\n\n // 2. Set response's body to body's body.\n response[kState].body = body.body\n\n // 3. If body's type is non-null and response's header list does not contain\n // `Content-Type`, then append (`Content-Type`, body's type) to response's header list.\n if (body.type != null && !response[kState].headersList.contains('Content-Type')) {\n response[kState].headersList.append('content-type', body.type)\n }\n }\n}\n\nwebidl.converters.ReadableStream = webidl.interfaceConverter(\n ReadableStream\n)\n\nwebidl.converters.FormData = webidl.interfaceConverter(\n FormData\n)\n\nwebidl.converters.URLSearchParams = webidl.interfaceConverter(\n URLSearchParams\n)\n\n// https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit\nwebidl.converters.XMLHttpRequestBodyInit = function (V) {\n if (typeof V === 'string') {\n return webidl.converters.USVString(V)\n }\n\n if (isBlobLike(V)) {\n return webidl.converters.Blob(V, { strict: false })\n }\n\n if (types.isArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) {\n return webidl.converters.BufferSource(V)\n }\n\n if (util.isFormDataLike(V)) {\n return webidl.converters.FormData(V, { strict: false })\n }\n\n if (V instanceof URLSearchParams) {\n return webidl.converters.URLSearchParams(V)\n }\n\n return webidl.converters.DOMString(V)\n}\n\n// https://fetch.spec.whatwg.org/#bodyinit\nwebidl.converters.BodyInit = function (V) {\n if (V instanceof ReadableStream) {\n return webidl.converters.ReadableStream(V)\n }\n\n // Note: the spec doesn't include async iterables,\n // this is an undici extension.\n if (V?.[Symbol.asyncIterator]) {\n return V\n }\n\n return webidl.converters.XMLHttpRequestBodyInit(V)\n}\n\nwebidl.converters.ResponseInit = webidl.dictionaryConverter([\n {\n key: 'status',\n converter: webidl.converters['unsigned short'],\n defaultValue: 200\n },\n {\n key: 'statusText',\n converter: webidl.converters.ByteString,\n defaultValue: ''\n },\n {\n key: 'headers',\n converter: webidl.converters.HeadersInit\n }\n])\n\nmodule.exports = {\n makeNetworkError,\n makeResponse,\n makeAppropriateNetworkError,\n filterResponse,\n Response,\n cloneResponse\n}\n","'use strict'\n\nmodule.exports = {\n kUrl: Symbol('url'),\n kHeaders: Symbol('headers'),\n kSignal: Symbol('signal'),\n kState: Symbol('state'),\n kGuard: Symbol('guard'),\n kRealm: Symbol('realm')\n}\n","'use strict'\n\nconst { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require('./constants')\nconst { getGlobalOrigin } = require('./global')\nconst { performance } = require('perf_hooks')\nconst { isBlobLike, toUSVString, ReadableStreamFrom } = require('../core/util')\nconst assert = require('assert')\nconst { isUint8Array } = require('util/types')\n\nlet supportedHashes = []\n\n// https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable\n/** @type {import('crypto')|undefined} */\nlet crypto\n\ntry {\n crypto = require('crypto')\n const possibleRelevantHashes = ['sha256', 'sha384', 'sha512']\n supportedHashes = crypto.getHashes().filter((hash) => possibleRelevantHashes.includes(hash))\n/* c8 ignore next 3 */\n} catch {\n}\n\nfunction responseURL (response) {\n // https://fetch.spec.whatwg.org/#responses\n // A response has an associated URL. It is a pointer to the last URL\n // in response’s URL list and null if response’s URL list is empty.\n const urlList = response.urlList\n const length = urlList.length\n return length === 0 ? null : urlList[length - 1].toString()\n}\n\n// https://fetch.spec.whatwg.org/#concept-response-location-url\nfunction responseLocationURL (response, requestFragment) {\n // 1. If response’s status is not a redirect status, then return null.\n if (!redirectStatusSet.has(response.status)) {\n return null\n }\n\n // 2. Let location be the result of extracting header list values given\n // `Location` and response’s header list.\n let location = response.headersList.get('location')\n\n // 3. If location is a header value, then set location to the result of\n // parsing location with response’s URL.\n if (location !== null && isValidHeaderValue(location)) {\n location = new URL(location, responseURL(response))\n }\n\n // 4. If location is a URL whose fragment is null, then set location’s\n // fragment to requestFragment.\n if (location && !location.hash) {\n location.hash = requestFragment\n }\n\n // 5. Return location.\n return location\n}\n\n/** @returns {URL} */\nfunction requestCurrentURL (request) {\n return request.urlList[request.urlList.length - 1]\n}\n\nfunction requestBadPort (request) {\n // 1. Let url be request’s current URL.\n const url = requestCurrentURL(request)\n\n // 2. If url’s scheme is an HTTP(S) scheme and url’s port is a bad port,\n // then return blocked.\n if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) {\n return 'blocked'\n }\n\n // 3. Return allowed.\n return 'allowed'\n}\n\nfunction isErrorLike (object) {\n return object instanceof Error || (\n object?.constructor?.name === 'Error' ||\n object?.constructor?.name === 'DOMException'\n )\n}\n\n// Check whether |statusText| is a ByteString and\n// matches the Reason-Phrase token production.\n// RFC 2616: https://tools.ietf.org/html/rfc2616\n// RFC 7230: https://tools.ietf.org/html/rfc7230\n// \"reason-phrase = *( HTAB / SP / VCHAR / obs-text )\"\n// https://github.com/chromium/chromium/blob/94.0.4604.1/third_party/blink/renderer/core/fetch/response.cc#L116\nfunction isValidReasonPhrase (statusText) {\n for (let i = 0; i < statusText.length; ++i) {\n const c = statusText.charCodeAt(i)\n if (\n !(\n (\n c === 0x09 || // HTAB\n (c >= 0x20 && c <= 0x7e) || // SP / VCHAR\n (c >= 0x80 && c <= 0xff)\n ) // obs-text\n )\n ) {\n return false\n }\n }\n return true\n}\n\n/**\n * @see https://tools.ietf.org/html/rfc7230#section-3.2.6\n * @param {number} c\n */\nfunction isTokenCharCode (c) {\n switch (c) {\n case 0x22:\n case 0x28:\n case 0x29:\n case 0x2c:\n case 0x2f:\n case 0x3a:\n case 0x3b:\n case 0x3c:\n case 0x3d:\n case 0x3e:\n case 0x3f:\n case 0x40:\n case 0x5b:\n case 0x5c:\n case 0x5d:\n case 0x7b:\n case 0x7d:\n // DQUOTE and \"(),/:;<=>?@[\\]{}\"\n return false\n default:\n // VCHAR %x21-7E\n return c >= 0x21 && c <= 0x7e\n }\n}\n\n/**\n * @param {string} characters\n */\nfunction isValidHTTPToken (characters) {\n if (characters.length === 0) {\n return false\n }\n for (let i = 0; i < characters.length; ++i) {\n if (!isTokenCharCode(characters.charCodeAt(i))) {\n return false\n }\n }\n return true\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#header-name\n * @param {string} potentialValue\n */\nfunction isValidHeaderName (potentialValue) {\n return isValidHTTPToken(potentialValue)\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#header-value\n * @param {string} potentialValue\n */\nfunction isValidHeaderValue (potentialValue) {\n // - Has no leading or trailing HTTP tab or space bytes.\n // - Contains no 0x00 (NUL) or HTTP newline bytes.\n if (\n potentialValue.startsWith('\\t') ||\n potentialValue.startsWith(' ') ||\n potentialValue.endsWith('\\t') ||\n potentialValue.endsWith(' ')\n ) {\n return false\n }\n\n if (\n potentialValue.includes('\\0') ||\n potentialValue.includes('\\r') ||\n potentialValue.includes('\\n')\n ) {\n return false\n }\n\n return true\n}\n\n// https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect\nfunction setRequestReferrerPolicyOnRedirect (request, actualResponse) {\n // Given a request request and a response actualResponse, this algorithm\n // updates request’s referrer policy according to the Referrer-Policy\n // header (if any) in actualResponse.\n\n // 1. Let policy be the result of executing § 8.1 Parse a referrer policy\n // from a Referrer-Policy header on actualResponse.\n\n // 8.1 Parse a referrer policy from a Referrer-Policy header\n // 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy` and response’s header list.\n const { headersList } = actualResponse\n // 2. Let policy be the empty string.\n // 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty string, then set policy to token.\n // 4. Return policy.\n const policyHeader = (headersList.get('referrer-policy') ?? '').split(',')\n\n // Note: As the referrer-policy can contain multiple policies\n // separated by comma, we need to loop through all of them\n // and pick the first valid one.\n // Ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#specify_a_fallback_policy\n let policy = ''\n if (policyHeader.length > 0) {\n // The right-most policy takes precedence.\n // The left-most policy is the fallback.\n for (let i = policyHeader.length; i !== 0; i--) {\n const token = policyHeader[i - 1].trim()\n if (referrerPolicyTokens.has(token)) {\n policy = token\n break\n }\n }\n }\n\n // 2. If policy is not the empty string, then set request’s referrer policy to policy.\n if (policy !== '') {\n request.referrerPolicy = policy\n }\n}\n\n// https://fetch.spec.whatwg.org/#cross-origin-resource-policy-check\nfunction crossOriginResourcePolicyCheck () {\n // TODO\n return 'allowed'\n}\n\n// https://fetch.spec.whatwg.org/#concept-cors-check\nfunction corsCheck () {\n // TODO\n return 'success'\n}\n\n// https://fetch.spec.whatwg.org/#concept-tao-check\nfunction TAOCheck () {\n // TODO\n return 'success'\n}\n\nfunction appendFetchMetadata (httpRequest) {\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-dest-header\n // TODO\n\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-mode-header\n\n // 1. Assert: r’s url is a potentially trustworthy URL.\n // TODO\n\n // 2. Let header be a Structured Header whose value is a token.\n let header = null\n\n // 3. Set header’s value to r’s mode.\n header = httpRequest.mode\n\n // 4. Set a structured field value `Sec-Fetch-Mode`/header in r’s header list.\n httpRequest.headersList.set('sec-fetch-mode', header)\n\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-site-header\n // TODO\n\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-user-header\n // TODO\n}\n\n// https://fetch.spec.whatwg.org/#append-a-request-origin-header\nfunction appendRequestOriginHeader (request) {\n // 1. Let serializedOrigin be the result of byte-serializing a request origin with request.\n let serializedOrigin = request.origin\n\n // 2. If request’s response tainting is \"cors\" or request’s mode is \"websocket\", then append (`Origin`, serializedOrigin) to request’s header list.\n if (request.responseTainting === 'cors' || request.mode === 'websocket') {\n if (serializedOrigin) {\n request.headersList.append('origin', serializedOrigin)\n }\n\n // 3. Otherwise, if request’s method is neither `GET` nor `HEAD`, then:\n } else if (request.method !== 'GET' && request.method !== 'HEAD') {\n // 1. Switch on request’s referrer policy:\n switch (request.referrerPolicy) {\n case 'no-referrer':\n // Set serializedOrigin to `null`.\n serializedOrigin = null\n break\n case 'no-referrer-when-downgrade':\n case 'strict-origin':\n case 'strict-origin-when-cross-origin':\n // If request’s origin is a tuple origin, its scheme is \"https\", and request’s current URL’s scheme is not \"https\", then set serializedOrigin to `null`.\n if (request.origin && urlHasHttpsScheme(request.origin) && !urlHasHttpsScheme(requestCurrentURL(request))) {\n serializedOrigin = null\n }\n break\n case 'same-origin':\n // If request’s origin is not same origin with request’s current URL’s origin, then set serializedOrigin to `null`.\n if (!sameOrigin(request, requestCurrentURL(request))) {\n serializedOrigin = null\n }\n break\n default:\n // Do nothing.\n }\n\n if (serializedOrigin) {\n // 2. Append (`Origin`, serializedOrigin) to request’s header list.\n request.headersList.append('origin', serializedOrigin)\n }\n }\n}\n\nfunction coarsenedSharedCurrentTime (crossOriginIsolatedCapability) {\n // TODO\n return performance.now()\n}\n\n// https://fetch.spec.whatwg.org/#create-an-opaque-timing-info\nfunction createOpaqueTimingInfo (timingInfo) {\n return {\n startTime: timingInfo.startTime ?? 0,\n redirectStartTime: 0,\n redirectEndTime: 0,\n postRedirectStartTime: timingInfo.startTime ?? 0,\n finalServiceWorkerStartTime: 0,\n finalNetworkResponseStartTime: 0,\n finalNetworkRequestStartTime: 0,\n endTime: 0,\n encodedBodySize: 0,\n decodedBodySize: 0,\n finalConnectionTimingInfo: null\n }\n}\n\n// https://html.spec.whatwg.org/multipage/origin.html#policy-container\nfunction makePolicyContainer () {\n // Note: the fetch spec doesn't make use of embedder policy or CSP list\n return {\n referrerPolicy: 'strict-origin-when-cross-origin'\n }\n}\n\n// https://html.spec.whatwg.org/multipage/origin.html#clone-a-policy-container\nfunction clonePolicyContainer (policyContainer) {\n return {\n referrerPolicy: policyContainer.referrerPolicy\n }\n}\n\n// https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer\nfunction determineRequestsReferrer (request) {\n // 1. Let policy be request's referrer policy.\n const policy = request.referrerPolicy\n\n // Note: policy cannot (shouldn't) be null or an empty string.\n assert(policy)\n\n // 2. Let environment be request’s client.\n\n let referrerSource = null\n\n // 3. Switch on request’s referrer:\n if (request.referrer === 'client') {\n // Note: node isn't a browser and doesn't implement document/iframes,\n // so we bypass this step and replace it with our own.\n\n const globalOrigin = getGlobalOrigin()\n\n if (!globalOrigin || globalOrigin.origin === 'null') {\n return 'no-referrer'\n }\n\n // note: we need to clone it as it's mutated\n referrerSource = new URL(globalOrigin)\n } else if (request.referrer instanceof URL) {\n // Let referrerSource be request’s referrer.\n referrerSource = request.referrer\n }\n\n // 4. Let request’s referrerURL be the result of stripping referrerSource for\n // use as a referrer.\n let referrerURL = stripURLForReferrer(referrerSource)\n\n // 5. Let referrerOrigin be the result of stripping referrerSource for use as\n // a referrer, with the origin-only flag set to true.\n const referrerOrigin = stripURLForReferrer(referrerSource, true)\n\n // 6. If the result of serializing referrerURL is a string whose length is\n // greater than 4096, set referrerURL to referrerOrigin.\n if (referrerURL.toString().length > 4096) {\n referrerURL = referrerOrigin\n }\n\n const areSameOrigin = sameOrigin(request, referrerURL)\n const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) &&\n !isURLPotentiallyTrustworthy(request.url)\n\n // 8. Execute the switch statements corresponding to the value of policy:\n switch (policy) {\n case 'origin': return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true)\n case 'unsafe-url': return referrerURL\n case 'same-origin':\n return areSameOrigin ? referrerOrigin : 'no-referrer'\n case 'origin-when-cross-origin':\n return areSameOrigin ? referrerURL : referrerOrigin\n case 'strict-origin-when-cross-origin': {\n const currentURL = requestCurrentURL(request)\n\n // 1. If the origin of referrerURL and the origin of request’s current\n // URL are the same, then return referrerURL.\n if (sameOrigin(referrerURL, currentURL)) {\n return referrerURL\n }\n\n // 2. If referrerURL is a potentially trustworthy URL and request’s\n // current URL is not a potentially trustworthy URL, then return no\n // referrer.\n if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {\n return 'no-referrer'\n }\n\n // 3. Return referrerOrigin.\n return referrerOrigin\n }\n case 'strict-origin': // eslint-disable-line\n /**\n * 1. If referrerURL is a potentially trustworthy URL and\n * request’s current URL is not a potentially trustworthy URL,\n * then return no referrer.\n * 2. Return referrerOrigin\n */\n case 'no-referrer-when-downgrade': // eslint-disable-line\n /**\n * 1. If referrerURL is a potentially trustworthy URL and\n * request’s current URL is not a potentially trustworthy URL,\n * then return no referrer.\n * 2. Return referrerOrigin\n */\n\n default: // eslint-disable-line\n return isNonPotentiallyTrustWorthy ? 'no-referrer' : referrerOrigin\n }\n}\n\n/**\n * @see https://w3c.github.io/webappsec-referrer-policy/#strip-url\n * @param {URL} url\n * @param {boolean|undefined} originOnly\n */\nfunction stripURLForReferrer (url, originOnly) {\n // 1. Assert: url is a URL.\n assert(url instanceof URL)\n\n // 2. If url’s scheme is a local scheme, then return no referrer.\n if (url.protocol === 'file:' || url.protocol === 'about:' || url.protocol === 'blank:') {\n return 'no-referrer'\n }\n\n // 3. Set url’s username to the empty string.\n url.username = ''\n\n // 4. Set url’s password to the empty string.\n url.password = ''\n\n // 5. Set url’s fragment to null.\n url.hash = ''\n\n // 6. If the origin-only flag is true, then:\n if (originOnly) {\n // 1. Set url’s path to « the empty string ».\n url.pathname = ''\n\n // 2. Set url’s query to null.\n url.search = ''\n }\n\n // 7. Return url.\n return url\n}\n\nfunction isURLPotentiallyTrustworthy (url) {\n if (!(url instanceof URL)) {\n return false\n }\n\n // If child of about, return true\n if (url.href === 'about:blank' || url.href === 'about:srcdoc') {\n return true\n }\n\n // If scheme is data, return true\n if (url.protocol === 'data:') return true\n\n // If file, return true\n if (url.protocol === 'file:') return true\n\n return isOriginPotentiallyTrustworthy(url.origin)\n\n function isOriginPotentiallyTrustworthy (origin) {\n // If origin is explicitly null, return false\n if (origin == null || origin === 'null') return false\n\n const originAsURL = new URL(origin)\n\n // If secure, return true\n if (originAsURL.protocol === 'https:' || originAsURL.protocol === 'wss:') {\n return true\n }\n\n // If localhost or variants, return true\n if (/^127(?:\\.[0-9]+){0,2}\\.[0-9]+$|^\\[(?:0*:)*?:?0*1\\]$/.test(originAsURL.hostname) ||\n (originAsURL.hostname === 'localhost' || originAsURL.hostname.includes('localhost.')) ||\n (originAsURL.hostname.endsWith('.localhost'))) {\n return true\n }\n\n // If any other, return false\n return false\n }\n}\n\n/**\n * @see https://w3c.github.io/webappsec-subresource-integrity/#does-response-match-metadatalist\n * @param {Uint8Array} bytes\n * @param {string} metadataList\n */\nfunction bytesMatch (bytes, metadataList) {\n // If node is not built with OpenSSL support, we cannot check\n // a request's integrity, so allow it by default (the spec will\n // allow requests if an invalid hash is given, as precedence).\n /* istanbul ignore if: only if node is built with --without-ssl */\n if (crypto === undefined) {\n return true\n }\n\n // 1. Let parsedMetadata be the result of parsing metadataList.\n const parsedMetadata = parseMetadata(metadataList)\n\n // 2. If parsedMetadata is no metadata, return true.\n if (parsedMetadata === 'no metadata') {\n return true\n }\n\n // 3. If response is not eligible for integrity validation, return false.\n // TODO\n\n // 4. If parsedMetadata is the empty set, return true.\n if (parsedMetadata.length === 0) {\n return true\n }\n\n // 5. Let metadata be the result of getting the strongest\n // metadata from parsedMetadata.\n const strongest = getStrongestMetadata(parsedMetadata)\n const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest)\n\n // 6. For each item in metadata:\n for (const item of metadata) {\n // 1. Let algorithm be the alg component of item.\n const algorithm = item.algo\n\n // 2. Let expectedValue be the val component of item.\n const expectedValue = item.hash\n\n // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e\n // \"be liberal with padding\". This is annoying, and it's not even in the spec.\n\n // 3. Let actualValue be the result of applying algorithm to bytes.\n let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64')\n\n if (actualValue[actualValue.length - 1] === '=') {\n if (actualValue[actualValue.length - 2] === '=') {\n actualValue = actualValue.slice(0, -2)\n } else {\n actualValue = actualValue.slice(0, -1)\n }\n }\n\n // 4. If actualValue is a case-sensitive match for expectedValue,\n // return true.\n if (compareBase64Mixed(actualValue, expectedValue)) {\n return true\n }\n }\n\n // 7. Return false.\n return false\n}\n\n// https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options\n// https://www.w3.org/TR/CSP2/#source-list-syntax\n// https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1\nconst parseHashWithOptions = /(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\\s|$)( +[!-~]*)?)?/i\n\n/**\n * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata\n * @param {string} metadata\n */\nfunction parseMetadata (metadata) {\n // 1. Let result be the empty set.\n /** @type {{ algo: string, hash: string }[]} */\n const result = []\n\n // 2. Let empty be equal to true.\n let empty = true\n\n // 3. For each token returned by splitting metadata on spaces:\n for (const token of metadata.split(' ')) {\n // 1. Set empty to false.\n empty = false\n\n // 2. Parse token as a hash-with-options.\n const parsedToken = parseHashWithOptions.exec(token)\n\n // 3. If token does not parse, continue to the next token.\n if (\n parsedToken === null ||\n parsedToken.groups === undefined ||\n parsedToken.groups.algo === undefined\n ) {\n // Note: Chromium blocks the request at this point, but Firefox\n // gives a warning that an invalid integrity was given. The\n // correct behavior is to ignore these, and subsequently not\n // check the integrity of the resource.\n continue\n }\n\n // 4. Let algorithm be the hash-algo component of token.\n const algorithm = parsedToken.groups.algo.toLowerCase()\n\n // 5. If algorithm is a hash function recognized by the user\n // agent, add the parsed token to result.\n if (supportedHashes.includes(algorithm)) {\n result.push(parsedToken.groups)\n }\n }\n\n // 4. Return no metadata if empty is true, otherwise return result.\n if (empty === true) {\n return 'no metadata'\n }\n\n return result\n}\n\n/**\n * @param {{ algo: 'sha256' | 'sha384' | 'sha512' }[]} metadataList\n */\nfunction getStrongestMetadata (metadataList) {\n // Let algorithm be the algo component of the first item in metadataList.\n // Can be sha256\n let algorithm = metadataList[0].algo\n // If the algorithm is sha512, then it is the strongest\n // and we can return immediately\n if (algorithm[3] === '5') {\n return algorithm\n }\n\n for (let i = 1; i < metadataList.length; ++i) {\n const metadata = metadataList[i]\n // If the algorithm is sha512, then it is the strongest\n // and we can break the loop immediately\n if (metadata.algo[3] === '5') {\n algorithm = 'sha512'\n break\n // If the algorithm is sha384, then a potential sha256 or sha384 is ignored\n } else if (algorithm[3] === '3') {\n continue\n // algorithm is sha256, check if algorithm is sha384 and if so, set it as\n // the strongest\n } else if (metadata.algo[3] === '3') {\n algorithm = 'sha384'\n }\n }\n return algorithm\n}\n\nfunction filterMetadataListByAlgorithm (metadataList, algorithm) {\n if (metadataList.length === 1) {\n return metadataList\n }\n\n let pos = 0\n for (let i = 0; i < metadataList.length; ++i) {\n if (metadataList[i].algo === algorithm) {\n metadataList[pos++] = metadataList[i]\n }\n }\n\n metadataList.length = pos\n\n return metadataList\n}\n\n/**\n * Compares two base64 strings, allowing for base64url\n * in the second string.\n *\n* @param {string} actualValue always base64\n * @param {string} expectedValue base64 or base64url\n * @returns {boolean}\n */\nfunction compareBase64Mixed (actualValue, expectedValue) {\n if (actualValue.length !== expectedValue.length) {\n return false\n }\n for (let i = 0; i < actualValue.length; ++i) {\n if (actualValue[i] !== expectedValue[i]) {\n if (\n (actualValue[i] === '+' && expectedValue[i] === '-') ||\n (actualValue[i] === '/' && expectedValue[i] === '_')\n ) {\n continue\n }\n return false\n }\n }\n\n return true\n}\n\n// https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request\nfunction tryUpgradeRequestToAPotentiallyTrustworthyURL (request) {\n // TODO\n}\n\n/**\n * @link {https://html.spec.whatwg.org/multipage/origin.html#same-origin}\n * @param {URL} A\n * @param {URL} B\n */\nfunction sameOrigin (A, B) {\n // 1. If A and B are the same opaque origin, then return true.\n if (A.origin === B.origin && A.origin === 'null') {\n return true\n }\n\n // 2. If A and B are both tuple origins and their schemes,\n // hosts, and port are identical, then return true.\n if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) {\n return true\n }\n\n // 3. Return false.\n return false\n}\n\nfunction createDeferredPromise () {\n let res\n let rej\n const promise = new Promise((resolve, reject) => {\n res = resolve\n rej = reject\n })\n\n return { promise, resolve: res, reject: rej }\n}\n\nfunction isAborted (fetchParams) {\n return fetchParams.controller.state === 'aborted'\n}\n\nfunction isCancelled (fetchParams) {\n return fetchParams.controller.state === 'aborted' ||\n fetchParams.controller.state === 'terminated'\n}\n\nconst normalizeMethodRecord = {\n delete: 'DELETE',\n DELETE: 'DELETE',\n get: 'GET',\n GET: 'GET',\n head: 'HEAD',\n HEAD: 'HEAD',\n options: 'OPTIONS',\n OPTIONS: 'OPTIONS',\n post: 'POST',\n POST: 'POST',\n put: 'PUT',\n PUT: 'PUT'\n}\n\n// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.\nObject.setPrototypeOf(normalizeMethodRecord, null)\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-method-normalize\n * @param {string} method\n */\nfunction normalizeMethod (method) {\n return normalizeMethodRecord[method.toLowerCase()] ?? method\n}\n\n// https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string\nfunction serializeJavascriptValueToJSONString (value) {\n // 1. Let result be ? Call(%JSON.stringify%, undefined, « value »).\n const result = JSON.stringify(value)\n\n // 2. If result is undefined, then throw a TypeError.\n if (result === undefined) {\n throw new TypeError('Value is not JSON serializable')\n }\n\n // 3. Assert: result is a string.\n assert(typeof result === 'string')\n\n // 4. Return result.\n return result\n}\n\n// https://tc39.es/ecma262/#sec-%25iteratorprototype%25-object\nconst esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))\n\n/**\n * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object\n * @param {() => unknown[]} iterator\n * @param {string} name name of the instance\n * @param {'key'|'value'|'key+value'} kind\n */\nfunction makeIterator (iterator, name, kind) {\n const object = {\n index: 0,\n kind,\n target: iterator\n }\n\n const i = {\n next () {\n // 1. Let interface be the interface for which the iterator prototype object exists.\n\n // 2. Let thisValue be the this value.\n\n // 3. Let object be ? ToObject(thisValue).\n\n // 4. If object is a platform object, then perform a security\n // check, passing:\n\n // 5. If object is not a default iterator object for interface,\n // then throw a TypeError.\n if (Object.getPrototypeOf(this) !== i) {\n throw new TypeError(\n `'next' called on an object that does not implement interface ${name} Iterator.`\n )\n }\n\n // 6. Let index be object’s index.\n // 7. Let kind be object’s kind.\n // 8. Let values be object’s target's value pairs to iterate over.\n const { index, kind, target } = object\n const values = target()\n\n // 9. Let len be the length of values.\n const len = values.length\n\n // 10. If index is greater than or equal to len, then return\n // CreateIterResultObject(undefined, true).\n if (index >= len) {\n return { value: undefined, done: true }\n }\n\n // 11. Let pair be the entry in values at index index.\n const pair = values[index]\n\n // 12. Set object’s index to index + 1.\n object.index = index + 1\n\n // 13. Return the iterator result for pair and kind.\n return iteratorResult(pair, kind)\n },\n // The class string of an iterator prototype object for a given interface is the\n // result of concatenating the identifier of the interface and the string \" Iterator\".\n [Symbol.toStringTag]: `${name} Iterator`\n }\n\n // The [[Prototype]] internal slot of an iterator prototype object must be %IteratorPrototype%.\n Object.setPrototypeOf(i, esIteratorPrototype)\n // esIteratorPrototype needs to be the prototype of i\n // which is the prototype of an empty object. Yes, it's confusing.\n return Object.setPrototypeOf({}, i)\n}\n\n// https://webidl.spec.whatwg.org/#iterator-result\nfunction iteratorResult (pair, kind) {\n let result\n\n // 1. Let result be a value determined by the value of kind:\n switch (kind) {\n case 'key': {\n // 1. Let idlKey be pair’s key.\n // 2. Let key be the result of converting idlKey to an\n // ECMAScript value.\n // 3. result is key.\n result = pair[0]\n break\n }\n case 'value': {\n // 1. Let idlValue be pair’s value.\n // 2. Let value be the result of converting idlValue to\n // an ECMAScript value.\n // 3. result is value.\n result = pair[1]\n break\n }\n case 'key+value': {\n // 1. Let idlKey be pair’s key.\n // 2. Let idlValue be pair’s value.\n // 3. Let key be the result of converting idlKey to an\n // ECMAScript value.\n // 4. Let value be the result of converting idlValue to\n // an ECMAScript value.\n // 5. Let array be ! ArrayCreate(2).\n // 6. Call ! CreateDataProperty(array, \"0\", key).\n // 7. Call ! CreateDataProperty(array, \"1\", value).\n // 8. result is array.\n result = pair\n break\n }\n }\n\n // 2. Return CreateIterResultObject(result, false).\n return { value: result, done: false }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#body-fully-read\n */\nasync function fullyReadBody (body, processBody, processBodyError) {\n // 1. If taskDestination is null, then set taskDestination to\n // the result of starting a new parallel queue.\n\n // 2. Let successSteps given a byte sequence bytes be to queue a\n // fetch task to run processBody given bytes, with taskDestination.\n const successSteps = processBody\n\n // 3. Let errorSteps be to queue a fetch task to run processBodyError,\n // with taskDestination.\n const errorSteps = processBodyError\n\n // 4. Let reader be the result of getting a reader for body’s stream.\n // If that threw an exception, then run errorSteps with that\n // exception and return.\n let reader\n\n try {\n reader = body.stream.getReader()\n } catch (e) {\n errorSteps(e)\n return\n }\n\n // 5. Read all bytes from reader, given successSteps and errorSteps.\n try {\n const result = await readAllBytes(reader)\n successSteps(result)\n } catch (e) {\n errorSteps(e)\n }\n}\n\n/** @type {ReadableStream} */\nlet ReadableStream = globalThis.ReadableStream\n\nfunction isReadableStreamLike (stream) {\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n return stream instanceof ReadableStream || (\n stream[Symbol.toStringTag] === 'ReadableStream' &&\n typeof stream.tee === 'function'\n )\n}\n\nconst MAXIMUM_ARGUMENT_LENGTH = 65535\n\n/**\n * @see https://infra.spec.whatwg.org/#isomorphic-decode\n * @param {number[]|Uint8Array} input\n */\nfunction isomorphicDecode (input) {\n // 1. To isomorphic decode a byte sequence input, return a string whose code point\n // length is equal to input’s length and whose code points have the same values\n // as the values of input’s bytes, in the same order.\n\n if (input.length < MAXIMUM_ARGUMENT_LENGTH) {\n return String.fromCharCode(...input)\n }\n\n return input.reduce((previous, current) => previous + String.fromCharCode(current), '')\n}\n\n/**\n * @param {ReadableStreamController} controller\n */\nfunction readableStreamClose (controller) {\n try {\n controller.close()\n } catch (err) {\n // TODO: add comment explaining why this error occurs.\n if (!err.message.includes('Controller is already closed')) {\n throw err\n }\n }\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#isomorphic-encode\n * @param {string} input\n */\nfunction isomorphicEncode (input) {\n // 1. Assert: input contains no code points greater than U+00FF.\n for (let i = 0; i < input.length; i++) {\n assert(input.charCodeAt(i) <= 0xFF)\n }\n\n // 2. Return a byte sequence whose length is equal to input’s code\n // point length and whose bytes have the same values as the\n // values of input’s code points, in the same order\n return input\n}\n\n/**\n * @see https://streams.spec.whatwg.org/#readablestreamdefaultreader-read-all-bytes\n * @see https://streams.spec.whatwg.org/#read-loop\n * @param {ReadableStreamDefaultReader} reader\n */\nasync function readAllBytes (reader) {\n const bytes = []\n let byteLength = 0\n\n while (true) {\n const { done, value: chunk } = await reader.read()\n\n if (done) {\n // 1. Call successSteps with bytes.\n return Buffer.concat(bytes, byteLength)\n }\n\n // 1. If chunk is not a Uint8Array object, call failureSteps\n // with a TypeError and abort these steps.\n if (!isUint8Array(chunk)) {\n throw new TypeError('Received non-Uint8Array chunk')\n }\n\n // 2. Append the bytes represented by chunk to bytes.\n bytes.push(chunk)\n byteLength += chunk.length\n\n // 3. Read-loop given reader, bytes, successSteps, and failureSteps.\n }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#is-local\n * @param {URL} url\n */\nfunction urlIsLocal (url) {\n assert('protocol' in url) // ensure it's a url object\n\n const protocol = url.protocol\n\n return protocol === 'about:' || protocol === 'blob:' || protocol === 'data:'\n}\n\n/**\n * @param {string|URL} url\n */\nfunction urlHasHttpsScheme (url) {\n if (typeof url === 'string') {\n return url.startsWith('https:')\n }\n\n return url.protocol === 'https:'\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-scheme\n * @param {URL} url\n */\nfunction urlIsHttpHttpsScheme (url) {\n assert('protocol' in url) // ensure it's a url object\n\n const protocol = url.protocol\n\n return protocol === 'http:' || protocol === 'https:'\n}\n\n/**\n * Fetch supports node >= 16.8.0, but Object.hasOwn was added in v16.9.0.\n */\nconst hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key))\n\nmodule.exports = {\n isAborted,\n isCancelled,\n createDeferredPromise,\n ReadableStreamFrom,\n toUSVString,\n tryUpgradeRequestToAPotentiallyTrustworthyURL,\n coarsenedSharedCurrentTime,\n determineRequestsReferrer,\n makePolicyContainer,\n clonePolicyContainer,\n appendFetchMetadata,\n appendRequestOriginHeader,\n TAOCheck,\n corsCheck,\n crossOriginResourcePolicyCheck,\n createOpaqueTimingInfo,\n setRequestReferrerPolicyOnRedirect,\n isValidHTTPToken,\n requestBadPort,\n requestCurrentURL,\n responseURL,\n responseLocationURL,\n isBlobLike,\n isURLPotentiallyTrustworthy,\n isValidReasonPhrase,\n sameOrigin,\n normalizeMethod,\n serializeJavascriptValueToJSONString,\n makeIterator,\n isValidHeaderName,\n isValidHeaderValue,\n hasOwn,\n isErrorLike,\n fullyReadBody,\n bytesMatch,\n isReadableStreamLike,\n readableStreamClose,\n isomorphicEncode,\n isomorphicDecode,\n urlIsLocal,\n urlHasHttpsScheme,\n urlIsHttpHttpsScheme,\n readAllBytes,\n normalizeMethodRecord,\n parseMetadata\n}\n","'use strict'\n\nconst { types } = require('util')\nconst { hasOwn, toUSVString } = require('./util')\n\n/** @type {import('../../types/webidl').Webidl} */\nconst webidl = {}\nwebidl.converters = {}\nwebidl.util = {}\nwebidl.errors = {}\n\nwebidl.errors.exception = function (message) {\n return new TypeError(`${message.header}: ${message.message}`)\n}\n\nwebidl.errors.conversionFailed = function (context) {\n const plural = context.types.length === 1 ? '' : ' one of'\n const message =\n `${context.argument} could not be converted to` +\n `${plural}: ${context.types.join(', ')}.`\n\n return webidl.errors.exception({\n header: context.prefix,\n message\n })\n}\n\nwebidl.errors.invalidArgument = function (context) {\n return webidl.errors.exception({\n header: context.prefix,\n message: `\"${context.value}\" is an invalid ${context.type}.`\n })\n}\n\n// https://webidl.spec.whatwg.org/#implements\nwebidl.brandCheck = function (V, I, opts = undefined) {\n if (opts?.strict !== false && !(V instanceof I)) {\n throw new TypeError('Illegal invocation')\n } else {\n return V?.[Symbol.toStringTag] === I.prototype[Symbol.toStringTag]\n }\n}\n\nwebidl.argumentLengthCheck = function ({ length }, min, ctx) {\n if (length < min) {\n throw webidl.errors.exception({\n message: `${min} argument${min !== 1 ? 's' : ''} required, ` +\n `but${length ? ' only' : ''} ${length} found.`,\n ...ctx\n })\n }\n}\n\nwebidl.illegalConstructor = function () {\n throw webidl.errors.exception({\n header: 'TypeError',\n message: 'Illegal constructor'\n })\n}\n\n// https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values\nwebidl.util.Type = function (V) {\n switch (typeof V) {\n case 'undefined': return 'Undefined'\n case 'boolean': return 'Boolean'\n case 'string': return 'String'\n case 'symbol': return 'Symbol'\n case 'number': return 'Number'\n case 'bigint': return 'BigInt'\n case 'function':\n case 'object': {\n if (V === null) {\n return 'Null'\n }\n\n return 'Object'\n }\n }\n}\n\n// https://webidl.spec.whatwg.org/#abstract-opdef-converttoint\nwebidl.util.ConvertToInt = function (V, bitLength, signedness, opts = {}) {\n let upperBound\n let lowerBound\n\n // 1. If bitLength is 64, then:\n if (bitLength === 64) {\n // 1. Let upperBound be 2^53 − 1.\n upperBound = Math.pow(2, 53) - 1\n\n // 2. If signedness is \"unsigned\", then let lowerBound be 0.\n if (signedness === 'unsigned') {\n lowerBound = 0\n } else {\n // 3. Otherwise let lowerBound be −2^53 + 1.\n lowerBound = Math.pow(-2, 53) + 1\n }\n } else if (signedness === 'unsigned') {\n // 2. Otherwise, if signedness is \"unsigned\", then:\n\n // 1. Let lowerBound be 0.\n lowerBound = 0\n\n // 2. Let upperBound be 2^bitLength − 1.\n upperBound = Math.pow(2, bitLength) - 1\n } else {\n // 3. Otherwise:\n\n // 1. Let lowerBound be -2^bitLength − 1.\n lowerBound = Math.pow(-2, bitLength) - 1\n\n // 2. Let upperBound be 2^bitLength − 1 − 1.\n upperBound = Math.pow(2, bitLength - 1) - 1\n }\n\n // 4. Let x be ? ToNumber(V).\n let x = Number(V)\n\n // 5. If x is −0, then set x to +0.\n if (x === 0) {\n x = 0\n }\n\n // 6. If the conversion is to an IDL type associated\n // with the [EnforceRange] extended attribute, then:\n if (opts.enforceRange === true) {\n // 1. If x is NaN, +∞, or −∞, then throw a TypeError.\n if (\n Number.isNaN(x) ||\n x === Number.POSITIVE_INFINITY ||\n x === Number.NEGATIVE_INFINITY\n ) {\n throw webidl.errors.exception({\n header: 'Integer conversion',\n message: `Could not convert ${V} to an integer.`\n })\n }\n\n // 2. Set x to IntegerPart(x).\n x = webidl.util.IntegerPart(x)\n\n // 3. If x < lowerBound or x > upperBound, then\n // throw a TypeError.\n if (x < lowerBound || x > upperBound) {\n throw webidl.errors.exception({\n header: 'Integer conversion',\n message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.`\n })\n }\n\n // 4. Return x.\n return x\n }\n\n // 7. If x is not NaN and the conversion is to an IDL\n // type associated with the [Clamp] extended\n // attribute, then:\n if (!Number.isNaN(x) && opts.clamp === true) {\n // 1. Set x to min(max(x, lowerBound), upperBound).\n x = Math.min(Math.max(x, lowerBound), upperBound)\n\n // 2. Round x to the nearest integer, choosing the\n // even integer if it lies halfway between two,\n // and choosing +0 rather than −0.\n if (Math.floor(x) % 2 === 0) {\n x = Math.floor(x)\n } else {\n x = Math.ceil(x)\n }\n\n // 3. Return x.\n return x\n }\n\n // 8. If x is NaN, +0, +∞, or −∞, then return +0.\n if (\n Number.isNaN(x) ||\n (x === 0 && Object.is(0, x)) ||\n x === Number.POSITIVE_INFINITY ||\n x === Number.NEGATIVE_INFINITY\n ) {\n return 0\n }\n\n // 9. Set x to IntegerPart(x).\n x = webidl.util.IntegerPart(x)\n\n // 10. Set x to x modulo 2^bitLength.\n x = x % Math.pow(2, bitLength)\n\n // 11. If signedness is \"signed\" and x ≥ 2^bitLength − 1,\n // then return x − 2^bitLength.\n if (signedness === 'signed' && x >= Math.pow(2, bitLength) - 1) {\n return x - Math.pow(2, bitLength)\n }\n\n // 12. Otherwise, return x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#abstract-opdef-integerpart\nwebidl.util.IntegerPart = function (n) {\n // 1. Let r be floor(abs(n)).\n const r = Math.floor(Math.abs(n))\n\n // 2. If n < 0, then return -1 × r.\n if (n < 0) {\n return -1 * r\n }\n\n // 3. Otherwise, return r.\n return r\n}\n\n// https://webidl.spec.whatwg.org/#es-sequence\nwebidl.sequenceConverter = function (converter) {\n return (V) => {\n // 1. If Type(V) is not Object, throw a TypeError.\n if (webidl.util.Type(V) !== 'Object') {\n throw webidl.errors.exception({\n header: 'Sequence',\n message: `Value of type ${webidl.util.Type(V)} is not an Object.`\n })\n }\n\n // 2. Let method be ? GetMethod(V, @@iterator).\n /** @type {Generator} */\n const method = V?.[Symbol.iterator]?.()\n const seq = []\n\n // 3. If method is undefined, throw a TypeError.\n if (\n method === undefined ||\n typeof method.next !== 'function'\n ) {\n throw webidl.errors.exception({\n header: 'Sequence',\n message: 'Object is not an iterator.'\n })\n }\n\n // https://webidl.spec.whatwg.org/#create-sequence-from-iterable\n while (true) {\n const { done, value } = method.next()\n\n if (done) {\n break\n }\n\n seq.push(converter(value))\n }\n\n return seq\n }\n}\n\n// https://webidl.spec.whatwg.org/#es-to-record\nwebidl.recordConverter = function (keyConverter, valueConverter) {\n return (O) => {\n // 1. If Type(O) is not Object, throw a TypeError.\n if (webidl.util.Type(O) !== 'Object') {\n throw webidl.errors.exception({\n header: 'Record',\n message: `Value of type ${webidl.util.Type(O)} is not an Object.`\n })\n }\n\n // 2. Let result be a new empty instance of record.\n const result = {}\n\n if (!types.isProxy(O)) {\n // Object.keys only returns enumerable properties\n const keys = Object.keys(O)\n\n for (const key of keys) {\n // 1. Let typedKey be key converted to an IDL value of type K.\n const typedKey = keyConverter(key)\n\n // 2. Let value be ? Get(O, key).\n // 3. Let typedValue be value converted to an IDL value of type V.\n const typedValue = valueConverter(O[key])\n\n // 4. Set result[typedKey] to typedValue.\n result[typedKey] = typedValue\n }\n\n // 5. Return result.\n return result\n }\n\n // 3. Let keys be ? O.[[OwnPropertyKeys]]().\n const keys = Reflect.ownKeys(O)\n\n // 4. For each key of keys.\n for (const key of keys) {\n // 1. Let desc be ? O.[[GetOwnProperty]](key).\n const desc = Reflect.getOwnPropertyDescriptor(O, key)\n\n // 2. If desc is not undefined and desc.[[Enumerable]] is true:\n if (desc?.enumerable) {\n // 1. Let typedKey be key converted to an IDL value of type K.\n const typedKey = keyConverter(key)\n\n // 2. Let value be ? Get(O, key).\n // 3. Let typedValue be value converted to an IDL value of type V.\n const typedValue = valueConverter(O[key])\n\n // 4. Set result[typedKey] to typedValue.\n result[typedKey] = typedValue\n }\n }\n\n // 5. Return result.\n return result\n }\n}\n\nwebidl.interfaceConverter = function (i) {\n return (V, opts = {}) => {\n if (opts.strict !== false && !(V instanceof i)) {\n throw webidl.errors.exception({\n header: i.name,\n message: `Expected ${V} to be an instance of ${i.name}.`\n })\n }\n\n return V\n }\n}\n\nwebidl.dictionaryConverter = function (converters) {\n return (dictionary) => {\n const type = webidl.util.Type(dictionary)\n const dict = {}\n\n if (type === 'Null' || type === 'Undefined') {\n return dict\n } else if (type !== 'Object') {\n throw webidl.errors.exception({\n header: 'Dictionary',\n message: `Expected ${dictionary} to be one of: Null, Undefined, Object.`\n })\n }\n\n for (const options of converters) {\n const { key, defaultValue, required, converter } = options\n\n if (required === true) {\n if (!hasOwn(dictionary, key)) {\n throw webidl.errors.exception({\n header: 'Dictionary',\n message: `Missing required key \"${key}\".`\n })\n }\n }\n\n let value = dictionary[key]\n const hasDefault = hasOwn(options, 'defaultValue')\n\n // Only use defaultValue if value is undefined and\n // a defaultValue options was provided.\n if (hasDefault && value !== null) {\n value = value ?? defaultValue\n }\n\n // A key can be optional and have no default value.\n // When this happens, do not perform a conversion,\n // and do not assign the key a value.\n if (required || hasDefault || value !== undefined) {\n value = converter(value)\n\n if (\n options.allowedValues &&\n !options.allowedValues.includes(value)\n ) {\n throw webidl.errors.exception({\n header: 'Dictionary',\n message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(', ')}.`\n })\n }\n\n dict[key] = value\n }\n }\n\n return dict\n }\n}\n\nwebidl.nullableConverter = function (converter) {\n return (V) => {\n if (V === null) {\n return V\n }\n\n return converter(V)\n }\n}\n\n// https://webidl.spec.whatwg.org/#es-DOMString\nwebidl.converters.DOMString = function (V, opts = {}) {\n // 1. If V is null and the conversion is to an IDL type\n // associated with the [LegacyNullToEmptyString]\n // extended attribute, then return the DOMString value\n // that represents the empty string.\n if (V === null && opts.legacyNullToEmptyString) {\n return ''\n }\n\n // 2. Let x be ? ToString(V).\n if (typeof V === 'symbol') {\n throw new TypeError('Could not convert argument of type symbol to string.')\n }\n\n // 3. Return the IDL DOMString value that represents the\n // same sequence of code units as the one the\n // ECMAScript String value x represents.\n return String(V)\n}\n\n// https://webidl.spec.whatwg.org/#es-ByteString\nwebidl.converters.ByteString = function (V) {\n // 1. Let x be ? ToString(V).\n // Note: DOMString converter perform ? ToString(V)\n const x = webidl.converters.DOMString(V)\n\n // 2. If the value of any element of x is greater than\n // 255, then throw a TypeError.\n for (let index = 0; index < x.length; index++) {\n if (x.charCodeAt(index) > 255) {\n throw new TypeError(\n 'Cannot convert argument to a ByteString because the character at ' +\n `index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.`\n )\n }\n }\n\n // 3. Return an IDL ByteString value whose length is the\n // length of x, and where the value of each element is\n // the value of the corresponding element of x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-USVString\nwebidl.converters.USVString = toUSVString\n\n// https://webidl.spec.whatwg.org/#es-boolean\nwebidl.converters.boolean = function (V) {\n // 1. Let x be the result of computing ToBoolean(V).\n const x = Boolean(V)\n\n // 2. Return the IDL boolean value that is the one that represents\n // the same truth value as the ECMAScript Boolean value x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-any\nwebidl.converters.any = function (V) {\n return V\n}\n\n// https://webidl.spec.whatwg.org/#es-long-long\nwebidl.converters['long long'] = function (V) {\n // 1. Let x be ? ConvertToInt(V, 64, \"signed\").\n const x = webidl.util.ConvertToInt(V, 64, 'signed')\n\n // 2. Return the IDL long long value that represents\n // the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-long-long\nwebidl.converters['unsigned long long'] = function (V) {\n // 1. Let x be ? ConvertToInt(V, 64, \"unsigned\").\n const x = webidl.util.ConvertToInt(V, 64, 'unsigned')\n\n // 2. Return the IDL unsigned long long value that\n // represents the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-long\nwebidl.converters['unsigned long'] = function (V) {\n // 1. Let x be ? ConvertToInt(V, 32, \"unsigned\").\n const x = webidl.util.ConvertToInt(V, 32, 'unsigned')\n\n // 2. Return the IDL unsigned long value that\n // represents the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-short\nwebidl.converters['unsigned short'] = function (V, opts) {\n // 1. Let x be ? ConvertToInt(V, 16, \"unsigned\").\n const x = webidl.util.ConvertToInt(V, 16, 'unsigned', opts)\n\n // 2. Return the IDL unsigned short value that represents\n // the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#idl-ArrayBuffer\nwebidl.converters.ArrayBuffer = function (V, opts = {}) {\n // 1. If Type(V) is not Object, or V does not have an\n // [[ArrayBufferData]] internal slot, then throw a\n // TypeError.\n // see: https://tc39.es/ecma262/#sec-properties-of-the-arraybuffer-instances\n // see: https://tc39.es/ecma262/#sec-properties-of-the-sharedarraybuffer-instances\n if (\n webidl.util.Type(V) !== 'Object' ||\n !types.isAnyArrayBuffer(V)\n ) {\n throw webidl.errors.conversionFailed({\n prefix: `${V}`,\n argument: `${V}`,\n types: ['ArrayBuffer']\n })\n }\n\n // 2. If the conversion is not to an IDL type associated\n // with the [AllowShared] extended attribute, and\n // IsSharedArrayBuffer(V) is true, then throw a\n // TypeError.\n if (opts.allowShared === false && types.isSharedArrayBuffer(V)) {\n throw webidl.errors.exception({\n header: 'ArrayBuffer',\n message: 'SharedArrayBuffer is not allowed.'\n })\n }\n\n // 3. If the conversion is not to an IDL type associated\n // with the [AllowResizable] extended attribute, and\n // IsResizableArrayBuffer(V) is true, then throw a\n // TypeError.\n // Note: resizable ArrayBuffers are currently a proposal.\n\n // 4. Return the IDL ArrayBuffer value that is a\n // reference to the same object as V.\n return V\n}\n\nwebidl.converters.TypedArray = function (V, T, opts = {}) {\n // 1. Let T be the IDL type V is being converted to.\n\n // 2. If Type(V) is not Object, or V does not have a\n // [[TypedArrayName]] internal slot with a value\n // equal to T’s name, then throw a TypeError.\n if (\n webidl.util.Type(V) !== 'Object' ||\n !types.isTypedArray(V) ||\n V.constructor.name !== T.name\n ) {\n throw webidl.errors.conversionFailed({\n prefix: `${T.name}`,\n argument: `${V}`,\n types: [T.name]\n })\n }\n\n // 3. If the conversion is not to an IDL type associated\n // with the [AllowShared] extended attribute, and\n // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is\n // true, then throw a TypeError.\n if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {\n throw webidl.errors.exception({\n header: 'ArrayBuffer',\n message: 'SharedArrayBuffer is not allowed.'\n })\n }\n\n // 4. If the conversion is not to an IDL type associated\n // with the [AllowResizable] extended attribute, and\n // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is\n // true, then throw a TypeError.\n // Note: resizable array buffers are currently a proposal\n\n // 5. Return the IDL value of type T that is a reference\n // to the same object as V.\n return V\n}\n\nwebidl.converters.DataView = function (V, opts = {}) {\n // 1. If Type(V) is not Object, or V does not have a\n // [[DataView]] internal slot, then throw a TypeError.\n if (webidl.util.Type(V) !== 'Object' || !types.isDataView(V)) {\n throw webidl.errors.exception({\n header: 'DataView',\n message: 'Object is not a DataView.'\n })\n }\n\n // 2. If the conversion is not to an IDL type associated\n // with the [AllowShared] extended attribute, and\n // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is true,\n // then throw a TypeError.\n if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {\n throw webidl.errors.exception({\n header: 'ArrayBuffer',\n message: 'SharedArrayBuffer is not allowed.'\n })\n }\n\n // 3. If the conversion is not to an IDL type associated\n // with the [AllowResizable] extended attribute, and\n // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is\n // true, then throw a TypeError.\n // Note: resizable ArrayBuffers are currently a proposal\n\n // 4. Return the IDL DataView value that is a reference\n // to the same object as V.\n return V\n}\n\n// https://webidl.spec.whatwg.org/#BufferSource\nwebidl.converters.BufferSource = function (V, opts = {}) {\n if (types.isAnyArrayBuffer(V)) {\n return webidl.converters.ArrayBuffer(V, opts)\n }\n\n if (types.isTypedArray(V)) {\n return webidl.converters.TypedArray(V, V.constructor)\n }\n\n if (types.isDataView(V)) {\n return webidl.converters.DataView(V, opts)\n }\n\n throw new TypeError(`Could not convert ${V} to a BufferSource.`)\n}\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.ByteString\n)\n\nwebidl.converters['sequence>'] = webidl.sequenceConverter(\n webidl.converters['sequence']\n)\n\nwebidl.converters['record'] = webidl.recordConverter(\n webidl.converters.ByteString,\n webidl.converters.ByteString\n)\n\nmodule.exports = {\n webidl\n}\n","'use strict'\n\n/**\n * @see https://encoding.spec.whatwg.org/#concept-encoding-get\n * @param {string|undefined} label\n */\nfunction getEncoding (label) {\n if (!label) {\n return 'failure'\n }\n\n // 1. Remove any leading and trailing ASCII whitespace from label.\n // 2. If label is an ASCII case-insensitive match for any of the\n // labels listed in the table below, then return the\n // corresponding encoding; otherwise return failure.\n switch (label.trim().toLowerCase()) {\n case 'unicode-1-1-utf-8':\n case 'unicode11utf8':\n case 'unicode20utf8':\n case 'utf-8':\n case 'utf8':\n case 'x-unicode20utf8':\n return 'UTF-8'\n case '866':\n case 'cp866':\n case 'csibm866':\n case 'ibm866':\n return 'IBM866'\n case 'csisolatin2':\n case 'iso-8859-2':\n case 'iso-ir-101':\n case 'iso8859-2':\n case 'iso88592':\n case 'iso_8859-2':\n case 'iso_8859-2:1987':\n case 'l2':\n case 'latin2':\n return 'ISO-8859-2'\n case 'csisolatin3':\n case 'iso-8859-3':\n case 'iso-ir-109':\n case 'iso8859-3':\n case 'iso88593':\n case 'iso_8859-3':\n case 'iso_8859-3:1988':\n case 'l3':\n case 'latin3':\n return 'ISO-8859-3'\n case 'csisolatin4':\n case 'iso-8859-4':\n case 'iso-ir-110':\n case 'iso8859-4':\n case 'iso88594':\n case 'iso_8859-4':\n case 'iso_8859-4:1988':\n case 'l4':\n case 'latin4':\n return 'ISO-8859-4'\n case 'csisolatincyrillic':\n case 'cyrillic':\n case 'iso-8859-5':\n case 'iso-ir-144':\n case 'iso8859-5':\n case 'iso88595':\n case 'iso_8859-5':\n case 'iso_8859-5:1988':\n return 'ISO-8859-5'\n case 'arabic':\n case 'asmo-708':\n case 'csiso88596e':\n case 'csiso88596i':\n case 'csisolatinarabic':\n case 'ecma-114':\n case 'iso-8859-6':\n case 'iso-8859-6-e':\n case 'iso-8859-6-i':\n case 'iso-ir-127':\n case 'iso8859-6':\n case 'iso88596':\n case 'iso_8859-6':\n case 'iso_8859-6:1987':\n return 'ISO-8859-6'\n case 'csisolatingreek':\n case 'ecma-118':\n case 'elot_928':\n case 'greek':\n case 'greek8':\n case 'iso-8859-7':\n case 'iso-ir-126':\n case 'iso8859-7':\n case 'iso88597':\n case 'iso_8859-7':\n case 'iso_8859-7:1987':\n case 'sun_eu_greek':\n return 'ISO-8859-7'\n case 'csiso88598e':\n case 'csisolatinhebrew':\n case 'hebrew':\n case 'iso-8859-8':\n case 'iso-8859-8-e':\n case 'iso-ir-138':\n case 'iso8859-8':\n case 'iso88598':\n case 'iso_8859-8':\n case 'iso_8859-8:1988':\n case 'visual':\n return 'ISO-8859-8'\n case 'csiso88598i':\n case 'iso-8859-8-i':\n case 'logical':\n return 'ISO-8859-8-I'\n case 'csisolatin6':\n case 'iso-8859-10':\n case 'iso-ir-157':\n case 'iso8859-10':\n case 'iso885910':\n case 'l6':\n case 'latin6':\n return 'ISO-8859-10'\n case 'iso-8859-13':\n case 'iso8859-13':\n case 'iso885913':\n return 'ISO-8859-13'\n case 'iso-8859-14':\n case 'iso8859-14':\n case 'iso885914':\n return 'ISO-8859-14'\n case 'csisolatin9':\n case 'iso-8859-15':\n case 'iso8859-15':\n case 'iso885915':\n case 'iso_8859-15':\n case 'l9':\n return 'ISO-8859-15'\n case 'iso-8859-16':\n return 'ISO-8859-16'\n case 'cskoi8r':\n case 'koi':\n case 'koi8':\n case 'koi8-r':\n case 'koi8_r':\n return 'KOI8-R'\n case 'koi8-ru':\n case 'koi8-u':\n return 'KOI8-U'\n case 'csmacintosh':\n case 'mac':\n case 'macintosh':\n case 'x-mac-roman':\n return 'macintosh'\n case 'iso-8859-11':\n case 'iso8859-11':\n case 'iso885911':\n case 'tis-620':\n case 'windows-874':\n return 'windows-874'\n case 'cp1250':\n case 'windows-1250':\n case 'x-cp1250':\n return 'windows-1250'\n case 'cp1251':\n case 'windows-1251':\n case 'x-cp1251':\n return 'windows-1251'\n case 'ansi_x3.4-1968':\n case 'ascii':\n case 'cp1252':\n case 'cp819':\n case 'csisolatin1':\n case 'ibm819':\n case 'iso-8859-1':\n case 'iso-ir-100':\n case 'iso8859-1':\n case 'iso88591':\n case 'iso_8859-1':\n case 'iso_8859-1:1987':\n case 'l1':\n case 'latin1':\n case 'us-ascii':\n case 'windows-1252':\n case 'x-cp1252':\n return 'windows-1252'\n case 'cp1253':\n case 'windows-1253':\n case 'x-cp1253':\n return 'windows-1253'\n case 'cp1254':\n case 'csisolatin5':\n case 'iso-8859-9':\n case 'iso-ir-148':\n case 'iso8859-9':\n case 'iso88599':\n case 'iso_8859-9':\n case 'iso_8859-9:1989':\n case 'l5':\n case 'latin5':\n case 'windows-1254':\n case 'x-cp1254':\n return 'windows-1254'\n case 'cp1255':\n case 'windows-1255':\n case 'x-cp1255':\n return 'windows-1255'\n case 'cp1256':\n case 'windows-1256':\n case 'x-cp1256':\n return 'windows-1256'\n case 'cp1257':\n case 'windows-1257':\n case 'x-cp1257':\n return 'windows-1257'\n case 'cp1258':\n case 'windows-1258':\n case 'x-cp1258':\n return 'windows-1258'\n case 'x-mac-cyrillic':\n case 'x-mac-ukrainian':\n return 'x-mac-cyrillic'\n case 'chinese':\n case 'csgb2312':\n case 'csiso58gb231280':\n case 'gb2312':\n case 'gb_2312':\n case 'gb_2312-80':\n case 'gbk':\n case 'iso-ir-58':\n case 'x-gbk':\n return 'GBK'\n case 'gb18030':\n return 'gb18030'\n case 'big5':\n case 'big5-hkscs':\n case 'cn-big5':\n case 'csbig5':\n case 'x-x-big5':\n return 'Big5'\n case 'cseucpkdfmtjapanese':\n case 'euc-jp':\n case 'x-euc-jp':\n return 'EUC-JP'\n case 'csiso2022jp':\n case 'iso-2022-jp':\n return 'ISO-2022-JP'\n case 'csshiftjis':\n case 'ms932':\n case 'ms_kanji':\n case 'shift-jis':\n case 'shift_jis':\n case 'sjis':\n case 'windows-31j':\n case 'x-sjis':\n return 'Shift_JIS'\n case 'cseuckr':\n case 'csksc56011987':\n case 'euc-kr':\n case 'iso-ir-149':\n case 'korean':\n case 'ks_c_5601-1987':\n case 'ks_c_5601-1989':\n case 'ksc5601':\n case 'ksc_5601':\n case 'windows-949':\n return 'EUC-KR'\n case 'csiso2022kr':\n case 'hz-gb-2312':\n case 'iso-2022-cn':\n case 'iso-2022-cn-ext':\n case 'iso-2022-kr':\n case 'replacement':\n return 'replacement'\n case 'unicodefffe':\n case 'utf-16be':\n return 'UTF-16BE'\n case 'csunicode':\n case 'iso-10646-ucs-2':\n case 'ucs-2':\n case 'unicode':\n case 'unicodefeff':\n case 'utf-16':\n case 'utf-16le':\n return 'UTF-16LE'\n case 'x-user-defined':\n return 'x-user-defined'\n default: return 'failure'\n }\n}\n\nmodule.exports = {\n getEncoding\n}\n","'use strict'\n\nconst {\n staticPropertyDescriptors,\n readOperation,\n fireAProgressEvent\n} = require('./util')\nconst {\n kState,\n kError,\n kResult,\n kEvents,\n kAborted\n} = require('./symbols')\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../core/util')\n\nclass FileReader extends EventTarget {\n constructor () {\n super()\n\n this[kState] = 'empty'\n this[kResult] = null\n this[kError] = null\n this[kEvents] = {\n loadend: null,\n error: null,\n abort: null,\n load: null,\n progress: null,\n loadstart: null\n }\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer\n * @param {import('buffer').Blob} blob\n */\n readAsArrayBuffer (blob) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsArrayBuffer' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n // The readAsArrayBuffer(blob) method, when invoked,\n // must initiate a read operation for blob with ArrayBuffer.\n readOperation(this, blob, 'ArrayBuffer')\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#readAsBinaryString\n * @param {import('buffer').Blob} blob\n */\n readAsBinaryString (blob) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsBinaryString' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n // The readAsBinaryString(blob) method, when invoked,\n // must initiate a read operation for blob with BinaryString.\n readOperation(this, blob, 'BinaryString')\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#readAsDataText\n * @param {import('buffer').Blob} blob\n * @param {string?} encoding\n */\n readAsText (blob, encoding = undefined) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsText' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n if (encoding !== undefined) {\n encoding = webidl.converters.DOMString(encoding)\n }\n\n // The readAsText(blob, encoding) method, when invoked,\n // must initiate a read operation for blob with Text and encoding.\n readOperation(this, blob, 'Text', encoding)\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL\n * @param {import('buffer').Blob} blob\n */\n readAsDataURL (blob) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsDataURL' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n // The readAsDataURL(blob) method, when invoked, must\n // initiate a read operation for blob with DataURL.\n readOperation(this, blob, 'DataURL')\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dfn-abort\n */\n abort () {\n // 1. If this's state is \"empty\" or if this's state is\n // \"done\" set this's result to null and terminate\n // this algorithm.\n if (this[kState] === 'empty' || this[kState] === 'done') {\n this[kResult] = null\n return\n }\n\n // 2. If this's state is \"loading\" set this's state to\n // \"done\" and set this's result to null.\n if (this[kState] === 'loading') {\n this[kState] = 'done'\n this[kResult] = null\n }\n\n // 3. If there are any tasks from this on the file reading\n // task source in an affiliated task queue, then remove\n // those tasks from that task queue.\n this[kAborted] = true\n\n // 4. Terminate the algorithm for the read method being processed.\n // TODO\n\n // 5. Fire a progress event called abort at this.\n fireAProgressEvent('abort', this)\n\n // 6. If this's state is not \"loading\", fire a progress\n // event called loadend at this.\n if (this[kState] !== 'loading') {\n fireAProgressEvent('loadend', this)\n }\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate\n */\n get readyState () {\n webidl.brandCheck(this, FileReader)\n\n switch (this[kState]) {\n case 'empty': return this.EMPTY\n case 'loading': return this.LOADING\n case 'done': return this.DONE\n }\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dom-filereader-result\n */\n get result () {\n webidl.brandCheck(this, FileReader)\n\n // The result attribute’s getter, when invoked, must return\n // this's result.\n return this[kResult]\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dom-filereader-error\n */\n get error () {\n webidl.brandCheck(this, FileReader)\n\n // The error attribute’s getter, when invoked, must return\n // this's error.\n return this[kError]\n }\n\n get onloadend () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].loadend\n }\n\n set onloadend (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].loadend) {\n this.removeEventListener('loadend', this[kEvents].loadend)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].loadend = fn\n this.addEventListener('loadend', fn)\n } else {\n this[kEvents].loadend = null\n }\n }\n\n get onerror () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].error\n }\n\n set onerror (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].error) {\n this.removeEventListener('error', this[kEvents].error)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].error = fn\n this.addEventListener('error', fn)\n } else {\n this[kEvents].error = null\n }\n }\n\n get onloadstart () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].loadstart\n }\n\n set onloadstart (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].loadstart) {\n this.removeEventListener('loadstart', this[kEvents].loadstart)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].loadstart = fn\n this.addEventListener('loadstart', fn)\n } else {\n this[kEvents].loadstart = null\n }\n }\n\n get onprogress () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].progress\n }\n\n set onprogress (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].progress) {\n this.removeEventListener('progress', this[kEvents].progress)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].progress = fn\n this.addEventListener('progress', fn)\n } else {\n this[kEvents].progress = null\n }\n }\n\n get onload () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].load\n }\n\n set onload (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].load) {\n this.removeEventListener('load', this[kEvents].load)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].load = fn\n this.addEventListener('load', fn)\n } else {\n this[kEvents].load = null\n }\n }\n\n get onabort () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].abort\n }\n\n set onabort (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].abort) {\n this.removeEventListener('abort', this[kEvents].abort)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].abort = fn\n this.addEventListener('abort', fn)\n } else {\n this[kEvents].abort = null\n }\n }\n}\n\n// https://w3c.github.io/FileAPI/#dom-filereader-empty\nFileReader.EMPTY = FileReader.prototype.EMPTY = 0\n// https://w3c.github.io/FileAPI/#dom-filereader-loading\nFileReader.LOADING = FileReader.prototype.LOADING = 1\n// https://w3c.github.io/FileAPI/#dom-filereader-done\nFileReader.DONE = FileReader.prototype.DONE = 2\n\nObject.defineProperties(FileReader.prototype, {\n EMPTY: staticPropertyDescriptors,\n LOADING: staticPropertyDescriptors,\n DONE: staticPropertyDescriptors,\n readAsArrayBuffer: kEnumerableProperty,\n readAsBinaryString: kEnumerableProperty,\n readAsText: kEnumerableProperty,\n readAsDataURL: kEnumerableProperty,\n abort: kEnumerableProperty,\n readyState: kEnumerableProperty,\n result: kEnumerableProperty,\n error: kEnumerableProperty,\n onloadstart: kEnumerableProperty,\n onprogress: kEnumerableProperty,\n onload: kEnumerableProperty,\n onabort: kEnumerableProperty,\n onerror: kEnumerableProperty,\n onloadend: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'FileReader',\n writable: false,\n enumerable: false,\n configurable: true\n }\n})\n\nObject.defineProperties(FileReader, {\n EMPTY: staticPropertyDescriptors,\n LOADING: staticPropertyDescriptors,\n DONE: staticPropertyDescriptors\n})\n\nmodule.exports = {\n FileReader\n}\n","'use strict'\n\nconst { webidl } = require('../fetch/webidl')\n\nconst kState = Symbol('ProgressEvent state')\n\n/**\n * @see https://xhr.spec.whatwg.org/#progressevent\n */\nclass ProgressEvent extends Event {\n constructor (type, eventInitDict = {}) {\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {})\n\n super(type, eventInitDict)\n\n this[kState] = {\n lengthComputable: eventInitDict.lengthComputable,\n loaded: eventInitDict.loaded,\n total: eventInitDict.total\n }\n }\n\n get lengthComputable () {\n webidl.brandCheck(this, ProgressEvent)\n\n return this[kState].lengthComputable\n }\n\n get loaded () {\n webidl.brandCheck(this, ProgressEvent)\n\n return this[kState].loaded\n }\n\n get total () {\n webidl.brandCheck(this, ProgressEvent)\n\n return this[kState].total\n }\n}\n\nwebidl.converters.ProgressEventInit = webidl.dictionaryConverter([\n {\n key: 'lengthComputable',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'loaded',\n converter: webidl.converters['unsigned long long'],\n defaultValue: 0\n },\n {\n key: 'total',\n converter: webidl.converters['unsigned long long'],\n defaultValue: 0\n },\n {\n key: 'bubbles',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'cancelable',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'composed',\n converter: webidl.converters.boolean,\n defaultValue: false\n }\n])\n\nmodule.exports = {\n ProgressEvent\n}\n","'use strict'\n\nmodule.exports = {\n kState: Symbol('FileReader state'),\n kResult: Symbol('FileReader result'),\n kError: Symbol('FileReader error'),\n kLastProgressEventFired: Symbol('FileReader last progress event fired timestamp'),\n kEvents: Symbol('FileReader events'),\n kAborted: Symbol('FileReader aborted')\n}\n","'use strict'\n\nconst {\n kState,\n kError,\n kResult,\n kAborted,\n kLastProgressEventFired\n} = require('./symbols')\nconst { ProgressEvent } = require('./progressevent')\nconst { getEncoding } = require('./encoding')\nconst { DOMException } = require('../fetch/constants')\nconst { serializeAMimeType, parseMIMEType } = require('../fetch/dataURL')\nconst { types } = require('util')\nconst { StringDecoder } = require('string_decoder')\nconst { btoa } = require('buffer')\n\n/** @type {PropertyDescriptor} */\nconst staticPropertyDescriptors = {\n enumerable: true,\n writable: false,\n configurable: false\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#readOperation\n * @param {import('./filereader').FileReader} fr\n * @param {import('buffer').Blob} blob\n * @param {string} type\n * @param {string?} encodingName\n */\nfunction readOperation (fr, blob, type, encodingName) {\n // 1. If fr’s state is \"loading\", throw an InvalidStateError\n // DOMException.\n if (fr[kState] === 'loading') {\n throw new DOMException('Invalid state', 'InvalidStateError')\n }\n\n // 2. Set fr’s state to \"loading\".\n fr[kState] = 'loading'\n\n // 3. Set fr’s result to null.\n fr[kResult] = null\n\n // 4. Set fr’s error to null.\n fr[kError] = null\n\n // 5. Let stream be the result of calling get stream on blob.\n /** @type {import('stream/web').ReadableStream} */\n const stream = blob.stream()\n\n // 6. Let reader be the result of getting a reader from stream.\n const reader = stream.getReader()\n\n // 7. Let bytes be an empty byte sequence.\n /** @type {Uint8Array[]} */\n const bytes = []\n\n // 8. Let chunkPromise be the result of reading a chunk from\n // stream with reader.\n let chunkPromise = reader.read()\n\n // 9. Let isFirstChunk be true.\n let isFirstChunk = true\n\n // 10. In parallel, while true:\n // Note: \"In parallel\" just means non-blocking\n // Note 2: readOperation itself cannot be async as double\n // reading the body would then reject the promise, instead\n // of throwing an error.\n ;(async () => {\n while (!fr[kAborted]) {\n // 1. Wait for chunkPromise to be fulfilled or rejected.\n try {\n const { done, value } = await chunkPromise\n\n // 2. If chunkPromise is fulfilled, and isFirstChunk is\n // true, queue a task to fire a progress event called\n // loadstart at fr.\n if (isFirstChunk && !fr[kAborted]) {\n queueMicrotask(() => {\n fireAProgressEvent('loadstart', fr)\n })\n }\n\n // 3. Set isFirstChunk to false.\n isFirstChunk = false\n\n // 4. If chunkPromise is fulfilled with an object whose\n // done property is false and whose value property is\n // a Uint8Array object, run these steps:\n if (!done && types.isUint8Array(value)) {\n // 1. Let bs be the byte sequence represented by the\n // Uint8Array object.\n\n // 2. Append bs to bytes.\n bytes.push(value)\n\n // 3. If roughly 50ms have passed since these steps\n // were last invoked, queue a task to fire a\n // progress event called progress at fr.\n if (\n (\n fr[kLastProgressEventFired] === undefined ||\n Date.now() - fr[kLastProgressEventFired] >= 50\n ) &&\n !fr[kAborted]\n ) {\n fr[kLastProgressEventFired] = Date.now()\n queueMicrotask(() => {\n fireAProgressEvent('progress', fr)\n })\n }\n\n // 4. Set chunkPromise to the result of reading a\n // chunk from stream with reader.\n chunkPromise = reader.read()\n } else if (done) {\n // 5. Otherwise, if chunkPromise is fulfilled with an\n // object whose done property is true, queue a task\n // to run the following steps and abort this algorithm:\n queueMicrotask(() => {\n // 1. Set fr’s state to \"done\".\n fr[kState] = 'done'\n\n // 2. Let result be the result of package data given\n // bytes, type, blob’s type, and encodingName.\n try {\n const result = packageData(bytes, type, blob.type, encodingName)\n\n // 4. Else:\n\n if (fr[kAborted]) {\n return\n }\n\n // 1. Set fr’s result to result.\n fr[kResult] = result\n\n // 2. Fire a progress event called load at the fr.\n fireAProgressEvent('load', fr)\n } catch (error) {\n // 3. If package data threw an exception error:\n\n // 1. Set fr’s error to error.\n fr[kError] = error\n\n // 2. Fire a progress event called error at fr.\n fireAProgressEvent('error', fr)\n }\n\n // 5. If fr’s state is not \"loading\", fire a progress\n // event called loadend at the fr.\n if (fr[kState] !== 'loading') {\n fireAProgressEvent('loadend', fr)\n }\n })\n\n break\n }\n } catch (error) {\n if (fr[kAborted]) {\n return\n }\n\n // 6. Otherwise, if chunkPromise is rejected with an\n // error error, queue a task to run the following\n // steps and abort this algorithm:\n queueMicrotask(() => {\n // 1. Set fr’s state to \"done\".\n fr[kState] = 'done'\n\n // 2. Set fr’s error to error.\n fr[kError] = error\n\n // 3. Fire a progress event called error at fr.\n fireAProgressEvent('error', fr)\n\n // 4. If fr’s state is not \"loading\", fire a progress\n // event called loadend at fr.\n if (fr[kState] !== 'loading') {\n fireAProgressEvent('loadend', fr)\n }\n })\n\n break\n }\n }\n })()\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#fire-a-progress-event\n * @see https://dom.spec.whatwg.org/#concept-event-fire\n * @param {string} e The name of the event\n * @param {import('./filereader').FileReader} reader\n */\nfunction fireAProgressEvent (e, reader) {\n // The progress event e does not bubble. e.bubbles must be false\n // The progress event e is NOT cancelable. e.cancelable must be false\n const event = new ProgressEvent(e, {\n bubbles: false,\n cancelable: false\n })\n\n reader.dispatchEvent(event)\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#blob-package-data\n * @param {Uint8Array[]} bytes\n * @param {string} type\n * @param {string?} mimeType\n * @param {string?} encodingName\n */\nfunction packageData (bytes, type, mimeType, encodingName) {\n // 1. A Blob has an associated package data algorithm, given\n // bytes, a type, a optional mimeType, and a optional\n // encodingName, which switches on type and runs the\n // associated steps:\n\n switch (type) {\n case 'DataURL': {\n // 1. Return bytes as a DataURL [RFC2397] subject to\n // the considerations below:\n // * Use mimeType as part of the Data URL if it is\n // available in keeping with the Data URL\n // specification [RFC2397].\n // * If mimeType is not available return a Data URL\n // without a media-type. [RFC2397].\n\n // https://datatracker.ietf.org/doc/html/rfc2397#section-3\n // dataurl := \"data:\" [ mediatype ] [ \";base64\" ] \",\" data\n // mediatype := [ type \"/\" subtype ] *( \";\" parameter )\n // data := *urlchar\n // parameter := attribute \"=\" value\n let dataURL = 'data:'\n\n const parsed = parseMIMEType(mimeType || 'application/octet-stream')\n\n if (parsed !== 'failure') {\n dataURL += serializeAMimeType(parsed)\n }\n\n dataURL += ';base64,'\n\n const decoder = new StringDecoder('latin1')\n\n for (const chunk of bytes) {\n dataURL += btoa(decoder.write(chunk))\n }\n\n dataURL += btoa(decoder.end())\n\n return dataURL\n }\n case 'Text': {\n // 1. Let encoding be failure\n let encoding = 'failure'\n\n // 2. If the encodingName is present, set encoding to the\n // result of getting an encoding from encodingName.\n if (encodingName) {\n encoding = getEncoding(encodingName)\n }\n\n // 3. If encoding is failure, and mimeType is present:\n if (encoding === 'failure' && mimeType) {\n // 1. Let type be the result of parse a MIME type\n // given mimeType.\n const type = parseMIMEType(mimeType)\n\n // 2. If type is not failure, set encoding to the result\n // of getting an encoding from type’s parameters[\"charset\"].\n if (type !== 'failure') {\n encoding = getEncoding(type.parameters.get('charset'))\n }\n }\n\n // 4. If encoding is failure, then set encoding to UTF-8.\n if (encoding === 'failure') {\n encoding = 'UTF-8'\n }\n\n // 5. Decode bytes using fallback encoding encoding, and\n // return the result.\n return decode(bytes, encoding)\n }\n case 'ArrayBuffer': {\n // Return a new ArrayBuffer whose contents are bytes.\n const sequence = combineByteSequences(bytes)\n\n return sequence.buffer\n }\n case 'BinaryString': {\n // Return bytes as a binary string, in which every byte\n // is represented by a code unit of equal value [0..255].\n let binaryString = ''\n\n const decoder = new StringDecoder('latin1')\n\n for (const chunk of bytes) {\n binaryString += decoder.write(chunk)\n }\n\n binaryString += decoder.end()\n\n return binaryString\n }\n }\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#decode\n * @param {Uint8Array[]} ioQueue\n * @param {string} encoding\n */\nfunction decode (ioQueue, encoding) {\n const bytes = combineByteSequences(ioQueue)\n\n // 1. Let BOMEncoding be the result of BOM sniffing ioQueue.\n const BOMEncoding = BOMSniffing(bytes)\n\n let slice = 0\n\n // 2. If BOMEncoding is non-null:\n if (BOMEncoding !== null) {\n // 1. Set encoding to BOMEncoding.\n encoding = BOMEncoding\n\n // 2. Read three bytes from ioQueue, if BOMEncoding is\n // UTF-8; otherwise read two bytes.\n // (Do nothing with those bytes.)\n slice = BOMEncoding === 'UTF-8' ? 3 : 2\n }\n\n // 3. Process a queue with an instance of encoding’s\n // decoder, ioQueue, output, and \"replacement\".\n\n // 4. Return output.\n\n const sliced = bytes.slice(slice)\n return new TextDecoder(encoding).decode(sliced)\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#bom-sniff\n * @param {Uint8Array} ioQueue\n */\nfunction BOMSniffing (ioQueue) {\n // 1. Let BOM be the result of peeking 3 bytes from ioQueue,\n // converted to a byte sequence.\n const [a, b, c] = ioQueue\n\n // 2. For each of the rows in the table below, starting with\n // the first one and going down, if BOM starts with the\n // bytes given in the first column, then return the\n // encoding given in the cell in the second column of that\n // row. Otherwise, return null.\n if (a === 0xEF && b === 0xBB && c === 0xBF) {\n return 'UTF-8'\n } else if (a === 0xFE && b === 0xFF) {\n return 'UTF-16BE'\n } else if (a === 0xFF && b === 0xFE) {\n return 'UTF-16LE'\n }\n\n return null\n}\n\n/**\n * @param {Uint8Array[]} sequences\n */\nfunction combineByteSequences (sequences) {\n const size = sequences.reduce((a, b) => {\n return a + b.byteLength\n }, 0)\n\n let offset = 0\n\n return sequences.reduce((a, b) => {\n a.set(b, offset)\n offset += b.byteLength\n return a\n }, new Uint8Array(size))\n}\n\nmodule.exports = {\n staticPropertyDescriptors,\n readOperation,\n fireAProgressEvent\n}\n","'use strict'\n\n// We include a version number for the Dispatcher API. In case of breaking changes,\n// this version number must be increased to avoid conflicts.\nconst globalDispatcher = Symbol.for('undici.globalDispatcher.1')\nconst { InvalidArgumentError } = require('./core/errors')\nconst Agent = require('./agent')\n\nif (getGlobalDispatcher() === undefined) {\n setGlobalDispatcher(new Agent())\n}\n\nfunction setGlobalDispatcher (agent) {\n if (!agent || typeof agent.dispatch !== 'function') {\n throw new InvalidArgumentError('Argument agent must implement Agent')\n }\n Object.defineProperty(globalThis, globalDispatcher, {\n value: agent,\n writable: true,\n enumerable: false,\n configurable: false\n })\n}\n\nfunction getGlobalDispatcher () {\n return globalThis[globalDispatcher]\n}\n\nmodule.exports = {\n setGlobalDispatcher,\n getGlobalDispatcher\n}\n","'use strict'\n\nmodule.exports = class DecoratorHandler {\n constructor (handler) {\n this.handler = handler\n }\n\n onConnect (...args) {\n return this.handler.onConnect(...args)\n }\n\n onError (...args) {\n return this.handler.onError(...args)\n }\n\n onUpgrade (...args) {\n return this.handler.onUpgrade(...args)\n }\n\n onHeaders (...args) {\n return this.handler.onHeaders(...args)\n }\n\n onData (...args) {\n return this.handler.onData(...args)\n }\n\n onComplete (...args) {\n return this.handler.onComplete(...args)\n }\n\n onBodySent (...args) {\n return this.handler.onBodySent(...args)\n }\n}\n","'use strict'\n\nconst util = require('../core/util')\nconst { kBodyUsed } = require('../core/symbols')\nconst assert = require('assert')\nconst { InvalidArgumentError } = require('../core/errors')\nconst EE = require('events')\n\nconst redirectableStatusCodes = [300, 301, 302, 303, 307, 308]\n\nconst kBody = Symbol('body')\n\nclass BodyAsyncIterable {\n constructor (body) {\n this[kBody] = body\n this[kBodyUsed] = false\n }\n\n async * [Symbol.asyncIterator] () {\n assert(!this[kBodyUsed], 'disturbed')\n this[kBodyUsed] = true\n yield * this[kBody]\n }\n}\n\nclass RedirectHandler {\n constructor (dispatch, maxRedirections, opts, handler) {\n if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {\n throw new InvalidArgumentError('maxRedirections must be a positive number')\n }\n\n util.validateHandler(handler, opts.method, opts.upgrade)\n\n this.dispatch = dispatch\n this.location = null\n this.abort = null\n this.opts = { ...opts, maxRedirections: 0 } // opts must be a copy\n this.maxRedirections = maxRedirections\n this.handler = handler\n this.history = []\n\n if (util.isStream(this.opts.body)) {\n // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp\n // so that it can be dispatched again?\n // TODO (fix): Do we need 100-expect support to provide a way to do this properly?\n if (util.bodyLength(this.opts.body) === 0) {\n this.opts.body\n .on('data', function () {\n assert(false)\n })\n }\n\n if (typeof this.opts.body.readableDidRead !== 'boolean') {\n this.opts.body[kBodyUsed] = false\n EE.prototype.on.call(this.opts.body, 'data', function () {\n this[kBodyUsed] = true\n })\n }\n } else if (this.opts.body && typeof this.opts.body.pipeTo === 'function') {\n // TODO (fix): We can't access ReadableStream internal state\n // to determine whether or not it has been disturbed. This is just\n // a workaround.\n this.opts.body = new BodyAsyncIterable(this.opts.body)\n } else if (\n this.opts.body &&\n typeof this.opts.body !== 'string' &&\n !ArrayBuffer.isView(this.opts.body) &&\n util.isIterable(this.opts.body)\n ) {\n // TODO: Should we allow re-using iterable if !this.opts.idempotent\n // or through some other flag?\n this.opts.body = new BodyAsyncIterable(this.opts.body)\n }\n }\n\n onConnect (abort) {\n this.abort = abort\n this.handler.onConnect(abort, { history: this.history })\n }\n\n onUpgrade (statusCode, headers, socket) {\n this.handler.onUpgrade(statusCode, headers, socket)\n }\n\n onError (error) {\n this.handler.onError(error)\n }\n\n onHeaders (statusCode, headers, resume, statusText) {\n this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body)\n ? null\n : parseLocation(statusCode, headers)\n\n if (this.opts.origin) {\n this.history.push(new URL(this.opts.path, this.opts.origin))\n }\n\n if (!this.location) {\n return this.handler.onHeaders(statusCode, headers, resume, statusText)\n }\n\n const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)))\n const path = search ? `${pathname}${search}` : pathname\n\n // Remove headers referring to the original URL.\n // By default it is Host only, unless it's a 303 (see below), which removes also all Content-* headers.\n // https://tools.ietf.org/html/rfc7231#section-6.4\n this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin)\n this.opts.path = path\n this.opts.origin = origin\n this.opts.maxRedirections = 0\n this.opts.query = null\n\n // https://tools.ietf.org/html/rfc7231#section-6.4.4\n // In case of HTTP 303, always replace method to be either HEAD or GET\n if (statusCode === 303 && this.opts.method !== 'HEAD') {\n this.opts.method = 'GET'\n this.opts.body = null\n }\n }\n\n onData (chunk) {\n if (this.location) {\n /*\n https://tools.ietf.org/html/rfc7231#section-6.4\n\n TLDR: undici always ignores 3xx response bodies.\n\n Redirection is used to serve the requested resource from another URL, so it is assumes that\n no body is generated (and thus can be ignored). Even though generating a body is not prohibited.\n\n For status 301, 302, 303, 307 and 308 (the latter from RFC 7238), the specs mention that the body usually\n (which means it's optional and not mandated) contain just an hyperlink to the value of\n the Location response header, so the body can be ignored safely.\n\n For status 300, which is \"Multiple Choices\", the spec mentions both generating a Location\n response header AND a response body with the other possible location to follow.\n Since the spec explicitily chooses not to specify a format for such body and leave it to\n servers and browsers implementors, we ignore the body as there is no specified way to eventually parse it.\n */\n } else {\n return this.handler.onData(chunk)\n }\n }\n\n onComplete (trailers) {\n if (this.location) {\n /*\n https://tools.ietf.org/html/rfc7231#section-6.4\n\n TLDR: undici always ignores 3xx response trailers as they are not expected in case of redirections\n and neither are useful if present.\n\n See comment on onData method above for more detailed informations.\n */\n\n this.location = null\n this.abort = null\n\n this.dispatch(this.opts, this)\n } else {\n this.handler.onComplete(trailers)\n }\n }\n\n onBodySent (chunk) {\n if (this.handler.onBodySent) {\n this.handler.onBodySent(chunk)\n }\n }\n}\n\nfunction parseLocation (statusCode, headers) {\n if (redirectableStatusCodes.indexOf(statusCode) === -1) {\n return null\n }\n\n for (let i = 0; i < headers.length; i += 2) {\n if (headers[i].toString().toLowerCase() === 'location') {\n return headers[i + 1]\n }\n }\n}\n\n// https://tools.ietf.org/html/rfc7231#section-6.4.4\nfunction shouldRemoveHeader (header, removeContent, unknownOrigin) {\n if (header.length === 4) {\n return util.headerNameToString(header) === 'host'\n }\n if (removeContent && util.headerNameToString(header).startsWith('content-')) {\n return true\n }\n if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) {\n const name = util.headerNameToString(header)\n return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization'\n }\n return false\n}\n\n// https://tools.ietf.org/html/rfc7231#section-6.4\nfunction cleanRequestHeaders (headers, removeContent, unknownOrigin) {\n const ret = []\n if (Array.isArray(headers)) {\n for (let i = 0; i < headers.length; i += 2) {\n if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) {\n ret.push(headers[i], headers[i + 1])\n }\n }\n } else if (headers && typeof headers === 'object') {\n for (const key of Object.keys(headers)) {\n if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) {\n ret.push(key, headers[key])\n }\n }\n } else {\n assert(headers == null, 'headers must be an object or an array')\n }\n return ret\n}\n\nmodule.exports = RedirectHandler\n","const assert = require('assert')\n\nconst { kRetryHandlerDefaultRetry } = require('../core/symbols')\nconst { RequestRetryError } = require('../core/errors')\nconst { isDisturbed, parseHeaders, parseRangeHeader } = require('../core/util')\n\nfunction calculateRetryAfterHeader (retryAfter) {\n const current = Date.now()\n const diff = new Date(retryAfter).getTime() - current\n\n return diff\n}\n\nclass RetryHandler {\n constructor (opts, handlers) {\n const { retryOptions, ...dispatchOpts } = opts\n const {\n // Retry scoped\n retry: retryFn,\n maxRetries,\n maxTimeout,\n minTimeout,\n timeoutFactor,\n // Response scoped\n methods,\n errorCodes,\n retryAfter,\n statusCodes\n } = retryOptions ?? {}\n\n this.dispatch = handlers.dispatch\n this.handler = handlers.handler\n this.opts = dispatchOpts\n this.abort = null\n this.aborted = false\n this.retryOpts = {\n retry: retryFn ?? RetryHandler[kRetryHandlerDefaultRetry],\n retryAfter: retryAfter ?? true,\n maxTimeout: maxTimeout ?? 30 * 1000, // 30s,\n timeout: minTimeout ?? 500, // .5s\n timeoutFactor: timeoutFactor ?? 2,\n maxRetries: maxRetries ?? 5,\n // What errors we should retry\n methods: methods ?? ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'],\n // Indicates which errors to retry\n statusCodes: statusCodes ?? [500, 502, 503, 504, 429],\n // List of errors to retry\n errorCodes: errorCodes ?? [\n 'ECONNRESET',\n 'ECONNREFUSED',\n 'ENOTFOUND',\n 'ENETDOWN',\n 'ENETUNREACH',\n 'EHOSTDOWN',\n 'EHOSTUNREACH',\n 'EPIPE'\n ]\n }\n\n this.retryCount = 0\n this.start = 0\n this.end = null\n this.etag = null\n this.resume = null\n\n // Handle possible onConnect duplication\n this.handler.onConnect(reason => {\n this.aborted = true\n if (this.abort) {\n this.abort(reason)\n } else {\n this.reason = reason\n }\n })\n }\n\n onRequestSent () {\n if (this.handler.onRequestSent) {\n this.handler.onRequestSent()\n }\n }\n\n onUpgrade (statusCode, headers, socket) {\n if (this.handler.onUpgrade) {\n this.handler.onUpgrade(statusCode, headers, socket)\n }\n }\n\n onConnect (abort) {\n if (this.aborted) {\n abort(this.reason)\n } else {\n this.abort = abort\n }\n }\n\n onBodySent (chunk) {\n if (this.handler.onBodySent) return this.handler.onBodySent(chunk)\n }\n\n static [kRetryHandlerDefaultRetry] (err, { state, opts }, cb) {\n const { statusCode, code, headers } = err\n const { method, retryOptions } = opts\n const {\n maxRetries,\n timeout,\n maxTimeout,\n timeoutFactor,\n statusCodes,\n errorCodes,\n methods\n } = retryOptions\n let { counter, currentTimeout } = state\n\n currentTimeout =\n currentTimeout != null && currentTimeout > 0 ? currentTimeout : timeout\n\n // Any code that is not a Undici's originated and allowed to retry\n if (\n code &&\n code !== 'UND_ERR_REQ_RETRY' &&\n code !== 'UND_ERR_SOCKET' &&\n !errorCodes.includes(code)\n ) {\n cb(err)\n return\n }\n\n // If a set of method are provided and the current method is not in the list\n if (Array.isArray(methods) && !methods.includes(method)) {\n cb(err)\n return\n }\n\n // If a set of status code are provided and the current status code is not in the list\n if (\n statusCode != null &&\n Array.isArray(statusCodes) &&\n !statusCodes.includes(statusCode)\n ) {\n cb(err)\n return\n }\n\n // If we reached the max number of retries\n if (counter > maxRetries) {\n cb(err)\n return\n }\n\n let retryAfterHeader = headers != null && headers['retry-after']\n if (retryAfterHeader) {\n retryAfterHeader = Number(retryAfterHeader)\n retryAfterHeader = isNaN(retryAfterHeader)\n ? calculateRetryAfterHeader(retryAfterHeader)\n : retryAfterHeader * 1e3 // Retry-After is in seconds\n }\n\n const retryTimeout =\n retryAfterHeader > 0\n ? Math.min(retryAfterHeader, maxTimeout)\n : Math.min(currentTimeout * timeoutFactor ** counter, maxTimeout)\n\n state.currentTimeout = retryTimeout\n\n setTimeout(() => cb(null), retryTimeout)\n }\n\n onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n const headers = parseHeaders(rawHeaders)\n\n this.retryCount += 1\n\n if (statusCode >= 300) {\n this.abort(\n new RequestRetryError('Request failed', statusCode, {\n headers,\n count: this.retryCount\n })\n )\n return false\n }\n\n // Checkpoint for resume from where we left it\n if (this.resume != null) {\n this.resume = null\n\n if (statusCode !== 206) {\n return true\n }\n\n const contentRange = parseRangeHeader(headers['content-range'])\n // If no content range\n if (!contentRange) {\n this.abort(\n new RequestRetryError('Content-Range mismatch', statusCode, {\n headers,\n count: this.retryCount\n })\n )\n return false\n }\n\n // Let's start with a weak etag check\n if (this.etag != null && this.etag !== headers.etag) {\n this.abort(\n new RequestRetryError('ETag mismatch', statusCode, {\n headers,\n count: this.retryCount\n })\n )\n return false\n }\n\n const { start, size, end = size } = contentRange\n\n assert(this.start === start, 'content-range mismatch')\n assert(this.end == null || this.end === end, 'content-range mismatch')\n\n this.resume = resume\n return true\n }\n\n if (this.end == null) {\n if (statusCode === 206) {\n // First time we receive 206\n const range = parseRangeHeader(headers['content-range'])\n\n if (range == null) {\n return this.handler.onHeaders(\n statusCode,\n rawHeaders,\n resume,\n statusMessage\n )\n }\n\n const { start, size, end = size } = range\n\n assert(\n start != null && Number.isFinite(start) && this.start !== start,\n 'content-range mismatch'\n )\n assert(Number.isFinite(start))\n assert(\n end != null && Number.isFinite(end) && this.end !== end,\n 'invalid content-length'\n )\n\n this.start = start\n this.end = end\n }\n\n // We make our best to checkpoint the body for further range headers\n if (this.end == null) {\n const contentLength = headers['content-length']\n this.end = contentLength != null ? Number(contentLength) : null\n }\n\n assert(Number.isFinite(this.start))\n assert(\n this.end == null || Number.isFinite(this.end),\n 'invalid content-length'\n )\n\n this.resume = resume\n this.etag = headers.etag != null ? headers.etag : null\n\n return this.handler.onHeaders(\n statusCode,\n rawHeaders,\n resume,\n statusMessage\n )\n }\n\n const err = new RequestRetryError('Request failed', statusCode, {\n headers,\n count: this.retryCount\n })\n\n this.abort(err)\n\n return false\n }\n\n onData (chunk) {\n this.start += chunk.length\n\n return this.handler.onData(chunk)\n }\n\n onComplete (rawTrailers) {\n this.retryCount = 0\n return this.handler.onComplete(rawTrailers)\n }\n\n onError (err) {\n if (this.aborted || isDisturbed(this.opts.body)) {\n return this.handler.onError(err)\n }\n\n this.retryOpts.retry(\n err,\n {\n state: { counter: this.retryCount++, currentTimeout: this.retryAfter },\n opts: { retryOptions: this.retryOpts, ...this.opts }\n },\n onRetry.bind(this)\n )\n\n function onRetry (err) {\n if (err != null || this.aborted || isDisturbed(this.opts.body)) {\n return this.handler.onError(err)\n }\n\n if (this.start !== 0) {\n this.opts = {\n ...this.opts,\n headers: {\n ...this.opts.headers,\n range: `bytes=${this.start}-${this.end ?? ''}`\n }\n }\n }\n\n try {\n this.dispatch(this.opts, this)\n } catch (err) {\n this.handler.onError(err)\n }\n }\n }\n}\n\nmodule.exports = RetryHandler\n","'use strict'\n\nconst RedirectHandler = require('../handler/RedirectHandler')\n\nfunction createRedirectInterceptor ({ maxRedirections: defaultMaxRedirections }) {\n return (dispatch) => {\n return function Intercept (opts, handler) {\n const { maxRedirections = defaultMaxRedirections } = opts\n\n if (!maxRedirections) {\n return dispatch(opts, handler)\n }\n\n const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler)\n opts = { ...opts, maxRedirections: 0 } // Stop sub dispatcher from also redirecting.\n return dispatch(opts, redirectHandler)\n }\n }\n}\n\nmodule.exports = createRedirectInterceptor\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0;\nconst utils_1 = require(\"./utils\");\n// C headers\nvar ERROR;\n(function (ERROR) {\n ERROR[ERROR[\"OK\"] = 0] = \"OK\";\n ERROR[ERROR[\"INTERNAL\"] = 1] = \"INTERNAL\";\n ERROR[ERROR[\"STRICT\"] = 2] = \"STRICT\";\n ERROR[ERROR[\"LF_EXPECTED\"] = 3] = \"LF_EXPECTED\";\n ERROR[ERROR[\"UNEXPECTED_CONTENT_LENGTH\"] = 4] = \"UNEXPECTED_CONTENT_LENGTH\";\n ERROR[ERROR[\"CLOSED_CONNECTION\"] = 5] = \"CLOSED_CONNECTION\";\n ERROR[ERROR[\"INVALID_METHOD\"] = 6] = \"INVALID_METHOD\";\n ERROR[ERROR[\"INVALID_URL\"] = 7] = \"INVALID_URL\";\n ERROR[ERROR[\"INVALID_CONSTANT\"] = 8] = \"INVALID_CONSTANT\";\n ERROR[ERROR[\"INVALID_VERSION\"] = 9] = \"INVALID_VERSION\";\n ERROR[ERROR[\"INVALID_HEADER_TOKEN\"] = 10] = \"INVALID_HEADER_TOKEN\";\n ERROR[ERROR[\"INVALID_CONTENT_LENGTH\"] = 11] = \"INVALID_CONTENT_LENGTH\";\n ERROR[ERROR[\"INVALID_CHUNK_SIZE\"] = 12] = \"INVALID_CHUNK_SIZE\";\n ERROR[ERROR[\"INVALID_STATUS\"] = 13] = \"INVALID_STATUS\";\n ERROR[ERROR[\"INVALID_EOF_STATE\"] = 14] = \"INVALID_EOF_STATE\";\n ERROR[ERROR[\"INVALID_TRANSFER_ENCODING\"] = 15] = \"INVALID_TRANSFER_ENCODING\";\n ERROR[ERROR[\"CB_MESSAGE_BEGIN\"] = 16] = \"CB_MESSAGE_BEGIN\";\n ERROR[ERROR[\"CB_HEADERS_COMPLETE\"] = 17] = \"CB_HEADERS_COMPLETE\";\n ERROR[ERROR[\"CB_MESSAGE_COMPLETE\"] = 18] = \"CB_MESSAGE_COMPLETE\";\n ERROR[ERROR[\"CB_CHUNK_HEADER\"] = 19] = \"CB_CHUNK_HEADER\";\n ERROR[ERROR[\"CB_CHUNK_COMPLETE\"] = 20] = \"CB_CHUNK_COMPLETE\";\n ERROR[ERROR[\"PAUSED\"] = 21] = \"PAUSED\";\n ERROR[ERROR[\"PAUSED_UPGRADE\"] = 22] = \"PAUSED_UPGRADE\";\n ERROR[ERROR[\"PAUSED_H2_UPGRADE\"] = 23] = \"PAUSED_H2_UPGRADE\";\n ERROR[ERROR[\"USER\"] = 24] = \"USER\";\n})(ERROR = exports.ERROR || (exports.ERROR = {}));\nvar TYPE;\n(function (TYPE) {\n TYPE[TYPE[\"BOTH\"] = 0] = \"BOTH\";\n TYPE[TYPE[\"REQUEST\"] = 1] = \"REQUEST\";\n TYPE[TYPE[\"RESPONSE\"] = 2] = \"RESPONSE\";\n})(TYPE = exports.TYPE || (exports.TYPE = {}));\nvar FLAGS;\n(function (FLAGS) {\n FLAGS[FLAGS[\"CONNECTION_KEEP_ALIVE\"] = 1] = \"CONNECTION_KEEP_ALIVE\";\n FLAGS[FLAGS[\"CONNECTION_CLOSE\"] = 2] = \"CONNECTION_CLOSE\";\n FLAGS[FLAGS[\"CONNECTION_UPGRADE\"] = 4] = \"CONNECTION_UPGRADE\";\n FLAGS[FLAGS[\"CHUNKED\"] = 8] = \"CHUNKED\";\n FLAGS[FLAGS[\"UPGRADE\"] = 16] = \"UPGRADE\";\n FLAGS[FLAGS[\"CONTENT_LENGTH\"] = 32] = \"CONTENT_LENGTH\";\n FLAGS[FLAGS[\"SKIPBODY\"] = 64] = \"SKIPBODY\";\n FLAGS[FLAGS[\"TRAILING\"] = 128] = \"TRAILING\";\n // 1 << 8 is unused\n FLAGS[FLAGS[\"TRANSFER_ENCODING\"] = 512] = \"TRANSFER_ENCODING\";\n})(FLAGS = exports.FLAGS || (exports.FLAGS = {}));\nvar LENIENT_FLAGS;\n(function (LENIENT_FLAGS) {\n LENIENT_FLAGS[LENIENT_FLAGS[\"HEADERS\"] = 1] = \"HEADERS\";\n LENIENT_FLAGS[LENIENT_FLAGS[\"CHUNKED_LENGTH\"] = 2] = \"CHUNKED_LENGTH\";\n LENIENT_FLAGS[LENIENT_FLAGS[\"KEEP_ALIVE\"] = 4] = \"KEEP_ALIVE\";\n})(LENIENT_FLAGS = exports.LENIENT_FLAGS || (exports.LENIENT_FLAGS = {}));\nvar METHODS;\n(function (METHODS) {\n METHODS[METHODS[\"DELETE\"] = 0] = \"DELETE\";\n METHODS[METHODS[\"GET\"] = 1] = \"GET\";\n METHODS[METHODS[\"HEAD\"] = 2] = \"HEAD\";\n METHODS[METHODS[\"POST\"] = 3] = \"POST\";\n METHODS[METHODS[\"PUT\"] = 4] = \"PUT\";\n /* pathological */\n METHODS[METHODS[\"CONNECT\"] = 5] = \"CONNECT\";\n METHODS[METHODS[\"OPTIONS\"] = 6] = \"OPTIONS\";\n METHODS[METHODS[\"TRACE\"] = 7] = \"TRACE\";\n /* WebDAV */\n METHODS[METHODS[\"COPY\"] = 8] = \"COPY\";\n METHODS[METHODS[\"LOCK\"] = 9] = \"LOCK\";\n METHODS[METHODS[\"MKCOL\"] = 10] = \"MKCOL\";\n METHODS[METHODS[\"MOVE\"] = 11] = \"MOVE\";\n METHODS[METHODS[\"PROPFIND\"] = 12] = \"PROPFIND\";\n METHODS[METHODS[\"PROPPATCH\"] = 13] = \"PROPPATCH\";\n METHODS[METHODS[\"SEARCH\"] = 14] = \"SEARCH\";\n METHODS[METHODS[\"UNLOCK\"] = 15] = \"UNLOCK\";\n METHODS[METHODS[\"BIND\"] = 16] = \"BIND\";\n METHODS[METHODS[\"REBIND\"] = 17] = \"REBIND\";\n METHODS[METHODS[\"UNBIND\"] = 18] = \"UNBIND\";\n METHODS[METHODS[\"ACL\"] = 19] = \"ACL\";\n /* subversion */\n METHODS[METHODS[\"REPORT\"] = 20] = \"REPORT\";\n METHODS[METHODS[\"MKACTIVITY\"] = 21] = \"MKACTIVITY\";\n METHODS[METHODS[\"CHECKOUT\"] = 22] = \"CHECKOUT\";\n METHODS[METHODS[\"MERGE\"] = 23] = \"MERGE\";\n /* upnp */\n METHODS[METHODS[\"M-SEARCH\"] = 24] = \"M-SEARCH\";\n METHODS[METHODS[\"NOTIFY\"] = 25] = \"NOTIFY\";\n METHODS[METHODS[\"SUBSCRIBE\"] = 26] = \"SUBSCRIBE\";\n METHODS[METHODS[\"UNSUBSCRIBE\"] = 27] = \"UNSUBSCRIBE\";\n /* RFC-5789 */\n METHODS[METHODS[\"PATCH\"] = 28] = \"PATCH\";\n METHODS[METHODS[\"PURGE\"] = 29] = \"PURGE\";\n /* CalDAV */\n METHODS[METHODS[\"MKCALENDAR\"] = 30] = \"MKCALENDAR\";\n /* RFC-2068, section 19.6.1.2 */\n METHODS[METHODS[\"LINK\"] = 31] = \"LINK\";\n METHODS[METHODS[\"UNLINK\"] = 32] = \"UNLINK\";\n /* icecast */\n METHODS[METHODS[\"SOURCE\"] = 33] = \"SOURCE\";\n /* RFC-7540, section 11.6 */\n METHODS[METHODS[\"PRI\"] = 34] = \"PRI\";\n /* RFC-2326 RTSP */\n METHODS[METHODS[\"DESCRIBE\"] = 35] = \"DESCRIBE\";\n METHODS[METHODS[\"ANNOUNCE\"] = 36] = \"ANNOUNCE\";\n METHODS[METHODS[\"SETUP\"] = 37] = \"SETUP\";\n METHODS[METHODS[\"PLAY\"] = 38] = \"PLAY\";\n METHODS[METHODS[\"PAUSE\"] = 39] = \"PAUSE\";\n METHODS[METHODS[\"TEARDOWN\"] = 40] = \"TEARDOWN\";\n METHODS[METHODS[\"GET_PARAMETER\"] = 41] = \"GET_PARAMETER\";\n METHODS[METHODS[\"SET_PARAMETER\"] = 42] = \"SET_PARAMETER\";\n METHODS[METHODS[\"REDIRECT\"] = 43] = \"REDIRECT\";\n METHODS[METHODS[\"RECORD\"] = 44] = \"RECORD\";\n /* RAOP */\n METHODS[METHODS[\"FLUSH\"] = 45] = \"FLUSH\";\n})(METHODS = exports.METHODS || (exports.METHODS = {}));\nexports.METHODS_HTTP = [\n METHODS.DELETE,\n METHODS.GET,\n METHODS.HEAD,\n METHODS.POST,\n METHODS.PUT,\n METHODS.CONNECT,\n METHODS.OPTIONS,\n METHODS.TRACE,\n METHODS.COPY,\n METHODS.LOCK,\n METHODS.MKCOL,\n METHODS.MOVE,\n METHODS.PROPFIND,\n METHODS.PROPPATCH,\n METHODS.SEARCH,\n METHODS.UNLOCK,\n METHODS.BIND,\n METHODS.REBIND,\n METHODS.UNBIND,\n METHODS.ACL,\n METHODS.REPORT,\n METHODS.MKACTIVITY,\n METHODS.CHECKOUT,\n METHODS.MERGE,\n METHODS['M-SEARCH'],\n METHODS.NOTIFY,\n METHODS.SUBSCRIBE,\n METHODS.UNSUBSCRIBE,\n METHODS.PATCH,\n METHODS.PURGE,\n METHODS.MKCALENDAR,\n METHODS.LINK,\n METHODS.UNLINK,\n METHODS.PRI,\n // TODO(indutny): should we allow it with HTTP?\n METHODS.SOURCE,\n];\nexports.METHODS_ICE = [\n METHODS.SOURCE,\n];\nexports.METHODS_RTSP = [\n METHODS.OPTIONS,\n METHODS.DESCRIBE,\n METHODS.ANNOUNCE,\n METHODS.SETUP,\n METHODS.PLAY,\n METHODS.PAUSE,\n METHODS.TEARDOWN,\n METHODS.GET_PARAMETER,\n METHODS.SET_PARAMETER,\n METHODS.REDIRECT,\n METHODS.RECORD,\n METHODS.FLUSH,\n // For AirPlay\n METHODS.GET,\n METHODS.POST,\n];\nexports.METHOD_MAP = utils_1.enumToMap(METHODS);\nexports.H_METHOD_MAP = {};\nObject.keys(exports.METHOD_MAP).forEach((key) => {\n if (/^H/.test(key)) {\n exports.H_METHOD_MAP[key] = exports.METHOD_MAP[key];\n }\n});\nvar FINISH;\n(function (FINISH) {\n FINISH[FINISH[\"SAFE\"] = 0] = \"SAFE\";\n FINISH[FINISH[\"SAFE_WITH_CB\"] = 1] = \"SAFE_WITH_CB\";\n FINISH[FINISH[\"UNSAFE\"] = 2] = \"UNSAFE\";\n})(FINISH = exports.FINISH || (exports.FINISH = {}));\nexports.ALPHA = [];\nfor (let i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) {\n // Upper case\n exports.ALPHA.push(String.fromCharCode(i));\n // Lower case\n exports.ALPHA.push(String.fromCharCode(i + 0x20));\n}\nexports.NUM_MAP = {\n 0: 0, 1: 1, 2: 2, 3: 3, 4: 4,\n 5: 5, 6: 6, 7: 7, 8: 8, 9: 9,\n};\nexports.HEX_MAP = {\n 0: 0, 1: 1, 2: 2, 3: 3, 4: 4,\n 5: 5, 6: 6, 7: 7, 8: 8, 9: 9,\n A: 0XA, B: 0XB, C: 0XC, D: 0XD, E: 0XE, F: 0XF,\n a: 0xa, b: 0xb, c: 0xc, d: 0xd, e: 0xe, f: 0xf,\n};\nexports.NUM = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n];\nexports.ALPHANUM = exports.ALPHA.concat(exports.NUM);\nexports.MARK = ['-', '_', '.', '!', '~', '*', '\\'', '(', ')'];\nexports.USERINFO_CHARS = exports.ALPHANUM\n .concat(exports.MARK)\n .concat(['%', ';', ':', '&', '=', '+', '$', ',']);\n// TODO(indutny): use RFC\nexports.STRICT_URL_CHAR = [\n '!', '\"', '$', '%', '&', '\\'',\n '(', ')', '*', '+', ',', '-', '.', '/',\n ':', ';', '<', '=', '>',\n '@', '[', '\\\\', ']', '^', '_',\n '`',\n '{', '|', '}', '~',\n].concat(exports.ALPHANUM);\nexports.URL_CHAR = exports.STRICT_URL_CHAR\n .concat(['\\t', '\\f']);\n// All characters with 0x80 bit set to 1\nfor (let i = 0x80; i <= 0xff; i++) {\n exports.URL_CHAR.push(i);\n}\nexports.HEX = exports.NUM.concat(['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']);\n/* Tokens as defined by rfc 2616. Also lowercases them.\n * token = 1*\n * separators = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n * | \",\" | \";\" | \":\" | \"\\\" | <\">\n * | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n * | \"{\" | \"}\" | SP | HT\n */\nexports.STRICT_TOKEN = [\n '!', '#', '$', '%', '&', '\\'',\n '*', '+', '-', '.',\n '^', '_', '`',\n '|', '~',\n].concat(exports.ALPHANUM);\nexports.TOKEN = exports.STRICT_TOKEN.concat([' ']);\n/*\n * Verify that a char is a valid visible (printable) US-ASCII\n * character or %x80-FF\n */\nexports.HEADER_CHARS = ['\\t'];\nfor (let i = 32; i <= 255; i++) {\n if (i !== 127) {\n exports.HEADER_CHARS.push(i);\n }\n}\n// ',' = \\x44\nexports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44);\nexports.MAJOR = exports.NUM_MAP;\nexports.MINOR = exports.MAJOR;\nvar HEADER_STATE;\n(function (HEADER_STATE) {\n HEADER_STATE[HEADER_STATE[\"GENERAL\"] = 0] = \"GENERAL\";\n HEADER_STATE[HEADER_STATE[\"CONNECTION\"] = 1] = \"CONNECTION\";\n HEADER_STATE[HEADER_STATE[\"CONTENT_LENGTH\"] = 2] = \"CONTENT_LENGTH\";\n HEADER_STATE[HEADER_STATE[\"TRANSFER_ENCODING\"] = 3] = \"TRANSFER_ENCODING\";\n HEADER_STATE[HEADER_STATE[\"UPGRADE\"] = 4] = \"UPGRADE\";\n HEADER_STATE[HEADER_STATE[\"CONNECTION_KEEP_ALIVE\"] = 5] = \"CONNECTION_KEEP_ALIVE\";\n HEADER_STATE[HEADER_STATE[\"CONNECTION_CLOSE\"] = 6] = \"CONNECTION_CLOSE\";\n HEADER_STATE[HEADER_STATE[\"CONNECTION_UPGRADE\"] = 7] = \"CONNECTION_UPGRADE\";\n HEADER_STATE[HEADER_STATE[\"TRANSFER_ENCODING_CHUNKED\"] = 8] = \"TRANSFER_ENCODING_CHUNKED\";\n})(HEADER_STATE = exports.HEADER_STATE || (exports.HEADER_STATE = {}));\nexports.SPECIAL_HEADERS = {\n 'connection': HEADER_STATE.CONNECTION,\n 'content-length': HEADER_STATE.CONTENT_LENGTH,\n 'proxy-connection': HEADER_STATE.CONNECTION,\n 'transfer-encoding': HEADER_STATE.TRANSFER_ENCODING,\n 'upgrade': HEADER_STATE.UPGRADE,\n};\n//# sourceMappingURL=constants.js.map","module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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FCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAU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YWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8='\n","module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw=='\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.enumToMap = void 0;\nfunction enumToMap(obj) {\n const res = {};\n Object.keys(obj).forEach((key) => {\n const value = obj[key];\n if (typeof value === 'number') {\n res[key] = value;\n }\n });\n return res;\n}\nexports.enumToMap = enumToMap;\n//# sourceMappingURL=utils.js.map","'use strict'\n\nconst { kClients } = require('../core/symbols')\nconst Agent = require('../agent')\nconst {\n kAgent,\n kMockAgentSet,\n kMockAgentGet,\n kDispatches,\n kIsMockActive,\n kNetConnect,\n kGetNetConnect,\n kOptions,\n kFactory\n} = require('./mock-symbols')\nconst MockClient = require('./mock-client')\nconst MockPool = require('./mock-pool')\nconst { matchValue, buildMockOptions } = require('./mock-utils')\nconst { InvalidArgumentError, UndiciError } = require('../core/errors')\nconst Dispatcher = require('../dispatcher')\nconst Pluralizer = require('./pluralizer')\nconst PendingInterceptorsFormatter = require('./pending-interceptors-formatter')\n\nclass FakeWeakRef {\n constructor (value) {\n this.value = value\n }\n\n deref () {\n return this.value\n }\n}\n\nclass MockAgent extends Dispatcher {\n constructor (opts) {\n super(opts)\n\n this[kNetConnect] = true\n this[kIsMockActive] = true\n\n // Instantiate Agent and encapsulate\n if ((opts && opts.agent && typeof opts.agent.dispatch !== 'function')) {\n throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n }\n const agent = opts && opts.agent ? opts.agent : new Agent(opts)\n this[kAgent] = agent\n\n this[kClients] = agent[kClients]\n this[kOptions] = buildMockOptions(opts)\n }\n\n get (origin) {\n let dispatcher = this[kMockAgentGet](origin)\n\n if (!dispatcher) {\n dispatcher = this[kFactory](origin)\n this[kMockAgentSet](origin, dispatcher)\n }\n return dispatcher\n }\n\n dispatch (opts, handler) {\n // Call MockAgent.get to perform additional setup before dispatching as normal\n this.get(opts.origin)\n return this[kAgent].dispatch(opts, handler)\n }\n\n async close () {\n await this[kAgent].close()\n this[kClients].clear()\n }\n\n deactivate () {\n this[kIsMockActive] = false\n }\n\n activate () {\n this[kIsMockActive] = true\n }\n\n enableNetConnect (matcher) {\n if (typeof matcher === 'string' || typeof matcher === 'function' || matcher instanceof RegExp) {\n if (Array.isArray(this[kNetConnect])) {\n this[kNetConnect].push(matcher)\n } else {\n this[kNetConnect] = [matcher]\n }\n } else if (typeof matcher === 'undefined') {\n this[kNetConnect] = true\n } else {\n throw new InvalidArgumentError('Unsupported matcher. Must be one of String|Function|RegExp.')\n }\n }\n\n disableNetConnect () {\n this[kNetConnect] = false\n }\n\n // This is required to bypass issues caused by using global symbols - see:\n // https://github.com/nodejs/undici/issues/1447\n get isMockActive () {\n return this[kIsMockActive]\n }\n\n [kMockAgentSet] (origin, dispatcher) {\n this[kClients].set(origin, new FakeWeakRef(dispatcher))\n }\n\n [kFactory] (origin) {\n const mockOptions = Object.assign({ agent: this }, this[kOptions])\n return this[kOptions] && this[kOptions].connections === 1\n ? new MockClient(origin, mockOptions)\n : new MockPool(origin, mockOptions)\n }\n\n [kMockAgentGet] (origin) {\n // First check if we can immediately find it\n const ref = this[kClients].get(origin)\n if (ref) {\n return ref.deref()\n }\n\n // If the origin is not a string create a dummy parent pool and return to user\n if (typeof origin !== 'string') {\n const dispatcher = this[kFactory]('http://localhost:9999')\n this[kMockAgentSet](origin, dispatcher)\n return dispatcher\n }\n\n // If we match, create a pool and assign the same dispatches\n for (const [keyMatcher, nonExplicitRef] of Array.from(this[kClients])) {\n const nonExplicitDispatcher = nonExplicitRef.deref()\n if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) {\n const dispatcher = this[kFactory](origin)\n this[kMockAgentSet](origin, dispatcher)\n dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches]\n return dispatcher\n }\n }\n }\n\n [kGetNetConnect] () {\n return this[kNetConnect]\n }\n\n pendingInterceptors () {\n const mockAgentClients = this[kClients]\n\n return Array.from(mockAgentClients.entries())\n .flatMap(([origin, scope]) => scope.deref()[kDispatches].map(dispatch => ({ ...dispatch, origin })))\n .filter(({ pending }) => pending)\n }\n\n assertNoPendingInterceptors ({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) {\n const pending = this.pendingInterceptors()\n\n if (pending.length === 0) {\n return\n }\n\n const pluralizer = new Pluralizer('interceptor', 'interceptors').pluralize(pending.length)\n\n throw new UndiciError(`\n${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending:\n\n${pendingInterceptorsFormatter.format(pending)}\n`.trim())\n }\n}\n\nmodule.exports = MockAgent\n","'use strict'\n\nconst { promisify } = require('util')\nconst Client = require('../client')\nconst { buildMockDispatch } = require('./mock-utils')\nconst {\n kDispatches,\n kMockAgent,\n kClose,\n kOriginalClose,\n kOrigin,\n kOriginalDispatch,\n kConnected\n} = require('./mock-symbols')\nconst { MockInterceptor } = require('./mock-interceptor')\nconst Symbols = require('../core/symbols')\nconst { InvalidArgumentError } = require('../core/errors')\n\n/**\n * MockClient provides an API that extends the Client to influence the mockDispatches.\n */\nclass MockClient extends Client {\n constructor (origin, opts) {\n super(origin, opts)\n\n if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') {\n throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n }\n\n this[kMockAgent] = opts.agent\n this[kOrigin] = origin\n this[kDispatches] = []\n this[kConnected] = 1\n this[kOriginalDispatch] = this.dispatch\n this[kOriginalClose] = this.close.bind(this)\n\n this.dispatch = buildMockDispatch.call(this)\n this.close = this[kClose]\n }\n\n get [Symbols.kConnected] () {\n return this[kConnected]\n }\n\n /**\n * Sets up the base interceptor for mocking replies from undici.\n */\n intercept (opts) {\n return new MockInterceptor(opts, this[kDispatches])\n }\n\n async [kClose] () {\n await promisify(this[kOriginalClose])()\n this[kConnected] = 0\n this[kMockAgent][Symbols.kClients].delete(this[kOrigin])\n }\n}\n\nmodule.exports = MockClient\n","'use strict'\n\nconst { UndiciError } = require('../core/errors')\n\nclass MockNotMatchedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, MockNotMatchedError)\n this.name = 'MockNotMatchedError'\n this.message = message || 'The request does not match any registered mock dispatches'\n this.code = 'UND_MOCK_ERR_MOCK_NOT_MATCHED'\n }\n}\n\nmodule.exports = {\n MockNotMatchedError\n}\n","'use strict'\n\nconst { getResponseData, buildKey, addMockDispatch } = require('./mock-utils')\nconst {\n kDispatches,\n kDispatchKey,\n kDefaultHeaders,\n kDefaultTrailers,\n kContentLength,\n kMockDispatch\n} = require('./mock-symbols')\nconst { InvalidArgumentError } = require('../core/errors')\nconst { buildURL } = require('../core/util')\n\n/**\n * Defines the scope API for an interceptor reply\n */\nclass MockScope {\n constructor (mockDispatch) {\n this[kMockDispatch] = mockDispatch\n }\n\n /**\n * Delay a reply by a set amount in ms.\n */\n delay (waitInMs) {\n if (typeof waitInMs !== 'number' || !Number.isInteger(waitInMs) || waitInMs <= 0) {\n throw new InvalidArgumentError('waitInMs must be a valid integer > 0')\n }\n\n this[kMockDispatch].delay = waitInMs\n return this\n }\n\n /**\n * For a defined reply, never mark as consumed.\n */\n persist () {\n this[kMockDispatch].persist = true\n return this\n }\n\n /**\n * Allow one to define a reply for a set amount of matching requests.\n */\n times (repeatTimes) {\n if (typeof repeatTimes !== 'number' || !Number.isInteger(repeatTimes) || repeatTimes <= 0) {\n throw new InvalidArgumentError('repeatTimes must be a valid integer > 0')\n }\n\n this[kMockDispatch].times = repeatTimes\n return this\n }\n}\n\n/**\n * Defines an interceptor for a Mock\n */\nclass MockInterceptor {\n constructor (opts, mockDispatches) {\n if (typeof opts !== 'object') {\n throw new InvalidArgumentError('opts must be an object')\n }\n if (typeof opts.path === 'undefined') {\n throw new InvalidArgumentError('opts.path must be defined')\n }\n if (typeof opts.method === 'undefined') {\n opts.method = 'GET'\n }\n // See https://github.com/nodejs/undici/issues/1245\n // As per RFC 3986, clients are not supposed to send URI\n // fragments to servers when they retrieve a document,\n if (typeof opts.path === 'string') {\n if (opts.query) {\n opts.path = buildURL(opts.path, opts.query)\n } else {\n // Matches https://github.com/nodejs/undici/blob/main/lib/fetch/index.js#L1811\n const parsedURL = new URL(opts.path, 'data://')\n opts.path = parsedURL.pathname + parsedURL.search\n }\n }\n if (typeof opts.method === 'string') {\n opts.method = opts.method.toUpperCase()\n }\n\n this[kDispatchKey] = buildKey(opts)\n this[kDispatches] = mockDispatches\n this[kDefaultHeaders] = {}\n this[kDefaultTrailers] = {}\n this[kContentLength] = false\n }\n\n createMockScopeDispatchData (statusCode, data, responseOptions = {}) {\n const responseData = getResponseData(data)\n const contentLength = this[kContentLength] ? { 'content-length': responseData.length } : {}\n const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers }\n const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers }\n\n return { statusCode, data, headers, trailers }\n }\n\n validateReplyParameters (statusCode, data, responseOptions) {\n if (typeof statusCode === 'undefined') {\n throw new InvalidArgumentError('statusCode must be defined')\n }\n if (typeof data === 'undefined') {\n throw new InvalidArgumentError('data must be defined')\n }\n if (typeof responseOptions !== 'object') {\n throw new InvalidArgumentError('responseOptions must be an object')\n }\n }\n\n /**\n * Mock an undici request with a defined reply.\n */\n reply (replyData) {\n // Values of reply aren't available right now as they\n // can only be available when the reply callback is invoked.\n if (typeof replyData === 'function') {\n // We'll first wrap the provided callback in another function,\n // this function will properly resolve the data from the callback\n // when invoked.\n const wrappedDefaultsCallback = (opts) => {\n // Our reply options callback contains the parameter for statusCode, data and options.\n const resolvedData = replyData(opts)\n\n // Check if it is in the right format\n if (typeof resolvedData !== 'object') {\n throw new InvalidArgumentError('reply options callback must return an object')\n }\n\n const { statusCode, data = '', responseOptions = {} } = resolvedData\n this.validateReplyParameters(statusCode, data, responseOptions)\n // Since the values can be obtained immediately we return them\n // from this higher order function that will be resolved later.\n return {\n ...this.createMockScopeDispatchData(statusCode, data, responseOptions)\n }\n }\n\n // Add usual dispatch data, but this time set the data parameter to function that will eventually provide data.\n const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback)\n return new MockScope(newMockDispatch)\n }\n\n // We can have either one or three parameters, if we get here,\n // we should have 1-3 parameters. So we spread the arguments of\n // this function to obtain the parameters, since replyData will always\n // just be the statusCode.\n const [statusCode, data = '', responseOptions = {}] = [...arguments]\n this.validateReplyParameters(statusCode, data, responseOptions)\n\n // Send in-already provided data like usual\n const dispatchData = this.createMockScopeDispatchData(statusCode, data, responseOptions)\n const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData)\n return new MockScope(newMockDispatch)\n }\n\n /**\n * Mock an undici request with a defined error.\n */\n replyWithError (error) {\n if (typeof error === 'undefined') {\n throw new InvalidArgumentError('error must be defined')\n }\n\n const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error })\n return new MockScope(newMockDispatch)\n }\n\n /**\n * Set default reply headers on the interceptor for subsequent replies\n */\n defaultReplyHeaders (headers) {\n if (typeof headers === 'undefined') {\n throw new InvalidArgumentError('headers must be defined')\n }\n\n this[kDefaultHeaders] = headers\n return this\n }\n\n /**\n * Set default reply trailers on the interceptor for subsequent replies\n */\n defaultReplyTrailers (trailers) {\n if (typeof trailers === 'undefined') {\n throw new InvalidArgumentError('trailers must be defined')\n }\n\n this[kDefaultTrailers] = trailers\n return this\n }\n\n /**\n * Set reply content length header for replies on the interceptor\n */\n replyContentLength () {\n this[kContentLength] = true\n return this\n }\n}\n\nmodule.exports.MockInterceptor = MockInterceptor\nmodule.exports.MockScope = MockScope\n","'use strict'\n\nconst { promisify } = require('util')\nconst Pool = require('../pool')\nconst { buildMockDispatch } = require('./mock-utils')\nconst {\n kDispatches,\n kMockAgent,\n kClose,\n kOriginalClose,\n kOrigin,\n kOriginalDispatch,\n kConnected\n} = require('./mock-symbols')\nconst { MockInterceptor } = require('./mock-interceptor')\nconst Symbols = require('../core/symbols')\nconst { InvalidArgumentError } = require('../core/errors')\n\n/**\n * MockPool provides an API that extends the Pool to influence the mockDispatches.\n */\nclass MockPool extends Pool {\n constructor (origin, opts) {\n super(origin, opts)\n\n if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') {\n throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n }\n\n this[kMockAgent] = opts.agent\n this[kOrigin] = origin\n this[kDispatches] = []\n this[kConnected] = 1\n this[kOriginalDispatch] = this.dispatch\n this[kOriginalClose] = this.close.bind(this)\n\n this.dispatch = buildMockDispatch.call(this)\n this.close = this[kClose]\n }\n\n get [Symbols.kConnected] () {\n return this[kConnected]\n }\n\n /**\n * Sets up the base interceptor for mocking replies from undici.\n */\n intercept (opts) {\n return new MockInterceptor(opts, this[kDispatches])\n }\n\n async [kClose] () {\n await promisify(this[kOriginalClose])()\n this[kConnected] = 0\n this[kMockAgent][Symbols.kClients].delete(this[kOrigin])\n }\n}\n\nmodule.exports = MockPool\n","'use strict'\n\nmodule.exports = {\n kAgent: Symbol('agent'),\n kOptions: Symbol('options'),\n kFactory: Symbol('factory'),\n kDispatches: Symbol('dispatches'),\n kDispatchKey: Symbol('dispatch key'),\n kDefaultHeaders: Symbol('default headers'),\n kDefaultTrailers: Symbol('default trailers'),\n kContentLength: Symbol('content length'),\n kMockAgent: Symbol('mock agent'),\n kMockAgentSet: Symbol('mock agent set'),\n kMockAgentGet: Symbol('mock agent get'),\n kMockDispatch: Symbol('mock dispatch'),\n kClose: Symbol('close'),\n kOriginalClose: Symbol('original agent close'),\n kOrigin: Symbol('origin'),\n kIsMockActive: Symbol('is mock active'),\n kNetConnect: Symbol('net connect'),\n kGetNetConnect: Symbol('get net connect'),\n kConnected: Symbol('connected')\n}\n","'use strict'\n\nconst { MockNotMatchedError } = require('./mock-errors')\nconst {\n kDispatches,\n kMockAgent,\n kOriginalDispatch,\n kOrigin,\n kGetNetConnect\n} = require('./mock-symbols')\nconst { buildURL, nop } = require('../core/util')\nconst { STATUS_CODES } = require('http')\nconst {\n types: {\n isPromise\n }\n} = require('util')\n\nfunction matchValue (match, value) {\n if (typeof match === 'string') {\n return match === value\n }\n if (match instanceof RegExp) {\n return match.test(value)\n }\n if (typeof match === 'function') {\n return match(value) === true\n }\n return false\n}\n\nfunction lowerCaseEntries (headers) {\n return Object.fromEntries(\n Object.entries(headers).map(([headerName, headerValue]) => {\n return [headerName.toLocaleLowerCase(), headerValue]\n })\n )\n}\n\n/**\n * @param {import('../../index').Headers|string[]|Record} headers\n * @param {string} key\n */\nfunction getHeaderByName (headers, key) {\n if (Array.isArray(headers)) {\n for (let i = 0; i < headers.length; i += 2) {\n if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) {\n return headers[i + 1]\n }\n }\n\n return undefined\n } else if (typeof headers.get === 'function') {\n return headers.get(key)\n } else {\n return lowerCaseEntries(headers)[key.toLocaleLowerCase()]\n }\n}\n\n/** @param {string[]} headers */\nfunction buildHeadersFromArray (headers) { // fetch HeadersList\n const clone = headers.slice()\n const entries = []\n for (let index = 0; index < clone.length; index += 2) {\n entries.push([clone[index], clone[index + 1]])\n }\n return Object.fromEntries(entries)\n}\n\nfunction matchHeaders (mockDispatch, headers) {\n if (typeof mockDispatch.headers === 'function') {\n if (Array.isArray(headers)) { // fetch HeadersList\n headers = buildHeadersFromArray(headers)\n }\n return mockDispatch.headers(headers ? lowerCaseEntries(headers) : {})\n }\n if (typeof mockDispatch.headers === 'undefined') {\n return true\n }\n if (typeof headers !== 'object' || typeof mockDispatch.headers !== 'object') {\n return false\n }\n\n for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch.headers)) {\n const headerValue = getHeaderByName(headers, matchHeaderName)\n\n if (!matchValue(matchHeaderValue, headerValue)) {\n return false\n }\n }\n return true\n}\n\nfunction safeUrl (path) {\n if (typeof path !== 'string') {\n return path\n }\n\n const pathSegments = path.split('?')\n\n if (pathSegments.length !== 2) {\n return path\n }\n\n const qp = new URLSearchParams(pathSegments.pop())\n qp.sort()\n return [...pathSegments, qp.toString()].join('?')\n}\n\nfunction matchKey (mockDispatch, { path, method, body, headers }) {\n const pathMatch = matchValue(mockDispatch.path, path)\n const methodMatch = matchValue(mockDispatch.method, method)\n const bodyMatch = typeof mockDispatch.body !== 'undefined' ? matchValue(mockDispatch.body, body) : true\n const headersMatch = matchHeaders(mockDispatch, headers)\n return pathMatch && methodMatch && bodyMatch && headersMatch\n}\n\nfunction getResponseData (data) {\n if (Buffer.isBuffer(data)) {\n return data\n } else if (typeof data === 'object') {\n return JSON.stringify(data)\n } else {\n return data.toString()\n }\n}\n\nfunction getMockDispatch (mockDispatches, key) {\n const basePath = key.query ? buildURL(key.path, key.query) : key.path\n const resolvedPath = typeof basePath === 'string' ? safeUrl(basePath) : basePath\n\n // Match path\n let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path }) => matchValue(safeUrl(path), resolvedPath))\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`)\n }\n\n // Match method\n matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method))\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}'`)\n }\n\n // Match body\n matchedMockDispatches = matchedMockDispatches.filter(({ body }) => typeof body !== 'undefined' ? matchValue(body, key.body) : true)\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}'`)\n }\n\n // Match headers\n matchedMockDispatches = matchedMockDispatches.filter((mockDispatch) => matchHeaders(mockDispatch, key.headers))\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for headers '${typeof key.headers === 'object' ? JSON.stringify(key.headers) : key.headers}'`)\n }\n\n return matchedMockDispatches[0]\n}\n\nfunction addMockDispatch (mockDispatches, key, data) {\n const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false }\n const replyData = typeof data === 'function' ? { callback: data } : { ...data }\n const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } }\n mockDispatches.push(newMockDispatch)\n return newMockDispatch\n}\n\nfunction deleteMockDispatch (mockDispatches, key) {\n const index = mockDispatches.findIndex(dispatch => {\n if (!dispatch.consumed) {\n return false\n }\n return matchKey(dispatch, key)\n })\n if (index !== -1) {\n mockDispatches.splice(index, 1)\n }\n}\n\nfunction buildKey (opts) {\n const { path, method, body, headers, query } = opts\n return {\n path,\n method,\n body,\n headers,\n query\n }\n}\n\nfunction generateKeyValues (data) {\n return Object.entries(data).reduce((keyValuePairs, [key, value]) => [\n ...keyValuePairs,\n Buffer.from(`${key}`),\n Array.isArray(value) ? value.map(x => Buffer.from(`${x}`)) : Buffer.from(`${value}`)\n ], [])\n}\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Status\n * @param {number} statusCode\n */\nfunction getStatusText (statusCode) {\n return STATUS_CODES[statusCode] || 'unknown'\n}\n\nasync function getResponse (body) {\n const buffers = []\n for await (const data of body) {\n buffers.push(data)\n }\n return Buffer.concat(buffers).toString('utf8')\n}\n\n/**\n * Mock dispatch function used to simulate undici dispatches\n */\nfunction mockDispatch (opts, handler) {\n // Get mock dispatch from built key\n const key = buildKey(opts)\n const mockDispatch = getMockDispatch(this[kDispatches], key)\n\n mockDispatch.timesInvoked++\n\n // Here's where we resolve a callback if a callback is present for the dispatch data.\n if (mockDispatch.data.callback) {\n mockDispatch.data = { ...mockDispatch.data, ...mockDispatch.data.callback(opts) }\n }\n\n // Parse mockDispatch data\n const { data: { statusCode, data, headers, trailers, error }, delay, persist } = mockDispatch\n const { timesInvoked, times } = mockDispatch\n\n // If it's used up and not persistent, mark as consumed\n mockDispatch.consumed = !persist && timesInvoked >= times\n mockDispatch.pending = timesInvoked < times\n\n // If specified, trigger dispatch error\n if (error !== null) {\n deleteMockDispatch(this[kDispatches], key)\n handler.onError(error)\n return true\n }\n\n // Handle the request with a delay if necessary\n if (typeof delay === 'number' && delay > 0) {\n setTimeout(() => {\n handleReply(this[kDispatches])\n }, delay)\n } else {\n handleReply(this[kDispatches])\n }\n\n function handleReply (mockDispatches, _data = data) {\n // fetch's HeadersList is a 1D string array\n const optsHeaders = Array.isArray(opts.headers)\n ? buildHeadersFromArray(opts.headers)\n : opts.headers\n const body = typeof _data === 'function'\n ? _data({ ...opts, headers: optsHeaders })\n : _data\n\n // util.types.isPromise is likely needed for jest.\n if (isPromise(body)) {\n // If handleReply is asynchronous, throwing an error\n // in the callback will reject the promise, rather than\n // synchronously throw the error, which breaks some tests.\n // Rather, we wait for the callback to resolve if it is a\n // promise, and then re-run handleReply with the new body.\n body.then((newData) => handleReply(mockDispatches, newData))\n return\n }\n\n const responseData = getResponseData(body)\n const responseHeaders = generateKeyValues(headers)\n const responseTrailers = generateKeyValues(trailers)\n\n handler.abort = nop\n handler.onHeaders(statusCode, responseHeaders, resume, getStatusText(statusCode))\n handler.onData(Buffer.from(responseData))\n handler.onComplete(responseTrailers)\n deleteMockDispatch(mockDispatches, key)\n }\n\n function resume () {}\n\n return true\n}\n\nfunction buildMockDispatch () {\n const agent = this[kMockAgent]\n const origin = this[kOrigin]\n const originalDispatch = this[kOriginalDispatch]\n\n return function dispatch (opts, handler) {\n if (agent.isMockActive) {\n try {\n mockDispatch.call(this, opts, handler)\n } catch (error) {\n if (error instanceof MockNotMatchedError) {\n const netConnect = agent[kGetNetConnect]()\n if (netConnect === false) {\n throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`)\n }\n if (checkNetConnect(netConnect, origin)) {\n originalDispatch.call(this, opts, handler)\n } else {\n throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`)\n }\n } else {\n throw error\n }\n }\n } else {\n originalDispatch.call(this, opts, handler)\n }\n }\n}\n\nfunction checkNetConnect (netConnect, origin) {\n const url = new URL(origin)\n if (netConnect === true) {\n return true\n } else if (Array.isArray(netConnect) && netConnect.some((matcher) => matchValue(matcher, url.host))) {\n return true\n }\n return false\n}\n\nfunction buildMockOptions (opts) {\n if (opts) {\n const { agent, ...mockOptions } = opts\n return mockOptions\n }\n}\n\nmodule.exports = {\n getResponseData,\n getMockDispatch,\n addMockDispatch,\n deleteMockDispatch,\n buildKey,\n generateKeyValues,\n matchValue,\n getResponse,\n getStatusText,\n mockDispatch,\n buildMockDispatch,\n checkNetConnect,\n buildMockOptions,\n getHeaderByName\n}\n","'use strict'\n\nconst { Transform } = require('stream')\nconst { Console } = require('console')\n\n/**\n * Gets the output of `console.table(…)` as a string.\n */\nmodule.exports = class PendingInterceptorsFormatter {\n constructor ({ disableColors } = {}) {\n this.transform = new Transform({\n transform (chunk, _enc, cb) {\n cb(null, chunk)\n }\n })\n\n this.logger = new Console({\n stdout: this.transform,\n inspectOptions: {\n colors: !disableColors && !process.env.CI\n }\n })\n }\n\n format (pendingInterceptors) {\n const withPrettyHeaders = pendingInterceptors.map(\n ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({\n Method: method,\n Origin: origin,\n Path: path,\n 'Status code': statusCode,\n Persistent: persist ? '✅' : '❌',\n Invocations: timesInvoked,\n Remaining: persist ? Infinity : times - timesInvoked\n }))\n\n this.logger.table(withPrettyHeaders)\n return this.transform.read().toString()\n }\n}\n","'use strict'\n\nconst singulars = {\n pronoun: 'it',\n is: 'is',\n was: 'was',\n this: 'this'\n}\n\nconst plurals = {\n pronoun: 'they',\n is: 'are',\n was: 'were',\n this: 'these'\n}\n\nmodule.exports = class Pluralizer {\n constructor (singular, plural) {\n this.singular = singular\n this.plural = plural\n }\n\n pluralize (count) {\n const one = count === 1\n const keys = one ? singulars : plurals\n const noun = one ? this.singular : this.plural\n return { ...keys, count, noun }\n }\n}\n","/* eslint-disable */\n\n'use strict'\n\n// Extracted from node/lib/internal/fixed_queue.js\n\n// Currently optimal queue size, tested on V8 6.0 - 6.6. Must be power of two.\nconst kSize = 2048;\nconst kMask = kSize - 1;\n\n// The FixedQueue is implemented as a singly-linked list of fixed-size\n// circular buffers. It looks something like this:\n//\n// head tail\n// | |\n// v v\n// +-----------+ <-----\\ +-----------+ <------\\ +-----------+\n// | [null] | \\----- | next | \\------- | next |\n// +-----------+ +-----------+ +-----------+\n// | item | <-- bottom | item | <-- bottom | [empty] |\n// | item | | item | | [empty] |\n// | item | | item | | [empty] |\n// | item | | item | | [empty] |\n// | item | | item | bottom --> | item |\n// | item | | item | | item |\n// | ... | | ... | | ... |\n// | item | | item | | item |\n// | item | | item | | item |\n// | [empty] | <-- top | item | | item |\n// | [empty] | | item | | item |\n// | [empty] | | [empty] | <-- top top --> | [empty] |\n// +-----------+ +-----------+ +-----------+\n//\n// Or, if there is only one circular buffer, it looks something\n// like either of these:\n//\n// head tail head tail\n// | | | |\n// v v v v\n// +-----------+ +-----------+\n// | [null] | | [null] |\n// +-----------+ +-----------+\n// | [empty] | | item |\n// | [empty] | | item |\n// | item | <-- bottom top --> | [empty] |\n// | item | | [empty] |\n// | [empty] | <-- top bottom --> | item |\n// | [empty] | | item |\n// +-----------+ +-----------+\n//\n// Adding a value means moving `top` forward by one, removing means\n// moving `bottom` forward by one. After reaching the end, the queue\n// wraps around.\n//\n// When `top === bottom` the current queue is empty and when\n// `top + 1 === bottom` it's full. This wastes a single space of storage\n// but allows much quicker checks.\n\nclass FixedCircularBuffer {\n constructor() {\n this.bottom = 0;\n this.top = 0;\n this.list = new Array(kSize);\n this.next = null;\n }\n\n isEmpty() {\n return this.top === this.bottom;\n }\n\n isFull() {\n return ((this.top + 1) & kMask) === this.bottom;\n }\n\n push(data) {\n this.list[this.top] = data;\n this.top = (this.top + 1) & kMask;\n }\n\n shift() {\n const nextItem = this.list[this.bottom];\n if (nextItem === undefined)\n return null;\n this.list[this.bottom] = undefined;\n this.bottom = (this.bottom + 1) & kMask;\n return nextItem;\n }\n}\n\nmodule.exports = class FixedQueue {\n constructor() {\n this.head = this.tail = new FixedCircularBuffer();\n }\n\n isEmpty() {\n return this.head.isEmpty();\n }\n\n push(data) {\n if (this.head.isFull()) {\n // Head is full: Creates a new queue, sets the old queue's `.next` to it,\n // and sets it as the new main queue.\n this.head = this.head.next = new FixedCircularBuffer();\n }\n this.head.push(data);\n }\n\n shift() {\n const tail = this.tail;\n const next = tail.shift();\n if (tail.isEmpty() && tail.next !== null) {\n // If there is another queue, it forms the new tail.\n this.tail = tail.next;\n }\n return next;\n }\n};\n","'use strict'\n\nconst DispatcherBase = require('./dispatcher-base')\nconst FixedQueue = require('./node/fixed-queue')\nconst { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require('./core/symbols')\nconst PoolStats = require('./pool-stats')\n\nconst kClients = Symbol('clients')\nconst kNeedDrain = Symbol('needDrain')\nconst kQueue = Symbol('queue')\nconst kClosedResolve = Symbol('closed resolve')\nconst kOnDrain = Symbol('onDrain')\nconst kOnConnect = Symbol('onConnect')\nconst kOnDisconnect = Symbol('onDisconnect')\nconst kOnConnectionError = Symbol('onConnectionError')\nconst kGetDispatcher = Symbol('get dispatcher')\nconst kAddClient = Symbol('add client')\nconst kRemoveClient = Symbol('remove client')\nconst kStats = Symbol('stats')\n\nclass PoolBase extends DispatcherBase {\n constructor () {\n super()\n\n this[kQueue] = new FixedQueue()\n this[kClients] = []\n this[kQueued] = 0\n\n const pool = this\n\n this[kOnDrain] = function onDrain (origin, targets) {\n const queue = pool[kQueue]\n\n let needDrain = false\n\n while (!needDrain) {\n const item = queue.shift()\n if (!item) {\n break\n }\n pool[kQueued]--\n needDrain = !this.dispatch(item.opts, item.handler)\n }\n\n this[kNeedDrain] = needDrain\n\n if (!this[kNeedDrain] && pool[kNeedDrain]) {\n pool[kNeedDrain] = false\n pool.emit('drain', origin, [pool, ...targets])\n }\n\n if (pool[kClosedResolve] && queue.isEmpty()) {\n Promise\n .all(pool[kClients].map(c => c.close()))\n .then(pool[kClosedResolve])\n }\n }\n\n this[kOnConnect] = (origin, targets) => {\n pool.emit('connect', origin, [pool, ...targets])\n }\n\n this[kOnDisconnect] = (origin, targets, err) => {\n pool.emit('disconnect', origin, [pool, ...targets], err)\n }\n\n this[kOnConnectionError] = (origin, targets, err) => {\n pool.emit('connectionError', origin, [pool, ...targets], err)\n }\n\n this[kStats] = new PoolStats(this)\n }\n\n get [kBusy] () {\n return this[kNeedDrain]\n }\n\n get [kConnected] () {\n return this[kClients].filter(client => client[kConnected]).length\n }\n\n get [kFree] () {\n return this[kClients].filter(client => client[kConnected] && !client[kNeedDrain]).length\n }\n\n get [kPending] () {\n let ret = this[kQueued]\n for (const { [kPending]: pending } of this[kClients]) {\n ret += pending\n }\n return ret\n }\n\n get [kRunning] () {\n let ret = 0\n for (const { [kRunning]: running } of this[kClients]) {\n ret += running\n }\n return ret\n }\n\n get [kSize] () {\n let ret = this[kQueued]\n for (const { [kSize]: size } of this[kClients]) {\n ret += size\n }\n return ret\n }\n\n get stats () {\n return this[kStats]\n }\n\n async [kClose] () {\n if (this[kQueue].isEmpty()) {\n return Promise.all(this[kClients].map(c => c.close()))\n } else {\n return new Promise((resolve) => {\n this[kClosedResolve] = resolve\n })\n }\n }\n\n async [kDestroy] (err) {\n while (true) {\n const item = this[kQueue].shift()\n if (!item) {\n break\n }\n item.handler.onError(err)\n }\n\n return Promise.all(this[kClients].map(c => c.destroy(err)))\n }\n\n [kDispatch] (opts, handler) {\n const dispatcher = this[kGetDispatcher]()\n\n if (!dispatcher) {\n this[kNeedDrain] = true\n this[kQueue].push({ opts, handler })\n this[kQueued]++\n } else if (!dispatcher.dispatch(opts, handler)) {\n dispatcher[kNeedDrain] = true\n this[kNeedDrain] = !this[kGetDispatcher]()\n }\n\n return !this[kNeedDrain]\n }\n\n [kAddClient] (client) {\n client\n .on('drain', this[kOnDrain])\n .on('connect', this[kOnConnect])\n .on('disconnect', this[kOnDisconnect])\n .on('connectionError', this[kOnConnectionError])\n\n this[kClients].push(client)\n\n if (this[kNeedDrain]) {\n process.nextTick(() => {\n if (this[kNeedDrain]) {\n this[kOnDrain](client[kUrl], [this, client])\n }\n })\n }\n\n return this\n }\n\n [kRemoveClient] (client) {\n client.close(() => {\n const idx = this[kClients].indexOf(client)\n if (idx !== -1) {\n this[kClients].splice(idx, 1)\n }\n })\n\n this[kNeedDrain] = this[kClients].some(dispatcher => (\n !dispatcher[kNeedDrain] &&\n dispatcher.closed !== true &&\n dispatcher.destroyed !== true\n ))\n }\n}\n\nmodule.exports = {\n PoolBase,\n kClients,\n kNeedDrain,\n kAddClient,\n kRemoveClient,\n kGetDispatcher\n}\n","const { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require('./core/symbols')\nconst kPool = Symbol('pool')\n\nclass PoolStats {\n constructor (pool) {\n this[kPool] = pool\n }\n\n get connected () {\n return this[kPool][kConnected]\n }\n\n get free () {\n return this[kPool][kFree]\n }\n\n get pending () {\n return this[kPool][kPending]\n }\n\n get queued () {\n return this[kPool][kQueued]\n }\n\n get running () {\n return this[kPool][kRunning]\n }\n\n get size () {\n return this[kPool][kSize]\n }\n}\n\nmodule.exports = PoolStats\n","'use strict'\n\nconst {\n PoolBase,\n kClients,\n kNeedDrain,\n kAddClient,\n kGetDispatcher\n} = require('./pool-base')\nconst Client = require('./client')\nconst {\n InvalidArgumentError\n} = require('./core/errors')\nconst util = require('./core/util')\nconst { kUrl, kInterceptors } = require('./core/symbols')\nconst buildConnector = require('./core/connect')\n\nconst kOptions = Symbol('options')\nconst kConnections = Symbol('connections')\nconst kFactory = Symbol('factory')\n\nfunction defaultFactory (origin, opts) {\n return new Client(origin, opts)\n}\n\nclass Pool extends PoolBase {\n constructor (origin, {\n connections,\n factory = defaultFactory,\n connect,\n connectTimeout,\n tls,\n maxCachedSessions,\n socketPath,\n autoSelectFamily,\n autoSelectFamilyAttemptTimeout,\n allowH2,\n ...options\n } = {}) {\n super()\n\n if (connections != null && (!Number.isFinite(connections) || connections < 0)) {\n throw new InvalidArgumentError('invalid connections')\n }\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('factory must be a function.')\n }\n\n if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n throw new InvalidArgumentError('connect must be a function or an object')\n }\n\n if (typeof connect !== 'function') {\n connect = buildConnector({\n ...tls,\n maxCachedSessions,\n allowH2,\n socketPath,\n timeout: connectTimeout,\n ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),\n ...connect\n })\n }\n\n this[kInterceptors] = options.interceptors && options.interceptors.Pool && Array.isArray(options.interceptors.Pool)\n ? options.interceptors.Pool\n : []\n this[kConnections] = connections || null\n this[kUrl] = util.parseOrigin(origin)\n this[kOptions] = { ...util.deepClone(options), connect, allowH2 }\n this[kOptions].interceptors = options.interceptors\n ? { ...options.interceptors }\n : undefined\n this[kFactory] = factory\n }\n\n [kGetDispatcher] () {\n let dispatcher = this[kClients].find(dispatcher => !dispatcher[kNeedDrain])\n\n if (dispatcher) {\n return dispatcher\n }\n\n if (!this[kConnections] || this[kClients].length < this[kConnections]) {\n dispatcher = this[kFactory](this[kUrl], this[kOptions])\n this[kAddClient](dispatcher)\n }\n\n return dispatcher\n }\n}\n\nmodule.exports = Pool\n","'use strict'\n\nconst { kProxy, kClose, kDestroy, kInterceptors } = require('./core/symbols')\nconst { URL } = require('url')\nconst Agent = require('./agent')\nconst Pool = require('./pool')\nconst DispatcherBase = require('./dispatcher-base')\nconst { InvalidArgumentError, RequestAbortedError } = require('./core/errors')\nconst buildConnector = require('./core/connect')\n\nconst kAgent = Symbol('proxy agent')\nconst kClient = Symbol('proxy client')\nconst kProxyHeaders = Symbol('proxy headers')\nconst kRequestTls = Symbol('request tls settings')\nconst kProxyTls = Symbol('proxy tls settings')\nconst kConnectEndpoint = Symbol('connect endpoint function')\n\nfunction defaultProtocolPort (protocol) {\n return protocol === 'https:' ? 443 : 80\n}\n\nfunction buildProxyOptions (opts) {\n if (typeof opts === 'string') {\n opts = { uri: opts }\n }\n\n if (!opts || !opts.uri) {\n throw new InvalidArgumentError('Proxy opts.uri is mandatory')\n }\n\n return {\n uri: opts.uri,\n protocol: opts.protocol || 'https'\n }\n}\n\nfunction defaultFactory (origin, opts) {\n return new Pool(origin, opts)\n}\n\nclass ProxyAgent extends DispatcherBase {\n constructor (opts) {\n super(opts)\n this[kProxy] = buildProxyOptions(opts)\n this[kAgent] = new Agent(opts)\n this[kInterceptors] = opts.interceptors && opts.interceptors.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent)\n ? opts.interceptors.ProxyAgent\n : []\n\n if (typeof opts === 'string') {\n opts = { uri: opts }\n }\n\n if (!opts || !opts.uri) {\n throw new InvalidArgumentError('Proxy opts.uri is mandatory')\n }\n\n const { clientFactory = defaultFactory } = opts\n\n if (typeof clientFactory !== 'function') {\n throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.')\n }\n\n this[kRequestTls] = opts.requestTls\n this[kProxyTls] = opts.proxyTls\n this[kProxyHeaders] = opts.headers || {}\n\n const resolvedUrl = new URL(opts.uri)\n const { origin, port, host, username, password } = resolvedUrl\n\n if (opts.auth && opts.token) {\n throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token')\n } else if (opts.auth) {\n /* @deprecated in favour of opts.token */\n this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}`\n } else if (opts.token) {\n this[kProxyHeaders]['proxy-authorization'] = opts.token\n } else if (username && password) {\n this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString('base64')}`\n }\n\n const connect = buildConnector({ ...opts.proxyTls })\n this[kConnectEndpoint] = buildConnector({ ...opts.requestTls })\n this[kClient] = clientFactory(resolvedUrl, { connect })\n this[kAgent] = new Agent({\n ...opts,\n connect: async (opts, callback) => {\n let requestedHost = opts.host\n if (!opts.port) {\n requestedHost += `:${defaultProtocolPort(opts.protocol)}`\n }\n try {\n const { socket, statusCode } = await this[kClient].connect({\n origin,\n port,\n path: requestedHost,\n signal: opts.signal,\n headers: {\n ...this[kProxyHeaders],\n host\n }\n })\n if (statusCode !== 200) {\n socket.on('error', () => {}).destroy()\n callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`))\n }\n if (opts.protocol !== 'https:') {\n callback(null, socket)\n return\n }\n let servername\n if (this[kRequestTls]) {\n servername = this[kRequestTls].servername\n } else {\n servername = opts.servername\n }\n this[kConnectEndpoint]({ ...opts, servername, httpSocket: socket }, callback)\n } catch (err) {\n callback(err)\n }\n }\n })\n }\n\n dispatch (opts, handler) {\n const { host } = new URL(opts.origin)\n const headers = buildHeaders(opts.headers)\n throwIfProxyAuthIsSent(headers)\n return this[kAgent].dispatch(\n {\n ...opts,\n headers: {\n ...headers,\n host\n }\n },\n handler\n )\n }\n\n async [kClose] () {\n await this[kAgent].close()\n await this[kClient].close()\n }\n\n async [kDestroy] () {\n await this[kAgent].destroy()\n await this[kClient].destroy()\n }\n}\n\n/**\n * @param {string[] | Record} headers\n * @returns {Record}\n */\nfunction buildHeaders (headers) {\n // When using undici.fetch, the headers list is stored\n // as an array.\n if (Array.isArray(headers)) {\n /** @type {Record} */\n const headersPair = {}\n\n for (let i = 0; i < headers.length; i += 2) {\n headersPair[headers[i]] = headers[i + 1]\n }\n\n return headersPair\n }\n\n return headers\n}\n\n/**\n * @param {Record} headers\n *\n * Previous versions of ProxyAgent suggests the Proxy-Authorization in request headers\n * Nevertheless, it was changed and to avoid a security vulnerability by end users\n * this check was created.\n * It should be removed in the next major version for performance reasons\n */\nfunction throwIfProxyAuthIsSent (headers) {\n const existProxyAuth = headers && Object.keys(headers)\n .find((key) => key.toLowerCase() === 'proxy-authorization')\n if (existProxyAuth) {\n throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor')\n }\n}\n\nmodule.exports = ProxyAgent\n","'use strict'\n\nlet fastNow = Date.now()\nlet fastNowTimeout\n\nconst fastTimers = []\n\nfunction onTimeout () {\n fastNow = Date.now()\n\n let len = fastTimers.length\n let idx = 0\n while (idx < len) {\n const timer = fastTimers[idx]\n\n if (timer.state === 0) {\n timer.state = fastNow + timer.delay\n } else if (timer.state > 0 && fastNow >= timer.state) {\n timer.state = -1\n timer.callback(timer.opaque)\n }\n\n if (timer.state === -1) {\n timer.state = -2\n if (idx !== len - 1) {\n fastTimers[idx] = fastTimers.pop()\n } else {\n fastTimers.pop()\n }\n len -= 1\n } else {\n idx += 1\n }\n }\n\n if (fastTimers.length > 0) {\n refreshTimeout()\n }\n}\n\nfunction refreshTimeout () {\n if (fastNowTimeout && fastNowTimeout.refresh) {\n fastNowTimeout.refresh()\n } else {\n clearTimeout(fastNowTimeout)\n fastNowTimeout = setTimeout(onTimeout, 1e3)\n if (fastNowTimeout.unref) {\n fastNowTimeout.unref()\n }\n }\n}\n\nclass Timeout {\n constructor (callback, delay, opaque) {\n this.callback = callback\n this.delay = delay\n this.opaque = opaque\n\n // -2 not in timer list\n // -1 in timer list but inactive\n // 0 in timer list waiting for time\n // > 0 in timer list waiting for time to expire\n this.state = -2\n\n this.refresh()\n }\n\n refresh () {\n if (this.state === -2) {\n fastTimers.push(this)\n if (!fastNowTimeout || fastTimers.length === 1) {\n refreshTimeout()\n }\n }\n\n this.state = 0\n }\n\n clear () {\n this.state = -1\n }\n}\n\nmodule.exports = {\n setTimeout (callback, delay, opaque) {\n return delay < 1e3\n ? setTimeout(callback, delay, opaque)\n : new Timeout(callback, delay, opaque)\n },\n clearTimeout (timeout) {\n if (timeout instanceof Timeout) {\n timeout.clear()\n } else {\n clearTimeout(timeout)\n }\n }\n}\n","'use strict'\n\nconst diagnosticsChannel = require('diagnostics_channel')\nconst { uid, states } = require('./constants')\nconst {\n kReadyState,\n kSentClose,\n kByteParser,\n kReceivedClose\n} = require('./symbols')\nconst { fireEvent, failWebsocketConnection } = require('./util')\nconst { CloseEvent } = require('./events')\nconst { makeRequest } = require('../fetch/request')\nconst { fetching } = require('../fetch/index')\nconst { Headers } = require('../fetch/headers')\nconst { getGlobalDispatcher } = require('../global')\nconst { kHeadersList } = require('../core/symbols')\n\nconst channels = {}\nchannels.open = diagnosticsChannel.channel('undici:websocket:open')\nchannels.close = diagnosticsChannel.channel('undici:websocket:close')\nchannels.socketError = diagnosticsChannel.channel('undici:websocket:socket_error')\n\n/** @type {import('crypto')} */\nlet crypto\ntry {\n crypto = require('crypto')\n} catch {\n\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#concept-websocket-establish\n * @param {URL} url\n * @param {string|string[]} protocols\n * @param {import('./websocket').WebSocket} ws\n * @param {(response: any) => void} onEstablish\n * @param {Partial} options\n */\nfunction establishWebSocketConnection (url, protocols, ws, onEstablish, options) {\n // 1. Let requestURL be a copy of url, with its scheme set to \"http\", if url’s\n // scheme is \"ws\", and to \"https\" otherwise.\n const requestURL = url\n\n requestURL.protocol = url.protocol === 'ws:' ? 'http:' : 'https:'\n\n // 2. Let request be a new request, whose URL is requestURL, client is client,\n // service-workers mode is \"none\", referrer is \"no-referrer\", mode is\n // \"websocket\", credentials mode is \"include\", cache mode is \"no-store\" ,\n // and redirect mode is \"error\".\n const request = makeRequest({\n urlList: [requestURL],\n serviceWorkers: 'none',\n referrer: 'no-referrer',\n mode: 'websocket',\n credentials: 'include',\n cache: 'no-store',\n redirect: 'error'\n })\n\n // Note: undici extension, allow setting custom headers.\n if (options.headers) {\n const headersList = new Headers(options.headers)[kHeadersList]\n\n request.headersList = headersList\n }\n\n // 3. Append (`Upgrade`, `websocket`) to request’s header list.\n // 4. Append (`Connection`, `Upgrade`) to request’s header list.\n // Note: both of these are handled by undici currently.\n // https://github.com/nodejs/undici/blob/68c269c4144c446f3f1220951338daef4a6b5ec4/lib/client.js#L1397\n\n // 5. Let keyValue be a nonce consisting of a randomly selected\n // 16-byte value that has been forgiving-base64-encoded and\n // isomorphic encoded.\n const keyValue = crypto.randomBytes(16).toString('base64')\n\n // 6. Append (`Sec-WebSocket-Key`, keyValue) to request’s\n // header list.\n request.headersList.append('sec-websocket-key', keyValue)\n\n // 7. Append (`Sec-WebSocket-Version`, `13`) to request’s\n // header list.\n request.headersList.append('sec-websocket-version', '13')\n\n // 8. For each protocol in protocols, combine\n // (`Sec-WebSocket-Protocol`, protocol) in request’s header\n // list.\n for (const protocol of protocols) {\n request.headersList.append('sec-websocket-protocol', protocol)\n }\n\n // 9. Let permessageDeflate be a user-agent defined\n // \"permessage-deflate\" extension header value.\n // https://github.com/mozilla/gecko-dev/blob/ce78234f5e653a5d3916813ff990f053510227bc/netwerk/protocol/websocket/WebSocketChannel.cpp#L2673\n // TODO: enable once permessage-deflate is supported\n const permessageDeflate = '' // 'permessage-deflate; 15'\n\n // 10. Append (`Sec-WebSocket-Extensions`, permessageDeflate) to\n // request’s header list.\n // request.headersList.append('sec-websocket-extensions', permessageDeflate)\n\n // 11. Fetch request with useParallelQueue set to true, and\n // processResponse given response being these steps:\n const controller = fetching({\n request,\n useParallelQueue: true,\n dispatcher: options.dispatcher ?? getGlobalDispatcher(),\n processResponse (response) {\n // 1. If response is a network error or its status is not 101,\n // fail the WebSocket connection.\n if (response.type === 'error' || response.status !== 101) {\n failWebsocketConnection(ws, 'Received network error or non-101 status code.')\n return\n }\n\n // 2. If protocols is not the empty list and extracting header\n // list values given `Sec-WebSocket-Protocol` and response’s\n // header list results in null, failure, or the empty byte\n // sequence, then fail the WebSocket connection.\n if (protocols.length !== 0 && !response.headersList.get('Sec-WebSocket-Protocol')) {\n failWebsocketConnection(ws, 'Server did not respond with sent protocols.')\n return\n }\n\n // 3. Follow the requirements stated step 2 to step 6, inclusive,\n // of the last set of steps in section 4.1 of The WebSocket\n // Protocol to validate response. This either results in fail\n // the WebSocket connection or the WebSocket connection is\n // established.\n\n // 2. If the response lacks an |Upgrade| header field or the |Upgrade|\n // header field contains a value that is not an ASCII case-\n // insensitive match for the value \"websocket\", the client MUST\n // _Fail the WebSocket Connection_.\n if (response.headersList.get('Upgrade')?.toLowerCase() !== 'websocket') {\n failWebsocketConnection(ws, 'Server did not set Upgrade header to \"websocket\".')\n return\n }\n\n // 3. If the response lacks a |Connection| header field or the\n // |Connection| header field doesn't contain a token that is an\n // ASCII case-insensitive match for the value \"Upgrade\", the client\n // MUST _Fail the WebSocket Connection_.\n if (response.headersList.get('Connection')?.toLowerCase() !== 'upgrade') {\n failWebsocketConnection(ws, 'Server did not set Connection header to \"upgrade\".')\n return\n }\n\n // 4. If the response lacks a |Sec-WebSocket-Accept| header field or\n // the |Sec-WebSocket-Accept| contains a value other than the\n // base64-encoded SHA-1 of the concatenation of the |Sec-WebSocket-\n // Key| (as a string, not base64-decoded) with the string \"258EAFA5-\n // E914-47DA-95CA-C5AB0DC85B11\" but ignoring any leading and\n // trailing whitespace, the client MUST _Fail the WebSocket\n // Connection_.\n const secWSAccept = response.headersList.get('Sec-WebSocket-Accept')\n const digest = crypto.createHash('sha1').update(keyValue + uid).digest('base64')\n if (secWSAccept !== digest) {\n failWebsocketConnection(ws, 'Incorrect hash received in Sec-WebSocket-Accept header.')\n return\n }\n\n // 5. If the response includes a |Sec-WebSocket-Extensions| header\n // field and this header field indicates the use of an extension\n // that was not present in the client's handshake (the server has\n // indicated an extension not requested by the client), the client\n // MUST _Fail the WebSocket Connection_. (The parsing of this\n // header field to determine which extensions are requested is\n // discussed in Section 9.1.)\n const secExtension = response.headersList.get('Sec-WebSocket-Extensions')\n\n if (secExtension !== null && secExtension !== permessageDeflate) {\n failWebsocketConnection(ws, 'Received different permessage-deflate than the one set.')\n return\n }\n\n // 6. If the response includes a |Sec-WebSocket-Protocol| header field\n // and this header field indicates the use of a subprotocol that was\n // not present in the client's handshake (the server has indicated a\n // subprotocol not requested by the client), the client MUST _Fail\n // the WebSocket Connection_.\n const secProtocol = response.headersList.get('Sec-WebSocket-Protocol')\n\n if (secProtocol !== null && secProtocol !== request.headersList.get('Sec-WebSocket-Protocol')) {\n failWebsocketConnection(ws, 'Protocol was not set in the opening handshake.')\n return\n }\n\n response.socket.on('data', onSocketData)\n response.socket.on('close', onSocketClose)\n response.socket.on('error', onSocketError)\n\n if (channels.open.hasSubscribers) {\n channels.open.publish({\n address: response.socket.address(),\n protocol: secProtocol,\n extensions: secExtension\n })\n }\n\n onEstablish(response)\n }\n })\n\n return controller\n}\n\n/**\n * @param {Buffer} chunk\n */\nfunction onSocketData (chunk) {\n if (!this.ws[kByteParser].write(chunk)) {\n this.pause()\n }\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.4\n */\nfunction onSocketClose () {\n const { ws } = this\n\n // If the TCP connection was closed after the\n // WebSocket closing handshake was completed, the WebSocket connection\n // is said to have been closed _cleanly_.\n const wasClean = ws[kSentClose] && ws[kReceivedClose]\n\n let code = 1005\n let reason = ''\n\n const result = ws[kByteParser].closingInfo\n\n if (result) {\n code = result.code ?? 1005\n reason = result.reason\n } else if (!ws[kSentClose]) {\n // If _The WebSocket\n // Connection is Closed_ and no Close control frame was received by the\n // endpoint (such as could occur if the underlying transport connection\n // is lost), _The WebSocket Connection Close Code_ is considered to be\n // 1006.\n code = 1006\n }\n\n // 1. Change the ready state to CLOSED (3).\n ws[kReadyState] = states.CLOSED\n\n // 2. If the user agent was required to fail the WebSocket\n // connection, or if the WebSocket connection was closed\n // after being flagged as full, fire an event named error\n // at the WebSocket object.\n // TODO\n\n // 3. Fire an event named close at the WebSocket object,\n // using CloseEvent, with the wasClean attribute\n // initialized to true if the connection closed cleanly\n // and false otherwise, the code attribute initialized to\n // the WebSocket connection close code, and the reason\n // attribute initialized to the result of applying UTF-8\n // decode without BOM to the WebSocket connection close\n // reason.\n fireEvent('close', ws, CloseEvent, {\n wasClean, code, reason\n })\n\n if (channels.close.hasSubscribers) {\n channels.close.publish({\n websocket: ws,\n code,\n reason\n })\n }\n}\n\nfunction onSocketError (error) {\n const { ws } = this\n\n ws[kReadyState] = states.CLOSING\n\n if (channels.socketError.hasSubscribers) {\n channels.socketError.publish(error)\n }\n\n this.destroy()\n}\n\nmodule.exports = {\n establishWebSocketConnection\n}\n","'use strict'\n\n// This is a Globally Unique Identifier unique used\n// to validate that the endpoint accepts websocket\n// connections.\n// See https://www.rfc-editor.org/rfc/rfc6455.html#section-1.3\nconst uid = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'\n\n/** @type {PropertyDescriptor} */\nconst staticPropertyDescriptors = {\n enumerable: true,\n writable: false,\n configurable: false\n}\n\nconst states = {\n CONNECTING: 0,\n OPEN: 1,\n CLOSING: 2,\n CLOSED: 3\n}\n\nconst opcodes = {\n CONTINUATION: 0x0,\n TEXT: 0x1,\n BINARY: 0x2,\n CLOSE: 0x8,\n PING: 0x9,\n PONG: 0xA\n}\n\nconst maxUnsigned16Bit = 2 ** 16 - 1 // 65535\n\nconst parserStates = {\n INFO: 0,\n PAYLOADLENGTH_16: 2,\n PAYLOADLENGTH_64: 3,\n READ_DATA: 4\n}\n\nconst emptyBuffer = Buffer.allocUnsafe(0)\n\nmodule.exports = {\n uid,\n staticPropertyDescriptors,\n states,\n opcodes,\n maxUnsigned16Bit,\n parserStates,\n emptyBuffer\n}\n","'use strict'\n\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../core/util')\nconst { MessagePort } = require('worker_threads')\n\n/**\n * @see https://html.spec.whatwg.org/multipage/comms.html#messageevent\n */\nclass MessageEvent extends Event {\n #eventInit\n\n constructor (type, eventInitDict = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent constructor' })\n\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.MessageEventInit(eventInitDict)\n\n super(type, eventInitDict)\n\n this.#eventInit = eventInitDict\n }\n\n get data () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.data\n }\n\n get origin () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.origin\n }\n\n get lastEventId () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.lastEventId\n }\n\n get source () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.source\n }\n\n get ports () {\n webidl.brandCheck(this, MessageEvent)\n\n if (!Object.isFrozen(this.#eventInit.ports)) {\n Object.freeze(this.#eventInit.ports)\n }\n\n return this.#eventInit.ports\n }\n\n initMessageEvent (\n type,\n bubbles = false,\n cancelable = false,\n data = null,\n origin = '',\n lastEventId = '',\n source = null,\n ports = []\n ) {\n webidl.brandCheck(this, MessageEvent)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent.initMessageEvent' })\n\n return new MessageEvent(type, {\n bubbles, cancelable, data, origin, lastEventId, source, ports\n })\n }\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#the-closeevent-interface\n */\nclass CloseEvent extends Event {\n #eventInit\n\n constructor (type, eventInitDict = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'CloseEvent constructor' })\n\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.CloseEventInit(eventInitDict)\n\n super(type, eventInitDict)\n\n this.#eventInit = eventInitDict\n }\n\n get wasClean () {\n webidl.brandCheck(this, CloseEvent)\n\n return this.#eventInit.wasClean\n }\n\n get code () {\n webidl.brandCheck(this, CloseEvent)\n\n return this.#eventInit.code\n }\n\n get reason () {\n webidl.brandCheck(this, CloseEvent)\n\n return this.#eventInit.reason\n }\n}\n\n// https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface\nclass ErrorEvent extends Event {\n #eventInit\n\n constructor (type, eventInitDict) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'ErrorEvent constructor' })\n\n super(type, eventInitDict)\n\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {})\n\n this.#eventInit = eventInitDict\n }\n\n get message () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.message\n }\n\n get filename () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.filename\n }\n\n get lineno () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.lineno\n }\n\n get colno () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.colno\n }\n\n get error () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.error\n }\n}\n\nObject.defineProperties(MessageEvent.prototype, {\n [Symbol.toStringTag]: {\n value: 'MessageEvent',\n configurable: true\n },\n data: kEnumerableProperty,\n origin: kEnumerableProperty,\n lastEventId: kEnumerableProperty,\n source: kEnumerableProperty,\n ports: kEnumerableProperty,\n initMessageEvent: kEnumerableProperty\n})\n\nObject.defineProperties(CloseEvent.prototype, {\n [Symbol.toStringTag]: {\n value: 'CloseEvent',\n configurable: true\n },\n reason: kEnumerableProperty,\n code: kEnumerableProperty,\n wasClean: kEnumerableProperty\n})\n\nObject.defineProperties(ErrorEvent.prototype, {\n [Symbol.toStringTag]: {\n value: 'ErrorEvent',\n configurable: true\n },\n message: kEnumerableProperty,\n filename: kEnumerableProperty,\n lineno: kEnumerableProperty,\n colno: kEnumerableProperty,\n error: kEnumerableProperty\n})\n\nwebidl.converters.MessagePort = webidl.interfaceConverter(MessagePort)\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.MessagePort\n)\n\nconst eventInit = [\n {\n key: 'bubbles',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'cancelable',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'composed',\n converter: webidl.converters.boolean,\n defaultValue: false\n }\n]\n\nwebidl.converters.MessageEventInit = webidl.dictionaryConverter([\n ...eventInit,\n {\n key: 'data',\n converter: webidl.converters.any,\n defaultValue: null\n },\n {\n key: 'origin',\n converter: webidl.converters.USVString,\n defaultValue: ''\n },\n {\n key: 'lastEventId',\n converter: webidl.converters.DOMString,\n defaultValue: ''\n },\n {\n key: 'source',\n // Node doesn't implement WindowProxy or ServiceWorker, so the only\n // valid value for source is a MessagePort.\n converter: webidl.nullableConverter(webidl.converters.MessagePort),\n defaultValue: null\n },\n {\n key: 'ports',\n converter: webidl.converters['sequence'],\n get defaultValue () {\n return []\n }\n }\n])\n\nwebidl.converters.CloseEventInit = webidl.dictionaryConverter([\n ...eventInit,\n {\n key: 'wasClean',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'code',\n converter: webidl.converters['unsigned short'],\n defaultValue: 0\n },\n {\n key: 'reason',\n converter: webidl.converters.USVString,\n defaultValue: ''\n }\n])\n\nwebidl.converters.ErrorEventInit = webidl.dictionaryConverter([\n ...eventInit,\n {\n key: 'message',\n converter: webidl.converters.DOMString,\n defaultValue: ''\n },\n {\n key: 'filename',\n converter: webidl.converters.USVString,\n defaultValue: ''\n },\n {\n key: 'lineno',\n converter: webidl.converters['unsigned long'],\n defaultValue: 0\n },\n {\n key: 'colno',\n converter: webidl.converters['unsigned long'],\n defaultValue: 0\n },\n {\n key: 'error',\n converter: webidl.converters.any\n }\n])\n\nmodule.exports = {\n MessageEvent,\n CloseEvent,\n ErrorEvent\n}\n","'use strict'\n\nconst { maxUnsigned16Bit } = require('./constants')\n\n/** @type {import('crypto')} */\nlet crypto\ntry {\n crypto = require('crypto')\n} catch {\n\n}\n\nclass WebsocketFrameSend {\n /**\n * @param {Buffer|undefined} data\n */\n constructor (data) {\n this.frameData = data\n this.maskKey = crypto.randomBytes(4)\n }\n\n createFrame (opcode) {\n const bodyLength = this.frameData?.byteLength ?? 0\n\n /** @type {number} */\n let payloadLength = bodyLength // 0-125\n let offset = 6\n\n if (bodyLength > maxUnsigned16Bit) {\n offset += 8 // payload length is next 8 bytes\n payloadLength = 127\n } else if (bodyLength > 125) {\n offset += 2 // payload length is next 2 bytes\n payloadLength = 126\n }\n\n const buffer = Buffer.allocUnsafe(bodyLength + offset)\n\n // Clear first 2 bytes, everything else is overwritten\n buffer[0] = buffer[1] = 0\n buffer[0] |= 0x80 // FIN\n buffer[0] = (buffer[0] & 0xF0) + opcode // opcode\n\n /*! ws. MIT License. Einar Otto Stangvik */\n buffer[offset - 4] = this.maskKey[0]\n buffer[offset - 3] = this.maskKey[1]\n buffer[offset - 2] = this.maskKey[2]\n buffer[offset - 1] = this.maskKey[3]\n\n buffer[1] = payloadLength\n\n if (payloadLength === 126) {\n buffer.writeUInt16BE(bodyLength, 2)\n } else if (payloadLength === 127) {\n // Clear extended payload length\n buffer[2] = buffer[3] = 0\n buffer.writeUIntBE(bodyLength, 4, 6)\n }\n\n buffer[1] |= 0x80 // MASK\n\n // mask body\n for (let i = 0; i < bodyLength; i++) {\n buffer[offset + i] = this.frameData[i] ^ this.maskKey[i % 4]\n }\n\n return buffer\n }\n}\n\nmodule.exports = {\n WebsocketFrameSend\n}\n","'use strict'\n\nconst { Writable } = require('stream')\nconst diagnosticsChannel = require('diagnostics_channel')\nconst { parserStates, opcodes, states, emptyBuffer } = require('./constants')\nconst { kReadyState, kSentClose, kResponse, kReceivedClose } = require('./symbols')\nconst { isValidStatusCode, failWebsocketConnection, websocketMessageReceived } = require('./util')\nconst { WebsocketFrameSend } = require('./frame')\n\n// This code was influenced by ws released under the MIT license.\n// Copyright (c) 2011 Einar Otto Stangvik \n// Copyright (c) 2013 Arnout Kazemier and contributors\n// Copyright (c) 2016 Luigi Pinca and contributors\n\nconst channels = {}\nchannels.ping = diagnosticsChannel.channel('undici:websocket:ping')\nchannels.pong = diagnosticsChannel.channel('undici:websocket:pong')\n\nclass ByteParser extends Writable {\n #buffers = []\n #byteOffset = 0\n\n #state = parserStates.INFO\n\n #info = {}\n #fragments = []\n\n constructor (ws) {\n super()\n\n this.ws = ws\n }\n\n /**\n * @param {Buffer} chunk\n * @param {() => void} callback\n */\n _write (chunk, _, callback) {\n this.#buffers.push(chunk)\n this.#byteOffset += chunk.length\n\n this.run(callback)\n }\n\n /**\n * Runs whenever a new chunk is received.\n * Callback is called whenever there are no more chunks buffering,\n * or not enough bytes are buffered to parse.\n */\n run (callback) {\n while (true) {\n if (this.#state === parserStates.INFO) {\n // If there aren't enough bytes to parse the payload length, etc.\n if (this.#byteOffset < 2) {\n return callback()\n }\n\n const buffer = this.consume(2)\n\n this.#info.fin = (buffer[0] & 0x80) !== 0\n this.#info.opcode = buffer[0] & 0x0F\n\n // If we receive a fragmented message, we use the type of the first\n // frame to parse the full message as binary/text, when it's terminated\n this.#info.originalOpcode ??= this.#info.opcode\n\n this.#info.fragmented = !this.#info.fin && this.#info.opcode !== opcodes.CONTINUATION\n\n if (this.#info.fragmented && this.#info.opcode !== opcodes.BINARY && this.#info.opcode !== opcodes.TEXT) {\n // Only text and binary frames can be fragmented\n failWebsocketConnection(this.ws, 'Invalid frame type was fragmented.')\n return\n }\n\n const payloadLength = buffer[1] & 0x7F\n\n if (payloadLength <= 125) {\n this.#info.payloadLength = payloadLength\n this.#state = parserStates.READ_DATA\n } else if (payloadLength === 126) {\n this.#state = parserStates.PAYLOADLENGTH_16\n } else if (payloadLength === 127) {\n this.#state = parserStates.PAYLOADLENGTH_64\n }\n\n if (this.#info.fragmented && payloadLength > 125) {\n // A fragmented frame can't be fragmented itself\n failWebsocketConnection(this.ws, 'Fragmented frame exceeded 125 bytes.')\n return\n } else if (\n (this.#info.opcode === opcodes.PING ||\n this.#info.opcode === opcodes.PONG ||\n this.#info.opcode === opcodes.CLOSE) &&\n payloadLength > 125\n ) {\n // Control frames can have a payload length of 125 bytes MAX\n failWebsocketConnection(this.ws, 'Payload length for control frame exceeded 125 bytes.')\n return\n } else if (this.#info.opcode === opcodes.CLOSE) {\n if (payloadLength === 1) {\n failWebsocketConnection(this.ws, 'Received close frame with a 1-byte body.')\n return\n }\n\n const body = this.consume(payloadLength)\n\n this.#info.closeInfo = this.parseCloseBody(false, body)\n\n if (!this.ws[kSentClose]) {\n // If an endpoint receives a Close frame and did not previously send a\n // Close frame, the endpoint MUST send a Close frame in response. (When\n // sending a Close frame in response, the endpoint typically echos the\n // status code it received.)\n const body = Buffer.allocUnsafe(2)\n body.writeUInt16BE(this.#info.closeInfo.code, 0)\n const closeFrame = new WebsocketFrameSend(body)\n\n this.ws[kResponse].socket.write(\n closeFrame.createFrame(opcodes.CLOSE),\n (err) => {\n if (!err) {\n this.ws[kSentClose] = true\n }\n }\n )\n }\n\n // Upon either sending or receiving a Close control frame, it is said\n // that _The WebSocket Closing Handshake is Started_ and that the\n // WebSocket connection is in the CLOSING state.\n this.ws[kReadyState] = states.CLOSING\n this.ws[kReceivedClose] = true\n\n this.end()\n\n return\n } else if (this.#info.opcode === opcodes.PING) {\n // Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in\n // response, unless it already received a Close frame.\n // A Pong frame sent in response to a Ping frame must have identical\n // \"Application data\"\n\n const body = this.consume(payloadLength)\n\n if (!this.ws[kReceivedClose]) {\n const frame = new WebsocketFrameSend(body)\n\n this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG))\n\n if (channels.ping.hasSubscribers) {\n channels.ping.publish({\n payload: body\n })\n }\n }\n\n this.#state = parserStates.INFO\n\n if (this.#byteOffset > 0) {\n continue\n } else {\n callback()\n return\n }\n } else if (this.#info.opcode === opcodes.PONG) {\n // A Pong frame MAY be sent unsolicited. This serves as a\n // unidirectional heartbeat. A response to an unsolicited Pong frame is\n // not expected.\n\n const body = this.consume(payloadLength)\n\n if (channels.pong.hasSubscribers) {\n channels.pong.publish({\n payload: body\n })\n }\n\n if (this.#byteOffset > 0) {\n continue\n } else {\n callback()\n return\n }\n }\n } else if (this.#state === parserStates.PAYLOADLENGTH_16) {\n if (this.#byteOffset < 2) {\n return callback()\n }\n\n const buffer = this.consume(2)\n\n this.#info.payloadLength = buffer.readUInt16BE(0)\n this.#state = parserStates.READ_DATA\n } else if (this.#state === parserStates.PAYLOADLENGTH_64) {\n if (this.#byteOffset < 8) {\n return callback()\n }\n\n const buffer = this.consume(8)\n const upper = buffer.readUInt32BE(0)\n\n // 2^31 is the maxinimum bytes an arraybuffer can contain\n // on 32-bit systems. Although, on 64-bit systems, this is\n // 2^53-1 bytes.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_array_length\n // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/common/globals.h;drc=1946212ac0100668f14eb9e2843bdd846e510a1e;bpv=1;bpt=1;l=1275\n // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/objects/js-array-buffer.h;l=34;drc=1946212ac0100668f14eb9e2843bdd846e510a1e\n if (upper > 2 ** 31 - 1) {\n failWebsocketConnection(this.ws, 'Received payload length > 2^31 bytes.')\n return\n }\n\n const lower = buffer.readUInt32BE(4)\n\n this.#info.payloadLength = (upper << 8) + lower\n this.#state = parserStates.READ_DATA\n } else if (this.#state === parserStates.READ_DATA) {\n if (this.#byteOffset < this.#info.payloadLength) {\n // If there is still more data in this chunk that needs to be read\n return callback()\n } else if (this.#byteOffset >= this.#info.payloadLength) {\n // If the server sent multiple frames in a single chunk\n\n const body = this.consume(this.#info.payloadLength)\n\n this.#fragments.push(body)\n\n // If the frame is unfragmented, or a fragmented frame was terminated,\n // a message was received\n if (!this.#info.fragmented || (this.#info.fin && this.#info.opcode === opcodes.CONTINUATION)) {\n const fullMessage = Buffer.concat(this.#fragments)\n\n websocketMessageReceived(this.ws, this.#info.originalOpcode, fullMessage)\n\n this.#info = {}\n this.#fragments.length = 0\n }\n\n this.#state = parserStates.INFO\n }\n }\n\n if (this.#byteOffset > 0) {\n continue\n } else {\n callback()\n break\n }\n }\n }\n\n /**\n * Take n bytes from the buffered Buffers\n * @param {number} n\n * @returns {Buffer|null}\n */\n consume (n) {\n if (n > this.#byteOffset) {\n return null\n } else if (n === 0) {\n return emptyBuffer\n }\n\n if (this.#buffers[0].length === n) {\n this.#byteOffset -= this.#buffers[0].length\n return this.#buffers.shift()\n }\n\n const buffer = Buffer.allocUnsafe(n)\n let offset = 0\n\n while (offset !== n) {\n const next = this.#buffers[0]\n const { length } = next\n\n if (length + offset === n) {\n buffer.set(this.#buffers.shift(), offset)\n break\n } else if (length + offset > n) {\n buffer.set(next.subarray(0, n - offset), offset)\n this.#buffers[0] = next.subarray(n - offset)\n break\n } else {\n buffer.set(this.#buffers.shift(), offset)\n offset += next.length\n }\n }\n\n this.#byteOffset -= n\n\n return buffer\n }\n\n parseCloseBody (onlyCode, data) {\n // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.5\n /** @type {number|undefined} */\n let code\n\n if (data.length >= 2) {\n // _The WebSocket Connection Close Code_ is\n // defined as the status code (Section 7.4) contained in the first Close\n // control frame received by the application\n code = data.readUInt16BE(0)\n }\n\n if (onlyCode) {\n if (!isValidStatusCode(code)) {\n return null\n }\n\n return { code }\n }\n\n // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.6\n /** @type {Buffer} */\n let reason = data.subarray(2)\n\n // Remove BOM\n if (reason[0] === 0xEF && reason[1] === 0xBB && reason[2] === 0xBF) {\n reason = reason.subarray(3)\n }\n\n if (code !== undefined && !isValidStatusCode(code)) {\n return null\n }\n\n try {\n // TODO: optimize this\n reason = new TextDecoder('utf-8', { fatal: true }).decode(reason)\n } catch {\n return null\n }\n\n return { code, reason }\n }\n\n get closingInfo () {\n return this.#info.closeInfo\n }\n}\n\nmodule.exports = {\n ByteParser\n}\n","'use strict'\n\nmodule.exports = {\n kWebSocketURL: Symbol('url'),\n kReadyState: Symbol('ready state'),\n kController: Symbol('controller'),\n kResponse: Symbol('response'),\n kBinaryType: Symbol('binary type'),\n kSentClose: Symbol('sent close'),\n kReceivedClose: Symbol('received close'),\n kByteParser: Symbol('byte parser')\n}\n","'use strict'\n\nconst { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = require('./symbols')\nconst { states, opcodes } = require('./constants')\nconst { MessageEvent, ErrorEvent } = require('./events')\n\n/* globals Blob */\n\n/**\n * @param {import('./websocket').WebSocket} ws\n */\nfunction isEstablished (ws) {\n // If the server's response is validated as provided for above, it is\n // said that _The WebSocket Connection is Established_ and that the\n // WebSocket Connection is in the OPEN state.\n return ws[kReadyState] === states.OPEN\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n */\nfunction isClosing (ws) {\n // Upon either sending or receiving a Close control frame, it is said\n // that _The WebSocket Closing Handshake is Started_ and that the\n // WebSocket connection is in the CLOSING state.\n return ws[kReadyState] === states.CLOSING\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n */\nfunction isClosed (ws) {\n return ws[kReadyState] === states.CLOSED\n}\n\n/**\n * @see https://dom.spec.whatwg.org/#concept-event-fire\n * @param {string} e\n * @param {EventTarget} target\n * @param {EventInit | undefined} eventInitDict\n */\nfunction fireEvent (e, target, eventConstructor = Event, eventInitDict) {\n // 1. If eventConstructor is not given, then let eventConstructor be Event.\n\n // 2. Let event be the result of creating an event given eventConstructor,\n // in the relevant realm of target.\n // 3. Initialize event’s type attribute to e.\n const event = new eventConstructor(e, eventInitDict) // eslint-disable-line new-cap\n\n // 4. Initialize any other IDL attributes of event as described in the\n // invocation of this algorithm.\n\n // 5. Return the result of dispatching event at target, with legacy target\n // override flag set if set.\n target.dispatchEvent(event)\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n * @param {import('./websocket').WebSocket} ws\n * @param {number} type Opcode\n * @param {Buffer} data application data\n */\nfunction websocketMessageReceived (ws, type, data) {\n // 1. If ready state is not OPEN (1), then return.\n if (ws[kReadyState] !== states.OPEN) {\n return\n }\n\n // 2. Let dataForEvent be determined by switching on type and binary type:\n let dataForEvent\n\n if (type === opcodes.TEXT) {\n // -> type indicates that the data is Text\n // a new DOMString containing data\n try {\n dataForEvent = new TextDecoder('utf-8', { fatal: true }).decode(data)\n } catch {\n failWebsocketConnection(ws, 'Received invalid UTF-8 in text frame.')\n return\n }\n } else if (type === opcodes.BINARY) {\n if (ws[kBinaryType] === 'blob') {\n // -> type indicates that the data is Binary and binary type is \"blob\"\n // a new Blob object, created in the relevant Realm of the WebSocket\n // object, that represents data as its raw data\n dataForEvent = new Blob([data])\n } else {\n // -> type indicates that the data is Binary and binary type is \"arraybuffer\"\n // a new ArrayBuffer object, created in the relevant Realm of the\n // WebSocket object, whose contents are data\n dataForEvent = new Uint8Array(data).buffer\n }\n }\n\n // 3. Fire an event named message at the WebSocket object, using MessageEvent,\n // with the origin attribute initialized to the serialization of the WebSocket\n // object’s url's origin, and the data attribute initialized to dataForEvent.\n fireEvent('message', ws, MessageEvent, {\n origin: ws[kWebSocketURL].origin,\n data: dataForEvent\n })\n}\n\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc6455\n * @see https://datatracker.ietf.org/doc/html/rfc2616\n * @see https://bugs.chromium.org/p/chromium/issues/detail?id=398407\n * @param {string} protocol\n */\nfunction isValidSubprotocol (protocol) {\n // If present, this value indicates one\n // or more comma-separated subprotocol the client wishes to speak,\n // ordered by preference. The elements that comprise this value\n // MUST be non-empty strings with characters in the range U+0021 to\n // U+007E not including separator characters as defined in\n // [RFC2616] and MUST all be unique strings.\n if (protocol.length === 0) {\n return false\n }\n\n for (const char of protocol) {\n const code = char.charCodeAt(0)\n\n if (\n code < 0x21 ||\n code > 0x7E ||\n char === '(' ||\n char === ')' ||\n char === '<' ||\n char === '>' ||\n char === '@' ||\n char === ',' ||\n char === ';' ||\n char === ':' ||\n char === '\\\\' ||\n char === '\"' ||\n char === '/' ||\n char === '[' ||\n char === ']' ||\n char === '?' ||\n char === '=' ||\n char === '{' ||\n char === '}' ||\n code === 32 || // SP\n code === 9 // HT\n ) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7-4\n * @param {number} code\n */\nfunction isValidStatusCode (code) {\n if (code >= 1000 && code < 1015) {\n return (\n code !== 1004 && // reserved\n code !== 1005 && // \"MUST NOT be set as a status code\"\n code !== 1006 // \"MUST NOT be set as a status code\"\n )\n }\n\n return code >= 3000 && code <= 4999\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n * @param {string|undefined} reason\n */\nfunction failWebsocketConnection (ws, reason) {\n const { [kController]: controller, [kResponse]: response } = ws\n\n controller.abort()\n\n if (response?.socket && !response.socket.destroyed) {\n response.socket.destroy()\n }\n\n if (reason) {\n fireEvent('error', ws, ErrorEvent, {\n error: new Error(reason)\n })\n }\n}\n\nmodule.exports = {\n isEstablished,\n isClosing,\n isClosed,\n fireEvent,\n isValidSubprotocol,\n isValidStatusCode,\n failWebsocketConnection,\n websocketMessageReceived\n}\n","'use strict'\n\nconst { webidl } = require('../fetch/webidl')\nconst { DOMException } = require('../fetch/constants')\nconst { URLSerializer } = require('../fetch/dataURL')\nconst { getGlobalOrigin } = require('../fetch/global')\nconst { staticPropertyDescriptors, states, opcodes, emptyBuffer } = require('./constants')\nconst {\n kWebSocketURL,\n kReadyState,\n kController,\n kBinaryType,\n kResponse,\n kSentClose,\n kByteParser\n} = require('./symbols')\nconst { isEstablished, isClosing, isValidSubprotocol, failWebsocketConnection, fireEvent } = require('./util')\nconst { establishWebSocketConnection } = require('./connection')\nconst { WebsocketFrameSend } = require('./frame')\nconst { ByteParser } = require('./receiver')\nconst { kEnumerableProperty, isBlobLike } = require('../core/util')\nconst { getGlobalDispatcher } = require('../global')\nconst { types } = require('util')\n\nlet experimentalWarned = false\n\n// https://websockets.spec.whatwg.org/#interface-definition\nclass WebSocket extends EventTarget {\n #events = {\n open: null,\n error: null,\n close: null,\n message: null\n }\n\n #bufferedAmount = 0\n #protocol = ''\n #extensions = ''\n\n /**\n * @param {string} url\n * @param {string|string[]} protocols\n */\n constructor (url, protocols = []) {\n super()\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket constructor' })\n\n if (!experimentalWarned) {\n experimentalWarned = true\n process.emitWarning('WebSockets are experimental, expect them to change at any time.', {\n code: 'UNDICI-WS'\n })\n }\n\n const options = webidl.converters['DOMString or sequence or WebSocketInit'](protocols)\n\n url = webidl.converters.USVString(url)\n protocols = options.protocols\n\n // 1. Let baseURL be this's relevant settings object's API base URL.\n const baseURL = getGlobalOrigin()\n\n // 1. Let urlRecord be the result of applying the URL parser to url with baseURL.\n let urlRecord\n\n try {\n urlRecord = new URL(url, baseURL)\n } catch (e) {\n // 3. If urlRecord is failure, then throw a \"SyntaxError\" DOMException.\n throw new DOMException(e, 'SyntaxError')\n }\n\n // 4. If urlRecord’s scheme is \"http\", then set urlRecord’s scheme to \"ws\".\n if (urlRecord.protocol === 'http:') {\n urlRecord.protocol = 'ws:'\n } else if (urlRecord.protocol === 'https:') {\n // 5. Otherwise, if urlRecord’s scheme is \"https\", set urlRecord’s scheme to \"wss\".\n urlRecord.protocol = 'wss:'\n }\n\n // 6. If urlRecord’s scheme is not \"ws\" or \"wss\", then throw a \"SyntaxError\" DOMException.\n if (urlRecord.protocol !== 'ws:' && urlRecord.protocol !== 'wss:') {\n throw new DOMException(\n `Expected a ws: or wss: protocol, got ${urlRecord.protocol}`,\n 'SyntaxError'\n )\n }\n\n // 7. If urlRecord’s fragment is non-null, then throw a \"SyntaxError\"\n // DOMException.\n if (urlRecord.hash || urlRecord.href.endsWith('#')) {\n throw new DOMException('Got fragment', 'SyntaxError')\n }\n\n // 8. If protocols is a string, set protocols to a sequence consisting\n // of just that string.\n if (typeof protocols === 'string') {\n protocols = [protocols]\n }\n\n // 9. If any of the values in protocols occur more than once or otherwise\n // fail to match the requirements for elements that comprise the value\n // of `Sec-WebSocket-Protocol` fields as defined by The WebSocket\n // protocol, then throw a \"SyntaxError\" DOMException.\n if (protocols.length !== new Set(protocols.map(p => p.toLowerCase())).size) {\n throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')\n }\n\n if (protocols.length > 0 && !protocols.every(p => isValidSubprotocol(p))) {\n throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')\n }\n\n // 10. Set this's url to urlRecord.\n this[kWebSocketURL] = new URL(urlRecord.href)\n\n // 11. Let client be this's relevant settings object.\n\n // 12. Run this step in parallel:\n\n // 1. Establish a WebSocket connection given urlRecord, protocols,\n // and client.\n this[kController] = establishWebSocketConnection(\n urlRecord,\n protocols,\n this,\n (response) => this.#onConnectionEstablished(response),\n options\n )\n\n // Each WebSocket object has an associated ready state, which is a\n // number representing the state of the connection. Initially it must\n // be CONNECTING (0).\n this[kReadyState] = WebSocket.CONNECTING\n\n // The extensions attribute must initially return the empty string.\n\n // The protocol attribute must initially return the empty string.\n\n // Each WebSocket object has an associated binary type, which is a\n // BinaryType. Initially it must be \"blob\".\n this[kBinaryType] = 'blob'\n }\n\n /**\n * @see https://websockets.spec.whatwg.org/#dom-websocket-close\n * @param {number|undefined} code\n * @param {string|undefined} reason\n */\n close (code = undefined, reason = undefined) {\n webidl.brandCheck(this, WebSocket)\n\n if (code !== undefined) {\n code = webidl.converters['unsigned short'](code, { clamp: true })\n }\n\n if (reason !== undefined) {\n reason = webidl.converters.USVString(reason)\n }\n\n // 1. If code is present, but is neither an integer equal to 1000 nor an\n // integer in the range 3000 to 4999, inclusive, throw an\n // \"InvalidAccessError\" DOMException.\n if (code !== undefined) {\n if (code !== 1000 && (code < 3000 || code > 4999)) {\n throw new DOMException('invalid code', 'InvalidAccessError')\n }\n }\n\n let reasonByteLength = 0\n\n // 2. If reason is present, then run these substeps:\n if (reason !== undefined) {\n // 1. Let reasonBytes be the result of encoding reason.\n // 2. If reasonBytes is longer than 123 bytes, then throw a\n // \"SyntaxError\" DOMException.\n reasonByteLength = Buffer.byteLength(reason)\n\n if (reasonByteLength > 123) {\n throw new DOMException(\n `Reason must be less than 123 bytes; received ${reasonByteLength}`,\n 'SyntaxError'\n )\n }\n }\n\n // 3. Run the first matching steps from the following list:\n if (this[kReadyState] === WebSocket.CLOSING || this[kReadyState] === WebSocket.CLOSED) {\n // If this's ready state is CLOSING (2) or CLOSED (3)\n // Do nothing.\n } else if (!isEstablished(this)) {\n // If the WebSocket connection is not yet established\n // Fail the WebSocket connection and set this's ready state\n // to CLOSING (2).\n failWebsocketConnection(this, 'Connection was closed before it was established.')\n this[kReadyState] = WebSocket.CLOSING\n } else if (!isClosing(this)) {\n // If the WebSocket closing handshake has not yet been started\n // Start the WebSocket closing handshake and set this's ready\n // state to CLOSING (2).\n // - If neither code nor reason is present, the WebSocket Close\n // message must not have a body.\n // - If code is present, then the status code to use in the\n // WebSocket Close message must be the integer given by code.\n // - If reason is also present, then reasonBytes must be\n // provided in the Close message after the status code.\n\n const frame = new WebsocketFrameSend()\n\n // If neither code nor reason is present, the WebSocket Close\n // message must not have a body.\n\n // If code is present, then the status code to use in the\n // WebSocket Close message must be the integer given by code.\n if (code !== undefined && reason === undefined) {\n frame.frameData = Buffer.allocUnsafe(2)\n frame.frameData.writeUInt16BE(code, 0)\n } else if (code !== undefined && reason !== undefined) {\n // If reason is also present, then reasonBytes must be\n // provided in the Close message after the status code.\n frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength)\n frame.frameData.writeUInt16BE(code, 0)\n // the body MAY contain UTF-8-encoded data with value /reason/\n frame.frameData.write(reason, 2, 'utf-8')\n } else {\n frame.frameData = emptyBuffer\n }\n\n /** @type {import('stream').Duplex} */\n const socket = this[kResponse].socket\n\n socket.write(frame.createFrame(opcodes.CLOSE), (err) => {\n if (!err) {\n this[kSentClose] = true\n }\n })\n\n // Upon either sending or receiving a Close control frame, it is said\n // that _The WebSocket Closing Handshake is Started_ and that the\n // WebSocket connection is in the CLOSING state.\n this[kReadyState] = states.CLOSING\n } else {\n // Otherwise\n // Set this's ready state to CLOSING (2).\n this[kReadyState] = WebSocket.CLOSING\n }\n }\n\n /**\n * @see https://websockets.spec.whatwg.org/#dom-websocket-send\n * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data\n */\n send (data) {\n webidl.brandCheck(this, WebSocket)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket.send' })\n\n data = webidl.converters.WebSocketSendData(data)\n\n // 1. If this's ready state is CONNECTING, then throw an\n // \"InvalidStateError\" DOMException.\n if (this[kReadyState] === WebSocket.CONNECTING) {\n throw new DOMException('Sent before connected.', 'InvalidStateError')\n }\n\n // 2. Run the appropriate set of steps from the following list:\n // https://datatracker.ietf.org/doc/html/rfc6455#section-6.1\n // https://datatracker.ietf.org/doc/html/rfc6455#section-5.2\n\n if (!isEstablished(this) || isClosing(this)) {\n return\n }\n\n /** @type {import('stream').Duplex} */\n const socket = this[kResponse].socket\n\n // If data is a string\n if (typeof data === 'string') {\n // If the WebSocket connection is established and the WebSocket\n // closing handshake has not yet started, then the user agent\n // must send a WebSocket Message comprised of the data argument\n // using a text frame opcode; if the data cannot be sent, e.g.\n // because it would need to be buffered but the buffer is full,\n // the user agent must flag the WebSocket as full and then close\n // the WebSocket connection. Any invocation of this method with a\n // string argument that does not throw an exception must increase\n // the bufferedAmount attribute by the number of bytes needed to\n // express the argument as UTF-8.\n\n const value = Buffer.from(data)\n const frame = new WebsocketFrameSend(value)\n const buffer = frame.createFrame(opcodes.TEXT)\n\n this.#bufferedAmount += value.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= value.byteLength\n })\n } else if (types.isArrayBuffer(data)) {\n // If the WebSocket connection is established, and the WebSocket\n // closing handshake has not yet started, then the user agent must\n // send a WebSocket Message comprised of data using a binary frame\n // opcode; if the data cannot be sent, e.g. because it would need\n // to be buffered but the buffer is full, the user agent must flag\n // the WebSocket as full and then close the WebSocket connection.\n // The data to be sent is the data stored in the buffer described\n // by the ArrayBuffer object. Any invocation of this method with an\n // ArrayBuffer argument that does not throw an exception must\n // increase the bufferedAmount attribute by the length of the\n // ArrayBuffer in bytes.\n\n const value = Buffer.from(data)\n const frame = new WebsocketFrameSend(value)\n const buffer = frame.createFrame(opcodes.BINARY)\n\n this.#bufferedAmount += value.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= value.byteLength\n })\n } else if (ArrayBuffer.isView(data)) {\n // If the WebSocket connection is established, and the WebSocket\n // closing handshake has not yet started, then the user agent must\n // send a WebSocket Message comprised of data using a binary frame\n // opcode; if the data cannot be sent, e.g. because it would need to\n // be buffered but the buffer is full, the user agent must flag the\n // WebSocket as full and then close the WebSocket connection. The\n // data to be sent is the data stored in the section of the buffer\n // described by the ArrayBuffer object that data references. Any\n // invocation of this method with this kind of argument that does\n // not throw an exception must increase the bufferedAmount attribute\n // by the length of data’s buffer in bytes.\n\n const ab = Buffer.from(data, data.byteOffset, data.byteLength)\n\n const frame = new WebsocketFrameSend(ab)\n const buffer = frame.createFrame(opcodes.BINARY)\n\n this.#bufferedAmount += ab.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= ab.byteLength\n })\n } else if (isBlobLike(data)) {\n // If the WebSocket connection is established, and the WebSocket\n // closing handshake has not yet started, then the user agent must\n // send a WebSocket Message comprised of data using a binary frame\n // opcode; if the data cannot be sent, e.g. because it would need to\n // be buffered but the buffer is full, the user agent must flag the\n // WebSocket as full and then close the WebSocket connection. The data\n // to be sent is the raw data represented by the Blob object. Any\n // invocation of this method with a Blob argument that does not throw\n // an exception must increase the bufferedAmount attribute by the size\n // of the Blob object’s raw data, in bytes.\n\n const frame = new WebsocketFrameSend()\n\n data.arrayBuffer().then((ab) => {\n const value = Buffer.from(ab)\n frame.frameData = value\n const buffer = frame.createFrame(opcodes.BINARY)\n\n this.#bufferedAmount += value.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= value.byteLength\n })\n })\n }\n }\n\n get readyState () {\n webidl.brandCheck(this, WebSocket)\n\n // The readyState getter steps are to return this's ready state.\n return this[kReadyState]\n }\n\n get bufferedAmount () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#bufferedAmount\n }\n\n get url () {\n webidl.brandCheck(this, WebSocket)\n\n // The url getter steps are to return this's url, serialized.\n return URLSerializer(this[kWebSocketURL])\n }\n\n get extensions () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#extensions\n }\n\n get protocol () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#protocol\n }\n\n get onopen () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.open\n }\n\n set onopen (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.open) {\n this.removeEventListener('open', this.#events.open)\n }\n\n if (typeof fn === 'function') {\n this.#events.open = fn\n this.addEventListener('open', fn)\n } else {\n this.#events.open = null\n }\n }\n\n get onerror () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.error\n }\n\n set onerror (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.error) {\n this.removeEventListener('error', this.#events.error)\n }\n\n if (typeof fn === 'function') {\n this.#events.error = fn\n this.addEventListener('error', fn)\n } else {\n this.#events.error = null\n }\n }\n\n get onclose () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.close\n }\n\n set onclose (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.close) {\n this.removeEventListener('close', this.#events.close)\n }\n\n if (typeof fn === 'function') {\n this.#events.close = fn\n this.addEventListener('close', fn)\n } else {\n this.#events.close = null\n }\n }\n\n get onmessage () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.message\n }\n\n set onmessage (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.message) {\n this.removeEventListener('message', this.#events.message)\n }\n\n if (typeof fn === 'function') {\n this.#events.message = fn\n this.addEventListener('message', fn)\n } else {\n this.#events.message = null\n }\n }\n\n get binaryType () {\n webidl.brandCheck(this, WebSocket)\n\n return this[kBinaryType]\n }\n\n set binaryType (type) {\n webidl.brandCheck(this, WebSocket)\n\n if (type !== 'blob' && type !== 'arraybuffer') {\n this[kBinaryType] = 'blob'\n } else {\n this[kBinaryType] = type\n }\n }\n\n /**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n */\n #onConnectionEstablished (response) {\n // processResponse is called when the \"response’s header list has been received and initialized.\"\n // once this happens, the connection is open\n this[kResponse] = response\n\n const parser = new ByteParser(this)\n parser.on('drain', function onParserDrain () {\n this.ws[kResponse].socket.resume()\n })\n\n response.socket.ws = this\n this[kByteParser] = parser\n\n // 1. Change the ready state to OPEN (1).\n this[kReadyState] = states.OPEN\n\n // 2. Change the extensions attribute’s value to the extensions in use, if\n // it is not the null value.\n // https://datatracker.ietf.org/doc/html/rfc6455#section-9.1\n const extensions = response.headersList.get('sec-websocket-extensions')\n\n if (extensions !== null) {\n this.#extensions = extensions\n }\n\n // 3. Change the protocol attribute’s value to the subprotocol in use, if\n // it is not the null value.\n // https://datatracker.ietf.org/doc/html/rfc6455#section-1.9\n const protocol = response.headersList.get('sec-websocket-protocol')\n\n if (protocol !== null) {\n this.#protocol = protocol\n }\n\n // 4. Fire an event named open at the WebSocket object.\n fireEvent('open', this)\n }\n}\n\n// https://websockets.spec.whatwg.org/#dom-websocket-connecting\nWebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING\n// https://websockets.spec.whatwg.org/#dom-websocket-open\nWebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN\n// https://websockets.spec.whatwg.org/#dom-websocket-closing\nWebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING\n// https://websockets.spec.whatwg.org/#dom-websocket-closed\nWebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED\n\nObject.defineProperties(WebSocket.prototype, {\n CONNECTING: staticPropertyDescriptors,\n OPEN: staticPropertyDescriptors,\n CLOSING: staticPropertyDescriptors,\n CLOSED: staticPropertyDescriptors,\n url: kEnumerableProperty,\n readyState: kEnumerableProperty,\n bufferedAmount: kEnumerableProperty,\n onopen: kEnumerableProperty,\n onerror: kEnumerableProperty,\n onclose: kEnumerableProperty,\n close: kEnumerableProperty,\n onmessage: kEnumerableProperty,\n binaryType: kEnumerableProperty,\n send: kEnumerableProperty,\n extensions: kEnumerableProperty,\n protocol: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'WebSocket',\n writable: false,\n enumerable: false,\n configurable: true\n }\n})\n\nObject.defineProperties(WebSocket, {\n CONNECTING: staticPropertyDescriptors,\n OPEN: staticPropertyDescriptors,\n CLOSING: staticPropertyDescriptors,\n CLOSED: staticPropertyDescriptors\n})\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.DOMString\n)\n\nwebidl.converters['DOMString or sequence'] = function (V) {\n if (webidl.util.Type(V) === 'Object' && Symbol.iterator in V) {\n return webidl.converters['sequence'](V)\n }\n\n return webidl.converters.DOMString(V)\n}\n\n// This implements the propsal made in https://github.com/whatwg/websockets/issues/42\nwebidl.converters.WebSocketInit = webidl.dictionaryConverter([\n {\n key: 'protocols',\n converter: webidl.converters['DOMString or sequence'],\n get defaultValue () {\n return []\n }\n },\n {\n key: 'dispatcher',\n converter: (V) => V,\n get defaultValue () {\n return getGlobalDispatcher()\n }\n },\n {\n key: 'headers',\n converter: webidl.nullableConverter(webidl.converters.HeadersInit)\n }\n])\n\nwebidl.converters['DOMString or sequence or WebSocketInit'] = function (V) {\n if (webidl.util.Type(V) === 'Object' && !(Symbol.iterator in V)) {\n return webidl.converters.WebSocketInit(V)\n }\n\n return { protocols: webidl.converters['DOMString or sequence'](V) }\n}\n\nwebidl.converters.WebSocketSendData = function (V) {\n if (webidl.util.Type(V) === 'Object') {\n if (isBlobLike(V)) {\n return webidl.converters.Blob(V, { strict: false })\n }\n\n if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) {\n return webidl.converters.BufferSource(V)\n }\n }\n\n return webidl.converters.USVString(V)\n}\n\nmodule.exports = {\n WebSocket\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction getUserAgent() {\n if (typeof navigator === \"object\" && \"userAgent\" in navigator) {\n return navigator.userAgent;\n }\n\n if (typeof process === \"object\" && process.version !== undefined) {\n return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;\n }\n\n return \"\";\n}\n\nexports.getUserAgent = getUserAgent;\n//# sourceMappingURL=index.js.map\n","'use strict'\n\nexports.fromCallback = function (fn) {\n return Object.defineProperty(function (...args) {\n if (typeof args[args.length - 1] === 'function') fn.apply(this, args)\n else {\n return new Promise((resolve, reject) => {\n args.push((err, res) => (err != null) ? reject(err) : resolve(res))\n fn.apply(this, args)\n })\n }\n }, 'name', { value: fn.name })\n}\n\nexports.fromPromise = function (fn) {\n return Object.defineProperty(function (...args) {\n const cb = args[args.length - 1]\n if (typeof cb !== 'function') return fn.apply(this, args)\n else {\n args.pop()\n fn.apply(this, args).then(r => cb(null, r), cb)\n }\n }, 'name', { value: fn.name })\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function () {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function () {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function () {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function () {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function () {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function () {\n return _version.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function () {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function () {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function () {\n return _parse.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction md5(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('md5').update(bytes).digest();\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\n\nfunction rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n _crypto.default.randomFillSync(rnds8Pool);\n\n poolPtr = 0;\n }\n\n return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction sha1(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('sha1').update(bytes).digest();\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.default)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nexports.URL = exports.DNS = void 0;\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction _default(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.default)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.default)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nvar _default = version;\nexports.default = _default;","// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n","module.exports = require(\"assert\");","module.exports = require(\"async_hooks\");","module.exports = require(\"buffer\");","module.exports = require(\"child_process\");","module.exports = require(\"console\");","module.exports = require(\"constants\");","module.exports = require(\"crypto\");","module.exports = require(\"diagnostics_channel\");","module.exports = require(\"events\");","module.exports = require(\"fs\");","module.exports = require(\"fs/promises\");","module.exports = require(\"http\");","module.exports = require(\"http2\");","module.exports = require(\"https\");","module.exports = require(\"net\");","module.exports = require(\"node:events\");","module.exports = require(\"node:fs\");","module.exports = require(\"node:path\");","module.exports = require(\"node:stream\");","module.exports = require(\"node:util\");","module.exports = require(\"node:zlib\");","module.exports = require(\"os\");","module.exports = require(\"path\");","module.exports = require(\"perf_hooks\");","module.exports = require(\"process\");","module.exports = require(\"querystring\");","module.exports = require(\"stream\");","module.exports = require(\"stream/web\");","module.exports = require(\"string_decoder\");","module.exports = require(\"tls\");","module.exports = require(\"tty\");","module.exports = require(\"url\");","module.exports = require(\"util\");","module.exports = require(\"util/types\");","module.exports = require(\"worker_threads\");","module.exports = require(\"zlib\");","'use strict'\n\nconst WritableStream = require('node:stream').Writable\nconst inherits = require('node:util').inherits\n\nconst StreamSearch = require('../../streamsearch/sbmh')\n\nconst PartStream = require('./PartStream')\nconst HeaderParser = require('./HeaderParser')\n\nconst DASH = 45\nconst B_ONEDASH = Buffer.from('-')\nconst B_CRLF = Buffer.from('\\r\\n')\nconst EMPTY_FN = function () {}\n\nfunction Dicer (cfg) {\n if (!(this instanceof Dicer)) { return new Dicer(cfg) }\n WritableStream.call(this, cfg)\n\n if (!cfg || (!cfg.headerFirst && typeof cfg.boundary !== 'string')) { throw new TypeError('Boundary required') }\n\n if (typeof cfg.boundary === 'string') { this.setBoundary(cfg.boundary) } else { this._bparser = undefined }\n\n this._headerFirst = cfg.headerFirst\n\n this._dashes = 0\n this._parts = 0\n this._finished = false\n this._realFinish = false\n this._isPreamble = true\n this._justMatched = false\n this._firstWrite = true\n this._inHeader = true\n this._part = undefined\n this._cb = undefined\n this._ignoreData = false\n this._partOpts = { highWaterMark: cfg.partHwm }\n this._pause = false\n\n const self = this\n this._hparser = new HeaderParser(cfg)\n this._hparser.on('header', function (header) {\n self._inHeader = false\n self._part.emit('header', header)\n })\n}\ninherits(Dicer, WritableStream)\n\nDicer.prototype.emit = function (ev) {\n if (ev === 'finish' && !this._realFinish) {\n if (!this._finished) {\n const self = this\n process.nextTick(function () {\n self.emit('error', new Error('Unexpected end of multipart data'))\n if (self._part && !self._ignoreData) {\n const type = (self._isPreamble ? 'Preamble' : 'Part')\n self._part.emit('error', new Error(type + ' terminated early due to unexpected end of multipart data'))\n self._part.push(null)\n process.nextTick(function () {\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n })\n return\n }\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n })\n }\n } else { WritableStream.prototype.emit.apply(this, arguments) }\n}\n\nDicer.prototype._write = function (data, encoding, cb) {\n // ignore unexpected data (e.g. extra trailer data after finished)\n if (!this._hparser && !this._bparser) { return cb() }\n\n if (this._headerFirst && this._isPreamble) {\n if (!this._part) {\n this._part = new PartStream(this._partOpts)\n if (this.listenerCount('preamble') !== 0) { this.emit('preamble', this._part) } else { this._ignore() }\n }\n const r = this._hparser.push(data)\n if (!this._inHeader && r !== undefined && r < data.length) { data = data.slice(r) } else { return cb() }\n }\n\n // allows for \"easier\" testing\n if (this._firstWrite) {\n this._bparser.push(B_CRLF)\n this._firstWrite = false\n }\n\n this._bparser.push(data)\n\n if (this._pause) { this._cb = cb } else { cb() }\n}\n\nDicer.prototype.reset = function () {\n this._part = undefined\n this._bparser = undefined\n this._hparser = undefined\n}\n\nDicer.prototype.setBoundary = function (boundary) {\n const self = this\n this._bparser = new StreamSearch('\\r\\n--' + boundary)\n this._bparser.on('info', function (isMatch, data, start, end) {\n self._oninfo(isMatch, data, start, end)\n })\n}\n\nDicer.prototype._ignore = function () {\n if (this._part && !this._ignoreData) {\n this._ignoreData = true\n this._part.on('error', EMPTY_FN)\n // we must perform some kind of read on the stream even though we are\n // ignoring the data, otherwise node's Readable stream will not emit 'end'\n // after pushing null to the stream\n this._part.resume()\n }\n}\n\nDicer.prototype._oninfo = function (isMatch, data, start, end) {\n let buf; const self = this; let i = 0; let r; let shouldWriteMore = true\n\n if (!this._part && this._justMatched && data) {\n while (this._dashes < 2 && (start + i) < end) {\n if (data[start + i] === DASH) {\n ++i\n ++this._dashes\n } else {\n if (this._dashes) { buf = B_ONEDASH }\n this._dashes = 0\n break\n }\n }\n if (this._dashes === 2) {\n if ((start + i) < end && this.listenerCount('trailer') !== 0) { this.emit('trailer', data.slice(start + i, end)) }\n this.reset()\n this._finished = true\n // no more parts will be added\n if (self._parts === 0) {\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n }\n }\n if (this._dashes) { return }\n }\n if (this._justMatched) { this._justMatched = false }\n if (!this._part) {\n this._part = new PartStream(this._partOpts)\n this._part._read = function (n) {\n self._unpause()\n }\n if (this._isPreamble && this.listenerCount('preamble') !== 0) {\n this.emit('preamble', this._part)\n } else if (this._isPreamble !== true && this.listenerCount('part') !== 0) {\n this.emit('part', this._part)\n } else {\n this._ignore()\n }\n if (!this._isPreamble) { this._inHeader = true }\n }\n if (data && start < end && !this._ignoreData) {\n if (this._isPreamble || !this._inHeader) {\n if (buf) { shouldWriteMore = this._part.push(buf) }\n shouldWriteMore = this._part.push(data.slice(start, end))\n if (!shouldWriteMore) { this._pause = true }\n } else if (!this._isPreamble && this._inHeader) {\n if (buf) { this._hparser.push(buf) }\n r = this._hparser.push(data.slice(start, end))\n if (!this._inHeader && r !== undefined && r < end) { this._oninfo(false, data, start + r, end) }\n }\n }\n if (isMatch) {\n this._hparser.reset()\n if (this._isPreamble) { this._isPreamble = false } else {\n if (start !== end) {\n ++this._parts\n this._part.on('end', function () {\n if (--self._parts === 0) {\n if (self._finished) {\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n } else {\n self._unpause()\n }\n }\n })\n }\n }\n this._part.push(null)\n this._part = undefined\n this._ignoreData = false\n this._justMatched = true\n this._dashes = 0\n }\n}\n\nDicer.prototype._unpause = function () {\n if (!this._pause) { return }\n\n this._pause = false\n if (this._cb) {\n const cb = this._cb\n this._cb = undefined\n cb()\n }\n}\n\nmodule.exports = Dicer\n","'use strict'\n\nconst EventEmitter = require('node:events').EventEmitter\nconst inherits = require('node:util').inherits\nconst getLimit = require('../../../lib/utils/getLimit')\n\nconst StreamSearch = require('../../streamsearch/sbmh')\n\nconst B_DCRLF = Buffer.from('\\r\\n\\r\\n')\nconst RE_CRLF = /\\r\\n/g\nconst RE_HDR = /^([^:]+):[ \\t]?([\\x00-\\xFF]+)?$/ // eslint-disable-line no-control-regex\n\nfunction HeaderParser (cfg) {\n EventEmitter.call(this)\n\n cfg = cfg || {}\n const self = this\n this.nread = 0\n this.maxed = false\n this.npairs = 0\n this.maxHeaderPairs = getLimit(cfg, 'maxHeaderPairs', 2000)\n this.maxHeaderSize = getLimit(cfg, 'maxHeaderSize', 80 * 1024)\n this.buffer = ''\n this.header = {}\n this.finished = false\n this.ss = new StreamSearch(B_DCRLF)\n this.ss.on('info', function (isMatch, data, start, end) {\n if (data && !self.maxed) {\n if (self.nread + end - start >= self.maxHeaderSize) {\n end = self.maxHeaderSize - self.nread + start\n self.nread = self.maxHeaderSize\n self.maxed = true\n } else { self.nread += (end - start) }\n\n self.buffer += data.toString('binary', start, end)\n }\n if (isMatch) { self._finish() }\n })\n}\ninherits(HeaderParser, EventEmitter)\n\nHeaderParser.prototype.push = function (data) {\n const r = this.ss.push(data)\n if (this.finished) { return r }\n}\n\nHeaderParser.prototype.reset = function () {\n this.finished = false\n this.buffer = ''\n this.header = {}\n this.ss.reset()\n}\n\nHeaderParser.prototype._finish = function () {\n if (this.buffer) { this._parseHeader() }\n this.ss.matches = this.ss.maxMatches\n const header = this.header\n this.header = {}\n this.buffer = ''\n this.finished = true\n this.nread = this.npairs = 0\n this.maxed = false\n this.emit('header', header)\n}\n\nHeaderParser.prototype._parseHeader = function () {\n if (this.npairs === this.maxHeaderPairs) { return }\n\n const lines = this.buffer.split(RE_CRLF)\n const len = lines.length\n let m, h\n\n for (var i = 0; i < len; ++i) { // eslint-disable-line no-var\n if (lines[i].length === 0) { continue }\n if (lines[i][0] === '\\t' || lines[i][0] === ' ') {\n // folded header content\n // RFC2822 says to just remove the CRLF and not the whitespace following\n // it, so we follow the RFC and include the leading whitespace ...\n if (h) {\n this.header[h][this.header[h].length - 1] += lines[i]\n continue\n }\n }\n\n const posColon = lines[i].indexOf(':')\n if (\n posColon === -1 ||\n posColon === 0\n ) {\n return\n }\n m = RE_HDR.exec(lines[i])\n h = m[1].toLowerCase()\n this.header[h] = this.header[h] || []\n this.header[h].push((m[2] || ''))\n if (++this.npairs === this.maxHeaderPairs) { break }\n }\n}\n\nmodule.exports = HeaderParser\n","'use strict'\n\nconst inherits = require('node:util').inherits\nconst ReadableStream = require('node:stream').Readable\n\nfunction PartStream (opts) {\n ReadableStream.call(this, opts)\n}\ninherits(PartStream, ReadableStream)\n\nPartStream.prototype._read = function (n) {}\n\nmodule.exports = PartStream\n","'use strict'\n\n/**\n * Copyright Brian White. All rights reserved.\n *\n * @see https://github.com/mscdex/streamsearch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n * Based heavily on the Streaming Boyer-Moore-Horspool C++ implementation\n * by Hongli Lai at: https://github.com/FooBarWidget/boyer-moore-horspool\n */\nconst EventEmitter = require('node:events').EventEmitter\nconst inherits = require('node:util').inherits\n\nfunction SBMH (needle) {\n if (typeof needle === 'string') {\n needle = Buffer.from(needle)\n }\n\n if (!Buffer.isBuffer(needle)) {\n throw new TypeError('The needle has to be a String or a Buffer.')\n }\n\n const needleLength = needle.length\n\n if (needleLength === 0) {\n throw new Error('The needle cannot be an empty String/Buffer.')\n }\n\n if (needleLength > 256) {\n throw new Error('The needle cannot have a length bigger than 256.')\n }\n\n this.maxMatches = Infinity\n this.matches = 0\n\n this._occ = new Array(256)\n .fill(needleLength) // Initialize occurrence table.\n this._lookbehind_size = 0\n this._needle = needle\n this._bufpos = 0\n\n this._lookbehind = Buffer.alloc(needleLength)\n\n // Populate occurrence table with analysis of the needle,\n // ignoring last letter.\n for (var i = 0; i < needleLength - 1; ++i) { // eslint-disable-line no-var\n this._occ[needle[i]] = needleLength - 1 - i\n }\n}\ninherits(SBMH, EventEmitter)\n\nSBMH.prototype.reset = function () {\n this._lookbehind_size = 0\n this.matches = 0\n this._bufpos = 0\n}\n\nSBMH.prototype.push = function (chunk, pos) {\n if (!Buffer.isBuffer(chunk)) {\n chunk = Buffer.from(chunk, 'binary')\n }\n const chlen = chunk.length\n this._bufpos = pos || 0\n let r\n while (r !== chlen && this.matches < this.maxMatches) { r = this._sbmh_feed(chunk) }\n return r\n}\n\nSBMH.prototype._sbmh_feed = function (data) {\n const len = data.length\n const needle = this._needle\n const needleLength = needle.length\n const lastNeedleChar = needle[needleLength - 1]\n\n // Positive: points to a position in `data`\n // pos == 3 points to data[3]\n // Negative: points to a position in the lookbehind buffer\n // pos == -2 points to lookbehind[lookbehind_size - 2]\n let pos = -this._lookbehind_size\n let ch\n\n if (pos < 0) {\n // Lookbehind buffer is not empty. Perform Boyer-Moore-Horspool\n // search with character lookup code that considers both the\n // lookbehind buffer and the current round's haystack data.\n //\n // Loop until\n // there is a match.\n // or until\n // we've moved past the position that requires the\n // lookbehind buffer. In this case we switch to the\n // optimized loop.\n // or until\n // the character to look at lies outside the haystack.\n while (pos < 0 && pos <= len - needleLength) {\n ch = this._sbmh_lookup_char(data, pos + needleLength - 1)\n\n if (\n ch === lastNeedleChar &&\n this._sbmh_memcmp(data, pos, needleLength - 1)\n ) {\n this._lookbehind_size = 0\n ++this.matches\n this.emit('info', true)\n\n return (this._bufpos = pos + needleLength)\n }\n pos += this._occ[ch]\n }\n\n // No match.\n\n if (pos < 0) {\n // There's too few data for Boyer-Moore-Horspool to run,\n // so let's use a different algorithm to skip as much as\n // we can.\n // Forward pos until\n // the trailing part of lookbehind + data\n // looks like the beginning of the needle\n // or until\n // pos == 0\n while (pos < 0 && !this._sbmh_memcmp(data, pos, len - pos)) { ++pos }\n }\n\n if (pos >= 0) {\n // Discard lookbehind buffer.\n this.emit('info', false, this._lookbehind, 0, this._lookbehind_size)\n this._lookbehind_size = 0\n } else {\n // Cut off part of the lookbehind buffer that has\n // been processed and append the entire haystack\n // into it.\n const bytesToCutOff = this._lookbehind_size + pos\n if (bytesToCutOff > 0) {\n // The cut off data is guaranteed not to contain the needle.\n this.emit('info', false, this._lookbehind, 0, bytesToCutOff)\n }\n\n this._lookbehind.copy(this._lookbehind, 0, bytesToCutOff,\n this._lookbehind_size - bytesToCutOff)\n this._lookbehind_size -= bytesToCutOff\n\n data.copy(this._lookbehind, this._lookbehind_size)\n this._lookbehind_size += len\n\n this._bufpos = len\n return len\n }\n }\n\n pos += (pos >= 0) * this._bufpos\n\n // Lookbehind buffer is now empty. We only need to check if the\n // needle is in the haystack.\n if (data.indexOf(needle, pos) !== -1) {\n pos = data.indexOf(needle, pos)\n ++this.matches\n if (pos > 0) { this.emit('info', true, data, this._bufpos, pos) } else { this.emit('info', true) }\n\n return (this._bufpos = pos + needleLength)\n } else {\n pos = len - needleLength\n }\n\n // There was no match. If there's trailing haystack data that we cannot\n // match yet using the Boyer-Moore-Horspool algorithm (because the trailing\n // data is less than the needle size) then match using a modified\n // algorithm that starts matching from the beginning instead of the end.\n // Whatever trailing data is left after running this algorithm is added to\n // the lookbehind buffer.\n while (\n pos < len &&\n (\n data[pos] !== needle[0] ||\n (\n (Buffer.compare(\n data.subarray(pos, pos + len - pos),\n needle.subarray(0, len - pos)\n ) !== 0)\n )\n )\n ) {\n ++pos\n }\n if (pos < len) {\n data.copy(this._lookbehind, 0, pos, pos + (len - pos))\n this._lookbehind_size = len - pos\n }\n\n // Everything until pos is guaranteed not to contain needle data.\n if (pos > 0) { this.emit('info', false, data, this._bufpos, pos < len ? pos : len) }\n\n this._bufpos = len\n return len\n}\n\nSBMH.prototype._sbmh_lookup_char = function (data, pos) {\n return (pos < 0)\n ? this._lookbehind[this._lookbehind_size + pos]\n : data[pos]\n}\n\nSBMH.prototype._sbmh_memcmp = function (data, pos, len) {\n for (var i = 0; i < len; ++i) { // eslint-disable-line no-var\n if (this._sbmh_lookup_char(data, pos + i) !== this._needle[i]) { return false }\n }\n return true\n}\n\nmodule.exports = SBMH\n","'use strict'\n\nconst WritableStream = require('node:stream').Writable\nconst { inherits } = require('node:util')\nconst Dicer = require('../deps/dicer/lib/Dicer')\n\nconst MultipartParser = require('./types/multipart')\nconst UrlencodedParser = require('./types/urlencoded')\nconst parseParams = require('./utils/parseParams')\n\nfunction Busboy (opts) {\n if (!(this instanceof Busboy)) { return new Busboy(opts) }\n\n if (typeof opts !== 'object') {\n throw new TypeError('Busboy expected an options-Object.')\n }\n if (typeof opts.headers !== 'object') {\n throw new TypeError('Busboy expected an options-Object with headers-attribute.')\n }\n if (typeof opts.headers['content-type'] !== 'string') {\n throw new TypeError('Missing Content-Type-header.')\n }\n\n const {\n headers,\n ...streamOptions\n } = opts\n\n this.opts = {\n autoDestroy: false,\n ...streamOptions\n }\n WritableStream.call(this, this.opts)\n\n this._done = false\n this._parser = this.getParserByHeaders(headers)\n this._finished = false\n}\ninherits(Busboy, WritableStream)\n\nBusboy.prototype.emit = function (ev) {\n if (ev === 'finish') {\n if (!this._done) {\n this._parser?.end()\n return\n } else if (this._finished) {\n return\n }\n this._finished = true\n }\n WritableStream.prototype.emit.apply(this, arguments)\n}\n\nBusboy.prototype.getParserByHeaders = function (headers) {\n const parsed = parseParams(headers['content-type'])\n\n const cfg = {\n defCharset: this.opts.defCharset,\n fileHwm: this.opts.fileHwm,\n headers,\n highWaterMark: this.opts.highWaterMark,\n isPartAFile: this.opts.isPartAFile,\n limits: this.opts.limits,\n parsedConType: parsed,\n preservePath: this.opts.preservePath\n }\n\n if (MultipartParser.detect.test(parsed[0])) {\n return new MultipartParser(this, cfg)\n }\n if (UrlencodedParser.detect.test(parsed[0])) {\n return new UrlencodedParser(this, cfg)\n }\n throw new Error('Unsupported Content-Type.')\n}\n\nBusboy.prototype._write = function (chunk, encoding, cb) {\n this._parser.write(chunk, cb)\n}\n\nmodule.exports = Busboy\nmodule.exports.default = Busboy\nmodule.exports.Busboy = Busboy\n\nmodule.exports.Dicer = Dicer\n","'use strict'\n\n// TODO:\n// * support 1 nested multipart level\n// (see second multipart example here:\n// http://www.w3.org/TR/html401/interact/forms.html#didx-multipartform-data)\n// * support limits.fieldNameSize\n// -- this will require modifications to utils.parseParams\n\nconst { Readable } = require('node:stream')\nconst { inherits } = require('node:util')\n\nconst Dicer = require('../../deps/dicer/lib/Dicer')\n\nconst parseParams = require('../utils/parseParams')\nconst decodeText = require('../utils/decodeText')\nconst basename = require('../utils/basename')\nconst getLimit = require('../utils/getLimit')\n\nconst RE_BOUNDARY = /^boundary$/i\nconst RE_FIELD = /^form-data$/i\nconst RE_CHARSET = /^charset$/i\nconst RE_FILENAME = /^filename$/i\nconst RE_NAME = /^name$/i\n\nMultipart.detect = /^multipart\\/form-data/i\nfunction Multipart (boy, cfg) {\n let i\n let len\n const self = this\n let boundary\n const limits = cfg.limits\n const isPartAFile = cfg.isPartAFile || ((fieldName, contentType, fileName) => (contentType === 'application/octet-stream' || fileName !== undefined))\n const parsedConType = cfg.parsedConType || []\n const defCharset = cfg.defCharset || 'utf8'\n const preservePath = cfg.preservePath\n const fileOpts = { highWaterMark: cfg.fileHwm }\n\n for (i = 0, len = parsedConType.length; i < len; ++i) {\n if (Array.isArray(parsedConType[i]) &&\n RE_BOUNDARY.test(parsedConType[i][0])) {\n boundary = parsedConType[i][1]\n break\n }\n }\n\n function checkFinished () {\n if (nends === 0 && finished && !boy._done) {\n finished = false\n self.end()\n }\n }\n\n if (typeof boundary !== 'string') { throw new Error('Multipart: Boundary not found') }\n\n const fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024)\n const fileSizeLimit = getLimit(limits, 'fileSize', Infinity)\n const filesLimit = getLimit(limits, 'files', Infinity)\n const fieldsLimit = getLimit(limits, 'fields', Infinity)\n const partsLimit = getLimit(limits, 'parts', Infinity)\n const headerPairsLimit = getLimit(limits, 'headerPairs', 2000)\n const headerSizeLimit = getLimit(limits, 'headerSize', 80 * 1024)\n\n let nfiles = 0\n let nfields = 0\n let nends = 0\n let curFile\n let curField\n let finished = false\n\n this._needDrain = false\n this._pause = false\n this._cb = undefined\n this._nparts = 0\n this._boy = boy\n\n const parserCfg = {\n boundary,\n maxHeaderPairs: headerPairsLimit,\n maxHeaderSize: headerSizeLimit,\n partHwm: fileOpts.highWaterMark,\n highWaterMark: cfg.highWaterMark\n }\n\n this.parser = new Dicer(parserCfg)\n this.parser.on('drain', function () {\n self._needDrain = false\n if (self._cb && !self._pause) {\n const cb = self._cb\n self._cb = undefined\n cb()\n }\n }).on('part', function onPart (part) {\n if (++self._nparts > partsLimit) {\n self.parser.removeListener('part', onPart)\n self.parser.on('part', skipPart)\n boy.hitPartsLimit = true\n boy.emit('partsLimit')\n return skipPart(part)\n }\n\n // hack because streams2 _always_ doesn't emit 'end' until nextTick, so let\n // us emit 'end' early since we know the part has ended if we are already\n // seeing the next part\n if (curField) {\n const field = curField\n field.emit('end')\n field.removeAllListeners('end')\n }\n\n part.on('header', function (header) {\n let contype\n let fieldname\n let parsed\n let charset\n let encoding\n let filename\n let nsize = 0\n\n if (header['content-type']) {\n parsed = parseParams(header['content-type'][0])\n if (parsed[0]) {\n contype = parsed[0].toLowerCase()\n for (i = 0, len = parsed.length; i < len; ++i) {\n if (RE_CHARSET.test(parsed[i][0])) {\n charset = parsed[i][1].toLowerCase()\n break\n }\n }\n }\n }\n\n if (contype === undefined) { contype = 'text/plain' }\n if (charset === undefined) { charset = defCharset }\n\n if (header['content-disposition']) {\n parsed = parseParams(header['content-disposition'][0])\n if (!RE_FIELD.test(parsed[0])) { return skipPart(part) }\n for (i = 0, len = parsed.length; i < len; ++i) {\n if (RE_NAME.test(parsed[i][0])) {\n fieldname = parsed[i][1]\n } else if (RE_FILENAME.test(parsed[i][0])) {\n filename = parsed[i][1]\n if (!preservePath) { filename = basename(filename) }\n }\n }\n } else { return skipPart(part) }\n\n if (header['content-transfer-encoding']) { encoding = header['content-transfer-encoding'][0].toLowerCase() } else { encoding = '7bit' }\n\n let onData,\n onEnd\n\n if (isPartAFile(fieldname, contype, filename)) {\n // file/binary field\n if (nfiles === filesLimit) {\n if (!boy.hitFilesLimit) {\n boy.hitFilesLimit = true\n boy.emit('filesLimit')\n }\n return skipPart(part)\n }\n\n ++nfiles\n\n if (boy.listenerCount('file') === 0) {\n self.parser._ignore()\n return\n }\n\n ++nends\n const file = new FileStream(fileOpts)\n curFile = file\n file.on('end', function () {\n --nends\n self._pause = false\n checkFinished()\n if (self._cb && !self._needDrain) {\n const cb = self._cb\n self._cb = undefined\n cb()\n }\n })\n file._read = function (n) {\n if (!self._pause) { return }\n self._pause = false\n if (self._cb && !self._needDrain) {\n const cb = self._cb\n self._cb = undefined\n cb()\n }\n }\n boy.emit('file', fieldname, file, filename, encoding, contype)\n\n onData = function (data) {\n if ((nsize += data.length) > fileSizeLimit) {\n const extralen = fileSizeLimit - nsize + data.length\n if (extralen > 0) { file.push(data.slice(0, extralen)) }\n file.truncated = true\n file.bytesRead = fileSizeLimit\n part.removeAllListeners('data')\n file.emit('limit')\n return\n } else if (!file.push(data)) { self._pause = true }\n\n file.bytesRead = nsize\n }\n\n onEnd = function () {\n curFile = undefined\n file.push(null)\n }\n } else {\n // non-file field\n if (nfields === fieldsLimit) {\n if (!boy.hitFieldsLimit) {\n boy.hitFieldsLimit = true\n boy.emit('fieldsLimit')\n }\n return skipPart(part)\n }\n\n ++nfields\n ++nends\n let buffer = ''\n let truncated = false\n curField = part\n\n onData = function (data) {\n if ((nsize += data.length) > fieldSizeLimit) {\n const extralen = (fieldSizeLimit - (nsize - data.length))\n buffer += data.toString('binary', 0, extralen)\n truncated = true\n part.removeAllListeners('data')\n } else { buffer += data.toString('binary') }\n }\n\n onEnd = function () {\n curField = undefined\n if (buffer.length) { buffer = decodeText(buffer, 'binary', charset) }\n boy.emit('field', fieldname, buffer, false, truncated, encoding, contype)\n --nends\n checkFinished()\n }\n }\n\n /* As of node@2efe4ab761666 (v0.10.29+/v0.11.14+), busboy had become\n broken. Streams2/streams3 is a huge black box of confusion, but\n somehow overriding the sync state seems to fix things again (and still\n seems to work for previous node versions).\n */\n part._readableState.sync = false\n\n part.on('data', onData)\n part.on('end', onEnd)\n }).on('error', function (err) {\n if (curFile) { curFile.emit('error', err) }\n })\n }).on('error', function (err) {\n boy.emit('error', err)\n }).on('finish', function () {\n finished = true\n checkFinished()\n })\n}\n\nMultipart.prototype.write = function (chunk, cb) {\n const r = this.parser.write(chunk)\n if (r && !this._pause) {\n cb()\n } else {\n this._needDrain = !r\n this._cb = cb\n }\n}\n\nMultipart.prototype.end = function () {\n const self = this\n\n if (self.parser.writable) {\n self.parser.end()\n } else if (!self._boy._done) {\n process.nextTick(function () {\n self._boy._done = true\n self._boy.emit('finish')\n })\n }\n}\n\nfunction skipPart (part) {\n part.resume()\n}\n\nfunction FileStream (opts) {\n Readable.call(this, opts)\n\n this.bytesRead = 0\n\n this.truncated = false\n}\n\ninherits(FileStream, Readable)\n\nFileStream.prototype._read = function (n) {}\n\nmodule.exports = Multipart\n","'use strict'\n\nconst Decoder = require('../utils/Decoder')\nconst decodeText = require('../utils/decodeText')\nconst getLimit = require('../utils/getLimit')\n\nconst RE_CHARSET = /^charset$/i\n\nUrlEncoded.detect = /^application\\/x-www-form-urlencoded/i\nfunction UrlEncoded (boy, cfg) {\n const limits = cfg.limits\n const parsedConType = cfg.parsedConType\n this.boy = boy\n\n this.fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024)\n this.fieldNameSizeLimit = getLimit(limits, 'fieldNameSize', 100)\n this.fieldsLimit = getLimit(limits, 'fields', Infinity)\n\n let charset\n for (var i = 0, len = parsedConType.length; i < len; ++i) { // eslint-disable-line no-var\n if (Array.isArray(parsedConType[i]) &&\n RE_CHARSET.test(parsedConType[i][0])) {\n charset = parsedConType[i][1].toLowerCase()\n break\n }\n }\n\n if (charset === undefined) { charset = cfg.defCharset || 'utf8' }\n\n this.decoder = new Decoder()\n this.charset = charset\n this._fields = 0\n this._state = 'key'\n this._checkingBytes = true\n this._bytesKey = 0\n this._bytesVal = 0\n this._key = ''\n this._val = ''\n this._keyTrunc = false\n this._valTrunc = false\n this._hitLimit = false\n}\n\nUrlEncoded.prototype.write = function (data, cb) {\n if (this._fields === this.fieldsLimit) {\n if (!this.boy.hitFieldsLimit) {\n this.boy.hitFieldsLimit = true\n this.boy.emit('fieldsLimit')\n }\n return cb()\n }\n\n let idxeq; let idxamp; let i; let p = 0; const len = data.length\n\n while (p < len) {\n if (this._state === 'key') {\n idxeq = idxamp = undefined\n for (i = p; i < len; ++i) {\n if (!this._checkingBytes) { ++p }\n if (data[i] === 0x3D/* = */) {\n idxeq = i\n break\n } else if (data[i] === 0x26/* & */) {\n idxamp = i\n break\n }\n if (this._checkingBytes && this._bytesKey === this.fieldNameSizeLimit) {\n this._hitLimit = true\n break\n } else if (this._checkingBytes) { ++this._bytesKey }\n }\n\n if (idxeq !== undefined) {\n // key with assignment\n if (idxeq > p) { this._key += this.decoder.write(data.toString('binary', p, idxeq)) }\n this._state = 'val'\n\n this._hitLimit = false\n this._checkingBytes = true\n this._val = ''\n this._bytesVal = 0\n this._valTrunc = false\n this.decoder.reset()\n\n p = idxeq + 1\n } else if (idxamp !== undefined) {\n // key with no assignment\n ++this._fields\n let key; const keyTrunc = this._keyTrunc\n if (idxamp > p) { key = (this._key += this.decoder.write(data.toString('binary', p, idxamp))) } else { key = this._key }\n\n this._hitLimit = false\n this._checkingBytes = true\n this._key = ''\n this._bytesKey = 0\n this._keyTrunc = false\n this.decoder.reset()\n\n if (key.length) {\n this.boy.emit('field', decodeText(key, 'binary', this.charset),\n '',\n keyTrunc,\n false)\n }\n\n p = idxamp + 1\n if (this._fields === this.fieldsLimit) { return cb() }\n } else if (this._hitLimit) {\n // we may not have hit the actual limit if there are encoded bytes...\n if (i > p) { this._key += this.decoder.write(data.toString('binary', p, i)) }\n p = i\n if ((this._bytesKey = this._key.length) === this.fieldNameSizeLimit) {\n // yep, we actually did hit the limit\n this._checkingBytes = false\n this._keyTrunc = true\n }\n } else {\n if (p < len) { this._key += this.decoder.write(data.toString('binary', p)) }\n p = len\n }\n } else {\n idxamp = undefined\n for (i = p; i < len; ++i) {\n if (!this._checkingBytes) { ++p }\n if (data[i] === 0x26/* & */) {\n idxamp = i\n break\n }\n if (this._checkingBytes && this._bytesVal === this.fieldSizeLimit) {\n this._hitLimit = true\n break\n } else if (this._checkingBytes) { ++this._bytesVal }\n }\n\n if (idxamp !== undefined) {\n ++this._fields\n if (idxamp > p) { this._val += this.decoder.write(data.toString('binary', p, idxamp)) }\n this.boy.emit('field', decodeText(this._key, 'binary', this.charset),\n decodeText(this._val, 'binary', this.charset),\n this._keyTrunc,\n this._valTrunc)\n this._state = 'key'\n\n this._hitLimit = false\n this._checkingBytes = true\n this._key = ''\n this._bytesKey = 0\n this._keyTrunc = false\n this.decoder.reset()\n\n p = idxamp + 1\n if (this._fields === this.fieldsLimit) { return cb() }\n } else if (this._hitLimit) {\n // we may not have hit the actual limit if there are encoded bytes...\n if (i > p) { this._val += this.decoder.write(data.toString('binary', p, i)) }\n p = i\n if ((this._val === '' && this.fieldSizeLimit === 0) ||\n (this._bytesVal = this._val.length) === this.fieldSizeLimit) {\n // yep, we actually did hit the limit\n this._checkingBytes = false\n this._valTrunc = true\n }\n } else {\n if (p < len) { this._val += this.decoder.write(data.toString('binary', p)) }\n p = len\n }\n }\n }\n cb()\n}\n\nUrlEncoded.prototype.end = function () {\n if (this.boy._done) { return }\n\n if (this._state === 'key' && this._key.length > 0) {\n this.boy.emit('field', decodeText(this._key, 'binary', this.charset),\n '',\n this._keyTrunc,\n false)\n } else if (this._state === 'val') {\n this.boy.emit('field', decodeText(this._key, 'binary', this.charset),\n decodeText(this._val, 'binary', this.charset),\n this._keyTrunc,\n this._valTrunc)\n }\n this.boy._done = true\n this.boy.emit('finish')\n}\n\nmodule.exports = UrlEncoded\n","'use strict'\n\nconst RE_PLUS = /\\+/g\n\nconst HEX = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,\n 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\n]\n\nfunction Decoder () {\n this.buffer = undefined\n}\nDecoder.prototype.write = function (str) {\n // Replace '+' with ' ' before decoding\n str = str.replace(RE_PLUS, ' ')\n let res = ''\n let i = 0; let p = 0; const len = str.length\n for (; i < len; ++i) {\n if (this.buffer !== undefined) {\n if (!HEX[str.charCodeAt(i)]) {\n res += '%' + this.buffer\n this.buffer = undefined\n --i // retry character\n } else {\n this.buffer += str[i]\n ++p\n if (this.buffer.length === 2) {\n res += String.fromCharCode(parseInt(this.buffer, 16))\n this.buffer = undefined\n }\n }\n } else if (str[i] === '%') {\n if (i > p) {\n res += str.substring(p, i)\n p = i\n }\n this.buffer = ''\n ++p\n }\n }\n if (p < len && this.buffer === undefined) { res += str.substring(p) }\n return res\n}\nDecoder.prototype.reset = function () {\n this.buffer = undefined\n}\n\nmodule.exports = Decoder\n","'use strict'\n\nmodule.exports = function basename (path) {\n if (typeof path !== 'string') { return '' }\n for (var i = path.length - 1; i >= 0; --i) { // eslint-disable-line no-var\n switch (path.charCodeAt(i)) {\n case 0x2F: // '/'\n case 0x5C: // '\\'\n path = path.slice(i + 1)\n return (path === '..' || path === '.' ? '' : path)\n }\n }\n return (path === '..' || path === '.' ? '' : path)\n}\n","'use strict'\n\n// Node has always utf-8\nconst utf8Decoder = new TextDecoder('utf-8')\nconst textDecoders = new Map([\n ['utf-8', utf8Decoder],\n ['utf8', utf8Decoder]\n])\n\nfunction getDecoder (charset) {\n let lc\n while (true) {\n switch (charset) {\n case 'utf-8':\n case 'utf8':\n return decoders.utf8\n case 'latin1':\n case 'ascii': // TODO: Make these a separate, strict decoder?\n case 'us-ascii':\n case 'iso-8859-1':\n case 'iso8859-1':\n case 'iso88591':\n case 'iso_8859-1':\n case 'windows-1252':\n case 'iso_8859-1:1987':\n case 'cp1252':\n case 'x-cp1252':\n return decoders.latin1\n case 'utf16le':\n case 'utf-16le':\n case 'ucs2':\n case 'ucs-2':\n return decoders.utf16le\n case 'base64':\n return decoders.base64\n default:\n if (lc === undefined) {\n lc = true\n charset = charset.toLowerCase()\n continue\n }\n return decoders.other.bind(charset)\n }\n }\n}\n\nconst decoders = {\n utf8: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n return data.utf8Slice(0, data.length)\n },\n\n latin1: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n return data\n }\n return data.latin1Slice(0, data.length)\n },\n\n utf16le: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n return data.ucs2Slice(0, data.length)\n },\n\n base64: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n return data.base64Slice(0, data.length)\n },\n\n other: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n\n if (textDecoders.has(this.toString())) {\n try {\n return textDecoders.get(this).decode(data)\n } catch {}\n }\n return typeof data === 'string'\n ? data\n : data.toString()\n }\n}\n\nfunction decodeText (text, sourceEncoding, destEncoding) {\n if (text) {\n return getDecoder(destEncoding)(text, sourceEncoding)\n }\n return text\n}\n\nmodule.exports = decodeText\n","'use strict'\n\nmodule.exports = function getLimit (limits, name, defaultLimit) {\n if (\n !limits ||\n limits[name] === undefined ||\n limits[name] === null\n ) { return defaultLimit }\n\n if (\n typeof limits[name] !== 'number' ||\n isNaN(limits[name])\n ) { throw new TypeError('Limit ' + name + ' is not a valid number') }\n\n return limits[name]\n}\n","/* eslint-disable object-property-newline */\n'use strict'\n\nconst decodeText = require('./decodeText')\n\nconst RE_ENCODED = /%[a-fA-F0-9][a-fA-F0-9]/g\n\nconst EncodedLookup = {\n '%00': '\\x00', '%01': '\\x01', '%02': '\\x02', '%03': '\\x03', '%04': '\\x04',\n '%05': '\\x05', '%06': '\\x06', '%07': '\\x07', '%08': '\\x08', '%09': '\\x09',\n '%0a': '\\x0a', '%0A': '\\x0a', '%0b': '\\x0b', '%0B': '\\x0b', '%0c': '\\x0c',\n '%0C': '\\x0c', '%0d': '\\x0d', '%0D': '\\x0d', '%0e': '\\x0e', '%0E': '\\x0e',\n '%0f': '\\x0f', '%0F': '\\x0f', '%10': '\\x10', '%11': '\\x11', '%12': '\\x12',\n '%13': '\\x13', '%14': '\\x14', '%15': '\\x15', '%16': '\\x16', '%17': '\\x17',\n '%18': '\\x18', '%19': '\\x19', '%1a': '\\x1a', '%1A': '\\x1a', '%1b': '\\x1b',\n '%1B': '\\x1b', '%1c': '\\x1c', '%1C': '\\x1c', '%1d': '\\x1d', '%1D': '\\x1d',\n '%1e': '\\x1e', '%1E': '\\x1e', '%1f': '\\x1f', '%1F': '\\x1f', '%20': '\\x20',\n '%21': '\\x21', '%22': '\\x22', '%23': '\\x23', '%24': '\\x24', '%25': '\\x25',\n '%26': '\\x26', '%27': '\\x27', '%28': '\\x28', '%29': '\\x29', '%2a': '\\x2a',\n '%2A': '\\x2a', '%2b': '\\x2b', '%2B': '\\x2b', '%2c': '\\x2c', '%2C': '\\x2c',\n '%2d': '\\x2d', '%2D': '\\x2d', '%2e': '\\x2e', '%2E': '\\x2e', '%2f': '\\x2f',\n '%2F': '\\x2f', '%30': '\\x30', '%31': '\\x31', '%32': '\\x32', '%33': '\\x33',\n '%34': '\\x34', '%35': '\\x35', '%36': '\\x36', '%37': '\\x37', '%38': '\\x38',\n '%39': '\\x39', '%3a': '\\x3a', '%3A': '\\x3a', '%3b': '\\x3b', '%3B': '\\x3b',\n '%3c': '\\x3c', '%3C': '\\x3c', '%3d': '\\x3d', '%3D': '\\x3d', '%3e': '\\x3e',\n '%3E': '\\x3e', '%3f': '\\x3f', '%3F': '\\x3f', '%40': '\\x40', '%41': '\\x41',\n '%42': '\\x42', '%43': '\\x43', '%44': '\\x44', '%45': '\\x45', '%46': '\\x46',\n '%47': '\\x47', '%48': '\\x48', '%49': '\\x49', '%4a': '\\x4a', '%4A': '\\x4a',\n '%4b': '\\x4b', '%4B': '\\x4b', '%4c': '\\x4c', '%4C': '\\x4c', '%4d': '\\x4d',\n '%4D': '\\x4d', '%4e': '\\x4e', '%4E': '\\x4e', '%4f': '\\x4f', '%4F': '\\x4f',\n '%50': '\\x50', '%51': '\\x51', '%52': '\\x52', '%53': '\\x53', '%54': '\\x54',\n '%55': '\\x55', '%56': '\\x56', '%57': '\\x57', '%58': '\\x58', '%59': '\\x59',\n '%5a': '\\x5a', '%5A': '\\x5a', '%5b': '\\x5b', '%5B': '\\x5b', '%5c': '\\x5c',\n '%5C': '\\x5c', '%5d': '\\x5d', '%5D': '\\x5d', '%5e': '\\x5e', '%5E': '\\x5e',\n '%5f': '\\x5f', '%5F': '\\x5f', '%60': '\\x60', '%61': '\\x61', '%62': '\\x62',\n '%63': '\\x63', '%64': '\\x64', '%65': '\\x65', '%66': '\\x66', '%67': '\\x67',\n '%68': '\\x68', '%69': '\\x69', '%6a': '\\x6a', '%6A': '\\x6a', '%6b': '\\x6b',\n '%6B': '\\x6b', '%6c': '\\x6c', '%6C': '\\x6c', '%6d': '\\x6d', '%6D': '\\x6d',\n '%6e': '\\x6e', '%6E': '\\x6e', '%6f': '\\x6f', '%6F': '\\x6f', '%70': '\\x70',\n '%71': '\\x71', '%72': '\\x72', '%73': '\\x73', '%74': '\\x74', '%75': '\\x75',\n '%76': '\\x76', '%77': '\\x77', '%78': '\\x78', '%79': '\\x79', '%7a': '\\x7a',\n '%7A': '\\x7a', '%7b': '\\x7b', '%7B': '\\x7b', '%7c': '\\x7c', '%7C': '\\x7c',\n '%7d': '\\x7d', '%7D': '\\x7d', '%7e': '\\x7e', '%7E': '\\x7e', '%7f': '\\x7f',\n '%7F': '\\x7f', '%80': '\\x80', '%81': '\\x81', '%82': '\\x82', '%83': '\\x83',\n '%84': '\\x84', '%85': '\\x85', '%86': '\\x86', '%87': '\\x87', '%88': '\\x88',\n '%89': '\\x89', '%8a': '\\x8a', '%8A': '\\x8a', '%8b': '\\x8b', '%8B': '\\x8b',\n '%8c': '\\x8c', '%8C': '\\x8c', '%8d': '\\x8d', '%8D': '\\x8d', '%8e': '\\x8e',\n '%8E': '\\x8e', '%8f': '\\x8f', '%8F': '\\x8f', '%90': '\\x90', '%91': '\\x91',\n '%92': '\\x92', '%93': '\\x93', '%94': '\\x94', '%95': '\\x95', '%96': '\\x96',\n '%97': '\\x97', '%98': '\\x98', '%99': '\\x99', '%9a': '\\x9a', '%9A': '\\x9a',\n '%9b': '\\x9b', '%9B': '\\x9b', '%9c': '\\x9c', '%9C': '\\x9c', '%9d': '\\x9d',\n '%9D': '\\x9d', '%9e': '\\x9e', '%9E': '\\x9e', '%9f': '\\x9f', '%9F': '\\x9f',\n '%a0': '\\xa0', '%A0': '\\xa0', '%a1': '\\xa1', '%A1': '\\xa1', '%a2': '\\xa2',\n '%A2': '\\xa2', '%a3': '\\xa3', '%A3': '\\xa3', '%a4': '\\xa4', '%A4': '\\xa4',\n '%a5': '\\xa5', '%A5': '\\xa5', '%a6': '\\xa6', '%A6': '\\xa6', '%a7': '\\xa7',\n '%A7': '\\xa7', '%a8': '\\xa8', '%A8': '\\xa8', '%a9': '\\xa9', '%A9': '\\xa9',\n '%aa': '\\xaa', '%Aa': '\\xaa', '%aA': '\\xaa', '%AA': '\\xaa', '%ab': '\\xab',\n '%Ab': '\\xab', '%aB': '\\xab', '%AB': '\\xab', '%ac': '\\xac', '%Ac': '\\xac',\n '%aC': '\\xac', '%AC': '\\xac', '%ad': '\\xad', '%Ad': '\\xad', '%aD': '\\xad',\n '%AD': '\\xad', '%ae': '\\xae', '%Ae': '\\xae', '%aE': '\\xae', '%AE': '\\xae',\n '%af': '\\xaf', '%Af': '\\xaf', '%aF': '\\xaf', '%AF': '\\xaf', '%b0': '\\xb0',\n '%B0': '\\xb0', '%b1': '\\xb1', '%B1': '\\xb1', '%b2': '\\xb2', '%B2': '\\xb2',\n '%b3': '\\xb3', '%B3': '\\xb3', '%b4': '\\xb4', '%B4': '\\xb4', '%b5': '\\xb5',\n '%B5': '\\xb5', '%b6': '\\xb6', '%B6': '\\xb6', '%b7': '\\xb7', '%B7': '\\xb7',\n '%b8': '\\xb8', '%B8': '\\xb8', '%b9': '\\xb9', '%B9': '\\xb9', '%ba': '\\xba',\n '%Ba': '\\xba', '%bA': '\\xba', '%BA': '\\xba', '%bb': '\\xbb', '%Bb': '\\xbb',\n '%bB': '\\xbb', '%BB': '\\xbb', '%bc': '\\xbc', '%Bc': '\\xbc', '%bC': '\\xbc',\n '%BC': '\\xbc', '%bd': '\\xbd', '%Bd': '\\xbd', '%bD': '\\xbd', '%BD': '\\xbd',\n '%be': '\\xbe', '%Be': '\\xbe', '%bE': '\\xbe', '%BE': '\\xbe', '%bf': '\\xbf',\n '%Bf': '\\xbf', '%bF': '\\xbf', '%BF': '\\xbf', '%c0': '\\xc0', '%C0': '\\xc0',\n '%c1': '\\xc1', '%C1': '\\xc1', '%c2': '\\xc2', '%C2': '\\xc2', '%c3': '\\xc3',\n '%C3': '\\xc3', '%c4': '\\xc4', '%C4': '\\xc4', '%c5': '\\xc5', '%C5': '\\xc5',\n '%c6': '\\xc6', '%C6': '\\xc6', '%c7': '\\xc7', '%C7': '\\xc7', '%c8': '\\xc8',\n '%C8': '\\xc8', '%c9': '\\xc9', '%C9': '\\xc9', '%ca': '\\xca', '%Ca': '\\xca',\n '%cA': '\\xca', '%CA': '\\xca', '%cb': '\\xcb', '%Cb': '\\xcb', '%cB': '\\xcb',\n '%CB': '\\xcb', '%cc': '\\xcc', '%Cc': '\\xcc', '%cC': '\\xcc', '%CC': '\\xcc',\n '%cd': '\\xcd', '%Cd': '\\xcd', '%cD': '\\xcd', '%CD': '\\xcd', '%ce': '\\xce',\n '%Ce': '\\xce', '%cE': '\\xce', '%CE': '\\xce', '%cf': '\\xcf', '%Cf': '\\xcf',\n '%cF': '\\xcf', '%CF': '\\xcf', '%d0': '\\xd0', '%D0': '\\xd0', '%d1': '\\xd1',\n '%D1': '\\xd1', '%d2': '\\xd2', '%D2': '\\xd2', '%d3': '\\xd3', '%D3': '\\xd3',\n '%d4': '\\xd4', '%D4': '\\xd4', '%d5': '\\xd5', '%D5': '\\xd5', '%d6': '\\xd6',\n '%D6': '\\xd6', '%d7': '\\xd7', '%D7': '\\xd7', '%d8': '\\xd8', '%D8': '\\xd8',\n '%d9': '\\xd9', '%D9': '\\xd9', '%da': '\\xda', '%Da': '\\xda', '%dA': '\\xda',\n '%DA': '\\xda', '%db': '\\xdb', '%Db': '\\xdb', '%dB': '\\xdb', '%DB': '\\xdb',\n '%dc': '\\xdc', '%Dc': '\\xdc', '%dC': '\\xdc', '%DC': '\\xdc', '%dd': '\\xdd',\n '%Dd': '\\xdd', '%dD': '\\xdd', '%DD': '\\xdd', '%de': '\\xde', '%De': '\\xde',\n '%dE': '\\xde', '%DE': '\\xde', '%df': '\\xdf', '%Df': '\\xdf', '%dF': '\\xdf',\n '%DF': '\\xdf', '%e0': '\\xe0', '%E0': '\\xe0', '%e1': '\\xe1', '%E1': '\\xe1',\n '%e2': '\\xe2', '%E2': '\\xe2', '%e3': '\\xe3', '%E3': '\\xe3', '%e4': '\\xe4',\n '%E4': '\\xe4', '%e5': '\\xe5', '%E5': '\\xe5', '%e6': '\\xe6', '%E6': '\\xe6',\n '%e7': '\\xe7', '%E7': '\\xe7', '%e8': '\\xe8', '%E8': '\\xe8', '%e9': '\\xe9',\n '%E9': '\\xe9', '%ea': '\\xea', '%Ea': '\\xea', '%eA': '\\xea', '%EA': '\\xea',\n '%eb': '\\xeb', '%Eb': '\\xeb', '%eB': '\\xeb', '%EB': '\\xeb', '%ec': '\\xec',\n '%Ec': '\\xec', '%eC': '\\xec', '%EC': '\\xec', '%ed': '\\xed', '%Ed': '\\xed',\n '%eD': '\\xed', '%ED': '\\xed', '%ee': '\\xee', '%Ee': '\\xee', '%eE': '\\xee',\n '%EE': '\\xee', '%ef': '\\xef', '%Ef': '\\xef', '%eF': '\\xef', '%EF': '\\xef',\n '%f0': '\\xf0', '%F0': '\\xf0', '%f1': '\\xf1', '%F1': '\\xf1', '%f2': '\\xf2',\n '%F2': '\\xf2', '%f3': '\\xf3', '%F3': '\\xf3', '%f4': '\\xf4', '%F4': '\\xf4',\n '%f5': '\\xf5', '%F5': '\\xf5', '%f6': '\\xf6', '%F6': '\\xf6', '%f7': '\\xf7',\n '%F7': '\\xf7', '%f8': '\\xf8', '%F8': '\\xf8', '%f9': '\\xf9', '%F9': '\\xf9',\n '%fa': '\\xfa', '%Fa': '\\xfa', '%fA': '\\xfa', '%FA': '\\xfa', '%fb': '\\xfb',\n '%Fb': '\\xfb', '%fB': '\\xfb', '%FB': '\\xfb', '%fc': '\\xfc', '%Fc': '\\xfc',\n '%fC': '\\xfc', '%FC': '\\xfc', '%fd': '\\xfd', '%Fd': '\\xfd', '%fD': '\\xfd',\n '%FD': '\\xfd', '%fe': '\\xfe', '%Fe': '\\xfe', '%fE': '\\xfe', '%FE': '\\xfe',\n '%ff': '\\xff', '%Ff': '\\xff', '%fF': '\\xff', '%FF': '\\xff'\n}\n\nfunction encodedReplacer (match) {\n return EncodedLookup[match]\n}\n\nconst STATE_KEY = 0\nconst STATE_VALUE = 1\nconst STATE_CHARSET = 2\nconst STATE_LANG = 3\n\nfunction parseParams (str) {\n const res = []\n let state = STATE_KEY\n let charset = ''\n let inquote = false\n let escaping = false\n let p = 0\n let tmp = ''\n const len = str.length\n\n for (var i = 0; i < len; ++i) { // eslint-disable-line no-var\n const char = str[i]\n if (char === '\\\\' && inquote) {\n if (escaping) { escaping = false } else {\n escaping = true\n continue\n }\n } else if (char === '\"') {\n if (!escaping) {\n if (inquote) {\n inquote = false\n state = STATE_KEY\n } else { inquote = true }\n continue\n } else { escaping = false }\n } else {\n if (escaping && inquote) { tmp += '\\\\' }\n escaping = false\n if ((state === STATE_CHARSET || state === STATE_LANG) && char === \"'\") {\n if (state === STATE_CHARSET) {\n state = STATE_LANG\n charset = tmp.substring(1)\n } else { state = STATE_VALUE }\n tmp = ''\n continue\n } else if (state === STATE_KEY &&\n (char === '*' || char === '=') &&\n res.length) {\n state = char === '*'\n ? STATE_CHARSET\n : STATE_VALUE\n res[p] = [tmp, undefined]\n tmp = ''\n continue\n } else if (!inquote && char === ';') {\n state = STATE_KEY\n if (charset) {\n if (tmp.length) {\n tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer),\n 'binary',\n charset)\n }\n charset = ''\n } else if (tmp.length) {\n tmp = decodeText(tmp, 'binary', 'utf8')\n }\n if (res[p] === undefined) { res[p] = tmp } else { res[p][1] = tmp }\n tmp = ''\n ++p\n continue\n } else if (!inquote && (char === ' ' || char === '\\t')) { continue }\n }\n tmp += char\n }\n if (charset && tmp.length) {\n tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer),\n 'binary',\n charset)\n } else if (tmp) {\n tmp = decodeText(tmp, 'binary', 'utf8')\n }\n\n if (res[p] === undefined) {\n if (tmp) { res[p] = tmp }\n } else { res[p][1] = tmp }\n\n return res\n}\n\nmodule.exports = parseParams\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\tvar threw = true;\n\ttry {\n\t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t\tthrew = false;\n\t} finally {\n\t\tif(threw) delete __webpack_module_cache__[moduleId];\n\t}\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","\nif (typeof __webpack_require__ !== 'undefined') __webpack_require__.ab = __dirname + \"/\";","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(94822);\n",""],"names":[],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"index.js","mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3oBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrBA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtZA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACj9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1hBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7SA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACNA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChEA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClBA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACTA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxNA;AACA;AACA;AACA;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACNA;AACA;AACA;AACA;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5eA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7QA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrBA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA0NA;;;;;;;;;ACppXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA8CA;;;;;;;;;ACvhDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA8BA;;;;;;;;;AC//BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAuBA;;;;;;;;;ACrnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkCA;;;;;;;;;ACh7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAiBA;;;;;;;;ACpbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;AC7RA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;;;;;;;;;ACnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACnMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;AC5HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;;ACxMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;;;;;;;;ACrEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;;;;;;;;ACzHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AASA;;;;;;;;AClHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;AC/MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAUA;;;;;;;;ACrZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;;;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjnEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;;;;;;;;AC1OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAwBA;;;;;;;;AC5eA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAaA;;;;;;;;ACpbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;;ACtEA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AASA;;;;;;;;AC7PA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAoBA;;;;;;;;;ACxaA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;;;;;;;;ACrGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;AC7TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACtFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;;;;;;;;AC9qBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;;;;;;;;ACrJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AASA;;;;;;;;AC5OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAQA;;;;;;;;;ACjGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYA;;;;;;;;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAWA;;;;;;;;AC5kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AA4DA;;;;;;;;ACvuCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAYA;;;;;;;;ACpJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACpDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;AC9CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;;;;;;;;ACtHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAOA;;;;;;;;ACneA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAkBA;;;;;;;;;AC1VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;;ACxFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAIA;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAKA;;;;;;;;AChEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAMA;;;;;;;;;AC1JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClKA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACt0BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7OA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnRA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpmBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtaA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChLA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3IA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7JA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/bA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClWA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9CA;AACA;AACA;AACA;;;;;;;;ACHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACzMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACroFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;;;;;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACrIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzCA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpaA;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACnJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC3NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxGA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjUA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACr0BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/IA;AACA;AACA;AACA;AACA;;;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1uEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5TA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACzgBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5lBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtJA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClnBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxQA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5kBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnmEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACj7BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1jBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACroBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvYA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC/UA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACrRA;;;;;;;;ACAA;;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1KA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7MA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC1DA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9VA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5BA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACjMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC5LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClSA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AClDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC9SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACxEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvVA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACXA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChoBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC9EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC5CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACvBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACtCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC1GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC7EA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACpCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AChBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACpBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AChCA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpNA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACZA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACnOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACpFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjTA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;AC7LA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACrDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACbA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACjHA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;ACfA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;AChCA;AACA;AACA;AACA;AACA;;;;ACJA;AACA;;;;AEDA;AACA;AACA;AACA","sources":[".././lib/action.js",".././lib/assembly.js",".././lib/comment.js",".././lib/diff.js",".././lib/index.js",".././lib/stage-processor.js",".././node_modules/@actions/core/lib/command.js",".././node_modules/@actions/core/lib/core.js",".././node_modules/@actions/core/lib/file-command.js",".././node_modules/@actions/core/lib/oidc-utils.js",".././node_modules/@actions/core/lib/path-utils.js",".././node_modules/@actions/core/lib/summary.js",".././node_modules/@actions/core/lib/utils.js",".././node_modules/@actions/github/lib/context.js",".././node_modules/@actions/github/lib/github.js",".././node_modules/@actions/github/lib/internal/utils.js",".././node_modules/@actions/github/lib/utils.js",".././node_modules/@actions/http-client/lib/auth.js",".././node_modules/@actions/http-client/lib/index.js",".././node_modules/@actions/http-client/lib/proxy.js",".././node_modules/@aws-cdk/aws-service-spec/lib/index.js",".././node_modules/@aws-cdk/aws-service-spec/node_modules/@aws-cdk/service-spec-types/lib/index.js",".././node_modules/@aws-cdk/aws-service-spec/node_modules/@aws-cdk/service-spec-types/lib/types/augmentations.js",".././node_modules/@aws-cdk/aws-service-spec/node_modules/@aws-cdk/service-spec-types/lib/types/database.js",".././node_modules/@aws-cdk/aws-service-spec/node_modules/@aws-cdk/service-spec-types/lib/types/diff.js",".././node_modules/@aws-cdk/aws-service-spec/node_modules/@aws-cdk/service-spec-types/lib/types/metrics.js",".././node_modules/@aws-cdk/aws-service-spec/node_modules/@aws-cdk/service-spec-types/lib/types/resource.js",".././node_modules/@aws-cdk/aws-service-spec/node_modules/@aws-cdk/service-spec-types/lib/util/sorting.js",".././node_modules/@aws-cdk/cloud-assembly-schema/.warnings.jsii.js",".././node_modules/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/artifact-schema.js",".././node_modules/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/context-queries.js",".././node_modules/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/index.js",".././node_modules/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/metadata-schema.js",".././node_modules/@aws-cdk/cloud-assembly-schema/lib/cloud-assembly/schema.js",".././node_modules/@aws-cdk/cloud-assembly-schema/lib/manifest.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/jsonschema/lib/attribute.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/jsonschema/lib/helpers.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/jsonschema/lib/index.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/jsonschema/lib/scan.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/jsonschema/lib/validator.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/lru-cache/index.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/classes/comparator.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/classes/range.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/classes/semver.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/clean.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/cmp.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/coerce.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/compare-build.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/compare-loose.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/compare.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/diff.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/eq.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/gt.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/gte.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/inc.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/lt.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/lte.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/major.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/minor.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/neq.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/parse.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/patch.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/prerelease.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/rcompare.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/rsort.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/satisfies.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/sort.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/functions/valid.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/index.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/internal/constants.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/internal/debug.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/internal/identifiers.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/internal/parse-options.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/internal/re.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/gtr.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/intersects.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/ltr.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/max-satisfying.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/min-satisfying.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/min-version.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/outside.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/simplify.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/subset.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/to-comparators.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/semver/ranges/valid.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/yallist/iterator.js",".././node_modules/@aws-cdk/cloud-assembly-schema/node_modules/yallist/yallist.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diff-template.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diff/index.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diff/maybe-parsed.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diff/types.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diff/util.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/diffable.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/format-table.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/format.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/iam/iam-changes.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/iam/managed-policy.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/iam/statement.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/index.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/network/security-group-changes.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/network/security-group-rule.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/render-intrinsics.js",".././node_modules/@aws-cdk/cloudformation-diff/lib/util.js",".././node_modules/@aws-cdk/service-spec-types/lib/index.js",".././node_modules/@aws-cdk/service-spec-types/lib/types/augmentations.js",".././node_modules/@aws-cdk/service-spec-types/lib/types/database.js",".././node_modules/@aws-cdk/service-spec-types/lib/types/diff.js",".././node_modules/@aws-cdk/service-spec-types/lib/types/metrics.js",".././node_modules/@aws-cdk/service-spec-types/lib/types/resource.js",".././node_modules/@aws-cdk/service-spec-types/lib/util/sorting.js",".././node_modules/@aws-sdk/client-cloudformation/dist-cjs/auth/httpAuthSchemeProvider.js",".././node_modules/@aws-sdk/client-cloudformation/dist-cjs/endpoint/endpointResolver.js",".././node_modules/@aws-sdk/client-cloudformation/dist-cjs/endpoint/ruleset.js",".././node_modules/@aws-sdk/client-cloudformation/dist-cjs/index.js",".././node_modules/@aws-sdk/client-cloudformation/dist-cjs/runtimeConfig.js",".././node_modules/@aws-sdk/client-cloudformation/dist-cjs/runtimeConfig.shared.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/index.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/md5.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/native.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/nil.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/parse.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/regex.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/rng.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/sha1.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/stringify.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/v1.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/v3.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/v35.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/v4.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/v5.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/validate.js",".././node_modules/@aws-sdk/client-cloudformation/node_modules/uuid/dist/version.js",".././node_modules/@aws-sdk/client-cognito-identity/dist-cjs/auth/httpAuthSchemeProvider.js",".././node_modules/@aws-sdk/client-cognito-identity/dist-cjs/endpoint/endpointResolver.js",".././node_modules/@aws-sdk/client-cognito-identity/dist-cjs/endpoint/ruleset.js",".././node_modules/@aws-sdk/client-cognito-identity/dist-cjs/index.js",".././node_modules/@aws-sdk/client-cognito-identity/dist-cjs/runtimeConfig.js",".././node_modules/@aws-sdk/client-cognito-identity/dist-cjs/runtimeConfig.shared.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/auth/httpAuthSchemeProvider.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/endpoint/endpointResolver.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/endpoint/ruleset.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/index.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/runtimeConfig.js",".././node_modules/@aws-sdk/client-sso-oidc/dist-cjs/runtimeConfig.shared.js",".././node_modules/@aws-sdk/client-sso/dist-cjs/auth/httpAuthSchemeProvider.js",".././node_modules/@aws-sdk/client-sso/dist-cjs/endpoint/endpointResolver.js",".././node_modules/@aws-sdk/client-sso/dist-cjs/endpoint/ruleset.js",".././node_modules/@aws-sdk/client-sso/dist-cjs/index.js",".././node_modules/@aws-sdk/client-sso/dist-cjs/runtimeConfig.js",".././node_modules/@aws-sdk/client-sso/dist-cjs/runtimeConfig.shared.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/STSClient.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/auth/httpAuthExtensionConfiguration.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/auth/httpAuthSchemeProvider.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/endpoint/EndpointParameters.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/endpoint/endpointResolver.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/endpoint/ruleset.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/index.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/runtimeConfig.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/runtimeConfig.shared.js",".././node_modules/@aws-sdk/client-sts/dist-cjs/runtimeExtensions.js",".././node_modules/@aws-sdk/core/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-cognito-identity/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-env/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/checkUrl.js",".././node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/fromHttp.js",".././node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/requestHelpers.js",".././node_modules/@aws-sdk/credential-provider-http/dist-cjs/fromHttp/retry-wrapper.js",".././node_modules/@aws-sdk/credential-provider-http/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-ini/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-node/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-process/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-sso/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromTokenFile.js",".././node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/fromWebToken.js",".././node_modules/@aws-sdk/credential-provider-web-identity/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromCognitoIdentity.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromCognitoIdentityPool.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromContainerMetadata.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromEnv.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromIni.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromInstanceMetadata.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromNodeProviderChain.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromProcess.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromSSO.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromTemporaryCredentials.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromTokenFile.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/fromWebToken.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/index.js",".././node_modules/@aws-sdk/credential-providers/dist-cjs/loadSts.js",".././node_modules/@aws-sdk/middleware-host-header/dist-cjs/index.js",".././node_modules/@aws-sdk/middleware-logger/dist-cjs/index.js",".././node_modules/@aws-sdk/middleware-recursion-detection/dist-cjs/index.js",".././node_modules/@aws-sdk/middleware-user-agent/dist-cjs/index.js",".././node_modules/@aws-sdk/region-config-resolver/dist-cjs/index.js",".././node_modules/@aws-sdk/token-providers/dist-cjs/index.js",".././node_modules/@aws-sdk/util-endpoints/dist-cjs/index.js",".././node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js",".././node_modules/@cdklabs/tskb/lib/database.js",".././node_modules/@cdklabs/tskb/lib/entity.js",".././node_modules/@cdklabs/tskb/lib/index.js",".././node_modules/@cdklabs/tskb/lib/invariant.js",".././node_modules/@cdklabs/tskb/lib/relationship.js",".././node_modules/@cdklabs/tskb/lib/result.js",".././node_modules/@cdklabs/tskb/lib/sorted-map.js",".././node_modules/@octokit/auth-token/dist-node/index.js",".././node_modules/@octokit/core/dist-node/index.js",".././node_modules/@octokit/endpoint/dist-node/index.js",".././node_modules/@octokit/graphql/dist-node/index.js",".././node_modules/@octokit/plugin-paginate-rest/dist-node/index.js",".././node_modules/@octokit/plugin-rest-endpoint-methods/dist-node/index.js",".././node_modules/@octokit/request-error/dist-node/index.js",".././node_modules/@octokit/request/dist-node/index.js",".././node_modules/@smithy/config-resolver/dist-cjs/index.js",".././node_modules/@smithy/core/dist-cjs/index.js",".././node_modules/@smithy/credential-provider-imds/dist-cjs/index.js",".././node_modules/@smithy/hash-node/dist-cjs/index.js",".././node_modules/@smithy/is-array-buffer/dist-cjs/index.js",".././node_modules/@smithy/middleware-content-length/dist-cjs/index.js",".././node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointFromConfig.js",".././node_modules/@smithy/middleware-endpoint/dist-cjs/adaptors/getEndpointUrlConfig.js",".././node_modules/@smithy/middleware-endpoint/dist-cjs/index.js",".././node_modules/@smithy/middleware-retry/dist-cjs/index.js",".././node_modules/@smithy/middleware-retry/dist-cjs/isStreamingPayload/isStreamingPayload.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/index.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/md5.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/native.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/nil.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/parse.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/regex.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/rng.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/sha1.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/stringify.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/v1.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/v3.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/v35.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/v4.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/v5.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/validate.js",".././node_modules/@smithy/middleware-retry/node_modules/uuid/dist/version.js",".././node_modules/@smithy/middleware-serde/dist-cjs/index.js",".././node_modules/@smithy/middleware-stack/dist-cjs/index.js",".././node_modules/@smithy/node-config-provider/dist-cjs/index.js",".././node_modules/@smithy/node-http-handler/dist-cjs/index.js",".././node_modules/@smithy/property-provider/dist-cjs/index.js",".././node_modules/@smithy/protocol-http/dist-cjs/index.js",".././node_modules/@smithy/querystring-builder/dist-cjs/index.js",".././node_modules/@smithy/querystring-parser/dist-cjs/index.js",".././node_modules/@smithy/service-error-classification/dist-cjs/index.js",".././node_modules/@smithy/shared-ini-file-loader/dist-cjs/getHomeDir.js",".././node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFilepath.js",".././node_modules/@smithy/shared-ini-file-loader/dist-cjs/getSSOTokenFromFile.js",".././node_modules/@smithy/shared-ini-file-loader/dist-cjs/index.js",".././node_modules/@smithy/shared-ini-file-loader/dist-cjs/slurpFile.js",".././node_modules/@smithy/signature-v4/dist-cjs/index.js",".././node_modules/@smithy/smithy-client/dist-cjs/index.js",".././node_modules/@smithy/types/dist-cjs/index.js",".././node_modules/@smithy/url-parser/dist-cjs/index.js",".././node_modules/@smithy/util-base64/dist-cjs/fromBase64.js",".././node_modules/@smithy/util-base64/dist-cjs/index.js",".././node_modules/@smithy/util-base64/dist-cjs/toBase64.js",".././node_modules/@smithy/util-body-length-node/dist-cjs/index.js",".././node_modules/@smithy/util-buffer-from/dist-cjs/index.js",".././node_modules/@smithy/util-config-provider/dist-cjs/index.js",".././node_modules/@smithy/util-defaults-mode-node/dist-cjs/index.js",".././node_modules/@smithy/util-endpoints/dist-cjs/index.js",".././node_modules/@smithy/util-hex-encoding/dist-cjs/index.js",".././node_modules/@smithy/util-middleware/dist-cjs/index.js",".././node_modules/@smithy/util-retry/dist-cjs/index.js",".././node_modules/@smithy/util-stream/dist-cjs/getAwsChunkedEncodingStream.js",".././node_modules/@smithy/util-stream/dist-cjs/index.js",".././node_modules/@smithy/util-stream/dist-cjs/sdk-stream-mixin.js",".././node_modules/@smithy/util-uri-escape/dist-cjs/index.js",".././node_modules/@smithy/util-utf8/dist-cjs/index.js",".././node_modules/@smithy/util-waiter/dist-cjs/index.js",".././node_modules/ansi-regex/index.js",".././node_modules/ansi-styles/index.js",".././node_modules/astral-regex/index.js",".././node_modules/before-after-hook/index.js",".././node_modules/before-after-hook/lib/add.js",".././node_modules/before-after-hook/lib/register.js",".././node_modules/before-after-hook/lib/remove.js",".././node_modules/chalk/source/index.js",".././node_modules/chalk/source/templates.js",".././node_modules/chalk/source/util.js",".././node_modules/color-convert/conversions.js",".././node_modules/color-convert/index.js",".././node_modules/color-convert/route.js",".././node_modules/color-name/index.js",".././node_modules/deprecation/dist-node/index.js",".././node_modules/diff/lib/convert/dmp.js",".././node_modules/diff/lib/convert/xml.js",".././node_modules/diff/lib/diff/array.js",".././node_modules/diff/lib/diff/base.js",".././node_modules/diff/lib/diff/character.js",".././node_modules/diff/lib/diff/css.js",".././node_modules/diff/lib/diff/json.js",".././node_modules/diff/lib/diff/line.js",".././node_modules/diff/lib/diff/sentence.js",".././node_modules/diff/lib/diff/word.js",".././node_modules/diff/lib/index.js",".././node_modules/diff/lib/patch/apply.js",".././node_modules/diff/lib/patch/create.js",".././node_modules/diff/lib/patch/merge.js",".././node_modules/diff/lib/patch/parse.js",".././node_modules/diff/lib/patch/reverse.js",".././node_modules/diff/lib/util/array.js",".././node_modules/diff/lib/util/distance-iterator.js",".././node_modules/diff/lib/util/params.js",".././node_modules/emoji-regex/index.js",".././node_modules/fast-deep-equal/index.js",".././node_modules/fast-xml-parser/src/fxp.js",".././node_modules/fast-xml-parser/src/util.js",".././node_modules/fast-xml-parser/src/validator.js",".././node_modules/fast-xml-parser/src/xmlbuilder/json2xml.js",".././node_modules/fast-xml-parser/src/xmlbuilder/orderedJs2Xml.js",".././node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js",".././node_modules/fast-xml-parser/src/xmlparser/OptionsBuilder.js",".././node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js",".././node_modules/fast-xml-parser/src/xmlparser/XMLParser.js",".././node_modules/fast-xml-parser/src/xmlparser/node2json.js",".././node_modules/fast-xml-parser/src/xmlparser/xmlNode.js",".././node_modules/fs-extra/lib/copy/copy-sync.js",".././node_modules/fs-extra/lib/copy/copy.js",".././node_modules/fs-extra/lib/copy/index.js",".././node_modules/fs-extra/lib/empty/index.js",".././node_modules/fs-extra/lib/ensure/file.js",".././node_modules/fs-extra/lib/ensure/index.js",".././node_modules/fs-extra/lib/ensure/link.js",".././node_modules/fs-extra/lib/ensure/symlink-paths.js",".././node_modules/fs-extra/lib/ensure/symlink-type.js",".././node_modules/fs-extra/lib/ensure/symlink.js",".././node_modules/fs-extra/lib/fs/index.js",".././node_modules/fs-extra/lib/index.js",".././node_modules/fs-extra/lib/json/index.js",".././node_modules/fs-extra/lib/json/jsonfile.js",".././node_modules/fs-extra/lib/json/output-json-sync.js",".././node_modules/fs-extra/lib/json/output-json.js",".././node_modules/fs-extra/lib/mkdirs/index.js",".././node_modules/fs-extra/lib/mkdirs/make-dir.js",".././node_modules/fs-extra/lib/mkdirs/utils.js",".././node_modules/fs-extra/lib/move/index.js",".././node_modules/fs-extra/lib/move/move-sync.js",".././node_modules/fs-extra/lib/move/move.js",".././node_modules/fs-extra/lib/output-file/index.js",".././node_modules/fs-extra/lib/path-exists/index.js",".././node_modules/fs-extra/lib/remove/index.js",".././node_modules/fs-extra/lib/util/stat.js",".././node_modules/fs-extra/lib/util/utimes.js",".././node_modules/graceful-fs/clone.js",".././node_modules/graceful-fs/graceful-fs.js",".././node_modules/graceful-fs/legacy-streams.js",".././node_modules/graceful-fs/polyfills.js",".././node_modules/has-flag/index.js",".././node_modules/is-fullwidth-code-point/index.js",".././node_modules/jsonfile/index.js",".././node_modules/jsonfile/utils.js",".././node_modules/lodash.truncate/index.js",".././node_modules/once/once.js",".././node_modules/slice-ansi/index.js",".././node_modules/string-width/index.js",".././node_modules/strip-ansi/index.js",".././node_modules/strnum/strnum.js",".././node_modules/supports-color/index.js",".././node_modules/table/dist/src/alignSpanningCell.js",".././node_modules/table/dist/src/alignString.js",".././node_modules/table/dist/src/alignTableData.js",".././node_modules/table/dist/src/calculateCellHeight.js",".././node_modules/table/dist/src/calculateMaximumColumnWidths.js",".././node_modules/table/dist/src/calculateOutputColumnWidths.js",".././node_modules/table/dist/src/calculateRowHeights.js",".././node_modules/table/dist/src/calculateSpanningCellWidth.js",".././node_modules/table/dist/src/createStream.js",".././node_modules/table/dist/src/drawBorder.js",".././node_modules/table/dist/src/drawContent.js",".././node_modules/table/dist/src/drawRow.js",".././node_modules/table/dist/src/drawTable.js",".././node_modules/table/dist/src/generated/validators.js",".././node_modules/table/dist/src/getBorderCharacters.js",".././node_modules/table/dist/src/index.js",".././node_modules/table/dist/src/injectHeaderConfig.js",".././node_modules/table/dist/src/makeRangeConfig.js",".././node_modules/table/dist/src/makeStreamConfig.js",".././node_modules/table/dist/src/makeTableConfig.js",".././node_modules/table/dist/src/mapDataUsingRowHeights.js",".././node_modules/table/dist/src/padTableData.js",".././node_modules/table/dist/src/spanningCellManager.js",".././node_modules/table/dist/src/stringifyTableData.js",".././node_modules/table/dist/src/table.js",".././node_modules/table/dist/src/truncateTableData.js",".././node_modules/table/dist/src/types/api.js",".././node_modules/table/dist/src/utils.js",".././node_modules/table/dist/src/validateConfig.js",".././node_modules/table/dist/src/validateSpanningCellConfig.js",".././node_modules/table/dist/src/validateTableData.js",".././node_modules/table/dist/src/wrapCell.js",".././node_modules/table/dist/src/wrapString.js",".././node_modules/table/dist/src/wrapWord.js",".././node_modules/table/node_modules/ajv/dist/runtime/equal.js",".././node_modules/tslib/tslib.js",".././node_modules/tunnel/index.js",".././node_modules/tunnel/lib/tunnel.js",".././node_modules/undici/index.js",".././node_modules/undici/lib/agent.js",".././node_modules/undici/lib/api/abort-signal.js",".././node_modules/undici/lib/api/api-connect.js",".././node_modules/undici/lib/api/api-pipeline.js",".././node_modules/undici/lib/api/api-request.js",".././node_modules/undici/lib/api/api-stream.js",".././node_modules/undici/lib/api/api-upgrade.js",".././node_modules/undici/lib/api/index.js",".././node_modules/undici/lib/api/readable.js",".././node_modules/undici/lib/api/util.js",".././node_modules/undici/lib/balanced-pool.js",".././node_modules/undici/lib/cache/cache.js",".././node_modules/undici/lib/cache/cachestorage.js",".././node_modules/undici/lib/cache/symbols.js",".././node_modules/undici/lib/cache/util.js",".././node_modules/undici/lib/client.js",".././node_modules/undici/lib/compat/dispatcher-weakref.js",".././node_modules/undici/lib/cookies/constants.js",".././node_modules/undici/lib/cookies/index.js",".././node_modules/undici/lib/cookies/parse.js",".././node_modules/undici/lib/cookies/util.js",".././node_modules/undici/lib/core/connect.js",".././node_modules/undici/lib/core/constants.js",".././node_modules/undici/lib/core/errors.js",".././node_modules/undici/lib/core/request.js",".././node_modules/undici/lib/core/symbols.js",".././node_modules/undici/lib/core/util.js",".././node_modules/undici/lib/dispatcher-base.js",".././node_modules/undici/lib/dispatcher.js",".././node_modules/undici/lib/fetch/body.js",".././node_modules/undici/lib/fetch/constants.js",".././node_modules/undici/lib/fetch/dataURL.js",".././node_modules/undici/lib/fetch/file.js",".././node_modules/undici/lib/fetch/formdata.js",".././node_modules/undici/lib/fetch/global.js",".././node_modules/undici/lib/fetch/headers.js",".././node_modules/undici/lib/fetch/index.js",".././node_modules/undici/lib/fetch/request.js",".././node_modules/undici/lib/fetch/response.js",".././node_modules/undici/lib/fetch/symbols.js",".././node_modules/undici/lib/fetch/util.js",".././node_modules/undici/lib/fetch/webidl.js",".././node_modules/undici/lib/fileapi/encoding.js",".././node_modules/undici/lib/fileapi/filereader.js",".././node_modules/undici/lib/fileapi/progressevent.js",".././node_modules/undici/lib/fileapi/symbols.js",".././node_modules/undici/lib/fileapi/util.js",".././node_modules/undici/lib/global.js",".././node_modules/undici/lib/handler/DecoratorHandler.js",".././node_modules/undici/lib/handler/RedirectHandler.js",".././node_modules/undici/lib/handler/RetryHandler.js",".././node_modules/undici/lib/interceptor/redirectInterceptor.js",".././node_modules/undici/lib/llhttp/constants.js",".././node_modules/undici/lib/llhttp/llhttp-wasm.js",".././node_modules/undici/lib/llhttp/llhttp_simd-wasm.js",".././node_modules/undici/lib/llhttp/utils.js",".././node_modules/undici/lib/mock/mock-agent.js",".././node_modules/undici/lib/mock/mock-client.js",".././node_modules/undici/lib/mock/mock-errors.js",".././node_modules/undici/lib/mock/mock-interceptor.js",".././node_modules/undici/lib/mock/mock-pool.js",".././node_modules/undici/lib/mock/mock-symbols.js",".././node_modules/undici/lib/mock/mock-utils.js",".././node_modules/undici/lib/mock/pending-interceptors-formatter.js",".././node_modules/undici/lib/mock/pluralizer.js",".././node_modules/undici/lib/node/fixed-queue.js",".././node_modules/undici/lib/pool-base.js",".././node_modules/undici/lib/pool-stats.js",".././node_modules/undici/lib/pool.js",".././node_modules/undici/lib/proxy-agent.js",".././node_modules/undici/lib/timers.js",".././node_modules/undici/lib/websocket/connection.js",".././node_modules/undici/lib/websocket/constants.js",".././node_modules/undici/lib/websocket/events.js",".././node_modules/undici/lib/websocket/frame.js",".././node_modules/undici/lib/websocket/receiver.js",".././node_modules/undici/lib/websocket/symbols.js",".././node_modules/undici/lib/websocket/util.js",".././node_modules/undici/lib/websocket/websocket.js",".././node_modules/universal-user-agent/dist-node/index.js",".././node_modules/universalify/index.js",".././node_modules/uuid/dist/index.js",".././node_modules/uuid/dist/md5.js",".././node_modules/uuid/dist/nil.js",".././node_modules/uuid/dist/parse.js",".././node_modules/uuid/dist/regex.js",".././node_modules/uuid/dist/rng.js",".././node_modules/uuid/dist/sha1.js",".././node_modules/uuid/dist/stringify.js",".././node_modules/uuid/dist/v1.js",".././node_modules/uuid/dist/v3.js",".././node_modules/uuid/dist/v35.js",".././node_modules/uuid/dist/v4.js",".././node_modules/uuid/dist/v5.js",".././node_modules/uuid/dist/validate.js",".././node_modules/uuid/dist/version.js",".././node_modules/wrappy/wrappy.js","../external node-commonjs \"assert\"","../external node-commonjs \"async_hooks\"","../external node-commonjs \"buffer\"","../external node-commonjs \"child_process\"","../external node-commonjs \"console\"","../external node-commonjs \"constants\"","../external node-commonjs \"crypto\"","../external node-commonjs \"diagnostics_channel\"","../external node-commonjs \"events\"","../external node-commonjs \"fs\"","../external node-commonjs \"fs/promises\"","../external node-commonjs \"http\"","../external node-commonjs \"http2\"","../external node-commonjs \"https\"","../external node-commonjs \"net\"","../external node-commonjs \"node:events\"","../external node-commonjs \"node:fs\"","../external node-commonjs \"node:path\"","../external node-commonjs \"node:stream\"","../external node-commonjs \"node:util\"","../external node-commonjs \"node:zlib\"","../external node-commonjs \"os\"","../external node-commonjs \"path\"","../external node-commonjs \"perf_hooks\"","../external node-commonjs \"process\"","../external node-commonjs \"querystring\"","../external node-commonjs \"stream\"","../external node-commonjs \"stream/web\"","../external node-commonjs \"string_decoder\"","../external node-commonjs \"tls\"","../external node-commonjs \"tty\"","../external node-commonjs \"url\"","../external node-commonjs \"util\"","../external node-commonjs \"util/types\"","../external node-commonjs \"worker_threads\"","../external node-commonjs \"zlib\"",".././node_modules/@fastify/busboy/deps/dicer/lib/Dicer.js",".././node_modules/@fastify/busboy/deps/dicer/lib/HeaderParser.js",".././node_modules/@fastify/busboy/deps/dicer/lib/PartStream.js",".././node_modules/@fastify/busboy/deps/streamsearch/sbmh.js",".././node_modules/@fastify/busboy/lib/main.js",".././node_modules/@fastify/busboy/lib/types/multipart.js",".././node_modules/@fastify/busboy/lib/types/urlencoded.js",".././node_modules/@fastify/busboy/lib/utils/Decoder.js",".././node_modules/@fastify/busboy/lib/utils/basename.js",".././node_modules/@fastify/busboy/lib/utils/decodeText.js",".././node_modules/@fastify/busboy/lib/utils/getLimit.js",".././node_modules/@fastify/busboy/lib/utils/parseParams.js","../webpack/bootstrap","../webpack/runtime/node module decorator","../webpack/runtime/compat","../webpack/before-startup","../webpack/startup","../webpack/after-startup"],"sourcesContent":["\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.run = void 0;\nconst core_1 = require(\"@actions/core\");\nconst github = __importStar(require(\"@actions/github\"));\nconst assembly_1 = require(\"./assembly\");\nconst comment_1 = require(\"./comment\");\nconst stage_processor_1 = require(\"./stage-processor\");\nasync function run() {\n var _a;\n const inputs = {\n allowedDestroyTypes: (0, core_1.getInput)('allowedDestroyTypes').split(','),\n failOnDestructiveChanges: (0, core_1.getBooleanInput)('failOnDestructiveChanges'),\n githubToken: (0, core_1.getInput)('githubToken'),\n noDiffForStages: (0, core_1.getInput)('noDiffForStages').split(','),\n noFailOnDestructiveChanges: (0, core_1.getInput)('noFailOnDestructiveChanges').split(','),\n cdkOutDir: (_a = (0, core_1.getInput)('cdkOutDir')) !== null && _a !== void 0 ? _a : 'cdk.out',\n };\n const octokit = github.getOctokit(inputs.githubToken);\n const context = github.context;\n try {\n const assembly = assembly_1.AssemblyManifestReader.fromPath(inputs.cdkOutDir);\n let stages = assembly.stages;\n if (!stages.length) {\n stages = [{\n name: 'DefaultStage',\n stacks: assembly.stacks,\n }];\n }\n const comments = new comment_1.Comments(octokit, context);\n const processor = new stage_processor_1.StageProcessor(stages, inputs.allowedDestroyTypes);\n try {\n await processor.processStages(inputs.noFailOnDestructiveChanges);\n }\n catch (e) {\n console.error('Error running process stages: ', e);\n throw e;\n }\n try {\n await processor.commentStages(comments);\n }\n catch (e) {\n console.error('Error commenting stages: ', e);\n throw e;\n }\n if (processor.hasDestructiveChanges && inputs.failOnDestructiveChanges) {\n throw new Error('There are destructive changes! See PR comment for details.');\n }\n }\n catch (e) {\n console.error('Error performing diff: ', e);\n throw e;\n }\n return;\n}\nexports.run = run;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWN0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2FjdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHdDQUEwRDtBQUMxRCx3REFBMEM7QUFDMUMseUNBQW9EO0FBQ3BELHVDQUFxQztBQUVyQyx1REFBbUQ7QUFFNUMsS0FBSyxVQUFVLEdBQUc7O0lBQ3ZCLE1BQU0sTUFBTSxHQUFXO1FBQ3JCLG1CQUFtQixFQUFFLElBQUEsZUFBUSxFQUFDLHFCQUFxQixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUMvRCx3QkFBd0IsRUFBRSxJQUFBLHNCQUFlLEVBQUMsMEJBQTBCLENBQUM7UUFDckUsV0FBVyxFQUFFLElBQUEsZUFBUSxFQUFDLGFBQWEsQ0FBQztRQUNwQyxlQUFlLEVBQUUsSUFBQSxlQUFRLEVBQUMsaUJBQWlCLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDO1FBQ3ZELDBCQUEwQixFQUFFLElBQUEsZUFBUSxFQUFDLDRCQUE0QixDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQztRQUM3RSxTQUFTLEVBQUUsTUFBQSxJQUFBLGVBQVEsRUFBQyxXQUFXLENBQUMsbUNBQUksU0FBUztLQUM5QyxDQUFDO0lBQ0YsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDdEQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUMvQixJQUFJLENBQUM7UUFDSCxNQUFNLFFBQVEsR0FBRyxpQ0FBc0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ25FLElBQUksTUFBTSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNuQixNQUFNLEdBQUcsQ0FBQztvQkFDUixJQUFJLEVBQUUsY0FBYztvQkFDcEIsTUFBTSxFQUFFLFFBQVEsQ0FBQyxNQUFNO2lCQUN4QixDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0QsTUFBTSxRQUFRLEdBQUcsSUFBSSxrQkFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztRQUNoRCxNQUFNLFNBQVMsR0FBRyxJQUFJLGdDQUFjLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQztZQUNILE1BQU0sU0FBUyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsS0FBSyxDQUFDLGdDQUFnQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ25ELE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztRQUVELElBQUksQ0FBQztZQUNILE1BQU0sU0FBUyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUUxQyxDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixPQUFPLENBQUMsS0FBSyxDQUFDLDJCQUEyQixFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzlDLE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztRQUVELElBQUksU0FBUyxDQUFDLHFCQUFxQixJQUFJLE1BQU0sQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1lBQ3ZFLE1BQU0sSUFBSSxLQUFLLENBQUMsNERBQTRELENBQUMsQ0FBQztRQUNoRixDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7UUFDaEIsT0FBTyxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUMsQ0FBQztRQUM1QyxNQUFNLENBQUMsQ0FBQztJQUNWLENBQUM7SUFDRCxPQUFPO0FBQ1QsQ0FBQztBQTdDRCxrQkE2Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnZXRJbnB1dCwgZ2V0Qm9vbGVhbklucHV0IH0gZnJvbSAnQGFjdGlvbnMvY29yZSc7XG5pbXBvcnQgKiBhcyBnaXRodWIgZnJvbSAnQGFjdGlvbnMvZ2l0aHViJztcbmltcG9ydCB7IEFzc2VtYmx5TWFuaWZlc3RSZWFkZXIgfSBmcm9tICcuL2Fzc2VtYmx5JztcbmltcG9ydCB7IENvbW1lbnRzIH0gZnJvbSAnLi9jb21tZW50JztcbmltcG9ydCB7IElucHV0cyB9IGZyb20gJy4vaW5wdXRzJztcbmltcG9ydCB7IFN0YWdlUHJvY2Vzc29yIH0gZnJvbSAnLi9zdGFnZS1wcm9jZXNzb3InO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuKCkge1xuICBjb25zdCBpbnB1dHM6IElucHV0cyA9IHtcbiAgICBhbGxvd2VkRGVzdHJveVR5cGVzOiBnZXRJbnB1dCgnYWxsb3dlZERlc3Ryb3lUeXBlcycpLnNwbGl0KCcsJyksXG4gICAgZmFpbE9uRGVzdHJ1Y3RpdmVDaGFuZ2VzOiBnZXRCb29sZWFuSW5wdXQoJ2ZhaWxPbkRlc3RydWN0aXZlQ2hhbmdlcycpLFxuICAgIGdpdGh1YlRva2VuOiBnZXRJbnB1dCgnZ2l0aHViVG9rZW4nKSxcbiAgICBub0RpZmZGb3JTdGFnZXM6IGdldElucHV0KCdub0RpZmZGb3JTdGFnZXMnKS5zcGxpdCgnLCcpLFxuICAgIG5vRmFpbE9uRGVzdHJ1Y3RpdmVDaGFuZ2VzOiBnZXRJbnB1dCgnbm9GYWlsT25EZXN0cnVjdGl2ZUNoYW5nZXMnKS5zcGxpdCgnLCcpLFxuICAgIGNka091dERpcjogZ2V0SW5wdXQoJ2Nka091dERpcicpID8/ICdjZGsub3V0JyxcbiAgfTtcbiAgY29uc3Qgb2N0b2tpdCA9IGdpdGh1Yi5nZXRPY3Rva2l0KGlucHV0cy5naXRodWJUb2tlbik7XG4gIGNvbnN0IGNvbnRleHQgPSBnaXRodWIuY29udGV4dDtcbiAgdHJ5IHtcbiAgICBjb25zdCBhc3NlbWJseSA9IEFzc2VtYmx5TWFuaWZlc3RSZWFkZXIuZnJvbVBhdGgoaW5wdXRzLmNka091dERpcik7XG4gICAgbGV0IHN0YWdlcyA9IGFzc2VtYmx5LnN0YWdlcztcbiAgICBpZiAoIXN0YWdlcy5sZW5ndGgpIHtcbiAgICAgIHN0YWdlcyA9IFt7XG4gICAgICAgIG5hbWU6ICdEZWZhdWx0U3RhZ2UnLFxuICAgICAgICBzdGFja3M6IGFzc2VtYmx5LnN0YWNrcyxcbiAgICAgIH1dO1xuICAgIH1cbiAgICBjb25zdCBjb21tZW50cyA9IG5ldyBDb21tZW50cyhvY3Rva2l0LCBjb250ZXh0KTtcbiAgICBjb25zdCBwcm9jZXNzb3IgPSBuZXcgU3RhZ2VQcm9jZXNzb3Ioc3RhZ2VzLCBpbnB1dHMuYWxsb3dlZERlc3Ryb3lUeXBlcyk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHByb2Nlc3Nvci5wcm9jZXNzU3RhZ2VzKGlucHV0cy5ub0ZhaWxPbkRlc3RydWN0aXZlQ2hhbmdlcyk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBydW5uaW5nIHByb2Nlc3Mgc3RhZ2VzOiAnLCBlKTtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHByb2Nlc3Nvci5jb21tZW50U3RhZ2VzKGNvbW1lbnRzKTtcblxuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgY29tbWVudGluZyBzdGFnZXM6ICcsIGUpO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG5cbiAgICBpZiAocHJvY2Vzc29yLmhhc0Rlc3RydWN0aXZlQ2hhbmdlcyAmJiBpbnB1dHMuZmFpbE9uRGVzdHJ1Y3RpdmVDaGFuZ2VzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZXJlIGFyZSBkZXN0cnVjdGl2ZSBjaGFuZ2VzISBTZWUgUFIgY29tbWVudCBmb3IgZGV0YWlscy4nKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHBlcmZvcm1pbmcgZGlmZjogJywgZSk7XG4gICAgdGhyb3cgZTtcbiAgfVxuICByZXR1cm47XG59XG5cbiJdfQ==","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AssemblyManifestReader = void 0;\nconst path = __importStar(require(\"path\"));\nconst cloud_assembly_1 = require(\"@aws-cdk/cloud-assembly-schema/lib/cloud-assembly\");\nconst manifest_1 = require(\"@aws-cdk/cloud-assembly-schema/lib/manifest\");\nconst fs = __importStar(require(\"fs-extra\"));\n/**\n * Reads a Cloud Assembly manifest\n */\nclass AssemblyManifestReader {\n /**\n * Reads a Cloud Assembly manifest from a file\n */\n static fromFile(fileName) {\n try {\n const obj = manifest_1.Manifest.loadAssemblyManifest(fileName);\n return new AssemblyManifestReader(path.dirname(fileName), obj);\n }\n catch (e) {\n throw new Error(`Cannot read integ manifest '${fileName}': ${e.message}`);\n }\n }\n /**\n * Reads a Cloud Assembly manifest from a file or a directory\n * If the given filePath is a directory then it will look for\n * a file within the directory with the DEFAULT_FILENAME\n */\n static fromPath(filePath) {\n let st;\n try {\n st = fs.statSync(filePath);\n }\n catch (e) {\n throw new Error(`Cannot read integ manifest at '${filePath}': ${e.message}`);\n }\n if (st.isDirectory()) {\n return AssemblyManifestReader.fromFile(path.join(filePath, AssemblyManifestReader.DEFAULT_FILENAME));\n }\n return AssemblyManifestReader.fromFile(filePath);\n }\n constructor(directory, manifest) {\n this.manifest = manifest;\n this.directory = directory;\n }\n /**\n * Get the stacks from the manifest\n * returns a map of artifactId to CloudFormation template\n */\n get stacks() {\n var _a, _b, _c;\n const stacks = [];\n for (const [artifactId, artifact] of Object.entries((_a = this.manifest.artifacts) !== null && _a !== void 0 ? _a : {})) {\n if (artifact.type !== cloud_assembly_1.ArtifactType.AWS_CLOUDFORMATION_STACK) {\n continue;\n }\n const props = artifact.properties;\n const template = fs.readJSONSync(path.resolve(this.directory, props.templateFile));\n const env = (_b = artifact.environment) === null || _b === void 0 ? void 0 : _b.split(/\\/\\/?/);\n const validEnv = env && env.length === 3;\n let region;\n let account;\n if (validEnv) {\n region = env[2];\n account = env[1];\n }\n if (region === 'unknown-region') {\n region = undefined;\n }\n if (account === 'unknown-account') {\n account = undefined;\n }\n stacks.push({\n content: template,\n region,\n account,\n lookupRole: props.lookupRole,\n name: (_c = props.stackName) !== null && _c !== void 0 ? _c : artifactId,\n });\n }\n return stacks;\n }\n /**\n * Get the stages in the assembly\n */\n get stages() {\n var _a, _b;\n const stages = [];\n for (const [artifactId, artifact] of Object.entries((_a = this.manifest.artifacts) !== null && _a !== void 0 ? _a : {})) {\n if (artifact.type !== cloud_assembly_1.ArtifactType.NESTED_CLOUD_ASSEMBLY) {\n continue;\n }\n const props = artifact.properties;\n const nestedAssembly = AssemblyManifestReader.fromPath(path.join(this.directory, props.directoryName));\n stages.push({\n name: (_b = props.displayName) !== null && _b !== void 0 ? _b : artifactId,\n stacks: nestedAssembly.stacks,\n });\n }\n return stages;\n }\n}\nexports.AssemblyManifestReader = AssemblyManifestReader;\nAssemblyManifestReader.DEFAULT_FILENAME = 'manifest.json';\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZW1ibHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvYXNzZW1ibHkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNkI7QUFDN0Isc0ZBQW1MO0FBQ25MLDBFQUF1RTtBQUN2RSw2Q0FBK0I7QUFxRC9COztHQUVHO0FBQ0gsTUFBYSxzQkFBc0I7SUFHakM7O09BRUc7SUFDSSxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQWdCO1FBQ3JDLElBQUksQ0FBQztZQUNILE1BQU0sR0FBRyxHQUFHLG1CQUFRLENBQUMsb0JBQW9CLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDcEQsT0FBTyxJQUFJLHNCQUFzQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFakUsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsUUFBUSxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzVFLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBZ0I7UUFDckMsSUFBSSxFQUFFLENBQUM7UUFDUCxJQUFJLENBQUM7WUFDSCxFQUFFLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM3QixDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksS0FBSyxDQUFDLGtDQUFrQyxRQUFRLE1BQU0sQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDL0UsQ0FBQztRQUNELElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7WUFDckIsT0FBTyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsc0JBQXNCLENB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Q0wsQ0FBQztRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7O0FBN0ZILHdEQThGQztBQTdGd0IsdUNBQWdCLEdBQUcsZUFBZSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IEFzc2VtYmx5TWFuaWZlc3QsIEFydGlmYWN0VHlwZSwgQXdzQ2xvdWRGb3JtYXRpb25TdGFja1Byb3BlcnRpZXMsIE5lc3RlZENsb3VkQXNzZW1ibHlQcm9wZXJ0aWVzLCBCb290c3RyYXBSb2xlIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWQtYXNzZW1ibHktc2NoZW1hL2xpYi9jbG91ZC1hc3NlbWJseSc7XG5pbXBvcnQgeyBNYW5pZmVzdCB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYS9saWIvbWFuaWZlc3QnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMtZXh0cmEnO1xuXG4vKipcbiAqIEluZm9ybWF0aW9uIG9uIHRoZSBDREsgU3RhZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFnZUluZm8ge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHN0YWdlXG4gICAqL1xuICBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGFja3Mgd2l0aGluIHRoZSBzdGFnZVxuICAgKi9cbiAgc3RhY2tzOiBTdGFja0luZm9bXTtcbn1cblxuLyoqXG4gKiBJbmZvcm1hdGlvbiBvbiBhIHN0YWNrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tJbmZvIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzdGFja1xuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVnaW9uIHRoZSBzdGFjayBpcyBkZXBsb3llZCB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVua25vd24tcmVnaW9uXG4gICAqL1xuICByZWdpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhY2NvdW50IHRoZSBzdGFjayBpcyBkZXBsb3llZCB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVua25vd24tYWNjb3VudFxuICAgKi9cbiAgYWNjb3VudD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxvb2t1cCByb2xlIHRvIHVzZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGxvb2t1cCByb2xlXG4gICAqL1xuICBsb29rdXBSb2xlPzogQm9vdHN0cmFwUm9sZTtcblxuICAvKipcbiAgICogVGhlIEpTT04gY29udGVudCBvZiB0aGUgc3RhY2tcbiAgICovXG4gIGNvbnRlbnQ6IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG5cbi8qKlxuICogUmVhZHMgYSBDbG91ZCBBc3NlbWJseSBtYW5pZmVzdFxuICovXG5leHBvcnQgY2xhc3MgQXNzZW1ibHlNYW5pZmVzdFJlYWRlciB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9GSUxFTkFNRSA9ICdtYW5pZmVzdC5qc29uJztcblxuICAvKipcbiAgICogUmVhZHMgYSBDbG91ZCBBc3NlbWJseSBtYW5pZmVzdCBmcm9tIGEgZmlsZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tRmlsZShmaWxlTmFtZTogc3RyaW5nKTogQXNzZW1ibHlNYW5pZmVzdFJlYWRlciB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG9iaiA9IE1hbmlmZXN0LmxvYWRBc3NlbWJseU1hbmlmZXN0KGZpbGVOYW1lKTtcbiAgICAgIHJldHVybiBuZXcgQXNzZW1ibHlNYW5pZmVzdFJlYWRlcihwYXRoLmRpcm5hbWUoZmlsZU5hbWUpLCBvYmopO1xuXG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZWFkIGludGVnIG1hbmlmZXN0ICcke2ZpbGVOYW1lfSc6ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyBhIENsb3VkIEFzc2VtYmx5IG1hbmlmZXN0IGZyb20gYSBmaWxlIG9yIGEgZGlyZWN0b3J5XG4gICAqIElmIHRoZSBnaXZlbiBmaWxlUGF0aCBpcyBhIGRpcmVjdG9yeSB0aGVuIGl0IHdpbGwgbG9vayBmb3JcbiAgICogYSBmaWxlIHdpdGhpbiB0aGUgZGlyZWN0b3J5IHdpdGggdGhlIERFRkFVTFRfRklMRU5BTUVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVBhdGgoZmlsZVBhdGg6IHN0cmluZyk6IEFzc2VtYmx5TWFuaWZlc3RSZWFkZXIge1xuICAgIGxldCBzdDtcbiAgICB0cnkge1xuICAgICAgc3QgPSBmcy5zdGF0U3luYyhmaWxlUGF0aCk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENhbm5vdCByZWFkIGludGVnIG1hbmlmZXN0IGF0ICcke2ZpbGVQYXRofSc6ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgICBpZiAoc3QuaXNEaXJlY3RvcnkoKSkge1xuICAgICAgcmV0dXJuIEFzc2VtYmx5TWFuaWZlc3RSZWFkZXIuZnJvbUZpbGUocGF0aC5qb2luKGZpbGVQYXRoLCBBc3NlbWJseU1hbmlmZXN0UmVhZGVyLkRFRkFVTFRfRklMRU5BTUUpKTtcbiAgICB9XG4gICAgcmV0dXJuIEFzc2VtYmx5TWFuaWZlc3RSZWFkZXIuZnJvbUZpbGUoZmlsZVBhdGgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIG1hbmlmZXN0IHdhcyBmb3VuZFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRpcmVjdG9yeTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKGRpcmVjdG9yeTogc3RyaW5nLCBwcml2YXRlIHJlYWRvbmx5IG1hbmlmZXN0OiBBc3NlbWJseU1hbmlmZXN0KSB7XG4gICAgdGhpcy5kaXJlY3RvcnkgPSBkaXJlY3Rvcnk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBzdGFja3MgZnJvbSB0aGUgbWFuaWZlc3RcbiAgICogcmV0dXJucyBhIG1hcCBvZiBhcnRpZmFjdElkIHRvIENsb3VkRm9ybWF0aW9uIHRlbXBsYXRlXG4gICAqL1xuICBwdWJsaWMgZ2V0IHN0YWNrcygpOiBTdGFja0luZm9bXSB7XG4gICAgY29uc3Qgc3RhY2tzOiBTdGFja0luZm9bXSA9IFtdO1xuICAgIGZvciAoY29uc3QgW2FydGlmYWN0SWQsIGFydGlmYWN0XSBvZiBPYmplY3QuZW50cmllcyh0aGlzLm1hbmlmZXN0LmFydGlmYWN0cyA/PyB7fSkpIHtcbiAgICAgIGlmIChhcnRpZmFjdC50eXBlICE9PSBBcnRpZmFjdFR5cGUuQVdTX0NMT1VERk9STUFUSU9OX1NUQUNLKSB7IGNvbnRpbnVlOyB9XG4gICAgICBjb25zdCBwcm9wcyA9IGFydGlmYWN0LnByb3BlcnRpZXMgYXMgQXdzQ2xvdWRGb3JtYXRpb25TdGFja1Byb3BlcnRpZXM7XG4gICAgICBjb25zdCB0ZW1wbGF0ZSA9IGZzLnJlYWRKU09OU3luYyhwYXRoLnJlc29sdmUodGhpcy5kaXJlY3RvcnksIHByb3BzLnRlbXBsYXRlRmlsZSkpO1xuICAgICAgY29uc3QgZW52ID0gYXJ0aWZhY3QuZW52aXJvbm1lbnQ/LnNwbGl0KC9cXC9cXC8/Lyk7XG4gICAgICBjb25zdCB2YWxpZEVudiA9IGVudiAmJiBlbnYubGVuZ3RoID09PSAzO1xuICAgICAgbGV0IHJlZ2lvbjogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgICAgbGV0IGFjY291bnQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgIGlmICh2YWxpZEVudikge1xuICAgICAgICByZWdpb24gPSBlbnZbMl07XG4gICAgICAgIGFjY291bnQgPSBlbnZbMV07XG4gICAgICB9XG4gICAgICBpZiAocmVnaW9uID09PSAndW5rbm93bi1yZWdpb24nKSB7XG4gICAgICAgIHJlZ2lvbiA9IHVuZGVmaW5lZDtcbiAgICAgIH1cbiAgICAgIGlmIChhY2NvdW50ID09PSAndW5rbm93bi1hY2NvdW50Jykge1xuICAgICAgICBhY2NvdW50ID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgc3RhY2tzLnB1c2goe1xuICAgICAgICBjb250ZW50OiB0ZW1wbGF0ZSxcbiAgICAgICAgcmVnaW9uLFxuICAgICAgICBhY2NvdW50LFxuICAgICAgICBsb29rdXBSb2xlOiBwcm9wcy5sb29rdXBSb2xlLFxuICAgICAgICBuYW1lOiBwcm9wcy5zdGFja05hbWUgPz8gYXJ0aWZhY3RJZCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc3RhY2tzO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgc3RhZ2VzIGluIHRoZSBhc3NlbWJseVxuICAgKi9cbiAgcHVibGljIGdldCBzdGFnZXMoKTogU3RhZ2VJbmZvW10ge1xuICAgIGNvbnN0IHN0YWdlczogU3RhZ2VJbmZvW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IFthcnRpZmFjdElkLCBhcnRpZmFjdF0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5tYW5pZmVzdC5hcnRpZmFjdHMgPz8ge30pKSB7XG4gICAgICBpZiAoYXJ0aWZhY3QudHlwZSAhPT0gQXJ0aWZhY3RUeXBlLk5FU1RFRF9DTE9VRF9BU1NFTUJMWSkgeyBjb250aW51ZTsgfVxuICAgICAgY29uc3QgcHJvcHMgPSBhcnRpZmFjdC5wcm9wZXJ0aWVzIGFzIE5lc3RlZENsb3VkQXNzZW1ibHlQcm9wZXJ0aWVzO1xuICAgICAgY29uc3QgbmVzdGVkQXNzZW1ibHkgPSBBc3NlbWJseU1hbmlmZXN0UmVhZGVyLmZyb21QYXRoKHBhdGguam9pbih0aGlzLmRpcmVjdG9yeSwgcHJvcHMuZGlyZWN0b3J5TmFtZSkpO1xuICAgICAgc3RhZ2VzLnB1c2goe1xuICAgICAgICBuYW1lOiBwcm9wcy5kaXNwbGF5TmFtZSA/PyBhcnRpZmFjdElkLFxuICAgICAgICBzdGFja3M6IG5lc3RlZEFzc2VtYmx5LnN0YWNrcyxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gc3RhZ2VzO1xuICB9XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Comments = void 0;\n/**\n * Comments controls interacting with GitHub to make comments\n */\nclass Comments {\n constructor(octokit, context) {\n var _a;\n this.octokit = octokit;\n this.context = context;\n const payload = context.payload;\n this.commitSha = payload.pull_request.head.sha;\n if (!payload.pull_request.number) {\n throw new Error('Cannot find PR number, is this from a pull request?');\n }\n this.issueNumber = (_a = this.context.payload.pull_request) === null || _a === void 0 ? void 0 : _a.number;\n }\n /**\n * Find the previous comment with the given hash\n *\n * @param hash the unique hash identifying the stage comment to look for\n * @returns the PR comment id or undefined if there is no previous comment\n */\n async findPrevious(hash) {\n var _a;\n const comments = await this.octokit.rest.issues.listComments({\n ...this.context.repo,\n issue_number: this.issueNumber,\n });\n return (_a = comments.data.find(comment => { var _a; return (_a = comment.body) === null || _a === void 0 ? void 0 : _a.includes(hash); })) === null || _a === void 0 ? void 0 : _a.id;\n }\n /**\n * Update an existing comment\n *\n * @param hash the unique hash identifying the stage comment to look for\n * @param content the content of the comment\n * @param commentId the id of the comment to update\n */\n async updateComment(commentId, hash, content) {\n await this.octokit.rest.issues.updateComment({\n ...this.context.repo,\n body: [\n ``,\n ...content,\n '',\n `_Generated for commit ${this.commitSha}_`,\n ].join('\\n'),\n comment_id: commentId,\n });\n }\n /**\n * Create a new comment\n *\n * @param hash the unique hash identifying the stage comment to look for\n * @param content the content of the comment\n */\n async createComment(hash, content) {\n await this.octokit.rest.issues.createComment({\n ...this.context.repo,\n body: [\n ``,\n ...content,\n '',\n `_Generated for commit ${this.commitSha}_`,\n ].join('\\n'),\n issue_number: this.issueNumber,\n });\n }\n}\nexports.Comments = Comments;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBOztHQUVHO0FBQ0gsTUFBYSxRQUFRO0lBR25CLFlBQ21CLE9BQW9DLEVBQ3BDLE9BQWdCOztRQURoQixZQUFPLEdBQVAsT0FBTyxDQUE2QjtRQUNwQyxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBRWpDLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUEyQixDQUFDO1FBQ3BELElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1FBQy9DLElBQUksQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztRQUN6RSxDQUFDO1FBQ0QsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFBLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLFlBQVksMENBQUUsTUFBTyxDQUFDO0lBQ2hFLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBWTs7UUFDcEMsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDO1lBQzNELEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQ3BCLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVztTQUMvQixDQUFDLENBQUM7UUFDSCxPQUFPLE1BQUEsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsV0FBQyxPQUFBLE1BQUEsT0FBTyxDQUFDLElBQUksMENBQUUsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFBLEVBQUEsQ0FBQywwQ0FBRSxFQUFFLENBQUM7SUFDekUsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxhQUFhLENBQUMsU0FBaUIsRUFBRSxJQUFZLEVBQUUsT0FBaUI7UUFDM0UsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO1lBQzNDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJO1lBQ3BCLElBQUksRUFBRTtnQkFDSixrQ0FBa0MsSUFBSSxNQUFNO2dCQUM1QyxHQUFHLE9BQU87Z0JBQ1YsRUFBRTtnQkFDRix5QkFBeUIsSUFBSSxDQUFDLFNBQVMsR0FBRzthQUMzQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUM7WUFDWixVQUFVLEVBQUUsU0FBUztTQUN0QixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxLQUFLLENBQUMsYUFBYSxDQUFDLElBQVksRUFBRSxPQUFpQjtRQUN4RCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7WUFDM0MsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUk7WUFDcEIsSUFBSSxFQUFFO2dCQUNKLGtDQUFrQyxJQUFJLE1BQU07Z0JBQzVDLEdBQUcsT0FBTztnQkFDVixFQUFFO2dCQUNGLHlCQUF5QixJQUFJLENBQUMsU0FBUyxHQUFHO2FBQzNDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztZQUNaLFlBQVksRUFBRSxJQUFJLENBQUMsV0FBVztTQUMvQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFuRUQsNEJBbUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udGV4dCB9IGZyb20gJ0BhY3Rpb25zL2dpdGh1Yi9saWIvY29udGV4dCc7XG5pbXBvcnQgeyBHaXRIdWIgfSBmcm9tICdAYWN0aW9ucy9naXRodWIvbGliL3V0aWxzJztcbmltcG9ydCB7IFB1bGxSZXF1ZXN0RXZlbnQgfSBmcm9tICdAb2N0b2tpdC93ZWJob29rcy1kZWZpbml0aW9ucy9zY2hlbWEnO1xuXG4vKipcbiAqIENvbW1lbnRzIGNvbnRyb2xzIGludGVyYWN0aW5nIHdpdGggR2l0SHViIHRvIG1ha2UgY29tbWVudHNcbiAqL1xuZXhwb3J0IGNsYXNzIENvbW1lbnRzIHtcbiAgcHJpdmF0ZSByZWFkb25seSBpc3N1ZU51bWJlcjogbnVtYmVyO1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbW1pdFNoYTogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9jdG9raXQ6IEluc3RhbmNlVHlwZTx0eXBlb2YgR2l0SHViPixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRleHQ6IENvbnRleHQsXG4gICkge1xuICAgIGNvbnN0IHBheWxvYWQgPSBjb250ZXh0LnBheWxvYWQgYXMgUHVsbFJlcXVlc3RFdmVudDtcbiAgICB0aGlzLmNvbW1pdFNoYSA9IHBheWxvYWQucHVsbF9yZXF1ZXN0LmhlYWQuc2hhO1xuICAgIGlmICghcGF5bG9hZC5wdWxsX3JlcXVlc3QubnVtYmVyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBmaW5kIFBSIG51bWJlciwgaXMgdGhpcyBmcm9tIGEgcHVsbCByZXF1ZXN0PycpO1xuICAgIH1cbiAgICB0aGlzLmlzc3VlTnVtYmVyID0gdGhpcy5jb250ZXh0LnBheWxvYWQucHVsbF9yZXF1ZXN0Py5udW1iZXIhO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgdGhlIHByZXZpb3VzIGNvbW1lbnQgd2l0aCB0aGUgZ2l2ZW4gaGFzaFxuICAgKlxuICAgKiBAcGFyYW0gaGFzaCB0aGUgdW5pcXVlIGhhc2ggaWRlbnRpZnlpbmcgdGhlIHN0YWdlIGNvbW1lbnQgdG8gbG9vayBmb3JcbiAgICogQHJldHVybnMgdGhlIFBSIGNvbW1lbnQgaWQgb3IgdW5kZWZpbmVkIGlmIHRoZXJlIGlzIG5vIHByZXZpb3VzIGNvbW1lbnRcbiAgICovXG4gIHB1YmxpYyBhc3luYyBmaW5kUHJldmlvdXMoaGFzaDogc3RyaW5nKTogUHJvbWlzZTxudW1iZXIgfCB1bmRlZmluZWQ+IHtcbiAgICBjb25zdCBjb21tZW50cyA9IGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0Lmlzc3Vlcy5saXN0Q29tbWVudHMoe1xuICAgICAgLi4udGhpcy5jb250ZXh0LnJlcG8sXG4gICAgICBpc3N1ZV9udW1iZXI6IHRoaXMuaXNzdWVOdW1iZXIsXG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbW1lbnRzLmRhdGEuZmluZChjb21tZW50ID0+IGNvbW1lbnQuYm9keT8uaW5jbHVkZXMoaGFzaCkpPy5pZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYW4gZXhpc3RpbmcgY29tbWVudFxuICAgKlxuICAgKiBAcGFyYW0gaGFzaCB0aGUgdW5pcXVlIGhhc2ggaWRlbnRpZnlpbmcgdGhlIHN0YWdlIGNvbW1lbnQgdG8gbG9vayBmb3JcbiAgICogQHBhcmFtIGNvbnRlbnQgdGhlIGNvbnRlbnQgb2YgdGhlIGNvbW1lbnRcbiAgICogQHBhcmFtIGNvbW1lbnRJZCB0aGUgaWQgb2YgdGhlIGNvbW1lbnQgdG8gdXBkYXRlXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgdXBkYXRlQ29tbWVudChjb21tZW50SWQ6IG51bWJlciwgaGFzaDogc3RyaW5nLCBjb250ZW50OiBzdHJpbmdbXSkge1xuICAgIGF3YWl0IHRoaXMub2N0b2tpdC5yZXN0Lmlzc3Vlcy51cGRhdGVDb21tZW50KHtcbiAgICAgIC4uLnRoaXMuY29udGV4dC5yZXBvLFxuICAgICAgYm9keTogW1xuICAgICAgICBgPCEtLSBjZGsgZGlmZiBhY3Rpb24gd2l0aCBoYXNoICR7aGFzaH0gLS0+YCxcbiAgICAgICAgLi4uY29udGVudCxcbiAgICAgICAgJycsXG4gICAgICAgIGBfR2VuZXJhdGVkIGZvciBjb21taXQgJHt0aGlzLmNvbW1pdFNoYX1fYCxcbiAgICAgIF0uam9pbignXFxuJyksXG4gICAgICBjb21tZW50X2lkOiBjb21tZW50SWQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IGNvbW1lbnRcbiAgICpcbiAgICogQHBhcmFtIGhhc2ggdGhlIHVuaXF1ZSBoYXNoIGlkZW50aWZ5aW5nIHRoZSBzdGFnZSBjb21tZW50IHRvIGxvb2sgZm9yXG4gICAqIEBwYXJhbSBjb250ZW50IHRoZSBjb250ZW50IG9mIHRoZSBjb21tZW50XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY3JlYXRlQ29tbWVudChoYXNoOiBzdHJpbmcsIGNvbnRlbnQ6IHN0cmluZ1tdKSB7XG4gICAgYXdhaXQgdGhpcy5vY3Rva2l0LnJlc3QuaXNzdWVzLmNyZWF0ZUNvbW1lbnQoe1xuICAgICAgLi4udGhpcy5jb250ZXh0LnJlcG8sXG4gICAgICBib2R5OiBbXG4gICAgICAgIGA8IS0tIGNkayBkaWZmIGFjdGlvbiB3aXRoIGhhc2ggJHtoYXNofSAtLT5gLFxuICAgICAgICAuLi5jb250ZW50LFxuICAgICAgICAnJyxcbiAgICAgICAgYF9HZW5lcmF0ZWQgZm9yIGNvbW1pdCAke3RoaXMuY29tbWl0U2hhfV9gLFxuICAgICAgXS5qb2luKCdcXG4nKSxcbiAgICAgIGlzc3VlX251bWJlcjogdGhpcy5pc3N1ZU51bWJlcixcbiAgICB9KTtcbiAgfVxufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StackDiff = void 0;\nconst cloudformation_diff_1 = require(\"@aws-cdk/cloudformation-diff\");\nconst client_cloudformation_1 = require(\"@aws-sdk/client-cloudformation\");\nconst client_sts_1 = require(\"@aws-sdk/client-sts\");\nconst credential_providers_1 = require(\"@aws-sdk/credential-providers\");\n/**\n * StackDiff performs the diff on a stack\n */\nclass StackDiff {\n constructor(stack, allowedDestroyTypes) {\n this.stack = stack;\n this.allowedDestroyTypes = allowedDestroyTypes;\n let credentials;\n // if there is a lookup role then assume that, otherwise\n // just use the default credentials\n credentials = stack.lookupRole ? (0, credential_providers_1.fromTemporaryCredentials)({\n params: {\n RoleArn: stack.lookupRole.arn.replace('${AWS::Partition}', 'aws'),\n RoleSessionName: 'cdk-diff-action',\n ExternalId: stack.lookupRole.assumeRoleExternalId,\n DurationSeconds: 900,\n },\n }) : undefined;\n this.credentials = credentials;\n this.client = new client_cloudformation_1.CloudFormationClient({\n credentials,\n region: this.stack.region,\n });\n }\n /**\n * Validates the environment of the stack and whether it matches\n * the credentials being used by the GitHub action\n *\n * There are two cases that we care about:\n * 1. The stack has an account and region defined _and_ the credentials\n * being used by the GitHub action are for a different account and region.\n * In this case we throw an error because the stack diff would not be correct\n * 2. The stack has an account and region that are _not_ defined. In this case\n * We will return true to indicate that the environment is unknown. This will be used\n * later to print a warning in the stack diff.\n *\n * @returns whether or not the environment is unknown\n */\n async validateEnvironment() {\n let unknownAccount = false;\n let unknownRegion = false;\n const stsClient = new client_sts_1.STSClient({\n credentials: this.credentials,\n });\n const callerIdentity = new client_sts_1.GetCallerIdentityCommand({});\n const identity = await stsClient.send(callerIdentity);\n const configRegion = await this.client.config.region();\n if (!this.stack.region) {\n unknownRegion = true;\n }\n if (!this.stack.account) {\n unknownAccount = true;\n }\n if (this.stack.account && identity.Account !== this.stack.account) {\n throw new Error(`Credentials are for account ${identity.Account} but stack is in account ${this.stack.account}`);\n }\n if (this.stack.region && configRegion !== this.stack.region) {\n throw new Error(`Credentials are for region ${configRegion} but stack is in region ${this.stack.region}`);\n }\n if (unknownAccount || unknownRegion) {\n return `aws://${identity.Account}/${configRegion}`;\n }\n return;\n }\n /** Performs the diff on the CloudFormation stack\n * This reads the existing stack from CFN and then uses the cloudformation-diff\n * package to perform the diff and collect additional information on the type of changes\n */\n async diffStack() {\n const unknownEnv = await this.validateEnvironment();\n const cmd = new client_cloudformation_1.GetTemplateCommand({\n StackName: this.stack.name,\n });\n let existingTemplate = {};\n try {\n const res = await this.client.send(cmd);\n existingTemplate = res.TemplateBody ? JSON.parse(res.TemplateBody) : {};\n }\n catch (e) {\n if (e instanceof client_cloudformation_1.StackNotFoundException) {\n existingTemplate = {};\n }\n }\n try {\n const diff = (0, cloudformation_diff_1.fullDiff)(existingTemplate, this.stack.content);\n const changes = this.evaluateDiff(this.stack.name, diff);\n changes.unknownEnvironment = unknownEnv;\n return {\n diff,\n changes,\n };\n }\n catch (e) {\n console.error('Error getting remote template: ', e);\n throw e;\n }\n }\n evaluateDiff(templateId, templateDiff) {\n const changes = {\n createdResources: 0,\n removedResources: 0,\n updatedResources: 0,\n destructiveChanges: [],\n };\n // go through all the resource differences and check for any\n // \"destructive\" changes\n templateDiff.resources.forEachDifference((logicalId, change) => {\n var _a, _b, _c;\n // if the change is a removal it will not show up as a 'changeImpact'\n // so need to check for it separately, unless it is a resourceType that\n // has been \"allowed\" to be destroyed\n const resourceType = (_b = (_a = change.oldValue) === null || _a === void 0 ? void 0 : _a.Type) !== null && _b !== void 0 ? _b : (_c = change.newValue) === null || _c === void 0 ? void 0 : _c.Type;\n switch (resourceType) {\n case 'AWS::CDK::Metadata':\n return;\n case 'AWS::Lambda::Function':\n const keys = Object.keys(change.propertyUpdates);\n if (keys.length <= 2 &&\n keys.includes('Code') ||\n keys.includes('Metadata')) {\n return;\n }\n }\n if (change.isUpdate) {\n changes.updatedResources += 1;\n }\n else if (change.isRemoval) {\n changes.removedResources += 1;\n }\n else if (change.isAddition) {\n changes.createdResources += 1;\n }\n if (resourceType && this.allowedDestroyTypes.includes(resourceType)) {\n return;\n }\n if (change.isRemoval) {\n changes.destructiveChanges.push({\n impact: cloudformation_diff_1.ResourceImpact.WILL_DESTROY,\n logicalId,\n stackName: templateId,\n });\n }\n else {\n switch (change.changeImpact) {\n case cloudformation_diff_1.ResourceImpact.MAY_REPLACE:\n case cloudformation_diff_1.ResourceImpact.WILL_ORPHAN:\n case cloudformation_diff_1.ResourceImpact.WILL_DESTROY:\n case cloudformation_diff_1.ResourceImpact.WILL_REPLACE:\n changes.destructiveChanges.push({\n impact: change.changeImpact,\n logicalId,\n stackName: templateId,\n });\n break;\n }\n }\n });\n return changes;\n }\n}\nexports.StackDiff = StackDiff;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHNFQUEwRztBQUMxRywwRUFBa0g7QUFDbEgsb0RBQTBFO0FBQzFFLHdFQUF5RTtBQTBEekU7O0dBRUc7QUFDSCxNQUFhLFNBQVM7SUFHcEIsWUFDbUIsS0FBZ0IsRUFDaEIsbUJBQTZCO1FBRDdCLFVBQUssR0FBTCxLQUFLLENBQVc7UUFDaEIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFVO1FBRTlDLElBQUksV0FBc0QsQ0FBQztRQUMzRCx3REFBd0Q7UUFDeEQsbUNBQW1DO1FBQ25DLFdBQVcsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFBLCtDQUF3QixFQUFDO1lBQ3hELE1BQU0sRUFBRTtnQkFDTixPQUFPLEVBQUUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLEtBQUssQ0FBQztnQkFDakUsZUFBZSxFQUFFLGlCQUFpQjtnQkFDbEMsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsb0JBQW9CO2dCQUNqRCxlQUFlLEVBQUUsR0FBRzthQUNyQjtTQUNGLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ2YsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLDRDQUFvQixDQUFDO1lBQ3JDLFdBQVc7WUFDWCxNQUFNLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNO1NBQzFCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7OztPQWFHO0lBQ0ssS0FBSyxDQUFDLG1CQUFtQjtRQUMvQixJQUFJLGNBQWMsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxhQUFhLEdBQUcsS0FBSyxDQUFDO1FBQzFCLE1BQU0sU0FBUyxHQUFHLElBQUksc0JBQVMsQ0FB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LElBQUksTUFBTSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUM3QixPQUFPLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDO1lBQ2hDLENBQUM7WUFDRCxJQUFJLFlBQVksSUFBSSxJQUFJLENBQUMsbUJBQW1CLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7Z0JBQ3BFLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUM7Z0JBQ3JCLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7b0JBQzlCLE1BQU0sRUFBRSxvQ0FBYyxDQUFDLFlBQVk7b0JBQ25DLFNBQVM7b0JBQ1QsU0FBUyxFQUFFLFVBQVU7aUJBQ3RCLENBQUMsQ0FBQztZQUNMLENBQUM7aUJBQU0sQ0FBQztnQkFDTixRQUFRLE1BQU0sQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDNUIsS0FBSyxvQ0FBYyxDQUFDLFdBQVcsQ0FBQztvQkFDaEMsS0FBSyxvQ0FBYyxDQUFDLFdBQVcsQ0FBQztvQkFDaEMsS0FBSyxvQ0FBYyxDQUFDLFlBQVksQ0FBQztvQkFDakMsS0FBSyxvQ0FBYyxDQUFDLFlBQVk7d0JBQzlCLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUM7NEJBQzlCLE1BQU0sRUFBRSxNQUFNLENBQUMsWUFBWTs0QkFDM0IsU0FBUzs0QkFDVCxTQUFTLEVBQUUsVUFBVTt5QkFDdEIsQ0FBQyxDQUFDO3dCQUNILE1BQU07Z0JBQ1YsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQztRQUNILE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7Q0FDRjtBQXBLRCw4QkFvS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXNvdXJjZURpZmZlcmVuY2UsIFJlc291cmNlSW1wYWN0LCBUZW1wbGF0ZURpZmYsIGZ1bGxEaWZmIH0gZnJvbSAnQGF3cy1jZGsvY2xvdWRmb3JtYXRpb24tZGlmZic7XG5pbXBvcnQgeyBDbG91ZEZvcm1hdGlvbkNsaWVudCwgR2V0VGVtcGxhdGVDb21tYW5kLCBTdGFja05vdEZvdW5kRXhjZXB0aW9uIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcbmltcG9ydCB7IFNUU0NsaWVudCwgR2V0Q2FsbGVySWRlbnRpdHlDb21tYW5kIH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXN0cyc7XG5pbXBvcnQgeyBmcm9tVGVtcG9yYXJ5Q3JlZGVudGlhbHMgfSBmcm9tICdAYXdzLXNkay9jcmVkZW50aWFsLXByb3ZpZGVycyc7XG5pbXBvcnQgeyBBd3NDcmVkZW50aWFsSWRlbnRpdHlQcm92aWRlciB9IGZyb20gJ0BzbWl0aHkvdHlwZXMnO1xuaW1wb3J0IHsgU3RhY2tJbmZvIH0gZnJvbSAnLi9hc3NlbWJseSc7XG5cbi8qKlxuICogRGV0YWlscyBvbiB3aGF0IGNoYW5nZXMgYXJlIG9jY3VycmluZyBpbiB0aGlzIHN0YWNrXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhbmdlRGV0YWlscyB7XG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIHJlc291cmNlcyB0aGF0IGFyZSBiZWluZyB1cGRhdGVkXG4gICAqL1xuICB1cGRhdGVkUmVzb3VyY2VzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgcmVzb3VyY2VzIHRoYXQgYXJlIGJlaW5nIHJlbW92ZWRcbiAgICovXG4gIHJlbW92ZWRSZXNvdXJjZXM6IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiByZXNvdXJjZXMgdGhhdCBhcmUgYmVpbmcgY3JlYXRlZFxuICAgKi9cbiAgY3JlYXRlZFJlc291cmNlczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJbmZvcm1hdGlvbiBvbiBhbnkgZGVzdHJ1Y3RpdmUgY2hhbmdlc1xuICAgKi9cbiAgZGVzdHJ1Y3RpdmVDaGFuZ2VzOiBEZXN0cnVjdGl2ZUNoYW5nZVtdO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgc3RhY2sgaGFzIGFuIHVua25vd24gZW52LiBJZiB0aGF0IGlzIHRoZSBjYXNlXG4gICAqIHRoZW4gdGhpcyByZXR1cm5zIHRoZSBlbnZpcm9ubWVudCBjcmVkZW50aWFscyB0aGF0IGFyZSBiZWluZyB1c2VkXG4gICAqIGluIHRoZSBmb3JtYXQgYXdzOi8vPGFjY291bnQ+LzxyZWdpb24+XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYWNjb3VudCBpcyBrbm93blxuICAgKi9cbiAgdW5rbm93bkVudmlyb25tZW50Pzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEluZm9ybWF0aW9uIG9uIGFueSBkZXN0cnVjdGl2ZSBjaGFuZ2VzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGVzdHJ1Y3RpdmVDaGFuZ2Uge1xuICAvKipcbiAgICogVGhlIGxvZ2ljYWxJZCBvZiB0aGUgcmVzb3VyY2Ugd2l0aCBhIGRlc3RydWN0aXZlIGNoYW5nZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9naWNhbElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzdGFjayB0aGF0IGNvbnRhaW5zIHRoZSBkZXN0cnVjdGl2ZSBjaGFuZ2VcbiAgICovXG4gIHJlYWRvbmx5IHN0YWNrTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgaW1wYWN0IG9mIHRoZSBkZXN0cnVjdGl2ZSBjaGFuZ2VcbiAgICovXG4gIHJlYWRvbmx5IGltcGFjdDogUmVzb3VyY2VJbXBhY3Q7XG59XG5cbi8qKlxuICogU3RhY2tEaWZmIHBlcmZvcm1zIHRoZSBkaWZmIG9uIGEgc3RhY2tcbiAqL1xuZXhwb3J0IGNsYXNzIFN0YWNrRGlmZiB7XG4gIHByaXZhdGUgcmVhZG9ubHkgY2xpZW50OiBDbG91ZEZvcm1hdGlvbkNsaWVudDtcbiAgcHJpdmF0ZSByZWFkb25seSBjcmVkZW50aWFsczogQXdzQ3JlZGVudGlhbElkZW50aXR5UHJvdmlkZXIgfCB1bmRlZmluZWQ7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgc3RhY2s6IFN0YWNrSW5mbyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsbG93ZWREZXN0cm95VHlwZXM6IHN0cmluZ1tdLFxuICApIHtcbiAgICBsZXQgY3JlZGVudGlhbHM6IEF3c0NyZWRlbnRpYWxJZGVudGl0eVByb3ZpZGVyIHwgdW5kZWZpbmVkO1xuICAgIC8vIGlmIHRoZXJlIGlzIGEgbG9va3VwIHJvbGUgdGhlbiBhc3N1bWUgdGhhdCwgb3RoZXJ3aXNlXG4gICAgLy8ganVzdCB1c2UgdGhlIGRlZmF1bHQgY3JlZGVudGlhbHNcbiAgICBjcmVkZW50aWFscyA9IHN0YWNrLmxvb2t1cFJvbGUgPyBmcm9tVGVtcG9yYXJ5Q3JlZGVudGlhbHMoe1xuICAgICAgcGFyYW1zOiB7XG4gICAgICAgIFJvbGVBcm46IHN0YWNrLmxvb2t1cFJvbGUuYXJuLnJlcGxhY2UoJyR7QVdTOjpQYXJ0aXRpb259JywgJ2F3cycpLFxuICAgICAgICBSb2xlU2Vzc2lvbk5hbWU6ICdjZGstZGlmZi1hY3Rpb24nLFxuICAgICAgICBFeHRlcm5hbElkOiBzdGFjay5sb29rdXBSb2xlLmFzc3VtZVJvbGVFeHRlcm5hbElkLFxuICAgICAgICBEdXJhdGlvblNlY29uZHM6IDkwMCxcbiAgICAgIH0sXG4gICAgfSkgOiB1bmRlZmluZWQ7XG4gICAgdGhpcy5jcmVkZW50aWFscyA9IGNyZWRlbnRpYWxzO1xuICAgIHRoaXMuY2xpZW50ID0gbmV3IENsb3VkRm9ybWF0aW9uQ2xpZW50KHtcbiAgICAgIGNyZWRlbnRpYWxzLFxuICAgICAgcmVnaW9uOiB0aGlzLnN0YWNrLnJlZ2lvbixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhlIGVudmlyb25tZW50IG9mIHRoZSBzdGFjayBhbmQgd2hldGhlciBpdCBtYXRjaGVzXG4gICAqIHRoZSBjcmVkZW50aWFscyBiZWluZyB1c2VkIGJ5IHRoZSBHaXRIdWIgYWN0aW9uXG4gICAqXG4gICAqIFRoZXJlIGFyZSB0d28gY2FzZXMgdGhhdCB3ZSBjYXJlIGFib3V0OlxuICAgKiAxLiBUaGUgc3RhY2sgaGFzIGFuIGFjY291bnQgYW5kIHJlZ2lvbiBkZWZpbmVkIF9hbmRfIHRoZSBjcmVkZW50aWFsc1xuICAgKiAgIGJlaW5nIHVzZWQgYnkgdGhlIEdpdEh1YiBhY3Rpb24gYXJlIGZvciBhIGRpZmZlcmVudCBhY2NvdW50IGFuZCByZWdpb24uXG4gICAqICAgSW4gdGhpcyBjYXNlIHdlIHRocm93IGFuIGVycm9yIGJlY2F1c2UgdGhlIHN0YWNrIGRpZmYgd291bGQgbm90IGJlIGNvcnJlY3RcbiAgICogMi4gVGhlIHN0YWNrIGhhcyBhbiBhY2NvdW50IGFuZCByZWdpb24gdGhhdCBhcmUgX25vdF8gZGVmaW5lZC4gSW4gdGhpcyBjYXNlXG4gICAqICAgIFdlIHdpbGwgcmV0dXJuIHRydWUgdG8gaW5kaWNhdGUgdGhhdCB0aGUgZW52aXJvbm1lbnQgaXMgdW5rbm93bi4gVGhpcyB3aWxsIGJlIHVzZWRcbiAgICogICAgbGF0ZXIgdG8gcHJpbnQgYSB3YXJuaW5nIGluIHRoZSBzdGFjayBkaWZmLlxuICAgKlxuICAgKiBAcmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGUgZW52aXJvbm1lbnQgaXMgdW5rbm93blxuICAgKi9cbiAgcHJpdmF0ZSBhc3luYyB2YWxpZGF0ZUVudmlyb25tZW50KCk6IFByb21pc2U8c3RyaW5nIHwgdW5kZWZpbmVkPiB7XG4gICAgbGV0IHVua25vd25BY2NvdW50ID0gZmFsc2U7XG4gICAgbGV0IHVua25vd25SZWdpb24gPSBmYWxzZTtcbiAgICBjb25zdCBzdHNDbGllbnQgPSBuZXcgU1RTQ2xpZW50KHtcbiAgICAgIGNyZWRlbnRpYWxzOiB0aGlzLmNyZWRlbnRpYWxzLFxuICAgIH0pO1xuICAgIGNvbnN0IGNhbGxlcklkZW50aXR5ID0gbmV3IEdldENhbGxlcklkZW50aXR5Q29tbWFuZCh7IH0pO1xuICAgIGNvbnN0IGlkZW50aXR5ID0gYXdhaXQgc3RzQ2xpZW50LnNlbmQoY2FsbGVySWRlbnRpdHkpO1xuICAgIGNvbnN0IGNvbmZpZ1JlZ2lvbiA9IGF3YWl0IHRoaXMuY2xpZW50LmNvbmZpZy5yZWdpb24oKTtcbiAgICBpZiAoIXRoaXMuc3RhY2sucmVnaW9uKSB7XG4gICAgICB1bmtub3duUmVnaW9uID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCF0aGlzLnN0YWNrLmFjY291bnQpIHtcbiAgICAgIHVua25vd25BY2NvdW50ID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3RhY2suYWNjb3VudCAmJiBpZGVudGl0eS5BY2NvdW50ICE9PSB0aGlzLnN0YWNrLmFjY291bnQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3JlZGVudGlhbHMgYXJlIGZvciBhY2NvdW50ICR7aWRlbnRpdHkuQWNjb3VudH0gYnV0IHN0YWNrIGlzIGluIGFjY291bnQgJHt0aGlzLnN0YWNrLmFjY291bnR9YCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuc3RhY2sucmVnaW9uICYmIGNvbmZpZ1JlZ2lvbiAhPT0gdGhpcy5zdGFjay5yZWdpb24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ3JlZGVudGlhbHMgYXJlIGZvciByZWdpb24gJHtjb25maWdSZWdpb259IGJ1dCBzdGFjayBpcyBpbiByZWdpb24gJHt0aGlzLnN0YWNrLnJlZ2lvbn1gKTtcbiAgICB9XG5cbiAgICBpZiAodW5rbm93bkFjY291bnQgfHwgdW5rbm93blJlZ2lvbikge1xuICAgICAgcmV0dXJuIGBhd3M6Ly8ke2lkZW50aXR5LkFjY291bnR9LyR7Y29uZmlnUmVnaW9ufWA7XG4gICAgfVxuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLyoqIFBlcmZvcm1zIHRoZSBkaWZmIG9uIHRoZSBDbG91ZEZvcm1hdGlvbiBzdGFja1xuICAgKiBUaGlzIHJlYWRzIHRoZSBleGlzdGluZyBzdGFjayBmcm9tIENGTiBhbmQgdGhlbiB1c2VzIHRoZSBjbG91ZGZvcm1hdGlvbi1kaWZmXG4gICAqIHBhY2thZ2UgdG8gcGVyZm9ybSB0aGUgZGlmZiBhbmQgY29sbGVjdCBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIHRoZSB0eXBlIG9mIGNoYW5nZXNcbiAgICovXG4gIHB1YmxpYyBhc3luYyBkaWZmU3RhY2soKTogUHJvbWlzZTx7IGRpZmY6IFRlbXBsYXRlRGlmZjsgY2hhbmdlczogQ2hhbmdlRGV0YWlscyB9PiB7XG4gICAgY29uc3QgdW5rbm93bkVudiA9IGF3YWl0IHRoaXMudmFsaWRhdGVFbnZpcm9ubWVudCgpO1xuXG4gICAgY29uc3QgY21kID0gbmV3IEdldFRlbXBsYXRlQ29tbWFuZCh7XG4gICAgICBTdGFja05hbWU6IHRoaXMuc3RhY2submFtZSxcbiAgICB9KTtcbiAgICBsZXQgZXhpc3RpbmdUZW1wbGF0ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSA9IHt9O1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLmNsaWVudC5zZW5kKGNtZCk7XG4gICAgICBleGlzdGluZ1RlbXBsYXRlID0gcmVzLlRlbXBsYXRlQm9keSA/IEpTT04ucGFyc2UocmVzLlRlbXBsYXRlQm9keSkgOiB7fTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGlmIChlIGluc3RhbmNlb2YgU3RhY2tOb3RGb3VuZEV4Y2VwdGlvbikge1xuICAgICAgICBleGlzdGluZ1RlbXBsYXRlID0ge307XG4gICAgICB9XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICBjb25zdCBkaWZmID0gZnVsbERpZmYoZXhpc3RpbmdUZW1wbGF0ZSwgdGhpcy5zdGFjay5jb250ZW50KTtcbiAgICAgIGNvbnN0IGNoYW5nZXMgPSB0aGlzLmV2YWx1YXRlRGlmZih0aGlzLnN0YWNrLm5hbWUsIGRpZmYpO1xuICAgICAgY2hhbmdlcy51bmtub3duRW52aXJvbm1lbnQgPSB1bmtub3duRW52O1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGlmZixcbiAgICAgICAgY2hhbmdlcyxcbiAgICAgIH07XG5cbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGdldHRpbmcgcmVtb3RlIHRlbXBsYXRlOiAnLCBlKTtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBldmFsdWF0ZURpZmYodGVtcGxhdGVJZDogc3RyaW5nLCB0ZW1wbGF0ZURpZmY6IFRlbXBsYXRlRGlmZik6IENoYW5nZURldGFpbHMge1xuICAgIGNvbnN0IGNoYW5nZXM6IENoYW5nZURldGFpbHMgPSB7XG4gICAgICBjcmVhdGVkUmVzb3VyY2VzOiAwLFxuICAgICAgcmVtb3ZlZFJlc291cmNlczogMCxcbiAgICAgIHVwZGF0ZWRSZXNvdXJjZXM6IDAsXG4gICAgICBkZXN0cnVjdGl2ZUNoYW5nZXM6IFtdLFxuICAgIH07XG4gICAgLy8gZ28gdGhyb3VnaCBhbGwgdGhlIHJlc291cmNlIGRpZmZlcmVuY2VzIGFuZCBjaGVjayBmb3IgYW55XG4gICAgLy8gXCJkZXN0cnVjdGl2ZVwiIGNoYW5nZXNcbiAgICB0ZW1wbGF0ZURpZmYucmVzb3VyY2VzLmZvckVhY2hEaWZmZXJlbmNlKChsb2dpY2FsSWQ6IHN0cmluZywgY2hhbmdlOiBSZXNvdXJjZURpZmZlcmVuY2UpID0+IHtcbiAgICAgIC8vIGlmIHRoZSBjaGFuZ2UgaXMgYSByZW1vdmFsIGl0IHdpbGwgbm90IHNob3cgdXAgYXMgYSAnY2hhbmdlSW1wYWN0J1xuICAgICAgLy8gc28gbmVlZCB0byBjaGVjayBmb3IgaXQgc2VwYXJhdGVseSwgdW5sZXNzIGl0IGlzIGEgcmVzb3VyY2VUeXBlIHRoYXRcbiAgICAgIC8vIGhhcyBiZWVuIFwiYWxsb3dlZFwiIHRvIGJlIGRlc3Ryb3llZFxuICAgICAgY29uc3QgcmVzb3VyY2VUeXBlID0gY2hhbmdlLm9sZFZhbHVlPy5UeXBlID8/IGNoYW5nZS5uZXdWYWx1ZT8uVHlwZTtcbiAgICAgIHN3aXRjaCAocmVzb3VyY2VUeXBlKSB7XG4gICAgICAgIGNhc2UgJ0FXUzo6Q0RLOjpNZXRhZGF0YSc6XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjYXNlICdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nOlxuICAgICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhjaGFuZ2UucHJvcGVydHlVcGRhdGVzKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICBrZXlzLmxlbmd0aCA8PSAyICYmXG4gICAgICAgICAgICBrZXlzLmluY2x1ZGVzKCdDb2RlJykgfHxcbiAgICAgICAgICAgIGtleXMuaW5jbHVkZXMoJ01ldGFkYXRhJylcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoY2hhbmdlLmlzVXBkYXRlKSB7XG4gICAgICAgIGNoYW5nZXMudXBkYXRlZFJlc291cmNlcyArPSAxO1xuICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuaXNSZW1vdmFsKSB7XG4gICAgICAgIGNoYW5nZXMucmVtb3ZlZFJlc291cmNlcyArPSAxO1xuICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuaXNBZGRpdGlvbikge1xuICAgICAgICBjaGFuZ2VzLmNyZWF0ZWRSZXNvdXJjZXMgKz0gMTtcbiAgICAgIH1cbiAgICAgIGlmIChyZXNvdXJjZVR5cGUgJiYgdGhpcy5hbGxvd2VkRGVzdHJveVR5cGVzLmluY2x1ZGVzKHJlc291cmNlVHlwZSkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoY2hhbmdlLmlzUmVtb3ZhbCkge1xuICAgICAgICBjaGFuZ2VzLmRlc3RydWN0aXZlQ2hhbmdlcy5wdXNoKHtcbiAgICAgICAgICBpbXBhY3Q6IFJlc291cmNlSW1wYWN0LldJTExfREVTVFJPWSxcbiAgICAgICAgICBsb2dpY2FsSWQsXG4gICAgICAgICAgc3RhY2tOYW1lOiB0ZW1wbGF0ZUlkLFxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHN3aXRjaCAoY2hhbmdlLmNoYW5nZUltcGFjdCkge1xuICAgICAgICAgIGNhc2UgUmVzb3VyY2VJbXBhY3QuTUFZX1JFUExBQ0U6XG4gICAgICAgICAgY2FzZSBSZXNvdXJjZUltcGFjdC5XSUxMX09SUEhBTjpcbiAgICAgICAgICBjYXNlIFJlc291cmNlSW1wYWN0LldJTExfREVTVFJPWTpcbiAgICAgICAgICBjYXNlIFJlc291cmNlSW1wYWN0LldJTExfUkVQTEFDRTpcbiAgICAgICAgICAgIGNoYW5nZXMuZGVzdHJ1Y3RpdmVDaGFuZ2VzLnB1c2goe1xuICAgICAgICAgICAgICBpbXBhY3Q6IGNoYW5nZS5jaGFuZ2VJbXBhY3QsXG4gICAgICAgICAgICAgIGxvZ2ljYWxJZCxcbiAgICAgICAgICAgICAgc3RhY2tOYW1lOiB0ZW1wbGF0ZUlkLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBjaGFuZ2VzO1xuICB9XG59XG4iXX0=","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst core = __importStar(require(\"@actions/core\"));\nconst action_1 = require(\"./action\");\n(0, action_1.run)().catch((error) => {\n core.setFailed(error.message);\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUFzQztBQUN0QyxxQ0FBK0I7QUFFL0IsSUFBQSxZQUFHLEdBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFVLEVBQUUsRUFBRTtJQUN6QixJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoQyxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvcmUgZnJvbSAnQGFjdGlvbnMvY29yZSc7XG5pbXBvcnQgeyBydW4gfSBmcm9tICcuL2FjdGlvbic7XG5cbnJ1bigpLmNhdGNoKChlcnJvcjogYW55KSA9PiB7XG4gIGNvcmUuc2V0RmFpbGVkKGVycm9yLm1lc3NhZ2UpO1xufSk7XG4iXX0=","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.StageProcessor = void 0;\nconst crypto = __importStar(require(\"crypto\"));\nconst stream_1 = require(\"stream\");\nconst string_decoder_1 = require(\"string_decoder\");\nconst cloudformation_diff_1 = require(\"@aws-cdk/cloudformation-diff\");\nconst diff_1 = require(\"./diff\");\n// the max comment length allowed by GitHub\nconst MAX_COMMENT_LENGTH = 65536;\n/**\n * StageProcessor processes a CDK stage and creates a comment on the GitHub PR\n * detailing the stack diffs\n */\nclass StageProcessor {\n constructor(stages, allowedDestroyTypes) {\n this.stages = stages;\n this.allowedDestroyTypes = allowedDestroyTypes;\n this.stageComments = {};\n this.stages.forEach(stage => {\n this.stageComments[stage.name] = {\n destructiveChanges: 0,\n stackComments: stage.stacks.reduce((prev, curr) => {\n prev[curr.name] = [];\n return prev;\n }, {}),\n hash: md5Hash(JSON.stringify({\n stageName: stage.name,\n ...stage.stacks.reduce((prev, curr) => {\n prev.stacks.push({\n name: curr.name,\n lookupRole: curr.lookupRole,\n account: curr.account,\n region: curr.region,\n });\n return prev;\n }, { stacks: [] }), // we don't want the content to be part of the hash\n })),\n };\n });\n }\n /**\n * Process all of the stages. Once this has been run\n * the comment can be created with `commentStages()`\n */\n async processStages(ignoreDestructiveChanges = []) {\n for (const stage of this.stages) {\n for (const stack of stage.stacks) {\n try {\n const { comment, changes } = await this.diffStack(stack);\n this.stageComments[stage.name].stackComments[stack.name].push(...comment);\n if (!ignoreDestructiveChanges.includes(stage.name)) {\n this.stageComments[stage.name].destructiveChanges += changes;\n }\n }\n catch (e) {\n console.error('Error processing stages: ', e);\n throw e;\n }\n }\n }\n }\n async commentStacks(comments) {\n for (const [stageName, stage] of Object.entries(this.stageComments)) {\n for (const [stackName, comment] of Object.entries(stage.stackComments)) {\n const hash = md5Hash(JSON.stringify({\n stageName,\n stackName,\n }));\n const stackComment = this.getCommentForStack(stageName, stackName, comment);\n if (stackComment.join('\\n').length > MAX_COMMENT_LENGTH) {\n throw new Error(`Comment for stack ${stackName} is too long, please report this as a bug https://github.com/corymhall/cdk-diff-action/issues/new`);\n }\n const previous = await comments.findPrevious(hash);\n if (previous) {\n await comments.updateComment(previous, hash, stackComment);\n }\n else {\n await comments.createComment(hash, stackComment);\n }\n }\n }\n }\n async commentStage(comments, hash, comment) {\n const previous = await comments.findPrevious(hash);\n if (previous) {\n await comments.updateComment(previous, hash, comment);\n }\n else {\n await comments.createComment(hash, comment);\n }\n }\n /**\n * Create the GitHub comment for the stage\n * This will try to create a single comment per stage, but if the comment\n * is too long it will create a comment per stack\n * @param comments the comments object to use to create the comment\n */\n async commentStages(comments) {\n for (const [stageName, info] of Object.entries(this.stageComments)) {\n const stageComment = this.getCommentForStage(stageName);\n if (stageComment.join('\\n').length > MAX_COMMENT_LENGTH) {\n await this.commentStacks(comments);\n }\n else {\n await this.commentStage(comments, info.hash, stageComment);\n }\n }\n }\n /**\n * Returns whether or not there are destructive changes in this stage\n */\n get hasDestructiveChanges() {\n for (const comments of Object.values(this.stageComments)) {\n if (comments.destructiveChanges) {\n return true;\n }\n }\n return false;\n }\n async diffStack(stack) {\n try {\n const stackDiff = new diff_1.StackDiff(stack, this.allowedDestroyTypes);\n const { diff, changes } = await stackDiff.diffStack();\n return {\n comment: this.formatStackComment(stack.name, diff, changes),\n changes: changes.destructiveChanges.length,\n };\n }\n catch (e) {\n console.error('Error performing stack diff: ', e);\n throw e;\n }\n }\n getEmoji(changes) {\n if (changes.destructiveChanges.length || changes.removedResources) {\n return ':x:';\n }\n else if (changes.updatedResources) {\n return ':yellow_circle:';\n }\n else if (changes.createdResources) {\n return ':sparkle:';\n }\n return ':white_check_mark:';\n }\n formatStackComment(stackName, diff, changes) {\n const output = [];\n const emoji = this.getEmoji(changes);\n if (diff.isEmpty) {\n output.push(`No Changes for stack: ${stackName} ${emoji}`);\n return output;\n }\n output.push(...[\n `#### Diff for stack: ${stackName} - ` +\n `***${changes.createdResources} to add, ${changes.updatedResources} to update, ${changes.removedResources} to destroy*** ` +\n emoji,\n '
Details',\n '',\n ]);\n if (changes.unknownEnvironment) {\n output.push('> [!INFO]\\n> ***Unknown Environment*** :information_source:');\n output.push('> This stack has an unknown environment which may mean the diff is performed against the wrong environment');\n output.push(`> Environmment used ${changes.unknownEnvironment}`);\n output.push('');\n }\n if (changes.destructiveChanges.length) {\n output.push('');\n output.push('> [!WARNING]\\n> ***Destructive Changes*** :bangbang:'),\n changes.destructiveChanges.forEach(change => {\n output.push(`> **Stack: ${change.stackName} - Resource: ${change.logicalId} - Impact:** ***${change.impact}***`);\n output.push('');\n });\n }\n const writable = new StringWritable({});\n (0, cloudformation_diff_1.formatDifferences)(writable, diff);\n output.push('');\n output.push('```shell');\n output.push(writable.data);\n output.push('```');\n output.push('
');\n output.push('');\n return output;\n }\n getCommentForStack(stageName, stackName, comment) {\n const output = [];\n if (!comment.length) {\n return output;\n }\n output.push(`### Diff for stack: ${stageName} / ${stackName}`);\n return output.concat(comment);\n }\n getCommentForStage(stageName) {\n const output = [];\n const stageComments = this.stageComments[stageName];\n const comments = Object.values(this.stageComments[stageName].stackComments).flatMap(x => x);\n if (!comments.length) {\n return output;\n }\n output.push(`### Diff for stage: ${stageName}`);\n if (stageComments.destructiveChanges) {\n output.push(`> [!WARNING]\\n> ${stageComments.destructiveChanges} Destructive Changes`);\n output.push('');\n }\n return output.concat(comments);\n }\n}\nexports.StageProcessor = StageProcessor;\nclass StringWritable extends stream_1.Writable {\n constructor(options) {\n super(options);\n this._decoder = new string_decoder_1.StringDecoder();\n this.data = '';\n }\n _write(chunk, encoding, callback) {\n if (encoding === 'buffer') {\n chunk = this._decoder.write(chunk);\n }\n this.data += chunk;\n callback();\n }\n _final(callback) {\n this.data += this._decoder.end();\n callback();\n }\n}\nfunction md5Hash(val) {\n return crypto.createHash('md5').update(val).digest('hex');\n}\n;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhZ2UtcHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3N0YWdlLXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLCtDQUFpQztBQUNqQyxtQ0FBbUQ7QUFDbkQsbURBQStDO0FBQy9DLHNFQUErRTtBQUcvRSxpQ0FBa0Q7QUFFbEQsMkNBQTJDO0FBQzNDLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDO0FBd0JqQzs7O0dBR0c7QUFDSCxNQUFhLGNBQWM7SUFFekIsWUFDbUIsTUFBbUIsRUFDbkIsbUJBQTZCO1FBRDdCLFdBQU0sR0FBTixNQUFNLENBQWE7UUFDbkIsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUFVO1FBSC9CLGtCQUFhLEdBQTBDLEVBQUUsQ0FBQztRQUt6RSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUMxQixJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRztnQkFDL0Isa0JBQWtCLEVBQUUsQ0FBQztnQkFDckIsYUFBYSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFO29CQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztvQkFDckIsT0FBTyxJQUFJLENBQUM7Z0JBQ2QsQ0FBQyxFQUFFLEVBQXVDLENBQUM7Z0JBQzNDLElBQUksRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztvQkFDM0IsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJO29CQUNyQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFO3dCQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQzs0QkFDZixJ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LENBQUMsR0FBVztJQUMxQixPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUM1RCxDQUFDO0FBQUEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgV3JpdGFibGUsIFdyaXRhYmxlT3B0aW9ucyB9IGZyb20gJ3N0cmVhbSc7XG5pbXBvcnQgeyBTdHJpbmdEZWNvZGVyIH0gZnJvbSAnc3RyaW5nX2RlY29kZXInO1xuaW1wb3J0IHsgVGVtcGxhdGVEaWZmLCBmb3JtYXREaWZmZXJlbmNlcyB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkZm9ybWF0aW9uLWRpZmYnO1xuaW1wb3J0IHsgU3RhY2tJbmZvLCBTdGFnZUluZm8gfSBmcm9tICcuL2Fzc2VtYmx5JztcbmltcG9ydCB7IENvbW1lbnRzIH0gZnJvbSAnLi9jb21tZW50JztcbmltcG9ydCB7IENoYW5nZURldGFpbHMsIFN0YWNrRGlmZiB9IGZyb20gJy4vZGlmZic7XG5cbi8vIHRoZSBtYXggY29tbWVudCBsZW5ndGggYWxsb3dlZCBieSBHaXRIdWJcbmNvbnN0IE1BWF9DT01NRU5UX0xFTkdUSCA9IDY1NTM2O1xuXG4vKipcbiAqIEluZm9ybWF0aW9uIG5lZWRlZCB0byBtYWtlIGEgY29tbWVudCBmb3IgYSBDREsgU3RhZ2VcbiAqL1xuaW50ZXJmYWNlIFN0YWdlQ29tbWVudCB7XG4gIC8qKlxuICAgKiBUaGUgZnVsbCBjb21tZW50IGZvciBlYWNoIHN0YWNrLiBUaGUgbGlzdCB3aWxsIGJlIGpvaW5lZCB3aXRoIFxcblxuICAgKi9cbiAgc3RhY2tDb21tZW50czogeyBbc3RhY2tOYW1lOiBzdHJpbmddOiBzdHJpbmdbXSB9O1xuXG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlIGhhc2ggZm9yIHRoZSBzdGFnZSBjb21tZW50XG4gICAqIFRoaXMgd2lsbCBiZSB1c2VkIHRvIGxvb2t1cCB0aGUgc3RhZ2UgY29tbWVudCBvbiB0aGUgUFJcbiAgICogc28gdGhhdCBpdCBjYW4gYmUgb3ZlcndyaXR0ZW5cbiAgICovXG4gIGhhc2g6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBkZXN0cnVjdGl2ZSBjaGFuZ2VzIGluIHRoaXMgc3RhZ2VcbiAgICovXG4gIGRlc3RydWN0aXZlQ2hhbmdlczogbnVtYmVyO1xufVxuXG4vKipcbiAqIFN0YWdlUHJvY2Vzc29yIHByb2Nlc3NlcyBhIENESyBzdGFnZSBhbmQgY3JlYXRlcyBhIGNvbW1lbnQgb24gdGhlIEdpdEh1YiBQUlxuICogZGV0YWlsaW5nIHRoZSBzdGFjayBkaWZmc1xuICovXG5leHBvcnQgY2xhc3MgU3RhZ2VQcm9jZXNzb3Ige1xuICBwcml2YXRlIHJlYWRvbmx5IHN0YWdlQ29tbWVudHM6IHsgW3N0YWdlTmFtZTogc3RyaW5nXTogU3RhZ2VDb21tZW50IH0gPSB7fTtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdGFnZXM6IFN0YWdlSW5mb1tdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYWxsb3dlZERlc3Ryb3lUeXBlczogc3RyaW5nW10sXG4gICkge1xuICAgIHRoaXMuc3RhZ2VzLmZvckVhY2goc3RhZ2UgPT4ge1xuICAgICAgdGhpcy5zdGFnZUNvbW1lbnRzW3N0YWdlLm5hbWVdID0ge1xuICAgICAgICBkZXN0cnVjdGl2ZUNoYW5nZXM6IDAsXG4gICAgICAgIHN0YWNrQ29tbWVudHM6IHN0YWdlLnN0YWNrcy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcbiAgICAgICAgICBwcmV2W2N1cnIubmFtZV0gPSBbXTtcbiAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgfSwge30gYXMgeyBbc3RhY2tOYW1lOiBzdHJpbmddOiBzdHJpbmdbXSB9KSxcbiAgICAgICAgaGFzaDogbWQ1SGFzaChKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgc3RhZ2VOYW1lOiBzdGFnZS5uYW1lLFxuICAgICAgICAgIC4uLnN0YWdlLnN0YWNrcy5yZWR1Y2UoKHByZXYsIGN1cnIpID0+IHtcbiAgICAgICAgICAgIHByZXYuc3RhY2tzLnB1c2goe1xuICAgICAgICAgICAgICBuYW1lOiBjdXJyLm5hbWUsXG4gICAgICAgICAgICAgIGxvb2t1cFJvbGU6IGN1cnIubG9va3VwUm9sZSxcbiAgICAgICAgICAgICAgYWNjb3VudDogY3Vyci5hY2NvdW50LFxuICAgICAgICAgICAgICByZWdpb246IGN1cnIucmVnaW9uLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcHJldjtcbiAgICAgICAgICB9LCB7IHN0YWNrczogW10gfSBhcyB7IHN0YWNrczogT21pdDxTdGFja0luZm8sICdjb250ZW50Jz5bXSB9KSwgLy8gd2UgZG9uJ3Qgd2FudCB0aGUgY29udGVudCB0byBiZSBwYXJ0IG9mIHRoZSBoYXNoXG4gICAgICAgIH0pKSxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUHJvY2VzcyBhbGwgb2YgdGhlIHN0YWdlcy4gT25jZSB0aGlzIGhhcyBiZWVuIHJ1blxuICAgKiB0aGUgY29tbWVudCBjYW4gYmUgY3JlYXRlZCB3aXRoIGBjb21tZW50U3RhZ2VzKClgXG4gICAqL1xuICBwdWJsaWMgYXN5bmMgcHJvY2Vzc1N0YWdlcyhpZ25vcmVEZXN0cnVjdGl2ZUNoYW5nZXM6IHN0cmluZ1tdID0gW10pIHtcbiAgICBmb3IgKGNvbnN0IHN0YWdlIG9mIHRoaXMuc3RhZ2VzKSB7XG4gICAgICBmb3IgKGNvbnN0IHN0YWNrIG9mIHN0YWdlLnN0YWNrcykge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGNvbnN0IHsgY29tbWVudCwgY2hhbmdlcyB9ID0gYXdhaXQgdGhpcy5kaWZmU3RhY2soc3RhY2spO1xuICAgICAgICAgIHRoaXMuc3RhZ2VDb21tZW50c1tzdGFnZS5uYW1lXS5zdGFja0NvbW1lbnRzW3N0YWNrLm5hbWVdLnB1c2goLi4uY29tbWVudCk7XG4gICAgICAgICAgaWYgKCFpZ25vcmVEZXN0cnVjdGl2ZUNoYW5nZXMuaW5jbHVkZXMoc3RhZ2UubmFtZSkpIHtcbiAgICAgICAgICAgIHRoaXMuc3RhZ2VDb21tZW50c1tzdGFnZS5uYW1lXS5kZXN0cnVjdGl2ZUNoYW5nZXMgKz0gY2hhbmdlcztcbiAgICAgICAgICB9XG4gICAgICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHByb2Nlc3Npbmcgc3RhZ2VzOiAnLCBlKTtcbiAgICAgICAgICB0aHJvdyBlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBjb21tZW50U3RhY2tzKGNvbW1lbnRzOiBDb21tZW50cykge1xuICAgIGZvciAoY29uc3QgW3N0YWdlTmFtZSwgc3RhZ2VdIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuc3RhZ2VDb21tZW50cykpIHtcbiAgICAgIGZvciAoY29uc3QgW3N0YWNrTmFtZSwgY29tbWVudF0gb2YgT2JqZWN0LmVudHJpZXMoc3RhZ2Uuc3RhY2tDb21tZW50cykpIHtcbiAgICAgICAgY29uc3QgaGFzaCA9IG1kNUhhc2goSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIHN0YWdlTmFtZSxcbiAgICAgICAgICBzdGFja05hbWUsXG4gICAgICAgIH0pKTtcbiAgICAgICAgY29uc3Qgc3RhY2tDb21tZW50ID0gdGhpcy5nZXRDb21tZW50Rm9yU3RhY2soc3RhZ2VOYW1lLCBzdGFja05hbWUsIGNvbW1lbnQpO1xuICAgICAgICBpZiAoc3RhY2tDb21tZW50LmpvaW4oJ1xcbicpLmxlbmd0aCA+IE1BWF9DT01NRU5UX0xFTkdUSCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29tbWVudCBmb3Igc3RhY2sgJHtzdGFja05hbWV9IGlzIHRvbyBsb25nLCBwbGVhc2UgcmVwb3J0IHRoaXMgYXMgYSBidWcgaHR0cHM6Ly9naXRodWIuY29tL2NvcnltaGFsbC9jZGstZGlmZi1hY3Rpb24vaXNzdWVzL25ld2ApO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHByZXZpb3VzID0gYXdhaXQgY29tbWVudHMuZmluZFByZXZpb3VzKGhhc2gpO1xuICAgICAgICBpZiAocHJldmlvdXMpIHtcbiAgICAgICAgICBhd2FpdCBjb21tZW50cy51cGRhdGVDb21tZW50KHByZXZpb3VzLCBoYXNoLCBzdGFja0NvbW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGF3YWl0IGNvbW1lbnRzLmNyZWF0ZUNvbW1lbnQoaGFzaCwgc3RhY2tDb21tZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgY29tbWVudFN0YWdlKGNvbW1lbnRzOiBDb21tZW50cywgaGFzaDogc3RyaW5nLCBjb21tZW50OiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IHByZXZpb3VzID0gYXdhaXQgY29tbWVudHMuZmluZFByZXZpb3VzKGhhc2gpO1xuICAgIGlmIChwcmV2aW91cykge1xuICAgICAgYXdhaXQgY29tbWVudHMudXBkYXRlQ29tbWVudChwcmV2aW91cywgaGFzaCwgY29tbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGF3YWl0IGNvbW1lbnRzLmNyZWF0ZUNvbW1lbnQoaGFzaCwgY29tbWVudCk7XG4gICAgfVxuXG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlIHRoZSBHaXRIdWIgY29tbWVudCBmb3IgdGhlIHN0YWdlXG4gICAqIFRoaXMgd2lsbCB0cnkgdG8gY3JlYXRlIGEgc2luZ2xlIGNvbW1lbnQgcGVyIHN0YWdlLCBidXQgaWYgdGhlIGNvbW1lbnRcbiAgICogaXMgdG9vIGxvbmcgaXQgd2lsbCBjcmVhdGUgYSBjb21tZW50IHBlciBzdGFja1xuICAgKiBAcGFyYW0gY29tbWVudHMgdGhlIGNvbW1lbnRzIG9iamVjdCB0byB1c2UgdG8gY3JlYXRlIHRoZSBjb21tZW50XG4gICAqL1xuICBwdWJsaWMgYXN5bmMgY29tbWVudFN0YWdlcyhjb21tZW50czogQ29tbWVudHMpIHtcbiAgICBmb3IgKGNvbnN0IFtzdGFnZU5hbWUsIGluZm9dIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuc3RhZ2VDb21tZW50cykpIHtcbiAgICAgIGNvbnN0IHN0YWdlQ29tbWVudCA9IHRoaXMuZ2V0Q29tbWVudEZvclN0YWdlKHN0YWdlTmFtZSk7XG4gICAgICBpZiAoc3RhZ2VDb21tZW50LmpvaW4oJ1xcbicpLmxlbmd0aCA+IE1BWF9DT01NRU5UX0xFTkdUSCkge1xuICAgICAgICBhd2FpdCB0aGlzLmNvbW1lbnRTdGFja3MoY29tbWVudHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXdhaXQgdGhpcy5jb21tZW50U3RhZ2UoY29tbWVudHMsIGluZm8uaGFzaCwgc3RhZ2VDb21tZW50KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB3aGV0aGVyIG9yIG5vdCB0aGVyZSBhcmUgZGVzdHJ1Y3RpdmUgY2hhbmdlcyBpbiB0aGlzIHN0YWdlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGhhc0Rlc3RydWN0aXZlQ2hhbmdlcygpOiBib29sZWFuIHtcbiAgICBmb3IgKGNvbnN0IGNvbW1lbnRzIG9mIE9iamVjdC52YWx1ZXModGhpcy5zdGFnZUNvbW1lbnRzKSkge1xuICAgICAgaWYgKGNvbW1lbnRzLmRlc3RydWN0aXZlQ2hhbmdlcykge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBkaWZmU3RhY2soc3RhY2s6IFN0YWNrSW5mbyk6IFByb21pc2U8e2NvbW1lbnQ6IHN0cmluZ1tdOyBjaGFuZ2VzOiBudW1iZXJ9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHN0YWNrRGlmZiA9IG5ldyBTdGFja0RpZmYoc3RhY2ssIHRoaXMuYWxsb3dlZERlc3Ryb3lUeXBlcyk7XG4gICAgICBjb25zdCB7IGRpZmYsIGNoYW5nZXMgfSA9IGF3YWl0IHN0YWNrRGlmZi5kaWZmU3RhY2soKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGNvbW1lbnQ6IHRoaXMuZm9ybWF0U3RhY2tDb21tZW50KHN0YWNrLm5hbWUsIGRpZmYsIGNoYW5nZXMpLFxuICAgICAgICBjaGFuZ2VzOiBjaGFuZ2VzLmRlc3RydWN0aXZlQ2hhbmdlcy5sZW5ndGgsXG4gICAgICB9O1xuXG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdFcnJvciBwZXJmb3JtaW5nIHN0YWNrIGRpZmY6ICcsIGUpO1xuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldEVtb2ppKGNoYW5nZXM6IENoYW5nZURldGFpbHMpOiBzdHJpbmcge1xuICAgIGlmIChjaGFuZ2VzLmRlc3RydWN0aXZlQ2hhbmdlcy5sZW5ndGggfHwgY2hhbmdlcy5yZW1vdmVkUmVzb3VyY2VzKSB7XG4gICAgICByZXR1cm4gJzp4Oic7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2VzLnVwZGF0ZWRSZXNvdXJjZXMpIHtcbiAgICAgIHJldHVybiAnOnllbGxvd19jaXJjbGU6JztcbiAgICB9IGVsc2UgaWYgKGNoYW5nZXMuY3JlYXRlZFJlc291cmNlcykge1xuICAgICAgcmV0dXJuICc6c3BhcmtsZTonO1xuICAgIH1cbiAgICByZXR1cm4gJzp3aGl0ZV9jaGVja19tYXJrOic7XG4gIH1cblxuICBwcml2YXRlIGZvcm1hdFN0YWNrQ29tbWVudChzdGFja05hbWU6IHN0cmluZywgZGlmZjogVGVtcGxhdGVEaWZmLCBjaGFuZ2VzOiBDaGFuZ2VEZXRhaWxzKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IG91dHB1dDogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBlbW9qaSA9IHRoaXMuZ2V0RW1vamkoY2hhbmdlcyk7XG4gICAgaWYgKGRpZmYuaXNFbXB0eSkge1xuICAgICAgb3V0cHV0LnB1c2goYE5vIENoYW5nZXMgZm9yIHN0YWNrOiAke3N0YWNrTmFtZX0gJHtlbW9qaX1gKTtcbiAgICAgIHJldHVybiBvdXRwdXQ7XG4gICAgfVxuICAgIG91dHB1dC5wdXNoKC4uLltcbiAgICAgIGAjIyMjIERpZmYgZm9yIHN0YWNrOiAke3N0YWNrTmFtZX0gLSBgK1xuICAgICAgICBgKioqJHtjaGFuZ2VzLmNyZWF0ZWRSZXNvdXJjZXN9IHRvIGFkZCwgJHtjaGFuZ2VzLnVwZGF0ZWRSZXNvdXJjZXN9IHRvIHVwZGF0ZSwgJHtjaGFuZ2VzLnJlbW92ZWRSZXNvdXJjZXN9IHRvIGRlc3Ryb3kqKiogIGArXG4gICAgICAgIGVtb2ppLFxuICAgICAgJzxkZXRhaWxzPjxzdW1tYXJ5PkRldGFpbHM8L3N1bW1hcnk+JyxcbiAgICAgICcnLFxuICAgIF0pO1xuICAgIGlmIChjaGFuZ2VzLnVua25vd25FbnZpcm9ubWVudCkge1xuICAgICAgb3V0cHV0LnB1c2goJz4gWyFJTkZPXVxcbj4gKioqVW5rbm93biBFbnZpcm9ubWVudCoqKiA6aW5mb3JtYXRpb25fc291cmNlOicpO1xuICAgICAgb3V0cHV0LnB1c2goJz4gVGhpcyBzdGFjayBoYXMgYW4gdW5rbm93biBlbnZpcm9ubWVudCB3aGljaCBtYXkgbWVhbiB0aGUgZGlmZiBpcyBwZXJmb3JtZWQgYWdhaW5zdCB0aGUgd3JvbmcgZW52aXJvbm1lbnQnKTtcbiAgICAgIG91dHB1dC5wdXNoKGA+IEVudmlyb25tbWVudCB1c2VkICR7Y2hhbmdlcy51bmtub3duRW52aXJvbm1lbnR9YCk7XG4gICAgICBvdXRwdXQucHVzaCgnJyk7XG4gICAgfVxuICAgIGlmIChjaGFuZ2VzLmRlc3RydWN0aXZlQ2hhbmdlcy5sZW5ndGgpIHtcbiAgICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICAgIG91dHB1dC5wdXNoKCc+IFshV0FSTklOR11cXG4+ICoqKkRlc3RydWN0aXZlIENoYW5nZXMqKiogOmJhbmdiYW5nOicpLFxuICAgICAgY2hhbmdlcy5kZXN0cnVjdGl2ZUNoYW5nZXMuZm9yRWFjaChjaGFuZ2UgPT4ge1xuICAgICAgICBvdXRwdXQucHVzaChcbiAgICAgICAgICBgPiAqKlN0YWNrOiAke2NoYW5nZS5zdGFja05hbWV9IC0gUmVzb3VyY2U6ICR7Y2hhbmdlLmxvZ2ljYWxJZH0gLSBJbXBhY3Q6KiogKioqJHtjaGFuZ2UuaW1wYWN0fSoqKmAsXG4gICAgICAgICk7XG4gICAgICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBjb25zdCB3cml0YWJsZSA9IG5ldyBTdHJpbmdXcml0YWJsZSh7fSk7XG4gICAgZm9ybWF0RGlmZmVyZW5jZXMod3JpdGFibGUsIGRpZmYpO1xuXG4gICAgb3V0cHV0LnB1c2goJycpO1xuICAgIG91dHB1dC5wdXNoKCdgYGBzaGVsbCcpO1xuICAgIG91dHB1dC5wdXNoKHdyaXRhYmxlLmRhdGEpO1xuICAgIG91dHB1dC5wdXNoKCdgYGAnKTtcbiAgICBvdXRwdXQucHVzaCgnPC9kZXRhaWxzPicpO1xuICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICByZXR1cm4gb3V0cHV0O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRDb21tZW50Rm9yU3RhY2soc3RhZ2VOYW1lOiBzdHJpbmcsIHN0YWNrTmFtZTogc3RyaW5nLCBjb21tZW50OiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICBjb25zdCBvdXRwdXQ6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKCFjb21tZW50Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICB9XG4gICAgb3V0cHV0LnB1c2goYCMjIyBEaWZmIGZvciBzdGFjazogJHtzdGFnZU5hbWV9IC8gJHtzdGFja05hbWV9YCk7XG5cbiAgICByZXR1cm4gb3V0cHV0LmNvbmNhdChjb21tZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0Q29tbWVudEZvclN0YWdlKHN0YWdlTmFtZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IG91dHB1dDogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBzdGFnZUNvbW1lbnRzID0gdGhpcy5zdGFnZUNvbW1lbnRzW3N0YWdlTmFtZV07XG4gICAgY29uc3QgY29tbWVudHMgPSBPYmplY3QudmFsdWVzKHRoaXMuc3RhZ2VDb21tZW50c1tzdGFnZU5hbWVdLnN0YWNrQ29tbWVudHMpLmZsYXRNYXAoeCA9PiB4KTtcbiAgICBpZiAoIWNvbW1lbnRzLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIG91dHB1dDtcbiAgICB9XG4gICAgb3V0cHV0LnB1c2goYCMjIyBEaWZmIGZvciBzdGFnZTogJHtzdGFnZU5hbWV9YCk7XG5cbiAgICBpZiAoc3RhZ2VDb21tZW50cy5kZXN0cnVjdGl2ZUNoYW5nZXMpIHtcbiAgICAgIG91dHB1dC5wdXNoKGA+IFshV0FSTklOR11cXG4+ICR7c3RhZ2VDb21tZW50cy5kZXN0cnVjdGl2ZUNoYW5nZXN9IERlc3RydWN0aXZlIENoYW5nZXNgKTtcbiAgICAgIG91dHB1dC5wdXNoKCcnKTtcbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dC5jb25jYXQoY29tbWVudHMpO1xuICB9XG59XG5cbmNsYXNzIFN0cmluZ1dyaXRhYmxlIGV4dGVuZHMgV3JpdGFibGUge1xuICBwdWJsaWMgZGF0YTogc3RyaW5nO1xuICBwcml2YXRlIF9kZWNvZGVyOiBTdHJpbmdEZWNvZGVyO1xuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBXcml0YWJsZU9wdGlvbnMpIHtcbiAgICBzdXBlcihvcHRpb25zKTtcbiAgICB0aGlzLl9kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIoKTtcbiAgICB0aGlzLmRhdGEgPSAnJztcbiAgfVxuXG4gIF93cml0ZShjaHVuazogYW55LCBlbmNvZGluZzogc3RyaW5nLCBjYWxsYmFjazogKGVycm9yPzogRXJyb3IgfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgaWYgKGVuY29kaW5nID09PSAnYnVmZmVyJykge1xuICAgICAgY2h1bmsgPSB0aGlzLl9kZWNvZGVyLndyaXRlKGNodW5rKTtcbiAgICB9XG5cbiAgICB0aGlzLmRhdGEgKz0gY2h1bms7XG4gICAgY2FsbGJhY2soKTtcbiAgfVxuXG4gIF9maW5hbChjYWxsYmFjazogKGVycm9yPzogRXJyb3IgfCBudWxsKSA9PiB2b2lkKTogdm9pZCB7XG4gICAgdGhpcy5kYXRhICs9IHRoaXMuX2RlY29kZXIuZW5kKCk7XG4gICAgY2FsbGJhY2soKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtZDVIYXNoKHZhbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGNyeXB0by5jcmVhdGVIYXNoKCdtZDUnKS51cGRhdGUodmFsKS5kaWdlc3QoJ2hleCcpO1xufTtcbiJdfQ==","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.issue = exports.issueCommand = void 0;\nconst os = __importStar(require(\"os\"));\nconst utils_1 = require(\"./utils\");\n/**\n * Commands\n *\n * Command Format:\n * ::name key=value,key=value::message\n *\n * Examples:\n * ::warning::This is the message\n * ::set-env name=MY_VAR::some value\n */\nfunction issueCommand(command, properties, message) {\n const cmd = new Command(command, properties, message);\n process.stdout.write(cmd.toString() + os.EOL);\n}\nexports.issueCommand = issueCommand;\nfunction issue(name, message = '') {\n issueCommand(name, {}, message);\n}\nexports.issue = issue;\nconst CMD_STRING = '::';\nclass Command {\n constructor(command, properties, message) {\n if (!command) {\n command = 'missing.command';\n }\n this.command = command;\n this.properties = properties;\n this.message = message;\n }\n toString() {\n let cmdStr = CMD_STRING + this.command;\n if (this.properties && Object.keys(this.properties).length > 0) {\n cmdStr += ' ';\n let first = true;\n for (const key in this.properties) {\n if (this.properties.hasOwnProperty(key)) {\n const val = this.properties[key];\n if (val) {\n if (first) {\n first = false;\n }\n else {\n cmdStr += ',';\n }\n cmdStr += `${key}=${escapeProperty(val)}`;\n }\n }\n }\n }\n cmdStr += `${CMD_STRING}${escapeData(this.message)}`;\n return cmdStr;\n }\n}\nfunction escapeData(s) {\n return utils_1.toCommandValue(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A');\n}\nfunction escapeProperty(s) {\n return utils_1.toCommandValue(s)\n .replace(/%/g, '%25')\n .replace(/\\r/g, '%0D')\n .replace(/\\n/g, '%0A')\n .replace(/:/g, '%3A')\n .replace(/,/g, '%2C');\n}\n//# sourceMappingURL=command.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0;\nconst command_1 = require(\"./command\");\nconst file_command_1 = require(\"./file-command\");\nconst utils_1 = require(\"./utils\");\nconst os = __importStar(require(\"os\"));\nconst path = __importStar(require(\"path\"));\nconst oidc_utils_1 = require(\"./oidc-utils\");\n/**\n * The code to exit an action\n */\nvar ExitCode;\n(function (ExitCode) {\n /**\n * A code indicating that the action was successful\n */\n ExitCode[ExitCode[\"Success\"] = 0] = \"Success\";\n /**\n * A code indicating that the action was a failure\n */\n ExitCode[ExitCode[\"Failure\"] = 1] = \"Failure\";\n})(ExitCode = exports.ExitCode || (exports.ExitCode = {}));\n//-----------------------------------------------------------------------\n// Variables\n//-----------------------------------------------------------------------\n/**\n * Sets env variable for this action and future actions in the job\n * @param name the name of the variable to set\n * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction exportVariable(name, val) {\n const convertedVal = utils_1.toCommandValue(val);\n process.env[name] = convertedVal;\n const filePath = process.env['GITHUB_ENV'] || '';\n if (filePath) {\n return file_command_1.issueFileCommand('ENV', file_command_1.prepareKeyValueMessage(name, val));\n }\n command_1.issueCommand('set-env', { name }, convertedVal);\n}\nexports.exportVariable = exportVariable;\n/**\n * Registers a secret which will get masked from logs\n * @param secret value of the secret\n */\nfunction setSecret(secret) {\n command_1.issueCommand('add-mask', {}, secret);\n}\nexports.setSecret = setSecret;\n/**\n * Prepends inputPath to the PATH (for this action and future actions)\n * @param inputPath\n */\nfunction addPath(inputPath) {\n const filePath = process.env['GITHUB_PATH'] || '';\n if (filePath) {\n file_command_1.issueFileCommand('PATH', inputPath);\n }\n else {\n command_1.issueCommand('add-path', {}, inputPath);\n }\n process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`;\n}\nexports.addPath = addPath;\n/**\n * Gets the value of an input.\n * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed.\n * Returns an empty string if the value is not defined.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string\n */\nfunction getInput(name, options) {\n const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || '';\n if (options && options.required && !val) {\n throw new Error(`Input required and not supplied: ${name}`);\n }\n if (options && options.trimWhitespace === false) {\n return val;\n }\n return val.trim();\n}\nexports.getInput = getInput;\n/**\n * Gets the values of an multiline input. Each value is also trimmed.\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns string[]\n *\n */\nfunction getMultilineInput(name, options) {\n const inputs = getInput(name, options)\n .split('\\n')\n .filter(x => x !== '');\n if (options && options.trimWhitespace === false) {\n return inputs;\n }\n return inputs.map(input => input.trim());\n}\nexports.getMultilineInput = getMultilineInput;\n/**\n * Gets the input value of the boolean type in the YAML 1.2 \"core schema\" specification.\n * Support boolean input list: `true | True | TRUE | false | False | FALSE` .\n * The return value is also in boolean type.\n * ref: https://yaml.org/spec/1.2/spec.html#id2804923\n *\n * @param name name of the input to get\n * @param options optional. See InputOptions.\n * @returns boolean\n */\nfunction getBooleanInput(name, options) {\n const trueValue = ['true', 'True', 'TRUE'];\n const falseValue = ['false', 'False', 'FALSE'];\n const val = getInput(name, options);\n if (trueValue.includes(val))\n return true;\n if (falseValue.includes(val))\n return false;\n throw new TypeError(`Input does not meet YAML 1.2 \"Core Schema\" specification: ${name}\\n` +\n `Support boolean input list: \\`true | True | TRUE | false | False | FALSE\\``);\n}\nexports.getBooleanInput = getBooleanInput;\n/**\n * Sets the value of an output.\n *\n * @param name name of the output to set\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction setOutput(name, value) {\n const filePath = process.env['GITHUB_OUTPUT'] || '';\n if (filePath) {\n return file_command_1.issueFileCommand('OUTPUT', file_command_1.prepareKeyValueMessage(name, value));\n }\n process.stdout.write(os.EOL);\n command_1.issueCommand('set-output', { name }, utils_1.toCommandValue(value));\n}\nexports.setOutput = setOutput;\n/**\n * Enables or disables the echoing of commands into stdout for the rest of the step.\n * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set.\n *\n */\nfunction setCommandEcho(enabled) {\n command_1.issue('echo', enabled ? 'on' : 'off');\n}\nexports.setCommandEcho = setCommandEcho;\n//-----------------------------------------------------------------------\n// Results\n//-----------------------------------------------------------------------\n/**\n * Sets the action status to failed.\n * When the action exits it will be with an exit code of 1\n * @param message add error issue message\n */\nfunction setFailed(message) {\n process.exitCode = ExitCode.Failure;\n error(message);\n}\nexports.setFailed = setFailed;\n//-----------------------------------------------------------------------\n// Logging Commands\n//-----------------------------------------------------------------------\n/**\n * Gets whether Actions Step Debug is on or not\n */\nfunction isDebug() {\n return process.env['RUNNER_DEBUG'] === '1';\n}\nexports.isDebug = isDebug;\n/**\n * Writes debug message to user log\n * @param message debug message\n */\nfunction debug(message) {\n command_1.issueCommand('debug', {}, message);\n}\nexports.debug = debug;\n/**\n * Adds an error issue\n * @param message error issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction error(message, properties = {}) {\n command_1.issueCommand('error', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);\n}\nexports.error = error;\n/**\n * Adds a warning issue\n * @param message warning issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction warning(message, properties = {}) {\n command_1.issueCommand('warning', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);\n}\nexports.warning = warning;\n/**\n * Adds a notice issue\n * @param message notice issue message. Errors will be converted to string via toString()\n * @param properties optional properties to add to the annotation.\n */\nfunction notice(message, properties = {}) {\n command_1.issueCommand('notice', utils_1.toCommandProperties(properties), message instanceof Error ? message.toString() : message);\n}\nexports.notice = notice;\n/**\n * Writes info to log with console.log.\n * @param message info message\n */\nfunction info(message) {\n process.stdout.write(message + os.EOL);\n}\nexports.info = info;\n/**\n * Begin an output group.\n *\n * Output until the next `groupEnd` will be foldable in this group\n *\n * @param name The name of the output group\n */\nfunction startGroup(name) {\n command_1.issue('group', name);\n}\nexports.startGroup = startGroup;\n/**\n * End an output group.\n */\nfunction endGroup() {\n command_1.issue('endgroup');\n}\nexports.endGroup = endGroup;\n/**\n * Wrap an asynchronous function call in a group.\n *\n * Returns the same type as the function itself.\n *\n * @param name The name of the group\n * @param fn The function to wrap in the group\n */\nfunction group(name, fn) {\n return __awaiter(this, void 0, void 0, function* () {\n startGroup(name);\n let result;\n try {\n result = yield fn();\n }\n finally {\n endGroup();\n }\n return result;\n });\n}\nexports.group = group;\n//-----------------------------------------------------------------------\n// Wrapper action state\n//-----------------------------------------------------------------------\n/**\n * Saves state for current action, the state can only be retrieved by this action's post job execution.\n *\n * @param name name of the state to store\n * @param value value to store. Non-string values will be converted to a string via JSON.stringify\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction saveState(name, value) {\n const filePath = process.env['GITHUB_STATE'] || '';\n if (filePath) {\n return file_command_1.issueFileCommand('STATE', file_command_1.prepareKeyValueMessage(name, value));\n }\n command_1.issueCommand('save-state', { name }, utils_1.toCommandValue(value));\n}\nexports.saveState = saveState;\n/**\n * Gets the value of an state set by this action's main execution.\n *\n * @param name name of the state to get\n * @returns string\n */\nfunction getState(name) {\n return process.env[`STATE_${name}`] || '';\n}\nexports.getState = getState;\nfunction getIDToken(aud) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield oidc_utils_1.OidcClient.getIDToken(aud);\n });\n}\nexports.getIDToken = getIDToken;\n/**\n * Summary exports\n */\nvar summary_1 = require(\"./summary\");\nObject.defineProperty(exports, \"summary\", { enumerable: true, get: function () { return summary_1.summary; } });\n/**\n * @deprecated use core.summary\n */\nvar summary_2 = require(\"./summary\");\nObject.defineProperty(exports, \"markdownSummary\", { enumerable: true, get: function () { return summary_2.markdownSummary; } });\n/**\n * Path exports\n */\nvar path_utils_1 = require(\"./path-utils\");\nObject.defineProperty(exports, \"toPosixPath\", { enumerable: true, get: function () { return path_utils_1.toPosixPath; } });\nObject.defineProperty(exports, \"toWin32Path\", { enumerable: true, get: function () { return path_utils_1.toWin32Path; } });\nObject.defineProperty(exports, \"toPlatformPath\", { enumerable: true, get: function () { return path_utils_1.toPlatformPath; } });\n//# sourceMappingURL=core.js.map","\"use strict\";\n// For internal use, subject to change.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.prepareKeyValueMessage = exports.issueFileCommand = void 0;\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nconst fs = __importStar(require(\"fs\"));\nconst os = __importStar(require(\"os\"));\nconst uuid_1 = require(\"uuid\");\nconst utils_1 = require(\"./utils\");\nfunction issueFileCommand(command, message) {\n const filePath = process.env[`GITHUB_${command}`];\n if (!filePath) {\n throw new Error(`Unable to find environment variable for file command ${command}`);\n }\n if (!fs.existsSync(filePath)) {\n throw new Error(`Missing file at path: ${filePath}`);\n }\n fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, {\n encoding: 'utf8'\n });\n}\nexports.issueFileCommand = issueFileCommand;\nfunction prepareKeyValueMessage(key, value) {\n const delimiter = `ghadelimiter_${uuid_1.v4()}`;\n const convertedValue = utils_1.toCommandValue(value);\n // These should realistically never happen, but just in case someone finds a\n // way to exploit uuid generation let's not allow keys or values that contain\n // the delimiter.\n if (key.includes(delimiter)) {\n throw new Error(`Unexpected input: name should not contain the delimiter \"${delimiter}\"`);\n }\n if (convertedValue.includes(delimiter)) {\n throw new Error(`Unexpected input: value should not contain the delimiter \"${delimiter}\"`);\n }\n return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`;\n}\nexports.prepareKeyValueMessage = prepareKeyValueMessage;\n//# sourceMappingURL=file-command.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.OidcClient = void 0;\nconst http_client_1 = require(\"@actions/http-client\");\nconst auth_1 = require(\"@actions/http-client/lib/auth\");\nconst core_1 = require(\"./core\");\nclass OidcClient {\n static createHttpClient(allowRetry = true, maxRetry = 10) {\n const requestOptions = {\n allowRetries: allowRetry,\n maxRetries: maxRetry\n };\n return new http_client_1.HttpClient('actions/oidc-client', [new auth_1.BearerCredentialHandler(OidcClient.getRequestToken())], requestOptions);\n }\n static getRequestToken() {\n const token = process.env['ACTIONS_ID_TOKEN_REQUEST_TOKEN'];\n if (!token) {\n throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_TOKEN env variable');\n }\n return token;\n }\n static getIDTokenUrl() {\n const runtimeUrl = process.env['ACTIONS_ID_TOKEN_REQUEST_URL'];\n if (!runtimeUrl) {\n throw new Error('Unable to get ACTIONS_ID_TOKEN_REQUEST_URL env variable');\n }\n return runtimeUrl;\n }\n static getCall(id_token_url) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const httpclient = OidcClient.createHttpClient();\n const res = yield httpclient\n .getJson(id_token_url)\n .catch(error => {\n throw new Error(`Failed to get ID Token. \\n \n Error Code : ${error.statusCode}\\n \n Error Message: ${error.message}`);\n });\n const id_token = (_a = res.result) === null || _a === void 0 ? void 0 : _a.value;\n if (!id_token) {\n throw new Error('Response json body do not have ID Token field');\n }\n return id_token;\n });\n }\n static getIDToken(audience) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n // New ID Token is requested from action service\n let id_token_url = OidcClient.getIDTokenUrl();\n if (audience) {\n const encodedAudience = encodeURIComponent(audience);\n id_token_url = `${id_token_url}&audience=${encodedAudience}`;\n }\n core_1.debug(`ID token url is ${id_token_url}`);\n const id_token = yield OidcClient.getCall(id_token_url);\n core_1.setSecret(id_token);\n return id_token;\n }\n catch (error) {\n throw new Error(`Error message: ${error.message}`);\n }\n });\n }\n}\nexports.OidcClient = OidcClient;\n//# sourceMappingURL=oidc-utils.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0;\nconst path = __importStar(require(\"path\"));\n/**\n * toPosixPath converts the given path to the posix form. On Windows, \\\\ will be\n * replaced with /.\n *\n * @param pth. Path to transform.\n * @return string Posix path.\n */\nfunction toPosixPath(pth) {\n return pth.replace(/[\\\\]/g, '/');\n}\nexports.toPosixPath = toPosixPath;\n/**\n * toWin32Path converts the given path to the win32 form. On Linux, / will be\n * replaced with \\\\.\n *\n * @param pth. Path to transform.\n * @return string Win32 path.\n */\nfunction toWin32Path(pth) {\n return pth.replace(/[/]/g, '\\\\');\n}\nexports.toWin32Path = toWin32Path;\n/**\n * toPlatformPath converts the given path to a platform-specific path. It does\n * this by replacing instances of / and \\ with the platform-specific path\n * separator.\n *\n * @param pth The path to platformize.\n * @return string The platform-specific path.\n */\nfunction toPlatformPath(pth) {\n return pth.replace(/[/\\\\]/g, path.sep);\n}\nexports.toPlatformPath = toPlatformPath;\n//# sourceMappingURL=path-utils.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.summary = exports.markdownSummary = exports.SUMMARY_DOCS_URL = exports.SUMMARY_ENV_VAR = void 0;\nconst os_1 = require(\"os\");\nconst fs_1 = require(\"fs\");\nconst { access, appendFile, writeFile } = fs_1.promises;\nexports.SUMMARY_ENV_VAR = 'GITHUB_STEP_SUMMARY';\nexports.SUMMARY_DOCS_URL = 'https://docs.github.com/actions/using-workflows/workflow-commands-for-github-actions#adding-a-job-summary';\nclass Summary {\n constructor() {\n this._buffer = '';\n }\n /**\n * Finds the summary file path from the environment, rejects if env var is not found or file does not exist\n * Also checks r/w permissions.\n *\n * @returns step summary file path\n */\n filePath() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._filePath) {\n return this._filePath;\n }\n const pathFromEnv = process.env[exports.SUMMARY_ENV_VAR];\n if (!pathFromEnv) {\n throw new Error(`Unable to find environment variable for $${exports.SUMMARY_ENV_VAR}. Check if your runtime environment supports job summaries.`);\n }\n try {\n yield access(pathFromEnv, fs_1.constants.R_OK | fs_1.constants.W_OK);\n }\n catch (_a) {\n throw new Error(`Unable to access summary file: '${pathFromEnv}'. Check if the file has correct read/write permissions.`);\n }\n this._filePath = pathFromEnv;\n return this._filePath;\n });\n }\n /**\n * Wraps content in an HTML tag, adding any HTML attributes\n *\n * @param {string} tag HTML tag to wrap\n * @param {string | null} content content within the tag\n * @param {[attribute: string]: string} attrs key-value list of HTML attributes to add\n *\n * @returns {string} content wrapped in HTML element\n */\n wrap(tag, content, attrs = {}) {\n const htmlAttrs = Object.entries(attrs)\n .map(([key, value]) => ` ${key}=\"${value}\"`)\n .join('');\n if (!content) {\n return `<${tag}${htmlAttrs}>`;\n }\n return `<${tag}${htmlAttrs}>${content}`;\n }\n /**\n * Writes text in the buffer to the summary buffer file and empties buffer. Will append by default.\n *\n * @param {SummaryWriteOptions} [options] (optional) options for write operation\n *\n * @returns {Promise} summary instance\n */\n write(options) {\n return __awaiter(this, void 0, void 0, function* () {\n const overwrite = !!(options === null || options === void 0 ? void 0 : options.overwrite);\n const filePath = yield this.filePath();\n const writeFunc = overwrite ? writeFile : appendFile;\n yield writeFunc(filePath, this._buffer, { encoding: 'utf8' });\n return this.emptyBuffer();\n });\n }\n /**\n * Clears the summary buffer and wipes the summary file\n *\n * @returns {Summary} summary instance\n */\n clear() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.emptyBuffer().write({ overwrite: true });\n });\n }\n /**\n * Returns the current summary buffer as a string\n *\n * @returns {string} string of summary buffer\n */\n stringify() {\n return this._buffer;\n }\n /**\n * If the summary buffer is empty\n *\n * @returns {boolen} true if the buffer is empty\n */\n isEmptyBuffer() {\n return this._buffer.length === 0;\n }\n /**\n * Resets the summary buffer without writing to summary file\n *\n * @returns {Summary} summary instance\n */\n emptyBuffer() {\n this._buffer = '';\n return this;\n }\n /**\n * Adds raw text to the summary buffer\n *\n * @param {string} text content to add\n * @param {boolean} [addEOL=false] (optional) append an EOL to the raw text (default: false)\n *\n * @returns {Summary} summary instance\n */\n addRaw(text, addEOL = false) {\n this._buffer += text;\n return addEOL ? this.addEOL() : this;\n }\n /**\n * Adds the operating system-specific end-of-line marker to the buffer\n *\n * @returns {Summary} summary instance\n */\n addEOL() {\n return this.addRaw(os_1.EOL);\n }\n /**\n * Adds an HTML codeblock to the summary buffer\n *\n * @param {string} code content to render within fenced code block\n * @param {string} lang (optional) language to syntax highlight code\n *\n * @returns {Summary} summary instance\n */\n addCodeBlock(code, lang) {\n const attrs = Object.assign({}, (lang && { lang }));\n const element = this.wrap('pre', this.wrap('code', code), attrs);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML list to the summary buffer\n *\n * @param {string[]} items list of items to render\n * @param {boolean} [ordered=false] (optional) if the rendered list should be ordered or not (default: false)\n *\n * @returns {Summary} summary instance\n */\n addList(items, ordered = false) {\n const tag = ordered ? 'ol' : 'ul';\n const listItems = items.map(item => this.wrap('li', item)).join('');\n const element = this.wrap(tag, listItems);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML table to the summary buffer\n *\n * @param {SummaryTableCell[]} rows table rows\n *\n * @returns {Summary} summary instance\n */\n addTable(rows) {\n const tableBody = rows\n .map(row => {\n const cells = row\n .map(cell => {\n if (typeof cell === 'string') {\n return this.wrap('td', cell);\n }\n const { header, data, colspan, rowspan } = cell;\n const tag = header ? 'th' : 'td';\n const attrs = Object.assign(Object.assign({}, (colspan && { colspan })), (rowspan && { rowspan }));\n return this.wrap(tag, data, attrs);\n })\n .join('');\n return this.wrap('tr', cells);\n })\n .join('');\n const element = this.wrap('table', tableBody);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds a collapsable HTML details element to the summary buffer\n *\n * @param {string} label text for the closed state\n * @param {string} content collapsable content\n *\n * @returns {Summary} summary instance\n */\n addDetails(label, content) {\n const element = this.wrap('details', this.wrap('summary', label) + content);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML image tag to the summary buffer\n *\n * @param {string} src path to the image you to embed\n * @param {string} alt text description of the image\n * @param {SummaryImageOptions} options (optional) addition image attributes\n *\n * @returns {Summary} summary instance\n */\n addImage(src, alt, options) {\n const { width, height } = options || {};\n const attrs = Object.assign(Object.assign({}, (width && { width })), (height && { height }));\n const element = this.wrap('img', null, Object.assign({ src, alt }, attrs));\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML section heading element\n *\n * @param {string} text heading text\n * @param {number | string} [level=1] (optional) the heading level, default: 1\n *\n * @returns {Summary} summary instance\n */\n addHeading(text, level) {\n const tag = `h${level}`;\n const allowedTag = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'].includes(tag)\n ? tag\n : 'h1';\n const element = this.wrap(allowedTag, text);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML thematic break (
) to the summary buffer\n *\n * @returns {Summary} summary instance\n */\n addSeparator() {\n const element = this.wrap('hr', null);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML line break (
) to the summary buffer\n *\n * @returns {Summary} summary instance\n */\n addBreak() {\n const element = this.wrap('br', null);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML blockquote to the summary buffer\n *\n * @param {string} text quote text\n * @param {string} cite (optional) citation url\n *\n * @returns {Summary} summary instance\n */\n addQuote(text, cite) {\n const attrs = Object.assign({}, (cite && { cite }));\n const element = this.wrap('blockquote', text, attrs);\n return this.addRaw(element).addEOL();\n }\n /**\n * Adds an HTML anchor tag to the summary buffer\n *\n * @param {string} text link text/content\n * @param {string} href hyperlink\n *\n * @returns {Summary} summary instance\n */\n addLink(text, href) {\n const element = this.wrap('a', text, { href });\n return this.addRaw(element).addEOL();\n }\n}\nconst _summary = new Summary();\n/**\n * @deprecated use `core.summary`\n */\nexports.markdownSummary = _summary;\nexports.summary = _summary;\n//# sourceMappingURL=summary.js.map","\"use strict\";\n// We use any as a valid input type\n/* eslint-disable @typescript-eslint/no-explicit-any */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toCommandProperties = exports.toCommandValue = void 0;\n/**\n * Sanitizes an input into a string so it can be passed into issueCommand safely\n * @param input input to sanitize into a string\n */\nfunction toCommandValue(input) {\n if (input === null || input === undefined) {\n return '';\n }\n else if (typeof input === 'string' || input instanceof String) {\n return input;\n }\n return JSON.stringify(input);\n}\nexports.toCommandValue = toCommandValue;\n/**\n *\n * @param annotationProperties\n * @returns The command properties to send with the actual annotation command\n * See IssueCommandProperties: https://github.com/actions/runner/blob/main/src/Runner.Worker/ActionCommandManager.cs#L646\n */\nfunction toCommandProperties(annotationProperties) {\n if (!Object.keys(annotationProperties).length) {\n return {};\n }\n return {\n title: annotationProperties.title,\n file: annotationProperties.file,\n line: annotationProperties.startLine,\n endLine: annotationProperties.endLine,\n col: annotationProperties.startColumn,\n endColumn: annotationProperties.endColumn\n };\n}\nexports.toCommandProperties = toCommandProperties;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Context = void 0;\nconst fs_1 = require(\"fs\");\nconst os_1 = require(\"os\");\nclass Context {\n /**\n * Hydrate the context from the environment\n */\n constructor() {\n var _a, _b, _c;\n this.payload = {};\n if (process.env.GITHUB_EVENT_PATH) {\n if ((0, fs_1.existsSync)(process.env.GITHUB_EVENT_PATH)) {\n this.payload = JSON.parse((0, fs_1.readFileSync)(process.env.GITHUB_EVENT_PATH, { encoding: 'utf8' }));\n }\n else {\n const path = process.env.GITHUB_EVENT_PATH;\n process.stdout.write(`GITHUB_EVENT_PATH ${path} does not exist${os_1.EOL}`);\n }\n }\n this.eventName = process.env.GITHUB_EVENT_NAME;\n this.sha = process.env.GITHUB_SHA;\n this.ref = process.env.GITHUB_REF;\n this.workflow = process.env.GITHUB_WORKFLOW;\n this.action = process.env.GITHUB_ACTION;\n this.actor = process.env.GITHUB_ACTOR;\n this.job = process.env.GITHUB_JOB;\n this.runNumber = parseInt(process.env.GITHUB_RUN_NUMBER, 10);\n this.runId = parseInt(process.env.GITHUB_RUN_ID, 10);\n this.apiUrl = (_a = process.env.GITHUB_API_URL) !== null && _a !== void 0 ? _a : `https://api.github.com`;\n this.serverUrl = (_b = process.env.GITHUB_SERVER_URL) !== null && _b !== void 0 ? _b : `https://github.com`;\n this.graphqlUrl =\n (_c = process.env.GITHUB_GRAPHQL_URL) !== null && _c !== void 0 ? _c : `https://api.github.com/graphql`;\n }\n get issue() {\n const payload = this.payload;\n return Object.assign(Object.assign({}, this.repo), { number: (payload.issue || payload.pull_request || payload).number });\n }\n get repo() {\n if (process.env.GITHUB_REPOSITORY) {\n const [owner, repo] = process.env.GITHUB_REPOSITORY.split('/');\n return { owner, repo };\n }\n if (this.payload.repository) {\n return {\n owner: this.payload.repository.owner.login,\n repo: this.payload.repository.name\n };\n }\n throw new Error(\"context.repo requires a GITHUB_REPOSITORY environment variable like 'owner/repo'\");\n }\n}\nexports.Context = Context;\n//# sourceMappingURL=context.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOctokit = exports.context = void 0;\nconst Context = __importStar(require(\"./context\"));\nconst utils_1 = require(\"./utils\");\nexports.context = new Context.Context();\n/**\n * Returns a hydrated octokit ready to use for GitHub Actions\n *\n * @param token the repo PAT or GITHUB_TOKEN\n * @param options other options to set\n */\nfunction getOctokit(token, options, ...additionalPlugins) {\n const GitHubWithPlugins = utils_1.GitHub.plugin(...additionalPlugins);\n return new GitHubWithPlugins((0, utils_1.getOctokitOptions)(token, options));\n}\nexports.getOctokit = getOctokit;\n//# sourceMappingURL=github.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getApiBaseUrl = exports.getProxyFetch = exports.getProxyAgentDispatcher = exports.getProxyAgent = exports.getAuthString = void 0;\nconst httpClient = __importStar(require(\"@actions/http-client\"));\nconst undici_1 = require(\"undici\");\nfunction getAuthString(token, options) {\n if (!token && !options.auth) {\n throw new Error('Parameter token or opts.auth is required');\n }\n else if (token && options.auth) {\n throw new Error('Parameters token and opts.auth may not both be specified');\n }\n return typeof options.auth === 'string' ? options.auth : `token ${token}`;\n}\nexports.getAuthString = getAuthString;\nfunction getProxyAgent(destinationUrl) {\n const hc = new httpClient.HttpClient();\n return hc.getAgent(destinationUrl);\n}\nexports.getProxyAgent = getProxyAgent;\nfunction getProxyAgentDispatcher(destinationUrl) {\n const hc = new httpClient.HttpClient();\n return hc.getAgentDispatcher(destinationUrl);\n}\nexports.getProxyAgentDispatcher = getProxyAgentDispatcher;\nfunction getProxyFetch(destinationUrl) {\n const httpDispatcher = getProxyAgentDispatcher(destinationUrl);\n const proxyFetch = (url, opts) => __awaiter(this, void 0, void 0, function* () {\n return (0, undici_1.fetch)(url, Object.assign(Object.assign({}, opts), { dispatcher: httpDispatcher }));\n });\n return proxyFetch;\n}\nexports.getProxyFetch = getProxyFetch;\nfunction getApiBaseUrl() {\n return process.env['GITHUB_API_URL'] || 'https://api.github.com';\n}\nexports.getApiBaseUrl = getApiBaseUrl;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getOctokitOptions = exports.GitHub = exports.defaults = exports.context = void 0;\nconst Context = __importStar(require(\"./context\"));\nconst Utils = __importStar(require(\"./internal/utils\"));\n// octokit + plugins\nconst core_1 = require(\"@octokit/core\");\nconst plugin_rest_endpoint_methods_1 = require(\"@octokit/plugin-rest-endpoint-methods\");\nconst plugin_paginate_rest_1 = require(\"@octokit/plugin-paginate-rest\");\nexports.context = new Context.Context();\nconst baseUrl = Utils.getApiBaseUrl();\nexports.defaults = {\n baseUrl,\n request: {\n agent: Utils.getProxyAgent(baseUrl),\n fetch: Utils.getProxyFetch(baseUrl)\n }\n};\nexports.GitHub = core_1.Octokit.plugin(plugin_rest_endpoint_methods_1.restEndpointMethods, plugin_paginate_rest_1.paginateRest).defaults(exports.defaults);\n/**\n * Convience function to correctly format Octokit Options to pass into the constructor.\n *\n * @param token the repo PAT or GITHUB_TOKEN\n * @param options other options to set\n */\nfunction getOctokitOptions(token, options) {\n const opts = Object.assign({}, options || {}); // Shallow clone - don't mutate the object provided by the caller\n // Auth\n const auth = Utils.getAuthString(token, opts);\n if (auth) {\n opts.auth = auth;\n }\n return opts;\n}\nexports.getOctokitOptions = getOctokitOptions;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PersonalAccessTokenCredentialHandler = exports.BearerCredentialHandler = exports.BasicCredentialHandler = void 0;\nclass BasicCredentialHandler {\n constructor(username, password) {\n this.username = username;\n this.password = password;\n }\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Basic ${Buffer.from(`${this.username}:${this.password}`).toString('base64')}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.BasicCredentialHandler = BasicCredentialHandler;\nclass BearerCredentialHandler {\n constructor(token) {\n this.token = token;\n }\n // currently implements pre-authorization\n // TODO: support preAuth = false where it hooks on 401\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Bearer ${this.token}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.BearerCredentialHandler = BearerCredentialHandler;\nclass PersonalAccessTokenCredentialHandler {\n constructor(token) {\n this.token = token;\n }\n // currently implements pre-authorization\n // TODO: support preAuth = false where it hooks on 401\n prepareRequest(options) {\n if (!options.headers) {\n throw Error('The request has no headers');\n }\n options.headers['Authorization'] = `Basic ${Buffer.from(`PAT:${this.token}`).toString('base64')}`;\n }\n // This handler cannot handle 401\n canHandleAuthentication() {\n return false;\n }\n handleAuthentication() {\n return __awaiter(this, void 0, void 0, function* () {\n throw new Error('not implemented');\n });\n }\n}\nexports.PersonalAccessTokenCredentialHandler = PersonalAccessTokenCredentialHandler;\n//# sourceMappingURL=auth.js.map","\"use strict\";\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0;\nconst http = __importStar(require(\"http\"));\nconst https = __importStar(require(\"https\"));\nconst pm = __importStar(require(\"./proxy\"));\nconst tunnel = __importStar(require(\"tunnel\"));\nconst undici_1 = require(\"undici\");\nvar HttpCodes;\n(function (HttpCodes) {\n HttpCodes[HttpCodes[\"OK\"] = 200] = \"OK\";\n HttpCodes[HttpCodes[\"MultipleChoices\"] = 300] = \"MultipleChoices\";\n HttpCodes[HttpCodes[\"MovedPermanently\"] = 301] = \"MovedPermanently\";\n HttpCodes[HttpCodes[\"ResourceMoved\"] = 302] = \"ResourceMoved\";\n HttpCodes[HttpCodes[\"SeeOther\"] = 303] = \"SeeOther\";\n HttpCodes[HttpCodes[\"NotModified\"] = 304] = \"NotModified\";\n HttpCodes[HttpCodes[\"UseProxy\"] = 305] = \"UseProxy\";\n HttpCodes[HttpCodes[\"SwitchProxy\"] = 306] = \"SwitchProxy\";\n HttpCodes[HttpCodes[\"TemporaryRedirect\"] = 307] = \"TemporaryRedirect\";\n HttpCodes[HttpCodes[\"PermanentRedirect\"] = 308] = \"PermanentRedirect\";\n HttpCodes[HttpCodes[\"BadRequest\"] = 400] = \"BadRequest\";\n HttpCodes[HttpCodes[\"Unauthorized\"] = 401] = \"Unauthorized\";\n HttpCodes[HttpCodes[\"PaymentRequired\"] = 402] = \"PaymentRequired\";\n HttpCodes[HttpCodes[\"Forbidden\"] = 403] = \"Forbidden\";\n HttpCodes[HttpCodes[\"NotFound\"] = 404] = \"NotFound\";\n HttpCodes[HttpCodes[\"MethodNotAllowed\"] = 405] = \"MethodNotAllowed\";\n HttpCodes[HttpCodes[\"NotAcceptable\"] = 406] = \"NotAcceptable\";\n HttpCodes[HttpCodes[\"ProxyAuthenticationRequired\"] = 407] = \"ProxyAuthenticationRequired\";\n HttpCodes[HttpCodes[\"RequestTimeout\"] = 408] = \"RequestTimeout\";\n HttpCodes[HttpCodes[\"Conflict\"] = 409] = \"Conflict\";\n HttpCodes[HttpCodes[\"Gone\"] = 410] = \"Gone\";\n HttpCodes[HttpCodes[\"TooManyRequests\"] = 429] = \"TooManyRequests\";\n HttpCodes[HttpCodes[\"InternalServerError\"] = 500] = \"InternalServerError\";\n HttpCodes[HttpCodes[\"NotImplemented\"] = 501] = \"NotImplemented\";\n HttpCodes[HttpCodes[\"BadGateway\"] = 502] = \"BadGateway\";\n HttpCodes[HttpCodes[\"ServiceUnavailable\"] = 503] = \"ServiceUnavailable\";\n HttpCodes[HttpCodes[\"GatewayTimeout\"] = 504] = \"GatewayTimeout\";\n})(HttpCodes || (exports.HttpCodes = HttpCodes = {}));\nvar Headers;\n(function (Headers) {\n Headers[\"Accept\"] = \"accept\";\n Headers[\"ContentType\"] = \"content-type\";\n})(Headers || (exports.Headers = Headers = {}));\nvar MediaTypes;\n(function (MediaTypes) {\n MediaTypes[\"ApplicationJson\"] = \"application/json\";\n})(MediaTypes || (exports.MediaTypes = MediaTypes = {}));\n/**\n * Returns the proxy URL, depending upon the supplied url and proxy environment variables.\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\n */\nfunction getProxyUrl(serverUrl) {\n const proxyUrl = pm.getProxyUrl(new URL(serverUrl));\n return proxyUrl ? proxyUrl.href : '';\n}\nexports.getProxyUrl = getProxyUrl;\nconst HttpRedirectCodes = [\n HttpCodes.MovedPermanently,\n HttpCodes.ResourceMoved,\n HttpCodes.SeeOther,\n HttpCodes.TemporaryRedirect,\n HttpCodes.PermanentRedirect\n];\nconst HttpResponseRetryCodes = [\n HttpCodes.BadGateway,\n HttpCodes.ServiceUnavailable,\n HttpCodes.GatewayTimeout\n];\nconst RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD'];\nconst ExponentialBackoffCeiling = 10;\nconst ExponentialBackoffTimeSlice = 5;\nclass HttpClientError extends Error {\n constructor(message, statusCode) {\n super(message);\n this.name = 'HttpClientError';\n this.statusCode = statusCode;\n Object.setPrototypeOf(this, HttpClientError.prototype);\n }\n}\nexports.HttpClientError = HttpClientError;\nclass HttpClientResponse {\n constructor(message) {\n this.message = message;\n }\n readBody() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n let output = Buffer.alloc(0);\n this.message.on('data', (chunk) => {\n output = Buffer.concat([output, chunk]);\n });\n this.message.on('end', () => {\n resolve(output.toString());\n });\n }));\n });\n }\n readBodyBuffer() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n const chunks = [];\n this.message.on('data', (chunk) => {\n chunks.push(chunk);\n });\n this.message.on('end', () => {\n resolve(Buffer.concat(chunks));\n });\n }));\n });\n }\n}\nexports.HttpClientResponse = HttpClientResponse;\nfunction isHttps(requestUrl) {\n const parsedUrl = new URL(requestUrl);\n return parsedUrl.protocol === 'https:';\n}\nexports.isHttps = isHttps;\nclass HttpClient {\n constructor(userAgent, handlers, requestOptions) {\n this._ignoreSslError = false;\n this._allowRedirects = true;\n this._allowRedirectDowngrade = false;\n this._maxRedirects = 50;\n this._allowRetries = false;\n this._maxRetries = 1;\n this._keepAlive = false;\n this._disposed = false;\n this.userAgent = userAgent;\n this.handlers = handlers || [];\n this.requestOptions = requestOptions;\n if (requestOptions) {\n if (requestOptions.ignoreSslError != null) {\n this._ignoreSslError = requestOptions.ignoreSslError;\n }\n this._socketTimeout = requestOptions.socketTimeout;\n if (requestOptions.allowRedirects != null) {\n this._allowRedirects = requestOptions.allowRedirects;\n }\n if (requestOptions.allowRedirectDowngrade != null) {\n this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade;\n }\n if (requestOptions.maxRedirects != null) {\n this._maxRedirects = Math.max(requestOptions.maxRedirects, 0);\n }\n if (requestOptions.keepAlive != null) {\n this._keepAlive = requestOptions.keepAlive;\n }\n if (requestOptions.allowRetries != null) {\n this._allowRetries = requestOptions.allowRetries;\n }\n if (requestOptions.maxRetries != null) {\n this._maxRetries = requestOptions.maxRetries;\n }\n }\n }\n options(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('OPTIONS', requestUrl, null, additionalHeaders || {});\n });\n }\n get(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('GET', requestUrl, null, additionalHeaders || {});\n });\n }\n del(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('DELETE', requestUrl, null, additionalHeaders || {});\n });\n }\n post(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('POST', requestUrl, data, additionalHeaders || {});\n });\n }\n patch(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('PATCH', requestUrl, data, additionalHeaders || {});\n });\n }\n put(requestUrl, data, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('PUT', requestUrl, data, additionalHeaders || {});\n });\n }\n head(requestUrl, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request('HEAD', requestUrl, null, additionalHeaders || {});\n });\n }\n sendStream(verb, requestUrl, stream, additionalHeaders) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.request(verb, requestUrl, stream, additionalHeaders);\n });\n }\n /**\n * Gets a typed object from an endpoint\n * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise\n */\n getJson(requestUrl, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n const res = yield this.get(requestUrl, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n postJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.post(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n putJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.put(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n patchJson(requestUrl, obj, additionalHeaders = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n const data = JSON.stringify(obj, null, 2);\n additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson);\n additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson);\n const res = yield this.patch(requestUrl, data, additionalHeaders);\n return this._processResponse(res, this.requestOptions);\n });\n }\n /**\n * Makes a raw http request.\n * All other methods such as get, post, patch, and request ultimately call this.\n * Prefer get, del, post and patch\n */\n request(verb, requestUrl, data, headers) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._disposed) {\n throw new Error('Client has already been disposed.');\n }\n const parsedUrl = new URL(requestUrl);\n let info = this._prepareRequest(verb, parsedUrl, headers);\n // Only perform retries on reads since writes may not be idempotent.\n const maxTries = this._allowRetries && RetryableHttpVerbs.includes(verb)\n ? this._maxRetries + 1\n : 1;\n let numTries = 0;\n let response;\n do {\n response = yield this.requestRaw(info, data);\n // Check if it's an authentication challenge\n if (response &&\n response.message &&\n response.message.statusCode === HttpCodes.Unauthorized) {\n let authenticationHandler;\n for (const handler of this.handlers) {\n if (handler.canHandleAuthentication(response)) {\n authenticationHandler = handler;\n break;\n }\n }\n if (authenticationHandler) {\n return authenticationHandler.handleAuthentication(this, info, data);\n }\n else {\n // We have received an unauthorized response but have no handlers to handle it.\n // Let the response return to the caller.\n return response;\n }\n }\n let redirectsRemaining = this._maxRedirects;\n while (response.message.statusCode &&\n HttpRedirectCodes.includes(response.message.statusCode) &&\n this._allowRedirects &&\n redirectsRemaining > 0) {\n const redirectUrl = response.message.headers['location'];\n if (!redirectUrl) {\n // if there's no location to redirect to, we won't\n break;\n }\n const parsedRedirectUrl = new URL(redirectUrl);\n if (parsedUrl.protocol === 'https:' &&\n parsedUrl.protocol !== parsedRedirectUrl.protocol &&\n !this._allowRedirectDowngrade) {\n throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.');\n }\n // we need to finish reading the response before reassigning response\n // which will leak the open socket.\n yield response.readBody();\n // strip authorization header if redirected to a different hostname\n if (parsedRedirectUrl.hostname !== parsedUrl.hostname) {\n for (const header in headers) {\n // header names are case insensitive\n if (header.toLowerCase() === 'authorization') {\n delete headers[header];\n }\n }\n }\n // let's make the request with the new redirectUrl\n info = this._prepareRequest(verb, parsedRedirectUrl, headers);\n response = yield this.requestRaw(info, data);\n redirectsRemaining--;\n }\n if (!response.message.statusCode ||\n !HttpResponseRetryCodes.includes(response.message.statusCode)) {\n // If not a retry code, return immediately instead of retrying\n return response;\n }\n numTries += 1;\n if (numTries < maxTries) {\n yield response.readBody();\n yield this._performExponentialBackoff(numTries);\n }\n } while (numTries < maxTries);\n return response;\n });\n }\n /**\n * Needs to be called if keepAlive is set to true in request options.\n */\n dispose() {\n if (this._agent) {\n this._agent.destroy();\n }\n this._disposed = true;\n }\n /**\n * Raw request.\n * @param info\n * @param data\n */\n requestRaw(info, data) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => {\n function callbackForResult(err, res) {\n if (err) {\n reject(err);\n }\n else if (!res) {\n // If `err` is not passed, then `res` must be passed.\n reject(new Error('Unknown error'));\n }\n else {\n resolve(res);\n }\n }\n this.requestRawWithCallback(info, data, callbackForResult);\n });\n });\n }\n /**\n * Raw request with callback.\n * @param info\n * @param data\n * @param onResult\n */\n requestRawWithCallback(info, data, onResult) {\n if (typeof data === 'string') {\n if (!info.options.headers) {\n info.options.headers = {};\n }\n info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8');\n }\n let callbackCalled = false;\n function handleResult(err, res) {\n if (!callbackCalled) {\n callbackCalled = true;\n onResult(err, res);\n }\n }\n const req = info.httpModule.request(info.options, (msg) => {\n const res = new HttpClientResponse(msg);\n handleResult(undefined, res);\n });\n let socket;\n req.on('socket', sock => {\n socket = sock;\n });\n // If we ever get disconnected, we want the socket to timeout eventually\n req.setTimeout(this._socketTimeout || 3 * 60000, () => {\n if (socket) {\n socket.end();\n }\n handleResult(new Error(`Request timeout: ${info.options.path}`));\n });\n req.on('error', function (err) {\n // err has statusCode property\n // res should have headers\n handleResult(err);\n });\n if (data && typeof data === 'string') {\n req.write(data, 'utf8');\n }\n if (data && typeof data !== 'string') {\n data.on('close', function () {\n req.end();\n });\n data.pipe(req);\n }\n else {\n req.end();\n }\n }\n /**\n * Gets an http agent. This function is useful when you need an http agent that handles\n * routing through a proxy server - depending upon the url and proxy environment variables.\n * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com\n */\n getAgent(serverUrl) {\n const parsedUrl = new URL(serverUrl);\n return this._getAgent(parsedUrl);\n }\n getAgentDispatcher(serverUrl) {\n const parsedUrl = new URL(serverUrl);\n const proxyUrl = pm.getProxyUrl(parsedUrl);\n const useProxy = proxyUrl && proxyUrl.hostname;\n if (!useProxy) {\n return;\n }\n return this._getProxyAgentDispatcher(parsedUrl, proxyUrl);\n }\n _prepareRequest(method, requestUrl, headers) {\n const info = {};\n info.parsedUrl = requestUrl;\n const usingSsl = info.parsedUrl.protocol === 'https:';\n info.httpModule = usingSsl ? https : http;\n const defaultPort = usingSsl ? 443 : 80;\n info.options = {};\n info.options.host = info.parsedUrl.hostname;\n info.options.port = info.parsedUrl.port\n ? parseInt(info.parsedUrl.port)\n : defaultPort;\n info.options.path =\n (info.parsedUrl.pathname || '') + (info.parsedUrl.search || '');\n info.options.method = method;\n info.options.headers = this._mergeHeaders(headers);\n if (this.userAgent != null) {\n info.options.headers['user-agent'] = this.userAgent;\n }\n info.options.agent = this._getAgent(info.parsedUrl);\n // gives handlers an opportunity to participate\n if (this.handlers) {\n for (const handler of this.handlers) {\n handler.prepareRequest(info.options);\n }\n }\n return info;\n }\n _mergeHeaders(headers) {\n if (this.requestOptions && this.requestOptions.headers) {\n return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers || {}));\n }\n return lowercaseKeys(headers || {});\n }\n _getExistingOrDefaultHeader(additionalHeaders, header, _default) {\n let clientHeader;\n if (this.requestOptions && this.requestOptions.headers) {\n clientHeader = lowercaseKeys(this.requestOptions.headers)[header];\n }\n return additionalHeaders[header] || clientHeader || _default;\n }\n _getAgent(parsedUrl) {\n let agent;\n const proxyUrl = pm.getProxyUrl(parsedUrl);\n const useProxy = proxyUrl && proxyUrl.hostname;\n if (this._keepAlive && useProxy) {\n agent = this._proxyAgent;\n }\n if (!useProxy) {\n agent = this._agent;\n }\n // if agent is already assigned use that agent.\n if (agent) {\n return agent;\n }\n const usingSsl = parsedUrl.protocol === 'https:';\n let maxSockets = 100;\n if (this.requestOptions) {\n maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets;\n }\n // This is `useProxy` again, but we need to check `proxyURl` directly for TypeScripts's flow analysis.\n if (proxyUrl && proxyUrl.hostname) {\n const agentOptions = {\n maxSockets,\n keepAlive: this._keepAlive,\n proxy: Object.assign(Object.assign({}, ((proxyUrl.username || proxyUrl.password) && {\n proxyAuth: `${proxyUrl.username}:${proxyUrl.password}`\n })), { host: proxyUrl.hostname, port: proxyUrl.port })\n };\n let tunnelAgent;\n const overHttps = proxyUrl.protocol === 'https:';\n if (usingSsl) {\n tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp;\n }\n else {\n tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp;\n }\n agent = tunnelAgent(agentOptions);\n this._proxyAgent = agent;\n }\n // if tunneling agent isn't assigned create a new agent\n if (!agent) {\n const options = { keepAlive: this._keepAlive, maxSockets };\n agent = usingSsl ? new https.Agent(options) : new http.Agent(options);\n this._agent = agent;\n }\n if (usingSsl && this._ignoreSslError) {\n // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process\n // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options\n // we have to cast it to any and change it directly\n agent.options = Object.assign(agent.options || {}, {\n rejectUnauthorized: false\n });\n }\n return agent;\n }\n _getProxyAgentDispatcher(parsedUrl, proxyUrl) {\n let proxyAgent;\n if (this._keepAlive) {\n proxyAgent = this._proxyAgentDispatcher;\n }\n // if agent is already assigned use that agent.\n if (proxyAgent) {\n return proxyAgent;\n }\n const usingSsl = parsedUrl.protocol === 'https:';\n proxyAgent = new undici_1.ProxyAgent(Object.assign({ uri: proxyUrl.href, pipelining: !this._keepAlive ? 0 : 1 }, ((proxyUrl.username || proxyUrl.password) && {\n token: `${proxyUrl.username}:${proxyUrl.password}`\n })));\n this._proxyAgentDispatcher = proxyAgent;\n if (usingSsl && this._ignoreSslError) {\n // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process\n // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options\n // we have to cast it to any and change it directly\n proxyAgent.options = Object.assign(proxyAgent.options.requestTls || {}, {\n rejectUnauthorized: false\n });\n }\n return proxyAgent;\n }\n _performExponentialBackoff(retryNumber) {\n return __awaiter(this, void 0, void 0, function* () {\n retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber);\n const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber);\n return new Promise(resolve => setTimeout(() => resolve(), ms));\n });\n }\n _processResponse(res, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n const statusCode = res.message.statusCode || 0;\n const response = {\n statusCode,\n result: null,\n headers: {}\n };\n // not found leads to null obj returned\n if (statusCode === HttpCodes.NotFound) {\n resolve(response);\n }\n // get the result from the body\n function dateTimeDeserializer(key, value) {\n if (typeof value === 'string') {\n const a = new Date(value);\n if (!isNaN(a.valueOf())) {\n return a;\n }\n }\n return value;\n }\n let obj;\n let contents;\n try {\n contents = yield res.readBody();\n if (contents && contents.length > 0) {\n if (options && options.deserializeDates) {\n obj = JSON.parse(contents, dateTimeDeserializer);\n }\n else {\n obj = JSON.parse(contents);\n }\n response.result = obj;\n }\n response.headers = res.message.headers;\n }\n catch (err) {\n // Invalid resource (contents not json); leaving result obj null\n }\n // note that 3xx redirects are handled by the http layer.\n if (statusCode > 299) {\n let msg;\n // if exception/error in body, attempt to get better error\n if (obj && obj.message) {\n msg = obj.message;\n }\n else if (contents && contents.length > 0) {\n // it may be the case that the exception is in the body message as string\n msg = contents;\n }\n else {\n msg = `Failed request: (${statusCode})`;\n }\n const err = new HttpClientError(msg, statusCode);\n err.result = response.result;\n reject(err);\n }\n else {\n resolve(response);\n }\n }));\n });\n }\n}\nexports.HttpClient = HttpClient;\nconst lowercaseKeys = (obj) => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {});\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkBypass = exports.getProxyUrl = void 0;\nfunction getProxyUrl(reqUrl) {\n const usingSsl = reqUrl.protocol === 'https:';\n if (checkBypass(reqUrl)) {\n return undefined;\n }\n const proxyVar = (() => {\n if (usingSsl) {\n return process.env['https_proxy'] || process.env['HTTPS_PROXY'];\n }\n else {\n return process.env['http_proxy'] || process.env['HTTP_PROXY'];\n }\n })();\n if (proxyVar) {\n try {\n return new URL(proxyVar);\n }\n catch (_a) {\n if (!proxyVar.startsWith('http://') && !proxyVar.startsWith('https://'))\n return new URL(`http://${proxyVar}`);\n }\n }\n else {\n return undefined;\n }\n}\nexports.getProxyUrl = getProxyUrl;\nfunction checkBypass(reqUrl) {\n if (!reqUrl.hostname) {\n return false;\n }\n const reqHost = reqUrl.hostname;\n if (isLoopbackAddress(reqHost)) {\n return true;\n }\n const noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || '';\n if (!noProxy) {\n return false;\n }\n // Determine the request port\n let reqPort;\n if (reqUrl.port) {\n reqPort = Number(reqUrl.port);\n }\n else if (reqUrl.protocol === 'http:') {\n reqPort = 80;\n }\n else if (reqUrl.protocol === 'https:') {\n reqPort = 443;\n }\n // Format the request hostname and hostname with port\n const upperReqHosts = [reqUrl.hostname.toUpperCase()];\n if (typeof reqPort === 'number') {\n upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`);\n }\n // Compare request host against noproxy\n for (const upperNoProxyItem of noProxy\n .split(',')\n .map(x => x.trim().toUpperCase())\n .filter(x => x)) {\n if (upperNoProxyItem === '*' ||\n upperReqHosts.some(x => x === upperNoProxyItem ||\n x.endsWith(`.${upperNoProxyItem}`) ||\n (upperNoProxyItem.startsWith('.') &&\n x.endsWith(`${upperNoProxyItem}`)))) {\n return true;\n }\n }\n return false;\n}\nexports.checkBypass = checkBypass;\nfunction isLoopbackAddress(host) {\n const hostLower = host.toLowerCase();\n return (hostLower === 'localhost' ||\n hostLower.startsWith('127.') ||\n hostLower.startsWith('[::1]') ||\n hostLower.startsWith('[0:0:0:0:0:0:0:1]'));\n}\n//# sourceMappingURL=proxy.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadAwsServiceSpecSync = exports.loadAwsServiceSpec = void 0;\nconst node_fs_1 = require(\"node:fs\");\nconst path = __importStar(require(\"node:path\"));\nconst node_zlib_1 = require(\"node:zlib\");\nconst service_spec_types_1 = require(\"@aws-cdk/service-spec-types\");\nconst DB_COMPRESSED = 'db.json.gz';\nconst DB_PATH = path.join(__dirname, '..', DB_COMPRESSED);\n/**\n * Load the provided built-in database\n */\nasync function loadAwsServiceSpec() {\n return loadBufferIntoDatabase(await node_fs_1.promises.readFile(DB_PATH));\n}\nexports.loadAwsServiceSpec = loadAwsServiceSpec;\n/**\n * Synchronously load the provided built-in database\n */\nfunction loadAwsServiceSpecSync() {\n return loadBufferIntoDatabase((0, node_fs_1.readFileSync)(DB_PATH));\n}\nexports.loadAwsServiceSpecSync = loadAwsServiceSpecSync;\nfunction loadBufferIntoDatabase(spec) {\n const db = (0, service_spec_types_1.emptyDatabase)();\n db.load(JSON.parse((0, node_zlib_1.gunzipSync)(spec).toString('utf-8')));\n return db;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxQ0FBdUQ7QUFDdkQsZ0RBQWtDO0FBQ2xDLHlDQUF1QztBQUN2QyxvRUFBMEU7QUFFMUUsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDO0FBQ25DLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxhQUFhLENBQUMsQ0FBQztBQUUxRDs7R0FFRztBQUNJLEtBQUssVUFBVSxrQkFBa0I7SUFDdEMsT0FBTyxzQkFBc0IsQ0FBQyxNQUFNLGtCQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDNUQsQ0FBQztBQUZELGdEQUVDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixzQkFBc0I7SUFDcEMsT0FBTyxzQkFBc0IsQ0FBQyxJQUFBLHNCQUFZLEVBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBRkQsd0RBRUM7QUFFRCxTQUFTLHNCQUFzQixDQUFDLElBQVk7SUFDMUMsTUFBTSxFQUFFLEdBQUcsSUFBQSxrQ0FBYSxHQUFFLENBQUM7SUFDM0IsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUEsc0JBQVUsRUFBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELE9BQU8sRUFBRSxDQUFDO0FBQ1osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHByb21pc2VzIGFzIGZzLCByZWFkRmlsZVN5bmMgfSBmcm9tICdub2RlOmZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAnbm9kZTpwYXRoJztcbmltcG9ydCB7IGd1bnppcFN5bmMgfSBmcm9tICdub2RlOnpsaWInO1xuaW1wb3J0IHsgZW1wdHlEYXRhYmFzZSwgU3BlY0RhdGFiYXNlIH0gZnJvbSAnQGF3cy1jZGsvc2VydmljZS1zcGVjLXR5cGVzJztcblxuY29uc3QgREJfQ09NUFJFU1NFRCA9ICdkYi5qc29uLmd6JztcbmNvbnN0IERCX1BBVEggPSBwYXRoLmpvaW4oX19kaXJuYW1lLCAnLi4nLCBEQl9DT01QUkVTU0VEKTtcblxuLyoqXG4gKiBMb2FkIHRoZSBwcm92aWRlZCBidWlsdC1pbiBkYXRhYmFzZVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gbG9hZEF3c1NlcnZpY2VTcGVjKCk6IFByb21pc2U8U3BlY0RhdGFiYXNlPiB7XG4gIHJldHVybiBsb2FkQnVmZmVySW50b0RhdGFiYXNlKGF3YWl0IGZzLnJlYWRGaWxlKERCX1BBVEgpKTtcbn1cblxuLyoqXG4gKiBTeW5jaHJvbm91c2x5IGxvYWQgdGhlIHByb3ZpZGVkIGJ1aWx0LWluIGRhdGFiYXNlXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBsb2FkQXdzU2VydmljZVNwZWNTeW5jKCk6IFNwZWNEYXRhYmFzZSB7XG4gIHJldHVybiBsb2FkQnVmZmVySW50b0RhdGFiYXNlKHJlYWRGaWxlU3luYyhEQl9QQVRIKSk7XG59XG5cbmZ1bmN0aW9uIGxvYWRCdWZmZXJJbnRvRGF0YWJhc2Uoc3BlYzogQnVmZmVyKTogU3BlY0RhdGFiYXNlIHtcbiAgY29uc3QgZGIgPSBlbXB0eURhdGFiYXNlKCk7XG4gIGRiLmxvYWQoSlNPTi5wYXJzZShndW56aXBTeW5jKHNwZWMpLnRvU3RyaW5nKCd1dGYtOCcpKSk7XG4gIHJldHVybiBkYjtcbn1cbiJdfQ==","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./types/database\"), exports);\n__exportStar(require(\"./types/resource\"), exports);\n__exportStar(require(\"./types/augmentations\"), exports);\n__exportStar(require(\"./types/metrics\"), exports);\n__exportStar(require(\"./types/diff\"), exports);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFpQztBQUNqQyxtREFBaUM7QUFDakMsd0RBQXNDO0FBQ3RDLGtEQUFnQztBQUNoQywrQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3R5cGVzL2RhdGFiYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvcmVzb3VyY2UnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy9hdWdtZW50YXRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvbWV0cmljcyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL2RpZmYnO1xuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVnbWVudGF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9hdWdtZW50YXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlbGF0aW9uc2hpcCB9IGZyb20gJ0BjZGtsYWJzL3Rza2InO1xuaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tICcuL3Jlc291cmNlJztcblxuLyoqXG4gKiBBdWdtZW50YXRpb25zIGZvciBhIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGVcbiAqXG4gKiBBdWdtZW50YXRpb25zIGFyZSBhIGRlcHJlY2F0ZWQgbWVjaGFuaXNtIGZvciBhdXRvbWF0aWNhbGx5IGdlbmVyYXRpbmcgbWV0cmljc1xuICogZnVuY3Rpb25zIGZvciBjZXJ0YWluIHJlc291cmNlcywgdXRpbGl6aW5nIFR5cGVTY3JpcHQgbWl4aW5zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlQXVnbWVudGF0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgLyoqXG4gICAqIE1ldHJpYyBhdWdtZW50YXRpb25zIGZvciB0aGlzIHJlc291cmNlIHR5cGVcbiAgICovXG4gIG1ldHJpY3M/OiBSZXNvdXJjZU1ldHJpY0F1Z21lbnRhdGlvbnM7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGNsYXNzIHRvIGJlIFwiYXVnbWVudGVkXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGtlYmFiIGNhc2VkIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIG5hbWUgKyAnLWJhc2UnXG4gICAqL1xuICBiYXNlQ2xhc3NGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY2xhc3MgdG8gYmUgXCJhdWdtZW50ZWRcIi5cbiAgICpcbiAgICogQGRlZmF1bHQgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgbmFtZSArICdCYXNlJ1xuICAgKi9cbiAgYmFzZUNsYXNzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBpbnRlcmZhY2UgdG8gYmUgXCJhdWdtZW50ZWRcIi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBzYW1lIGFzIGBgY2xhc3NGaWxlYGAuXG4gICAqL1xuICBpbnRlcmZhY2VGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW50ZXJmYWNlIHRvIGJlIFwiYXVnbWVudGVkXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdJJyArIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIG5hbWVcbiAgICovXG4gIGludGVyZmFjZT86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSXNBdWdtZW50ZWRSZXNvdXJjZSA9IFJlbGF0aW9uc2hpcDxSZXNvdXJjZSwgUmVzb3VyY2VBdWdtZW50YXRpb24+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlTWV0cmljQXVnbWVudGF0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIG9mIG1ldHJpY3MgZm9yIHRoaXMgc2VydmljZVxuICAgKi9cbiAgbmFtZXNwYWNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9wZXJ0aWVzIG9mIHRoZSByZXNvdXJjZSBjbGFzcyB0aGF0IHByb3ZpZGUgdmFsdWVzIGZvciB0aGUgZGltZW5zaW9uc1xuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgYHsgUXVldWVOYW1lOiAncXVldWVOYW1lJyB9YCBzYXlzIHRoYXQgdGhlIG1ldHJpYyBoYXMgYSBgUXVldWVOYW1lYFxuICAgKiBkaW1lbnNpb24sIGZvciB3aGljaCB0aGUgdmFsdWUgY2FuIGJlIG9idGFpbmVkIGJ5IHJlYWRpbmcgYHRoaXMucXVldWVOYW1lYC5cbiAgICovXG4gIGRpbWVuc2lvbnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRyaWNzIGZvciB0aGlzIHJlc291cmNlXG4gICAqL1xuICBtZXRyaWNzOiBSZXNvdXJjZU1ldHJpY1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlTWV0cmljIHtcbiAgLyoqXG4gICAqIFVwcGVyY2FzZS1maXJzdCBtZXRyaWMgbmFtZVxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEb2N1bWVudGF0aW9uIGxpbmVcbiAgICovXG4gIGRvY3VtZW50YXRpb246IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGlzIGFuIGV2ZW4gY291bnQgKDEgZ2V0cyBlbWl0dGVkIGV2ZXJ5IHRpbWUgc29tZXRoaW5nIG9jY3VycylcbiAgICpcbiAgICogQGRlZmF1bHQgTWV0cmljVHlwZS5BdHRyaWJcbiAgICovXG4gIHR5cGU/OiBNZXRyaWNUeXBlO1xufVxuXG5leHBvcnQgdHlwZSBNZXRyaWNUeXBlID1cbiAgLyoqXG4gICAqIFRoaXMgbWV0cmljIGlzIGVtaXR0ZWQgZm9yIGV2ZW50cywgbWVhc3VyaW5nIGEgYXR0cmlidXRlIG9mIHRoZSBldmVudC5cbiAgICpcbiAgICogVHlwaWNhbCBleGFtcGxlcyBvZiB0aGlzIHdvdWxkIGJlIGR1cmF0aW9uLCBvciByZXF1ZXN0IHNpemUsIG9yIHNpbWlsYXIuXG4gICAqXG4gICAqIFRoZSBkZWZhdWx0IGFnZ3JlZ2F0ZSBmb3IgdGhpcyB0eXBlIG9mIGV2ZW50IGlzIFwiQXZnXCIuXG4gICAqL1xuICB8ICdhdHRyaWInXG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0cmljIGlzIGVtaXR0ZWQgZm9yIGV2ZW50cywgYW5kIHRoZSB2YWx1ZSBpcyBhbHdheXMgYDFgLlxuICAgKlxuICAgKiBPbmx5IFwiU3VtXCIgaXMgYSBtZWFuaW5nZnVsIGFnZ3JlZ2F0ZSBvZiB0aGlzIHR5cGUgb2YgbWV0cmljOyBhbGwgb3RoZXJcbiAgICogYWdncmVnYXRpb25zIHdpbGwgb25seSBldmVyIHByb2R1Y2UgdGhlIHZhbHVlIGAxYC5cbiAgICovXG4gIHwgJ2NvdW50J1xuXG4gIC8qKlxuICAgKiBUaGlzIG1ldHJpYyBpcyBlbWl0dGVkIHBlcmlvZGljYWxseSwgcmVwcmVzZW50aW5nIGEgc3lzdGVtIHByb3BlcnR5LlxuICAgKlxuICAgKiBUaGUgbWV0cmljIG1lYXN1cmVzIHNvbWUgZ2xvYmFsIGV2ZXItY2hhbmdpbmcgcHJvcGVydHksIGFuZCBkb2VzIG5vdFxuICAgKiBtZWFzdXJlIGV2ZW50cy4gVGhlIG1vc3QgdXNlZnVsIGFnZ3JlZ2F0ZSBvZiB0aGlzIHR5cGUgb2YgbWV0cmljIGlzIFwiTWF4XCIuXG4gICAqL1xuICB8ICdnYXVnZSc7XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RichSpecDatabase = exports.loadDatabase = exports.emptyDatabase = void 0;\nconst fs_1 = require(\"fs\");\nconst zlib_1 = require(\"zlib\");\nconst tskb_1 = require(\"@cdklabs/tskb\");\nfunction emptyDatabase() {\n return new tskb_1.Database({\n resource: (0, tskb_1.entityCollection)().index({\n cloudFormationType: (0, tskb_1.fieldIndex)('cloudFormationType', tskb_1.stringCmp),\n }),\n region: (0, tskb_1.entityCollection)().index({\n name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp),\n }),\n service: (0, tskb_1.entityCollection)().index({\n name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp),\n cloudFormationNamespace: (0, tskb_1.fieldIndex)('cloudFormationNamespace', tskb_1.stringCmp),\n }),\n typeDefinition: (0, tskb_1.entityCollection)(),\n augmentations: (0, tskb_1.entityCollection)(),\n metric: (0, tskb_1.entityCollection)().index({\n name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp),\n namespace: (0, tskb_1.fieldIndex)('namespace', tskb_1.stringCmp),\n dedupKey: (0, tskb_1.fieldIndex)('dedupKey', tskb_1.stringCmp),\n }),\n dimensionSet: (0, tskb_1.entityCollection)().index({\n dedupKey: (0, tskb_1.fieldIndex)('dedupKey', tskb_1.stringCmp),\n }),\n }, (r) => ({\n hasResource: r.relationship('service', 'resource'),\n regionHasResource: r.relationship('region', 'resource'),\n regionHasService: r.relationship('region', 'service'),\n usesType: r.relationship('resource', 'typeDefinition'),\n isAugmented: r.relationship('resource', 'augmentations'),\n usesDimensionSet: r.relationship('metric', 'dimensionSet'),\n resourceHasMetric: r.relationship('resource', 'metric'),\n serviceHasMetric: r.relationship('service', 'metric'),\n resourceHasDimensionSet: r.relationship('resource', 'dimensionSet'),\n serviceHasDimensionSet: r.relationship('service', 'dimensionSet'),\n }));\n}\nexports.emptyDatabase = emptyDatabase;\nasync function loadDatabase(pathToDb) {\n const db = emptyDatabase();\n const contents = await fs_1.promises.readFile(pathToDb);\n const json = pathToDb.endsWith('.gz') ? (0, zlib_1.gunzipSync)(contents).toString('utf-8') : contents.toString('utf-8');\n db.load(JSON.parse(json));\n return db;\n}\nexports.loadDatabase = loadDatabase;\n/**\n * Helpers for working with a SpecDatabase\n */\nclass RichSpecDatabase {\n constructor(db) {\n this.db = db;\n }\n /**\n * Find all resources of a given type\n */\n resourceByType(cfnType, operation = 'resourceByType') {\n const res = this.db.lookup('resource', 'cloudFormationType', 'equals', cfnType);\n if (res.length === 0) {\n throw new Error(`${operation}: no such resource: ${cfnType}`);\n }\n return res[0];\n }\n /**\n * All type definitions used by a certain resource\n */\n resourceTypeDefs(cfnType) {\n const resource = this.db.lookup('resource', 'cloudFormationType', 'equals', cfnType).only();\n return this.db.follow('usesType', resource).map((x) => x.entity);\n }\n /**\n * Find a type definition from a given property type\n */\n tryFindDef(type) {\n return type.type === 'ref' ? this.db.get('typeDefinition', type.reference.$ref) : undefined;\n }\n}\nexports.RichSpecDatabase = RichSpecDatabase;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkJBQW9DO0FBQ3BDLCtCQUFrQztBQUNsQyx3Q0FBa0Y7QUF1QmxGLFNBQWdCLGFBQWE7SUFDM0IsT0FBTyxJQUFJLGVBQVEsQ0FDakI7UUFDRSxRQUFRLEVBQUUsSUFBQSx1QkFBZ0IsR0FBWSxDQUFDLEtBQUssQ0FBQztZQUMzQyxrQkFBa0IsRUFBRSxJQUFBLGlCQUFVLEVBQUMsb0JBQW9CLEVBQUUsZ0JBQVMsQ0FBQztTQUNoRSxDQUFDO1FBQ0YsTUFBTSxFQUFFLElBQUEsdUJBQWdCLEdBQVUsQ0FBQyxLQUFLLENBQUM7WUFDdkMsSUFBSSxFQUFFLElBQUEsaUJBQVUsRUFBQyxNQUFNLEVBQUUsZ0JBQVMsQ0FBQztTQUNwQyxDQUFDO1FBQ0YsT0FBTyxFQUFFLElBQUEsdUJBQWdCLEdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDekMsSUFBSSxFQUFFLElBQUEsaUJBQVUsRUFBQyxNQUFNLEVBQUUsZ0JBQVMsQ0FBQztZQUNuQyx1QkFBdUIsRUFBRSxJQUFBLGlCQUFVLEVBQUMseUJBQXlCLEVBQUUsZ0JBQVMsQ0FBQztTQUMxRSxDQUFDO1FBQ0YsY0FBYyxFQUFFLElBQUEsdUJBQWdCLEdBQWtCO1FBQ2xELGFBQWEsRUFBRSxJQUFBLHVCQUFnQixHQUF3QjtRQUN2RCxNQUFNLEVBQUUsSUFBQSx1QkFBZ0IsR0FBVSxDQUFDLEtBQUssQ0FBQztZQUN2QyxJQUFJLEVBQUUsSUFBQSxpQkFBVSxFQUFDLE1BQU0sRUFBRSxnQkFBUyxDQUFDO1lBQ25DLFNBQVMsRUFBRSxJQUFBLGlCQUFVLEVBQUMsV0FBVyxFQUFFLGdCQUFTLENBQUM7WUFDN0MsUUFBUSxFQUFFLElBQUEsaUJBQVUsRUFBQyxVQUFVLEVBQUUsZ0JBQVMsQ0FBQztTQUM1QyxDQUFDO1FBQ0YsWUFBWSxFQUFFLElBQUEs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QUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksVUFBVSxDQUFDLElBQWtCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUM5RixDQUFDO0NBQ0Y7QUE1QkQsNENBNEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBndW56aXBTeW5jIH0gZnJvbSAnemxpYic7XG5pbXBvcnQgeyBEYXRhYmFzZSwgZW50aXR5Q29sbGVjdGlvbiwgZmllbGRJbmRleCwgc3RyaW5nQ21wIH0gZnJvbSAnQGNka2xhYnMvdHNrYic7XG5pbXBvcnQgeyBJc0F1Z21lbnRlZFJlc291cmNlLCBSZXNvdXJjZUF1Z21lbnRhdGlvbiB9IGZyb20gJy4vYXVnbWVudGF0aW9ucyc7XG5pbXBvcnQge1xuICBEaW1lbnNpb25TZXQsXG4gIE1ldHJpYyxcbiAgUmVzb3VyY2VIYXNEaW1lbnNpb25TZXQsXG4gIFNlcnZpY2VIYXNEaW1lbnNpb25TZXQsXG4gIFVzZXNEaW1lbnNpb25TZXQsXG4gIFJlc291cmNlSGFzTWV0cmljLFxuICBTZXJ2aWNlSGFzTWV0cmljLFxufSBmcm9tICcuL21ldHJpY3MnO1xuaW1wb3J0IHtcbiAgUmVzb3VyY2UsXG4gIFNlcnZpY2UsXG4gIFR5cGVEZWZpbml0aW9uLFxuICBQcm9wZXJ0eVR5cGUsXG4gIFJlZ2lvbixcbiAgSGFzUmVzb3VyY2UsXG4gIFJlZ2lvbkhhc1Jlc291cmNlLFxuICBSZWdpb25IYXNTZXJ2aWNlLFxuICBVc2VzVHlwZSxcbn0gZnJvbSAnLi9yZXNvdXJjZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbXB0eURhdGFiYXNlKCkge1xuICByZXR1cm4gbmV3IERhdGFiYXNlKFxuICAgIHtcbiAgICAgIHJlc291cmNlOiBlbnRpdHlDb2xsZWN0aW9uPFJlc291cmNlPigpLmluZGV4KHtcbiAgICAgICAgY2xvdWRGb3JtYXRpb25UeXBlOiBmaWVsZEluZGV4KCdjbG91ZEZvcm1hdGlvblR5cGUnLCBzdHJpbmdDbXApLFxuICAgICAgfSksXG4gICAgICByZWdpb246IGVudGl0eUNvbGxlY3Rpb248UmVnaW9uPigpLmluZGV4KHtcbiAgICAgICAgbmFtZTogZmllbGRJbmRleCgnbmFtZScsIHN0cmluZ0NtcCksXG4gICAgICB9KSxcbiAgICAgIHNlcnZpY2U6IGVudGl0eUNvbGxlY3Rpb248U2VydmljZT4oKS5pbmRleCh7XG4gICAgICAgIG5hbWU6IGZpZWxkSW5kZXgoJ25hbWUnLCBzdHJpbmdDbXApLFxuICAgICAgICBjbG91ZEZvcm1hdGlvbk5hbWVzcGFjZTogZmllbGRJbmRleCgnY2xvdWRGb3JtYXRpb25OYW1lc3BhY2UnLCBzdHJpbmdDbXApLFxuICAgICAgfSksXG4gICAgICB0eXBlRGVmaW5pdGlvbjogZW50aXR5Q29sbGVjdGlvbjxUeXBlRGVmaW5pdGlvbj4oKSxcbiAgICAgIGF1Z21lbnRhdGlvbnM6IGVudGl0eUNvbGxlY3Rpb248UmVzb3VyY2VBdWdtZW50YXRpb24+KCksXG4gICAgICBtZXRyaWM6IGVudGl0eUNvbGxlY3Rpb248TWV0cmljPigpLmluZGV4KHtcbiAgICAgICAgbmFtZTogZmllbGRJbmRleCgnbmFtZScsIHN0cmluZ0NtcCksXG4gICAgICAgIG5hbWVzcGFjZTogZmllbGRJbmRleCgnbmFtZXNwYWNlJywgc3RyaW5nQ21wKSxcbiAgICAgICAgZGVkdXBLZXk6IGZpZWxkSW5kZXgoJ2RlZHVwS2V5Jywgc3RyaW5nQ21wKSxcbiAgICAgIH0pLFxuICAgICAgZGltZW5zaW9uU2V0OiBlbnRpdHlDb2xsZWN0aW9uPERpbWVuc2lvblNldD4oKS5pbmRleCh7XG4gICAgICAgIGRlZHVwS2V5OiBmaWVsZEluZGV4KCdkZWR1cEtleScsIHN0cmluZ0NtcCksXG4gICAgICB9KSxcbiAgICB9LFxuICAgIChyKSA9PiAoe1xuICAgICAgaGFzUmVzb3VyY2U6IHIucmVsYXRpb25zaGlwPEhhc1Jlc291cmNlPignc2VydmljZScsICdyZXNvdXJjZScpLFxuICAgICAgcmVnaW9uSGFzUmVzb3VyY2U6IHIucmVsYXRpb25zaGlwPFJlZ2lvbkhhc1Jlc291cmNlPigncmVnaW9uJywgJ3Jlc291cmNlJyksXG4gICAgICByZWdpb25IYXNTZXJ2aWNlOiByLnJlbGF0aW9uc2hpcDxSZWdpb25IYXNTZXJ2aWNlPigncmVnaW9uJywgJ3NlcnZpY2UnKSxcbiAgICAgIHVzZXNUeXBlOiByLnJlbGF0aW9uc2hpcDxVc2VzVHlwZT4oJ3Jlc291cmNlJywgJ3R5cGVEZWZpbml0aW9uJyksXG4gICAgICBpc0F1Z21lbnRlZDogci5yZWxhdGlvbnNoaXA8SXNBdWdtZW50ZWRSZXNvdXJjZT4oJ3Jlc291cmNlJywgJ2F1Z21lbnRhdGlvbnMnKSxcbiAgICAgIHVzZXNEaW1lbnNpb25TZXQ6IHIucmVsYXRpb25zaGlwPFVzZXNEaW1lbnNpb25TZXQ+KCdtZXRyaWMnLCAnZGltZW5zaW9uU2V0JyksXG4gICAgICByZXNvdXJjZUhhc01ldHJpYzogci5yZWxhdGlvbnNoaXA8UmVzb3VyY2VIYXNNZXRyaWM+KCdyZXNvdXJjZScsICdtZXRyaWMnKSxcbiAgICAgIHNlcnZpY2VIYXNNZXRyaWM6IHIucmVsYXRpb25zaGlwPFNlcnZpY2VIYXNNZXRyaWM+KCdzZXJ2aWNlJywgJ21ldHJpYycpLFxuICAgICAgcmVzb3VyY2VIYXNEaW1lbnNpb25TZXQ6IHIucmVsYXRpb25zaGlwPFJlc291cmNlSGFzRGltZW5zaW9uU2V0PigncmVzb3VyY2UnLCAnZGltZW5zaW9uU2V0JyksXG4gICAgICBzZXJ2aWNlSGFzRGltZW5zaW9uU2V0OiByLnJlbGF0aW9uc2hpcDxTZXJ2aWNlSGFzRGltZW5zaW9uU2V0Pignc2VydmljZScsICdkaW1lbnNpb25TZXQnKSxcbiAgICB9KSxcbiAgKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWREYXRhYmFzZShwYXRoVG9EYjogc3RyaW5nKSB7XG4gIGNvbnN0IGRiID0gZW1wdHlEYXRhYmFzZSgpO1xuICBjb25zdCBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKHBhdGhUb0RiKTtcbiAgY29uc3QganNvbiA9IHBhdGhUb0RiLmVuZHNXaXRoKCcuZ3onKSA/IGd1bnppcFN5bmMoY29udGVudHMpLnRvU3RyaW5nKCd1dGYtOCcpIDogY29udGVudHMudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gIGRiLmxvYWQoSlNPTi5wYXJzZShqc29uKSk7XG4gIHJldHVybiBkYjtcbn1cblxuZXhwb3J0IHR5cGUgU3BlY0RhdGFiYXNlID0gUmV0dXJuVHlwZTx0eXBlb2YgZW1wdHlEYXRhYmFzZT47XG5cbi8qKlxuICogSGVscGVycyBmb3Igd29ya2luZyB3aXRoIGEgU3BlY0RhdGFiYXNlXG4gKi9cbmV4cG9ydCBjbGFzcyBSaWNoU3BlY0RhdGFiYXNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkYjogU3BlY0RhdGFiYXNlKSB7fVxuXG4gIC8qKlxuICAgKiBGaW5kIGFsbCByZXNvdXJjZXMgb2YgYSBnaXZlbiB0eXBlXG4gICAqL1xuICBwdWJsaWMgcmVzb3VyY2VCeVR5cGUoY2ZuVHlwZTogc3RyaW5nLCBvcGVyYXRpb24gPSAncmVzb3VyY2VCeVR5cGUnKTogUmVzb3VyY2Uge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuZGIubG9va3VwKCdyZXNvdXJjZScsICdjbG91ZEZvcm1hdGlvblR5cGUnLCAnZXF1YWxzJywgY2ZuVHlwZSk7XG4gICAgaWYgKHJlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtvcGVyYXRpb259OiBubyBzdWNoIHJlc291cmNlOiAke2NmblR5cGV9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXNbMF07XG4gIH1cblxuICAvKipcbiAgICogQWxsIHR5cGUgZGVmaW5pdGlvbnMgdXNlZCBieSBhIGNlcnRhaW4gcmVzb3VyY2VcbiAgICovXG4gIHB1YmxpYyByZXNvdXJjZVR5cGVEZWZzKGNmblR5cGU6IHN0cmluZyk6IHJlYWRvbmx5IFR5cGVEZWZpbml0aW9uW10ge1xuICAgIGNvbnN0IHJlc291cmNlID0gdGhpcy5kYi5sb29rdXAoJ3Jlc291cmNlJywgJ2Nsb3VkRm9ybWF0aW9uVHlwZScsICdlcXVhbHMnLCBjZm5UeXBlKS5vbmx5KCk7XG4gICAgcmV0dXJuIHRoaXMuZGIuZm9sbG93KCd1c2VzVHlwZScsIHJlc291cmNlKS5tYXAoKHgpID0+IHguZW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIGEgdHlwZSBkZWZpbml0aW9uIGZyb20gYSBnaXZlbiBwcm9wZXJ0eSB0eXBlXG4gICAqL1xuICBwdWJsaWMgdHJ5RmluZERlZih0eXBlOiBQcm9wZXJ0eVR5cGUpOiBUeXBlRGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHR5cGUudHlwZSA9PT0gJ3JlZicgPyB0aGlzLmRiLmdldCgndHlwZURlZmluaXRpb24nLCB0eXBlLnJlZmVyZW5jZS4kcmVmKSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGUsIFByb3BlcnR5LCBSZXNvdXJjZSwgU2VydmljZSwgVHlwZURlZmluaXRpb24gfSBmcm9tICcuL3Jlc291cmNlJztcblxuZXhwb3J0IGludGVyZmFjZSBTcGVjRGF0YWJhc2VEaWZmIHtcbiAgc2VydmljZXM6IE1hcERpZmY8U2VydmljZSwgVXBkYXRlZFNlcnZpY2U+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3REaWZmPEUsIEVEPiB7XG4gIHJlYWRvbmx5IGFkZGVkPzogRVtdO1xuICByZWFkb25seSByZW1vdmVkPzogRVtdO1xuICByZWFkb25seSB1cGRhdGVkPzogRURbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBEaWZmPEUsIEVEPiB7XG4gIHJlYWRvbmx5IGFkZGVkPzogUmVjb3JkPHN0cmluZywgRT47XG4gIHJlYWRvbmx5IHJlbW92ZWQ/OiBSZWNvcmQ8c3RyaW5nLCBFPjtcbiAgcmVhZG9ubHkgdXBkYXRlZD86IFJlY29yZDxzdHJpbmcsIEVEPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkU2VydmljZSB7XG4gIHJlYWRvbmx5IG5hbWU/OiBTY2FsYXJEaWZmPFNlcnZpY2VbJ25hbWUnXT47XG4gIHJlYWRvbmx5IHNob3J0TmFtZT86IFNjYWxhckRpZmY8U2VydmljZVsnc2hvcnROYW1lJ10+O1xuICByZWFkb25seSBjYXBpdGFsaXplZD86IFNjYWxhckRpZmY8U2VydmljZVsnY2FwaXRhbGl6ZWQnXT47XG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uTmFtZXNwYWNlPzogU2NhbGFyRGlmZjxTZXJ2aWNlWydjbG91ZEZvcm1hdGlvbk5hbWVzcGFjZSddPjtcbiAgcmVhZG9ubHkgcmVzb3VyY2VEaWZmPzogTWFwRGlmZjxSZXNvdXJjZSwgVXBkYXRlZFJlc291cmNlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkUmVzb3VyY2Uge1xuICByZWFkb25seSBuYW1lPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvblR5cGU/OiBTY2FsYXJEaWZmPHN0cmluZz47XG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uVHJhbnNmb3JtPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBkb2N1bWVudGF0aW9uPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogTWFwRGlmZjxQcm9wZXJ0eSwgVXBkYXRlZFByb3BlcnR5PjtcbiAgcmVhZG9ubHkgYXR0cmlidXRlcz86IE1hcERpZmY8QXR0cmlidXRlLCBVcGRhdGVkQXR0cmlidXRlPjtcbiAgcmVhZG9ubHkgaWRlbnRpZmllcj86IFNjYWxhckRpZmY8UmVzb3VyY2VbJ2lkZW50aWZpZXInXT47XG4gIHJlYWRvbmx5IGlzU3RhdGVmdWw/OiBTY2FsYXJEaWZmPGJvb2xlYW4+O1xuICByZWFkb25seSB0YWdJbmZvcm1hdGlvbj86IFNjYWxhckRpZmY8UmVzb3VyY2VbJ3RhZ0luZm9ybWF0aW9uJ10+O1xuICByZWFkb25seSBzY3J1dGluaXphYmxlPzogU2NhbGFyRGlmZjxSZXNvdXJjZVsnc2NydXRpbml6YWJsZSddPjtcbiAgcmVhZG9ubHkgdHlwZURlZmluaXRpb25EaWZmPzogTWFwRGlmZjxUeXBlRGVmaW5pdGlvbiwgVXBkYXRlZFR5cGVEZWZpbml0aW9uPjtcbiAgcmVhZG9ubHkgcHJpbWFyeUlkZW50aWZpZXI/OiBMaXN0RGlmZjxzdHJpbmcsIHZvaWQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZWRQcm9wZXJ0eSB7XG4gIHJlYWRvbmx5IG9sZDogUHJvcGVydHk7XG4gIHJlYWRvbmx5IG5ldzogUHJvcGVydHk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlZEF0dHJpYnV0ZSB7XG4gIHJlYWRvbmx5IG9sZDogQXR0cmlidXRlO1xuICByZWFkb25seSBuZXc6IEF0dHJpYnV0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkVHlwZURlZmluaXRpb24ge1xuICByZWFkb25seSBuYW1lPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBkb2N1bWVudGF0aW9uPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogTWFwRGlmZjxQcm9wZXJ0eSwgVXBkYXRlZFByb3BlcnR5PjtcbiAgcmVhZG9ubHkgbXVzdFJlbmRlckZvckJ3Q29tcGF0PzogU2NhbGFyRGlmZjxib29sZWFuPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2FsYXJEaWZmPEE+IHtcbiAgcmVhZG9ubHkgb2xkPzogQTtcbiAgcmVhZG9ubHkgbmV3PzogQTtcbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlbGF0aW9uc2hpcCB9IGZyb20gJ0BjZGtsYWJzL3Rza2InO1xuaW1wb3J0IHsgUmVzb3VyY2UsIFNlcnZpY2UgfSBmcm9tICcuL3Jlc291cmNlJztcblxuLyoqXG4gKiBBIE1ldHJpYyBEaW1lbnNpb24gKG5vdCBhbiBlbnRpdHkpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGltZW5zaW9uIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGRpbWVuc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQSBwb3RlbnRpYWwgdmFsdWUgZm9yIHRoaXMgZGltZW5zaW9uXG4gICAqL1xuICByZWFkb25seSB2YWx1ZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHNldCBvZiBNZXRyaWMgRGltZW5zaW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGltZW5zaW9uU2V0IGV4dGVuZHMgRW50aXR5IHtcbiAgLyoqXG4gICAqIEEgdW5pcXVlIHZhbHVlIHVzZWQgdG8gZGVkdXBsaWNhdGUgdGhlIGVudGl0eVxuICAgKi9cbiAgZGVkdXBLZXk6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBkaW1lbnNpb25zIGluIHRoaXMgc2V0XG4gICAqL1xuICBkaW1lbnNpb25zOiBEaW1lbnNpb25bXTtcbn1cbmV4cG9ydCB0eXBlIFJlc291cmNlSGFzRGltZW5zaW9uU2V0ID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBEaW1lbnNpb25TZXQ+O1xuZXhwb3J0IHR5cGUgU2VydmljZUhhc0RpbWVuc2lvblNldCA9IFJlbGF0aW9uc2hpcDxTZXJ2aWNlLCBEaW1lbnNpb25TZXQ+O1xuXG4vKipcbiAqIEEgQ2xvdWRXYXRjaCBNZXRyaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRyaWMgZXh0ZW5kcyBFbnRpdHkge1xuICAvKipcbiAgICogTWV0cmljIG5hbWVzcGFjZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBtZXRyaWNcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIERlZmF1bHQgKHN1Z2dlc3RlZCkgc3RhdGlzdGljIGZvciB0aGlzIG1ldHJpY1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGlzdGljOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIHVuaXF1ZSB2YWx1ZSB1c2VkIHRvIGRlZHVwbGljYXRlIHRoZSBlbnRpdHlcbiAgICovXG4gIHJlYWRvbmx5IGRlZHVwS2V5OiBzdHJpbmc7XG59XG5leHBvcnQgdHlwZSBVc2VzRGltZW5zaW9uU2V0ID0gUmVsYXRpb25zaGlwPE1ldHJpYywgRGltZW5zaW9uU2V0PjtcbmV4cG9ydCB0eXBlIFJlc291cmNlSGFzTWV0cmljID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBNZXRyaWM+O1xuZXhwb3J0IHR5cGUgU2VydmljZUhhc01ldHJpYyA9IFJlbGF0aW9uc2hpcDxTZXJ2aWNlLCBNZXRyaWM+O1xuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RichPropertyType = exports.PropertyScrutinyType = exports.ResourceScrutinyType = exports.isCollectionType = exports.Deprecation = exports.RichAttribute = exports.RichProperty = exports.RichTypedField = void 0;\nconst sorting_1 = require(\"../util/sorting\");\nclass RichTypedField {\n constructor(field) {\n this.field = field;\n if (field === undefined) {\n throw new Error('Field is undefined');\n }\n }\n types() {\n var _a;\n return [...((_a = this.field.previousTypes) !== null && _a !== void 0 ? _a : []), this.field.type];\n }\n /**\n * Update the type of this property with a new type\n *\n * Only if it's not in the set of types already.\n */\n updateType(type) {\n const richType = new RichPropertyType(type);\n // Only add this type if we don't already have it. We are only doing comparisons where 'integer' and 'number'\n // are treated the same, for all other types we need strict equality. We used to use 'assignableTo' as a\n // condition, but these types will be rendered in both co- and contravariant positions, and so we really can't\n // do much better than full equality.\n if (this.types().some((t) => richType.equals(t))) {\n // Nothing to do, type is already in there.\n return false;\n }\n // Special case: if the new type is `string` and the old type is `date-time`, we assume this is\n // the same type but we dropped some formatting information. No need to make this a separate type.\n if (type.type === 'string' && this.types().some((t) => t.type === 'date-time')) {\n return false;\n }\n if (!this.field.previousTypes) {\n this.field.previousTypes = [];\n }\n this.field.previousTypes.push(this.field.type);\n this.field.type = type;\n return true;\n }\n}\nexports.RichTypedField = RichTypedField;\nclass RichProperty extends RichTypedField {\n constructor(property) {\n super(property);\n }\n}\nexports.RichProperty = RichProperty;\nclass RichAttribute extends RichTypedField {\n constructor(attr) {\n super(attr);\n }\n}\nexports.RichAttribute = RichAttribute;\nvar Deprecation;\n(function (Deprecation) {\n /**\n * Not deprecated\n */\n Deprecation[\"NONE\"] = \"NONE\";\n /**\n * Warn about use\n */\n Deprecation[\"WARN\"] = \"WARN\";\n /**\n * Do not emit the value at all\n *\n * (Handle properties that were incorrectly added to the spec)\n */\n Deprecation[\"IGNORE\"] = \"IGNORE\";\n})(Deprecation = exports.Deprecation || (exports.Deprecation = {}));\nfunction isCollectionType(x) {\n return x.type === 'array' || x.type === 'map';\n}\nexports.isCollectionType = isCollectionType;\n/**\n * Mark a resource as a resource that needs additional scrutiy when added, removed or changed\n *\n * Used to mark resources that represent security policies.\n */\nvar ResourceScrutinyType;\n(function (ResourceScrutinyType) {\n /**\n * No additional scrutiny\n */\n ResourceScrutinyType[\"None\"] = \"None\";\n /**\n * An externally attached policy document to a resource\n *\n * (Common for SQS, SNS, S3, ...)\n */\n ResourceScrutinyType[\"ResourcePolicyResource\"] = \"ResourcePolicyResource\";\n /**\n * This is an IAM policy on an identity resource\n *\n * (Basically saying: this is AWS::IAM::Policy)\n */\n ResourceScrutinyType[\"IdentityPolicyResource\"] = \"IdentityPolicyResource\";\n /**\n * This is a Lambda Permission policy\n */\n ResourceScrutinyType[\"LambdaPermission\"] = \"LambdaPermission\";\n /**\n * An ingress rule object\n */\n ResourceScrutinyType[\"IngressRuleResource\"] = \"IngressRuleResource\";\n /**\n * A set of egress rules\n */\n ResourceScrutinyType[\"EgressRuleResource\"] = \"EgressRuleResource\";\n /**\n * AWS::SSO::Assignment\n *\n * IAM Identity Center (formerly known as SSO)\n */\n ResourceScrutinyType[\"SsoAssignmentResource\"] = \"SsoAssignmentResource\";\n /**\n * AWS::SSO::InstanceAccessControlAttributeConfiguration\n *\n * IAM Identity Center (formerly known as SSO)\n */\n ResourceScrutinyType[\"SsoInstanceACAConfigResource\"] = \"SsoInstanceACAConfigResource\";\n /**\n * AWS::SSO::PermissionSet\n *\n * IAM Identity Center (formerly known as SSO)\n */\n ResourceScrutinyType[\"SsoPermissionSet\"] = \"SsoPermissionSet\";\n})(ResourceScrutinyType = exports.ResourceScrutinyType || (exports.ResourceScrutinyType = {}));\n/**\n * Mark a property as a property that needs additional scrutiny when it changes\n *\n * Used to mark sensitive properties that have security-related implications.\n */\nvar PropertyScrutinyType;\n(function (PropertyScrutinyType) {\n /**\n * No additional scrutiny\n */\n PropertyScrutinyType[\"None\"] = \"None\";\n /**\n * This is an IAM policy directly on a resource\n */\n PropertyScrutinyType[\"InlineResourcePolicy\"] = \"InlineResourcePolicy\";\n /**\n * Either an AssumeRolePolicyDocument or a dictionary of policy documents\n */\n PropertyScrutinyType[\"InlineIdentityPolicies\"] = \"InlineIdentityPolicies\";\n /**\n * A list of managed policies (on an identity resource)\n */\n PropertyScrutinyType[\"ManagedPolicies\"] = \"ManagedPolicies\";\n /**\n * A set of ingress rules (on a security group)\n */\n PropertyScrutinyType[\"IngressRules\"] = \"IngressRules\";\n /**\n * A set of egress rules (on a security group)\n */\n PropertyScrutinyType[\"EgressRules\"] = \"EgressRules\";\n})(PropertyScrutinyType = exports.PropertyScrutinyType || (exports.PropertyScrutinyType = {}));\nclass RichPropertyType {\n constructor(type) {\n this.type = type;\n }\n equals(rhs) {\n switch (this.type.type) {\n case 'integer':\n case 'boolean':\n case 'date-time':\n case 'json':\n case 'null':\n case 'number':\n case 'string':\n case 'tag':\n return rhs.type === this.type.type;\n case 'array':\n case 'map':\n return rhs.type === this.type.type && new RichPropertyType(this.type.element).equals(rhs.element);\n case 'ref':\n return rhs.type === 'ref' && this.type.reference.$ref === rhs.reference.$ref;\n case 'union':\n const lhsKey = this.sortKey();\n const rhsKey = new RichPropertyType(rhs).sortKey();\n return lhsKey.length === rhsKey.length && lhsKey.every((l, i) => l === rhsKey[i]);\n }\n }\n /**\n * Whether the current type is JavaScript-equal to the RHS type\n *\n * Same as normal equality, but consider `integer` and `number` the same types.\n */\n javascriptEquals(rhs) {\n switch (this.type.type) {\n case 'number':\n case 'integer':\n // Widening\n return rhs.type === 'integer' || rhs.type === 'number';\n case 'array':\n case 'map':\n return rhs.type === this.type.type && new RichPropertyType(this.type.element).javascriptEquals(rhs.element);\n case 'union':\n if (rhs.type !== 'union') {\n return false;\n }\n // Every type in this union needs to be equal one type in RHS\n return this.type.types.every((t1) => rhs.types.some((t2) => new RichPropertyType(t1).javascriptEquals(t2)));\n default:\n // For anything else, need strict equality\n return this.equals(rhs);\n }\n }\n /**\n * Whether the current type is assignable to the RHS type.\n *\n * This is means every type member of the LHS must be present in the RHS type\n */\n assignableTo(rhs) {\n const extractMembers = (type) => (type.type == 'union' ? type.types : [type]);\n const asRichType = (type) => new RichPropertyType(type);\n const rhsMembers = extractMembers(rhs);\n for (const lhsMember of extractMembers(this.type).map(asRichType)) {\n if (!rhsMembers.some((type) => lhsMember.equals(type))) {\n return false;\n }\n }\n return true;\n }\n /**\n * Return a version of this type, but with all type unions in a regularized order\n */\n normalize(db) {\n switch (this.type.type) {\n case 'array':\n case 'map':\n return new RichPropertyType({\n type: this.type.type,\n element: new RichPropertyType(this.type.element).normalize(db).type,\n });\n case 'union':\n const types = this.type.types\n .map((t) => new RichPropertyType(t).normalize(db))\n .map((t) => [t, t.sortKey(db)]);\n types.sort((0, sorting_1.sortKeyComparator)(([_, sortKey]) => sortKey));\n return new RichPropertyType({\n type: 'union',\n types: types.map(([t, _]) => t.type),\n });\n default:\n return this;\n }\n }\n stringify(db, withId = true) {\n switch (this.type.type) {\n case 'integer':\n case 'boolean':\n case 'date-time':\n case 'json':\n case 'null':\n case 'number':\n case 'string':\n case 'tag':\n return this.type.type;\n case 'array':\n return `Array<${new RichPropertyType(this.type.element).stringify(db, withId)}>`;\n case 'map':\n return `Map`;\n case 'ref':\n const type = db.get('typeDefinition', this.type.reference);\n return withId ? `${type.name}(${this.type.reference.$ref})` : type.name;\n case 'union':\n return this.type.types.map((t) => new RichPropertyType(t).stringify(db, withId)).join(' | ');\n }\n }\n /**\n * Return a sortable key based on this type\n *\n * If a database is given, type definitions will be sorted based on type name,\n * otherwise on identifier\n */\n sortKey(db) {\n var _a, _b;\n switch (this.type.type) {\n case 'integer':\n case 'boolean':\n case 'date-time':\n case 'json':\n case 'null':\n case 'number':\n case 'string':\n case 'tag':\n return ['0', this.type.type];\n case 'array':\n case 'map':\n return ['1', this.type.type, ...new RichPropertyType(this.type.element).sortKey(db)];\n case 'ref':\n return ['2', this.type.type, (_b = (_a = db === null || db === void 0 ? void 0 : db.get('typeDefinition', this.type.reference)) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : this.type.reference.$ref];\n case 'union':\n const typeKeys = this.type.types.map((t) => new RichPropertyType(t).sortKey(db));\n typeKeys.sort((0, sorting_1.sortKeyComparator)((x) => x));\n return ['3', this.type.type, ...typeKeys.flatMap((x) => x)];\n }\n }\n}\nexports.RichPropertyType = RichPropertyType;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvcmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsNkNBQW9EO0FBdUtwRCxNQUFhLGNBQWM7SUFDekIsWUFBNkIsS0FBK0M7UUFBL0MsVUFBSyxHQUFMLEtBQUssQ0FBMEM7UUFDMUUsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFTSxLQUFLOztRQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsbUNBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFVBQVUsQ0FBQyxJQUFrQjtRQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVDLDZHQUE2RztRQUM3Ryx3R0FBd0c7UUFDeEcsOEdBQThHO1FBQzlHLHFDQUFxQztRQUNyQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNoRCwyQ0FBMkM7WUFDM0MsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELCtGQUErRjtRQUMvRixrR0FBa0c7UUFDbEcsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxFQUFFO1lBQzlFLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJ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QyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDakYsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFBLDJCQUFpQixFQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvRDtJQUNILENBQUM7Q0FDRjtBQXRKRCw0Q0FzSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlZmVyZW5jZSwgUmVsYXRpb25zaGlwIH0gZnJvbSAnQGNka2xhYnMvdHNrYic7XG5pbXBvcnQgeyBTcGVjRGF0YWJhc2UgfSBmcm9tICcuL2RhdGFiYXNlJztcbmltcG9ydCB7IHNvcnRLZXlDb21wYXJhdG9yIH0gZnJvbSAnLi4vdXRpbC9zb3J0aW5nJztcblxuZXhwb3J0IGludGVyZmFjZSBQYXJ0aXRpb24gZXh0ZW5kcyBFbnRpdHkge1xuICByZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSGFzUmVnaW9uID0gUmVsYXRpb25zaGlwPFBhcnRpdGlvbiwgUmVnaW9uLCB7IGlzUHJpbWFyeT86IGJvb2xlYW4gfT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZSBleHRlbmRzIEVudGl0eSB7XG4gIC8qKlxuICAgKiBUaGUgZnVsbCBuYW1lIG9mIHRoZSBzZXJ2aWNlIGluY2x1ZGluZyB0aGUgZ3JvdXAgcHJlZml4LCBsb3dlcmNhc2VkIGFuZCBoeXBoZW5hdGVkLlxuICAgKlxuICAgKiBFLmcuIGBBV1M6OkR5bmFtb0RCYCAtPiBgYXdzLWR5bmFtb2RiYFxuICAgKlxuICAgKiBAZXhhbXBsZSBhd3MtZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIE9ubHkgdGhlIHNlcnZpY2UgcGFydCBvZiB0aGUgbmFtZSwgbG93ZXJjYXNlZC5cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYGR5bmFtb2RiYFxuICAgKlxuICAgKiBAZXhhbXBsZSBkeW5hbW9kYlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvcnROYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc2hvcnRuYW1lIG9mIHRoZSBzZXJ2aWNlIGluIGNhcGl0YWxpemVkIGZvcm1cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYER5bmFtb0RCYFxuICAgKlxuICAgKiBAZXhhbXBsZSBkeW5hbW9kYlxuICAgKi9cbiAgcmVhZG9ubHkgY2FwaXRhbGl6ZWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjb21wbGV0ZSBjbG91ZGZvcm1hdGlvbiBzdHlsZSBuYW1lc3BhY2Ugb2YgdGhlIHNlcnZpY2VcbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmBcbiAgICpcbiAgICogQGV4YW1wbGUgZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uTmFtZXNwYWNlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudGF0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbWFya2Rvd246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZSBleHRlbmRzIEVudGl0eSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25UeXBlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJZiBzZXQsIHRoaXMgQ2xvdWRGb3JtYXRpb24gVHJhbnNmb3JtIGlzIHJlcXVpcmVkIGJ5IHRoZSByZXNvdXJjZVxuICAgKi9cbiAgY2xvdWRGb3JtYXRpb25UcmFuc2Zvcm0/OiBzdHJpbmc7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IHByb3BlcnRpZXM6IFJlc291cmNlUHJvcGVydGllcztcbiAgcmVhZG9ubHkgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgQXR0cmlidXRlPjtcbiAgcmVhZG9ubHkgdmFsaWRhdGlvbnM/OiB1bmtub3duO1xuICBpZGVudGlmaWVyPzogUmVzb3VyY2VJZGVudGlmaWVyO1xuICBpc1N0YXRlZnVsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5mb3JtYXRpb24gYWJvdXQgdGhlIHRhZ2dhYmlsaXR5IG9mIHRoaXMgcmVzb3VyY2VcbiAgICpcbiAgICogVW5kZWZpbmVkIGlmIHRoZSByZXNvdXJjZSBpcyBub3QgdGFnZ2FibGUuXG4gICAqL1xuICB0YWdJbmZvcm1hdGlvbj86IFRhZ0luZm9ybWF0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGNoYW5nZXMgdG8gdGhpcyByZXNvdXJjZSBuZWVkIHRvIGJlIHNjcnV0aW5pemVkXG4gICAqXG4gICAqIEBkZWZhdWx0IFJlc291cmNlU2NydXRpbnlUeXBlLk5PTkVcbiAgICovXG4gIHNjcnV0aW5pemFibGU/OiBSZXNvdXJjZVNjcnV0aW55VHlwZTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBwYXRocyB0byBwcm9wZXJ0aWVzIHRoYXQgYWxzbyBjYXVzZSByZXBsYWNlbWVudC5cbiAgICpcbiAgICogVGhpcyBpcyB0byBpbmRpY2F0ZSB0aGF0IGNlcnRhaW4gcHJvcGVydHkgcGF0aHMgaW50byB0aGlzIHJlc291cmNlXG4gICAqIHdpbGwgY2F1c2UgcmVwbGFjZW1lbnQ7IG9ubHkgcmVwbGFjZW1lbnRzIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkXG4gICAqIGJ5IHRhZ2dpbmcgdGhlIHByb3BlcnR5IGluIGEgdHlwZSBkZWZpbml0aW9uIHdpbGwgYmUgaW5jbHVkZWQgaGVyZVxuICAgKiAoZm9yIGV4YW1wbGUsIGJlY2F1c2UgdGhlIHRhZ2dlZCBwcm9wZXJ0eSB3b3VsZCBiZSBpbiBhIHByZWRlZmluZWRcbiAgICogdHlwZSBsaWtlIGB0YWdgKS5cbiAgICpcbiAgICogQWxsIHByb3BlcnRpZXMgaW4gdGhpcyBsaXN0IHNob3VsZCBiZSB0cmVhdGVkIGFzIGBjYXVzZXNSZXBsYWNlbWVudDogJ3llcydgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtXG4gICAqL1xuICBhZGRpdGlvbmFsUmVwbGFjZW1lbnRQcm9wZXJ0aWVzPzogc3RyaW5nW11bXTtcbn1cblxuZXhwb3J0IHR5cGUgUmVzb3VyY2VQcm9wZXJ0aWVzID0gUmVjb3JkPHN0cmluZywgUHJvcGVydHk+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVEZWZpbml0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xuICByZWFkb25seSBwcm9wZXJ0aWVzOiBSZXNvdXJjZVByb3BlcnRpZXM7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHJlbmRlciB0aGlzIHR5cGUgZXZlbiBpZiBpdCBpcyB1bnVzZWQuXG4gICAqL1xuICBtdXN0UmVuZGVyRm9yQndDb21wYXQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5IHtcbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIG9mIHRoZSBwcm9wZXJ0eVxuICAgKi9cbiAgZG9jdW1lbnRhdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogSXMgdGhpcyBwcm9wZXJ0eSByZXF1aXJlZFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCB0eXBlIG9mIHRoaXMgcHJvcGVydHlcbiAgICovXG4gIHR5cGU6IFByb3BlcnR5VHlwZTtcblxuICAvKipcbiAgICogQW4gb3JkZXJlZCBsaXN0IG9mIHByZXZpb3VzIHR5cGVzIG9mIHRoaXMgcHJvcGVydHkgaW4gYXNjZW5kaW5nIG9yZGVyXG4gICAqXG4gICAqIERvZXMgbm90IGluY2x1ZGUgdGhlIGN1cnJlbnQgdHlwZSwgdXNlIGB0eXBlYCBmb3IgdGhpcy5cbiAgICovXG4gIHByZXZpb3VzVHlwZXM/OiBQcm9wZXJ0eVR5cGVbXTtcblxuICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0eVxuICAgKlxuICAgKiBUaGlzIHZhbHVlIGlzIG5vdCBkaXJlY3RseSBmdW5jdGlvbmFsOyBpdCBkZXNjcmliZXMgaG93IHRoZSB1bmRlcmx5aW5nIHJlc291cmNlXG4gICAqIHdpbGwgYmVoYXZlIGlmIHRoZSB2YWx1ZSBpcyBub3Qgc3BlY2lmaWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgdW5rbm93blxuICAgKi9cbiAgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcHJvcGVydHkgaXMgZGVwcmVjYXRlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vdCBkZXByZWNhdGVkXG4gICAqL1xuICBkZXByZWNhdGVkPzogRGVwcmVjYXRpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgY2hhbmdlcyB0byB0aGlzIHByb3BlcnR5IG5lZWRzIHRvIGJlIHNjcnV0aW5pemVkIHNwZWNpYWxseVxuICAgKlxuICAgKiBAZGVmYXVsdCBQcm9wZXJ0eVNjcnV0aW55VHlwZS5OT05FXG4gICAqL1xuICBzY3J1dGluaXphYmxlPzogUHJvcGVydHlTY3J1dGlueVR5cGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNvbnRhaW5pbmcgcmVzb3VyY2Ugd2lsbCBiZSByZXBsYWNlZCBpZiB0aGlzIHByb3BlcnR5IGlzIGNoYW5nZWRcbiAgICpcbiAgICogQGRlZmF1bHQgJ25vJ1xuICAgKi9cbiAgY2F1c2VzUmVwbGFjZW1lbnQ/OiAneWVzJyB8ICdubycgfCAnbWF5YmUnO1xufVxuXG5leHBvcnQgY2xhc3MgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpZWxkOiBQaWNrPFByb3BlcnR5LCAndHlwZScgfCAncHJldmlvdXNUeXBlcyc+KSB7XG4gICAgaWYgKGZpZWxkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmllbGQgaXMgdW5kZWZpbmVkJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHR5cGVzKCk6IFByb3BlcnR5VHlwZVtdIHtcbiAgICByZXR1cm4gWy4uLih0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMgPz8gW10pLCB0aGlzLmZpZWxkLnR5cGVdO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgdHlwZSBvZiB0aGlzIHByb3BlcnR5IHdpdGggYSBuZXcgdHlwZVxuICAgKlxuICAgKiBPbmx5IGlmIGl0J3Mgbm90IGluIHRoZSBzZXQgb2YgdHlwZXMgYWxyZWFkeS5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVUeXBlKHR5cGU6IFByb3BlcnR5VHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJpY2hUeXBlID0gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodHlwZSk7XG5cbiAgICAvLyBPbmx5IGFkZCB0aGlzIHR5cGUgaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIGl0LiBXZSBhcmUgb25seSBkb2luZyBjb21wYXJpc29ucyB3aGVyZSAnaW50ZWdlcicgYW5kICdudW1iZXInXG4gICAgLy8gYXJlIHRyZWF0ZWQgdGhlIHNhbWUsIGZvciBhbGwgb3RoZXIgdHlwZXMgd2UgbmVlZCBzdHJpY3QgZXF1YWxpdHkuIFdlIHVzZWQgdG8gdXNlICdhc3NpZ25hYmxlVG8nIGFzIGFcbiAgICAvLyBjb25kaXRpb24sIGJ1dCB0aGVzZSB0eXBlcyB3aWxsIGJlIHJlbmRlcmVkIGluIGJvdGggY28tIGFuZCBjb250cmF2YXJpYW50IHBvc2l0aW9ucywgYW5kIHNvIHdlIHJlYWxseSBjYW4ndFxuICAgIC8vIGRvIG11Y2ggYmV0dGVyIHRoYW4gZnVsbCBlcXVhbGl0eS5cbiAgICBpZiAodGhpcy50eXBlcygpLnNvbWUoKHQpID0+IHJpY2hUeXBlLmVxdWFscyh0KSkpIHtcbiAgICAgIC8vIE5vdGhpbmcgdG8gZG8sIHR5cGUgaXMgYWxyZWFkeSBpbiB0aGVyZS5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTcGVjaWFsIGNhc2U6IGlmIHRoZSBuZXcgdHlwZSBpcyBgc3RyaW5nYCBhbmQgdGhlIG9sZCB0eXBlIGlzIGBkYXRlLXRpbWVgLCB3ZSBhc3N1bWUgdGhpcyBpc1xuICAgIC8vIHRoZSBzYW1lIHR5cGUgYnV0IHdlIGRyb3BwZWQgc29tZSBmb3JtYXR0aW5nIGluZm9ybWF0aW9uLiBObyBuZWVkIHRvIG1ha2UgdGhpcyBhIHNlcGFyYXRlIHR5cGUuXG4gICAgaWYgKHR5cGUudHlwZSA9PT0gJ3N0cmluZycgJiYgdGhpcy50eXBlcygpLnNvbWUoKHQpID0+IHQudHlwZSA9PT0gJ2RhdGUtdGltZScpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMpIHtcbiAgICAgIHRoaXMuZmllbGQucHJldmlvdXNUeXBlcyA9IFtdO1xuICAgIH1cbiAgICB0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMucHVzaCh0aGlzLmZpZWxkLnR5cGUpO1xuICAgIHRoaXMuZmllbGQudHlwZSA9IHR5cGU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJpY2hQcm9wZXJ0eSBleHRlbmRzIFJpY2hUeXBlZEZpZWxkIHtcbiAgY29uc3RydWN0b3IocHJvcGVydHk6IFByb3BlcnR5KSB7XG4gICAgc3VwZXIocHJvcGVydHkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSaWNoQXR0cmlidXRlIGV4dGVuZHMgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3RvcihhdHRyOiBBdHRyaWJ1dGUpIHtcbiAgICBzdXBlcihhdHRyKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZSB7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHR5cGU6IFByb3BlcnR5VHlwZTtcbiAgLyoqXG4gICAqIEFuIG9yZGVyZWQgbGlzdCBvZiBwcmV2aW91cyB0eXBlcyBvZiB0aGlzIHByb3BlcnR5IGluIGFzY2VuZGluZyBvcmRlclxuICAgKlxuICAgKiBEb2VzIG5vdCBpbmNsdWRlIHRoZSBjdXJyZW50IHR5cGUsIHVzZSBgdHlwZWAgZm9yIHRoaXMuXG4gICAqL1xuICBwcmV2aW91c1R5cGVzPzogUHJvcGVydHlUeXBlW107XG59XG5cbmV4cG9ydCBlbnVtIERlcHJlY2F0aW9uIHtcbiAgLyoqXG4gICAqIE5vdCBkZXByZWNhdGVkXG4gICAqL1xuICBOT05FID0gJ05PTkUnLFxuXG4gIC8qKlxuICAgKiBXYXJuIGFib3V0IHVzZVxuICAgKi9cbiAgV0FSTiA9ICdXQVJOJyxcblxuICAvKipcbiAgICogRG8gbm90IGVtaXQgdGhlIHZhbHVlIGF0IGFsbFxuICAgKlxuICAgKiAoSGFuZGxlIHByb3BlcnRpZXMgdGhhdCB3ZXJlIGluY29ycmVjdGx5IGFkZGVkIHRvIHRoZSBzcGVjKVxuICAgKi9cbiAgSUdOT1JFID0gJ0lHTk9SRScsXG59XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5VHlwZSA9XG4gIHwgUHJpbWl0aXZlVHlwZVxuICB8IERlZmluaXRpb25SZWZlcmVuY2VcbiAgfCBCdWlsdGluVGFnVHlwZVxuICB8IEFycmF5VHlwZTxQcm9wZXJ0eVR5cGU+XG4gIHwgTWFwVHlwZTxQcm9wZXJ0eVR5cGU+XG4gIHwgVHlwZVVuaW9uPFByb3BlcnR5VHlwZT47XG5cbmV4cG9ydCB0eXBlIFByaW1pdGl2ZVR5cGUgPVxuICB8IFN0cmluZ1R5cGVcbiAgfCBOdW1iZXJUeXBlXG4gIHwgSW50ZWdlclR5cGVcbiAgfCBCb29sZWFuVHlwZVxuICB8IEpzb25UeXBlXG4gIHwgRGF0ZVRpbWVUeXBlXG4gIHwgTnVsbFR5cGVcbiAgfCBCdWlsdGluVGFnVHlwZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29sbGVjdGlvblR5cGUoeDogUHJvcGVydHlUeXBlKTogeCBpcyBBcnJheVR5cGU8YW55PiB8IE1hcFR5cGU8YW55PiB7XG4gIHJldHVybiB4LnR5cGUgPT09ICdhcnJheScgfHwgeC50eXBlID09PSAnbWFwJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWdJbmZvcm1hdGlvbiB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBwcm9wZXJ0eSB0aGF0IGhvbGRzIHRoZSB0YWdzXG4gICAqL1xuICByZWFkb25seSB0YWdQcm9wZXJ0eU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVXNlZCB0byBpbnN0cnVjdCBjZGsuVGFnTWFuYWdlciBob3cgdG8gaGFuZGxlIHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHZhcmlhbnQ6IFRhZ1ZhcmlhbnQ7XG59XG5cbmV4cG9ydCB0eXBlIFRhZ1ZhcmlhbnQgPSAnc3RhbmRhcmQnIHwgJ2FzZycgfCAnbWFwJztcblxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3N0cmluZyc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEJ1aWx0aW5UYWdUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3RhZyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVtYmVyVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdudW1iZXInO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVnZXJUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2ludGVnZXInO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5UeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2Jvb2xlYW4nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25UeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2pzb24nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE51bGxUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ251bGwnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVUaW1lVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdkYXRlLXRpbWUnO1xufVxuXG4vKipcbiAqIFRoZSBcImxlZ2FjeVwiIHRhZyB0eXBlICh1c2VkIGluIHRoZSBvbGQgcmVzb3VyY2Ugc3BlYylcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsdGluVGFnVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICd0YWcnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlZmluaXRpb25SZWZlcmVuY2Uge1xuICByZWFkb25seSB0eXBlOiAncmVmJztcbiAgcmVhZG9ubHkgcmVmZXJlbmNlOiBSZWZlcmVuY2U8VHlwZURlZmluaXRpb24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFycmF5VHlwZTxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdhcnJheSc7XG4gIHJlYWRvbmx5IGVsZW1lbnQ6IEU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwVHlwZTxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdtYXAnO1xuICByZWFkb25seSBlbGVtZW50OiBFO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVVbmlvbjxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICd1bmlvbic7XG4gIHJlYWRvbmx5IHR5cGVzOiBFW107XG59XG5cbmV4cG9ydCB0eXBlIEhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFNlcnZpY2UsIFJlc291cmNlPjtcbmV4cG9ydCB0eXBlIFJlZ2lvbkhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFJlZ2lvbiwgUmVzb3VyY2U+O1xuZXhwb3J0IHR5cGUgUmVnaW9uSGFzU2VydmljZSA9IFJlbGF0aW9uc2hpcDxSZWdpb24sIFNlcnZpY2U+O1xuZXhwb3J0IHR5cGUgUmVzb3VyY2VEb2MgPSBSZWxhdGlvbnNoaXA8UmVzb3VyY2UsIERvY3VtZW50YXRpb24+O1xuXG5leHBvcnQgdHlwZSBTZXJ2aWNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBTZXJ2aWNlPjtcbmV4cG9ydCB0eXBlIFJlc291cmNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBSZXNvdXJjZT47XG5cbmV4cG9ydCB0eXBlIFVzZXNUeXBlID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBUeXBlRGVmaW5pdGlvbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VJZGVudGlmaWVyIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgYXJuVGVtcGxhdGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogTWFyayBhIHJlc291cmNlIGFzIGEgcmVzb3VyY2UgdGhhdCBuZWVkcyBhZGRpdGlvbmFsIHNjcnV0aXkgd2hlbiBhZGRlZCwgcmVtb3ZlZCBvciBjaGFuZ2VkXG4gKlxuICogVXNlZCB0byBtYXJrIHJlc291cmNlcyB0aGF0IHJlcHJlc2VudCBzZWN1cml0eSBwb2xpY2llcy5cbiAqL1xuZXhwb3J0IGVudW0gUmVzb3VyY2VTY3J1dGlueVR5cGUge1xuICAvKipcbiAgICogTm8gYWRkaXRpb25hbCBzY3J1dGlueVxuICAgKi9cbiAgTm9uZSA9ICdOb25lJyxcblxuICAvKipcbiAgICogQW4gZXh0ZXJuYWxseSBhdHRhY2hlZCBwb2xpY3kgZG9jdW1lbnQgdG8gYSByZXNvdXJjZVxuICAgKlxuICAgKiAoQ29tbW9uIGZvciBTUVMsIFNOUywgUzMsIC4uLilcbiAgICovXG4gIFJlc291cmNlUG9saWN5UmVzb3VyY2UgPSAnUmVzb3VyY2VQb2xpY3lSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gSUFNIHBvbGljeSBvbiBhbiBpZGVudGl0eSByZXNvdXJjZVxuICAgKlxuICAgKiAoQmFzaWNhbGx5IHNheWluZzogdGhpcyBpcyBBV1M6OklBTTo6UG9saWN5KVxuICAgKi9cbiAgSWRlbnRpdHlQb2xpY3lSZXNvdXJjZSA9ICdJZGVudGl0eVBvbGljeVJlc291cmNlJyxcblxuICAvKipcbiAgICogVGhpcyBpcyBhIExhbWJkYSBQZXJtaXNzaW9uIHBvbGljeVxuICAgKi9cbiAgTGFtYmRhUGVybWlzc2lvbiA9ICdMYW1iZGFQZXJtaXNzaW9uJyxcblxuICAvKipcbiAgICogQW4gaW5ncmVzcyBydWxlIG9iamVjdFxuICAgKi9cbiAgSW5ncmVzc1J1bGVSZXNvdXJjZSA9ICdJbmdyZXNzUnVsZVJlc291cmNlJyxcblxuICAvKipcbiAgICogQSBzZXQgb2YgZWdyZXNzIHJ1bGVzXG4gICAqL1xuICBFZ3Jlc3NSdWxlUmVzb3VyY2UgPSAnRWdyZXNzUnVsZVJlc291cmNlJyxcblxuICAvKipcbiAgICogQVdTOjpTU086OkFzc2lnbm1lbnRcbiAgICpcbiAgICogSUFNIElkZW50aXR5IENlbnRlciAoZm9ybWVybHkga25vd24gYXMgU1NPKVxuICAgKi9cbiAgU3NvQXNzaWdubWVudFJlc291cmNlID0gJ1Nzb0Fzc2lnbm1lbnRSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIEFXUzo6U1NPOjpJbnN0YW5jZUFjY2Vzc0NvbnRyb2xBdHRyaWJ1dGVDb25maWd1cmF0aW9uXG4gICAqXG4gICAqIElBTSBJZGVudGl0eSBDZW50ZXIgKGZvcm1lcmx5IGtub3duIGFzIFNTTylcbiAgICovXG4gIFNzb0luc3RhbmNlQUNBQ29uZmlnUmVzb3VyY2UgPSAnU3NvSW5zdGFuY2VBQ0FDb25maWdSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIEFXUzo6U1NPOjpQZXJtaXNzaW9uU2V0XG4gICAqXG4gICAqIElBTSBJZGVudGl0eSBDZW50ZXIgKGZvcm1lcmx5IGtub3duIGFzIFNTTylcbiAgICovXG4gIFNzb1Blcm1pc3Npb25TZXQgPSAnU3NvUGVybWlzc2lvblNldCcsXG59XG5cbi8qKlxuICogTWFyayBhIHByb3BlcnR5IGFzIGEgcHJvcGVydHkgdGhhdCBuZWVkcyBhZGRpdGlvbmFsIHNjcnV0aW55IHdoZW4gaXQgY2hhbmdlc1xuICpcbiAqIFVzZWQgdG8gbWFyayBzZW5zaXRpdmUgcHJvcGVydGllcyB0aGF0IGhhdmUgc2VjdXJpdHktcmVsYXRlZCBpbXBsaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCBlbnVtIFByb3BlcnR5U2NydXRpbnlUeXBlIHtcbiAgLyoqXG4gICAqIE5vIGFkZGl0aW9uYWwgc2NydXRpbnlcbiAgICovXG4gIE5vbmUgPSAnTm9uZScsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gSUFNIHBvbGljeSBkaXJlY3RseSBvbiBhIHJlc291cmNlXG4gICAqL1xuICBJbmxpbmVSZXNvdXJjZVBvbGljeSA9ICdJbmxpbmVSZXNvdXJjZVBvbGljeScsXG5cbiAgLyoqXG4gICAqIEVpdGhlciBhbiBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQgb3IgYSBkaWN0aW9uYXJ5IG9mIHBvbGljeSBkb2N1bWVudHNcbiAgICovXG4gIElubGluZUlkZW50aXR5UG9saWNpZXMgPSAnSW5saW5lSWRlbnRpdHlQb2xpY2llcycsXG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBtYW5hZ2VkIHBvbGljaWVzIChvbiBhbiBpZGVudGl0eSByZXNvdXJjZSlcbiAgICovXG4gIE1hbmFnZWRQb2xpY2llcyA9ICdNYW5hZ2VkUG9saWNpZXMnLFxuXG4gIC8qKlxuICAgKiBBIHNldCBvZiBpbmdyZXNzIHJ1bGVzIChvbiBhIHNlY3VyaXR5IGdyb3VwKVxuICAgKi9cbiAgSW5ncmVzc1J1bGVzID0gJ0luZ3Jlc3NSdWxlcycsXG5cbiAgLyoqXG4gICAqIEEgc2V0IG9mIGVncmVzcyBydWxlcyAob24gYSBzZWN1cml0eSBncm91cClcbiAgICovXG4gIEVncmVzc1J1bGVzID0gJ0VncmVzc1J1bGVzJyxcbn1cblxuZXhwb3J0IGNsYXNzIFJpY2hQcm9wZXJ0eVR5cGUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHR5cGU6IFByb3BlcnR5VHlwZSkge31cblxuICBwdWJsaWMgZXF1YWxzKHJoczogUHJvcGVydHlUeXBlKTogYm9vbGVhbiB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICByZXR1cm4gcmhzLnR5cGUgPT09IHRoaXMudHlwZS50eXBlO1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSB0aGlzLnR5cGUudHlwZSAmJiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuZXF1YWxzKHJocy5lbGVtZW50KTtcbiAgICAgIGNhc2UgJ3JlZic6XG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gJ3JlZicgJiYgdGhpcy50eXBlLnJlZmVyZW5jZS4kcmVmID09PSByaHMucmVmZXJlbmNlLiRyZWY7XG4gICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgIGNvbnN0IGxoc0tleSA9IHRoaXMuc29ydEtleSgpO1xuICAgICAgICBjb25zdCByaHNLZXkgPSBuZXcgUmljaFByb3BlcnR5VHlwZShyaHMpLnNvcnRLZXkoKTtcbiAgICAgICAgcmV0dXJuIGxoc0tleS5sZW5ndGggPT09IHJoc0tleS5sZW5ndGggJiYgbGhzS2V5LmV2ZXJ5KChsLCBpKSA9PiBsID09PSByaHNLZXlbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjdXJyZW50IHR5cGUgaXMgSmF2YVNjcmlwdC1lcXVhbCB0byB0aGUgUkhTIHR5cGVcbiAgICpcbiAgICogU2FtZSBhcyBub3JtYWwgZXF1YWxpdHksIGJ1dCBjb25zaWRlciBgaW50ZWdlcmAgYW5kIGBudW1iZXJgIHRoZSBzYW1lIHR5cGVzLlxuICAgKi9cbiAgcHVibGljIGphdmFzY3JpcHRFcXVhbHMocmhzOiBQcm9wZXJ0eVR5cGUpOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICAgIC8vIFdpZGVuaW5nXG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gJ2ludGVnZXInIHx8IHJocy50eXBlID09PSAnbnVtYmVyJztcblxuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSB0aGlzLnR5cGUudHlwZSAmJiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuamF2YXNjcmlwdEVxdWFscyhyaHMuZWxlbWVudCk7XG5cbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgaWYgKHJocy50eXBlICE9PSAndW5pb24nKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5IHR5cGUgaW4gdGhpcyB1bmlvbiBuZWVkcyB0byBiZSBlcXVhbCBvbmUgdHlwZSBpbiBSSFNcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50eXBlcy5ldmVyeSgodDEpID0+IHJocy50eXBlcy5zb21lKCh0MikgPT4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodDEpLmphdmFzY3JpcHRFcXVhbHModDIpKSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIEZvciBhbnl0aGluZyBlbHNlLCBuZWVkIHN0cmljdCBlcXVhbGl0eVxuICAgICAgICByZXR1cm4gdGhpcy5lcXVhbHMocmhzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY3VycmVudCB0eXBlIGlzIGFzc2lnbmFibGUgdG8gdGhlIFJIUyB0eXBlLlxuICAgKlxuICAgKiBUaGlzIGlzIG1lYW5zIGV2ZXJ5IHR5cGUgbWVtYmVyIG9mIHRoZSBMSFMgbXVzdCBiZSBwcmVzZW50IGluIHRoZSBSSFMgdHlwZVxuICAgKi9cbiAgcHVibGljIGFzc2lnbmFibGVUbyhyaHM6IFByb3BlcnR5VHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGV4dHJhY3RNZW1iZXJzID0gKHR5cGU6IFByb3BlcnR5VHlwZSk6IFByb3BlcnR5VHlwZVtdID0+ICh0eXBlLnR5cGUgPT0gJ3VuaW9uJyA/IHR5cGUudHlwZXMgOiBbdHlwZV0pO1xuICAgIGNvbnN0IGFzUmljaFR5cGUgPSAodHlwZTogUHJvcGVydHlUeXBlKTogUmljaFByb3BlcnR5VHlwZSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0eXBlKTtcblxuICAgIGNvbnN0IHJoc01lbWJlcnMgPSBleHRyYWN0TWVtYmVycyhyaHMpO1xuICAgIGZvciAoY29uc3QgbGhzTWVtYmVyIG9mIGV4dHJhY3RNZW1iZXJzKHRoaXMudHlwZSkubWFwKGFzUmljaFR5cGUpKSB7XG4gICAgICBpZiAoIXJoc01lbWJlcnMuc29tZSgodHlwZSkgPT4gbGhzTWVtYmVyLmVxdWFscyh0eXBlKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHZlcnNpb24gb2YgdGhpcyB0eXBlLCBidXQgd2l0aCBhbGwgdHlwZSB1bmlvbnMgaW4gYSByZWd1bGFyaXplZCBvcmRlclxuICAgKi9cbiAgcHVibGljIG5vcm1hbGl6ZShkYjogU3BlY0RhdGFiYXNlKTogUmljaFByb3BlcnR5VHlwZSB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIG5ldyBSaWNoUHJvcGVydHlUeXBlKHtcbiAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUudHlwZSxcbiAgICAgICAgICBlbGVtZW50OiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkubm9ybWFsaXplKGRiKS50eXBlLFxuICAgICAgICB9KTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgY29uc3QgdHlwZXMgPSB0aGlzLnR5cGUudHlwZXNcbiAgICAgICAgICAubWFwKCh0KSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0KS5ub3JtYWxpemUoZGIpKVxuICAgICAgICAgIC5tYXAoKHQpID0+IFt0LCB0LnNvcnRLZXkoZGIpXSBhcyBjb25zdCk7XG4gICAgICAgIHR5cGVzLnNvcnQoc29ydEtleUNvbXBhcmF0b3IoKFtfLCBzb3J0S2V5XSkgPT4gc29ydEtleSkpO1xuICAgICAgICByZXR1cm4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUoe1xuICAgICAgICAgIHR5cGU6ICd1bmlvbicsXG4gICAgICAgICAgdHlwZXM6IHR5cGVzLm1hcCgoW3QsIF9dKSA9PiB0LnR5cGUpLFxuICAgICAgICB9KTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdHJpbmdpZnkoZGI6IFNwZWNEYXRhYmFzZSwgd2l0aElkID0gdHJ1ZSk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICByZXR1cm4gdGhpcy50eXBlLnR5cGU7XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICAgIHJldHVybiBgQXJyYXk8JHtuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuc3RyaW5naWZ5KGRiLCB3aXRoSWQpfT5gO1xuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIGBNYXA8c3RyaW5nLCAke25ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5zdHJpbmdpZnkoZGIsIHdpdGhJZCl9PmA7XG4gICAgICBjYXNlICdyZWYnOlxuICAgICAgICBjb25zdCB0eXBlID0gZGIuZ2V0KCd0eXBlRGVmaW5pdGlvbicsIHRoaXMudHlwZS5yZWZlcmVuY2UpO1xuICAgICAgICByZXR1cm4gd2l0aElkID8gYCR7dHlwZS5uYW1lfSgke3RoaXMudHlwZS5yZWZlcmVuY2UuJHJlZn0pYCA6IHR5cGUubmFtZTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50eXBlcy5tYXAoKHQpID0+IG5ldyBSaWNoUHJvcGVydHlUeXBlKHQpLnN0cmluZ2lmeShkYiwgd2l0aElkKSkuam9pbignIHwgJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHNvcnRhYmxlIGtleSBiYXNlZCBvbiB0aGlzIHR5cGVcbiAgICpcbiAgICogSWYgYSBkYXRhYmFzZSBpcyBnaXZlbiwgdHlwZSBkZWZpbml0aW9ucyB3aWxsIGJlIHNvcnRlZCBiYXNlZCBvbiB0eXBlIG5hbWUsXG4gICAqIG90aGVyd2lzZSBvbiBpZGVudGlmaWVyXG4gICAqL1xuICBwdWJsaWMgc29ydEtleShkYj86IFNwZWNEYXRhYmFzZSk6IHN0cmluZ1tdIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnZGF0ZS10aW1lJzpcbiAgICAgIGNhc2UgJ2pzb24nOlxuICAgICAgY2FzZSAnbnVsbCc6XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3RhZyc6XG4gICAgICAgIHJldHVybiBbJzAnLCB0aGlzLnR5cGUudHlwZV07XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICBjYXNlICdtYXAnOlxuICAgICAgICByZXR1cm4gWycxJywgdGhpcy50eXBlLnR5cGUsIC4uLm5ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5zb3J0S2V5KGRiKV07XG4gICAgICBjYXNlICdyZWYnOlxuICAgICAgICByZXR1cm4gWycyJywgdGhpcy50eXBlLnR5cGUsIGRiPy5nZXQoJ3R5cGVEZWZpbml0aW9uJywgdGhpcy50eXBlLnJlZmVyZW5jZSk/Lm5hbWUgPz8gdGhpcy50eXBlLnJlZmVyZW5jZS4kcmVmXTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgY29uc3QgdHlwZUtleXMgPSB0aGlzLnR5cGUudHlwZXMubWFwKCh0KSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0KS5zb3J0S2V5KGRiKSk7XG4gICAgICAgIHR5cGVLZXlzLnNvcnQoc29ydEtleUNvbXBhcmF0b3IoKHgpID0+IHgpKTtcbiAgICAgICAgcmV0dXJuIFsnMycsIHRoaXMudHlwZS50eXBlLCAuLi50eXBlS2V5cy5mbGF0TWFwKCh4KSA9PiB4KV07XG4gICAgfVxuICB9XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sortKeyComparator = void 0;\n/**\n * Make a sorting comparator that will sort by a given sort key\n */\nfunction sortKeyComparator(keyFn) {\n return (a, b) => {\n const ak = keyFn(a);\n const bk = keyFn(b);\n for (let i = 0; i < ak.length && i < bk.length; i++) {\n const av = ak[i];\n const bv = bk[i];\n let diff = 0;\n if (typeof av === 'number' && typeof bv === 'number') {\n diff = av - bv;\n }\n else if (typeof av === 'string' && typeof bv === 'string') {\n diff = av.localeCompare(bv);\n }\n if (diff !== 0) {\n return diff;\n }\n }\n return bk.length - ak.length;\n };\n}\nexports.sortKeyComparator = sortKeyComparator;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3NvcnRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxTQUFnQixpQkFBaUIsQ0FBSSxLQUF1QztJQUMxRSxPQUFPLENBQUMsQ0FBSSxFQUFFLENBQUksRUFBVSxFQUFFO1FBQzVCLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbkQsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVqQixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7WUFDYixJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQUU7Z0JBQ3BELElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQ2hCO2lCQUFNLElBQUksT0FBTyxFQUFFLEtBQUssUUFBUSxJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRTtnQkFDM0QsSUFBSSxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDN0I7WUFFRCxJQUFJLElBQUksS0FBSyxDQUFDLEVBQUU7Z0JBQ2QsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBRUQsT0FBTyxFQUFFLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDL0IsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQXZCRCw4Q0F1QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1ha2UgYSBzb3J0aW5nIGNvbXBhcmF0b3IgdGhhdCB3aWxsIHNvcnQgYnkgYSBnaXZlbiBzb3J0IGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydEtleUNvbXBhcmF0b3I8QT4oa2V5Rm46ICh4OiBBKSA9PiBBcnJheTxzdHJpbmcgfCBudW1iZXI+KSB7XG4gIHJldHVybiAoYTogQSwgYjogQSk6IG51bWJlciA9PiB7XG4gICAgY29uc3QgYWsgPSBrZXlGbihhKTtcbiAgICBjb25zdCBiayA9IGtleUZuKGIpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhay5sZW5ndGggJiYgaSA8IGJrLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBhdiA9IGFrW2ldO1xuICAgICAgY29uc3QgYnYgPSBia1tpXTtcblxuICAgICAgbGV0IGRpZmYgPSAwO1xuICAgICAgaWYgKHR5cGVvZiBhdiA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGJ2ID09PSAnbnVtYmVyJykge1xuICAgICAgICBkaWZmID0gYXYgLSBidjtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGF2ID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgYnYgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGRpZmYgPSBhdi5sb2NhbGVDb21wYXJlKGJ2KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpZmYgIT09IDApIHtcbiAgICAgICAgcmV0dXJuIGRpZmY7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGJrLmxlbmd0aCAtIGFrLmxlbmd0aDtcbiAgfTtcbn1cbiJdfQ==","function _aws_cdk_cloud_assembly_schema_ArtifactType(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_RuntimeInfo(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_MissingContext(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.props))\n _aws_cdk_cloud_assembly_schema_AmiContextQuery(p.props);\n if (!visitedObjects.has(p.provider))\n _aws_cdk_cloud_assembly_schema_ContextProvider(p.provider);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_ArtifactManifest(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.type))\n _aws_cdk_cloud_assembly_schema_ArtifactType(p.type);\n if (!visitedObjects.has(p.properties))\n _aws_cdk_cloud_assembly_schema_AwsCloudFormationStackProperties(p.properties);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_AssemblyManifest(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (p.artifacts != null)\n for (const o of Object.values(p.artifacts))\n if (!visitedObjects.has(o))\n _aws_cdk_cloud_assembly_schema_ArtifactManifest(o);\n if (p.missing != null)\n for (const o of p.missing)\n if (!visitedObjects.has(o))\n _aws_cdk_cloud_assembly_schema_MissingContext(o);\n if (!visitedObjects.has(p.runtime))\n _aws_cdk_cloud_assembly_schema_RuntimeInfo(p.runtime);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_FileAssetMetadataEntry(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_Tag(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_ContainerImageAssetCacheOption(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_ContainerImageAssetMetadataEntry(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (p.cacheFrom != null)\n for (const o of p.cacheFrom)\n if (!visitedObjects.has(o))\n _aws_cdk_cloud_assembly_schema_ContainerImageAssetCacheOption(o);\n if (!visitedObjects.has(p.cacheTo))\n _aws_cdk_cloud_assembly_schema_ContainerImageAssetCacheOption(p.cacheTo);\n if (\"imageNameParameter\" in p)\n print(\"@aws-cdk/cloud-assembly-schema.ContainerImageAssetMetadataEntry#imageNameParameter\", \"specify `repositoryName` and `imageTag` instead, and then you\\nknow where the image will go.\");\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_ArtifactMetadataEntryType(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_MetadataEntry(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_BootstrapRole(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_AwsCloudFormationStackProperties(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.lookupRole))\n _aws_cdk_cloud_assembly_schema_BootstrapRole(p.lookupRole);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_AssetManifestOptions(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_AssetManifestProperties(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_TreeArtifactProperties(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_NestedCloudAssemblyProperties(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_ContextProvider(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_AmiContextQuery(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_AvailabilityZonesContextQuery(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_HostedZoneContextQuery(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_SSMParameterContextQuery(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_VpcContextQuery(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_EndpointServiceAvailabilityZonesContextQuery(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_LoadBalancerType(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_LoadBalancerFilter(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.loadBalancerType))\n _aws_cdk_cloud_assembly_schema_LoadBalancerType(p.loadBalancerType);\n if (p.loadBalancerTags != null)\n for (const o of p.loadBalancerTags)\n if (!visitedObjects.has(o))\n _aws_cdk_cloud_assembly_schema_Tag(o);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_LoadBalancerContextQuery(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.loadBalancerType))\n _aws_cdk_cloud_assembly_schema_LoadBalancerType(p.loadBalancerType);\n if (p.loadBalancerTags != null)\n for (const o of p.loadBalancerTags)\n if (!visitedObjects.has(o))\n _aws_cdk_cloud_assembly_schema_Tag(o);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_LoadBalancerListenerProtocol(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_LoadBalancerListenerContextQuery(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.listenerProtocol))\n _aws_cdk_cloud_assembly_schema_LoadBalancerListenerProtocol(p.listenerProtocol);\n if (!visitedObjects.has(p.loadBalancerType))\n _aws_cdk_cloud_assembly_schema_LoadBalancerType(p.loadBalancerType);\n if (p.loadBalancerTags != null)\n for (const o of p.loadBalancerTags)\n if (!visitedObjects.has(o))\n _aws_cdk_cloud_assembly_schema_Tag(o);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_SecurityGroupContextQuery(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_KeyContextQuery(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_PluginContextQuery(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_AssetManifest(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (p.dockerImages != null)\n for (const o of Object.values(p.dockerImages))\n if (!visitedObjects.has(o))\n _aws_cdk_cloud_assembly_schema_DockerImageAsset(o);\n if (p.files != null)\n for (const o of Object.values(p.files))\n if (!visitedObjects.has(o))\n _aws_cdk_cloud_assembly_schema_FileAsset(o);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_DockerImageAsset(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (p.destinations != null)\n for (const o of Object.values(p.destinations))\n if (!visitedObjects.has(o))\n _aws_cdk_cloud_assembly_schema_DockerImageDestination(o);\n if (!visitedObjects.has(p.source))\n _aws_cdk_cloud_assembly_schema_DockerImageSource(p.source);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_DockerImageSource(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (p.cacheFrom != null)\n for (const o of p.cacheFrom)\n if (!visitedObjects.has(o))\n _aws_cdk_cloud_assembly_schema_DockerCacheOption(o);\n if (!visitedObjects.has(p.cacheTo))\n _aws_cdk_cloud_assembly_schema_DockerCacheOption(p.cacheTo);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_DockerImageDestination(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_DockerCacheOption(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_FileAsset(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (p.destinations != null)\n for (const o of Object.values(p.destinations))\n if (!visitedObjects.has(o))\n _aws_cdk_cloud_assembly_schema_FileDestination(o);\n if (!visitedObjects.has(p.source))\n _aws_cdk_cloud_assembly_schema_FileSource(p.source);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_FileAssetPackaging(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_FileSource(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.packaging))\n _aws_cdk_cloud_assembly_schema_FileAssetPackaging(p.packaging);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_FileDestination(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_AwsDestination(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_LoadManifestOptions(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_Manifest(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_IntegManifest(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (p.testCases != null)\n for (const o of Object.values(p.testCases))\n if (!visitedObjects.has(o))\n _aws_cdk_cloud_assembly_schema_TestCase(o);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_RequireApproval(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_DefaultCdkOptions(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_DeployOptions(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.requireApproval))\n _aws_cdk_cloud_assembly_schema_RequireApproval(p.requireApproval);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_DestroyOptions(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_TestOptions(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.cdkCommandOptions))\n _aws_cdk_cloud_assembly_schema_CdkCommands(p.cdkCommandOptions);\n if (!visitedObjects.has(p.hooks))\n _aws_cdk_cloud_assembly_schema_Hooks(p.hooks);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_TestCase(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.cdkCommandOptions))\n _aws_cdk_cloud_assembly_schema_CdkCommands(p.cdkCommandOptions);\n if (!visitedObjects.has(p.hooks))\n _aws_cdk_cloud_assembly_schema_Hooks(p.hooks);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_Hooks(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_CdkCommand(p) {\n}\nfunction _aws_cdk_cloud_assembly_schema_DeployCommand(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.args))\n _aws_cdk_cloud_assembly_schema_DeployOptions(p.args);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_DestroyCommand(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.args))\n _aws_cdk_cloud_assembly_schema_DestroyOptions(p.args);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction _aws_cdk_cloud_assembly_schema_CdkCommands(p) {\n if (p == null)\n return;\n visitedObjects.add(p);\n try {\n if (!visitedObjects.has(p.deploy))\n _aws_cdk_cloud_assembly_schema_DeployCommand(p.deploy);\n if (!visitedObjects.has(p.destroy))\n _aws_cdk_cloud_assembly_schema_DestroyCommand(p.destroy);\n }\n finally {\n visitedObjects.delete(p);\n }\n}\nfunction print(name, deprecationMessage) {\n const deprecated = process.env.JSII_DEPRECATED;\n const deprecationMode = [\"warn\", \"fail\", \"quiet\"].includes(deprecated) ? deprecated : \"warn\";\n const message = `${name} is deprecated.\\n ${deprecationMessage.trim()}\\n This API will be removed in the next major release.`;\n switch (deprecationMode) {\n case \"fail\":\n throw new DeprecationError(message);\n case \"warn\":\n console.warn(\"[WARNING]\", message);\n break;\n }\n}\nfunction getPropertyDescriptor(obj, prop) {\n const descriptor = Object.getOwnPropertyDescriptor(obj, prop);\n if (descriptor) {\n return descriptor;\n }\n const proto = Object.getPrototypeOf(obj);\n const prototypeDescriptor = proto && getPropertyDescriptor(proto, prop);\n if (prototypeDescriptor) {\n return prototypeDescriptor;\n }\n return {};\n}\nconst visitedObjects = new Set();\nclass DeprecationError extends Error {\n constructor(...args) {\n super(...args);\n Object.defineProperty(this, \"name\", {\n configurable: false,\n enumerable: true,\n value: \"DeprecationError\",\n writable: false,\n });\n }\n}\nmodule.exports = { print, getPropertyDescriptor, DeprecationError, _aws_cdk_cloud_assembly_schema_ArtifactType, _aws_cdk_cloud_assembly_schema_RuntimeInfo, _aws_cdk_cloud_assembly_schema_MissingContext, _aws_cdk_cloud_assembly_schema_ArtifactManifest, _aws_cdk_cloud_assembly_schema_AssemblyManifest, _aws_cdk_cloud_assembly_schema_FileAssetMetadataEntry, _aws_cdk_cloud_assembly_schema_Tag, _aws_cdk_cloud_assembly_schema_ContainerImageAssetCacheOption, _aws_cdk_cloud_assembly_schema_ContainerImageAssetMetadataEntry, _aws_cdk_cloud_assembly_schema_ArtifactMetadataEntryType, _aws_cdk_cloud_assembly_schema_MetadataEntry, _aws_cdk_cloud_assembly_schema_BootstrapRole, _aws_cdk_cloud_assembly_schema_AwsCloudFormationStackProperties, _aws_cdk_cloud_assembly_schema_AssetManifestOptions, _aws_cdk_cloud_assembly_schema_AssetManifestProperties, _aws_cdk_cloud_assembly_schema_TreeArtifactProperties, _aws_cdk_cloud_assembly_schema_NestedCloudAssemblyProperties, _aws_cdk_cloud_assembly_schema_ContextProvider, _aws_cdk_cloud_assembly_schema_AmiContextQuery, _aws_cdk_cloud_assembly_schema_AvailabilityZonesContextQuery, _aws_cdk_cloud_assembly_schema_HostedZoneContextQuery, _aws_cdk_cloud_assembly_schema_SSMParameterContextQuery, _aws_cdk_cloud_assembly_schema_VpcContextQuery, _aws_cdk_cloud_assembly_schema_EndpointServiceAvailabilityZonesContextQuery, _aws_cdk_cloud_assembly_schema_LoadBalancerType, _aws_cdk_cloud_assembly_schema_LoadBalancerFilter, _aws_cdk_cloud_assembly_schema_LoadBalancerContextQuery, _aws_cdk_cloud_assembly_schema_LoadBalancerListenerProtocol, _aws_cdk_cloud_assembly_schema_LoadBalancerListenerContextQuery, _aws_cdk_cloud_assembly_schema_SecurityGroupContextQuery, _aws_cdk_cloud_assembly_schema_KeyContextQuery, _aws_cdk_cloud_assembly_schema_PluginContextQuery, _aws_cdk_cloud_assembly_schema_AssetManifest, _aws_cdk_cloud_assembly_schema_DockerImageAsset, _aws_cdk_cloud_assembly_schema_DockerImageSource, _aws_cdk_cloud_assembly_schema_DockerImageDestination, _aws_cdk_cloud_assembly_schema_DockerCacheOption, _aws_cdk_cloud_assembly_schema_FileAsset, _aws_cdk_cloud_assembly_schema_FileAssetPackaging, _aws_cdk_cloud_assembly_schema_FileSource, _aws_cdk_cloud_assembly_schema_FileDestination, _aws_cdk_cloud_assembly_schema_AwsDestination, _aws_cdk_cloud_assembly_schema_LoadManifestOptions, _aws_cdk_cloud_assembly_schema_Manifest, _aws_cdk_cloud_assembly_schema_IntegManifest, _aws_cdk_cloud_assembly_schema_RequireApproval, _aws_cdk_cloud_assembly_schema_DefaultCdkOptions, _aws_cdk_cloud_assembly_schema_DeployOptions, _aws_cdk_cloud_assembly_schema_DestroyOptions, _aws_cdk_cloud_assembly_schema_TestOptions, _aws_cdk_cloud_assembly_schema_TestCase, _aws_cdk_cloud_assembly_schema_Hooks, _aws_cdk_cloud_assembly_schema_CdkCommand, _aws_cdk_cloud_assembly_schema_DeployCommand, _aws_cdk_cloud_assembly_schema_DestroyCommand, _aws_cdk_cloud_assembly_schema_CdkCommands };\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJ0aWZhY3Qtc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiYXJ0aWZhY3Qtc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJcbi8qKlxuICogSW5mb3JtYXRpb24gbmVlZGVkIHRvIGFjY2VzcyBhbiBJQU0gcm9sZSBjcmVhdGVkXG4gKiBhcyBwYXJ0IG9mIHRoZSBib290c3RyYXAgcHJvY2Vzc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEJvb3RzdHJhcFJvbGUge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgSUFNIHJvbGUgY3JlYXRlZCBhcyBwYXJ0IG9mIGJvb3RyYXBwaW5nXG4gICAqIGUuZy4gbG9va3VwUm9sZUFyblxuICAgKi9cbiAgcmVhZG9ubHkgYXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4dGVybmFsIElEIHRvIHVzZSB3aGVuIGFzc3VtaW5nIHRoZSBib290c3RyYXAgcm9sZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGV4dGVybmFsIElEXG4gICAqL1xuICByZWFkb25seSBhc3N1bWVSb2xlRXh0ZXJuYWxJZD86IHN0cmluZztcblxuICAvKipcbiAgICogVmVyc2lvbiBvZiBib290c3RyYXAgc3RhY2sgcmVxdWlyZWQgdG8gdXNlIHRoaXMgcm9sZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZXNCb290c3RyYXBTdGFja1ZlcnNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgU1NNIHBhcmFtZXRlciB3aXRoIGJvb3RzdHJhcCBzdGFjayB2ZXJzaW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGlzY292ZXIgU1NNIHBhcmFtZXRlciBieSByZWFkaW5nIHN0YWNrXG4gICAqL1xuICByZWFkb25seSBib290c3RyYXBTdGFja1ZlcnNpb25Tc21QYXJhbWV0ZXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQXJ0aWZhY3QgcHJvcGVydGllcyBmb3IgQ2xvdWRGb3JtYXRpb24gc3RhY2tzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF3c0Nsb3VkRm9ybWF0aW9uU3RhY2tQcm9wZXJ0aWVzIHtcbiAgLyoqXG4gICAqIEEgZmlsZSByZWxhdGl2ZSB0byB0aGUgYXNzZW1ibHkgcm9vdCB3aGljaCBjb250YWlucyB0aGUgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUgZm9yIHRoaXMgc3RhY2suXG4gICAqL1xuICByZWFkb25seSB0ZW1wbGF0ZUZpbGU6IHN0cmluZztcblxuICAvKipcbiAgICogVmFsdWVzIGZvciBDbG91ZEZvcm1hdGlvbiBzdGFjayBwYXJhbWV0ZXJzIHRoYXQgc2hvdWxkIGJlIHBhc3NlZCB3aGVuIHRoZSBzdGFjayBpcyBkZXBsb3llZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBwYXJhbWV0ZXJzXG4gICAqL1xuICByZWFkb25seSBwYXJhbWV0ZXJzPzogeyBbaWQ6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBWYWx1ZXMgZm9yIENsb3VkRm9ybWF0aW9uIHN0YWNrIHRhZ3MgdGhhdCBzaG91bGQgYmUgcGFzc2VkIHdoZW4gdGhlIHN0YWNrIGlzIGRlcGxveWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHRhZ3M/OiB7IFtpZDogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIHRvIHVzZSBmb3IgdGhlIENsb3VkRm9ybWF0aW9uIHN0YWNrLlxuICAgKiBAZGVmYXVsdCAtIG5hbWUgZGVyaXZlZCBmcm9tIGFydGlmYWN0IElEXG4gICAqL1xuICByZWFkb25seSBzdGFja05hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW5hYmxlIHRlcm1pbmF0aW9uIHByb3RlY3Rpb24gZm9yIHRoaXMgc3RhY2suXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB0ZXJtaW5hdGlvblByb3RlY3Rpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcm9sZSB0aGF0IG5lZWRzIHRvIGJlIGFzc3VtZWQgdG8gZGVwbG95IHRoZSBzdGFja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHJvbGUgaXMgYXNzdW1lZCAoY3VycmVudCBjcmVkZW50aWFscyBhcmUgdXNlZClcbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEV4dGVybmFsIElEIHRvIHVzZSB3aGVuIGFzc3VtaW5nIHJvbGUgZm9yIGNsb3VkZm9ybWF0aW9uIGRlcGxveW1lbnRzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZXh0ZXJuYWwgSURcbiAgICovXG4gIHJlYWRvbmx5IGFzc3VtZVJvbGVFeHRlcm5hbElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcm9sZSB0aGF0IGlzIHBhc3NlZCB0byBDbG91ZEZvcm1hdGlvbiB0byBleGVjdXRlIHRoZSBjaGFuZ2Ugc2V0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcm9sZSBpcyBwYXNzZWQgKGN1cnJlbnRseSBhc3N1bWVkIHJvbGUvY3JlZGVudGlhbHMgYXJlIHVzZWQpXG4gICAqL1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvbkV4ZWN1dGlvblJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByb2xlIHRvIHVzZSB0byBsb29rIHVwIHZhbHVlcyBmcm9tIHRoZSB0YXJnZXQgQVdTIGFjY291bnRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyByb2xlIGlzIGFzc3VtZWQgKGN1cnJlbnQgY3JlZGVudGlhbHMgYXJlIHVzZWQpXG4gICAqL1xuICByZWFkb25seSBsb29rdXBSb2xlPzogQm9vdHN0cmFwUm9sZTtcblxuICAvKipcbiAgICogSWYgdGhlIHN0YWNrIHRlbXBsYXRlIGhhcyBhbHJlYWR5IGJlZW4gaW5jbHVkZWQgaW4gdGhlIGFzc2V0IG1hbmlmZXN0LCBpdHMgYXNzZXQgVVJMXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm90IHVwbG9hZGVkIHlldCwgdXBsb2FkIGp1c3QgYmVmb3JlIGRlcGxveWluZ1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhY2tUZW1wbGF0ZUFzc2V0T2JqZWN0VXJsPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZCB0byBkZXBsb3kgdGhpcyBzdGFja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWlyZXNCb290c3RyYXBTdGFja1ZlcnNpb24/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNTTSBwYXJhbWV0ZXIgd2hlcmUgdGhlIGJvb3RzdHJhcCBzdGFjayB2ZXJzaW9uIG51bWJlciBjYW4gYmUgZm91bmRcbiAgICpcbiAgICogT25seSB1c2VkIGlmIGByZXF1aXJlc0Jvb3RzdHJhcFN0YWNrVmVyc2lvbmAgaXMgc2V0LlxuICAgKlxuICAgKiAtIElmIHRoaXMgdmFsdWUgaXMgbm90IHNldCwgdGhlIGJvb3RzdHJhcCBzdGFjayBuYW1lIG11c3QgYmUga25vd24gYXRcbiAgICogICBkZXBsb3ltZW50IHRpbWUgc28gdGhlIHN0YWNrIHZlcnNpb24gY2FuIGJlIGxvb2tlZCB1cCBmcm9tIHRoZSBzdGFja1xuICAgKiAgIG91dHB1dHMuXG4gICAqIC0gSWYgdGhpcyB2YWx1ZSBpcyBzZXQsIHRoZSBib290c3RyYXAgc3RhY2sgY2FuIGhhdmUgYW55IG5hbWUgYmVjYXVzZVxuICAgKiAgIHdlIHdvbid0IG5lZWQgdG8gbG9vayBpdCB1cC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBCb290c3RyYXAgc3RhY2sgdmVyc2lvbiBudW1iZXIgbG9va2VkIHVwXG4gICAqL1xuICByZWFkb25seSBib290c3RyYXBTdGFja1ZlcnNpb25Tc21QYXJhbWV0ZXI/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBzdGFjayBzaG91bGQgYmUgdmFsaWRhdGVkIGJ5IHRoZSBDTEkgYWZ0ZXIgc3ludGhlc2lzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHZhbGlkYXRlT25TeW50aD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgQXNzZXQgTWFuaWZlc3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NldE1hbmlmZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBWZXJzaW9uIG9mIGJvb3RzdHJhcCBzdGFjayByZXF1aXJlZCB0byBkZXBsb3kgdGhpcyBzdGFja1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIFZlcnNpb24gMSAoYmFzaWMgbW9kZXJuIGJvb3RzdHJhcCBzdGFjaylcbiAgICovXG4gIHJlYWRvbmx5IHJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9uPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBTU00gcGFyYW1ldGVyIHdoZXJlIHRoZSBib290c3RyYXAgc3RhY2sgdmVyc2lvbiBudW1iZXIgY2FuIGJlIGZvdW5kXG4gICAqXG4gICAqIC0gSWYgdGhpcyB2YWx1ZSBpcyBub3Qgc2V0LCB0aGUgYm9vdHN0cmFwIHN0YWNrIG5hbWUgbXVzdCBiZSBrbm93biBhdFxuICAgKiAgIGRlcGxveW1lbnQgdGltZSBzbyB0aGUgc3RhY2sgdmVyc2lvbiBjYW4gYmUgbG9va2VkIHVwIGZyb20gdGhlIHN0YWNrXG4gICAqICAgb3V0cHV0cy5cbiAgICogLSBJZiB0aGlzIHZhbHVlIGlzIHNldCwgdGhlIGJvb3RzdHJhcCBzdGFjayBjYW4gaGF2ZSBhbnkgbmFtZSBiZWNhdXNlXG4gICAqICAgd2Ugd29uJ3QgbmVlZCB0byBsb29rIGl0IHVwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEJvb3RzdHJhcCBzdGFjayB2ZXJzaW9uIG51bWJlciBsb29rZWQgdXBcbiAgICovXG4gIHJlYWRvbmx5IGJvb3RzdHJhcFN0YWNrVmVyc2lvblNzbVBhcmFtZXRlcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBcnRpZmFjdCBwcm9wZXJ0aWVzIGZvciB0aGUgQXNzZXQgTWFuaWZlc3RcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NldE1hbmlmZXN0UHJvcGVydGllcyBleHRlbmRzIEFzc2V0TWFuaWZlc3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIEZpbGVuYW1lIG9mIHRoZSBhc3NldCBtYW5pZmVzdFxuICAgKi9cbiAgcmVhZG9ubHkgZmlsZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEFydGlmYWN0IHByb3BlcnRpZXMgZm9yIHRoZSBDb25zdHJ1Y3QgVHJlZSBBcnRpZmFjdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyZWVBcnRpZmFjdFByb3BlcnRpZXMge1xuICAvKipcbiAgICogRmlsZW5hbWUgb2YgdGhlIHRyZWUgYXJ0aWZhY3RcbiAgICovXG4gIHJlYWRvbmx5IGZpbGU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBcnRpZmFjdCBwcm9wZXJ0aWVzIGZvciBuZXN0ZWQgY2xvdWQgYXNzZW1ibGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIE5lc3RlZENsb3VkQXNzZW1ibHlQcm9wZXJ0aWVzIHtcbiAgLyoqXG4gICAqIFJlbGF0aXZlIHBhdGggdG8gdGhlIG5lc3RlZCBjbG91ZCBhc3NlbWJseVxuICAgKi9cbiAgcmVhZG9ubHkgZGlyZWN0b3J5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEaXNwbGF5IG5hbWUgZm9yIHRoZSBjbG91ZCBhc3NlbWJseVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBhcnRpZmFjdCBJRFxuICAgKi9cbiAgcmVhZG9ubHkgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgbWFuaWZlc3QgYXJ0aWZhY3RzXG4gKi9cbmV4cG9ydCB0eXBlIEFydGlmYWN0UHJvcGVydGllcyA9IEF3c0Nsb3VkRm9ybWF0aW9uU3RhY2tQcm9wZXJ0aWVzXG58IEFzc2V0TWFuaWZlc3RQcm9wZXJ0aWVzXG58IFRyZWVBcnRpZmFjdFByb3BlcnRpZXNcbnwgTmVzdGVkQ2xvdWRBc3NlbWJseVByb3BlcnRpZXM7XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LoadBalancerListenerProtocol = exports.LoadBalancerType = exports.ContextProvider = void 0;\n/**\n * Identifier for the context provider\n */\nvar ContextProvider;\n(function (ContextProvider) {\n /**\n * AMI provider\n */\n ContextProvider[\"AMI_PROVIDER\"] = \"ami\";\n /**\n * AZ provider\n */\n ContextProvider[\"AVAILABILITY_ZONE_PROVIDER\"] = \"availability-zones\";\n /**\n * Route53 Hosted Zone provider\n */\n ContextProvider[\"HOSTED_ZONE_PROVIDER\"] = \"hosted-zone\";\n /**\n * SSM Parameter Provider\n */\n ContextProvider[\"SSM_PARAMETER_PROVIDER\"] = \"ssm\";\n /**\n * VPC Provider\n */\n ContextProvider[\"VPC_PROVIDER\"] = \"vpc-provider\";\n /**\n * VPC Endpoint Service AZ Provider\n */\n ContextProvider[\"ENDPOINT_SERVICE_AVAILABILITY_ZONE_PROVIDER\"] = \"endpoint-service-availability-zones\";\n /**\n * Load balancer provider\n */\n ContextProvider[\"LOAD_BALANCER_PROVIDER\"] = \"load-balancer\";\n /**\n * Load balancer listener provider\n */\n ContextProvider[\"LOAD_BALANCER_LISTENER_PROVIDER\"] = \"load-balancer-listener\";\n /**\n * Security group provider\n */\n ContextProvider[\"SECURITY_GROUP_PROVIDER\"] = \"security-group\";\n /**\n * KMS Key Provider\n */\n ContextProvider[\"KEY_PROVIDER\"] = \"key-provider\";\n /**\n * A plugin provider (the actual plugin name will be in the properties)\n */\n ContextProvider[\"PLUGIN\"] = \"plugin\";\n})(ContextProvider || (exports.ContextProvider = ContextProvider = {}));\n/**\n * Type of load balancer\n */\nvar LoadBalancerType;\n(function (LoadBalancerType) {\n /**\n * Network load balancer\n */\n LoadBalancerType[\"NETWORK\"] = \"network\";\n /**\n * Application load balancer\n */\n LoadBalancerType[\"APPLICATION\"] = \"application\";\n})(LoadBalancerType || (exports.LoadBalancerType = LoadBalancerType = {}));\n/**\n * The protocol for connections from clients to the load balancer\n */\nvar LoadBalancerListenerProtocol;\n(function (LoadBalancerListenerProtocol) {\n /**\n * HTTP protocol\n */\n LoadBalancerListenerProtocol[\"HTTP\"] = \"HTTP\";\n /**\n * HTTPS protocol\n */\n LoadBalancerListenerProtocol[\"HTTPS\"] = \"HTTPS\";\n /**\n * TCP protocol\n */\n LoadBalancerListenerProtocol[\"TCP\"] = \"TCP\";\n /**\n * TLS protocol\n */\n LoadBalancerListenerProtocol[\"TLS\"] = \"TLS\";\n /**\n * UDP protocol\n * */\n LoadBalancerListenerProtocol[\"UDP\"] = \"UDP\";\n /**\n * TCP and UDP protocol\n * */\n LoadBalancerListenerProtocol[\"TCP_UDP\"] = \"TCP_UDP\";\n})(LoadBalancerListenerProtocol || (exports.LoadBalancerListenerProtocol = LoadBalancerListenerProtocol = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGV4dC1xdWVyaWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiY29udGV4dC1xdWVyaWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOztHQUVHO0FBQ0gsSUFBWSxlQXVEWDtBQXZERCxXQUFZLGVBQWU7SUFDekI7O09BRUc7SUFDSCx1Q0FBb0IsQ0FBQTtJQUVwQjs7T0FFRztJQUNILG9FQUFpRCxDQUFBO0lBRWpEOztPQUVHO0lBQ0gsdURBQW9DLENBQUE7SUFFcEM7O09BRUc7SUFDSCxpREFBOEIsQ0FBQTtJQUU5Qjs7T0FFRztJQUNILGdEQUE2QixDQUFBO0lBRTdCOztPQUVHO0lBQ0gsc0dBQW1GLENBQUE7SUFFbkY7O09BRUc7SUFDSCwyREFBd0MsQ0FBQTtJQUV4Qzs7T0FFRztJQUNILDZFQUEwRCxDQUFBO0lBRTFEOztPQUVHO0lBQ0gsNkRBQTBDLENBQUE7SUFFMUM7O09BRUc7SUFDSCxnREFBNkIsQ0FBQTtJQUU3Qjs7T0FFRztJQUNILG9DQUFpQixDQUFBO0FBQ25CLENBQUMsRUF2RFcsZUFBZSwrQkFBZixlQUFlLFFBdUQxQjtBQXdORDs7R0FFRztBQUNILElBQVksZ0JBVVg7QUFWRCxXQUFZLGdCQUFnQjtJQUMxQjs7T0FFRztJQUNILHVDQUFtQixDQUFBO0lBRW5COztPQUVHO0lBQ0gsK0NBQTJCLENBQUE7QUFDN0IsQ0FBQyxFQVZXLGdCQUFnQixnQ0FBaEIsZ0JBQWdCLFFBVTNCO0FBOENEOztHQUVHO0FBQ0gsSUFBWSw0QkE4Qlg7QUE5QkQsV0FBWSw0QkFBNEI7SUFDdEM7O09BRUc7SUFDSCw2Q0FBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCwrQ0FBZSxDQUFBO0lBRWY7O09BRUc7SUFDSCwyQ0FBVyxDQUFBO0lBRVg7O09BRUc7SUFDSCwyQ0FBVyxDQUFBO0lBRVg7O1NBRUs7SUFDTCwyQ0FBVyxDQUFBO0lBRVg7O1NBRUs7SUFDTCxtREFBbUIsQ0FBQTtBQUNyQixDQUFDLEVBOUJXLDRCQUE0Qiw0Q0FBNUIsNEJBQTRCLFFBOEJ2QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFRhZyB9IGZyb20gJy4vbWV0YWRhdGEtc2NoZW1hJztcblxuLyoqXG4gKiBJZGVudGlmaWVyIGZvciB0aGUgY29udGV4dCBwcm92aWRlclxuICovXG5leHBvcnQgZW51bSBDb250ZXh0UHJvdmlkZXIge1xuICAvKipcbiAgICogQU1JIHByb3ZpZGVyXG4gICAqL1xuICBBTUlfUFJPVklERVIgPSAnYW1pJyxcblxuICAvKipcbiAgICogQVogcHJvdmlkZXJcbiAgICovXG4gIEFWQUlMQUJJTElUWV9aT05FX1BST1ZJREVSID0gJ2F2YWlsYWJpbGl0eS16b25lcycsXG5cbiAgLyoqXG4gICAqIFJvdXRlNTMgSG9zdGVkIFpvbmUgcHJvdmlkZXJcbiAgICovXG4gIEhPU1RFRF9aT05FX1BST1ZJREVSID0gJ2hvc3RlZC16b25lJyxcblxuICAvKipcbiAgICogU1NNIFBhcmFtZXRlciBQcm92aWRlclxuICAgKi9cbiAgU1NNX1BBUkFNRVRFUl9QUk9WSURFUiA9ICdzc20nLFxuXG4gIC8qKlxuICAgKiBWUEMgUHJvdmlkZXJcbiAgICovXG4gIFZQQ19QUk9WSURFUiA9ICd2cGMtcHJvdmlkZXInLFxuXG4gIC8qKlxuICAgKiBWUEMgRW5kcG9pbnQgU2VydmljZSBBWiBQcm92aWRlclxuICAgKi9cbiAgRU5EUE9JTlRfU0VSVklDRV9BVkFJTEFCSUxJVFlfWk9ORV9QUk9WSURFUiA9ICdlbmRwb2ludC1zZXJ2aWNlLWF2YWlsYWJpbGl0eS16b25lcycsXG5cbiAgLyoqXG4gICAqIExvYWQgYmFsYW5jZXIgcHJvdmlkZXJcbiAgICovXG4gIExPQURfQkFMQU5DRVJfUFJPVklERVIgPSAnbG9hZC1iYWxhbmNlcicsXG5cbiAgLyoqXG4gICAqIExvYWQgYmFsYW5jZXIgbGlzdGVuZXIgcHJvdmlkZXJcbiAgICovXG4gIExPQURfQkFMQU5DRVJfTElTVEVORVJfUFJPVklERVIgPSAnbG9hZC1iYWxhbmNlci1saXN0ZW5lcicsXG5cbiAgLyoqXG4gICAqIFNlY3VyaXR5IGdyb3VwIHByb3ZpZGVyXG4gICAqL1xuICBTRUNVUklUWV9HUk9VUF9QUk9WSURFUiA9ICdzZWN1cml0eS1ncm91cCcsXG5cbiAgLyoqXG4gICAqIEtNUyBLZXkgUHJvdmlkZXJcbiAgICovXG4gIEtFWV9QUk9WSURFUiA9ICdrZXktcHJvdmlkZXInLFxuXG4gIC8qKlxuICAgKiBBIHBsdWdpbiBwcm92aWRlciAodGhlIGFjdHVhbCBwbHVnaW4gbmFtZSB3aWxsIGJlIGluIHRoZSBwcm9wZXJ0aWVzKVxuICAgKi9cbiAgUExVR0lOID0gJ3BsdWdpbicsXG59XG5cbi8qKlxuICogUXVlcnkgdG8gQU1JIGNvbnRleHQgcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbWlDb250ZXh0UXVlcnkge1xuICAvKipcbiAgICogQWNjb3VudCB0byBxdWVyeVxuICAgKi9cbiAgcmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZWdpb24gdG8gcXVlcnlcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSByb2xlIHRoYXQgc2hvdWxkIGJlIHVzZWQgdG8gbG9vayB1cCB0aGUgbWlzc2luZyB2YWx1ZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBsb29rdXBSb2xlQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPd25lcnMgdG8gRGVzY3JpYmVJbWFnZXMgY2FsbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEFsbCBvd25lcnNcbiAgICovXG4gIHJlYWRvbmx5IG93bmVycz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBGaWx0ZXJzIHRvIERlc2NyaWJlSW1hZ2VzIGNhbGxcbiAgICovXG4gIHJlYWRvbmx5IGZpbHRlcnM6IHtba2V5OiBzdHJpbmddOiBzdHJpbmdbXX07XG59XG5cbi8qKlxuICogUXVlcnkgdG8gYXZhaWxhYmlsaXR5IHpvbmUgY29udGV4dCBwcm92aWRlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF2YWlsYWJpbGl0eVpvbmVzQ29udGV4dFF1ZXJ5IHtcbiAgLyoqXG4gICAqIFF1ZXJ5IGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblxuICAvKipcbiAgICogUXVlcnkgcmVnaW9uXG4gICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgcm9sZSB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIGxvb2sgdXAgdGhlIG1pc3NpbmcgdmFsdWVzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9va3VwUm9sZUFybj86IHN0cmluZztcblxufVxuXG4vKipcbiAqIFF1ZXJ5IHRvIGhvc3RlZCB6b25lIGNvbnRleHQgcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBIb3N0ZWRab25lQ29udGV4dFF1ZXJ5IHtcbiAgLyoqXG4gICAqIFF1ZXJ5IGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblxuICAvKipcbiAgICogUXVlcnkgcmVnaW9uXG4gICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgcm9sZSB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIGxvb2sgdXAgdGhlIG1pc3NpbmcgdmFsdWVzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9va3VwUm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRvbWFpbiBuYW1lIGUuZy4gZXhhbXBsZS5jb20gdG8gbG9va3VwXG4gICAqL1xuICByZWFkb25seSBkb21haW5OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRydWUgaWYgdGhlIHpvbmUgeW91IHdhbnQgdG8gZmluZCBpcyBhIHByaXZhdGUgaG9zdGVkIHpvbmVcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHByaXZhdGVab25lPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIFZQQyBJRCB0byB0aGF0IHRoZSBwcml2YXRlIHpvbmUgbXVzdCBiZSBhc3NvY2lhdGVkIHdpdGhcbiAgICpcbiAgICogSWYgeW91IHByb3ZpZGUgVlBDIElEIGFuZCBwcml2YXRlWm9uZSBpcyBmYWxzZSwgdGhpcyB3aWxsIHJldHVybiBubyByZXN1bHRzXG4gICAqIGFuZCByYWlzZSBhbiBlcnJvci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBSZXF1aXJlZCBpZiBwcml2YXRlWm9uZT10cnVlXG4gICAqL1xuICByZWFkb25seSB2cGNJZD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBRdWVyeSB0byBTU00gUGFyYW1ldGVyIENvbnRleHQgUHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTU01QYXJhbWV0ZXJDb250ZXh0UXVlcnkge1xuICAvKipcbiAgICogUXVlcnkgYWNjb3VudFxuICAgKi9cbiAgcmVhZG9ubHkgYWNjb3VudDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBRdWVyeSByZWdpb25cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSByb2xlIHRoYXQgc2hvdWxkIGJlIHVzZWQgdG8gbG9vayB1cCB0aGUgbWlzc2luZyB2YWx1ZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBsb29rdXBSb2xlQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQYXJhbWV0ZXIgbmFtZSB0byBxdWVyeVxuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1ldGVyTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIFF1ZXJ5IGlucHV0IGZvciBsb29raW5nIHVwIGEgVlBDXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVnBjQ29udGV4dFF1ZXJ5IHtcbiAgLyoqXG4gICAqIFF1ZXJ5IGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblxuICAvKipcbiAgICogUXVlcnkgcmVnaW9uXG4gICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgcm9sZSB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIGxvb2sgdXAgdGhlIG1pc3NpbmcgdmFsdWVzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9va3VwUm9sZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogRmlsdGVycyB0byBhcHBseSB0byB0aGUgVlBDXG4gICAqXG4gICAqIEZpbHRlciBwYXJhbWV0ZXJzIGFyZSB0aGUgc2FtZSBhcyBwYXNzZWQgdG8gRGVzY3JpYmVWcGNzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L0FQSVJlZmVyZW5jZS9BUElfRGVzY3JpYmVWcGNzLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IGZpbHRlcjoge1trZXk6IHN0cmluZ106IHN0cmluZ307XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gcG9wdWxhdGUgdGhlIHN1Ym5ldEdyb3VwcyBmaWVsZCBvZiB0aGUgYFZwY0NvbnRleHRSZXNwb25zZWAsXG4gICAqIHdoaWNoIGNvbnRhaW5zIHBvdGVudGlhbGx5IGFzeW1tZXRyaWMgc3VibmV0IGdyb3Vwcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHJldHVybkFzeW1tZXRyaWNTdWJuZXRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogT3B0aW9uYWwgdGFnIGZvciBzdWJuZXQgZ3JvdXAgbmFtZS5cbiAgICogSWYgbm90IHByb3ZpZGVkLCB3ZSdsbCBsb29rIGF0IHRoZSBhd3MtY2RrOnN1Ym5ldC1uYW1lIHRhZy5cbiAgICogSWYgdGhlIHN1Ym5ldCBkb2VzIG5vdCBoYXZlIHRoZSBzcGVjaWZpZWQgdGFnLFxuICAgKiB3ZSdsbCB1c2UgaXRzIHR5cGUgYXMgdGhlIG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdhd3MtY2RrOnN1Ym5ldC1uYW1lJ1xuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0R3JvdXBOYW1lVGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHBvcHVsYXRlIHRoZSBgdnBuR2F0ZXdheUlkYCBmaWVsZCBvZiB0aGUgYFZwY0NvbnRleHRSZXNwb25zZWAsXG4gICAqIHdoaWNoIGNvbnRhaW5zIHRoZSBWUE4gR2F0ZXdheSBJRCwgaWYgb25lIGV4aXN0cy4gWW91IGNhbiBleHBsaWNpdGx5XG4gICAqIGRpc2FibGUgdGhpcyBpbiBvcmRlciB0byBhdm9pZCB0aGUgbG9va3VwIGlmIHlvdSBrbm93IHRoZSBWUEMgZG9lcyBub3QgaGF2ZVxuICAgKiBhIFZQTiBHYXR3YXkgYXR0YWNoZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IHJldHVyblZwbkdhdGV3YXlzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBRdWVyeSB0byBlbmRwb2ludCBzZXJ2aWNlIGNvbnRleHQgcHJvdmlkZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmRwb2ludFNlcnZpY2VBdmFpbGFiaWxpdHlab25lc0NvbnRleHRRdWVyeSB7XG4gIC8qKlxuICAgKiBRdWVyeSBhY2NvdW50XG4gICAqL1xuICByZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFF1ZXJ5IHJlZ2lvblxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHJvbGUgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBsb29rIHVwIHRoZSBtaXNzaW5nIHZhbHVlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGxvb2t1cFJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFF1ZXJ5IHNlcnZpY2UgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUeXBlIG9mIGxvYWQgYmFsYW5jZXJcbiAqL1xuZXhwb3J0IGVudW0gTG9hZEJhbGFuY2VyVHlwZSB7XG4gIC8qKlxuICAgKiBOZXR3b3JrIGxvYWQgYmFsYW5jZXJcbiAgICovXG4gIE5FVFdPUksgPSAnbmV0d29yaycsXG5cbiAgLyoqXG4gICAqIEFwcGxpY2F0aW9uIGxvYWQgYmFsYW5jZXJcbiAgICovXG4gIEFQUExJQ0FUSU9OID0gJ2FwcGxpY2F0aW9uJyxcbn1cblxuLyoqXG4gKiBGaWx0ZXJzIGZvciBzZWxlY3RpbmcgbG9hZCBiYWxhbmNlcnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2FkQmFsYW5jZXJGaWx0ZXIge1xuICAvKipcbiAgICogRmlsdGVyIGxvYWQgYmFsYW5jZXJzIGJ5IHRoZWlyIHR5cGVcbiAgICovXG4gIHJlYWRvbmx5IGxvYWRCYWxhbmNlclR5cGU6IExvYWRCYWxhbmNlclR5cGU7XG5cbiAgLyoqXG4gICAqIEZpbmQgYnkgbG9hZCBiYWxhbmNlcidzIEFSTlxuICAgKiBAZGVmYXVsdCAtIGRvZXMgbm90IHNlYXJjaCBieSBsb2FkIGJhbGFuY2VyIGFyblxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYXRjaCBsb2FkIGJhbGFuY2VyIHRhZ3NcbiAgICogQGRlZmF1bHQgLSBkb2VzIG5vdCBtYXRjaCBsb2FkIGJhbGFuY2VycyBieSB0YWdzXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXJUYWdzPzogVGFnW107XG59XG5cbi8qKlxuICogUXVlcnkgaW5wdXQgZm9yIGxvb2tpbmcgdXAgYSBsb2FkIGJhbGFuY2VyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9hZEJhbGFuY2VyQ29udGV4dFF1ZXJ5IGV4dGVuZHMgTG9hZEJhbGFuY2VyRmlsdGVyIHtcbiAgLyoqXG4gICAqIFF1ZXJ5IGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcblxuICAvKipcbiAgICogUXVlcnkgcmVnaW9uXG4gICAqL1xuICByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgcm9sZSB0aGF0IHNob3VsZCBiZSB1c2VkIHRvIGxvb2sgdXAgdGhlIG1pc3NpbmcgdmFsdWVzXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbG9va3VwUm9sZUFybj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgcHJvdG9jb2wgZm9yIGNvbm5lY3Rpb25zIGZyb20gY2xpZW50cyB0byB0aGUgbG9hZCBiYWxhbmNlclxuICovXG5leHBvcnQgZW51bSBMb2FkQmFsYW5jZXJMaXN0ZW5lclByb3RvY29sIHtcbiAgLyoqXG4gICAqIEhUVFAgcHJvdG9jb2xcbiAgICovXG4gIEhUVFAgPSAnSFRUUCcsXG5cbiAgLyoqXG4gICAqIEhUVFBTIHByb3RvY29sXG4gICAqL1xuICBIVFRQUyA9ICdIVFRQUycsXG5cbiAgLyoqXG4gICAqIFRDUCBwcm90b2NvbFxuICAgKi9cbiAgVENQID0gJ1RDUCcsXG5cbiAgLyoqXG4gICAqIFRMUyBwcm90b2NvbFxuICAgKi9cbiAgVExTID0gJ1RMUycsXG5cbiAgLyoqXG4gICAqIFVEUCBwcm90b2NvbFxuICAgKiAqL1xuICBVRFAgPSAnVURQJyxcblxuICAvKipcbiAgICogVENQIGFuZCBVRFAgcHJvdG9jb2xcbiAgICogKi9cbiAgVENQX1VEUCA9ICdUQ1BfVURQJyxcbn1cblxuLyoqXG4gKiBRdWVyeSBpbnB1dCBmb3IgbG9va2luZyB1cCBhIGxvYWQgYmFsYW5jZXIgbGlzdGVuZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2FkQmFsYW5jZXJMaXN0ZW5lckNvbnRleHRRdWVyeSBleHRlbmRzIExvYWRCYWxhbmNlckZpbHRlciB7XG4gIC8qKlxuICAgKiBRdWVyeSBhY2NvdW50XG4gICAqL1xuICByZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFF1ZXJ5IHJlZ2lvblxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHJvbGUgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBsb29rIHVwIHRoZSBtaXNzaW5nIHZhbHVlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGxvb2t1cFJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZpbmQgYnkgbGlzdGVuZXIncyBhcm5cbiAgICogQGRlZmF1bHQgLSBkb2VzIG5vdCBmaW5kIGJ5IGxpc3RlbmVyIGFyblxuICAgKi9cbiAgcmVhZG9ubHkgbGlzdGVuZXJBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZpbHRlciBieSBsaXN0ZW5lciBwcm90b2NvbFxuICAgKiBAZGVmYXVsdCAtIGRvZXMgbm90IGZpbHRlciBieSBsaXN0ZW5lciBwcm90b2NvbFxuICAgKi9cbiAgcmVhZG9ubHkgbGlzdGVuZXJQcm90b2NvbD86IExvYWRCYWxhbmNlckxpc3RlbmVyUHJvdG9jb2w7XG5cbiAgLyoqXG4gICAqIEZpbHRlciBsaXN0ZW5lcnMgYnkgbGlzdGVuZXIgcG9ydFxuICAgKiBAZGVmYXVsdCAtIGRvZXMgbm90IGZpbHRlciBieSBhIGxpc3RlbmVyIHBvcnRcbiAgICovXG4gIHJlYWRvbmx5IGxpc3RlbmVyUG9ydD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBRdWVyeSBpbnB1dCBmb3IgbG9va2luZyB1cCBhIHNlY3VyaXR5IGdyb3VwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJpdHlHcm91cENvbnRleHRRdWVyeSB7XG4gIC8qKlxuICAgKiBRdWVyeSBhY2NvdW50XG4gICAqL1xuICByZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFF1ZXJ5IHJlZ2lvblxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHJvbGUgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBsb29rIHVwIHRoZSBtaXNzaW5nIHZhbHVlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGxvb2t1cFJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNlY3VyaXR5IGdyb3VwIGlkXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZWN1cml0eSBncm91cCBuYW1lXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZQQyBJRFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHZwY0lkPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFF1ZXJ5IGlucHV0IGZvciBsb29raW5nIHVwIGEgS01TIEtleVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEtleUNvbnRleHRRdWVyeSB7XG4gIC8qKlxuICAgKiBRdWVyeSBhY2NvdW50XG4gICAqL1xuICByZWFkb25seSBhY2NvdW50OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFF1ZXJ5IHJlZ2lvblxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIHJvbGUgdGhhdCBzaG91bGQgYmUgdXNlZCB0byBsb29rIHVwIHRoZSBtaXNzaW5nIHZhbHVlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGxvb2t1cFJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFsaWFzIG5hbWUgdXNlZCB0byBzZWFyY2ggdGhlIEtleVxuICAgKi9cbiAgcmVhZG9ubHkgYWxpYXNOYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUXVlcnkgaW5wdXQgZm9yIHBsdWdpbnNcbiAqXG4gKiBUaGlzIGFsdGVybmF0ZSBicmFuY2ggaXMgbmVjZXNzYXJ5IGJlY2F1c2UgaXQgbmVlZHMgdG8gYmUgYWJsZSB0byBlc2NhcGUgYWxsIHR5cGUgY2hlY2tpbmdcbiAqIHdlIGRvIG9uIG9uIHRoZSBjbG91ZCBhc3NlbWJseSAtLSB3ZSBjYW5ub3Qga25vdyB0aGUgcHJvcGVydGllcyB0aGF0IHdpbGwgYmUgdXNlZCBhIHByaW9yaS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQbHVnaW5Db250ZXh0UXVlcnkge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBsdWdpblxuICAgKi9cbiAgcmVhZG9ubHkgcGx1Z2luTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBcmJpdHJhcnkgb3RoZXIgYXJndW1lbnRzIGZvciB0aGUgcGx1Z2luLlxuICAgKlxuICAgKiBUaGlzIGluZGV4IHNpZ25hdHVyZSBpcyBub3QgdXNhYmxlIGluIG5vbi1UeXBlU2NyaXB0L0phdmFTY3JpcHQgbGFuZ3VhZ2VzLlxuICAgKlxuICAgKiBAanNpaSBpZ25vcmVcbiAgICovXG4gIFtrZXk6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IHR5cGUgQ29udGV4dFF1ZXJ5UHJvcGVydGllcyA9IEFtaUNvbnRleHRRdWVyeVxufCBBdmFpbGFiaWxpdHlab25lc0NvbnRleHRRdWVyeVxufCBIb3N0ZWRab25lQ29udGV4dFF1ZXJ5XG58IFNTTVBhcmFtZXRlckNvbnRleHRRdWVyeVxufCBWcGNDb250ZXh0UXVlcnlcbnwgRW5kcG9pbnRTZXJ2aWNlQXZhaWxhYmlsaXR5Wm9uZXNDb250ZXh0UXVlcnlcbnwgTG9hZEJhbGFuY2VyQ29udGV4dFF1ZXJ5XG58IExvYWRCYWxhbmNlckxpc3RlbmVyQ29udGV4dFF1ZXJ5XG58IFNlY3VyaXR5R3JvdXBDb250ZXh0UXVlcnlcbnwgS2V5Q29udGV4dFF1ZXJ5XG58IFBsdWdpbkNvbnRleHRRdWVyeTtcblxuIl19","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./schema\"), exports);\n__exportStar(require(\"./metadata-schema\"), exports);\n__exportStar(require(\"./artifact-schema\"), exports);\n__exportStar(require(\"./context-queries\"), exports);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXlCO0FBQ3pCLG9EQUFrQztBQUNsQyxvREFBa0M7QUFDbEMsb0RBQWtDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9tZXRhZGF0YS1zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9hcnRpZmFjdC1zY2hlbWEnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250ZXh0LXF1ZXJpZXMnO1xuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ArtifactMetadataEntryType = void 0;\n/**\n * Type of artifact metadata entry.\n */\nvar ArtifactMetadataEntryType;\n(function (ArtifactMetadataEntryType) {\n /**\n * Asset in metadata.\n */\n ArtifactMetadataEntryType[\"ASSET\"] = \"aws:cdk:asset\";\n /**\n * Metadata key used to print INFO-level messages by the toolkit when an app is syntheized.\n */\n ArtifactMetadataEntryType[\"INFO\"] = \"aws:cdk:info\";\n /**\n * Metadata key used to print WARNING-level messages by the toolkit when an app is syntheized.\n */\n ArtifactMetadataEntryType[\"WARN\"] = \"aws:cdk:warning\";\n /**\n * Metadata key used to print ERROR-level messages by the toolkit when an app is syntheized.\n */\n ArtifactMetadataEntryType[\"ERROR\"] = \"aws:cdk:error\";\n /**\n * Represents the CloudFormation logical ID of a resource at a certain path.\n */\n ArtifactMetadataEntryType[\"LOGICAL_ID\"] = \"aws:cdk:logicalId\";\n /**\n * Represents tags of a stack.\n */\n ArtifactMetadataEntryType[\"STACK_TAGS\"] = \"aws:cdk:stack-tags\";\n})(ArtifactMetadataEntryType || (exports.ArtifactMetadataEntryType = ArtifactMetadataEntryType = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0YWRhdGEtc2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWV0YWRhdGEtc2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQTJRQTs7R0FFRztBQUNILElBQVkseUJBOEJYO0FBOUJELFdBQVkseUJBQXlCO0lBQ25DOztPQUVHO0lBQ0gsb0RBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCxrREFBcUIsQ0FBQTtJQUVyQjs7T0FFRztJQUNILHFEQUF3QixDQUFBO0lBRXhCOztPQUVHO0lBQ0gsb0RBQXVCLENBQUE7SUFFdkI7O09BRUc7SUFDSCw2REFBZ0MsQ0FBQTtJQUVoQzs7T0FFRztJQUNILDhEQUFpQyxDQUFBO0FBQ25DLENBQUMsRUE5QlcseUJBQXlCLHlDQUF6Qix5QkFBeUIsUUE4QnBDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDb21tb24gcHJvcGVydGllcyBmb3IgYXNzZXQgbWV0YWRhdGEuXG4gKi9cbmludGVyZmFjZSBCYXNlQXNzZXRNZXRhZGF0YUVudHJ5IHtcbiAgLyoqXG4gICAqIFJlcXVlc3RlZCBwYWNrYWdpbmcgc3R5bGVcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2luZzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMb2dpY2FsIGlkZW50aWZpZXIgZm9yIHRoZSBhc3NldFxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGhhc2ggb2YgdGhlIGFzc2V0IHNvdXJjZS5cbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZUhhc2g6IHN0cmluZztcblxuICAvKipcbiAgICogUGF0aCBvbiBkaXNrIHRvIHRoZSBhc3NldFxuICAgKi9cbiAgcmVhZG9ubHkgcGF0aDogc3RyaW5nO1xufVxuXG4vKipcbiAqIE1ldGFkYXRhIEVudHJ5IHNwZWMgZm9yIGZpbGVzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBlbnRyeSA9IHtcbiAqICAgcGFja2FnaW5nOiAnZmlsZScsXG4gKiAgIHMzQnVja2V0UGFyYW1ldGVyOiAnYnVja2V0LXBhcmFtZXRlcicsXG4gKiAgIHMzS2V5UGFyYW1lbnRlcjogJ2tleS1wYXJhbWV0ZXInLFxuICogICBhcnRpZmFjdEhhc2hQYXJhbWV0ZXI6ICdoYXNoLXBhcmFtZXRlcicsXG4gKiB9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmlsZUFzc2V0TWV0YWRhdGFFbnRyeSBleHRlbmRzIEJhc2VBc3NldE1ldGFkYXRhRW50cnkge1xuICAvKipcbiAgICogUmVxdWVzdGVkIHBhY2thZ2luZyBzdHlsZVxuICAgKi9cbiAgcmVhZG9ubHkgcGFja2FnaW5nOiAnemlwJyB8ICdmaWxlJztcblxuICAvKipcbiAgICogTmFtZSBvZiBwYXJhbWV0ZXIgd2hlcmUgUzMgYnVja2V0IHNob3VsZCBiZSBwYXNzZWQgaW5cbiAgICovXG4gIHJlYWRvbmx5IHMzQnVja2V0UGFyYW1ldGVyOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgcGFyYW1ldGVyIHdoZXJlIFMzIGtleSBzaG91bGQgYmUgcGFzc2VkIGluXG4gICAqL1xuICByZWFkb25seSBzM0tleVBhcmFtZXRlcjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyIHdoZXJlIHRoZSBoYXNoIG9mIHRoZSBidW5kbGVkIGFzc2V0IHNob3VsZCBiZSBwYXNzZWQgaW4uXG4gICAqL1xuICByZWFkb25seSBhcnRpZmFjdEhhc2hQYXJhbWV0ZXI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBNZXRhZGF0YSBFbnRyeSBzcGVjIGZvciBzdGFjayB0YWcuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGFnIHtcbiAgLyoqXG4gICAqIFRhZyBrZXkuXG4gICAqXG4gICAqIChJbiB0aGUgYWN0dWFsIGZpbGUgb24gZGlzayB0aGlzIHdpbGwgYmUgY2FzZWQgYXMgXCJLZXlcIiwgYW5kIHRoZSBzdHJ1Y3R1cmUgaXNcbiAgICogcGF0Y2hlZCB0byBtYXRjaCB0aGlzIHN0cnVjdHVyZSB1cG9uIGxvYWRpbmc6XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iLzRhYWRhYTc3OWI0OGYzNTgzOGNjY2Q0ZTI1MTA3YjIzMzhmMDU1NDcvcGFja2FnZXMvJTQwYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEvbGliL21hbmlmZXN0LnRzI0wxMzcpXG4gICAqL1xuICByZWFkb25seSBrZXk6IHN0cmluZztcblxuICAvKipcbiAgICogVGFnIHZhbHVlLlxuICAgKlxuICAgKiAoSW4gdGhlIGFjdHVhbCBmaWxlIG9uIGRpc2sgdGhpcyB3aWxsIGJlIGNhc2VkIGFzIFwiVmFsdWVcIiwgYW5kIHRoZSBzdHJ1Y3R1cmUgaXNcbiAgICogcGF0Y2hlZCB0byBtYXRjaCB0aGlzIHN0cnVjdHVyZSB1cG9uIGxvYWRpbmc6XG4gICAqIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iLzRhYWRhYTc3OWI0OGYzNTgzOGNjY2Q0ZTI1MTA3YjIzMzhmMDU1NDcvcGFja2FnZXMvJTQwYXdzLWNkay9jbG91ZC1hc3NlbWJseS1zY2hlbWEvbGliL21hbmlmZXN0LnRzI0wxMzcpXG4gICAqL1xuICByZWFkb25seSB2YWx1ZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBEb2NrZXIgY2FjaGUgYmFja2VuZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lckltYWdlQXNzZXRDYWNoZU9wdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBjYWNoZSB0byB1c2UuXG4gICAqIFJlZmVyIHRvIGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2J1aWxkL2NhY2hlL2JhY2tlbmRzLyBmb3IgZnVsbCBsaXN0IG9mIGJhY2tlbmRzLlxuICAgKiBAZGVmYXVsdCAtIHVuc3BlY2lmaWVkXG4gICAqXG4gICAqIEBleGFtcGxlICdyZWdpc3RyeSdcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IHN0cmluZztcbiAgLyoqXG4gICAqIEFueSBwYXJhbWV0ZXJzIHRvIHBhc3MgaW50byB0aGUgZG9ja2VyIGNhY2hlIGJhY2tlbmQgY29uZmlndXJhdGlvbi5cbiAgICogUmVmZXIgdG8gaHR0cHM6Ly9kb2NzLmRvY2tlci5jb20vYnVpbGQvY2FjaGUvYmFja2VuZHMvIGZvciBjYWNoZSBiYWNrZW5kIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBkZWZhdWx0IHt9IE5vIG9wdGlvbnMgcHJvdmlkZWRcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogZGVjbGFyZSBjb25zdCBicmFuY2g6IHN0cmluZztcbiAgICpcbiAgICogY29uc3QgcGFyYW1zID0ge1xuICAgKiAgIHJlZjogYDEyMzQ1Njc4LmRrci5lY3IudXMtd2VzdC0yLmFtYXpvbmF3cy5jb20vY2FjaGU6JHticmFuY2h9YCxcbiAgICogICBtb2RlOiBcIm1heFwiLFxuICAgKiB9O1xuICAgKi9cbiAgcmVhZG9ubHkgcGFyYW1zPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBNZXRhZGF0YSBFbnRyeSBzcGVjIGZvciBjb250YWluZXIgaW1hZ2VzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBlbnRyeSA9IHtcbiAqICAgcGFja2FnaW5nOiAnY29udGFpbmVyLWltYWdlJyxcbiAqICAgcmVwb3NpdG9yeU5hbWU6ICdyZXBvc2l0b3J5LW5hbWUnLFxuICogICBpbWFnZVRhZzogJ3RhZycsXG4gKiB9XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVySW1hZ2VBc3NldE1ldGFkYXRhRW50cnkgZXh0ZW5kcyBCYXNlQXNzZXRNZXRhZGF0YUVudHJ5IHtcbiAgLyoqXG4gICAqIFR5cGUgb2YgYXNzZXRcbiAgICovXG4gIHJlYWRvbmx5IHBhY2thZ2luZzogJ2NvbnRhaW5lci1pbWFnZSc7XG5cbiAgLyoqXG4gICAqIEVDUiBSZXBvc2l0b3J5IG5hbWUgYW5kIHJlcG8gZGlnZXN0IChzZXBhcmF0ZWQgYnkgXCJAc2hhMjU2OlwiKSB3aGVyZSB0aGlzXG4gICAqIGltYWdlIGlzIHN0b3JlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdW5kZWZpbmVkIElmIG5vdCBzcGVjaWZpZWQsIGByZXBvc2l0b3J5TmFtZWAgYW5kIGBpbWFnZVRhZ2AgYXJlXG4gICAqIHJlcXVpcmVkIGJlY2F1c2Ugb3RoZXJ3aXNlIGhvdyB3aWxsIHRoZSBzdGFjayBrbm93IHdoZXJlIHRvIGZpbmQgdGhlIGFzc2V0LFxuICAgKiBoYT9cbiAgICogQGRlcHJlY2F0ZWQgc3BlY2lmeSBgcmVwb3NpdG9yeU5hbWVgIGFuZCBgaW1hZ2VUYWdgIGluc3RlYWQsIGFuZCB0aGVuIHlvdVxuICAgKiBrbm93IHdoZXJlIHRoZSBpbWFnZSB3aWxsIGdvLlxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VOYW1lUGFyYW1ldGVyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFQ1IgcmVwb3NpdG9yeSBuYW1lLCBpZiBvbWl0dGVkIGEgZGVmYXVsdCBuYW1lIGJhc2VkIG9uIHRoZSBhc3NldCdzIElEIGlzXG4gICAqIHVzZWQgaW5zdGVhZC4gU3BlY2lmeSB0aGlzIHByb3BlcnR5IGlmIHlvdSBuZWVkIHRvIHN0YXRpY2FsbHkgYWRkcmVzcyB0aGVcbiAgICogaW1hZ2UsIGUuZy4gZnJvbSBhIEt1YmVybmV0ZXMgUG9kLiBOb3RlLCB0aGlzIGlzIG9ubHkgdGhlIHJlcG9zaXRvcnkgbmFtZSxcbiAgICogd2l0aG91dCB0aGUgcmVnaXN0cnkgYW5kIHRoZSB0YWcgcGFydHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhpcyBwYXJhbWV0ZXIgaXMgUkVRVUlSRUQgYWZ0ZXIgMS4yMS4wXG4gICAqL1xuICByZWFkb25seSByZXBvc2l0b3J5TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRvY2tlciBpbWFnZSB0YWcgdG8gdXNlIGZvciB0YWdnaW5nIHB1c2hlZCBpbWFnZXMuIFRoaXMgZmllbGQgaXNcbiAgICogcmVxdWlyZWQgaWYgYGltYWdlUGFyYW1ldGVyTmFtZWAgaXMgb21taXRlZCAob3RoZXJ3aXNlLCB0aGUgYXBwIHdvbid0IGJlXG4gICAqIGFibGUgdG8gZmluZCB0aGUgaW1hZ2UpLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoaXMgcGFyYW1ldGVyIGlzIFJFUVVJUkVEIGFmdGVyIDEuMjEuMFxuICAgKi9cbiAgcmVhZG9ubHkgaW1hZ2VUYWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFyZ3MgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZFxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBidWlsZCBhcmdzIGFyZSBwYXNzZWRcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkQXJncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFNTSCBhZ2VudCBzb2NrZXQgb3Iga2V5cyB0byBwYXNzIHRvIHRoZSBgZG9ja2VyIGJ1aWxkYCBjb21tYW5kXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIHNzaCBhcmcgaXMgcGFzc2VkXG4gICAqL1xuICByZWFkb25seSBidWlsZFNzaD86IHN0cmluZztcblxuICAvKipcbiAgICogQnVpbGQgc2VjcmV0cyB0byBwYXNzIHRvIHRoZSBgZG9ja2VyIGJ1aWxkYCBjb21tYW5kXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGJ1aWxkIHNlY3JldHMgYXJlIHBhc3NlZFxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRTZWNyZXRzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogRG9ja2VyIHRhcmdldCB0byBidWlsZCB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCBubyBidWlsZCB0YXJnZXRcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldD86IHN0cmluZztcblxuICAvKipcbiAgICogUGF0aCB0byB0aGUgRG9ja2VyZmlsZSAocmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeSkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZmlsZSBpcyBwYXNzZWRcbiAgICovXG4gIHJlYWRvbmx5IGZpbGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5ldHdvcmtpbmcgbW9kZSBmb3IgdGhlIFJVTiBjb21tYW5kcyBkdXJpbmcgYnVpbGQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbmV0d29ya2luZyBtb2RlIHNwZWNpZmllZFxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya01vZGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBsYXRmb3JtIHRvIGJ1aWxkIGZvci4gX1JlcXVpcmVzIERvY2tlciBCdWlsZHhfLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGN1cnJlbnQgbWFjaGluZSBwbGF0Zm9ybVxuICAgKi9cbiAgcmVhZG9ubHkgcGxhdGZvcm0/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE91dHB1dHMgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBvdXRwdXRzIGFyZSBwYXNzZWQgdG8gdGhlIGJ1aWxkIGNvbW1hbmQgKGRlZmF1bHQgb3V0cHV0cyBhcmUgdXNlZClcbiAgICogQHNlZSBodHRwczovL2RvY3MuZG9ja2VyLmNvbS9lbmdpbmUvcmVmZXJlbmNlL2NvbW1hbmRsaW5lL2J1aWxkLyNjdXN0b20tYnVpbGQtb3V0cHV0c1xuICAgKi9cbiAgcmVhZG9ubHkgb3V0cHV0cz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBDYWNoZSBmcm9tIG9wdGlvbnMgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjYWNoZSBmcm9tIG9wdGlvbnMgYXJlIHBhc3NlZCB0byB0aGUgYnVpbGQgY29tbWFuZFxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5kb2NrZXIuY29tL2J1aWxkL2NhY2hlL2JhY2tlbmRzL1xuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVGcm9tPzogQ29udGFpbmVySW1hZ2VBc3NldENhY2hlT3B0aW9uW107XG5cbiAgLyoqXG4gICAqIENhY2hlIHRvIG9wdGlvbnMgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjYWNoZSB0byBvcHRpb25zIGFyZSBwYXNzZWQgdG8gdGhlIGJ1aWxkIGNvbW1hbmRcbiAgICogQHNlZSBodHRwczovL2RvY3MuZG9ja2VyLmNvbS9idWlsZC9jYWNoZS9iYWNrZW5kcy9cbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlVG8/OiBDb250YWluZXJJbWFnZUFzc2V0Q2FjaGVPcHRpb247XG5cbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIGNhY2hlIGFuZCBwYXNzIGAtLW5vLWNhY2hlYCB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBjYWNoZSBpcyB1c2VkXG4gICAqL1xuICByZWFkb25seSBjYWNoZURpc2FibGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBAc2VlIEFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuQVNTRVRcbiAqL1xuZXhwb3J0IHR5cGUgQXNzZXRNZXRhZGF0YUVudHJ5ID0gRmlsZUFzc2V0TWV0YWRhdGFFbnRyeSB8IENvbnRhaW5lckltYWdlQXNzZXRNZXRhZGF0YUVudHJ5O1xuXG4vLyBUeXBlIGFsaWFzZXMgZm9yIG1ldGFkYXRhIGVudHJpZXMuXG4vLyBVc2VkIHNpbXBseSB0byBhc3NpZ24gbmFtZXMgdG8gZGF0YSB0eXBlcyBmb3IgbW9yZSBjbGFyaXR5LlxuXG4vKipcbiAqIEBzZWUgQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5JTkZPXG4gKiBAc2VlIEFydGlmYWN0TWV0YWRhdGFFbnRyeVR5cGUuV0FSTlxuICogQHNlZSBBcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlLkVSUk9SXG4gKi9cbmV4cG9ydCB0eXBlIExvZ01lc3NhZ2VNZXRhZGF0YUVudHJ5ID0gc3RyaW5nO1xuXG4vKipcbiAqIEBzZWUgQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5MT0dJQ0FMX0lEXG4gKi9cbmV4cG9ydCB0eXBlIExvZ2ljYWxJZE1ldGFkYXRhRW50cnkgPSBzdHJpbmc7XG5cbi8qKlxuICogQHNlZSBBcnRpZmFjdE1ldGFkYXRhRW50cnlUeXBlLlNUQUNLX1RBR1NcbiAqL1xuZXhwb3J0IHR5cGUgU3RhY2tUYWdzTWV0YWRhdGFFbnRyeSA9IFRhZ1tdO1xuXG4vKipcbiAqIFVuaW9uIHR5cGUgZm9yIGFsbCBtZXRhZGF0YSBlbnRyaWVzIHRoYXQgbWlnaHQgZXhpc3QgaW4gdGhlIG1hbmlmZXN0LlxuICovXG5leHBvcnQgdHlwZSBNZXRhZGF0YUVudHJ5RGF0YSA9IEFzc2V0TWV0YWRhdGFFbnRyeSB8IExvZ01lc3NhZ2VNZXRhZGF0YUVudHJ5IHwgTG9naWNhbElkTWV0YWRhdGFFbnRyeSB8IFN0YWNrVGFnc01ldGFkYXRhRW50cnk7XG5cbi8qKlxuICogVHlwZSBvZiBhcnRpZmFjdCBtZXRhZGF0YSBlbnRyeS5cbiAqL1xuZXhwb3J0IGVudW0gQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZSB7XG4gIC8qKlxuICAgKiBBc3NldCBpbiBtZXRhZGF0YS5cbiAgICovXG4gIEFTU0VUID0gJ2F3czpjZGs6YXNzZXQnLFxuXG4gIC8qKlxuICAgKiBNZXRhZGF0YSBrZXkgdXNlZCB0byBwcmludCBJTkZPLWxldmVsIG1lc3NhZ2VzIGJ5IHRoZSB0b29sa2l0IHdoZW4gYW4gYXBwIGlzIHN5bnRoZWl6ZWQuXG4gICAqL1xuICBJTkZPID0gJ2F3czpjZGs6aW5mbycsXG5cbiAgLyoqXG4gICAqIE1ldGFkYXRhIGtleSB1c2VkIHRvIHByaW50IFdBUk5JTkctbGV2ZWwgbWVzc2FnZXMgYnkgdGhlIHRvb2xraXQgd2hlbiBhbiBhcHAgaXMgc3ludGhlaXplZC5cbiAgICovXG4gIFdBUk4gPSAnYXdzOmNkazp3YXJuaW5nJyxcblxuICAvKipcbiAgICogTWV0YWRhdGEga2V5IHVzZWQgdG8gcHJpbnQgRVJST1ItbGV2ZWwgbWVzc2FnZXMgYnkgdGhlIHRvb2xraXQgd2hlbiBhbiBhcHAgaXMgc3ludGhlaXplZC5cbiAgICovXG4gIEVSUk9SID0gJ2F3czpjZGs6ZXJyb3InLFxuXG4gIC8qKlxuICAgKiBSZXByZXNlbnRzIHRoZSBDbG91ZEZvcm1hdGlvbiBsb2dpY2FsIElEIG9mIGEgcmVzb3VyY2UgYXQgYSBjZXJ0YWluIHBhdGguXG4gICAqL1xuICBMT0dJQ0FMX0lEID0gJ2F3czpjZGs6bG9naWNhbElkJyxcblxuICAvKipcbiAgICogUmVwcmVzZW50cyB0YWdzIG9mIGEgc3RhY2suXG4gICAqL1xuICBTVEFDS19UQUdTID0gJ2F3czpjZGs6c3RhY2stdGFncycsXG59XG5cbi8qKlxuICogQSBtZXRhZGF0YSBlbnRyeSBpbiBhIGNsb3VkIGFzc2VtYmx5IGFydGlmYWN0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1ldGFkYXRhRW50cnkge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgdGhlIG1ldGFkYXRhIGVudHJ5LlxuICAgKi9cbiAgcmVhZG9ubHkgdHlwZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGF0YS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBkYXRhLlxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YT86IE1ldGFkYXRhRW50cnlEYXRhO1xuXG4gIC8qKlxuICAgKiBBIHN0YWNrIHRyYWNlIGZvciB3aGVuIHRoZSBlbnRyeSB3YXMgY3JlYXRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyB0cmFjZS5cbiAgICovXG4gIHJlYWRvbmx5IHRyYWNlPzogc3RyaW5nW107XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ArtifactType = void 0;\n/**\n * Type of cloud artifact.\n */\nvar ArtifactType;\n(function (ArtifactType) {\n /**\n * Stub required because of JSII.\n */\n ArtifactType[\"NONE\"] = \"none\";\n /**\n * The artifact is an AWS CloudFormation stack.\n */\n ArtifactType[\"AWS_CLOUDFORMATION_STACK\"] = \"aws:cloudformation:stack\";\n /**\n * The artifact contains the CDK application's construct tree.\n */\n ArtifactType[\"CDK_TREE\"] = \"cdk:tree\";\n /**\n * Manifest for all assets in the Cloud Assembly\n */\n ArtifactType[\"ASSET_MANIFEST\"] = \"cdk:asset-manifest\";\n /**\n * Nested Cloud Assembly\n */\n ArtifactType[\"NESTED_CLOUD_ASSEMBLY\"] = \"cdk:cloud-assembly\";\n})(ArtifactType || (exports.ArtifactType = ArtifactType = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2NoZW1hLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUlBOztHQUVHO0FBQ0gsSUFBWSxZQXlCWDtBQXpCRCxXQUFZLFlBQVk7SUFDdEI7O09BRUc7SUFDSCw2QkFBYSxDQUFBO0lBRWI7O09BRUc7SUFDSCxxRUFBcUQsQ0FBQTtJQUVyRDs7T0FFRztJQUNILHFDQUFxQixDQUFBO0lBRXJCOztPQUVHO0lBQ0gscURBQXFDLENBQUE7SUFFckM7O09BRUc7SUFDSCw0REFBNEMsQ0FBQTtBQUM5QyxDQUFDLEVBekJXLFlBQVksNEJBQVosWUFBWSxRQXlCdkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBcnRpZmFjdFByb3BlcnRpZXMgfSBmcm9tICcuL2FydGlmYWN0LXNjaGVtYSc7XG5pbXBvcnQgeyBDb250ZXh0UHJvdmlkZXIsIENvbnRleHRRdWVyeVByb3BlcnRpZXMgfSBmcm9tICcuL2NvbnRleHQtcXVlcmllcyc7XG5pbXBvcnQgeyBNZXRhZGF0YUVudHJ5IH0gZnJvbSAnLi9tZXRhZGF0YS1zY2hlbWEnO1xuXG4vKipcbiAqIFR5cGUgb2YgY2xvdWQgYXJ0aWZhY3QuXG4gKi9cbmV4cG9ydCBlbnVtIEFydGlmYWN0VHlwZSB7XG4gIC8qKlxuICAgKiBTdHViIHJlcXVpcmVkIGJlY2F1c2Ugb2YgSlNJSS5cbiAgICovXG4gIE5PTkUgPSAnbm9uZScsIC8vIHJlcXVpcmVkIGR1ZSB0byBhIGpzaWkgYnVnXG5cbiAgLyoqXG4gICAqIFRoZSBhcnRpZmFjdCBpcyBhbiBBV1MgQ2xvdWRGb3JtYXRpb24gc3RhY2suXG4gICAqL1xuICBBV1NfQ0xPVURGT1JNQVRJT05fU1RBQ0sgPSAnYXdzOmNsb3VkZm9ybWF0aW9uOnN0YWNrJyxcblxuICAvKipcbiAgICogVGhlIGFydGlmYWN0IGNvbnRhaW5zIHRoZSBDREsgYXBwbGljYXRpb24ncyBjb25zdHJ1Y3QgdHJlZS5cbiAgICovXG4gIENES19UUkVFID0gJ2Nkazp0cmVlJyxcblxuICAvKipcbiAgICogTWFuaWZlc3QgZm9yIGFsbCBhc3NldHMgaW4gdGhlIENsb3VkIEFzc2VtYmx5XG4gICAqL1xuICBBU1NFVF9NQU5JRkVTVCA9ICdjZGs6YXNzZXQtbWFuaWZlc3QnLFxuXG4gIC8qKlxuICAgKiBOZXN0ZWQgQ2xvdWQgQXNzZW1ibHlcbiAgICovXG4gIE5FU1RFRF9DTE9VRF9BU1NFTUJMWSA9ICdjZGs6Y2xvdWQtYXNzZW1ibHknLFxufVxuXG4vKipcbiAqIEluZm9ybWF0aW9uIGFib3V0IHRoZSBhcHBsaWNhdGlvbidzIHJ1bnRpbWUgY29tcG9uZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBSdW50aW1lSW5mbyB7XG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBsaWJyYXJpZXMgbG9hZGVkIGluIHRoZSBhcHBsaWNhdGlvbiwgYXNzb2NpYXRlZCB3aXRoIHRoZWlyIHZlcnNpb25zLlxuICAgKi9cbiAgcmVhZG9ubHkgbGlicmFyaWVzOiB7IFtuYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgbWlzc2luZyBwaWVjZSBvZiBjb250ZXh0LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1pc3NpbmdDb250ZXh0IHtcbiAgLyoqXG4gICAqIFRoZSBtaXNzaW5nIGNvbnRleHQga2V5LlxuICAgKi9cbiAgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm92aWRlciBmcm9tIHdoaWNoIHdlIGV4cGVjdCB0aGlzIGNvbnRleHQga2V5IHRvIGJlIG9idGFpbmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdmlkZXI6IENvbnRleHRQcm92aWRlcjtcblxuICAvKipcbiAgICogQSBzZXQgb2YgcHJvdmlkZXItc3BlY2lmaWMgb3B0aW9ucy5cbiAgICovXG4gIHJlYWRvbmx5IHByb3BzOiBDb250ZXh0UXVlcnlQcm9wZXJ0aWVzO1xufVxuXG4vKipcbiAqIEEgbWFuaWZlc3QgZm9yIGEgc2luZ2xlIGFydGlmYWN0IHdpdGhpbiB0aGUgY2xvdWQgYXNzZW1ibHkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXJ0aWZhY3RNYW5pZmVzdCB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBhcnRpZmFjdC5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IEFydGlmYWN0VHlwZTtcblxuICAvKipcbiAgICogVGhlIGVudmlyb25tZW50IGludG8gd2hpY2ggdGhpcyBhcnRpZmFjdCBpcyBkZXBsb3llZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBlbnZyaW9ubWVudC5cbiAgICovXG4gIHJlYWRvbmx5IGVudmlyb25tZW50Pzogc3RyaW5nOyAvLyBmb3JtYXQ6IGF3czovL2FjY291bnQvcmVnaW9uXG5cbiAgLyoqXG4gICAqIEFzc29jaWF0ZWQgbWV0YWRhdGEuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbWV0YWRhdGEuXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YT86IHsgW3BhdGg6IHN0cmluZ106IE1ldGFkYXRhRW50cnlbXSB9O1xuXG4gIC8qKlxuICAgKiBJRHMgb2YgYXJ0aWZhY3RzIHRoYXQgbXVzdCBiZSBkZXBsb3llZCBiZWZvcmUgdGhpcyBhcnRpZmFjdC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBkZXBlbmRlbmNpZXMuXG4gICAqL1xuICByZWFkb25seSBkZXBlbmRlbmNpZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIHNldCBvZiBwcm9wZXJ0aWVzIGZvciB0aGlzIGFydGlmYWN0IChkZXBlbmRzIG9uIHR5cGUpXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcHJvcGVydGllcy5cbiAgICovXG4gIHJlYWRvbmx5IHByb3BlcnRpZXM/OiBBcnRpZmFjdFByb3BlcnRpZXM7XG5cbiAgLyoqXG4gICAqIEEgc3RyaW5nIHRoYXQgcmVwcmVzZW50cyB0aGlzIGFydGlmYWN0LiBTaG91bGQgb25seSBiZSB1c2VkIGluIHVzZXIgaW50ZXJmYWNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBkaXNwbGF5IG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGRpc3BsYXlOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgbWFuaWZlc3Qgd2hpY2ggZGVzY3JpYmVzIHRoZSBjbG91ZCBhc3NlbWJseS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBc3NlbWJseU1hbmlmZXN0IHtcbiAgLyoqXG4gICAqIFByb3RvY29sIHZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNldCBvZiBhcnRpZmFjdHMgaW4gdGhpcyBhc3NlbWJseS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhcnRpZmFjdHMuXG4gICAqL1xuICByZWFkb25seSBhcnRpZmFjdHM/OiB7IFtpZDogc3RyaW5nXTogQXJ0aWZhY3RNYW5pZmVzdCB9O1xuXG4gIC8qKlxuICAgKiBNaXNzaW5nIGNvbnRleHQgaW5mb3JtYXRpb24uIElmIHRoaXMgZmllbGQgaGFzIHZhbHVlcywgaXQgbWVhbnMgdGhhdCB0aGVcbiAgICogY2xvdWQgYXNzZW1ibHkgaXMgbm90IGNvbXBsZXRlIGFuZCBzaG91bGQgbm90IGJlIGRlcGxveWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIG1pc3NpbmcgY29udGV4dC5cbiAgICovXG4gIHJlYWRvbmx5IG1pc3Npbmc/OiBNaXNzaW5nQ29udGV4dFtdO1xuXG4gIC8qKlxuICAgKiBSdW50aW1lIGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGluZm8uXG4gICAqL1xuICByZWFkb25seSBydW50aW1lPzogUnVudGltZUluZm87XG59XG4iXX0=","\"use strict\";\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Manifest = exports.VERSION_MISMATCH = void 0;\nconst jsiiDeprecationWarnings = require(\"../.warnings.jsii.js\");\nconst JSII_RTTI_SYMBOL_1 = Symbol.for(\"jsii.rtti\");\nconst fs = require(\"fs\");\nconst jsonschema = require(\"jsonschema\");\nconst semver = require(\"semver\");\nconst assembly = require(\"./cloud-assembly\");\n/* eslint-disable @typescript-eslint/no-var-requires */\n/* eslint-disable @typescript-eslint/no-require-imports */\n// this prefix is used by the CLI to identify this specific error.\n// in which case we want to instruct the user to upgrade his CLI.\n// see exec.ts#createAssembly\nexports.VERSION_MISMATCH = 'Cloud assembly schema version mismatch';\nconst ASSETS_SCHEMA = require('../schema/assets.schema.json');\nconst ASSEMBLY_SCHEMA = require('../schema/cloud-assembly.schema.json');\n/**\n * Version is shared for both manifests\n */\nconst SCHEMA_VERSION = require('../schema/cloud-assembly.version.json').version;\nconst INTEG_SCHEMA = require('../schema/integ.schema.json');\n/**\n * Protocol utility class.\n */\nclass Manifest {\n /**\n * Validates and saves the cloud assembly manifest to file.\n *\n * @param manifest - manifest.\n * @param filePath - output file path.\n */\n static saveAssemblyManifest(manifest, filePath) {\n try {\n jsiiDeprecationWarnings._aws_cdk_cloud_assembly_schema_AssemblyManifest(manifest);\n }\n catch (error) {\n if (process.env.JSII_DEBUG !== \"1\" && error.name === \"DeprecationError\") {\n Error.captureStackTrace(error, this.saveAssemblyManifest);\n }\n throw error;\n }\n Manifest.saveManifest(manifest, filePath, ASSEMBLY_SCHEMA, Manifest.patchStackTagsOnWrite);\n }\n /**\n * Load and validates the cloud assembly manifest from file.\n *\n * @param filePath - path to the manifest file.\n */\n static loadAssemblyManifest(filePath, options) {\n try {\n jsiiDeprecationWarnings._aws_cdk_cloud_assembly_schema_LoadManifestOptions(options);\n }\n catch (error) {\n if (process.env.JSII_DEBUG !== \"1\" && error.name === \"DeprecationError\") {\n Error.captureStackTrace(error, this.loadAssemblyManifest);\n }\n throw error;\n }\n return Manifest.loadManifest(filePath, ASSEMBLY_SCHEMA, Manifest.patchStackTagsOnRead, options);\n }\n /**\n * Validates and saves the asset manifest to file.\n *\n * @param manifest - manifest.\n * @param filePath - output file path.\n */\n static saveAssetManifest(manifest, filePath) {\n try {\n jsiiDeprecationWarnings._aws_cdk_cloud_assembly_schema_AssetManifest(manifest);\n }\n catch (error) {\n if (process.env.JSII_DEBUG !== \"1\" && error.name === \"DeprecationError\") {\n Error.captureStackTrace(error, this.saveAssetManifest);\n }\n throw error;\n }\n Manifest.saveManifest(manifest, filePath, ASSETS_SCHEMA, Manifest.patchStackTagsOnRead);\n }\n /**\n * Load and validates the asset manifest from file.\n *\n * @param filePath - path to the manifest file.\n */\n static loadAssetManifest(filePath) {\n return this.loadManifest(filePath, ASSETS_SCHEMA);\n }\n /**\n * Validates and saves the integ manifest to file.\n *\n * @param manifest - manifest.\n * @param filePath - output file path.\n */\n static saveIntegManifest(manifest, filePath) {\n try {\n jsiiDeprecationWarnings._aws_cdk_cloud_assembly_schema_IntegManifest(manifest);\n }\n catch (error) {\n if (process.env.JSII_DEBUG !== \"1\" && error.name === \"DeprecationError\") {\n Error.captureStackTrace(error, this.saveIntegManifest);\n }\n throw error;\n }\n Manifest.saveManifest(manifest, filePath, INTEG_SCHEMA);\n }\n /**\n * Load and validates the integ manifest from file.\n *\n * @param filePath - path to the manifest file.\n */\n static loadIntegManifest(filePath) {\n return this.loadManifest(filePath, INTEG_SCHEMA);\n }\n /**\n * Fetch the current schema version number.\n */\n static version() {\n return SCHEMA_VERSION;\n }\n /**\n * Deprecated\n * @deprecated use `saveAssemblyManifest()`\n */\n static save(manifest, filePath) { try {\n jsiiDeprecationWarnings.print(\"@aws-cdk/cloud-assembly-schema.Manifest#save\", \"use `saveAssemblyManifest()`\");\n jsiiDeprecationWarnings._aws_cdk_cloud_assembly_schema_AssemblyManifest(manifest);\n }\n catch (error) {\n if (process.env.JSII_DEBUG !== \"1\" && error.name === \"DeprecationError\") {\n Error.captureStackTrace(error, this.save);\n }\n throw error;\n } return this.saveAssemblyManifest(manifest, filePath); }\n /**\n * Deprecated\n * @deprecated use `loadAssemblyManifest()`\n */\n static load(filePath) { try {\n jsiiDeprecationWarnings.print(\"@aws-cdk/cloud-assembly-schema.Manifest#load\", \"use `loadAssemblyManifest()`\");\n }\n catch (error) {\n if (process.env.JSII_DEBUG !== \"1\" && error.name === \"DeprecationError\") {\n Error.captureStackTrace(error, this.load);\n }\n throw error;\n } return this.loadAssemblyManifest(filePath); }\n static validate(manifest, schema, options) {\n function parseVersion(version) {\n const ver = semver.valid(version);\n if (!ver) {\n throw new Error(`Invalid semver string: \"${version}\"`);\n }\n return ver;\n }\n const maxSupported = parseVersion(Manifest.version());\n const actual = parseVersion(manifest.version);\n // first validate the version should be accepted.\n if (semver.gt(actual, maxSupported) && !options?.skipVersionCheck) {\n // we use a well known error prefix so that the CLI can identify this specific error\n // and print some more context to the user.\n throw new Error(`${exports.VERSION_MISMATCH}: Maximum schema version supported is ${maxSupported}, but found ${actual}`);\n }\n // now validate the format is good.\n const validator = new jsonschema.Validator();\n const result = validator.validate(manifest, schema, {\n // does exist but is not in the TypeScript definitions\n nestedErrors: true,\n allowUnknownAttributes: false,\n });\n let errors = result.errors;\n if (options?.skipEnumCheck) {\n // Enum validations aren't useful when\n errors = stripEnumErrors(errors);\n }\n if (errors.length > 0) {\n throw new Error(`Invalid assembly manifest:\\n${errors.map(e => e.stack).join('\\n')}`);\n }\n }\n static saveManifest(manifest, filePath, schema, preprocess) {\n let withVersion = { ...manifest, version: Manifest.version() };\n Manifest.validate(withVersion, schema);\n if (preprocess) {\n withVersion = preprocess(withVersion);\n }\n fs.writeFileSync(filePath, JSON.stringify(withVersion, undefined, 2));\n }\n static loadManifest(filePath, schema, preprocess, options) {\n const contents = fs.readFileSync(filePath, { encoding: 'utf-8' });\n let obj;\n try {\n obj = JSON.parse(contents);\n }\n catch (e) {\n throw new Error(`${e.message}, while parsing ${JSON.stringify(contents)}`);\n }\n if (preprocess) {\n obj = preprocess(obj);\n }\n Manifest.validate(obj, schema, options);\n return obj;\n }\n /**\n * This requires some explaining...\n *\n * We previously used `{ Key, Value }` for the object that represents a stack tag. (Notice the casing)\n * @link https://github.com/aws/aws-cdk/blob/v1.27.0/packages/aws-cdk/lib/api/cxapp/stacks.ts#L427.\n *\n * When that object moved to this package, it had to be JSII compliant, which meant the property\n * names must be `camelCased`, and not `PascalCased`. This meant it no longer matches the structure in the `manifest.json` file.\n * In order to support current manifest files, we have to translate the `PascalCased` representation to the new `camelCased` one.\n *\n * Note that the serialization itself still writes `PascalCased` because it relates to how CloudFormation expects it.\n *\n * Ideally, we would start writing the `camelCased` and translate to how CloudFormation expects it when needed. But this requires nasty\n * backwards-compatibility code and it just doesn't seem to be worth the effort.\n */\n static patchStackTagsOnRead(manifest) {\n return Manifest.replaceStackTags(manifest, tags => tags.map((diskTag) => ({\n key: diskTag.Key,\n value: diskTag.Value,\n })));\n }\n /**\n * See explanation on `patchStackTagsOnRead`\n *\n * Translate stack tags metadata if it has the \"right\" casing.\n */\n static patchStackTagsOnWrite(manifest) {\n return Manifest.replaceStackTags(manifest, tags => tags.map(memTag => \n // Might already be uppercased (because stack synthesis generates it in final form yet)\n ('Key' in memTag ? memTag : { Key: memTag.key, Value: memTag.value })));\n }\n /**\n * Recursively replace stack tags in the stack metadata\n */\n static replaceStackTags(manifest, fn) {\n // Need to add in the `noUndefined`s because otherwise jest snapshot tests are going to freak out\n // about the keys with values that are `undefined` (even though they would never be JSON.stringified)\n return noUndefined({\n ...manifest,\n artifacts: mapValues(manifest.artifacts, artifact => {\n if (artifact.type !== assembly.ArtifactType.AWS_CLOUDFORMATION_STACK) {\n return artifact;\n }\n return noUndefined({\n ...artifact,\n metadata: mapValues(artifact.metadata, metadataEntries => metadataEntries.map(metadataEntry => {\n if (metadataEntry.type !== assembly.ArtifactMetadataEntryType.STACK_TAGS || !metadataEntry.data) {\n return metadataEntry;\n }\n return {\n ...metadataEntry,\n data: fn(metadataEntry.data),\n };\n })),\n });\n }),\n });\n }\n constructor() { }\n}\nexports.Manifest = Manifest;\n_a = JSII_RTTI_SYMBOL_1;\nManifest[_a] = { fqn: \"@aws-cdk/cloud-assembly-schema.Manifest\", version: \"2.140.0\" };\nfunction mapValues(xs, fn) {\n if (!xs) {\n return undefined;\n }\n const ret = {};\n for (const [k, v] of Object.entries(xs)) {\n ret[k] = fn(v);\n }\n return ret;\n}\nfunction noUndefined(xs) {\n const ret = {};\n for (const [k, v] of Object.entries(xs)) {\n if (v !== undefined) {\n ret[k] = v;\n }\n }\n return ret;\n}\nfunction stripEnumErrors(errors) {\n return errors.filter(e => typeof e.schema === 'string' || !('enum' in e.schema));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuaWZlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtYW5pZmVzdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx5QkFBeUI7QUFDekIseUNBQXlDO0FBQ3pDLGlDQUFpQztBQUVqQyw2Q0FBNkM7QUFHN0MsdURBQXVEO0FBQ3ZELDBEQUEwRDtBQUUxRCxrRUFBa0U7QUFDbEUsaUVBQWlFO0FBQ2pFLDZCQUE2QjtBQUNoQixRQUFBLGdCQUFnQixHQUFXLHdDQUF3QyxDQUFDO0FBRWpGLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0FBRTlELE1BQU0sZUFBZSxHQUFHLE9BQU8sQ0FBQyxzQ0FBc0MsQ0FBQyxDQUFDO0FBRXhFOztHQUVHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLHVDQUF1QyxDQUFDLENBQUMsT0FBTyxDQUFDO0FBRWhGLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0FBc0M1RDs7R0FFRztBQUNILE1BQWEsUUFBUTtJQUNuQjs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxRQUFtQyxFQUFFLFFBQWdCOzs7Ozs7Ozs7O1FBQ3RGLFFBQVEsQ0FBQyxZQUFZLENBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsUUFBUSxDQUFDLHFCQUFxQixDQUFDLENBQUM7S0FDNUY7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLG9CQUFvQixDQUFDLFFBQWdCLEVBQUUsT0FBNkI7Ozs7Ozs7Ozs7UUFDaEYsT0FBTyxRQUFRLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxlQUFlLEVBQUUsUUFBUSxDQUFDLG9CQUFvQixFQUFFLE9BQU8sQ0FBQyxDQUFDO0tBQ2pHO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsaUJBQWlCLENBQUMsUUFBOEIsRUFBRSxRQUFnQjs7Ozs7Ozs7OztRQUM5RSxRQUFRLENBQUMsWUFB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LENBQUM7UUFDeEMsSUFBSSxDQUFDLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDcEIsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNiLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDO0FBRUQsU0FBUyxlQUFlLENBQUMsTUFBb0M7SUFDM0QsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxLQUFJLFFBQVEsSUFBSSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQ2xGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBqc29uc2NoZW1hIGZyb20gJ2pzb25zY2hlbWEnO1xuaW1wb3J0ICogYXMgc2VtdmVyIGZyb20gJ3NlbXZlcic7XG5pbXBvcnQgKiBhcyBhc3NldHMgZnJvbSAnLi9hc3NldHMnO1xuaW1wb3J0ICogYXMgYXNzZW1ibHkgZnJvbSAnLi9jbG91ZC1hc3NlbWJseSc7XG5pbXBvcnQgKiBhcyBpbnRlZyBmcm9tICcuL2ludGVnLXRlc3RzJztcblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlcyAqL1xuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0cyAqL1xuXG4vLyB0aGlzIHByZWZpeCBpcyB1c2VkIGJ5IHRoZSBDTEkgdG8gaWRlbnRpZnkgdGhpcyBzcGVjaWZpYyBlcnJvci5cbi8vIGluIHdoaWNoIGNhc2Ugd2Ugd2FudCB0byBpbnN0cnVjdCB0aGUgdXNlciB0byB1cGdyYWRlIGhpcyBDTEkuXG4vLyBzZWUgZXhlYy50cyNjcmVhdGVBc3NlbWJseVxuZXhwb3J0IGNvbnN0IFZFUlNJT05fTUlTTUFUQ0g6IHN0cmluZyA9ICdDbG91ZCBhc3NlbWJseSBzY2hlbWEgdmVyc2lvbiBtaXNtYXRjaCc7XG5cbmNvbnN0IEFTU0VUU19TQ0hFTUEgPSByZXF1aXJlKCcuLi9zY2hlbWEvYXNzZXRzLnNjaGVtYS5qc29uJyk7XG5cbmNvbnN0IEFTU0VNQkxZX1NDSEVNQSA9IHJlcXVpcmUoJy4uL3NjaGVtYS9jbG91ZC1hc3NlbWJseS5zY2hlbWEuanNvbicpO1xuXG4vKipcbiAqIFZlcnNpb24gaXMgc2hhcmVkIGZvciBib3RoIG1hbmlmZXN0c1xuICovXG5jb25zdCBTQ0hFTUFfVkVSU0lPTiA9IHJlcXVpcmUoJy4uL3NjaGVtYS9jbG91ZC1hc3NlbWJseS52ZXJzaW9uLmpzb24nKS52ZXJzaW9uO1xuXG5jb25zdCBJTlRFR19TQ0hFTUEgPSByZXF1aXJlKCcuLi9zY2hlbWEvaW50ZWcuc2NoZW1hLmpzb24nKTtcblxuLyoqXG4gKiBPcHRpb25zIGZvciB0aGUgbG9hZE1hbmlmZXN0IG9wZXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvYWRNYW5pZmVzdE9wdGlvbnMge1xuICAvKipcbiAgICogU2tpcCB0aGUgdmVyc2lvbiBjaGVja1xuICAgKlxuICAgKiBUaGlzIG1lYW5zIHlvdSBtYXkgcmVhZCBhIG5ld2VyIGNsb3VkIGFzc2VtYmx5IHRoYW4gdGhlIENYIEFQSSBpcyBkZXNpZ25lZFxuICAgKiB0byBzdXBwb3J0LCBhbmQgeW91ciBhcHBsaWNhdGlvbiBtYXkgbm90IGJlIGF3YXJlIG9mIGFsbCBmZWF0dXJlcyB0aGF0IGluIHVzZVxuICAgKiBpbiB0aGUgQ2xvdWQgQXNzZW1ibHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBza2lwVmVyc2lvbkNoZWNrPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2tpcCBlbnVtIGNoZWNrc1xuICAgKlxuICAgKiBUaGlzIG1lYW5zIHlvdSBtYXkgcmVhZCBlbnVtIHZhbHVlcyB5b3UgZG9uJ3Qga25vdyBhYm91dCB5ZXQuIE1ha2Ugc3VyZSB0byBhbHdheXNcbiAgICogY2hlY2sgdGhlIHZhbHVlcyBvZiBlbnVtcyB5b3UgZW5jb3VudGVyIGluIHRoZSBtYW5pZmVzdC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNraXBFbnVtQ2hlY2s/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUb3BvbG9naWNhbGx5IHNvcnQgYWxsIGFydGlmYWN0c1xuICAgKlxuICAgKiBUaGlzIHBhcmFtZXRlciBpcyBvbmx5IHJlc3BlY3RlZCBieSB0aGUgY29uc3RydWN0b3Igb2YgYENsb3VkQXNzZW1ibHlgLiBUaGVcbiAgICogcHJvcGVydHkgbGl2ZXMgaGVyZSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29ucy5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgdG9wb1NvcnQ/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFByb3RvY29sIHV0aWxpdHkgY2xhc3MuXG4gKi9cbmV4cG9ydCBjbGFzcyBNYW5pZmVzdCB7XG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgYW5kIHNhdmVzIHRoZSBjbG91ZCBhc3NlbWJseSBtYW5pZmVzdCB0byBmaWxlLlxuICAgKlxuICAgKiBAcGFyYW0gbWFuaWZlc3QgLSBtYW5pZmVzdC5cbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gb3V0cHV0IGZpbGUgcGF0aC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2F2ZUFzc2VtYmx5TWFuaWZlc3QobWFuaWZlc3Q6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QsIGZpbGVQYXRoOiBzdHJpbmcpIHtcbiAgICBNYW5pZmVzdC5zYXZlTWFuaWZlc3QobWFuaWZlc3QsIGZpbGVQYXRoLCBBU1NFTUJMWV9TQ0hFTUEsIE1hbmlmZXN0LnBhdGNoU3RhY2tUYWdzT25Xcml0ZSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBhbmQgdmFsaWRhdGVzIHRoZSBjbG91ZCBhc3NlbWJseSBtYW5pZmVzdCBmcm9tIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIHBhdGggdG8gdGhlIG1hbmlmZXN0IGZpbGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGxvYWRBc3NlbWJseU1hbmlmZXN0KGZpbGVQYXRoOiBzdHJpbmcsIG9wdGlvbnM/OiBMb2FkTWFuaWZlc3RPcHRpb25zKTogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCB7XG4gICAgcmV0dXJuIE1hbmlmZXN0LmxvYWRNYW5pZmVzdChmaWxlUGF0aCwgQVNTRU1CTFlfU0NIRU1BLCBNYW5pZmVzdC5wYXRjaFN0YWNrVGFnc09uUmVhZCwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGVzIGFuZCBzYXZlcyB0aGUgYXNzZXQgbWFuaWZlc3QgdG8gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIG1hbmlmZXN0IC0gbWFuaWZlc3QuXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIG91dHB1dCBmaWxlIHBhdGguXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNhdmVBc3NldE1hbmlmZXN0KG1hbmlmZXN0OiBhc3NldHMuQXNzZXRNYW5pZmVzdCwgZmlsZVBhdGg6IHN0cmluZykge1xuICAgIE1hbmlmZXN0LnNhdmVNYW5pZmVzdChtYW5pZmVzdCwgZmlsZVBhdGgsIEFTU0VUU19TQ0hFTUEsIE1hbmlmZXN0LnBhdGNoU3RhY2tUYWdzT25SZWFkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGFuZCB2YWxpZGF0ZXMgdGhlIGFzc2V0IG1hbmlmZXN0IGZyb20gZmlsZS5cbiAgICpcbiAgICogQHBhcmFtIGZpbGVQYXRoIC0gcGF0aCB0byB0aGUgbWFuaWZlc3QgZmlsZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbG9hZEFzc2V0TWFuaWZlc3QoZmlsZVBhdGg6IHN0cmluZyk6IGFzc2V0cy5Bc3NldE1hbmlmZXN0IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkTWFuaWZlc3QoZmlsZVBhdGgsIEFTU0VUU19TQ0hFTUEpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZhbGlkYXRlcyBhbmQgc2F2ZXMgdGhlIGludGVnIG1hbmlmZXN0IHRvIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBtYW5pZmVzdCAtIG1hbmlmZXN0LlxuICAgKiBAcGFyYW0gZmlsZVBhdGggLSBvdXRwdXQgZmlsZSBwYXRoLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzYXZlSW50ZWdNYW5pZmVzdChtYW5pZmVzdDogaW50ZWcuSW50ZWdNYW5pZmVzdCwgZmlsZVBhdGg6IHN0cmluZykge1xuICAgIE1hbmlmZXN0LnNhdmVNYW5pZmVzdChtYW5pZmVzdCwgZmlsZVBhdGgsIElOVEVHX1NDSEVNQSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBhbmQgdmFsaWRhdGVzIHRoZSBpbnRlZyBtYW5pZmVzdCBmcm9tIGZpbGUuXG4gICAqXG4gICAqIEBwYXJhbSBmaWxlUGF0aCAtIHBhdGggdG8gdGhlIG1hbmlmZXN0IGZpbGUuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGxvYWRJbnRlZ01hbmlmZXN0KGZpbGVQYXRoOiBzdHJpbmcpOiBpbnRlZy5JbnRlZ01hbmlmZXN0IHtcbiAgICByZXR1cm4gdGhpcy5sb2FkTWFuaWZlc3QoZmlsZVBhdGgsIElOVEVHX1NDSEVNQSk7XG4gIH1cblxuICAvKipcbiAgICogRmV0Y2ggdGhlIGN1cnJlbnQgc2NoZW1hIHZlcnNpb24gbnVtYmVyLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB2ZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFNDSEVNQV9WRVJTSU9OO1xuICB9XG5cbiAgLyoqXG4gICAqIERlcHJlY2F0ZWRcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBzYXZlQXNzZW1ibHlNYW5pZmVzdCgpYFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzYXZlKG1hbmlmZXN0OiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0LCBmaWxlUGF0aDogc3RyaW5nKSB7IHJldHVybiB0aGlzLnNhdmVBc3NlbWJseU1hbmlmZXN0KG1hbmlmZXN0LCBmaWxlUGF0aCk7IH1cblxuICAvKipcbiAgICogRGVwcmVjYXRlZFxuICAgKiBAZGVwcmVjYXRlZCB1c2UgYGxvYWRBc3NlbWJseU1hbmlmZXN0KClgXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGxvYWQoZmlsZVBhdGg6IHN0cmluZyk6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QgeyByZXR1cm4gdGhpcy5sb2FkQXNzZW1ibHlNYW5pZmVzdChmaWxlUGF0aCk7IH1cblxuICBwcml2YXRlIHN0YXRpYyB2YWxpZGF0ZShtYW5pZmVzdDogeyB2ZXJzaW9uOiBzdHJpbmcgfSwgc2NoZW1hOiBqc29uc2NoZW1hLlNjaGVtYSwgb3B0aW9ucz86IExvYWRNYW5pZmVzdE9wdGlvbnMpIHtcbiAgICBmdW5jdGlvbiBwYXJzZVZlcnNpb24odmVyc2lvbjogc3RyaW5nKSB7XG4gICAgICBjb25zdCB2ZXIgPSBzZW12ZXIudmFsaWQodmVyc2lvbik7XG4gICAgICBpZiAoIXZlcikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgc2VtdmVyIHN0cmluZzogXCIke3ZlcnNpb259XCJgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2ZXI7XG4gICAgfVxuXG4gICAgY29uc3QgbWF4U3VwcG9ydGVkID0gcGFyc2VWZXJzaW9uKE1hbmlmZXN0LnZlcnNpb24oKSk7XG4gICAgY29uc3QgYWN0dWFsID0gcGFyc2VWZXJzaW9uKG1hbmlmZXN0LnZlcnNpb24pO1xuXG4gICAgLy8gZmlyc3QgdmFsaWRhdGUgdGhlIHZlcnNpb24gc2hvdWxkIGJlIGFjY2VwdGVkLlxuICAgIGlmIChzZW12ZXIuZ3QoYWN0dWFsLCBtYXhTdXBwb3J0ZWQpICYmICFvcHRpb25zPy5za2lwVmVyc2lvbkNoZWNrKSB7XG4gICAgICAvLyB3ZSB1c2UgYSB3ZWxsIGtub3duIGVycm9yIHByZWZpeCBzbyB0aGF0IHRoZSBDTEkgY2FuIGlkZW50aWZ5IHRoaXMgc3BlY2lmaWMgZXJyb3JcbiAgICAgIC8vIGFuZCBwcmludCBzb21lIG1vcmUgY29udGV4dCB0byB0aGUgdXNlci5cbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtWRVJTSU9OX01JU01BVENIfTogTWF4aW11bSBzY2hlbWEgdmVyc2lvbiBzdXBwb3J0ZWQgaXMgJHttYXhTdXBwb3J0ZWR9LCBidXQgZm91bmQgJHthY3R1YWx9YCk7XG4gICAgfVxuXG4gICAgLy8gbm93IHZhbGlkYXRlIHRoZSBmb3JtYXQgaXMgZ29vZC5cbiAgICBjb25zdCB2YWxpZGF0b3IgPSBuZXcganNvbnNjaGVtYS5WYWxpZGF0b3IoKTtcbiAgICBjb25zdCByZXN1bHQgPSB2YWxpZGF0b3IudmFsaWRhdGUobWFuaWZlc3QsIHNjaGVtYSwge1xuXG4gICAgICAvLyBkb2VzIGV4aXN0IGJ1dCBpcyBub3QgaW4gdGhlIFR5cGVTY3JpcHQgZGVmaW5pdGlvbnNcbiAgICAgIG5lc3RlZEVycm9yczogdHJ1ZSxcblxuICAgICAgYWxsb3dVbmtub3duQXR0cmlidXRlczogZmFsc2UsXG5cbiAgICB9IGFzIGFueSk7XG5cbiAgICBsZXQgZXJyb3JzID0gcmVzdWx0LmVycm9ycztcbiAgICBpZiAob3B0aW9ucz8uc2tpcEVudW1DaGVjaykge1xuICAgICAgLy8gRW51bSB2YWxpZGF0aW9ucyBhcmVuJ3QgdXNlZnVsIHdoZW5cbiAgICAgIGVycm9ycyA9IHN0cmlwRW51bUVycm9ycyhlcnJvcnMpO1xuICAgIH1cblxuICAgIGlmIChlcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGFzc2VtYmx5IG1hbmlmZXN0OlxcbiR7ZXJyb3JzLm1hcChlID0+IGUuc3RhY2spLmpvaW4oJ1xcbicpfWApO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHNhdmVNYW5pZmVzdChtYW5pZmVzdDogYW55LCBmaWxlUGF0aDogc3RyaW5nLCBzY2hlbWE6IGpzb25zY2hlbWEuU2NoZW1hLCBwcmVwcm9jZXNzPzogKG9iajogYW55KSA9PiBhbnkpIHtcbiAgICBsZXQgd2l0aFZlcnNpb24gPSB7IC4uLm1hbmlmZXN0LCB2ZXJzaW9uOiBNYW5pZmVzdC52ZXJzaW9uKCkgfTtcbiAgICBNYW5pZmVzdC52YWxpZGF0ZSh3aXRoVmVyc2lvbiwgc2NoZW1hKTtcbiAgICBpZiAocHJlcHJvY2Vzcykge1xuICAgICAgd2l0aFZlcnNpb24gPSBwcmVwcm9jZXNzKHdpdGhWZXJzaW9uKTtcbiAgICB9XG4gICAgZnMud3JpdGVGaWxlU3luYyhmaWxlUGF0aCwgSlNPTi5zdHJpbmdpZnkod2l0aFZlcnNpb24sIHVuZGVmaW5lZCwgMikpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgbG9hZE1hbmlmZXN0KGZpbGVQYXRoOiBzdHJpbmcsIHNjaGVtYToganNvbnNjaGVtYS5TY2hlbWEsIHByZXByb2Nlc3M/OiAob2JqOiBhbnkpID0+IGFueSwgb3B0aW9ucz86IExvYWRNYW5pZmVzdE9wdGlvbnMpIHtcbiAgICBjb25zdCBjb250ZW50cyA9IGZzLnJlYWRGaWxlU3luYyhmaWxlUGF0aCwgeyBlbmNvZGluZzogJ3V0Zi04JyB9KTtcbiAgICBsZXQgb2JqO1xuICAgIHRyeSB7XG4gICAgICBvYmogPSBKU09OLnBhcnNlKGNvbnRlbnRzKTtcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtlLm1lc3NhZ2V9LCB3aGlsZSBwYXJzaW5nICR7SlNPTi5zdHJpbmdpZnkoY29udGVudHMpfWApO1xuICAgIH1cbiAgICBpZiAocHJlcHJvY2Vzcykge1xuICAgICAgb2JqID0gcHJlcHJvY2VzcyhvYmopO1xuICAgIH1cbiAgICBNYW5pZmVzdC52YWxpZGF0ZShvYmosIHNjaGVtYSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIG9iajtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGlzIHJlcXVpcmVzIHNvbWUgZXhwbGFpbmluZy4uLlxuICAgKlxuICAgKiBXZSBwcmV2aW91c2x5IHVzZWQgYHsgS2V5LCBWYWx1ZSB9YCBmb3IgdGhlIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgYSBzdGFjayB0YWcuIChOb3RpY2UgdGhlIGNhc2luZylcbiAgICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjEuMjcuMC9wYWNrYWdlcy9hd3MtY2RrL2xpYi9hcGkvY3hhcHAvc3RhY2tzLnRzI0w0MjcuXG4gICAqXG4gICAqIFdoZW4gdGhhdCBvYmplY3QgbW92ZWQgdG8gdGhpcyBwYWNrYWdlLCBpdCBoYWQgdG8gYmUgSlNJSSBjb21wbGlhbnQsIHdoaWNoIG1lYW50IHRoZSBwcm9wZXJ0eVxuICAgKiBuYW1lcyBtdXN0IGJlIGBjYW1lbENhc2VkYCwgYW5kIG5vdCBgUGFzY2FsQ2FzZWRgLiBUaGlzIG1lYW50IGl0IG5vIGxvbmdlciBtYXRjaGVzIHRoZSBzdHJ1Y3R1cmUgaW4gdGhlIGBtYW5pZmVzdC5qc29uYCBmaWxlLlxuICAgKiBJbiBvcmRlciB0byBzdXBwb3J0IGN1cnJlbnQgbWFuaWZlc3QgZmlsZXMsIHdlIGhhdmUgdG8gdHJhbnNsYXRlIHRoZSBgUGFzY2FsQ2FzZWRgIHJlcHJlc2VudGF0aW9uIHRvIHRoZSBuZXcgYGNhbWVsQ2FzZWRgIG9uZS5cbiAgICpcbiAgICogTm90ZSB0aGF0IHRoZSBzZXJpYWxpemF0aW9uIGl0c2VsZiBzdGlsbCB3cml0ZXMgYFBhc2NhbENhc2VkYCBiZWNhdXNlIGl0IHJlbGF0ZXMgdG8gaG93IENsb3VkRm9ybWF0aW9uIGV4cGVjdHMgaXQuXG4gICAqXG4gICAqIElkZWFsbHksIHdlIHdvdWxkIHN0YXJ0IHdyaXRpbmcgdGhlIGBjYW1lbENhc2VkYCBhbmQgdHJhbnNsYXRlIHRvIGhvdyBDbG91ZEZvcm1hdGlvbiBleHBlY3RzIGl0IHdoZW4gbmVlZGVkLiBCdXQgdGhpcyByZXF1aXJlcyBuYXN0eVxuICAgKiBiYWNrd2FyZHMtY29tcGF0aWJpbGl0eSBjb2RlIGFuZCBpdCBqdXN0IGRvZXNuJ3Qgc2VlbSB0byBiZSB3b3J0aCB0aGUgZWZmb3J0LlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcGF0Y2hTdGFja1RhZ3NPblJlYWQobWFuaWZlc3Q6IGFzc2VtYmx5LkFzc2VtYmx5TWFuaWZlc3QpIHtcbiAgICByZXR1cm4gTWFuaWZlc3QucmVwbGFjZVN0YWNrVGFncyhtYW5pZmVzdCwgdGFncyA9PiB0YWdzLm1hcCgoZGlza1RhZzogYW55KSA9PiAoe1xuICAgICAga2V5OiBkaXNrVGFnLktleSxcbiAgICAgIHZhbHVlOiBkaXNrVGFnLlZhbHVlLFxuICAgIH0pKSk7XG4gIH1cblxuICAvKipcbiAgICogU2VlIGV4cGxhbmF0aW9uIG9uIGBwYXRjaFN0YWNrVGFnc09uUmVhZGBcbiAgICpcbiAgICogVHJhbnNsYXRlIHN0YWNrIHRhZ3MgbWV0YWRhdGEgaWYgaXQgaGFzIHRoZSBcInJpZ2h0XCIgY2FzaW5nLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcGF0Y2hTdGFja1RhZ3NPbldyaXRlKG1hbmlmZXN0OiBhc3NlbWJseS5Bc3NlbWJseU1hbmlmZXN0KSB7XG4gICAgcmV0dXJuIE1hbmlmZXN0LnJlcGxhY2VTdGFja1RhZ3MobWFuaWZlc3QsIHRhZ3MgPT4gdGFncy5tYXAobWVtVGFnID0+XG4gICAgICAvLyBNaWdodCBhbHJlYWR5IGJlIHVwcGVyY2FzZWQgKGJlY2F1c2Ugc3RhY2sgc3ludGhlc2lzIGdlbmVyYXRlcyBpdCBpbiBmaW5hbCBmb3JtIHlldClcbiAgICAgICgnS2V5JyBpbiBtZW1UYWcgPyBtZW1UYWcgOiB7IEtleTogbWVtVGFnLmtleSwgVmFsdWU6IG1lbVRhZy52YWx1ZSB9KSBhcyBhbnksXG4gICAgKSk7XG4gIH1cblxuICAvKipcbiAgICogUmVjdXJzaXZlbHkgcmVwbGFjZSBzdGFjayB0YWdzIGluIHRoZSBzdGFjayBtZXRhZGF0YVxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgcmVwbGFjZVN0YWNrVGFncyhtYW5pZmVzdDogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCwgZm46IEVuZG9mdW5jdG9yPGFzc2VtYmx5LlN0YWNrVGFnc01ldGFkYXRhRW50cnk+KTogYXNzZW1ibHkuQXNzZW1ibHlNYW5pZmVzdCB7XG4gICAgLy8gTmVlZCB0byBhZGQgaW4gdGhlIGBub1VuZGVmaW5lZGBzIGJlY2F1c2Ugb3RoZXJ3aXNlIGplc3Qgc25hcHNob3QgdGVzdHMgYXJlIGdvaW5nIHRvIGZyZWFrIG91dFxuICAgIC8vIGFib3V0IHRoZSBrZXlzIHdpdGggdmFsdWVzIHRoYXQgYXJlIGB1bmRlZmluZWRgIChldmVuIHRob3VnaCB0aGV5IHdvdWxkIG5ldmVyIGJlIEpTT04uc3RyaW5naWZpZWQpXG4gICAgcmV0dXJuIG5vVW5kZWZpbmVkKHtcbiAgICAgIC4uLm1hbmlmZXN0LFxuICAgICAgYXJ0aWZhY3RzOiBtYXBWYWx1ZXMobWFuaWZlc3QuYXJ0aWZhY3RzLCBhcnRpZmFjdCA9PiB7XG4gICAgICAgIGlmIChhcnRpZmFjdC50eXBlICE9PSBhc3NlbWJseS5BcnRpZmFjdFR5cGUuQVdTX0NMT1VERk9STUFUSU9OX1NUQUNLKSB7IHJldHVybiBhcnRpZmFjdDsgfVxuICAgICAgICByZXR1cm4gbm9VbmRlZmluZWQoe1xuICAgICAgICAgIC4uLmFydGlmYWN0LFxuICAgICAgICAgIG1ldGFkYXRhOiBtYXBWYWx1ZXMoYXJ0aWZhY3QubWV0YWRhdGEsIG1ldGFkYXRhRW50cmllcyA9PiBtZXRhZGF0YUVudHJpZXMubWFwKG1ldGFkYXRhRW50cnkgPT4ge1xuICAgICAgICAgICAgaWYgKG1ldGFkYXRhRW50cnkudHlwZSAhPT0gYXNzZW1ibHkuQXJ0aWZhY3RNZXRhZGF0YUVudHJ5VHlwZS5TVEFDS19UQUdTIHx8ICFtZXRhZGF0YUVudHJ5LmRhdGEpIHsgcmV0dXJuIG1ldGFkYXRhRW50cnk7IH1cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLm1ldGFkYXRhRW50cnksXG4gICAgICAgICAgICAgIGRhdGE6IGZuKG1ldGFkYXRhRW50cnkuZGF0YSBhcyBhc3NlbWJseS5TdGFja1RhZ3NNZXRhZGF0YUVudHJ5KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSkpLFxuICAgICAgICB9IGFzIGFzc2VtYmx5LkFydGlmYWN0TWFuaWZlc3QpO1xuICAgICAgfSksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKCkge31cbn1cblxudHlwZSBFbmRvZnVuY3RvcjxBPiA9ICh4OiBBKSA9PiBBO1xuXG5mdW5jdGlvbiBtYXBWYWx1ZXM8QSwgQj4oeHM6IFJlY29yZDxzdHJpbmcsIEE+IHwgdW5kZWZpbmVkLCBmbjogKHg6IEEpID0+IEIpOiBSZWNvcmQ8c3RyaW5nLCBCPiB8IHVuZGVmaW5lZCB7XG4gIGlmICgheHMpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCByZXQ6IFJlY29yZDxzdHJpbmcsIEI+IHwgdW5kZWZpbmVkID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHhzKSkge1xuICAgIHJldFtrXSA9IGZuKHYpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIG5vVW5kZWZpbmVkPEEgZXh0ZW5kcyBvYmplY3Q+KHhzOiBBKTogQSB7XG4gIGNvbnN0IHJldDogYW55ID0ge307XG4gIGZvciAoY29uc3QgW2ssIHZdIG9mIE9iamVjdC5lbnRyaWVzKHhzKSkge1xuICAgIGlmICh2ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldFtrXSA9IHY7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIHN0cmlwRW51bUVycm9ycyhlcnJvcnM6IGpzb25zY2hlbWEuVmFsaWRhdGlvbkVycm9yW10pIHtcbiAgcmV0dXJuIGVycm9ycy5maWx0ZXIoZSA9PiB0eXBlb2YgZS5zY2hlbWEgPT09J3N0cmluZycgfHwgISgnZW51bScgaW4gZS5zY2hlbWEpKTtcbn1cbiJdfQ==","'use strict';\n\nvar helpers = require('./helpers');\n\n/** @type ValidatorResult */\nvar ValidatorResult = helpers.ValidatorResult;\n/** @type SchemaError */\nvar SchemaError = helpers.SchemaError;\n\nvar attribute = {};\n\nattribute.ignoreProperties = {\n // informative properties\n 'id': true,\n 'default': true,\n 'description': true,\n 'title': true,\n // arguments to other properties\n 'additionalItems': true,\n 'then': true,\n 'else': true,\n // special-handled properties\n '$schema': true,\n '$ref': true,\n 'extends': true,\n};\n\n/**\n * @name validators\n */\nvar validators = attribute.validators = {};\n\n/**\n * Validates whether the instance if of a certain type\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {ValidatorResult|null}\n */\nvalidators.type = function validateType (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var types = Array.isArray(schema.type) ? schema.type : [schema.type];\n if (!types.some(this.testType.bind(this, instance, schema, options, ctx))) {\n var list = types.map(function (v) {\n if(!v) return;\n var id = v.$id || v.id;\n return id ? ('<' + id + '>') : (v+'');\n });\n result.addError({\n name: 'type',\n argument: list,\n message: \"is not of a type(s) \" + list,\n });\n }\n return result;\n};\n\nfunction testSchemaNoThrow(instance, options, ctx, callback, schema){\n var throwError = options.throwError;\n var throwAll = options.throwAll;\n options.throwError = false;\n options.throwAll = false;\n var res = this.validateSchema(instance, schema, options, ctx);\n options.throwError = throwError;\n options.throwAll = throwAll;\n\n if (!res.valid && callback instanceof Function) {\n callback(res);\n }\n return res.valid;\n}\n\n/**\n * Validates whether the instance matches some of the given schemas\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {ValidatorResult|null}\n */\nvalidators.anyOf = function validateAnyOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var inner = new ValidatorResult(instance, schema, options, ctx);\n if (!Array.isArray(schema.anyOf)){\n throw new SchemaError(\"anyOf must be an array\");\n }\n if (!schema.anyOf.some(\n testSchemaNoThrow.bind(\n this, instance, options, ctx, function(res){inner.importErrors(res);}\n ))) {\n var list = schema.anyOf.map(function (v, i) {\n var id = v.$id || v.id;\n if(id) return '<' + id + '>';\n return(v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n });\n if (options.nestedErrors) {\n result.importErrors(inner);\n }\n result.addError({\n name: 'anyOf',\n argument: list,\n message: \"is not any of \" + list.join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance matches every given schema\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.allOf = function validateAllOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n if (!Array.isArray(schema.allOf)){\n throw new SchemaError(\"allOf must be an array\");\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var self = this;\n schema.allOf.forEach(function(v, i){\n var valid = self.validateSchema(instance, v, options, ctx);\n if(!valid.valid){\n var id = v.$id || v.id;\n var msg = id || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n result.addError({\n name: 'allOf',\n argument: { id: msg, length: valid.errors.length, valid: valid },\n message: 'does not match allOf schema ' + msg + ' with ' + valid.errors.length + ' error[s]:',\n });\n result.importErrors(valid);\n }\n });\n return result;\n};\n\n/**\n * Validates whether the instance matches exactly one of the given schemas\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.oneOf = function validateOneOf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) {\n return null;\n }\n if (!Array.isArray(schema.oneOf)){\n throw new SchemaError(\"oneOf must be an array\");\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n var inner = new ValidatorResult(instance, schema, options, ctx);\n var count = schema.oneOf.filter(\n testSchemaNoThrow.bind(\n this, instance, options, ctx, function(res) {inner.importErrors(res);}\n ) ).length;\n var list = schema.oneOf.map(function (v, i) {\n var id = v.$id || v.id;\n return id || (v.title && JSON.stringify(v.title)) || (v['$ref'] && ('<' + v['$ref'] + '>')) || '[subschema '+i+']';\n });\n if (count!==1) {\n if (options.nestedErrors) {\n result.importErrors(inner);\n }\n result.addError({\n name: 'oneOf',\n argument: list,\n message: \"is not exactly one from \" + list.join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates \"then\" or \"else\" depending on the result of validating \"if\"\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null}\n */\nvalidators.if = function validateIf (instance, schema, options, ctx) {\n // Ignore undefined instances\n if (instance === undefined) return null;\n if (!helpers.isSchema(schema.if)) throw new Error('Expected \"if\" keyword to be a schema');\n var ifValid = testSchemaNoThrow.call(this, instance, options, ctx, null, schema.if);\n var result = new ValidatorResult(instance, schema, options, ctx);\n var res;\n if(ifValid){\n if (schema.then === undefined) return;\n if (!helpers.isSchema(schema.then)) throw new Error('Expected \"then\" keyword to be a schema');\n res = this.validateSchema(instance, schema.then, options, ctx.makeChild(schema.then));\n result.importErrors(res);\n }else{\n if (schema.else === undefined) return;\n if (!helpers.isSchema(schema.else)) throw new Error('Expected \"else\" keyword to be a schema');\n res = this.validateSchema(instance, schema.else, options, ctx.makeChild(schema.else));\n result.importErrors(res);\n }\n return result;\n};\n\nfunction getEnumerableProperty(object, key){\n // Determine if `key` shows up in `for(var key in object)`\n // First test Object.hasOwnProperty.call as an optimization: that guarantees it does\n if(Object.hasOwnProperty.call(object, key)) return object[key];\n // Test `key in object` as an optimization; false means it won't\n if(!(key in object)) return;\n while( (object = Object.getPrototypeOf(object)) ){\n if(Object.propertyIsEnumerable.call(object, key)) return object[key];\n }\n}\n\n/**\n * Validates propertyNames\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.propertyNames = function validatePropertyNames (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var subschema = schema.propertyNames!==undefined ? schema.propertyNames : {};\n if(!helpers.isSchema(subschema)) throw new SchemaError('Expected \"propertyNames\" to be a schema (object or boolean)');\n\n for (var property in instance) {\n if(getEnumerableProperty(instance, property) !== undefined){\n var res = this.validateSchema(property, subschema, options, ctx.makeChild(subschema));\n result.importErrors(res);\n }\n }\n\n return result;\n};\n\n/**\n * Validates properties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.properties = function validateProperties (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var properties = schema.properties || {};\n for (var property in properties) {\n var subschema = properties[property];\n if(subschema===undefined){\n continue;\n }else if(subschema===null){\n throw new SchemaError('Unexpected null, expected schema in \"properties\"');\n }\n if (typeof options.preValidateProperty == 'function') {\n options.preValidateProperty(instance, property, subschema, options, ctx);\n }\n var prop = getEnumerableProperty(instance, property);\n var res = this.validateSchema(prop, subschema, options, ctx.makeChild(subschema, property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n return result;\n};\n\n/**\n * Test a specific property within in instance against the additionalProperties schema attribute\n * This ignores properties with definitions in the properties schema attribute, but no other attributes.\n * If too many more types of property-existence tests pop up they may need their own class of tests (like `type` has)\n * @private\n * @return {boolean}\n */\nfunction testAdditionalProperty (instance, schema, options, ctx, property, result) {\n if(!this.types.object(instance)) return;\n if (schema.properties && schema.properties[property] !== undefined) {\n return;\n }\n if (schema.additionalProperties === false) {\n result.addError({\n name: 'additionalProperties',\n argument: property,\n message: \"is not allowed to have the additional property \" + JSON.stringify(property),\n });\n } else {\n var additionalProperties = schema.additionalProperties || {};\n\n if (typeof options.preValidateProperty == 'function') {\n options.preValidateProperty(instance, property, additionalProperties, options, ctx);\n }\n\n var res = this.validateSchema(instance[property], additionalProperties, options, ctx.makeChild(additionalProperties, property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n}\n\n/**\n * Validates patternProperties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.patternProperties = function validatePatternProperties (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var patternProperties = schema.patternProperties || {};\n\n for (var property in instance) {\n var test = true;\n for (var pattern in patternProperties) {\n var subschema = patternProperties[pattern];\n if(subschema===undefined){\n continue;\n }else if(subschema===null){\n throw new SchemaError('Unexpected null, expected schema in \"patternProperties\"');\n }\n try {\n var regexp = new RegExp(pattern, 'u');\n } catch(_e) {\n // In the event the stricter handling causes an error, fall back on the forgiving handling\n // DEPRECATED\n regexp = new RegExp(pattern);\n }\n if (!regexp.test(property)) {\n continue;\n }\n test = false;\n\n if (typeof options.preValidateProperty == 'function') {\n options.preValidateProperty(instance, property, subschema, options, ctx);\n }\n\n var res = this.validateSchema(instance[property], subschema, options, ctx.makeChild(subschema, property));\n if(res.instance !== result.instance[property]) result.instance[property] = res.instance;\n result.importErrors(res);\n }\n if (test) {\n testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n }\n }\n\n return result;\n};\n\n/**\n * Validates additionalProperties\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.additionalProperties = function validateAdditionalProperties (instance, schema, options, ctx) {\n if(!this.types.object(instance)) return;\n // if patternProperties is defined then we'll test when that one is called instead\n if (schema.patternProperties) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n for (var property in instance) {\n testAdditionalProperty.call(this, instance, schema, options, ctx, property, result);\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minProperties = function validateMinProperties (instance, schema, options, ctx) {\n if (!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var keys = Object.keys(instance);\n if (!(keys.length >= schema.minProperties)) {\n result.addError({\n name: 'minProperties',\n argument: schema.minProperties,\n message: \"does not meet minimum property length of \" + schema.minProperties,\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxProperties = function validateMaxProperties (instance, schema, options, ctx) {\n if (!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var keys = Object.keys(instance);\n if (!(keys.length <= schema.maxProperties)) {\n result.addError({\n name: 'maxProperties',\n argument: schema.maxProperties,\n message: \"does not meet maximum property length of \" + schema.maxProperties,\n });\n }\n return result;\n};\n\n/**\n * Validates items when instance is an array\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.items = function validateItems (instance, schema, options, ctx) {\n var self = this;\n if (!this.types.array(instance)) return;\n if (schema.items===undefined) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n instance.every(function (value, i) {\n if(Array.isArray(schema.items)){\n var items = schema.items[i]===undefined ? schema.additionalItems : schema.items[i];\n }else{\n var items = schema.items;\n }\n if (items === undefined) {\n return true;\n }\n if (items === false) {\n result.addError({\n name: 'items',\n message: \"additionalItems not permitted\",\n });\n return false;\n }\n var res = self.validateSchema(value, items, options, ctx.makeChild(items, i));\n if(res.instance !== result.instance[i]) result.instance[i] = res.instance;\n result.importErrors(res);\n return true;\n });\n return result;\n};\n\n/**\n * Validates the \"contains\" keyword\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {String|null|ValidatorResult}\n */\nvalidators.contains = function validateContains (instance, schema, options, ctx) {\n var self = this;\n if (!this.types.array(instance)) return;\n if (schema.contains===undefined) return;\n if (!helpers.isSchema(schema.contains)) throw new Error('Expected \"contains\" keyword to be a schema');\n var result = new ValidatorResult(instance, schema, options, ctx);\n var count = instance.some(function (value, i) {\n var res = self.validateSchema(value, schema.contains, options, ctx.makeChild(schema.contains, i));\n return res.errors.length===0;\n });\n if(count===false){\n result.addError({\n name: 'contains',\n argument: schema.contains,\n message: \"must contain an item matching given schema\",\n });\n }\n return result;\n};\n\n/**\n * Validates minimum and exclusiveMinimum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minimum = function validateMinimum (instance, schema, options, ctx) {\n if (!this.types.number(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (schema.exclusiveMinimum && schema.exclusiveMinimum === true) {\n if(!(instance > schema.minimum)){\n result.addError({\n name: 'minimum',\n argument: schema.minimum,\n message: \"must be greater than \" + schema.minimum,\n });\n }\n } else {\n if(!(instance >= schema.minimum)){\n result.addError({\n name: 'minimum',\n argument: schema.minimum,\n message: \"must be greater than or equal to \" + schema.minimum,\n });\n }\n }\n return result;\n};\n\n/**\n * Validates maximum and exclusiveMaximum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maximum = function validateMaximum (instance, schema, options, ctx) {\n if (!this.types.number(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (schema.exclusiveMaximum && schema.exclusiveMaximum === true) {\n if(!(instance < schema.maximum)){\n result.addError({\n name: 'maximum',\n argument: schema.maximum,\n message: \"must be less than \" + schema.maximum,\n });\n }\n } else {\n if(!(instance <= schema.maximum)){\n result.addError({\n name: 'maximum',\n argument: schema.maximum,\n message: \"must be less than or equal to \" + schema.maximum,\n });\n }\n }\n return result;\n};\n\n/**\n * Validates the number form of exclusiveMinimum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.exclusiveMinimum = function validateExclusiveMinimum (instance, schema, options, ctx) {\n // Support the boolean form of exclusiveMinimum, which is handled by the \"minimum\" keyword.\n if(typeof schema.exclusiveMinimum === 'boolean') return;\n if (!this.types.number(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var valid = instance > schema.exclusiveMinimum;\n if (!valid) {\n result.addError({\n name: 'exclusiveMinimum',\n argument: schema.exclusiveMinimum,\n message: \"must be strictly greater than \" + schema.exclusiveMinimum,\n });\n }\n return result;\n};\n\n/**\n * Validates the number form of exclusiveMaximum when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.exclusiveMaximum = function validateExclusiveMaximum (instance, schema, options, ctx) {\n // Support the boolean form of exclusiveMaximum, which is handled by the \"maximum\" keyword.\n if(typeof schema.exclusiveMaximum === 'boolean') return;\n if (!this.types.number(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var valid = instance < schema.exclusiveMaximum;\n if (!valid) {\n result.addError({\n name: 'exclusiveMaximum',\n argument: schema.exclusiveMaximum,\n message: \"must be strictly less than \" + schema.exclusiveMaximum,\n });\n }\n return result;\n};\n\n/**\n * Perform validation for multipleOf and divisibleBy, which are essentially the same.\n * @param instance\n * @param schema\n * @param validationType\n * @param errorMessage\n * @returns {String|null}\n */\nvar validateMultipleOfOrDivisbleBy = function validateMultipleOfOrDivisbleBy (instance, schema, options, ctx, validationType, errorMessage) {\n if (!this.types.number(instance)) return;\n\n var validationArgument = schema[validationType];\n if (validationArgument == 0) {\n throw new SchemaError(validationType + \" cannot be zero\");\n }\n\n var result = new ValidatorResult(instance, schema, options, ctx);\n\n var instanceDecimals = helpers.getDecimalPlaces(instance);\n var divisorDecimals = helpers.getDecimalPlaces(validationArgument);\n\n var maxDecimals = Math.max(instanceDecimals , divisorDecimals);\n var multiplier = Math.pow(10, maxDecimals);\n\n if (Math.round(instance * multiplier) % Math.round(validationArgument * multiplier) !== 0) {\n result.addError({\n name: validationType,\n argument: validationArgument,\n message: errorMessage + JSON.stringify(validationArgument),\n });\n }\n\n return result;\n};\n\n/**\n * Validates divisibleBy when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.multipleOf = function validateMultipleOf (instance, schema, options, ctx) {\n return validateMultipleOfOrDivisbleBy.call(this, instance, schema, options, ctx, \"multipleOf\", \"is not a multiple of (divisible by) \");\n};\n\n/**\n * Validates multipleOf when the type of the instance value is a number.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.divisibleBy = function validateDivisibleBy (instance, schema, options, ctx) {\n return validateMultipleOfOrDivisbleBy.call(this, instance, schema, options, ctx, \"divisibleBy\", \"is not divisible by (multiple of) \");\n};\n\n/**\n * Validates whether the instance value is present.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.required = function validateRequired (instance, schema, options, ctx) {\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (instance === undefined && schema.required === true) {\n // A boolean form is implemented for reverse-compatibility with schemas written against older drafts\n result.addError({\n name: 'required',\n message: \"is required\",\n });\n } else if (this.types.object(instance) && Array.isArray(schema.required)) {\n schema.required.forEach(function(n){\n if(getEnumerableProperty(instance, n)===undefined){\n result.addError({\n name: 'required',\n argument: n,\n message: \"requires property \" + JSON.stringify(n),\n });\n }\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value matches the regular expression, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.pattern = function validatePattern (instance, schema, options, ctx) {\n if (!this.types.string(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var pattern = schema.pattern;\n try {\n var regexp = new RegExp(pattern, 'u');\n } catch(_e) {\n // In the event the stricter handling causes an error, fall back on the forgiving handling\n // DEPRECATED\n regexp = new RegExp(pattern);\n }\n if (!instance.match(regexp)) {\n result.addError({\n name: 'pattern',\n argument: schema.pattern,\n message: \"does not match pattern \" + JSON.stringify(schema.pattern.toString()),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is of a certain defined format or a custom\n * format.\n * The following formats are supported for string types:\n * - date-time\n * - date\n * - time\n * - ip-address\n * - ipv6\n * - uri\n * - color\n * - host-name\n * - alpha\n * - alpha-numeric\n * - utc-millisec\n * @param instance\n * @param schema\n * @param [options]\n * @param [ctx]\n * @return {String|null}\n */\nvalidators.format = function validateFormat (instance, schema, options, ctx) {\n if (instance===undefined) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!result.disableFormat && !helpers.isFormat(instance, schema.format, this)) {\n result.addError({\n name: 'format',\n argument: schema.format,\n message: \"does not conform to the \" + JSON.stringify(schema.format) + \" format\",\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at least of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minLength = function validateMinLength (instance, schema, options, ctx) {\n if (!this.types.string(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var hsp = instance.match(/[\\uDC00-\\uDFFF]/g);\n var length = instance.length - (hsp ? hsp.length : 0);\n if (!(length >= schema.minLength)) {\n result.addError({\n name: 'minLength',\n argument: schema.minLength,\n message: \"does not meet minimum length of \" + schema.minLength,\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is at most of a certain length, when the instance value is a string.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxLength = function validateMaxLength (instance, schema, options, ctx) {\n if (!this.types.string(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n // TODO if this was already computed in \"minLength\", use that value instead of re-computing\n var hsp = instance.match(/[\\uDC00-\\uDFFF]/g);\n var length = instance.length - (hsp ? hsp.length : 0);\n if (!(length <= schema.maxLength)) {\n result.addError({\n name: 'maxLength',\n argument: schema.maxLength,\n message: \"does not meet maximum length of \" + schema.maxLength,\n });\n }\n return result;\n};\n\n/**\n * Validates whether instance contains at least a minimum number of items, when the instance is an Array.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.minItems = function validateMinItems (instance, schema, options, ctx) {\n if (!this.types.array(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length >= schema.minItems)) {\n result.addError({\n name: 'minItems',\n argument: schema.minItems,\n message: \"does not meet minimum length of \" + schema.minItems,\n });\n }\n return result;\n};\n\n/**\n * Validates whether instance contains no more than a maximum number of items, when the instance is an Array.\n * @param instance\n * @param schema\n * @return {String|null}\n */\nvalidators.maxItems = function validateMaxItems (instance, schema, options, ctx) {\n if (!this.types.array(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!(instance.length <= schema.maxItems)) {\n result.addError({\n name: 'maxItems',\n argument: schema.maxItems,\n message: \"does not meet maximum length of \" + schema.maxItems,\n });\n }\n return result;\n};\n\n/**\n * Deep compares arrays for duplicates\n * @param v\n * @param i\n * @param a\n * @private\n * @return {boolean}\n */\nfunction testArrays (v, i, a) {\n var j, len = a.length;\n for (j = i + 1, len; j < len; j++) {\n if (helpers.deepCompareStrict(v, a[j])) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Validates whether there are no duplicates, when the instance is an Array.\n * @param instance\n * @return {String|null}\n */\nvalidators.uniqueItems = function validateUniqueItems (instance, schema, options, ctx) {\n if (schema.uniqueItems!==true) return;\n if (!this.types.array(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!instance.every(testArrays)) {\n result.addError({\n name: 'uniqueItems',\n message: \"contains duplicate item\",\n });\n }\n return result;\n};\n\n/**\n * Validate for the presence of dependency properties, if the instance is an object.\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {null|ValidatorResult}\n */\nvalidators.dependencies = function validateDependencies (instance, schema, options, ctx) {\n if (!this.types.object(instance)) return;\n var result = new ValidatorResult(instance, schema, options, ctx);\n for (var property in schema.dependencies) {\n if (instance[property] === undefined) {\n continue;\n }\n var dep = schema.dependencies[property];\n var childContext = ctx.makeChild(dep, property);\n if (typeof dep == 'string') {\n dep = [dep];\n }\n if (Array.isArray(dep)) {\n dep.forEach(function (prop) {\n if (instance[prop] === undefined) {\n result.addError({\n // FIXME there's two different \"dependencies\" errors here with slightly different outputs\n // Can we make these the same? Or should we create different error types?\n name: 'dependencies',\n argument: childContext.propertyPath,\n message: \"property \" + prop + \" not found, required by \" + childContext.propertyPath,\n });\n }\n });\n } else {\n var res = this.validateSchema(instance, dep, options, childContext);\n if(result.instance !== res.instance) result.instance = res.instance;\n if (res && res.errors.length) {\n result.addError({\n name: 'dependencies',\n argument: childContext.propertyPath,\n message: \"does not meet dependency required by \" + childContext.propertyPath,\n });\n result.importErrors(res);\n }\n }\n }\n return result;\n};\n\n/**\n * Validates whether the instance value is one of the enumerated values.\n *\n * @param instance\n * @param schema\n * @return {ValidatorResult|null}\n */\nvalidators['enum'] = function validateEnum (instance, schema, options, ctx) {\n if (instance === undefined) {\n return null;\n }\n if (!Array.isArray(schema['enum'])) {\n throw new SchemaError(\"enum expects an array\", schema);\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!schema['enum'].some(helpers.deepCompareStrict.bind(null, instance))) {\n result.addError({\n name: 'enum',\n argument: schema['enum'],\n message: \"is not one of enum values: \" + schema['enum'].map(String).join(','),\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance exactly matches a given value\n *\n * @param instance\n * @param schema\n * @return {ValidatorResult|null}\n */\nvalidators['const'] = function validateEnum (instance, schema, options, ctx) {\n if (instance === undefined) {\n return null;\n }\n var result = new ValidatorResult(instance, schema, options, ctx);\n if (!helpers.deepCompareStrict(schema['const'], instance)) {\n result.addError({\n name: 'const',\n argument: schema['const'],\n message: \"does not exactly match expected constant: \" + schema['const'],\n });\n }\n return result;\n};\n\n/**\n * Validates whether the instance if of a prohibited type.\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @return {null|ValidatorResult}\n */\nvalidators.not = validators.disallow = function validateNot (instance, schema, options, ctx) {\n var self = this;\n if(instance===undefined) return null;\n var result = new ValidatorResult(instance, schema, options, ctx);\n var notTypes = schema.not || schema.disallow;\n if(!notTypes) return null;\n if(!Array.isArray(notTypes)) notTypes=[notTypes];\n notTypes.forEach(function (type) {\n if (self.testType(instance, schema, options, ctx, type)) {\n var id = type && (type.$id || type.id);\n var schemaId = id || type;\n result.addError({\n name: 'not',\n argument: schemaId,\n message: \"is of prohibited type \" + schemaId,\n });\n }\n });\n return result;\n};\n\nmodule.exports = attribute;\n","'use strict';\n\nvar uri = require('url');\n\nvar ValidationError = exports.ValidationError = function ValidationError (message, instance, schema, path, name, argument) {\n if(Array.isArray(path)){\n this.path = path;\n this.property = path.reduce(function(sum, item){\n return sum + makeSuffix(item);\n }, 'instance');\n }else if(path !== undefined){\n this.property = path;\n }\n if (message) {\n this.message = message;\n }\n if (schema) {\n var id = schema.$id || schema.id;\n this.schema = id || schema;\n }\n if (instance !== undefined) {\n this.instance = instance;\n }\n this.name = name;\n this.argument = argument;\n this.stack = this.toString();\n};\n\nValidationError.prototype.toString = function toString() {\n return this.property + ' ' + this.message;\n};\n\nvar ValidatorResult = exports.ValidatorResult = function ValidatorResult(instance, schema, options, ctx) {\n this.instance = instance;\n this.schema = schema;\n this.options = options;\n this.path = ctx.path;\n this.propertyPath = ctx.propertyPath;\n this.errors = [];\n this.throwError = options && options.throwError;\n this.throwFirst = options && options.throwFirst;\n this.throwAll = options && options.throwAll;\n this.disableFormat = options && options.disableFormat === true;\n};\n\nValidatorResult.prototype.addError = function addError(detail) {\n var err;\n if (typeof detail == 'string') {\n err = new ValidationError(detail, this.instance, this.schema, this.path);\n } else {\n if (!detail) throw new Error('Missing error detail');\n if (!detail.message) throw new Error('Missing error message');\n if (!detail.name) throw new Error('Missing validator type');\n err = new ValidationError(detail.message, this.instance, this.schema, this.path, detail.name, detail.argument);\n }\n\n this.errors.push(err);\n if (this.throwFirst) {\n throw new ValidatorResultError(this);\n }else if(this.throwError){\n throw err;\n }\n return err;\n};\n\nValidatorResult.prototype.importErrors = function importErrors(res) {\n if (typeof res == 'string' || (res && res.validatorType)) {\n this.addError(res);\n } else if (res && res.errors) {\n this.errors = this.errors.concat(res.errors);\n }\n};\n\nfunction stringizer (v,i){\n return i+': '+v.toString()+'\\n';\n}\nValidatorResult.prototype.toString = function toString(res) {\n return this.errors.map(stringizer).join('');\n};\n\nObject.defineProperty(ValidatorResult.prototype, \"valid\", { get: function() {\n return !this.errors.length;\n} });\n\nmodule.exports.ValidatorResultError = ValidatorResultError;\nfunction ValidatorResultError(result) {\n if(Error.captureStackTrace){\n Error.captureStackTrace(this, ValidatorResultError);\n }\n this.instance = result.instance;\n this.schema = result.schema;\n this.options = result.options;\n this.errors = result.errors;\n}\nValidatorResultError.prototype = new Error();\nValidatorResultError.prototype.constructor = ValidatorResultError;\nValidatorResultError.prototype.name = \"Validation Error\";\n\n/**\n * Describes a problem with a Schema which prevents validation of an instance\n * @name SchemaError\n * @constructor\n */\nvar SchemaError = exports.SchemaError = function SchemaError (msg, schema) {\n this.message = msg;\n this.schema = schema;\n Error.call(this, msg);\n Error.captureStackTrace(this, SchemaError);\n};\nSchemaError.prototype = Object.create(Error.prototype,\n {\n constructor: {value: SchemaError, enumerable: false},\n name: {value: 'SchemaError', enumerable: false},\n });\n\nvar SchemaContext = exports.SchemaContext = function SchemaContext (schema, options, path, base, schemas) {\n this.schema = schema;\n this.options = options;\n if(Array.isArray(path)){\n this.path = path;\n this.propertyPath = path.reduce(function(sum, item){\n return sum + makeSuffix(item);\n }, 'instance');\n }else{\n this.propertyPath = path;\n }\n this.base = base;\n this.schemas = schemas;\n};\n\nSchemaContext.prototype.resolve = function resolve (target) {\n return uri.resolve(this.base, target);\n};\n\nSchemaContext.prototype.makeChild = function makeChild(schema, propertyName){\n var path = (propertyName===undefined) ? this.path : this.path.concat([propertyName]);\n var id = schema.$id || schema.id;\n var base = uri.resolve(this.base, id||'');\n var ctx = new SchemaContext(schema, this.options, path, base, Object.create(this.schemas));\n if(id && !ctx.schemas[base]){\n ctx.schemas[base] = schema;\n }\n return ctx;\n};\n\nvar FORMAT_REGEXPS = exports.FORMAT_REGEXPS = {\n // 7.3.1. Dates, Times, and Duration\n 'date-time': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])[tT ](2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])(\\.\\d+)?([zZ]|[+-]([0-5][0-9]):(60|[0-5][0-9]))$/,\n 'date': /^\\d{4}-(?:0[0-9]{1}|1[0-2]{1})-(3[01]|0[1-9]|[12][0-9])$/,\n 'time': /^(2[0-4]|[01][0-9]):([0-5][0-9]):(60|[0-5][0-9])$/,\n 'duration': /P(T\\d+(H(\\d+M(\\d+S)?)?|M(\\d+S)?|S)|\\d+(D|M(\\d+D)?|Y(\\d+M(\\d+D)?)?)(T\\d+(H(\\d+M(\\d+S)?)?|M(\\d+S)?|S))?|\\d+W)/i,\n\n // 7.3.2. Email Addresses\n // TODO: fix the email production\n 'email': /^(?:[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+\\.)*[\\w\\!\\#\\$\\%\\&\\'\\*\\+\\-\\/\\=\\?\\^\\`\\{\\|\\}\\~]+@(?:(?:(?:[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!\\.)){0,61}[a-zA-Z0-9]?\\.)+[a-zA-Z0-9](?:[a-zA-Z0-9\\-](?!$)){0,61}[a-zA-Z0-9]?)|(?:\\[(?:(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.){3}(?:[01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\]))$/,\n 'idn-email': /^(\"(?:[!#-\\[\\]-\\u{10FFFF}]|\\\\[\\t -\\u{10FFFF}])*\"|[!#-'*+\\-/-9=?A-Z\\^-\\u{10FFFF}](?:\\.?[!#-'*+\\-/-9=?A-Z\\^-\\u{10FFFF}])*)@([!#-'*+\\-/-9=?A-Z\\^-\\u{10FFFF}](?:\\.?[!#-'*+\\-/-9=?A-Z\\^-\\u{10FFFF}])*|\\[[!-Z\\^-\\u{10FFFF}]*\\])$/u,\n\n // 7.3.3. Hostnames\n\n // 7.3.4. IP Addresses\n 'ip-address': /^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/,\n // FIXME whitespace is invalid\n 'ipv6': /^\\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)(\\.(25[0-5]|2[0-4]\\d|1\\d\\d|[1-9]?\\d)){3}))|:)))(%.+)?\\s*$/,\n\n // 7.3.5. Resource Identifiers\n // TODO: A more accurate regular expression for \"uri\" goes:\n // [A-Za-z][+\\-.0-9A-Za-z]*:((/(/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?)?)?#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|(/(/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~])|/?%[0-9A-Fa-f]{2}|[!$&-.0-;=?-Z_a-z~])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*(#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*)?|/(/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+(:\\d*)?|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?:\\d*|\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)?)?\n 'uri': /^[a-zA-Z][a-zA-Z0-9+.-]*:[^\\s]*$/,\n 'uri-reference': /^(((([A-Za-z][+\\-.0-9A-Za-z]*(:%[0-9A-Fa-f]{2}|:[!$&-.0-;=?-Z_a-z~]|[/?])|\\?)(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|([A-Za-z][+\\-.0-9A-Za-z]*:?)?)|([A-Za-z][+\\-.0-9A-Za-z]*:)?\\/((%[0-9A-Fa-f]{2}|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|(\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?)?))#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|(([A-Za-z][+\\-.0-9A-Za-z]*)?%[0-9A-Fa-f]{2}|[!$&-.0-9;=@_~]|[A-Za-z][+\\-.0-9A-Za-z]*[!$&-*,;=@_~])(%[0-9A-Fa-f]{2}|[!$&-.0-9;=@-Z_a-z~])*((([/?](%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*)?#|[/?])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*)?|([A-Za-z][+\\-.0-9A-Za-z]*(:%[0-9A-Fa-f]{2}|:[!$&-.0-;=?-Z_a-z~]|[/?])|\\?)(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|([A-Za-z][+\\-.0-9A-Za-z]*:)?\\/((%[0-9A-Fa-f]{2}|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~])*|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~])+(:\\d*)?|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?:\\d*|\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~]+)?|[.0-:A-Fa-f]+)\\])?)?|[A-Za-z][+\\-.0-9A-Za-z]*:?)?$/,\n 'iri': /^[a-zA-Z][a-zA-Z0-9+.-]*:[^\\s]*$/,\n 'iri-reference': /^(((([A-Za-z][+\\-.0-9A-Za-z]*(:%[0-9A-Fa-f]{2}|:[!$&-.0-;=?-Z_a-z~-\\u{10FFFF}]|[/?])|\\?)(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*|([A-Za-z][+\\-.0-9A-Za-z]*:?)?)|([A-Za-z][+\\-.0-9A-Za-z]*:)?\\/((%[0-9A-Fa-f]{2}|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~-\\u{10FFFF}])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~-\\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~-\\u{10FFFF}])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*|(\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~-\\u{10FFFF}])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~-\\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?)?))#(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*|(([A-Za-z][+\\-.0-9A-Za-z]*)?%[0-9A-Fa-f]{2}|[!$&-.0-9;=@_~-\\u{10FFFF}]|[A-Za-z][+\\-.0-9A-Za-z]*[!$&-*,;=@_~-\\u{10FFFF}])(%[0-9A-Fa-f]{2}|[!$&-.0-9;=@-Z_a-z~-\\u{10FFFF}])*((([/?](%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*)?#|[/?])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*)?|([A-Za-z][+\\-.0-9A-Za-z]*(:%[0-9A-Fa-f]{2}|:[!$&-.0-;=?-Z_a-z~-\\u{10FFFF}]|[/?])|\\?)(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*|([A-Za-z][+\\-.0-9A-Za-z]*:)?\\/((%[0-9A-Fa-f]{2}|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~-\\u{10FFFF}])+|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~-\\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\\])?)(:\\d*)?[/?]|[!$&-.0-;=?-Z_a-z~-\\u{10FFFF}])(%[0-9A-Fa-f]{2}|[!$&-;=?-Z_a-z~-\\u{10FFFF}])*|\\/((%[0-9A-Fa-f]{2}|[!$&-.0-9;=A-Z_a-z~-\\u{10FFFF}])+(:\\d*)?|(\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~-\\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\\])?:\\d*|\\[(([Vv][0-9A-Fa-f]+\\.[!$&-.0-;=A-Z_a-z~-\\u{10FFFF}]+)?|[.0-:A-Fa-f]+)\\])?)?|[A-Za-z][+\\-.0-9A-Za-z]*:?)?$/u,\n 'uuid': /^[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12}$/i,\n\n // 7.3.6. uri-template\n 'uri-template': /(%[0-9a-f]{2}|[!#$&(-;=?@\\[\\]_a-z~]|\\{[!#&+,./;=?@|]?(%[0-9a-f]{2}|[0-9_a-z])(\\.?(%[0-9a-f]{2}|[0-9_a-z]))*(:[1-9]\\d{0,3}|\\*)?(,(%[0-9a-f]{2}|[0-9_a-z])(\\.?(%[0-9a-f]{2}|[0-9_a-z]))*(:[1-9]\\d{0,3}|\\*)?)*\\})*/iu,\n\n // 7.3.7. JSON Pointers\n 'json-pointer': /^(\\/([\\x00-\\x2e0-@\\[-}\\x7f]|~[01])*)*$/iu,\n 'relative-json-pointer': /^\\d+(#|(\\/([\\x00-\\x2e0-@\\[-}\\x7f]|~[01])*)*)$/iu,\n\n // hostname regex from: http://stackoverflow.com/a/1420225/5628\n 'hostname': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n 'host-name': /^(?=.{1,255}$)[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?(?:\\.[0-9A-Za-z](?:(?:[0-9A-Za-z]|-){0,61}[0-9A-Za-z])?)*\\.?$/,\n\n 'utc-millisec': function (input) {\n return (typeof input === 'string') && parseFloat(input) === parseInt(input, 10) && !isNaN(input);\n },\n\n // 7.3.8. regex\n 'regex': function (input) {\n var result = true;\n try {\n new RegExp(input);\n } catch (e) {\n result = false;\n }\n return result;\n },\n\n // Other definitions\n // \"style\" was removed from JSON Schema in draft-4 and is deprecated\n 'style': /[\\r\\n\\t ]*[^\\r\\n\\t ][^:]*:[\\r\\n\\t ]*[^\\r\\n\\t ;]*[\\r\\n\\t ]*;?/,\n // \"color\" was removed from JSON Schema in draft-4 and is deprecated\n 'color': /^(#?([0-9A-Fa-f]{3}){1,2}\\b|aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow|(rgb\\(\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*,\\s*\\b([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\b\\s*\\))|(rgb\\(\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*,\\s*(\\d?\\d%|100%)+\\s*\\)))$/,\n 'phone': /^\\+(?:[0-9] ?){6,14}[0-9]$/,\n 'alpha': /^[a-zA-Z]+$/,\n 'alphanumeric': /^[a-zA-Z0-9]+$/,\n};\n\nFORMAT_REGEXPS.regexp = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.pattern = FORMAT_REGEXPS.regex;\nFORMAT_REGEXPS.ipv4 = FORMAT_REGEXPS['ip-address'];\n\nexports.isFormat = function isFormat (input, format, validator) {\n if (typeof input === 'string' && FORMAT_REGEXPS[format] !== undefined) {\n if (FORMAT_REGEXPS[format] instanceof RegExp) {\n return FORMAT_REGEXPS[format].test(input);\n }\n if (typeof FORMAT_REGEXPS[format] === 'function') {\n return FORMAT_REGEXPS[format](input);\n }\n } else if (validator && validator.customFormats &&\n typeof validator.customFormats[format] === 'function') {\n return validator.customFormats[format](input);\n }\n return true;\n};\n\nvar makeSuffix = exports.makeSuffix = function makeSuffix (key) {\n key = key.toString();\n // This function could be capable of outputting valid a ECMAScript string, but the\n // resulting code for testing which form to use would be tens of thousands of characters long\n // That means this will use the name form for some illegal forms\n if (!key.match(/[.\\s\\[\\]]/) && !key.match(/^[\\d]/)) {\n return '.' + key;\n }\n if (key.match(/^\\d+$/)) {\n return '[' + key + ']';\n }\n return '[' + JSON.stringify(key) + ']';\n};\n\nexports.deepCompareStrict = function deepCompareStrict (a, b) {\n if (typeof a !== typeof b) {\n return false;\n }\n if (Array.isArray(a)) {\n if (!Array.isArray(b)) {\n return false;\n }\n if (a.length !== b.length) {\n return false;\n }\n return a.every(function (v, i) {\n return deepCompareStrict(a[i], b[i]);\n });\n }\n if (typeof a === 'object') {\n if (!a || !b) {\n return a === b;\n }\n var aKeys = Object.keys(a);\n var bKeys = Object.keys(b);\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n return aKeys.every(function (v) {\n return deepCompareStrict(a[v], b[v]);\n });\n }\n return a === b;\n};\n\nfunction deepMerger (target, dst, e, i) {\n if (typeof e === 'object') {\n dst[i] = deepMerge(target[i], e);\n } else {\n if (target.indexOf(e) === -1) {\n dst.push(e);\n }\n }\n}\n\nfunction copyist (src, dst, key) {\n dst[key] = src[key];\n}\n\nfunction copyistWithDeepMerge (target, src, dst, key) {\n if (typeof src[key] !== 'object' || !src[key]) {\n dst[key] = src[key];\n }\n else {\n if (!target[key]) {\n dst[key] = src[key];\n } else {\n dst[key] = deepMerge(target[key], src[key]);\n }\n }\n}\n\nfunction deepMerge (target, src) {\n var array = Array.isArray(src);\n var dst = array && [] || {};\n\n if (array) {\n target = target || [];\n dst = dst.concat(target);\n src.forEach(deepMerger.bind(null, target, dst));\n } else {\n if (target && typeof target === 'object') {\n Object.keys(target).forEach(copyist.bind(null, target, dst));\n }\n Object.keys(src).forEach(copyistWithDeepMerge.bind(null, target, src, dst));\n }\n\n return dst;\n}\n\nmodule.exports.deepMerge = deepMerge;\n\n/**\n * Validates instance against the provided schema\n * Implements URI+JSON Pointer encoding, e.g. \"%7e\"=\"~0\"=>\"~\", \"~1\"=\"%2f\"=>\"/\"\n * @param o\n * @param s The path to walk o along\n * @return any\n */\nexports.objectGetPath = function objectGetPath(o, s) {\n var parts = s.split('/').slice(1);\n var k;\n while (typeof (k=parts.shift()) == 'string') {\n var n = decodeURIComponent(k.replace(/~0/,'~').replace(/~1/g,'/'));\n if (!(n in o)) return;\n o = o[n];\n }\n return o;\n};\n\nfunction pathEncoder (v) {\n return '/'+encodeURIComponent(v).replace(/~/g,'%7E');\n}\n/**\n * Accept an Array of property names and return a JSON Pointer URI fragment\n * @param Array a\n * @return {String}\n */\nexports.encodePath = function encodePointer(a){\n // ~ must be encoded explicitly because hacks\n // the slash is encoded by encodeURIComponent\n return a.map(pathEncoder).join('');\n};\n\n\n/**\n * Calculate the number of decimal places a number uses\n * We need this to get correct results out of multipleOf and divisibleBy\n * when either figure is has decimal places, due to IEEE-754 float issues.\n * @param number\n * @returns {number}\n */\nexports.getDecimalPlaces = function getDecimalPlaces(number) {\n\n var decimalPlaces = 0;\n if (isNaN(number)) return decimalPlaces;\n\n if (typeof number !== 'number') {\n number = Number(number);\n }\n\n var parts = number.toString().split('e');\n if (parts.length === 2) {\n if (parts[1][0] !== '-') {\n return decimalPlaces;\n } else {\n decimalPlaces = Number(parts[1].slice(1));\n }\n }\n\n var decimalParts = parts[0].split('.');\n if (decimalParts.length === 2) {\n decimalPlaces += decimalParts[1].length;\n }\n\n return decimalPlaces;\n};\n\nexports.isSchema = function isSchema(val){\n return (typeof val === 'object' && val) || (typeof val === 'boolean');\n};\n\n","'use strict';\n\nvar Validator = module.exports.Validator = require('./validator');\n\nmodule.exports.ValidatorResult = require('./helpers').ValidatorResult;\nmodule.exports.ValidatorResultError = require('./helpers').ValidatorResultError;\nmodule.exports.ValidationError = require('./helpers').ValidationError;\nmodule.exports.SchemaError = require('./helpers').SchemaError;\nmodule.exports.SchemaScanResult = require('./scan').SchemaScanResult;\nmodule.exports.scan = require('./scan').scan;\n\nmodule.exports.validate = function (instance, schema, options) {\n var v = new Validator();\n return v.validate(instance, schema, options);\n};\n","\"use strict\";\n\nvar urilib = require('url');\nvar helpers = require('./helpers');\n\nmodule.exports.SchemaScanResult = SchemaScanResult;\nfunction SchemaScanResult(found, ref){\n this.id = found;\n this.ref = ref;\n}\n\n/**\n * Adds a schema with a certain urn to the Validator instance.\n * @param string uri\n * @param object schema\n * @return {Object}\n */\nmodule.exports.scan = function scan(base, schema){\n function scanSchema(baseuri, schema){\n if(!schema || typeof schema!='object') return;\n // Mark all referenced schemas so we can tell later which schemas are referred to, but never defined\n if(schema.$ref){\n var resolvedUri = urilib.resolve(baseuri, schema.$ref);\n ref[resolvedUri] = ref[resolvedUri] ? ref[resolvedUri]+1 : 0;\n return;\n }\n var id = schema.$id || schema.id;\n var ourBase = id ? urilib.resolve(baseuri, id) : baseuri;\n if (ourBase) {\n // If there's no fragment, append an empty one\n if(ourBase.indexOf('#')<0) ourBase += '#';\n if(found[ourBase]){\n if(!helpers.deepCompareStrict(found[ourBase], schema)){\n throw new Error('Schema <'+ourBase+'> already exists with different definition');\n }\n return found[ourBase];\n }\n found[ourBase] = schema;\n // strip trailing fragment\n if(ourBase[ourBase.length-1]=='#'){\n found[ourBase.substring(0, ourBase.length-1)] = schema;\n }\n }\n scanArray(ourBase+'/items', (Array.isArray(schema.items)?schema.items:[schema.items]));\n scanArray(ourBase+'/extends', (Array.isArray(schema.extends)?schema.extends:[schema.extends]));\n scanSchema(ourBase+'/additionalItems', schema.additionalItems);\n scanObject(ourBase+'/properties', schema.properties);\n scanSchema(ourBase+'/additionalProperties', schema.additionalProperties);\n scanObject(ourBase+'/definitions', schema.definitions);\n scanObject(ourBase+'/patternProperties', schema.patternProperties);\n scanObject(ourBase+'/dependencies', schema.dependencies);\n scanArray(ourBase+'/disallow', schema.disallow);\n scanArray(ourBase+'/allOf', schema.allOf);\n scanArray(ourBase+'/anyOf', schema.anyOf);\n scanArray(ourBase+'/oneOf', schema.oneOf);\n scanSchema(ourBase+'/not', schema.not);\n }\n function scanArray(baseuri, schemas){\n if(!Array.isArray(schemas)) return;\n for(var i=0; i\", schema);\n }\n var subschema = helpers.objectGetPath(ctx.schemas[document], fragment.substr(1));\n if(subschema===undefined){\n throw new SchemaError(\"no such schema \" + fragment + \" located in <\" + document + \">\", schema);\n }\n return {subschema: subschema, switchSchema: switchSchema};\n};\n\n/**\n * Tests whether the instance if of a certain type.\n * @private\n * @param instance\n * @param schema\n * @param options\n * @param ctx\n * @param type\n * @return {boolean}\n */\nValidator.prototype.testType = function validateType (instance, schema, options, ctx, type) {\n if(type===undefined){\n return;\n }else if(type===null){\n throw new SchemaError('Unexpected null in \"type\" keyword');\n }\n if (typeof this.types[type] == 'function') {\n return this.types[type].call(this, instance);\n }\n if (type && typeof type == 'object') {\n var res = this.validateSchema(instance, type, options, ctx);\n return res === undefined || !(res && res.errors.length);\n }\n // Undefined or properties not on the list are acceptable, same as not being defined\n return true;\n};\n\nvar types = Validator.prototype.types = {};\ntypes.string = function testString (instance) {\n return typeof instance == 'string';\n};\ntypes.number = function testNumber (instance) {\n // isFinite returns false for NaN, Infinity, and -Infinity\n return typeof instance == 'number' && isFinite(instance);\n};\ntypes.integer = function testInteger (instance) {\n return (typeof instance == 'number') && instance % 1 === 0;\n};\ntypes.boolean = function testBoolean (instance) {\n return typeof instance == 'boolean';\n};\ntypes.array = function testArray (instance) {\n return Array.isArray(instance);\n};\ntypes['null'] = function testNull (instance) {\n return instance === null;\n};\ntypes.date = function testDate (instance) {\n return instance instanceof Date;\n};\ntypes.any = function testAny (instance) {\n return true;\n};\ntypes.object = function testObject (instance) {\n // TODO: fix this - see #15\n return instance && (typeof instance === 'object') && !(Array.isArray(instance)) && !(instance instanceof Date);\n};\n\nmodule.exports = Validator;\n","'use strict'\n\n// A linked list to keep track of recently-used-ness\nconst Yallist = require('yallist')\n\nconst MAX = Symbol('max')\nconst LENGTH = Symbol('length')\nconst LENGTH_CALCULATOR = Symbol('lengthCalculator')\nconst ALLOW_STALE = Symbol('allowStale')\nconst MAX_AGE = Symbol('maxAge')\nconst DISPOSE = Symbol('dispose')\nconst NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet')\nconst LRU_LIST = Symbol('lruList')\nconst CACHE = Symbol('cache')\nconst UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet')\n\nconst naiveLength = () => 1\n\n// lruList is a yallist where the head is the youngest\n// item, and the tail is the oldest. the list contains the Hit\n// objects as the entries.\n// Each Hit object has a reference to its Yallist.Node. This\n// never changes.\n//\n// cache is a Map (or PseudoMap) that matches the keys to\n// the Yallist.Node object.\nclass LRUCache {\n constructor (options) {\n if (typeof options === 'number')\n options = { max: options }\n\n if (!options)\n options = {}\n\n if (options.max && (typeof options.max !== 'number' || options.max < 0))\n throw new TypeError('max must be a non-negative number')\n // Kind of weird to have a default max of Infinity, but oh well.\n const max = this[MAX] = options.max || Infinity\n\n const lc = options.length || naiveLength\n this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc\n this[ALLOW_STALE] = options.stale || false\n if (options.maxAge && typeof options.maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n this[MAX_AGE] = options.maxAge || 0\n this[DISPOSE] = options.dispose\n this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false\n this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false\n this.reset()\n }\n\n // resize the cache when the max changes.\n set max (mL) {\n if (typeof mL !== 'number' || mL < 0)\n throw new TypeError('max must be a non-negative number')\n\n this[MAX] = mL || Infinity\n trim(this)\n }\n get max () {\n return this[MAX]\n }\n\n set allowStale (allowStale) {\n this[ALLOW_STALE] = !!allowStale\n }\n get allowStale () {\n return this[ALLOW_STALE]\n }\n\n set maxAge (mA) {\n if (typeof mA !== 'number')\n throw new TypeError('maxAge must be a non-negative number')\n\n this[MAX_AGE] = mA\n trim(this)\n }\n get maxAge () {\n return this[MAX_AGE]\n }\n\n // resize the cache when the lengthCalculator changes.\n set lengthCalculator (lC) {\n if (typeof lC !== 'function')\n lC = naiveLength\n\n if (lC !== this[LENGTH_CALCULATOR]) {\n this[LENGTH_CALCULATOR] = lC\n this[LENGTH] = 0\n this[LRU_LIST].forEach(hit => {\n hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key)\n this[LENGTH] += hit.length\n })\n }\n trim(this)\n }\n get lengthCalculator () { return this[LENGTH_CALCULATOR] }\n\n get length () { return this[LENGTH] }\n get itemCount () { return this[LRU_LIST].length }\n\n rforEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].tail; walker !== null;) {\n const prev = walker.prev\n forEachStep(this, fn, walker, thisp)\n walker = prev\n }\n }\n\n forEach (fn, thisp) {\n thisp = thisp || this\n for (let walker = this[LRU_LIST].head; walker !== null;) {\n const next = walker.next\n forEachStep(this, fn, walker, thisp)\n walker = next\n }\n }\n\n keys () {\n return this[LRU_LIST].toArray().map(k => k.key)\n }\n\n values () {\n return this[LRU_LIST].toArray().map(k => k.value)\n }\n\n reset () {\n if (this[DISPOSE] &&\n this[LRU_LIST] &&\n this[LRU_LIST].length) {\n this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value))\n }\n\n this[CACHE] = new Map() // hash of items by key\n this[LRU_LIST] = new Yallist() // list of items in order of use recency\n this[LENGTH] = 0 // length of items in the list\n }\n\n dump () {\n return this[LRU_LIST].map(hit =>\n isStale(this, hit) ? false : {\n k: hit.key,\n v: hit.value,\n e: hit.now + (hit.maxAge || 0)\n }).toArray().filter(h => h)\n }\n\n dumpLru () {\n return this[LRU_LIST]\n }\n\n set (key, value, maxAge) {\n maxAge = maxAge || this[MAX_AGE]\n\n if (maxAge && typeof maxAge !== 'number')\n throw new TypeError('maxAge must be a number')\n\n const now = maxAge ? Date.now() : 0\n const len = this[LENGTH_CALCULATOR](value, key)\n\n if (this[CACHE].has(key)) {\n if (len > this[MAX]) {\n del(this, this[CACHE].get(key))\n return false\n }\n\n const node = this[CACHE].get(key)\n const item = node.value\n\n // dispose of the old one before overwriting\n // split out into 2 ifs for better coverage tracking\n if (this[DISPOSE]) {\n if (!this[NO_DISPOSE_ON_SET])\n this[DISPOSE](key, item.value)\n }\n\n item.now = now\n item.maxAge = maxAge\n item.value = value\n this[LENGTH] += len - item.length\n item.length = len\n this.get(key)\n trim(this)\n return true\n }\n\n const hit = new Entry(key, value, len, now, maxAge)\n\n // oversized objects fall out of cache automatically.\n if (hit.length > this[MAX]) {\n if (this[DISPOSE])\n this[DISPOSE](key, value)\n\n return false\n }\n\n this[LENGTH] += hit.length\n this[LRU_LIST].unshift(hit)\n this[CACHE].set(key, this[LRU_LIST].head)\n trim(this)\n return true\n }\n\n has (key) {\n if (!this[CACHE].has(key)) return false\n const hit = this[CACHE].get(key).value\n return !isStale(this, hit)\n }\n\n get (key) {\n return get(this, key, true)\n }\n\n peek (key) {\n return get(this, key, false)\n }\n\n pop () {\n const node = this[LRU_LIST].tail\n if (!node)\n return null\n\n del(this, node)\n return node.value\n }\n\n del (key) {\n del(this, this[CACHE].get(key))\n }\n\n load (arr) {\n // reset the cache\n this.reset()\n\n const now = Date.now()\n // A previous serialized cache has the most recent items first\n for (let l = arr.length - 1; l >= 0; l--) {\n const hit = arr[l]\n const expiresAt = hit.e || 0\n if (expiresAt === 0)\n // the item was created without expiration in a non aged cache\n this.set(hit.k, hit.v)\n else {\n const maxAge = expiresAt - now\n // dont add already expired items\n if (maxAge > 0) {\n this.set(hit.k, hit.v, maxAge)\n }\n }\n }\n }\n\n prune () {\n this[CACHE].forEach((value, key) => get(this, key, false))\n }\n}\n\nconst get = (self, key, doUse) => {\n const node = self[CACHE].get(key)\n if (node) {\n const hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n return undefined\n } else {\n if (doUse) {\n if (self[UPDATE_AGE_ON_GET])\n node.value.now = Date.now()\n self[LRU_LIST].unshiftNode(node)\n }\n }\n return hit.value\n }\n}\n\nconst isStale = (self, hit) => {\n if (!hit || (!hit.maxAge && !self[MAX_AGE]))\n return false\n\n const diff = Date.now() - hit.now\n return hit.maxAge ? diff > hit.maxAge\n : self[MAX_AGE] && (diff > self[MAX_AGE])\n}\n\nconst trim = self => {\n if (self[LENGTH] > self[MAX]) {\n for (let walker = self[LRU_LIST].tail;\n self[LENGTH] > self[MAX] && walker !== null;) {\n // We know that we're about to delete this one, and also\n // what the next least recently used key will be, so just\n // go ahead and set it now.\n const prev = walker.prev\n del(self, walker)\n walker = prev\n }\n }\n}\n\nconst del = (self, node) => {\n if (node) {\n const hit = node.value\n if (self[DISPOSE])\n self[DISPOSE](hit.key, hit.value)\n\n self[LENGTH] -= hit.length\n self[CACHE].delete(hit.key)\n self[LRU_LIST].removeNode(node)\n }\n}\n\nclass Entry {\n constructor (key, value, length, now, maxAge) {\n this.key = key\n this.value = value\n this.length = length\n this.now = now\n this.maxAge = maxAge || 0\n }\n}\n\nconst forEachStep = (self, fn, node, thisp) => {\n let hit = node.value\n if (isStale(self, hit)) {\n del(self, node)\n if (!self[ALLOW_STALE])\n hit = undefined\n }\n if (hit)\n fn.call(thisp, hit.value, hit.key, self)\n}\n\nmodule.exports = LRUCache\n","const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.format()\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range\n .trim()\n .split(/\\s+/)\n .join(' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.format()\n }\n\n format () {\n this.range = this.set\n .map((comps) => comps.join(' ').trim())\n .join('||')\n .trim()\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('lru-cache')\nconst cache = new LRU({ max: 1000 })\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr, tb) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","const parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // Otherwise it can be determined by checking the high version\n\n if (highVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (highVersion.minor) {\n // anything higher than a minor bump would result in the wrong version\n return 'minor'\n }\n\n // bumping major/minor/patch all have same result\n return 'major'\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n","// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","'use strict'\nmodule.exports = function (Yallist) {\n Yallist.prototype[Symbol.iterator] = function* () {\n for (let walker = this.head; walker; walker = walker.next) {\n yield walker.value\n }\n }\n}\n","'use strict'\nmodule.exports = Yallist\n\nYallist.Node = Node\nYallist.create = Yallist\n\nfunction Yallist (list) {\n var self = this\n if (!(self instanceof Yallist)) {\n self = new Yallist()\n }\n\n self.tail = null\n self.head = null\n self.length = 0\n\n if (list && typeof list.forEach === 'function') {\n list.forEach(function (item) {\n self.push(item)\n })\n } else if (arguments.length > 0) {\n for (var i = 0, l = arguments.length; i < l; i++) {\n self.push(arguments[i])\n }\n }\n\n return self\n}\n\nYallist.prototype.removeNode = function (node) {\n if (node.list !== this) {\n throw new Error('removing node which does not belong to this list')\n }\n\n var next = node.next\n var prev = node.prev\n\n if (next) {\n next.prev = prev\n }\n\n if (prev) {\n prev.next = next\n }\n\n if (node === this.head) {\n this.head = next\n }\n if (node === this.tail) {\n this.tail = prev\n }\n\n node.list.length--\n node.next = null\n node.prev = null\n node.list = null\n\n return next\n}\n\nYallist.prototype.unshiftNode = function (node) {\n if (node === this.head) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var head = this.head\n node.list = this\n node.next = head\n if (head) {\n head.prev = node\n }\n\n this.head = node\n if (!this.tail) {\n this.tail = node\n }\n this.length++\n}\n\nYallist.prototype.pushNode = function (node) {\n if (node === this.tail) {\n return\n }\n\n if (node.list) {\n node.list.removeNode(node)\n }\n\n var tail = this.tail\n node.list = this\n node.prev = tail\n if (tail) {\n tail.next = node\n }\n\n this.tail = node\n if (!this.head) {\n this.head = node\n }\n this.length++\n}\n\nYallist.prototype.push = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n push(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.unshift = function () {\n for (var i = 0, l = arguments.length; i < l; i++) {\n unshift(this, arguments[i])\n }\n return this.length\n}\n\nYallist.prototype.pop = function () {\n if (!this.tail) {\n return undefined\n }\n\n var res = this.tail.value\n this.tail = this.tail.prev\n if (this.tail) {\n this.tail.next = null\n } else {\n this.head = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.shift = function () {\n if (!this.head) {\n return undefined\n }\n\n var res = this.head.value\n this.head = this.head.next\n if (this.head) {\n this.head.prev = null\n } else {\n this.tail = null\n }\n this.length--\n return res\n}\n\nYallist.prototype.forEach = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.head, i = 0; walker !== null; i++) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.next\n }\n}\n\nYallist.prototype.forEachReverse = function (fn, thisp) {\n thisp = thisp || this\n for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {\n fn.call(thisp, walker.value, i, this)\n walker = walker.prev\n }\n}\n\nYallist.prototype.get = function (n) {\n for (var i = 0, walker = this.head; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.next\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.getReverse = function (n) {\n for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {\n // abort out of the list early if we hit a cycle\n walker = walker.prev\n }\n if (i === n && walker !== null) {\n return walker.value\n }\n}\n\nYallist.prototype.map = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.head; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.next\n }\n return res\n}\n\nYallist.prototype.mapReverse = function (fn, thisp) {\n thisp = thisp || this\n var res = new Yallist()\n for (var walker = this.tail; walker !== null;) {\n res.push(fn.call(thisp, walker.value, this))\n walker = walker.prev\n }\n return res\n}\n\nYallist.prototype.reduce = function (fn, initial) {\n var acc\n var walker = this.head\n if (arguments.length > 1) {\n acc = initial\n } else if (this.head) {\n walker = this.head.next\n acc = this.head.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = 0; walker !== null; i++) {\n acc = fn(acc, walker.value, i)\n walker = walker.next\n }\n\n return acc\n}\n\nYallist.prototype.reduceReverse = function (fn, initial) {\n var acc\n var walker = this.tail\n if (arguments.length > 1) {\n acc = initial\n } else if (this.tail) {\n walker = this.tail.prev\n acc = this.tail.value\n } else {\n throw new TypeError('Reduce of empty list with no initial value')\n }\n\n for (var i = this.length - 1; walker !== null; i--) {\n acc = fn(acc, walker.value, i)\n walker = walker.prev\n }\n\n return acc\n}\n\nYallist.prototype.toArray = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.head; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.next\n }\n return arr\n}\n\nYallist.prototype.toArrayReverse = function () {\n var arr = new Array(this.length)\n for (var i = 0, walker = this.tail; walker !== null; i++) {\n arr[i] = walker.value\n walker = walker.prev\n }\n return arr\n}\n\nYallist.prototype.slice = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = 0, walker = this.head; walker !== null && i < from; i++) {\n walker = walker.next\n }\n for (; walker !== null && i < to; i++, walker = walker.next) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.sliceReverse = function (from, to) {\n to = to || this.length\n if (to < 0) {\n to += this.length\n }\n from = from || 0\n if (from < 0) {\n from += this.length\n }\n var ret = new Yallist()\n if (to < from || to < 0) {\n return ret\n }\n if (from < 0) {\n from = 0\n }\n if (to > this.length) {\n to = this.length\n }\n for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {\n walker = walker.prev\n }\n for (; walker !== null && i > from; i--, walker = walker.prev) {\n ret.push(walker.value)\n }\n return ret\n}\n\nYallist.prototype.splice = function (start, deleteCount, ...nodes) {\n if (start > this.length) {\n start = this.length - 1\n }\n if (start < 0) {\n start = this.length + start;\n }\n\n for (var i = 0, walker = this.head; walker !== null && i < start; i++) {\n walker = walker.next\n }\n\n var ret = []\n for (var i = 0; walker && i < deleteCount; i++) {\n ret.push(walker.value)\n walker = this.removeNode(walker)\n }\n if (walker === null) {\n walker = this.tail\n }\n\n if (walker !== this.head && walker !== this.tail) {\n walker = walker.prev\n }\n\n for (var i = 0; i < nodes.length; i++) {\n walker = insert(this, walker, nodes[i])\n }\n return ret;\n}\n\nYallist.prototype.reverse = function () {\n var head = this.head\n var tail = this.tail\n for (var walker = head; walker !== null; walker = walker.prev) {\n var p = walker.prev\n walker.prev = walker.next\n walker.next = p\n }\n this.head = tail\n this.tail = head\n return this\n}\n\nfunction insert (self, node, value) {\n var inserted = node === self.head ?\n new Node(value, null, node, self) :\n new Node(value, node, node.next, self)\n\n if (inserted.next === null) {\n self.tail = inserted\n }\n if (inserted.prev === null) {\n self.head = inserted\n }\n\n self.length++\n\n return inserted\n}\n\nfunction push (self, item) {\n self.tail = new Node(item, self.tail, null, self)\n if (!self.head) {\n self.head = self.tail\n }\n self.length++\n}\n\nfunction unshift (self, item) {\n self.head = new Node(item, null, self.head, self)\n if (!self.tail) {\n self.tail = self.head\n }\n self.length++\n}\n\nfunction Node (value, prev, next, list) {\n if (!(this instanceof Node)) {\n return new Node(value, prev, next, list)\n }\n\n this.list = list\n this.value = value\n\n if (prev) {\n prev.next = this\n this.prev = prev\n } else {\n this.prev = null\n }\n\n if (next) {\n next.prev = this\n this.next = next\n } else {\n this.next = null\n }\n}\n\ntry {\n // add if support for Symbol.iterator is present\n require('./iterator.js')(Yallist)\n} catch (er) {}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.diffResource = exports.diffTemplate = exports.fullDiff = void 0;\nconst impl = require(\"./diff\");\nconst types = require(\"./diff/types\");\nconst util_1 = require(\"./diff/util\");\n__exportStar(require(\"./diff/types\"), exports);\nconst DIFF_HANDLERS = {\n AWSTemplateFormatVersion: (diff, oldValue, newValue) => diff.awsTemplateFormatVersion = impl.diffAttribute(oldValue, newValue),\n Description: (diff, oldValue, newValue) => diff.description = impl.diffAttribute(oldValue, newValue),\n Metadata: (diff, oldValue, newValue) => diff.metadata = new types.DifferenceCollection((0, util_1.diffKeyedEntities)(oldValue, newValue, impl.diffMetadata)),\n Parameters: (diff, oldValue, newValue) => diff.parameters = new types.DifferenceCollection((0, util_1.diffKeyedEntities)(oldValue, newValue, impl.diffParameter)),\n Mappings: (diff, oldValue, newValue) => diff.mappings = new types.DifferenceCollection((0, util_1.diffKeyedEntities)(oldValue, newValue, impl.diffMapping)),\n Conditions: (diff, oldValue, newValue) => diff.conditions = new types.DifferenceCollection((0, util_1.diffKeyedEntities)(oldValue, newValue, impl.diffCondition)),\n Transform: (diff, oldValue, newValue) => diff.transform = impl.diffAttribute(oldValue, newValue),\n Resources: (diff, oldValue, newValue) => diff.resources = new types.DifferenceCollection((0, util_1.diffKeyedEntities)(oldValue, newValue, impl.diffResource)),\n Outputs: (diff, oldValue, newValue) => diff.outputs = new types.DifferenceCollection((0, util_1.diffKeyedEntities)(oldValue, newValue, impl.diffOutput)),\n};\n/**\n * Compare two CloudFormation templates and return semantic differences between them.\n *\n * @param currentTemplate the current state of the stack.\n * @param newTemplate the target state of the stack.\n * @param changeSet the change set for this stack.\n *\n * @returns a +types.TemplateDiff+ object that represents the changes that will happen if\n * a stack which current state is described by +currentTemplate+ is updated with\n * the template +newTemplate+.\n */\nfunction fullDiff(currentTemplate, newTemplate, changeSet, isImport) {\n normalize(currentTemplate);\n normalize(newTemplate);\n const theDiff = diffTemplate(currentTemplate, newTemplate);\n if (changeSet) {\n filterFalsePositives(theDiff, changeSet);\n addImportInformation(theDiff, changeSet);\n }\n else if (isImport) {\n makeAllResourceChangesImports(theDiff);\n }\n return theDiff;\n}\nexports.fullDiff = fullDiff;\nfunction diffTemplate(currentTemplate, newTemplate) {\n // Base diff\n const theDiff = calculateTemplateDiff(currentTemplate, newTemplate);\n // We're going to modify this in-place\n const newTemplateCopy = deepCopy(newTemplate);\n let didPropagateReferenceChanges;\n let diffWithReplacements;\n do {\n diffWithReplacements = calculateTemplateDiff(currentTemplate, newTemplateCopy);\n // Propagate replacements for replaced resources\n didPropagateReferenceChanges = false;\n if (diffWithReplacements.resources) {\n diffWithReplacements.resources.forEachDifference((logicalId, change) => {\n if (change.changeImpact === types.ResourceImpact.WILL_REPLACE) {\n if (propagateReplacedReferences(newTemplateCopy, logicalId)) {\n didPropagateReferenceChanges = true;\n }\n }\n });\n }\n } while (didPropagateReferenceChanges);\n // Copy \"replaced\" states from `diffWithReplacements` to `theDiff`.\n diffWithReplacements.resources\n .filter(r => isReplacement(r.changeImpact))\n .forEachDifference((logicalId, downstreamReplacement) => {\n const resource = theDiff.resources.get(logicalId);\n if (resource.changeImpact !== downstreamReplacement.changeImpact) {\n propagatePropertyReplacement(downstreamReplacement, resource);\n }\n });\n return theDiff;\n}\nexports.diffTemplate = diffTemplate;\nfunction isReplacement(impact) {\n return impact === types.ResourceImpact.MAY_REPLACE || impact === types.ResourceImpact.WILL_REPLACE;\n}\n/**\n * For all properties in 'source' that have a \"replacement\" impact, propagate that impact to \"dest\"\n */\nfunction propagatePropertyReplacement(source, dest) {\n for (const [propertyName, diff] of Object.entries(source.propertyUpdates)) {\n if (diff.changeImpact && isReplacement(diff.changeImpact)) {\n // Use the propertydiff of source in target. The result of this happens to be clear enough.\n dest.setPropertyChange(propertyName, diff);\n }\n }\n}\nfunction calculateTemplateDiff(currentTemplate, newTemplate) {\n const differences = {};\n const unknown = {};\n for (const key of (0, util_1.unionOf)(Object.keys(currentTemplate), Object.keys(newTemplate)).sort()) {\n const oldValue = currentTemplate[key];\n const newValue = newTemplate[key];\n if ((0, util_1.deepEqual)(oldValue, newValue)) {\n continue;\n }\n const handler = DIFF_HANDLERS[key]\n || ((_diff, oldV, newV) => unknown[key] = impl.diffUnknown(oldV, newV));\n handler(differences, oldValue, newValue);\n }\n if (Object.keys(unknown).length > 0) {\n differences.unknown = new types.DifferenceCollection(unknown);\n }\n return new types.TemplateDiff(differences);\n}\n/**\n * Compare two CloudFormation resources and return semantic differences between them\n */\nfunction diffResource(oldValue, newValue) {\n return impl.diffResource(oldValue, newValue);\n}\nexports.diffResource = diffResource;\n/**\n * Replace all references to the given logicalID on the given template, in-place\n *\n * Returns true iff any references were replaced.\n */\nfunction propagateReplacedReferences(template, logicalId) {\n let ret = false;\n function recurse(obj) {\n if (Array.isArray(obj)) {\n obj.forEach(recurse);\n }\n if (typeof obj === 'object' && obj !== null) {\n if (!replaceReference(obj)) {\n Object.values(obj).forEach(recurse);\n }\n }\n }\n function replaceReference(obj) {\n const keys = Object.keys(obj);\n if (keys.length !== 1) {\n return false;\n }\n const key = keys[0];\n if (key === 'Ref') {\n if (obj.Ref === logicalId) {\n obj.Ref = logicalId + ' (replaced)';\n ret = true;\n }\n return true;\n }\n if (key.startsWith('Fn::')) {\n if (Array.isArray(obj[key]) && obj[key].length > 0 && obj[key][0] === logicalId) {\n obj[key][0] = logicalId + '(replaced)';\n ret = true;\n }\n return true;\n }\n return false;\n }\n recurse(template);\n return ret;\n}\nfunction deepCopy(x) {\n if (Array.isArray(x)) {\n return x.map(deepCopy);\n }\n if (typeof x === 'object' && x !== null) {\n const ret = {};\n for (const key of Object.keys(x)) {\n ret[key] = deepCopy(x[key]);\n }\n return ret;\n }\n return x;\n}\nfunction addImportInformation(diff, changeSet) {\n const imports = findResourceImports(changeSet);\n diff.resources.forEachDifference((logicalId, change) => {\n if (imports.includes(logicalId)) {\n change.isImport = true;\n }\n });\n}\nfunction makeAllResourceChangesImports(diff) {\n diff.resources.forEachDifference((_logicalId, change) => {\n change.isImport = true;\n });\n}\nfunction filterFalsePositives(diff, changeSet) {\n const replacements = findResourceReplacements(changeSet);\n diff.resources.forEachDifference((logicalId, change) => {\n if (change.resourceType.includes('AWS::Serverless')) {\n // CFN applies the SAM transform before creating the changeset, so the changeset contains no information about SAM resources\n return;\n }\n change.forEachDifference((type, name, value) => {\n if (type === 'Property') {\n if (!replacements[logicalId]) {\n value.changeImpact = types.ResourceImpact.NO_CHANGE;\n value.isDifferent = false;\n return;\n }\n switch (replacements[logicalId].propertiesReplaced[name]) {\n case 'Always':\n value.changeImpact = types.ResourceImpact.WILL_REPLACE;\n break;\n case 'Never':\n value.changeImpact = types.ResourceImpact.WILL_UPDATE;\n break;\n case 'Conditionally':\n value.changeImpact = types.ResourceImpact.MAY_REPLACE;\n break;\n case undefined:\n value.changeImpact = types.ResourceImpact.NO_CHANGE;\n value.isDifferent = false;\n break;\n // otherwise, defer to the changeImpact from `diffTemplate`\n }\n }\n else if (type === 'Other') {\n switch (name) {\n case 'Metadata':\n change.setOtherChange('Metadata', new types.Difference(value.newValue, value.newValue));\n break;\n }\n }\n });\n });\n}\nfunction findResourceImports(changeSet) {\n const importedResourceLogicalIds = [];\n for (const resourceChange of changeSet.Changes ?? []) {\n if (resourceChange.ResourceChange?.Action === 'Import') {\n importedResourceLogicalIds.push(resourceChange.ResourceChange.LogicalResourceId);\n }\n }\n return importedResourceLogicalIds;\n}\nfunction findResourceReplacements(changeSet) {\n const replacements = {};\n for (const resourceChange of changeSet.Changes ?? []) {\n const propertiesReplaced = {};\n for (const propertyChange of resourceChange.ResourceChange?.Details ?? []) {\n if (propertyChange.Target?.Attribute === 'Properties') {\n const requiresReplacement = propertyChange.Target.RequiresRecreation === 'Always';\n if (requiresReplacement && propertyChange.Evaluation === 'Static') {\n propertiesReplaced[propertyChange.Target.Name] = 'Always';\n }\n else if (requiresReplacement && propertyChange.Evaluation === 'Dynamic') {\n // If Evaluation is 'Dynamic', then this may cause replacement, or it may not.\n // see 'Replacement': https://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_ResourceChange.html\n propertiesReplaced[propertyChange.Target.Name] = 'Conditionally';\n }\n else {\n propertiesReplaced[propertyChange.Target.Name] = propertyChange.Target.RequiresRecreation;\n }\n }\n }\n replacements[resourceChange.ResourceChange?.LogicalResourceId] = {\n resourceReplaced: resourceChange.ResourceChange?.Replacement === 'True',\n propertiesReplaced,\n };\n }\n return replacements;\n}\nfunction normalize(template) {\n if (typeof template === 'object') {\n for (const key of (Object.keys(template ?? {}))) {\n if (key === 'Fn::GetAtt' && typeof template[key] === 'string') {\n template[key] = template[key].split('.');\n continue;\n }\n else if (key === 'DependsOn') {\n if (typeof template[key] === 'string') {\n template[key] = [template[key]];\n }\n else if (Array.isArray(template[key])) {\n template[key] = template[key].sort();\n }\n continue;\n }\n if (Array.isArray(template[key])) {\n for (const element of (template[key])) {\n normalize(element);\n }\n }\n else {\n normalize(template[key]);\n }\n }\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi10ZW1wbGF0ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImRpZmYtdGVtcGxhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFHQSwrQkFBK0I7QUFDL0Isc0NBQXNDO0FBQ3RDLHNDQUFvRTtBQUVwRSwrQ0FBNkI7QUFPN0IsTUFBTSxhQUFhLEdBQW9CO0lBQ3JDLHdCQUF3QixFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUNyRCxJQUFJLENBQUMsd0JBQXdCLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDO0lBQ3hFLFdBQVcsRUFBRSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FDeEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUM7SUFDM0QsUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUEsd0JBQWlCLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUcsVUFBVSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLElBQUEsd0JBQWlCLEVBQUMsUUFBUSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDN0csUUFBUSxFQUFFLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxDQUNyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksS0FBSyxDQUFDLG9CQUFvQixDQUFDLElB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R0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUNqQyxLQUFLLE1BQU0sT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsQ0FBQztvQkFDdEMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNyQixDQUFDO1lBQ0gsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLFNBQVMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUMzQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhlIFNESyBpcyBvbmx5IHVzZWQgdG8gcmVmZXJlbmNlIGBEZXNjcmliZUNoYW5nZVNldE91dHB1dGAsIHNvIHRoZSBTREsgaXMgYWRkZWQgYXMgYSBkZXZEZXBlbmRlbmN5LlxuLy8gVGhlIFNESyBzaG91bGQgbm90IG1ha2UgbmV0d29yayBjYWxscyBoZXJlXG5pbXBvcnQgdHlwZSB7IERlc2NyaWJlQ2hhbmdlU2V0T3V0cHV0IGFzIERlc2NyaWJlQ2hhbmdlU2V0IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LWNsb3VkZm9ybWF0aW9uJztcbmltcG9ydCAqIGFzIGltcGwgZnJvbSAnLi9kaWZmJztcbmltcG9ydCAqIGFzIHR5cGVzIGZyb20gJy4vZGlmZi90eXBlcyc7XG5pbXBvcnQgeyBkZWVwRXF1YWwsIGRpZmZLZXllZEVudGl0aWVzLCB1bmlvbk9mIH0gZnJvbSAnLi9kaWZmL3V0aWwnO1xuXG5leHBvcnQgKiBmcm9tICcuL2RpZmYvdHlwZXMnO1xuXG5leHBvcnQgdHlwZSBEZXNjcmliZUNoYW5nZVNldE91dHB1dCA9IERlc2NyaWJlQ2hhbmdlU2V0O1xuXG50eXBlIERpZmZIYW5kbGVyID0gKGRpZmY6IHR5cGVzLklUZW1wbGF0ZURpZmYsIG9sZFZhbHVlOiBhbnksIG5ld1ZhbHVlOiBhbnkpID0+IHZvaWQ7XG50eXBlIEhhbmRsZXJSZWdpc3RyeSA9IHsgW3NlY3Rpb246IHN0cmluZ106IERpZmZIYW5kbGVyIH07XG5cbmNvbnN0IERJRkZfSEFORExFUlM6IEhhbmRsZXJSZWdpc3RyeSA9IHtcbiAgQVdTVGVtcGxhdGVGb3JtYXRWZXJzaW9uOiAoZGlmZiwgb2xkVmFsdWUsIG5ld1ZhbHVlKSA9PlxuICAgIGRpZmYuYXdzVGVtcGxhdGVGb3JtYXRWZXJzaW9uID0gaW1wbC5kaWZmQXR0cmlidXRlKG9sZFZhbHVlLCBuZXdWYWx1ZSksXG4gIERlc2NyaXB0aW9uOiAoZGlmZiwgb2xkVmFsdWUsIG5ld1ZhbHVlKSA9PlxuICAgIGRpZmYuZGVzY3JpcHRpb24gPSBpbXBsLmRpZmZBdHRyaWJ1dGUob2xkVmFsdWUsIG5ld1ZhbHVlKSxcbiAgTWV0YWRhdGE6IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi5tZXRhZGF0YSA9IG5ldyB0eXBlcy5EaWZmZXJlbmNlQ29sbGVjdGlvbihkaWZmS2V5ZWRFbnRpdGllcyhvbGRWYWx1ZSwgbmV3VmFsdWUsIGltcGwuZGlmZk1ldGFkYXRhKSksXG4gIFBhcmFtZXRlcnM6IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi5wYXJhbWV0ZXJzID0gbmV3IHR5cGVzLkRpZmZlcmVuY2VDb2xsZWN0aW9uKGRpZmZLZXllZEVudGl0aWVzKG9sZFZhbHVlLCBuZXdWYWx1ZSwgaW1wbC5kaWZmUGFyYW1ldGVyKSksXG4gIE1hcHBpbmdzOiAoZGlmZiwgb2xkVmFsdWUsIG5ld1ZhbHVlKSA9PlxuICAgIGRpZmYubWFwcGluZ3MgPSBuZXcgdHlwZXMuRGlmZmVyZW5jZUNvbGxlY3Rpb24oZGlmZktleWVkRW50aXRpZXMob2xkVmFsdWUsIG5ld1ZhbHVlLCBpbXBsLmRpZmZNYXBwaW5nKSksXG4gIENvbmRpdGlvbnM6IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi5jb25kaXRpb25zID0gbmV3IHR5cGVzLkRpZmZlcmVuY2VDb2xsZWN0aW9uKGRpZmZLZXllZEVudGl0aWVzKG9sZFZhbHVlLCBuZXdWYWx1ZSwgaW1wbC5kaWZmQ29uZGl0aW9uKSksXG4gIFRyYW5zZm9ybTogKGRpZmYsIG9sZFZhbHVlLCBuZXdWYWx1ZSkgPT5cbiAgICBkaWZmLnRyYW5zZm9ybSA9IGltcGwuZGlmZkF0dHJpYnV0ZShvbGRWYWx1ZSwgbmV3VmFsdWUpLFxuICBSZXNvdXJjZXM6IChkaWZmLCBvbGRWYWx1ZSwgbmV3VmFsdWUpID0+XG4gICAgZGlmZi5yZXNvdXJjZXMgPSBuZXcgdHlwZXMuRGlmZmVyZW5jZUNvbGxlY3Rpb24oZGlmZktleWVkRW50aXRpZXMob2xkVmFsdWUsIG5ld1ZhbHVlLCBpbXBsLmRpZmZSZXNvdXJjZSkpLFxuICBPdXRwdXRzOiAoZGlmZiwgb2xkVmFsdWUsIG5ld1ZhbHVlKSA9PlxuICAgIGRpZmYub3V0cHV0cyA9IG5ldyB0eXBlcy5EaWZmZXJlbmNlQ29sbGVjdGlvbihkaWZmS2V5ZWRFbnRpdGllcyhvbGRWYWx1ZSwgbmV3VmFsdWUsIGltcGwuZGlmZk91dHB1dCkpLFxufTtcblxuLyoqXG4gKiBDb21wYXJlIHR3byBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZXMgYW5kIHJldHVybiBzZW1hbnRpYyBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZW0uXG4gKlxuICogQHBhcmFtIGN1cnJlbnRUZW1wbGF0ZSB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgc3RhY2suXG4gKiBAcGFyYW0gbmV3VGVtcGxhdGUgICAgIHRoZSB0YXJnZXQgc3RhdGUgb2YgdGhlIHN0YWNrLlxuICogQHBhcmFtIGNoYW5nZVNldCAgICAgICB0aGUgY2hhbmdlIHNldCBmb3IgdGhpcyBzdGFjay5cbiAqXG4gKiBAcmV0dXJucyBhICt0eXBlcy5UZW1wbGF0ZURpZmYrIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgdGhlIGNoYW5nZXMgdGhhdCB3aWxsIGhhcHBlbiBpZlxuICogICAgICBhIHN0YWNrIHdoaWNoIGN1cnJlbnQgc3RhdGUgaXMgZGVzY3JpYmVkIGJ5ICtjdXJyZW50VGVtcGxhdGUrIGlzIHVwZGF0ZWQgd2l0aFxuICogICAgICB0aGUgdGVtcGxhdGUgK25ld1RlbXBsYXRlKy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZ1bGxEaWZmKFxuICBjdXJyZW50VGVtcGxhdGU6IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4gIG5ld1RlbXBsYXRlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LFxuICBjaGFuZ2VTZXQ/OiBEZXNjcmliZUNoYW5nZVNldE91dHB1dCxcbiAgaXNJbXBvcnQ/OiBib29sZWFuLFxuKTogdHlwZXMuVGVtcGxhdGVEaWZmIHtcblxuICBub3JtYWxpemUoY3VycmVudFRlbXBsYXRlKTtcbiAgbm9ybWFsaXplKG5ld1RlbXBsYXRlKTtcbiAgY29uc3QgdGhlRGlmZiA9IGRpZmZUZW1wbGF0ZShjdXJyZW50VGVtcGxhdGUsIG5ld1RlbXBsYXRlKTtcbiAgaWYgKGNoYW5nZVNldCkge1xuICAgIGZpbHRlckZhbHNlUG9zaXRpdmVzKHRoZURpZmYsIGNoYW5nZVNldCk7XG4gICAgYWRkSW1wb3J0SW5mb3JtYXRpb24odGhlRGlmZiwgY2hhbmdlU2V0KTtcbiAgfSBlbHNlIGlmIChpc0ltcG9ydCkge1xuICAgIG1ha2VBbGxSZXNvdXJjZUNoYW5nZXNJbXBvcnRzKHRoZURpZmYpO1xuICB9XG5cbiAgcmV0dXJuIHRoZURpZmY7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmVGVtcGxhdGUoXG4gIGN1cnJlbnRUZW1wbGF0ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSxcbiAgbmV3VGVtcGxhdGU6IHsgW2tleTogc3RyaW5nXTogYW55IH0sXG4pOiB0eXBlcy5UZW1wbGF0ZURpZmYge1xuXG4gIC8vIEJhc2UgZGlmZlxuICBjb25zdCB0aGVEaWZmID0gY2FsY3VsYXRlVGVtcGxhdGVEaWZmKGN1cnJlbnRUZW1wbGF0ZSwgbmV3VGVtcGxhdGUpO1xuXG4gIC8vIFdlJ3JlIGdvaW5nIHRvIG1vZGlmeSB0aGlzIGluLXBsYWNlXG4gIGNvbnN0IG5ld1RlbXBsYXRlQ29weSA9IGRlZXBDb3B5KG5ld1RlbXBsYXRlKTtcblxuICBsZXQgZGlkUHJvcGFnYXRlUmVmZXJlbmNlQ2hhbmdlcztcbiAgbGV0IGRpZmZXaXRoUmVwbGFjZW1lbnRzO1xuICBkbyB7XG4gICAgZGlmZldpdGhSZXBsYWNlbWVudHMgPSBjYWxjdWxhdGVUZW1wbGF0ZURpZmYoY3VycmVudFRlbXBsYXRlLCBuZXdUZW1wbGF0ZUNvcHkpO1xuXG4gICAgLy8gUHJvcGFnYXRlIHJlcGxhY2VtZW50cyBmb3IgcmVwbGFjZWQgcmVzb3VyY2VzXG4gICAgZGlkUHJvcGFnYXRlUmVmZXJlbmNlQ2hhbmdlcyA9IGZhbHNlO1xuICAgIGlmIChkaWZmV2l0aFJlcGxhY2VtZW50cy5yZXNvdXJjZXMpIHtcbiAgICAgIGRpZmZXaXRoUmVwbGFjZW1lbnRzLnJlc291cmNlcy5mb3JFYWNoRGlmZmVyZW5jZSgobG9naWNhbElkLCBjaGFuZ2UpID0+IHtcbiAgICAgICAgaWYgKGNoYW5nZS5jaGFuZ2VJbXBhY3QgPT09IHR5cGVzLlJlc291cmNlSW1wYWN0LldJTExfUkVQTEFDRSkge1xuICAgICAgICAgIGlmIChwcm9wYWdhdGVSZXBsYWNlZFJlZmVyZW5jZXMobmV3VGVtcGxhdGVDb3B5LCBsb2dpY2FsSWQpKSB7XG4gICAgICAgICAgICBkaWRQcm9wYWdhdGVSZWZlcmVuY2VDaGFuZ2VzID0gdHJ1ZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfSB3aGlsZSAoZGlkUHJvcGFnYXRlUmVmZXJlbmNlQ2hhbmdlcyk7XG5cbiAgLy8gQ29weSBcInJlcGxhY2VkXCIgc3RhdGVzIGZyb20gYGRpZmZXaXRoUmVwbGFjZW1lbnRzYCB0byBgdGhlRGlmZmAuXG4gIGRpZmZXaXRoUmVwbGFjZW1lbnRzLnJlc291cmNlc1xuICAgIC5maWx0ZXIociA9PiBpc1JlcGxhY2VtZW50KHIhLmNoYW5nZUltcGFjdCkpXG4gICAgLmZvckVhY2hEaWZmZXJlbmNlKChsb2dpY2FsSWQsIGRvd25zdHJlYW1SZXBsYWNlbWVudCkgPT4ge1xuICAgICAgY29uc3QgcmVzb3VyY2UgPSB0aGVEaWZmLnJlc291cmNlcy5nZXQobG9naWNhbElkKTtcblxuICAgICAgaWYgKHJlc291cmNlLmNoYW5nZUltcGFjdCAhPT0gZG93bnN0cmVhbVJlcGxhY2VtZW50LmNoYW5nZUltcGFjdCkge1xuICAgICAgICBwcm9wYWdhdGVQcm9wZXJ0eVJlcGxhY2VtZW50KGRvd25zdHJlYW1SZXBsYWNlbWVudCwgcmVzb3VyY2UpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIHJldHVybiB0aGVEaWZmO1xufVxuXG5mdW5jdGlvbiBpc1JlcGxhY2VtZW50KGltcGFjdDogdHlwZXMuUmVzb3VyY2VJbXBhY3QpIHtcbiAgcmV0dXJuIGltcGFjdCA9PT0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuTUFZX1JFUExBQ0UgfHwgaW1wYWN0ID09PSB0eXBlcy5SZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0U7XG59XG5cbi8qKlxuICogRm9yIGFsbCBwcm9wZXJ0aWVzIGluICdzb3VyY2UnIHRoYXQgaGF2ZSBhIFwicmVwbGFjZW1lbnRcIiBpbXBhY3QsIHByb3BhZ2F0ZSB0aGF0IGltcGFjdCB0byBcImRlc3RcIlxuICovXG5mdW5jdGlvbiBwcm9wYWdhdGVQcm9wZXJ0eVJlcGxhY2VtZW50KHNvdXJjZTogdHlwZXMuUmVzb3VyY2VEaWZmZXJlbmNlLCBkZXN0OiB0eXBlcy5SZXNvdXJjZURpZmZlcmVuY2UpIHtcbiAgZm9yIChjb25zdCBbcHJvcGVydHlOYW1lLCBkaWZmXSBvZiBPYmplY3QuZW50cmllcyhzb3VyY2UucHJvcGVydHlVcGRhdGVzKSkge1xuICAgIGlmIChkaWZmLmNoYW5nZUltcGFjdCAmJiBpc1JlcGxhY2VtZW50KGRpZmYuY2hhbmdlSW1wYWN0KSkge1xuICAgICAgLy8gVXNlIHRoZSBwcm9wZXJ0eWRpZmYgb2Ygc291cmNlIGluIHRhcmdldC4gVGhlIHJlc3VsdCBvZiB0aGlzIGhhcHBlbnMgdG8gYmUgY2xlYXIgZW5vdWdoLlxuICAgICAgZGVzdC5zZXRQcm9wZXJ0eUNoYW5nZShwcm9wZXJ0eU5hbWUsIGRpZmYpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBjYWxjdWxhdGVUZW1wbGF0ZURpZmYoY3VycmVudFRlbXBsYXRlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9LCBuZXdUZW1wbGF0ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IHR5cGVzLlRlbXBsYXRlRGlmZiB7XG4gIGNvbnN0IGRpZmZlcmVuY2VzOiB0eXBlcy5JVGVtcGxhdGVEaWZmID0ge307XG4gIGNvbnN0IHVua25vd246IHsgW2tleTogc3RyaW5nXTogdHlwZXMuRGlmZmVyZW5jZTxhbnk+IH0gPSB7fTtcbiAgZm9yIChjb25zdCBrZXkgb2YgdW5pb25PZihPYmplY3Qua2V5cyhjdXJyZW50VGVtcGxhdGUpLCBPYmplY3Qua2V5cyhuZXdUZW1wbGF0ZSkpLnNvcnQoKSkge1xuICAgIGNvbnN0IG9sZFZhbHVlID0gY3VycmVudFRlbXBsYXRlW2tleV07XG4gICAgY29uc3QgbmV3VmFsdWUgPSBuZXdUZW1wbGF0ZVtrZXldO1xuICAgIGlmIChkZWVwRXF1YWwob2xkVmFsdWUsIG5ld1ZhbHVlKSkge1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IGhhbmRsZXI6IERpZmZIYW5kbGVyID0gRElGRl9IQU5ETEVSU1trZXldXG4gICAgICAgICAgICAgICAgICB8fCAoKF9kaWZmLCBvbGRWLCBuZXdWKSA9PiB1bmtub3duW2tleV0gPSBpbXBsLmRpZmZVbmtub3duKG9sZFYsIG5ld1YpKTtcbiAgICBoYW5kbGVyKGRpZmZlcmVuY2VzLCBvbGRWYWx1ZSwgbmV3VmFsdWUpO1xuICB9XG4gIGlmIChPYmplY3Qua2V5cyh1bmtub3duKS5sZW5ndGggPiAwKSB7XG4gICAgZGlmZmVyZW5jZXMudW5rbm93biA9IG5ldyB0eXBlcy5EaWZmZXJlbmNlQ29sbGVjdGlvbih1bmtub3duKTtcbiAgfVxuXG4gIHJldHVybiBuZXcgdHlwZXMuVGVtcGxhdGVEaWZmKGRpZmZlcmVuY2VzKTtcbn1cblxuLyoqXG4gKiBDb21wYXJlIHR3byBDbG91ZEZvcm1hdGlvbiByZXNvdXJjZXMgYW5kIHJldHVybiBzZW1hbnRpYyBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZW1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZSZXNvdXJjZShvbGRWYWx1ZTogdHlwZXMuUmVzb3VyY2UsIG5ld1ZhbHVlOiB0eXBlcy5SZXNvdXJjZSk6IHR5cGVzLlJlc291cmNlRGlmZmVyZW5jZSB7XG4gIHJldHVybiBpbXBsLmRpZmZSZXNvdXJjZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG4vKipcbiAqIFJlcGxhY2UgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIGdpdmVuIGxvZ2ljYWxJRCBvbiB0aGUgZ2l2ZW4gdGVtcGxhdGUsIGluLXBsYWNlXG4gKlxuICogUmV0dXJucyB0cnVlIGlmZiBhbnkgcmVmZXJlbmNlcyB3ZXJlIHJlcGxhY2VkLlxuICovXG5mdW5jdGlvbiBwcm9wYWdhdGVSZXBsYWNlZFJlZmVyZW5jZXModGVtcGxhdGU6IG9iamVjdCwgbG9naWNhbElkOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgbGV0IHJldCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIHJlY3Vyc2Uob2JqOiBhbnkpIHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopKSB7XG4gICAgICBvYmouZm9yRWFjaChyZWN1cnNlKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgb2JqICE9PSBudWxsKSB7XG4gICAgICBpZiAoIXJlcGxhY2VSZWZlcmVuY2Uob2JqKSkge1xuICAgICAgICBPYmplY3QudmFsdWVzKG9iaikuZm9yRWFjaChyZWN1cnNlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiByZXBsYWNlUmVmZXJlbmNlKG9iajogYW55KSB7XG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG4gICAgaWYgKGtleXMubGVuZ3RoICE9PSAxKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIGNvbnN0IGtleSA9IGtleXNbMF07XG5cbiAgICBpZiAoa2V5ID09PSAnUmVmJykge1xuICAgICAgaWYgKG9iai5SZWYgPT09IGxvZ2ljYWxJZCkge1xuICAgICAgICBvYmouUmVmID0gbG9naWNhbElkICsgJyAocmVwbGFjZWQpJztcbiAgICAgICAgcmV0ID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGlmIChrZXkuc3RhcnRzV2l0aCgnRm46OicpKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmpba2V5XSkgJiYgb2JqW2tleV0ubGVuZ3RoID4gMCAmJiBvYmpba2V5XVswXSA9PT0gbG9naWNhbElkKSB7XG4gICAgICAgIG9ialtrZXldWzBdID0gbG9naWNhbElkICsgJyhyZXBsYWNlZCknO1xuICAgICAgICByZXQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmVjdXJzZSh0ZW1wbGF0ZSk7XG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGRlZXBDb3B5KHg6IGFueSk6IGFueSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHgpKSB7XG4gICAgcmV0dXJuIHgubWFwKGRlZXBDb3B5KTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgeCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHJldDogYW55ID0ge307XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoeCkpIHtcbiAgICAgIHJldFtrZXldID0gZGVlcENvcHkoeFtrZXldKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIHJldHVybiB4O1xufVxuXG5mdW5jdGlvbiBhZGRJbXBvcnRJbmZvcm1hdGlvbihkaWZmOiB0eXBlcy5UZW1wbGF0ZURpZmYsIGNoYW5nZVNldDogRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXQpIHtcbiAgY29uc3QgaW1wb3J0cyA9IGZpbmRSZXNvdXJjZUltcG9ydHMoY2hhbmdlU2V0KTtcbiAgZGlmZi5yZXNvdXJjZXMuZm9yRWFjaERpZmZlcmVuY2UoKGxvZ2ljYWxJZDogc3RyaW5nLCBjaGFuZ2U6IHR5cGVzLlJlc291cmNlRGlmZmVyZW5jZSkgPT4ge1xuICAgIGlmIChpbXBvcnRzLmluY2x1ZGVzKGxvZ2ljYWxJZCkpIHtcbiAgICAgIGNoYW5nZS5pc0ltcG9ydCA9IHRydWU7XG4gICAgfVxuICB9KTtcbn1cblxuZnVuY3Rpb24gbWFrZUFsbFJlc291cmNlQ2hhbmdlc0ltcG9ydHMoZGlmZjogdHlwZXMuVGVtcGxhdGVEaWZmKSB7XG4gIGRpZmYucmVzb3VyY2VzLmZvckVhY2hEaWZmZXJlbmNlKChfbG9naWNhbElkOiBzdHJpbmcsIGNoYW5nZTogdHlwZXMuUmVzb3VyY2VEaWZmZXJlbmNlKSA9PiB7XG4gICAgY2hhbmdlLmlzSW1wb3J0ID0gdHJ1ZTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGZpbHRlckZhbHNlUG9zaXRpdmVzKGRpZmY6IHR5cGVzLlRlbXBsYXRlRGlmZiwgY2hhbmdlU2V0OiBEZXNjcmliZUNoYW5nZVNldE91dHB1dCkge1xuICBjb25zdCByZXBsYWNlbWVudHMgPSBmaW5kUmVzb3VyY2VSZXBsYWNlbWVudHMoY2hhbmdlU2V0KTtcbiAgZGlmZi5yZXNvdXJjZXMuZm9yRWFjaERpZmZlcmVuY2UoKGxvZ2ljYWxJZDogc3RyaW5nLCBjaGFuZ2U6IHR5cGVzLlJlc291cmNlRGlmZmVyZW5jZSkgPT4ge1xuICAgIGlmIChjaGFuZ2UucmVzb3VyY2VUeXBlLmluY2x1ZGVzKCdBV1M6OlNlcnZlcmxlc3MnKSkge1xuICAgICAgLy8gQ0ZOIGFwcGxpZXMgdGhlIFNBTSB0cmFuc2Zvcm0gYmVmb3JlIGNyZWF0aW5nIHRoZSBjaGFuZ2VzZXQsIHNvIHRoZSBjaGFuZ2VzZXQgY29udGFpbnMgbm8gaW5mb3JtYXRpb24gYWJvdXQgU0FNIHJlc291cmNlc1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjaGFuZ2UuZm9yRWFjaERpZmZlcmVuY2UoKHR5cGU6ICdQcm9wZXJ0eScgfCAnT3RoZXInLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiB0eXBlcy5EaWZmZXJlbmNlPGFueT4gfCB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikgPT4ge1xuICAgICAgaWYgKHR5cGUgPT09ICdQcm9wZXJ0eScpIHtcbiAgICAgICAgaWYgKCFyZXBsYWNlbWVudHNbbG9naWNhbElkXSkge1xuICAgICAgICAgICh2YWx1ZSBhcyB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikuY2hhbmdlSW1wYWN0ID0gdHlwZXMuUmVzb3VyY2VJbXBhY3QuTk9fQ0hBTkdFO1xuICAgICAgICAgICh2YWx1ZSBhcyB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikuaXNEaWZmZXJlbnQgPSBmYWxzZTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgc3dpdGNoIChyZXBsYWNlbWVudHNbbG9naWNhbElkXS5wcm9wZXJ0aWVzUmVwbGFjZWRbbmFtZV0pIHtcbiAgICAgICAgICBjYXNlICdBbHdheXMnOlxuICAgICAgICAgICAgKHZhbHVlIGFzIHR5cGVzLlByb3BlcnR5RGlmZmVyZW5jZTxhbnk+KS5jaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdOZXZlcic6XG4gICAgICAgICAgICAodmFsdWUgYXMgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pLmNoYW5nZUltcGFjdCA9IHR5cGVzLlJlc291cmNlSW1wYWN0LldJTExfVVBEQVRFO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAnQ29uZGl0aW9uYWxseSc6XG4gICAgICAgICAgICAodmFsdWUgYXMgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pLmNoYW5nZUltcGFjdCA9IHR5cGVzLlJlc291cmNlSW1wYWN0Lk1BWV9SRVBMQUNFO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSB1bmRlZmluZWQ6XG4gICAgICAgICAgICAodmFsdWUgYXMgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pLmNoYW5nZUltcGFjdCA9IHR5cGVzLlJlc291cmNlSW1wYWN0Lk5PX0NIQU5HRTtcbiAgICAgICAgICAgICh2YWx1ZSBhcyB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PikuaXNEaWZmZXJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIC8vIG90aGVyd2lzZSwgZGVmZXIgdG8gdGhlIGNoYW5nZUltcGFjdCBmcm9tIGBkaWZmVGVtcGxhdGVgXG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ090aGVyJykge1xuICAgICAgICBzd2l0Y2ggKG5hbWUpIHtcbiAgICAgICAgICBjYXNlICdNZXRhZGF0YSc6XG4gICAgICAgICAgICBjaGFuZ2Uuc2V0T3RoZXJDaGFuZ2UoJ01ldGFkYXRhJywgbmV3IHR5cGVzLkRpZmZlcmVuY2U8c3RyaW5nPih2YWx1ZS5uZXdWYWx1ZSwgdmFsdWUubmV3VmFsdWUpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBmaW5kUmVzb3VyY2VJbXBvcnRzKGNoYW5nZVNldDogRGVzY3JpYmVDaGFuZ2VTZXRPdXRwdXQpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGltcG9ydGVkUmVzb3VyY2VMb2dpY2FsSWRzID0gW107XG4gIGZvciAoY29uc3QgcmVzb3VyY2VDaGFuZ2Ugb2YgY2hhbmdlU2V0LkNoYW5nZXMgPz8gW10pIHtcbiAgICBpZiAocmVzb3VyY2VDaGFuZ2UuUmVzb3VyY2VDaGFuZ2U/LkFjdGlvbiA9PT0gJ0ltcG9ydCcpIHtcbiAgICAgIGltcG9ydGVkUmVzb3VyY2VMb2dpY2FsSWRzLnB1c2gocmVzb3VyY2VDaGFuZ2UuUmVzb3VyY2VDaGFuZ2UuTG9naWNhbFJlc291cmNlSWQhKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaW1wb3J0ZWRSZXNvdXJjZUxvZ2ljYWxJZHM7XG59XG5cbmZ1bmN0aW9uIGZpbmRSZXNvdXJjZVJlcGxhY2VtZW50cyhjaGFuZ2VTZXQ6IERlc2NyaWJlQ2hhbmdlU2V0T3V0cHV0KTogdHlwZXMuUmVzb3VyY2VSZXBsYWNlbWVudHMge1xuICBjb25zdCByZXBsYWNlbWVudHM6IHR5cGVzLlJlc291cmNlUmVwbGFjZW1lbnRzID0ge307XG4gIGZvciAoY29uc3QgcmVzb3VyY2VDaGFuZ2Ugb2YgY2hhbmdlU2V0LkNoYW5nZXMgPz8gW10pIHtcbiAgICBjb25zdCBwcm9wZXJ0aWVzUmVwbGFjZWQ6IHsgW3Byb3BOYW1lOiBzdHJpbmddOiB0eXBlcy5DaGFuZ2VTZXRSZXBsYWNlbWVudCB9ID0ge307XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eUNoYW5nZSBvZiByZXNvdXJjZUNoYW5nZS5SZXNvdXJjZUNoYW5nZT8uRGV0YWlscyA/PyBbXSkge1xuICAgICAgaWYgKHByb3BlcnR5Q2hhbmdlLlRhcmdldD8uQXR0cmlidXRlID09PSAnUHJvcGVydGllcycpIHtcbiAgICAgICAgY29uc3QgcmVxdWlyZXNSZXBsYWNlbWVudCA9IHByb3BlcnR5Q2hhbmdlLlRhcmdldC5SZXF1aXJlc1JlY3JlYXRpb24gPT09ICdBbHdheXMnO1xuICAgICAgICBpZiAocmVxdWlyZXNSZXBsYWNlbWVudCAmJiBwcm9wZXJ0eUNoYW5nZS5FdmFsdWF0aW9uID09PSAnU3RhdGljJykge1xuICAgICAgICAgIHByb3BlcnRpZXNSZXBsYWNlZFtwcm9wZXJ0eUNoYW5nZS5UYXJnZXQuTmFtZSFdID0gJ0Fsd2F5cyc7XG4gICAgICAgIH0gZWxzZSBpZiAocmVxdWlyZXNSZXBsYWNlbWVudCAmJiBwcm9wZXJ0eUNoYW5nZS5FdmFsdWF0aW9uID09PSAnRHluYW1pYycpIHtcbiAgICAgICAgICAvLyBJZiBFdmFsdWF0aW9uIGlzICdEeW5hbWljJywgdGhlbiB0aGlzIG1heSBjYXVzZSByZXBsYWNlbWVudCwgb3IgaXQgbWF5IG5vdC5cbiAgICAgICAgICAvLyBzZWUgJ1JlcGxhY2VtZW50JzogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX1Jlc291cmNlQ2hhbmdlLmh0bWxcbiAgICAgICAgICBwcm9wZXJ0aWVzUmVwbGFjZWRbcHJvcGVydHlDaGFuZ2UuVGFyZ2V0Lk5hbWUhXSA9ICdDb25kaXRpb25hbGx5JztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcm9wZXJ0aWVzUmVwbGFjZWRbcHJvcGVydHlDaGFuZ2UuVGFyZ2V0Lk5hbWUhXSA9IHByb3BlcnR5Q2hhbmdlLlRhcmdldC5SZXF1aXJlc1JlY3JlYXRpb24gYXMgdHlwZXMuQ2hhbmdlU2V0UmVwbGFjZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmVwbGFjZW1lbnRzW3Jlc291cmNlQ2hhbmdlLlJlc291cmNlQ2hhbmdlPy5Mb2dpY2FsUmVzb3VyY2VJZCFdID0ge1xuICAgICAgcmVzb3VyY2VSZXBsYWNlZDogcmVzb3VyY2VDaGFuZ2UuUmVzb3VyY2VDaGFuZ2U/LlJlcGxhY2VtZW50ID09PSAnVHJ1ZScsXG4gICAgICBwcm9wZXJ0aWVzUmVwbGFjZWQsXG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiByZXBsYWNlbWVudHM7XG59XG5cbmZ1bmN0aW9uIG5vcm1hbGl6ZSh0ZW1wbGF0ZTogYW55KSB7XG4gIGlmICh0eXBlb2YgdGVtcGxhdGUgPT09ICdvYmplY3QnKSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgKE9iamVjdC5rZXlzKHRlbXBsYXRlID8/IHt9KSkpIHtcbiAgICAgIGlmIChrZXkgPT09ICdGbjo6R2V0QXR0JyAmJiB0eXBlb2YgdGVtcGxhdGVba2V5XSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgdGVtcGxhdGVba2V5XSA9IHRlbXBsYXRlW2tleV0uc3BsaXQoJy4nKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IGVsc2UgaWYgKGtleSA9PT0gJ0RlcGVuZHNPbicpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0ZW1wbGF0ZVtrZXldID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHRlbXBsYXRlW2tleV0gPSBbdGVtcGxhdGVba2V5XV07XG4gICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh0ZW1wbGF0ZVtrZXldKSkge1xuICAgICAgICAgIHRlbXBsYXRlW2tleV0gPSB0ZW1wbGF0ZVtrZXldLnNvcnQoKTtcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKEFycmF5LmlzQXJyYXkodGVtcGxhdGVba2V5XSkpIHtcbiAgICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mICh0ZW1wbGF0ZVtrZXldKSkge1xuICAgICAgICAgIG5vcm1hbGl6ZShlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9ybWFsaXplKHRlbXBsYXRlW2tleV0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.diffUnknown = exports.diffResource = exports.diffParameter = exports.diffOutput = exports.diffMetadata = exports.diffMapping = exports.diffCondition = exports.diffAttribute = void 0;\nconst types = require(\"./types\");\nconst util_1 = require(\"./util\");\nfunction diffAttribute(oldValue, newValue) {\n return new types.Difference(_asString(oldValue), _asString(newValue));\n}\nexports.diffAttribute = diffAttribute;\nfunction diffCondition(oldValue, newValue) {\n return new types.ConditionDifference(oldValue, newValue);\n}\nexports.diffCondition = diffCondition;\nfunction diffMapping(oldValue, newValue) {\n return new types.MappingDifference(oldValue, newValue);\n}\nexports.diffMapping = diffMapping;\nfunction diffMetadata(oldValue, newValue) {\n return new types.MetadataDifference(oldValue, newValue);\n}\nexports.diffMetadata = diffMetadata;\nfunction diffOutput(oldValue, newValue) {\n return new types.OutputDifference(oldValue, newValue);\n}\nexports.diffOutput = diffOutput;\nfunction diffParameter(oldValue, newValue) {\n return new types.ParameterDifference(oldValue, newValue);\n}\nexports.diffParameter = diffParameter;\nfunction diffResource(oldValue, newValue) {\n const resourceType = {\n oldType: oldValue && oldValue.Type,\n newType: newValue && newValue.Type,\n };\n let propertyDiffs = {};\n let otherDiffs = {};\n if (resourceType.oldType !== undefined && resourceType.oldType === resourceType.newType) {\n // Only makes sense to inspect deeper if the types stayed the same\n const impl = (0, util_1.loadResourceModel)(resourceType.oldType);\n propertyDiffs = (0, util_1.diffKeyedEntities)(oldValue.Properties, newValue.Properties, (oldVal, newVal, key) => _diffProperty(oldVal, newVal, key, impl));\n otherDiffs = (0, util_1.diffKeyedEntities)(oldValue, newValue, _diffOther);\n delete otherDiffs.Properties;\n }\n return new types.ResourceDifference(oldValue, newValue, {\n resourceType, propertyDiffs, otherDiffs,\n });\n function _diffProperty(oldV, newV, key, resourceSpec) {\n let changeImpact = types.ResourceImpact.NO_CHANGE;\n const spec = resourceSpec?.properties?.[key];\n if (spec && !(0, util_1.deepEqual)(oldV, newV)) {\n switch (spec.causesReplacement) {\n case 'yes':\n changeImpact = types.ResourceImpact.WILL_REPLACE;\n break;\n case 'maybe':\n changeImpact = types.ResourceImpact.MAY_REPLACE;\n break;\n default:\n // In those cases, whatever is the current value is what we should keep\n changeImpact = types.ResourceImpact.WILL_UPDATE;\n }\n }\n return new types.PropertyDifference(oldV, newV, { changeImpact });\n }\n function _diffOther(oldV, newV) {\n return new types.Difference(oldV, newV);\n }\n}\nexports.diffResource = diffResource;\nfunction diffUnknown(oldValue, newValue) {\n return new types.Difference(oldValue, newValue);\n}\nexports.diffUnknown = diffUnknown;\n/**\n * Coerces a given value to +string | undefined+.\n *\n * @param value the value to be coerced.\n *\n * @returns +undefined+ if +value+ is +null+ or +undefined+,\n * +value+ if it is a +string+,\n * a compact JSON representation of +value+ otherwise.\n */\nfunction _asString(value) {\n if (value == null) {\n return undefined;\n }\n if (typeof value === 'string') {\n return value;\n }\n return JSON.stringify(value);\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxpQ0FBaUM7QUFDakMsaUNBQXlFO0FBRXpFLFNBQWdCLGFBQWEsQ0FBQyxRQUFhLEVBQUUsUUFBYTtJQUN4RCxPQUFPLElBQUksS0FBSyxDQUFDLFVBQVUsQ0FBUyxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUZELHNDQUVDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLFFBQXlCLEVBQUUsUUFBeUI7SUFDaEYsT0FBTyxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUZELHNDQUVDO0FBRUQsU0FBZ0IsV0FBVyxDQUFDLFFBQXVCLEVBQUUsUUFBdUI7SUFDMUUsT0FBTyxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDekQsQ0FBQztBQUZELGtDQUVDO0FBRUQsU0FBZ0IsWUFBWSxDQUFDLFFBQXdCLEVBQUUsUUFBd0I7SUFDN0UsT0FBTyxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDMUQsQ0FBQztBQUZELG9DQUVDO0FBRUQsU0FBZ0IsVUFBVSxDQUFDLFFBQXNCLEVBQUUsUUFBc0I7SUFDdkUsT0FBTyxJQUFJLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDeEQsQ0FBQztBQUZELGdDQUVDO0FBRUQsU0FBZ0IsYUFBYSxDQUFDLFFBQXlCLEVBQUUsUUFBeUI7SUFDaEYsT0FBTyxJQUFJLEtBQUssQ0FBQyxtQkFBbUIsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQUZELHNDQUVDO0FBRUQsU0FBZ0IsWUFB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T0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXNvdXJjZSB9IGZyb20gJ0Bhd3MtY2RrL3NlcnZpY2Utc3BlYy10eXBlcyc7XG5pbXBvcnQgKiBhcyB0eXBlcyBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IGRlZXBFcXVhbCwgZGlmZktleWVkRW50aXRpZXMsIGxvYWRSZXNvdXJjZU1vZGVsIH0gZnJvbSAnLi91dGlsJztcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZBdHRyaWJ1dGUob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSk6IHR5cGVzLkRpZmZlcmVuY2U8c3RyaW5nPiB7XG4gIHJldHVybiBuZXcgdHlwZXMuRGlmZmVyZW5jZTxzdHJpbmc+KF9hc1N0cmluZyhvbGRWYWx1ZSksIF9hc1N0cmluZyhuZXdWYWx1ZSkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZkNvbmRpdGlvbihvbGRWYWx1ZTogdHlwZXMuQ29uZGl0aW9uLCBuZXdWYWx1ZTogdHlwZXMuQ29uZGl0aW9uKTogdHlwZXMuQ29uZGl0aW9uRGlmZmVyZW5jZSB7XG4gIHJldHVybiBuZXcgdHlwZXMuQ29uZGl0aW9uRGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZk1hcHBpbmcob2xkVmFsdWU6IHR5cGVzLk1hcHBpbmcsIG5ld1ZhbHVlOiB0eXBlcy5NYXBwaW5nKTogdHlwZXMuTWFwcGluZ0RpZmZlcmVuY2Uge1xuICByZXR1cm4gbmV3IHR5cGVzLk1hcHBpbmdEaWZmZXJlbmNlKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmTWV0YWRhdGEob2xkVmFsdWU6IHR5cGVzLk1ldGFkYXRhLCBuZXdWYWx1ZTogdHlwZXMuTWV0YWRhdGEpOiB0eXBlcy5NZXRhZGF0YURpZmZlcmVuY2Uge1xuICByZXR1cm4gbmV3IHR5cGVzLk1ldGFkYXRhRGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZk91dHB1dChvbGRWYWx1ZTogdHlwZXMuT3V0cHV0LCBuZXdWYWx1ZTogdHlwZXMuT3V0cHV0KTogdHlwZXMuT3V0cHV0RGlmZmVyZW5jZSB7XG4gIHJldHVybiBuZXcgdHlwZXMuT3V0cHV0RGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlBhcmFtZXRlcihvbGRWYWx1ZTogdHlwZXMuUGFyYW1ldGVyLCBuZXdWYWx1ZTogdHlwZXMuUGFyYW1ldGVyKTogdHlwZXMuUGFyYW1ldGVyRGlmZmVyZW5jZSB7XG4gIHJldHVybiBuZXcgdHlwZXMuUGFyYW1ldGVyRGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlJlc291cmNlKG9sZFZhbHVlPzogdHlwZXMuUmVzb3VyY2UsIG5ld1ZhbHVlPzogdHlwZXMuUmVzb3VyY2UpOiB0eXBlcy5SZXNvdXJjZURpZmZlcmVuY2Uge1xuICBjb25zdCByZXNvdXJjZVR5cGUgPSB7XG4gICAgb2xkVHlwZTogb2xkVmFsdWUgJiYgb2xkVmFsdWUuVHlwZSxcbiAgICBuZXdUeXBlOiBuZXdWYWx1ZSAmJiBuZXdWYWx1ZS5UeXBlLFxuICB9O1xuICBsZXQgcHJvcGVydHlEaWZmczogeyBba2V5OiBzdHJpbmddOiB0eXBlcy5Qcm9wZXJ0eURpZmZlcmVuY2U8YW55PiB9ID0ge307XG4gIGxldCBvdGhlckRpZmZzOiB7IFtrZXk6IHN0cmluZ106IHR5cGVzLkRpZmZlcmVuY2U8YW55PiB9ID0ge307XG5cbiAgaWYgKHJlc291cmNlVHlwZS5vbGRUeXBlICE9PSB1bmRlZmluZWQgJiYgcmVzb3VyY2VUeXBlLm9sZFR5cGUgPT09IHJlc291cmNlVHlwZS5uZXdUeXBlKSB7XG4gICAgLy8gT25seSBtYWtlcyBzZW5zZSB0byBpbnNwZWN0IGRlZXBlciBpZiB0aGUgdHlwZXMgc3RheWVkIHRoZSBzYW1lXG4gICAgY29uc3QgaW1wbCA9IGxvYWRSZXNvdXJjZU1vZGVsKHJlc291cmNlVHlwZS5vbGRUeXBlKTtcbiAgICBwcm9wZXJ0eURpZmZzID0gZGlmZktleWVkRW50aXRpZXMob2xkVmFsdWUhLlByb3BlcnRpZXMsXG4gICAgICBuZXdWYWx1ZSEuUHJvcGVydGllcyxcbiAgICAgIChvbGRWYWwsIG5ld1ZhbCwga2V5KSA9PiBfZGlmZlByb3BlcnR5KG9sZFZhbCwgbmV3VmFsLCBrZXksIGltcGwpKTtcblxuICAgIG90aGVyRGlmZnMgPSBkaWZmS2V5ZWRFbnRpdGllcyhvbGRWYWx1ZSwgbmV3VmFsdWUsIF9kaWZmT3RoZXIpO1xuICAgIGRlbGV0ZSBvdGhlckRpZmZzLlByb3BlcnRpZXM7XG4gIH1cblxuICByZXR1cm4gbmV3IHR5cGVzLlJlc291cmNlRGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUsIHtcbiAgICByZXNvdXJjZVR5cGUsIHByb3BlcnR5RGlmZnMsIG90aGVyRGlmZnMsXG4gIH0pO1xuXG4gIGZ1bmN0aW9uIF9kaWZmUHJvcGVydHkob2xkVjogYW55LCBuZXdWOiBhbnksIGtleTogc3RyaW5nLCByZXNvdXJjZVNwZWM/OiBSZXNvdXJjZSkge1xuICAgIGxldCBjaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5OT19DSEFOR0U7XG5cbiAgICBjb25zdCBzcGVjID0gcmVzb3VyY2VTcGVjPy5wcm9wZXJ0aWVzPy5ba2V5XTtcbiAgICBpZiAoc3BlYyAmJiAhZGVlcEVxdWFsKG9sZFYsIG5ld1YpKSB7XG4gICAgICBzd2l0Y2ggKHNwZWMuY2F1c2VzUmVwbGFjZW1lbnQpIHtcbiAgICAgICAgY2FzZSAneWVzJzpcbiAgICAgICAgICBjaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ21heWJlJzpcbiAgICAgICAgICBjaGFuZ2VJbXBhY3QgPSB0eXBlcy5SZXNvdXJjZUltcGFjdC5NQVlfUkVQTEFDRTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAvLyBJbiB0aG9zZSBjYXNlcywgd2hhdGV2ZXIgaXMgdGhlIGN1cnJlbnQgdmFsdWUgaXMgd2hhdCB3ZSBzaG91bGQga2VlcFxuICAgICAgICAgIGNoYW5nZUltcGFjdCA9IHR5cGVzLlJlc291cmNlSW1wYWN0LldJTExfVVBEQVRFO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgdHlwZXMuUHJvcGVydHlEaWZmZXJlbmNlKG9sZFYsIG5ld1YsIHsgY2hhbmdlSW1wYWN0IH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gX2RpZmZPdGhlcihvbGRWOiBhbnksIG5ld1Y6IGFueSkge1xuICAgIHJldHVybiBuZXcgdHlwZXMuRGlmZmVyZW5jZShvbGRWLCBuZXdWKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlVua25vd24ob2xkVmFsdWU6IGFueSwgbmV3VmFsdWU6IGFueSk6IHR5cGVzLkRpZmZlcmVuY2U8YW55PiB7XG4gIHJldHVybiBuZXcgdHlwZXMuRGlmZmVyZW5jZShvbGRWYWx1ZSwgbmV3VmFsdWUpO1xufVxuXG4vKipcbiAqIENvZXJjZXMgYSBnaXZlbiB2YWx1ZSB0byArc3RyaW5nIHwgdW5kZWZpbmVkKy5cbiAqXG4gKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIGJlIGNvZXJjZWQuXG4gKlxuICogQHJldHVybnMgK3VuZGVmaW5lZCsgaWYgK3ZhbHVlKyBpcyArbnVsbCsgb3IgK3VuZGVmaW5lZCssXG4gKiAgICAgICt2YWx1ZSsgaWYgaXQgaXMgYSArc3RyaW5nKyxcbiAqICAgICAgYSBjb21wYWN0IEpTT04gcmVwcmVzZW50YXRpb24gb2YgK3ZhbHVlKyBvdGhlcndpc2UuXG4gKi9cbmZ1bmN0aW9uIF9hc1N0cmluZyh2YWx1ZTogYW55KTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHZhbHVlIGFzIHN0cmluZztcbiAgfVxuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkodmFsdWUpO1xufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mkUnparseable = exports.mkParsed = void 0;\nfunction mkParsed(value) {\n return { type: 'parsed', value };\n}\nexports.mkParsed = mkParsed;\nfunction mkUnparseable(value) {\n return {\n type: 'unparseable',\n repr: typeof value === 'string' ? value : JSON.stringify(value),\n };\n}\nexports.mkUnparseable = mkUnparseable;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF5YmUtcGFyc2VkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsibWF5YmUtcGFyc2VkLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQWVBLFNBQWdCLFFBQVEsQ0FBSSxLQUFRO0lBQ2xDLE9BQU8sRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQ25DLENBQUM7QUFGRCw0QkFFQztBQUVELFNBQWdCLGFBQWEsQ0FBQyxLQUFVO0lBQ3RDLE9BQU87UUFDTCxJQUFJLEVBQUUsYUFBYTtRQUNuQixJQUFJLEVBQUUsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDO0tBQ2hFLENBQUM7QUFDSixDQUFDO0FBTEQsc0NBS0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgdmFsdWUgdGhhdCBtYXkgb3IgbWF5IG5vdCBiZSBwYXJzZWFibGVcbiAqL1xuZXhwb3J0IHR5cGUgTWF5YmVQYXJzZWQ8QT4gPSBQYXJzZWQ8QT4gfCBVbnBhcnNlYWJsZUNmbjtcblxuZXhwb3J0IGludGVyZmFjZSBQYXJzZWQ8QT4ge1xuICByZWFkb25seSB0eXBlOiAncGFyc2VkJztcbiAgcmVhZG9ubHkgdmFsdWU6IEE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVW5wYXJzZWFibGVDZm4ge1xuICByZWFkb25seSB0eXBlOiAndW5wYXJzZWFibGUnO1xuICByZWFkb25seSByZXByOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBta1BhcnNlZDxBPih2YWx1ZTogQSk6IFBhcnNlZDxBPiB7XG4gIHJldHVybiB7IHR5cGU6ICdwYXJzZWQnLCB2YWx1ZSB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gbWtVbnBhcnNlYWJsZSh2YWx1ZTogYW55KTogVW5wYXJzZWFibGVDZm4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6ICd1bnBhcnNlYWJsZScsXG4gICAgcmVwcjogdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkodmFsdWUpLFxuICB9O1xufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isPropertyDifference = exports.ResourceDifference = exports.ResourceImpact = exports.ParameterDifference = exports.OutputDifference = exports.MetadataDifference = exports.MappingDifference = exports.ConditionDifference = exports.DifferenceCollection = exports.PropertyDifference = exports.Difference = exports.TemplateDiff = void 0;\nconst assert_1 = require(\"assert\");\nconst service_spec_types_1 = require(\"@aws-cdk/service-spec-types\");\nconst util_1 = require(\"./util\");\nconst iam_changes_1 = require(\"../iam/iam-changes\");\nconst security_group_changes_1 = require(\"../network/security-group-changes\");\n/** Semantic differences between two CloudFormation templates. */\nclass TemplateDiff {\n constructor(args) {\n if (args.awsTemplateFormatVersion !== undefined) {\n this.awsTemplateFormatVersion = args.awsTemplateFormatVersion;\n }\n if (args.description !== undefined) {\n this.description = args.description;\n }\n if (args.transform !== undefined) {\n this.transform = args.transform;\n }\n this.conditions = args.conditions || new DifferenceCollection({});\n this.mappings = args.mappings || new DifferenceCollection({});\n this.metadata = args.metadata || new DifferenceCollection({});\n this.outputs = args.outputs || new DifferenceCollection({});\n this.parameters = args.parameters || new DifferenceCollection({});\n this.resources = args.resources || new DifferenceCollection({});\n this.unknown = args.unknown || new DifferenceCollection({});\n this.iamChanges = new iam_changes_1.IamChanges({\n propertyChanges: this.scrutinizablePropertyChanges(iam_changes_1.IamChanges.IamPropertyScrutinies),\n resourceChanges: this.scrutinizableResourceChanges(iam_changes_1.IamChanges.IamResourceScrutinies),\n });\n this.securityGroupChanges = new security_group_changes_1.SecurityGroupChanges({\n egressRulePropertyChanges: this.scrutinizablePropertyChanges([service_spec_types_1.PropertyScrutinyType.EgressRules]),\n ingressRulePropertyChanges: this.scrutinizablePropertyChanges([service_spec_types_1.PropertyScrutinyType.IngressRules]),\n egressRuleResourceChanges: this.scrutinizableResourceChanges([service_spec_types_1.ResourceScrutinyType.EgressRuleResource]),\n ingressRuleResourceChanges: this.scrutinizableResourceChanges([service_spec_types_1.ResourceScrutinyType.IngressRuleResource]),\n });\n }\n get differenceCount() {\n let count = 0;\n if (this.awsTemplateFormatVersion !== undefined) {\n count += 1;\n }\n if (this.description !== undefined) {\n count += 1;\n }\n if (this.transform !== undefined) {\n count += 1;\n }\n count += this.conditions.differenceCount;\n count += this.mappings.differenceCount;\n count += this.metadata.differenceCount;\n count += this.outputs.differenceCount;\n count += this.parameters.differenceCount;\n count += this.resources.differenceCount;\n count += this.unknown.differenceCount;\n return count;\n }\n get isEmpty() {\n return this.differenceCount === 0;\n }\n /**\n * Return true if any of the permissions objects involve a broadening of permissions\n */\n get permissionsBroadened() {\n return this.iamChanges.permissionsBroadened || this.securityGroupChanges.rulesAdded;\n }\n /**\n * Return true if any of the permissions objects have changed\n */\n get permissionsAnyChanges() {\n return this.iamChanges.hasChanges || this.securityGroupChanges.hasChanges;\n }\n /**\n * Return all property changes of a given scrutiny type\n *\n * We don't just look at property updates; we also look at resource additions and deletions (in which\n * case there is no further detail on property values), and resource type changes.\n */\n scrutinizablePropertyChanges(scrutinyTypes) {\n const ret = new Array();\n for (const [resourceLogicalId, resourceChange] of Object.entries(this.resources.changes)) {\n if (resourceChange.resourceTypeChanged) {\n // we ignore resource type changes here, and handle them in scrutinizableResourceChanges()\n continue;\n }\n if (!resourceChange.newResourceType) {\n continue;\n }\n const newTypeProps = (0, util_1.loadResourceModel)(resourceChange.newResourceType)?.properties || {};\n for (const [propertyName, prop] of Object.entries(newTypeProps)) {\n const propScrutinyType = prop.scrutinizable || service_spec_types_1.PropertyScrutinyType.None;\n if (scrutinyTypes.includes(propScrutinyType)) {\n ret.push({\n resourceLogicalId,\n propertyName,\n resourceType: resourceChange.resourceType,\n scrutinyType: propScrutinyType,\n oldValue: resourceChange.oldProperties?.[propertyName],\n newValue: resourceChange.newProperties?.[propertyName],\n });\n }\n }\n }\n return ret;\n }\n /**\n * Return all resource changes of a given scrutiny type\n *\n * We don't just look at resource updates; we also look at resource additions and deletions (in which\n * case there is no further detail on property values), and resource type changes.\n */\n scrutinizableResourceChanges(scrutinyTypes) {\n const ret = new Array();\n for (const [resourceLogicalId, resourceChange] of Object.entries(this.resources.changes)) {\n if (!resourceChange) {\n continue;\n }\n const commonProps = {\n oldProperties: resourceChange.oldProperties,\n newProperties: resourceChange.newProperties,\n resourceLogicalId,\n };\n // changes to the Type of resources can happen when migrating from CFN templates that use Transforms\n if (resourceChange.resourceTypeChanged) {\n // Treat as DELETE+ADD\n if (resourceChange.oldResourceType) {\n const oldResourceModel = (0, util_1.loadResourceModel)(resourceChange.oldResourceType);\n if (oldResourceModel && this.resourceIsScrutinizable(oldResourceModel, scrutinyTypes)) {\n ret.push({\n ...commonProps,\n newProperties: undefined,\n resourceType: resourceChange.oldResourceType,\n scrutinyType: oldResourceModel.scrutinizable,\n });\n }\n }\n if (resourceChange.newResourceType) {\n const newResourceModel = (0, util_1.loadResourceModel)(resourceChange.newResourceType);\n if (newResourceModel && this.resourceIsScrutinizable(newResourceModel, scrutinyTypes)) {\n ret.push({\n ...commonProps,\n oldProperties: undefined,\n resourceType: resourceChange.newResourceType,\n scrutinyType: newResourceModel.scrutinizable,\n });\n }\n }\n }\n else {\n const resourceModel = (0, util_1.loadResourceModel)(resourceChange.resourceType);\n if (resourceModel && this.resourceIsScrutinizable(resourceModel, scrutinyTypes)) {\n ret.push({\n ...commonProps,\n resourceType: resourceChange.resourceType,\n scrutinyType: resourceModel.scrutinizable,\n });\n }\n }\n }\n return ret;\n }\n resourceIsScrutinizable(res, scrutinyTypes) {\n return scrutinyTypes.includes(res.scrutinizable || service_spec_types_1.ResourceScrutinyType.None);\n }\n}\nexports.TemplateDiff = TemplateDiff;\n/**\n * Models an entity that changed between two versions of a CloudFormation template.\n */\nclass Difference {\n /**\n * @param oldValue the old value, cannot be equal (to the sense of +deepEqual+) to +newValue+.\n * @param newValue the new value, cannot be equal (to the sense of +deepEqual+) to +oldValue+.\n */\n constructor(oldValue, newValue) {\n this.oldValue = oldValue;\n this.newValue = newValue;\n if (oldValue === undefined && newValue === undefined) {\n throw new assert_1.AssertionError({ message: 'oldValue and newValue are both undefined!' });\n }\n this.isDifferent = !(0, util_1.deepEqual)(oldValue, newValue);\n }\n /** @returns +true+ if the element is new to the template. */\n get isAddition() {\n return this.oldValue === undefined;\n }\n /** @returns +true+ if the element was removed from the template. */\n get isRemoval() {\n return this.newValue === undefined;\n }\n /** @returns +true+ if the element was already in the template and is updated. */\n get isUpdate() {\n return this.oldValue !== undefined\n && this.newValue !== undefined;\n }\n}\nexports.Difference = Difference;\nclass PropertyDifference extends Difference {\n constructor(oldValue, newValue, args) {\n super(oldValue, newValue);\n this.changeImpact = args.changeImpact;\n }\n}\nexports.PropertyDifference = PropertyDifference;\nclass DifferenceCollection {\n constructor(diffs) {\n this.diffs = diffs;\n }\n get changes() {\n return onlyChanges(this.diffs);\n }\n get differenceCount() {\n return Object.values(this.changes).length;\n }\n get(logicalId) {\n const ret = this.diffs[logicalId];\n if (!ret) {\n throw new Error(`No object with logical ID '${logicalId}'`);\n }\n return ret;\n }\n remove(logicalId) {\n delete this.diffs[logicalId];\n }\n get logicalIds() {\n return Object.keys(this.changes);\n }\n /**\n * Returns a new TemplateDiff which only contains changes for which `predicate`\n * returns `true`.\n */\n filter(predicate) {\n const newChanges = {};\n for (const id of Object.keys(this.changes)) {\n const diff = this.changes[id];\n if (predicate(diff)) {\n newChanges[id] = diff;\n }\n }\n return new DifferenceCollection(newChanges);\n }\n /**\n * Invokes `cb` for all changes in this collection.\n *\n * Changes will be sorted as follows:\n * - Removed\n * - Added\n * - Updated\n * - Others\n *\n * @param cb\n */\n forEachDifference(cb) {\n const removed = new Array();\n const added = new Array();\n const updated = new Array();\n const others = new Array();\n for (const logicalId of this.logicalIds) {\n const change = this.changes[logicalId];\n if (change.isAddition) {\n added.push({ logicalId, change });\n }\n else if (change.isRemoval) {\n removed.push({ logicalId, change });\n }\n else if (change.isUpdate) {\n updated.push({ logicalId, change });\n }\n else if (change.isDifferent) {\n others.push({ logicalId, change });\n }\n }\n removed.forEach(v => cb(v.logicalId, v.change));\n added.forEach(v => cb(v.logicalId, v.change));\n updated.forEach(v => cb(v.logicalId, v.change));\n others.forEach(v => cb(v.logicalId, v.change));\n }\n}\nexports.DifferenceCollection = DifferenceCollection;\nclass ConditionDifference extends Difference {\n}\nexports.ConditionDifference = ConditionDifference;\nclass MappingDifference extends Difference {\n}\nexports.MappingDifference = MappingDifference;\nclass MetadataDifference extends Difference {\n}\nexports.MetadataDifference = MetadataDifference;\nclass OutputDifference extends Difference {\n}\nexports.OutputDifference = OutputDifference;\nclass ParameterDifference extends Difference {\n}\nexports.ParameterDifference = ParameterDifference;\nvar ResourceImpact;\n(function (ResourceImpact) {\n /** The existing physical resource will be updated */\n ResourceImpact[\"WILL_UPDATE\"] = \"WILL_UPDATE\";\n /** A new physical resource will be created */\n ResourceImpact[\"WILL_CREATE\"] = \"WILL_CREATE\";\n /** The existing physical resource will be replaced */\n ResourceImpact[\"WILL_REPLACE\"] = \"WILL_REPLACE\";\n /** The existing physical resource may be replaced */\n ResourceImpact[\"MAY_REPLACE\"] = \"MAY_REPLACE\";\n /** The existing physical resource will be destroyed */\n ResourceImpact[\"WILL_DESTROY\"] = \"WILL_DESTROY\";\n /** The existing physical resource will be removed from CloudFormation supervision */\n ResourceImpact[\"WILL_ORPHAN\"] = \"WILL_ORPHAN\";\n /** The existing physical resource will be added to CloudFormation supervision */\n ResourceImpact[\"WILL_IMPORT\"] = \"WILL_IMPORT\";\n /** There is no change in this resource */\n ResourceImpact[\"NO_CHANGE\"] = \"NO_CHANGE\";\n})(ResourceImpact || (exports.ResourceImpact = ResourceImpact = {}));\n/**\n * This function can be used as a reducer to obtain the resource-level impact of a list\n * of property-level impacts.\n * @param one the current worst impact so far.\n * @param two the new impact being considered (can be undefined, as we may not always be\n * able to determine some peroperty's impact).\n */\nfunction worstImpact(one, two) {\n if (!two) {\n return one;\n }\n const badness = {\n [ResourceImpact.NO_CHANGE]: 0,\n [ResourceImpact.WILL_IMPORT]: 0,\n [ResourceImpact.WILL_UPDATE]: 1,\n [ResourceImpact.WILL_CREATE]: 2,\n [ResourceImpact.WILL_ORPHAN]: 3,\n [ResourceImpact.MAY_REPLACE]: 4,\n [ResourceImpact.WILL_REPLACE]: 5,\n [ResourceImpact.WILL_DESTROY]: 6,\n };\n return badness[one] > badness[two] ? one : two;\n}\n/**\n * Change to a single resource between two CloudFormation templates\n *\n * This class can be mutated after construction.\n */\nclass ResourceDifference {\n constructor(oldValue, newValue, args) {\n this.oldValue = oldValue;\n this.newValue = newValue;\n this.resourceTypes = args.resourceType;\n this.propertyDiffs = args.propertyDiffs;\n this.otherDiffs = args.otherDiffs;\n this.isAddition = oldValue === undefined;\n this.isRemoval = newValue === undefined;\n this.isImport = undefined;\n }\n get oldProperties() {\n return this.oldValue && this.oldValue.Properties;\n }\n get newProperties() {\n return this.newValue && this.newValue.Properties;\n }\n /**\n * Whether this resource was modified at all\n */\n get isDifferent() {\n return this.differenceCount > 0 || this.oldResourceType !== this.newResourceType;\n }\n /**\n * Whether the resource was updated in-place\n */\n get isUpdate() {\n return this.isDifferent && !this.isAddition && !this.isRemoval;\n }\n get oldResourceType() {\n return this.resourceTypes.oldType;\n }\n get newResourceType() {\n return this.resourceTypes.newType;\n }\n /**\n * All actual property updates\n */\n get propertyUpdates() {\n return onlyChanges(this.propertyDiffs);\n }\n /**\n * All actual \"other\" updates\n */\n get otherChanges() {\n return onlyChanges(this.otherDiffs);\n }\n /**\n * Return whether the resource type was changed in this diff\n *\n * This is not a valid operation in CloudFormation but to be defensive we're going\n * to be aware of it anyway.\n */\n get resourceTypeChanged() {\n return (this.resourceTypes.oldType !== undefined\n && this.resourceTypes.newType !== undefined\n && this.resourceTypes.oldType !== this.resourceTypes.newType);\n }\n /**\n * Return the resource type if it was unchanged\n *\n * If the resource type was changed, it's an error to call this.\n */\n get resourceType() {\n if (this.resourceTypeChanged) {\n throw new Error('Cannot get .resourceType, because the type was changed');\n }\n return this.resourceTypes.oldType || this.resourceTypes.newType;\n }\n /**\n * Replace a PropertyChange in this object\n *\n * This affects the property diff as it is summarized to users, but it DOES\n * NOT affect either the \"oldValue\" or \"newValue\" values; those still contain\n * the actual template values as provided by the user (they might still be\n * used for downstream processing).\n */\n setPropertyChange(propertyName, change) {\n this.propertyDiffs[propertyName] = change;\n }\n /**\n * Replace a OtherChange in this object\n *\n * This affects the property diff as it is summarized to users, but it DOES\n * NOT affect either the \"oldValue\" or \"newValue\" values; those still contain\n * the actual template values as provided by the user (they might still be\n * used for downstream processing).\n */\n setOtherChange(otherName, change) {\n this.otherDiffs[otherName] = change;\n }\n get changeImpact() {\n if (this.isImport) {\n return ResourceImpact.WILL_IMPORT;\n }\n // Check the Type first\n if (this.resourceTypes.oldType !== this.resourceTypes.newType) {\n if (this.resourceTypes.oldType === undefined) {\n return ResourceImpact.WILL_CREATE;\n }\n if (this.resourceTypes.newType === undefined) {\n return this.oldValue.DeletionPolicy === 'Retain'\n ? ResourceImpact.WILL_ORPHAN\n : ResourceImpact.WILL_DESTROY;\n }\n return ResourceImpact.WILL_REPLACE;\n }\n // Base impact (before we mix in the worst of the property impacts);\n // WILL_UPDATE if we have \"other\" changes, NO_CHANGE if there are no \"other\" changes.\n const baseImpact = Object.keys(this.otherChanges).length > 0 ? ResourceImpact.WILL_UPDATE : ResourceImpact.NO_CHANGE;\n return Object.values(this.propertyDiffs)\n .map(elt => elt.changeImpact)\n .reduce(worstImpact, baseImpact);\n }\n /**\n * Count of actual differences (not of elements)\n */\n get differenceCount() {\n return Object.values(this.propertyUpdates).length\n + Object.values(this.otherChanges).length;\n }\n /**\n * Invoke a callback for each actual difference\n */\n forEachDifference(cb) {\n for (const key of Object.keys(this.propertyUpdates).sort()) {\n cb('Property', key, this.propertyUpdates[key]);\n }\n for (const key of Object.keys(this.otherChanges).sort()) {\n cb('Other', key, this.otherDiffs[key]);\n }\n }\n}\nexports.ResourceDifference = ResourceDifference;\nfunction isPropertyDifference(diff) {\n return diff.changeImpact !== undefined;\n}\nexports.isPropertyDifference = isPropertyDifference;\n/**\n * Filter a map of IDifferences down to only retain the actual changes\n */\nfunction onlyChanges(xs) {\n const ret = {};\n for (const [key, diff] of Object.entries(xs)) {\n if (diff.isDifferent) {\n ret[key] = diff;\n }\n }\n return ret;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtQ0FBd0M7QUFDeEMsb0VBQW9IO0FBQ3BILGlDQUFzRDtBQUN0RCxvREFBZ0Q7QUFDaEQsOEVBQXlFO0FBYXpFLGlFQUFpRTtBQUNqRSxNQUFhLFlBQVk7SUF1QnZCLFlBQVksSUFBbUI7UUFDN0IsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQztRQUNoRSxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsV0FBVyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUN0QyxDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNsQyxDQUFDO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDbEUsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsUUFBUSxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksb0JBQW9CLENBQUMsRUFBRSxD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LEdBQUcsSUFBSSxDQUFDO1FBQ2xCLENBQUM7SUFDSCxDQUFDO0lBQ0QsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQXNzZXJ0aW9uRXJyb3IgfSBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IHsgUHJvcGVydHlTY3J1dGlueVR5cGUsIFJlc291cmNlU2NydXRpbnlUeXBlLCBSZXNvdXJjZSBhcyBSZXNvdXJjZU1vZGVsIH0gZnJvbSAnQGF3cy1jZGsvc2VydmljZS1zcGVjLXR5cGVzJztcbmltcG9ydCB7IGRlZXBFcXVhbCwgbG9hZFJlc291cmNlTW9kZWwgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgSWFtQ2hhbmdlcyB9IGZyb20gJy4uL2lhbS9pYW0tY2hhbmdlcyc7XG5pbXBvcnQgeyBTZWN1cml0eUdyb3VwQ2hhbmdlcyB9IGZyb20gJy4uL25ldHdvcmsvc2VjdXJpdHktZ3JvdXAtY2hhbmdlcyc7XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5TWFwID0ge1trZXk6IHN0cmluZ106IGFueSB9O1xuXG5leHBvcnQgdHlwZSBSZXNvdXJjZVJlcGxhY2VtZW50cyA9IHsgW2xvZ2ljYWxJZDogc3RyaW5nXTogUmVzb3VyY2VSZXBsYWNlbWVudCB9O1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlUmVwbGFjZW1lbnQge1xuICByZXNvdXJjZVJlcGxhY2VkOiBib29sZWFuO1xuICBwcm9wZXJ0aWVzUmVwbGFjZWQ6IHsgW3Byb3BlcnR5TmFtZTogc3RyaW5nXTogQ2hhbmdlU2V0UmVwbGFjZW1lbnQgfTtcbn1cblxuZXhwb3J0IHR5cGUgQ2hhbmdlU2V0UmVwbGFjZW1lbnQgPSAnQWx3YXlzJyB8ICdOZXZlcicgfCAnQ29uZGl0aW9uYWxseSc7XG5cbi8qKiBTZW1hbnRpYyBkaWZmZXJlbmNlcyBiZXR3ZWVuIHR3byBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZXMuICovXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVEaWZmIGltcGxlbWVudHMgSVRlbXBsYXRlRGlmZiB7XG4gIHB1YmxpYyBhd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24/OiBEaWZmZXJlbmNlPHN0cmluZz47XG4gIHB1YmxpYyBkZXNjcmlwdGlvbj86IERpZmZlcmVuY2U8c3RyaW5nPjtcbiAgcHVibGljIHRyYW5zZm9ybT86IERpZmZlcmVuY2U8c3RyaW5nPjtcbiAgcHVibGljIGNvbmRpdGlvbnM6IERpZmZlcmVuY2VDb2xsZWN0aW9uPENvbmRpdGlvbiwgQ29uZGl0aW9uRGlmZmVyZW5jZT47XG4gIHB1YmxpYyBtYXBwaW5nczogRGlmZmVyZW5jZUNvbGxlY3Rpb248TWFwcGluZywgTWFwcGluZ0RpZmZlcmVuY2U+O1xuICBwdWJsaWMgbWV0YWRhdGE6IERpZmZlcmVuY2VDb2xsZWN0aW9uPE1ldGFkYXRhLCBNZXRhZGF0YURpZmZlcmVuY2U+O1xuICBwdWJsaWMgb3V0cHV0czogRGlmZmVyZW5jZUNvbGxlY3Rpb248T3V0cHV0LCBPdXRwdXREaWZmZXJlbmNlPjtcbiAgcHVibGljIHBhcmFtZXRlcnM6IERpZmZlcmVuY2VDb2xsZWN0aW9uPFBhcmFtZXRlciwgUGFyYW1ldGVyRGlmZmVyZW5jZT47XG4gIHB1YmxpYyByZXNvdXJjZXM6IERpZmZlcmVuY2VDb2xsZWN0aW9uPFJlc291cmNlLCBSZXNvdXJjZURpZmZlcmVuY2U+O1xuICAvKiogVGhlIGRpZmZlcmVuY2VzIGluIHVua25vd24vdW5leHBlY3RlZCBwYXJ0cyBvZiB0aGUgdGVtcGxhdGUgKi9cbiAgcHVibGljIHVua25vd246IERpZmZlcmVuY2VDb2xsZWN0aW9uPGFueSwgRGlmZmVyZW5jZTxhbnk+PjtcblxuICAvKipcbiAgICogQ2hhbmdlcyB0byBJQU0gcG9saWNpZXNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpYW1DaGFuZ2VzOiBJYW1DaGFuZ2VzO1xuXG4gIC8qKlxuICAgKiBDaGFuZ2VzIHRvIFNlY3VyaXR5IEdyb3VwIGluZ3Jlc3MgYW5kIGVncmVzcyBydWxlc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBDaGFuZ2VzOiBTZWN1cml0eUdyb3VwQ2hhbmdlcztcblxuICBjb25zdHJ1Y3RvcihhcmdzOiBJVGVtcGxhdGVEaWZmKSB7XG4gICAgaWYgKGFyZ3MuYXdzVGVtcGxhdGVGb3JtYXRWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuYXdzVGVtcGxhdGVGb3JtYXRWZXJzaW9uID0gYXJncy5hd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb247XG4gICAgfVxuICAgIGlmIChhcmdzLmRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHRoaXMuZGVzY3JpcHRpb24gPSBhcmdzLmRlc2NyaXB0aW9uO1xuICAgIH1cbiAgICBpZiAoYXJncy50cmFuc2Zvcm0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy50cmFuc2Zvcm0gPSBhcmdzLnRyYW5zZm9ybTtcbiAgICB9XG5cbiAgICB0aGlzLmNvbmRpdGlvbnMgPSBhcmdzLmNvbmRpdGlvbnMgfHwgbmV3IERpZmZlcmVuY2VDb2xsZWN0aW9uKHt9KTtcbiAgICB0aGlzLm1hcHBpbmdzID0gYXJncy5tYXBwaW5ncyB8fCBuZXcgRGlmZmVyZW5jZUNvbGxlY3Rpb24oe30pO1xuICAgIHRoaXMubWV0YWRhdGEgPSBhcmdzLm1ldGFkYXRhIHx8IG5ldyBEaWZmZXJlbmNlQ29sbGVjdGlvbih7fSk7XG4gICAgdGhpcy5vdXRwdXRzID0gYXJncy5vdXRwdXRzIHx8IG5ldyBEaWZmZXJlbmNlQ29sbGVjdGlvbih7fSk7XG4gICAgdGhpcy5wYXJhbWV0ZXJzID0gYXJncy5wYXJhbWV0ZXJzIHx8IG5ldyBEaWZmZXJlbmNlQ29sbGVjdGlvbih7fSk7XG4gICAgdGhpcy5yZXNvdXJjZXMgPSBhcmdzLnJlc291cmNlcyB8fCBuZXcgRGlmZmVyZW5jZUNvbGxlY3Rpb24oe30pO1xuICAgIHRoaXMudW5rbm93biA9IGFyZ3MudW5rbm93biB8fCBuZXcgRGlmZmVyZW5jZUNvbGxlY3Rpb24oe30pO1xuXG4gICAgdGhpcy5pYW1DaGFuZ2VzID0gbmV3IElhbUNoYW5nZXMoe1xuICAgICAgcHJvcGVydHlDaGFuZ2VzOiB0aGlzLnNjcnV0aW5pemFibGVQcm9wZXJ0eUNoYW5nZXMoSWFtQ2hhbmdlcy5JYW1Qcm9wZXJ0eVNjcnV0aW5pZXMpLFxuICAgICAgcmVzb3VyY2VDaGFuZ2VzOiB0aGlzLnNjcnV0aW5pemFibGVSZXNvdXJjZUNoYW5nZXMoSWFtQ2hhbmdlcy5JYW1SZXNvdXJjZVNjcnV0aW5pZXMpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zZWN1cml0eUdyb3VwQ2hhbmdlcyA9IG5ldyBTZWN1cml0eUdyb3VwQ2hhbmdlcyh7XG4gICAgICBlZ3Jlc3NSdWxlUHJvcGVydHlDaGFuZ2VzOiB0aGlzLnNjcnV0aW5pemFibGVQcm9wZXJ0eUNoYW5nZXMoW1Byb3BlcnR5U2NydXRpbnlUeXBlLkVncmVzc1J1bGVzXSksXG4gICAgICBpbmdyZXNzUnVsZVByb3BlcnR5Q2hhbmdlczogdGhpcy5zY3J1dGluaXphYmxlUHJvcGVydHlDaGFuZ2VzKFtQcm9wZXJ0eVNjcnV0aW55VHlwZS5JbmdyZXNzUnVsZXNdKSxcbiAgICAgIGVncmVzc1J1bGVSZXNvdXJjZUNoYW5nZXM6IHRoaXMuc2NydXRpbml6YWJsZVJlc291cmNlQ2hhbmdlcyhbUmVzb3VyY2VTY3J1dGlueVR5cGUuRWdyZXNzUnVsZVJlc291cmNlXSksXG4gICAgICBpbmdyZXNzUnVsZVJlc291cmNlQ2hhbmdlczogdGhpcy5zY3J1dGluaXphYmxlUmVzb3VyY2VDaGFuZ2VzKFtSZXNvdXJjZVNjcnV0aW55VHlwZS5JbmdyZXNzUnVsZVJlc291cmNlXSksXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpZmZlcmVuY2VDb3VudCgpIHtcbiAgICBsZXQgY291bnQgPSAwO1xuXG4gICAgaWYgKHRoaXMuYXdzVGVtcGxhdGVGb3JtYXRWZXJzaW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvdW50ICs9IDE7XG4gICAgfVxuICAgIGlmICh0aGlzLmRlc2NyaXB0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNvdW50ICs9IDE7XG4gICAgfVxuICAgIGlmICh0aGlzLnRyYW5zZm9ybSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb3VudCArPSAxO1xuICAgIH1cblxuICAgIGNvdW50ICs9IHRoaXMuY29uZGl0aW9ucy5kaWZmZXJlbmNlQ291bnQ7XG4gICAgY291bnQgKz0gdGhpcy5tYXBwaW5ncy5kaWZmZXJlbmNlQ291bnQ7XG4gICAgY291bnQgKz0gdGhpcy5tZXRhZGF0YS5kaWZmZXJlbmNlQ291bnQ7XG4gICAgY291bnQgKz0gdGhpcy5vdXRwdXRzLmRpZmZlcmVuY2VDb3VudDtcbiAgICBjb3VudCArPSB0aGlzLnBhcmFtZXRlcnMuZGlmZmVyZW5jZUNvdW50O1xuICAgIGNvdW50ICs9IHRoaXMucmVzb3VyY2VzLmRpZmZlcmVuY2VDb3VudDtcbiAgICBjb3VudCArPSB0aGlzLnVua25vd24uZGlmZmVyZW5jZUNvdW50O1xuXG4gICAgcmV0dXJuIGNvdW50O1xuICB9XG5cbiAgcHVibGljIGdldCBpc0VtcHR5KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpZmZlcmVuY2VDb3VudCA9PT0gMDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdHJ1ZSBpZiBhbnkgb2YgdGhlIHBlcm1pc3Npb25zIG9iamVjdHMgaW52b2x2ZSBhIGJyb2FkZW5pbmcgb2YgcGVybWlzc2lvbnNcbiAgICovXG4gIHB1YmxpYyBnZXQgcGVybWlzc2lvbnNCcm9hZGVuZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaWFtQ2hhbmdlcy5wZXJtaXNzaW9uc0Jyb2FkZW5lZCB8fCB0aGlzLnNlY3VyaXR5R3JvdXBDaGFuZ2VzLnJ1bGVzQWRkZWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRydWUgaWYgYW55IG9mIHRoZSBwZXJtaXNzaW9ucyBvYmplY3RzIGhhdmUgY2hhbmdlZFxuICAgKi9cbiAgcHVibGljIGdldCBwZXJtaXNzaW9uc0FueUNoYW5nZXMoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaWFtQ2hhbmdlcy5oYXNDaGFuZ2VzIHx8IHRoaXMuc2VjdXJpdHlHcm91cENoYW5nZXMuaGFzQ2hhbmdlcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYWxsIHByb3BlcnR5IGNoYW5nZXMgb2YgYSBnaXZlbiBzY3J1dGlueSB0eXBlXG4gICAqXG4gICAqIFdlIGRvbid0IGp1c3QgbG9vayBhdCBwcm9wZXJ0eSB1cGRhdGVzOyB3ZSBhbHNvIGxvb2sgYXQgcmVzb3VyY2UgYWRkaXRpb25zIGFuZCBkZWxldGlvbnMgKGluIHdoaWNoXG4gICAqIGNhc2UgdGhlcmUgaXMgbm8gZnVydGhlciBkZXRhaWwgb24gcHJvcGVydHkgdmFsdWVzKSwgYW5kIHJlc291cmNlIHR5cGUgY2hhbmdlcy5cbiAgICovXG4gIHByaXZhdGUgc2NydXRpbml6YWJsZVByb3BlcnR5Q2hhbmdlcyhzY3J1dGlueVR5cGVzOiBQcm9wZXJ0eVNjcnV0aW55VHlwZVtdKTogUHJvcGVydHlDaGFuZ2VbXSB7XG4gICAgY29uc3QgcmV0ID0gbmV3IEFycmF5PFByb3BlcnR5Q2hhbmdlPigpO1xuXG4gICAgZm9yIChjb25zdCBbcmVzb3VyY2VMb2dpY2FsSWQsIHJlc291cmNlQ2hhbmdlXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLnJlc291cmNlcy5jaGFuZ2VzKSkge1xuICAgICAgaWYgKHJlc291cmNlQ2hhbmdlLnJlc291cmNlVHlwZUNoYW5nZWQpIHtcbiAgICAgICAgLy8gd2UgaWdub3JlIHJlc291cmNlIHR5cGUgY2hhbmdlcyBoZXJlLCBhbmQgaGFuZGxlIHRoZW0gaW4gc2NydXRpbml6YWJsZVJlc291cmNlQ2hhbmdlcygpXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXJlc291cmNlQ2hhbmdlLm5ld1Jlc291cmNlVHlwZSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgbmV3VHlwZVByb3BzID0gbG9hZFJlc291cmNlTW9kZWwocmVzb3VyY2VDaGFuZ2UubmV3UmVzb3VyY2VUeXBlKT8ucHJvcGVydGllcyB8fCB7fTtcbiAgICAgIGZvciAoY29uc3QgW3Byb3BlcnR5TmFtZSwgcHJvcF0gb2YgT2JqZWN0LmVudHJpZXMobmV3VHlwZVByb3BzKSkge1xuICAgICAgICBjb25zdCBwcm9wU2NydXRpbnlUeXBlID0gcHJvcC5zY3J1dGluaXphYmxlIHx8IFByb3BlcnR5U2NydXRpbnlUeXBlLk5vbmU7XG4gICAgICAgIGlmIChzY3J1dGlueVR5cGVzLmluY2x1ZGVzKHByb3BTY3J1dGlueVR5cGUpKSB7XG4gICAgICAgICAgcmV0LnB1c2goe1xuICAgICAgICAgICAgcmVzb3VyY2VMb2dpY2FsSWQsXG4gICAgICAgICAgICBwcm9wZXJ0eU5hbWUsXG4gICAgICAgICAgICByZXNvdXJjZVR5cGU6IHJlc291cmNlQ2hhbmdlLnJlc291cmNlVHlwZSxcbiAgICAgICAgICAgIHNjcnV0aW55VHlwZTogcHJvcFNjcnV0aW55VHlwZSxcbiAgICAgICAgICAgIG9sZFZhbHVlOiByZXNvdXJjZUNoYW5nZS5vbGRQcm9wZXJ0aWVzPy5bcHJvcGVydHlOYW1lXSxcbiAgICAgICAgICAgIG5ld1ZhbHVlOiByZXNvdXJjZUNoYW5nZS5uZXdQcm9wZXJ0aWVzPy5bcHJvcGVydHlOYW1lXSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGFsbCByZXNvdXJjZSBjaGFuZ2VzIG9mIGEgZ2l2ZW4gc2NydXRpbnkgdHlwZVxuICAgKlxuICAgKiBXZSBkb24ndCBqdXN0IGxvb2sgYXQgcmVzb3VyY2UgdXBkYXRlczsgd2UgYWxzbyBsb29rIGF0IHJlc291cmNlIGFkZGl0aW9ucyBhbmQgZGVsZXRpb25zIChpbiB3aGljaFxuICAgKiBjYXNlIHRoZXJlIGlzIG5vIGZ1cnRoZXIgZGV0YWlsIG9uIHByb3BlcnR5IHZhbHVlcyksIGFuZCByZXNvdXJjZSB0eXBlIGNoYW5nZXMuXG4gICAqL1xuICBwcml2YXRlIHNjcnV0aW5pemFibGVSZXNvdXJjZUNoYW5nZXMoc2NydXRpbnlUeXBlczogUmVzb3VyY2VTY3J1dGlueVR5cGVbXSk6IFJlc291cmNlQ2hhbmdlW10ge1xuICAgIGNvbnN0IHJldCA9IG5ldyBBcnJheTxSZXNvdXJjZUNoYW5nZT4oKTtcblxuICAgIGZvciAoY29uc3QgW3Jlc291cmNlTG9naWNhbElkLCByZXNvdXJjZUNoYW5nZV0gb2YgT2JqZWN0LmVudHJpZXModGhpcy5yZXNvdXJjZXMuY2hhbmdlcykpIHtcbiAgICAgIGlmICghcmVzb3VyY2VDaGFuZ2UpIHsgY29udGludWU7IH1cblxuICAgICAgY29uc3QgY29tbW9uUHJvcHMgPSB7XG4gICAgICAgIG9sZFByb3BlcnRpZXM6IHJlc291cmNlQ2hhbmdlLm9sZFByb3BlcnRpZXMsXG4gICAgICAgIG5ld1Byb3BlcnRpZXM6IHJlc291cmNlQ2hhbmdlLm5ld1Byb3BlcnRpZXMsXG4gICAgICAgIHJlc291cmNlTG9naWNhbElkLFxuICAgICAgfTtcblxuICAgICAgLy8gY2hhbmdlcyB0byB0aGUgVHlwZSBvZiByZXNvdXJjZXMgY2FuIGhhcHBlbiB3aGVuIG1pZ3JhdGluZyBmcm9tIENGTiB0ZW1wbGF0ZXMgdGhhdCB1c2UgVHJhbnNmb3Jtc1xuICAgICAgaWYgKHJlc291cmNlQ2hhbmdlLnJlc291cmNlVHlwZUNoYW5nZWQpIHtcbiAgICAgICAgLy8gVHJlYXQgYXMgREVMRVRFK0FERFxuICAgICAgICBpZiAocmVzb3VyY2VDaGFuZ2Uub2xkUmVzb3VyY2VUeXBlKSB7XG4gICAgICAgICAgY29uc3Qgb2xkUmVzb3VyY2VNb2RlbCA9IGxvYWRSZXNvdXJjZU1vZGVsKHJlc291cmNlQ2hhbmdlLm9sZFJlc291cmNlVHlwZSk7XG4gICAgICAgICAgaWYgKG9sZFJlc291cmNlTW9kZWwgJiYgdGhpcy5yZXNvdXJjZUlzU2NydXRpbml6YWJsZShvbGRSZXNvdXJjZU1vZGVsLCBzY3J1dGlueVR5cGVzKSkge1xuICAgICAgICAgICAgcmV0LnB1c2goe1xuICAgICAgICAgICAgICAuLi5jb21tb25Qcm9wcyxcbiAgICAgICAgICAgICAgbmV3UHJvcGVydGllczogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICByZXNvdXJjZVR5cGU6IHJlc291cmNlQ2hhbmdlLm9sZFJlc291cmNlVHlwZSEsXG4gICAgICAgICAgICAgIHNjcnV0aW55VHlwZTogb2xkUmVzb3VyY2VNb2RlbC5zY3J1dGluaXphYmxlISxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXNvdXJjZUNoYW5nZS5uZXdSZXNvdXJjZVR5cGUpIHtcbiAgICAgICAgICBjb25zdCBuZXdSZXNvdXJjZU1vZGVsID0gbG9hZFJlc291cmNlTW9kZWwocmVzb3VyY2VDaGFuZ2UubmV3UmVzb3VyY2VUeXBlKTtcbiAgICAgICAgICBpZiAobmV3UmVzb3VyY2VNb2RlbCAmJiB0aGlzLnJlc291cmNlSXNTY3J1dGluaXphYmxlKG5ld1Jlc291cmNlTW9kZWwsIHNjcnV0aW55VHlwZXMpKSB7XG4gICAgICAgICAgICByZXQucHVzaCh7XG4gICAgICAgICAgICAgIC4uLmNvbW1vblByb3BzLFxuICAgICAgICAgICAgICBvbGRQcm9wZXJ0aWVzOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgIHJlc291cmNlVHlwZTogcmVzb3VyY2VDaGFuZ2UubmV3UmVzb3VyY2VUeXBlISxcbiAgICAgICAgICAgICAgc2NydXRpbnlUeXBlOiBuZXdSZXNvdXJjZU1vZGVsLnNjcnV0aW5pemFibGUhLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCByZXNvdXJjZU1vZGVsID0gbG9hZFJlc291cmNlTW9kZWwocmVzb3VyY2VDaGFuZ2UucmVzb3VyY2VUeXBlKTtcbiAgICAgICAgaWYgKHJlc291cmNlTW9kZWwgJiYgdGhpcy5yZXNvdXJjZUlzU2NydXRpbml6YWJsZShyZXNvdXJjZU1vZGVsLCBzY3J1dGlueVR5cGVzKSkge1xuICAgICAgICAgIHJldC5wdXNoKHtcbiAgICAgICAgICAgIC4uLmNvbW1vblByb3BzLFxuICAgICAgICAgICAgcmVzb3VyY2VUeXBlOiByZXNvdXJjZUNoYW5nZS5yZXNvdXJjZVR5cGUsXG4gICAgICAgICAgICBzY3J1dGlueVR5cGU6IHJlc291cmNlTW9kZWwuc2NydXRpbml6YWJsZSEsXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHJpdmF0ZSByZXNvdXJjZUlzU2NydXRpbml6YWJsZShyZXM6IFJlc291cmNlTW9kZWwsIHNjcnV0aW55VHlwZXM6IEFycmF5PFJlc291cmNlU2NydXRpbnlUeXBlPik6IGJvb2xlYW4ge1xuICAgIHJldHVybiBzY3J1dGlueVR5cGVzLmluY2x1ZGVzKHJlcy5zY3J1dGluaXphYmxlIHx8IFJlc291cmNlU2NydXRpbnlUeXBlLk5vbmUpO1xuICB9XG59XG5cbi8qKlxuICogQSBjaGFuZ2UgaW4gcHJvcGVydHkgdmFsdWVzXG4gKlxuICogTm90IG5lY2Vzc2FyaWx5IGFuIHVwZGF0ZSwgaXQgY291bGQgYmUgdGhhdCB0aGVyZSB1c2VkIHRvIGJlIG5vIHZhbHVlIHRoZXJlXG4gKiBiZWNhdXNlIHRoZXJlIHdhcyBubyByZXNvdXJjZSwgYW5kIG5vdyB0aGVyZSBpcyAob3IgdmljZSB2ZXJzYSkuXG4gKlxuICogVGhlcmVmb3JlLCB3ZSBqdXN0IGNvbnRhaW4gcGxhaW4gdmFsdWVzIGFuZCBub3QgYSBQcm9wZXJ0eURpZmZlcmVuY2U8YW55Pi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQcm9wZXJ0eUNoYW5nZSB7XG4gIC8qKlxuICAgKiBMb2dpY2FsIElEIG9mIHRoZSByZXNvdXJjZSB3aGVyZSB0aGlzIHByb3BlcnR5IGNoYW5nZSB3YXMgZm91bmRcbiAgICovXG4gIHJlc291cmNlTG9naWNhbElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFR5cGUgb2YgdGhlIHJlc291cmNlXG4gICAqL1xuICByZXNvdXJjZVR5cGU6IHN0cmluZztcblxuICAvKipcbiAgICogU2NydXRpbnkgdHlwZSBmb3IgdGhpcyBwcm9wZXJ0eSBjaGFuZ2VcbiAgICovXG4gIHNjcnV0aW55VHlwZTogUHJvcGVydHlTY3J1dGlueVR5cGU7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIHByb3BlcnR5IHRoYXQgaXMgY2hhbmdpbmdcbiAgICovXG4gIHByb3BlcnR5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgb2xkIHByb3BlcnR5IHZhbHVlXG4gICAqL1xuICBvbGRWYWx1ZT86IGFueTtcblxuICAvKipcbiAgICogVGhlIG5ldyBwcm9wZXJ0eSB2YWx1ZVxuICAgKi9cbiAgbmV3VmFsdWU/OiBhbnk7XG59XG5cbi8qKlxuICogQSByZXNvdXJjZSBjaGFuZ2VcbiAqXG4gKiBFaXRoZXIgYSBjcmVhdGlvbiwgZGVsZXRpb24gb3IgdXBkYXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlQ2hhbmdlIHtcbiAgLyoqXG4gICAqIExvZ2ljYWwgSUQgb2YgdGhlIHJlc291cmNlIHdoZXJlIHRoaXMgcHJvcGVydHkgY2hhbmdlIHdhcyBmb3VuZFxuICAgKi9cbiAgcmVzb3VyY2VMb2dpY2FsSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogU2NydXRpbnkgdHlwZSBmb3IgdGhpcyByZXNvdXJjZSBjaGFuZ2VcbiAgICovXG4gIHNjcnV0aW55VHlwZTogUmVzb3VyY2VTY3J1dGlueVR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSByZXNvdXJjZVxuICAgKi9cbiAgcmVzb3VyY2VUeXBlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvbGQgcHJvcGVydGllcyB2YWx1ZSAobWlnaHQgYmUgdW5kZWZpbmVkIGluIGNhc2Ugb2YgY3JlYXRpb24pXG4gICAqL1xuICBvbGRQcm9wZXJ0aWVzPzogUHJvcGVydHlNYXA7XG5cbiAgLyoqXG4gICAqIFRoZSBuZXcgcHJvcGVydGllcyB2YWx1ZSAobWlnaHQgYmUgdW5kZWZpbmVkIGluIGNhc2Ugb2YgZGVsZXRpb24pXG4gICAqL1xuICBuZXdQcm9wZXJ0aWVzPzogUHJvcGVydHlNYXA7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSURpZmZlcmVuY2U8VmFsdWVUeXBlPiB7XG4gIHJlYWRvbmx5IG9sZFZhbHVlOiBWYWx1ZVR5cGUgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IG5ld1ZhbHVlOiBWYWx1ZVR5cGUgfCB1bmRlZmluZWQ7XG4gIHJlYWRvbmx5IGlzRGlmZmVyZW50OiBib29sZWFuO1xuICByZWFkb25seSBpc0FkZGl0aW9uOiBib29sZWFuO1xuICByZWFkb25seSBpc1JlbW92YWw6IGJvb2xlYW47XG4gIHJlYWRvbmx5IGlzVXBkYXRlOiBib29sZWFuO1xufVxuXG4vKipcbiAqIE1vZGVscyBhbiBlbnRpdHkgdGhhdCBjaGFuZ2VkIGJldHdlZW4gdHdvIHZlcnNpb25zIG9mIGEgQ2xvdWRGb3JtYXRpb24gdGVtcGxhdGUuXG4gKi9cbmV4cG9ydCBjbGFzcyBEaWZmZXJlbmNlPFZhbHVlVHlwZT4gaW1wbGVtZW50cyBJRGlmZmVyZW5jZTxWYWx1ZVR5cGU+IHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBpcyBhbiBhY3R1YWwgZGlmZmVyZW50IG9yIHRoZSB2YWx1ZXMgYXJlIGFjdHVhbGx5IHRoZSBzYW1lXG4gICAqXG4gICAqIGlzRGlmZmVyZW50ID0+IChpc1VwZGF0ZSB8IGlzUmVtb3ZlZCB8IGlzVXBkYXRlKVxuICAgKi9cbiAgcHVibGljIGlzRGlmZmVyZW50OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBAcGFyYW0gb2xkVmFsdWUgdGhlIG9sZCB2YWx1ZSwgY2Fubm90IGJlIGVxdWFsICh0byB0aGUgc2Vuc2Ugb2YgK2RlZXBFcXVhbCspIHRvICtuZXdWYWx1ZSsuXG4gICAqIEBwYXJhbSBuZXdWYWx1ZSB0aGUgbmV3IHZhbHVlLCBjYW5ub3QgYmUgZXF1YWwgKHRvIHRoZSBzZW5zZSBvZiArZGVlcEVxdWFsKykgdG8gK29sZFZhbHVlKy5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBvbGRWYWx1ZTogVmFsdWVUeXBlIHwgdW5kZWZpbmVkLCBwdWJsaWMgcmVhZG9ubHkgbmV3VmFsdWU6IFZhbHVlVHlwZSB8IHVuZGVmaW5lZCkge1xuICAgIGlmIChvbGRWYWx1ZSA9PT0gdW5kZWZpbmVkICYmIG5ld1ZhbHVlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcih7IG1lc3NhZ2U6ICdvbGRWYWx1ZSBhbmQgbmV3VmFsdWUgYXJlIGJvdGggdW5kZWZpbmVkIScgfSk7XG4gICAgfVxuICAgIHRoaXMuaXNEaWZmZXJlbnQgPSAhZGVlcEVxdWFsKG9sZFZhbHVlLCBuZXdWYWx1ZSk7XG4gIH1cblxuICAvKiogQHJldHVybnMgK3RydWUrIGlmIHRoZSBlbGVtZW50IGlzIG5ldyB0byB0aGUgdGVtcGxhdGUuICovXG4gIHB1YmxpYyBnZXQgaXNBZGRpdGlvbigpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5vbGRWYWx1ZSA9PT0gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqIEByZXR1cm5zICt0cnVlKyBpZiB0aGUgZWxlbWVudCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSB0ZW1wbGF0ZS4gKi9cbiAgcHVibGljIGdldCBpc1JlbW92YWwoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMubmV3VmFsdWUgPT09IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKiBAcmV0dXJucyArdHJ1ZSsgaWYgdGhlIGVsZW1lbnQgd2FzIGFscmVhZHkgaW4gdGhlIHRlbXBsYXRlIGFuZCBpcyB1cGRhdGVkLiAqL1xuICBwdWJsaWMgZ2V0IGlzVXBkYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLm9sZFZhbHVlICE9PSB1bmRlZmluZWRcbiAgICAgICYmIHRoaXMubmV3VmFsdWUgIT09IHVuZGVmaW5lZDtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUHJvcGVydHlEaWZmZXJlbmNlPFZhbHVlVHlwZT4gZXh0ZW5kcyBEaWZmZXJlbmNlPFZhbHVlVHlwZT4ge1xuICBwdWJsaWMgY2hhbmdlSW1wYWN0PzogUmVzb3VyY2VJbXBhY3Q7XG5cbiAgY29uc3RydWN0b3Iob2xkVmFsdWU6IFZhbHVlVHlwZSB8IHVuZGVmaW5lZCwgbmV3VmFsdWU6IFZhbHVlVHlwZSB8IHVuZGVmaW5lZCwgYXJnczogeyBjaGFuZ2VJbXBhY3Q/OiBSZXNvdXJjZUltcGFjdCB9KSB7XG4gICAgc3VwZXIob2xkVmFsdWUsIG5ld1ZhbHVlKTtcbiAgICB0aGlzLmNoYW5nZUltcGFjdCA9IGFyZ3MuY2hhbmdlSW1wYWN0O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEaWZmZXJlbmNlQ29sbGVjdGlvbjxWLCBUIGV4dGVuZHMgSURpZmZlcmVuY2U8Vj4+IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkaWZmczogeyBbbG9naWNhbElkOiBzdHJpbmddOiBUIH0pIHt9XG5cbiAgcHVibGljIGdldCBjaGFuZ2VzKCk6IHsgW2xvZ2ljYWxJZDogc3RyaW5nXTogVCB9IHtcbiAgICByZXR1cm4gb25seUNoYW5nZXModGhpcy5kaWZmcyk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRpZmZlcmVuY2VDb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMuY2hhbmdlcykubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIGdldChsb2dpY2FsSWQ6IHN0cmluZyk6IFQge1xuICAgIGNvbnN0IHJldCA9IHRoaXMuZGlmZnNbbG9naWNhbElkXTtcbiAgICBpZiAoIXJldCkgeyB0aHJvdyBuZXcgRXJyb3IoYE5vIG9iamVjdCB3aXRoIGxvZ2ljYWwgSUQgJyR7bG9naWNhbElkfSdgKTsgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICBwdWJsaWMgcmVtb3ZlKGxvZ2ljYWxJZDogc3RyaW5nKTogdm9pZCB7XG4gICAgZGVsZXRlIHRoaXMuZGlmZnNbbG9naWNhbElkXTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbG9naWNhbElkcygpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKHRoaXMuY2hhbmdlcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyBhIG5ldyBUZW1wbGF0ZURpZmYgd2hpY2ggb25seSBjb250YWlucyBjaGFuZ2VzIGZvciB3aGljaCBgcHJlZGljYXRlYFxuICAgKiByZXR1cm5zIGB0cnVlYC5cbiAgICovXG4gIHB1YmxpYyBmaWx0ZXIocHJlZGljYXRlOiAoZGlmZjogVCB8IHVuZGVmaW5lZCkgPT4gYm9vbGVhbik6IERpZmZlcmVuY2VDb2xsZWN0aW9uPFYsIFQ+IHtcbiAgICBjb25zdCBuZXdDaGFuZ2VzOiB7IFtsb2dpY2FsSWQ6IHN0cmluZ106IFQgfSA9IHsgfTtcbiAgICBmb3IgKGNvbnN0IGlkIG9mIE9iamVjdC5rZXlzKHRoaXMuY2hhbmdlcykpIHtcbiAgICAgIGNvbnN0IGRpZmYgPSB0aGlzLmNoYW5nZXNbaWRdO1xuXG4gICAgICBpZiAocHJlZGljYXRlKGRpZmYpKSB7XG4gICAgICAgIG5ld0NoYW5nZXNbaWRdID0gZGlmZjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERpZmZlcmVuY2VDb2xsZWN0aW9uPFYsIFQ+KG5ld0NoYW5nZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEludm9rZXMgYGNiYCBmb3IgYWxsIGNoYW5nZXMgaW4gdGhpcyBjb2xsZWN0aW9uLlxuICAgKlxuICAgKiBDaGFuZ2VzIHdpbGwgYmUgc29ydGVkIGFzIGZvbGxvd3M6XG4gICAqICAtIFJlbW92ZWRcbiAgICogIC0gQWRkZWRcbiAgICogIC0gVXBkYXRlZFxuICAgKiAgLSBPdGhlcnNcbiAgICpcbiAgICogQHBhcmFtIGNiXG4gICAqL1xuICBwdWJsaWMgZm9yRWFjaERpZmZlcmVuY2UoY2I6IChsb2dpY2FsSWQ6IHN0cmluZywgY2hhbmdlOiBUKSA9PiBhbnkpOiB2b2lkIHtcbiAgICBjb25zdCByZW1vdmVkID0gbmV3IEFycmF5PHsgbG9naWNhbElkOiBzdHJpbmc7IGNoYW5nZTogVCB9PigpO1xuICAgIGNvbnN0IGFkZGVkID0gbmV3IEFycmF5PHsgbG9naWNhbElkOiBzdHJpbmc7IGNoYW5nZTogVCB9PigpO1xuICAgIGNvbnN0IHVwZGF0ZWQgPSBuZXcgQXJyYXk8eyBsb2dpY2FsSWQ6IHN0cmluZzsgY2hhbmdlOiBUIH0+KCk7XG4gICAgY29uc3Qgb3RoZXJzID0gbmV3IEFycmF5PHsgbG9naWNhbElkOiBzdHJpbmc7IGNoYW5nZTogVCB9PigpO1xuXG4gICAgZm9yIChjb25zdCBsb2dpY2FsSWQgb2YgdGhpcy5sb2dpY2FsSWRzKSB7XG4gICAgICBjb25zdCBjaGFuZ2U6IFQgPSB0aGlzLmNoYW5nZXNbbG9naWNhbElkXSE7XG4gICAgICBpZiAoY2hhbmdlLmlzQWRkaXRpb24pIHtcbiAgICAgICAgYWRkZWQucHVzaCh7IGxvZ2ljYWxJZCwgY2hhbmdlIH0pO1xuICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuaXNSZW1vdmFsKSB7XG4gICAgICAgIHJlbW92ZWQucHVzaCh7IGxvZ2ljYWxJZCwgY2hhbmdlIH0pO1xuICAgICAgfSBlbHNlIGlmIChjaGFuZ2UuaXNVcGRhdGUpIHtcbiAgICAgICAgdXBkYXRlZC5wdXNoKHsgbG9naWNhbElkLCBjaGFuZ2UgfSk7XG4gICAgICB9IGVsc2UgaWYgKGNoYW5nZS5pc0RpZmZlcmVudCkge1xuICAgICAgICBvdGhlcnMucHVzaCh7IGxvZ2ljYWxJZCwgY2hhbmdlIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJlbW92ZWQuZm9yRWFjaCh2ID0+IGNiKHYubG9naWNhbElkLCB2LmNoYW5nZSkpO1xuICAgIGFkZGVkLmZvckVhY2godiA9PiBjYih2LmxvZ2ljYWxJZCwgdi5jaGFuZ2UpKTtcbiAgICB1cGRhdGVkLmZvckVhY2godiA9PiBjYih2LmxvZ2ljYWxJZCwgdi5jaGFuZ2UpKTtcbiAgICBvdGhlcnMuZm9yRWFjaCh2ID0+IGNiKHYubG9naWNhbElkLCB2LmNoYW5nZSkpO1xuICB9XG59XG5cbi8qKlxuICogQXJndW1lbnRzIGV4cGVjdGVkIGJ5IHRoZSBjb25zdHJ1Y3RvciBvZiArVGVtcGxhdGVEaWZmKywgZXh0cmFjdGVkIGFzIGFuIGludGVyZmFjZSBmb3IgdGhlIHNha2VcbiAqIG9mIChyZWxhdGl2ZSkgY29uY2lzZW5lc3Mgb2YgdGhlIGNvbnN0cnVjdG9yJ3Mgc2lnbmF0dXJlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElUZW1wbGF0ZURpZmYge1xuICBhd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24/OiBJRGlmZmVyZW5jZTxzdHJpbmc+O1xuICBkZXNjcmlwdGlvbj86IElEaWZmZXJlbmNlPHN0cmluZz47XG4gIHRyYW5zZm9ybT86IElEaWZmZXJlbmNlPHN0cmluZz47XG5cbiAgY29uZGl0aW9ucz86IERpZmZlcmVuY2VDb2xsZWN0aW9uPENvbmRpdGlvbiwgQ29uZGl0aW9uRGlmZmVyZW5jZT47XG4gIG1hcHBpbmdzPzogRGlmZmVyZW5jZUNvbGxlY3Rpb248TWFwcGluZywgTWFwcGluZ0RpZmZlcmVuY2U+O1xuICBtZXRhZGF0YT86IERpZmZlcmVuY2VDb2xsZWN0aW9uPE1ldGFkYXRhLCBNZXRhZGF0YURpZmZlcmVuY2U+O1xuICBvdXRwdXRzPzogRGlmZmVyZW5jZUNvbGxlY3Rpb248T3V0cHV0LCBPdXRwdXREaWZmZXJlbmNlPjtcbiAgcGFyYW1ldGVycz86IERpZmZlcmVuY2VDb2xsZWN0aW9uPFBhcmFtZXRlciwgUGFyYW1ldGVyRGlmZmVyZW5jZT47XG4gIHJlc291cmNlcz86IERpZmZlcmVuY2VDb2xsZWN0aW9uPFJlc291cmNlLCBSZXNvdXJjZURpZmZlcmVuY2U+O1xuXG4gIHVua25vd24/OiBEaWZmZXJlbmNlQ29sbGVjdGlvbjxhbnksIElEaWZmZXJlbmNlPGFueT4+O1xufVxuXG5leHBvcnQgdHlwZSBDb25kaXRpb24gPSBhbnk7XG5leHBvcnQgY2xhc3MgQ29uZGl0aW9uRGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8Q29uZGl0aW9uPiB7XG4gIC8vIFRPRE86IGRlZmluZSBzcGVjaWZpYyBkaWZmZXJlbmNlIGF0dHJpYnV0ZXNcbn1cblxuZXhwb3J0IHR5cGUgTWFwcGluZyA9IGFueTtcbmV4cG9ydCBjbGFzcyBNYXBwaW5nRGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8TWFwcGluZz4ge1xuICAvLyBUT0RPOiBkZWZpbmUgc3BlY2lmaWMgZGlmZmVyZW5jZSBhdHRyaWJ1dGVzXG59XG5cbmV4cG9ydCB0eXBlIE1ldGFkYXRhID0gYW55O1xuZXhwb3J0IGNsYXNzIE1ldGFkYXRhRGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8TWV0YWRhdGE+IHtcbiAgLy8gVE9ETzogZGVmaW5lIHNwZWNpZmljIGRpZmZlcmVuY2UgYXR0cmlidXRlc1xufVxuXG5leHBvcnQgdHlwZSBPdXRwdXQgPSBhbnk7XG5leHBvcnQgY2xhc3MgT3V0cHV0RGlmZmVyZW5jZSBleHRlbmRzIERpZmZlcmVuY2U8T3V0cHV0PiB7XG4gIC8vIFRPRE86IGRlZmluZSBzcGVjaWZpYyBkaWZmZXJlbmNlIGF0dHJpYnV0ZXNcbn1cblxuZXhwb3J0IHR5cGUgUGFyYW1ldGVyID0gYW55O1xuZXhwb3J0IGNsYXNzIFBhcmFtZXRlckRpZmZlcmVuY2UgZXh0ZW5kcyBEaWZmZXJlbmNlPFBhcmFtZXRlcj4ge1xuICAvLyBUT0RPOiBkZWZpbmUgc3BlY2lmaWMgZGlmZmVyZW5jZSBhdHRyaWJ1dGVzXG59XG5cbmV4cG9ydCBlbnVtIFJlc291cmNlSW1wYWN0IHtcbiAgLyoqIFRoZSBleGlzdGluZyBwaHlzaWNhbCByZXNvdXJjZSB3aWxsIGJlIHVwZGF0ZWQgKi9cbiAgV0lMTF9VUERBVEUgPSAnV0lMTF9VUERBVEUnLFxuICAvKiogQSBuZXcgcGh5c2ljYWwgcmVzb3VyY2Ugd2lsbCBiZSBjcmVhdGVkICovXG4gIFdJTExfQ1JFQVRFID0gJ1dJTExfQ1JFQVRFJyxcbiAgLyoqIFRoZSBleGlzdGluZyBwaHlzaWNhbCByZXNvdXJjZSB3aWxsIGJlIHJlcGxhY2VkICovXG4gIFdJTExfUkVQTEFDRSA9ICdXSUxMX1JFUExBQ0UnLFxuICAvKiogVGhlIGV4aXN0aW5nIHBoeXNpY2FsIHJlc291cmNlIG1heSBiZSByZXBsYWNlZCAqL1xuICBNQVlfUkVQTEFDRSA9ICdNQVlfUkVQTEFDRScsXG4gIC8qKiBUaGUgZXhpc3RpbmcgcGh5c2ljYWwgcmVzb3VyY2Ugd2lsbCBiZSBkZXN0cm95ZWQgKi9cbiAgV0lMTF9ERVNUUk9ZID0gJ1dJTExfREVTVFJPWScsXG4gIC8qKiBUaGUgZXhpc3RpbmcgcGh5c2ljYWwgcmVzb3VyY2Ugd2lsbCBiZSByZW1vdmVkIGZyb20gQ2xvdWRGb3JtYXRpb24gc3VwZXJ2aXNpb24gKi9cbiAgV0lMTF9PUlBIQU4gPSAnV0lMTF9PUlBIQU4nLFxuICAvKiogVGhlIGV4aXN0aW5nIHBoeXNpY2FsIHJlc291cmNlIHdpbGwgYmUgYWRkZWQgdG8gQ2xvdWRGb3JtYXRpb24gc3VwZXJ2aXNpb24gKi9cbiAgV0lMTF9JTVBPUlQgPSAnV0lMTF9JTVBPUlQnLFxuICAvKiogVGhlcmUgaXMgbm8gY2hhbmdlIGluIHRoaXMgcmVzb3VyY2UgKi9cbiAgTk9fQ0hBTkdFID0gJ05PX0NIQU5HRScsXG59XG5cbi8qKlxuICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBhcyBhIHJlZHVjZXIgdG8gb2J0YWluIHRoZSByZXNvdXJjZS1sZXZlbCBpbXBhY3Qgb2YgYSBsaXN0XG4gKiBvZiBwcm9wZXJ0eS1sZXZlbCBpbXBhY3RzLlxuICogQHBhcmFtIG9uZSB0aGUgY3VycmVudCB3b3JzdCBpbXBhY3Qgc28gZmFyLlxuICogQHBhcmFtIHR3byB0aGUgbmV3IGltcGFjdCBiZWluZyBjb25zaWRlcmVkIChjYW4gYmUgdW5kZWZpbmVkLCBhcyB3ZSBtYXkgbm90IGFsd2F5cyBiZVxuICogICAgICBhYmxlIHRvIGRldGVybWluZSBzb21lIHBlcm9wZXJ0eSdzIGltcGFjdCkuXG4gKi9cbmZ1bmN0aW9uIHdvcnN0SW1wYWN0KG9uZTogUmVzb3VyY2VJbXBhY3QsIHR3bz86IFJlc291cmNlSW1wYWN0KTogUmVzb3VyY2VJbXBhY3Qge1xuICBpZiAoIXR3bykgeyByZXR1cm4gb25lOyB9XG4gIGNvbnN0IGJhZG5lc3MgPSB7XG4gICAgW1Jlc291cmNlSW1wYWN0Lk5PX0NIQU5HRV06IDAsXG4gICAgW1Jlc291cmNlSW1wYWN0LldJTExfSU1QT1JUXTogMCxcbiAgICBbUmVzb3VyY2VJbXBhY3QuV0lMTF9VUERBVEVdOiAxLFxuICAgIFtSZXNvdXJjZUltcGFjdC5XSUxMX0NSRUFURV06IDIsXG4gICAgW1Jlc291cmNlSW1wYWN0LldJTExfT1JQSEFOXTogMyxcbiAgICBbUmVzb3VyY2VJbXBhY3QuTUFZX1JFUExBQ0VdOiA0LFxuICAgIFtSZXNvdXJjZUltcGFjdC5XSUxMX1JFUExBQ0VdOiA1LFxuICAgIFtSZXNvdXJjZUltcGFjdC5XSUxMX0RFU1RST1ldOiA2LFxuICB9O1xuICByZXR1cm4gYmFkbmVzc1tvbmVdID4gYmFkbmVzc1t0d29dID8gb25lIDogdHdvO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlIHtcbiAgVHlwZTogc3RyaW5nO1xuICBQcm9wZXJ0aWVzPzogeyBbbmFtZTogc3RyaW5nXTogYW55IH07XG5cbiAgW2tleTogc3RyaW5nXTogYW55O1xufVxuXG4vKipcbiAqIENoYW5nZSB0byBhIHNpbmdsZSByZXNvdXJjZSBiZXR3ZWVuIHR3byBDbG91ZEZvcm1hdGlvbiB0ZW1wbGF0ZXNcbiAqXG4gKiBUaGlzIGNsYXNzIGNhbiBiZSBtdXRhdGVkIGFmdGVyIGNvbnN0cnVjdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIFJlc291cmNlRGlmZmVyZW5jZSBpbXBsZW1lbnRzIElEaWZmZXJlbmNlPFJlc291cmNlPiB7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcmVzb3VyY2Ugd2FzIGFkZGVkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXNBZGRpdGlvbjogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHJlc291cmNlIHdhcyByZW1vdmVkXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXNSZW1vdmFsOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcmVzb3VyY2Ugd2FzIGltcG9ydGVkXG4gICAqL1xuICBwdWJsaWMgaXNJbXBvcnQ/OiBib29sZWFuO1xuXG4gIC8qKiBQcm9wZXJ0eS1sZXZlbCBjaGFuZ2VzIG9uIHRoZSByZXNvdXJjZSAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHByb3BlcnR5RGlmZnM6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4gfTtcblxuICAvKiogQ2hhbmdlcyB0byBub24tcHJvcGVydHkgbGV2ZWwgYXR0cmlidXRlcyBvZiB0aGUgcmVzb3VyY2UgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBvdGhlckRpZmZzOiB7IFtrZXk6IHN0cmluZ106IERpZmZlcmVuY2U8YW55PiB9O1xuXG4gIC8qKiBUaGUgcmVzb3VyY2UgdHlwZSAob3Igb2xkIGFuZCBuZXcgdHlwZSBpZiBpdCBoYXMgY2hhbmdlZCkgKi9cbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZVR5cGVzOiB7IHJlYWRvbmx5IG9sZFR5cGU/OiBzdHJpbmc7IHJlYWRvbmx5IG5ld1R5cGU/OiBzdHJpbmcgfTtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgb2xkVmFsdWU6IFJlc291cmNlIHwgdW5kZWZpbmVkLFxuICAgIHB1YmxpYyByZWFkb25seSBuZXdWYWx1ZTogUmVzb3VyY2UgfCB1bmRlZmluZWQsXG4gICAgYXJnczoge1xuICAgICAgcmVzb3VyY2VUeXBlOiB7IG9sZFR5cGU/OiBzdHJpbmc7IG5ld1R5cGU/OiBzdHJpbmcgfTtcbiAgICAgIHByb3BlcnR5RGlmZnM6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4gfTtcbiAgICAgIG90aGVyRGlmZnM6IHsgW2tleTogc3RyaW5nXTogRGlmZmVyZW5jZTxhbnk+IH07XG4gICAgfSxcbiAgKSB7XG4gICAgdGhpcy5yZXNvdXJjZVR5cGVzID0gYXJncy5yZXNvdXJjZVR5cGU7XG4gICAgdGhpcy5wcm9wZXJ0eURpZmZzID0gYXJncy5wcm9wZXJ0eURpZmZzO1xuICAgIHRoaXMub3RoZXJEaWZmcyA9IGFyZ3Mub3RoZXJEaWZmcztcblxuICAgIHRoaXMuaXNBZGRpdGlvbiA9IG9sZFZhbHVlID09PSB1bmRlZmluZWQ7XG4gICAgdGhpcy5pc1JlbW92YWwgPSBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkO1xuICAgIHRoaXMuaXNJbXBvcnQgPSB1bmRlZmluZWQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9sZFByb3BlcnRpZXMoKTogUHJvcGVydHlNYXAgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLm9sZFZhbHVlICYmIHRoaXMub2xkVmFsdWUuUHJvcGVydGllcztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbmV3UHJvcGVydGllcygpOiBQcm9wZXJ0eU1hcCB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMubmV3VmFsdWUgJiYgdGhpcy5uZXdWYWx1ZS5Qcm9wZXJ0aWVzO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyByZXNvdXJjZSB3YXMgbW9kaWZpZWQgYXQgYWxsXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzRGlmZmVyZW50KCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmRpZmZlcmVuY2VDb3VudCA+IDAgfHwgdGhpcy5vbGRSZXNvdXJjZVR5cGUgIT09IHRoaXMubmV3UmVzb3VyY2VUeXBlO1xuICB9XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIHJlc291cmNlIHdhcyB1cGRhdGVkIGluLXBsYWNlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGlzVXBkYXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzRGlmZmVyZW50ICYmICF0aGlzLmlzQWRkaXRpb24gJiYgIXRoaXMuaXNSZW1vdmFsO1xuICB9XG5cbiAgcHVibGljIGdldCBvbGRSZXNvdXJjZVR5cGUoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG5ld1Jlc291cmNlVHlwZSgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGwgYWN0dWFsIHByb3BlcnR5IHVwZGF0ZXNcbiAgICovXG4gIHB1YmxpYyBnZXQgcHJvcGVydHlVcGRhdGVzKCk6IHsgW2tleTogc3RyaW5nXTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4gfSB7XG4gICAgcmV0dXJuIG9ubHlDaGFuZ2VzKHRoaXMucHJvcGVydHlEaWZmcyk7XG4gIH1cblxuICAvKipcbiAgICogQWxsIGFjdHVhbCBcIm90aGVyXCIgdXBkYXRlc1xuICAgKi9cbiAgcHVibGljIGdldCBvdGhlckNoYW5nZXMoKTogeyBba2V5OiBzdHJpbmddOiBEaWZmZXJlbmNlPGFueT4gfSB7XG4gICAgcmV0dXJuIG9ubHlDaGFuZ2VzKHRoaXMub3RoZXJEaWZmcyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIHJlc291cmNlIHR5cGUgd2FzIGNoYW5nZWQgaW4gdGhpcyBkaWZmXG4gICAqXG4gICAqIFRoaXMgaXMgbm90IGEgdmFsaWQgb3BlcmF0aW9uIGluIENsb3VkRm9ybWF0aW9uIGJ1dCB0byBiZSBkZWZlbnNpdmUgd2UncmUgZ29pbmdcbiAgICogdG8gYmUgYXdhcmUgb2YgaXQgYW55d2F5LlxuICAgKi9cbiAgcHVibGljIGdldCByZXNvdXJjZVR5cGVDaGFuZ2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAodGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGUgIT09IHVuZGVmaW5lZFxuICAgICAgICAmJiB0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICYmIHRoaXMucmVzb3VyY2VUeXBlcy5vbGRUeXBlICE9PSB0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSByZXNvdXJjZSB0eXBlIGlmIGl0IHdhcyB1bmNoYW5nZWRcbiAgICpcbiAgICogSWYgdGhlIHJlc291cmNlIHR5cGUgd2FzIGNoYW5nZWQsIGl0J3MgYW4gZXJyb3IgdG8gY2FsbCB0aGlzLlxuICAgKi9cbiAgcHVibGljIGdldCByZXNvdXJjZVR5cGUoKTogc3RyaW5nIHtcbiAgICBpZiAodGhpcy5yZXNvdXJjZVR5cGVDaGFuZ2VkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBnZXQgLnJlc291cmNlVHlwZSwgYmVjYXVzZSB0aGUgdHlwZSB3YXMgY2hhbmdlZCcpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGUgfHwgdGhpcy5yZXNvdXJjZVR5cGVzLm5ld1R5cGUhO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlcGxhY2UgYSBQcm9wZXJ0eUNoYW5nZSBpbiB0aGlzIG9iamVjdFxuICAgKlxuICAgKiBUaGlzIGFmZmVjdHMgdGhlIHByb3BlcnR5IGRpZmYgYXMgaXQgaXMgc3VtbWFyaXplZCB0byB1c2VycywgYnV0IGl0IERPRVNcbiAgICogTk9UIGFmZmVjdCBlaXRoZXIgdGhlIFwib2xkVmFsdWVcIiBvciBcIm5ld1ZhbHVlXCIgdmFsdWVzOyB0aG9zZSBzdGlsbCBjb250YWluXG4gICAqIHRoZSBhY3R1YWwgdGVtcGxhdGUgdmFsdWVzIGFzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyICh0aGV5IG1pZ2h0IHN0aWxsIGJlXG4gICAqIHVzZWQgZm9yIGRvd25zdHJlYW0gcHJvY2Vzc2luZykuXG4gICAqL1xuICBwdWJsaWMgc2V0UHJvcGVydHlDaGFuZ2UocHJvcGVydHlOYW1lOiBzdHJpbmcsIGNoYW5nZTogUHJvcGVydHlEaWZmZXJlbmNlPGFueT4pIHtcbiAgICB0aGlzLnByb3BlcnR5RGlmZnNbcHJvcGVydHlOYW1lXSA9IGNoYW5nZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXBsYWNlIGEgT3RoZXJDaGFuZ2UgaW4gdGhpcyBvYmplY3RcbiAgICpcbiAgICogVGhpcyBhZmZlY3RzIHRoZSBwcm9wZXJ0eSBkaWZmIGFzIGl0IGlzIHN1bW1hcml6ZWQgdG8gdXNlcnMsIGJ1dCBpdCBET0VTXG4gICAqIE5PVCBhZmZlY3QgZWl0aGVyIHRoZSBcIm9sZFZhbHVlXCIgb3IgXCJuZXdWYWx1ZVwiIHZhbHVlczsgdGhvc2Ugc3RpbGwgY29udGFpblxuICAgKiB0aGUgYWN0dWFsIHRlbXBsYXRlIHZhbHVlcyBhcyBwcm92aWRlZCBieSB0aGUgdXNlciAodGhleSBtaWdodCBzdGlsbCBiZVxuICAgKiB1c2VkIGZvciBkb3duc3RyZWFtIHByb2Nlc3NpbmcpLlxuICAgKi9cbiAgcHVibGljIHNldE90aGVyQ2hhbmdlKG90aGVyTmFtZTogc3RyaW5nLCBjaGFuZ2U6IFByb3BlcnR5RGlmZmVyZW5jZTxhbnk+KSB7XG4gICAgdGhpcy5vdGhlckRpZmZzW290aGVyTmFtZV0gPSBjaGFuZ2U7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNoYW5nZUltcGFjdCgpOiBSZXNvdXJjZUltcGFjdCB7XG4gICAgaWYgKHRoaXMuaXNJbXBvcnQpIHtcbiAgICAgIHJldHVybiBSZXNvdXJjZUltcGFjdC5XSUxMX0lNUE9SVDtcbiAgICB9XG4gICAgLy8gQ2hlY2sgdGhlIFR5cGUgZmlyc3RcbiAgICBpZiAodGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGUgIT09IHRoaXMucmVzb3VyY2VUeXBlcy5uZXdUeXBlKSB7XG4gICAgICBpZiAodGhpcy5yZXNvdXJjZVR5cGVzLm9sZFR5cGUgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gUmVzb3VyY2VJbXBhY3QuV0lMTF9DUkVBVEU7IH1cbiAgICAgIGlmICh0aGlzLnJlc291cmNlVHlwZXMubmV3VHlwZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiB0aGlzLm9sZFZhbHVlIS5EZWxldGlvblBvbGljeSA9PT0gJ1JldGFpbidcbiAgICAgICAgICA/IFJlc291cmNlSW1wYWN0LldJTExfT1JQSEFOXG4gICAgICAgICAgOiBSZXNvdXJjZUltcGFjdC5XSUxMX0RFU1RST1k7XG4gICAgICB9XG4gICAgICByZXR1cm4gUmVzb3VyY2VJbXBhY3QuV0lMTF9SRVBMQUNFO1xuICAgIH1cblxuICAgIC8vIEJhc2UgaW1wYWN0IChiZWZvcmUgd2UgbWl4IGluIHRoZSB3b3JzdCBvZiB0aGUgcHJvcGVydHkgaW1wYWN0cyk7XG4gICAgLy8gV0lMTF9VUERBVEUgaWYgd2UgaGF2ZSBcIm90aGVyXCIgY2hhbmdlcywgTk9fQ0hBTkdFIGlmIHRoZXJlIGFyZSBubyBcIm90aGVyXCIgY2hhbmdlcy5cbiAgICBjb25zdCBiYXNlSW1wYWN0ID0gT2JqZWN0LmtleXModGhpcy5vdGhlckNoYW5nZXMpLmxlbmd0aCA+IDAgPyBSZXNvdXJjZUltcGFjdC5XSUxMX1VQREFURSA6IFJlc291cmNlSW1wYWN0Lk5PX0NIQU5HRTtcblxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMucHJvcGVydHlEaWZmcylcbiAgICAgIC5tYXAoZWx0ID0+IGVsdC5jaGFuZ2VJbXBhY3QpXG4gICAgICAucmVkdWNlKHdvcnN0SW1wYWN0LCBiYXNlSW1wYWN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb3VudCBvZiBhY3R1YWwgZGlmZmVyZW5jZXMgKG5vdCBvZiBlbGVtZW50cylcbiAgICovXG4gIHB1YmxpYyBnZXQgZGlmZmVyZW5jZUNvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE9iamVjdC52YWx1ZXModGhpcy5wcm9wZXJ0eVVwZGF0ZXMpLmxlbmd0aFxuICAgICAgKyBPYmplY3QudmFsdWVzKHRoaXMub3RoZXJDaGFuZ2VzKS5sZW5ndGg7XG4gIH1cblxuICAvKipcbiAgICogSW52b2tlIGEgY2FsbGJhY2sgZm9yIGVhY2ggYWN0dWFsIGRpZmZlcmVuY2VcbiAgICovXG4gIHB1YmxpYyBmb3JFYWNoRGlmZmVyZW5jZShjYjogKHR5cGU6ICdQcm9wZXJ0eScgfCAnT3RoZXInLCBuYW1lOiBzdHJpbmcsIHZhbHVlOiBEaWZmZXJlbmNlPGFueT4gfCBQcm9wZXJ0eURpZmZlcmVuY2U8YW55PikgPT4gYW55KSB7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5wcm9wZXJ0eVVwZGF0ZXMpLnNvcnQoKSkge1xuICAgICAgY2IoJ1Byb3BlcnR5Jywga2V5LCB0aGlzLnByb3BlcnR5VXBkYXRlc1trZXldKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXModGhpcy5vdGhlckNoYW5nZXMpLnNvcnQoKSkge1xuICAgICAgY2IoJ090aGVyJywga2V5LCB0aGlzLm90aGVyRGlmZnNba2V5XSk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1Byb3BlcnR5RGlmZmVyZW5jZTxUPihkaWZmOiBEaWZmZXJlbmNlPFQ+KTogZGlmZiBpcyBQcm9wZXJ0eURpZmZlcmVuY2U8VD4ge1xuICByZXR1cm4gKGRpZmYgYXMgUHJvcGVydHlEaWZmZXJlbmNlPFQ+KS5jaGFuZ2VJbXBhY3QgIT09IHVuZGVmaW5lZDtcbn1cblxuLyoqXG4gKiBGaWx0ZXIgYSBtYXAgb2YgSURpZmZlcmVuY2VzIGRvd24gdG8gb25seSByZXRhaW4gdGhlIGFjdHVhbCBjaGFuZ2VzXG4gKi9cbmZ1bmN0aW9uIG9ubHlDaGFuZ2VzPFYsIFQgZXh0ZW5kcyBJRGlmZmVyZW5jZTxWPj4oeHM6IHtba2V5OiBzdHJpbmddOiBUfSk6IHtba2V5OiBzdHJpbmddOiBUfSB7XG4gIGNvbnN0IHJldDogeyBba2V5OiBzdHJpbmddOiBUIH0gPSB7fTtcbiAgZm9yIChjb25zdCBba2V5LCBkaWZmXSBvZiBPYmplY3QuZW50cmllcyh4cykpIHtcbiAgICBpZiAoZGlmZi5pc0RpZmZlcmVudCkge1xuICAgICAgcmV0W2tleV0gPSBkaWZmO1xuICAgIH1cbiAgfVxuICByZXR1cm4gcmV0O1xufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadResourceModel = exports.mangleLikeCloudFormation = exports.unionOf = exports.diffKeyedEntities = exports.deepEqual = void 0;\nconst aws_service_spec_1 = require(\"@aws-cdk/aws-service-spec\");\n/**\n * Compares two objects for equality, deeply. The function handles arguments that are\n * +null+, +undefined+, arrays and objects. For objects, the function will not take the\n * object prototype into account for the purpose of the comparison, only the values of\n * properties reported by +Object.keys+.\n *\n * If both operands can be parsed to equivalent numbers, will return true.\n * This makes diff consistent with CloudFormation, where a numeric 10 and a literal \"10\"\n * are considered equivalent.\n *\n * @param lvalue the left operand of the equality comparison.\n * @param rvalue the right operand of the equality comparison.\n *\n * @returns +true+ if both +lvalue+ and +rvalue+ are equivalent to each other.\n */\nfunction deepEqual(lvalue, rvalue) {\n if (lvalue === rvalue) {\n return true;\n }\n // CloudFormation allows passing strings into boolean-typed fields\n if (((typeof lvalue === 'string' && typeof rvalue === 'boolean') ||\n (typeof lvalue === 'boolean' && typeof rvalue === 'string')) &&\n lvalue.toString() === rvalue.toString()) {\n return true;\n }\n // allows a numeric 10 and a literal \"10\" to be equivalent;\n // this is consistent with CloudFormation.\n if ((typeof lvalue === 'string' || typeof rvalue === 'string') &&\n safeParseFloat(lvalue) === safeParseFloat(rvalue)) {\n return true;\n }\n if (typeof lvalue !== typeof rvalue) {\n return false;\n }\n if (Array.isArray(lvalue) !== Array.isArray(rvalue)) {\n return false;\n }\n if (Array.isArray(lvalue) /* && Array.isArray(rvalue) */) {\n if (lvalue.length !== rvalue.length) {\n return false;\n }\n for (let i = 0; i < lvalue.length; i++) {\n if (!deepEqual(lvalue[i], rvalue[i])) {\n return false;\n }\n }\n return true;\n }\n if (typeof lvalue === 'object' /* && typeof rvalue === 'object' */) {\n if (lvalue === null || rvalue === null) {\n // If both were null, they'd have been ===\n return false;\n }\n const keys = Object.keys(lvalue);\n if (keys.length !== Object.keys(rvalue).length) {\n return false;\n }\n for (const key of keys) {\n if (!rvalue.hasOwnProperty(key)) {\n return false;\n }\n if (key === 'DependsOn') {\n if (!dependsOnEqual(lvalue[key], rvalue[key])) {\n return false;\n }\n ;\n // check differences other than `DependsOn`\n continue;\n }\n if (!deepEqual(lvalue[key], rvalue[key])) {\n return false;\n }\n }\n return true;\n }\n // Neither object, nor array: I deduce this is primitive type\n // Primitive type and not ===, so I deduce not deepEqual\n return false;\n}\nexports.deepEqual = deepEqual;\n/**\n * Compares two arguments to DependsOn for equality.\n *\n * @param lvalue the left operand of the equality comparison.\n * @param rvalue the right operand of the equality comparison.\n *\n * @returns +true+ if both +lvalue+ and +rvalue+ are equivalent to each other.\n */\nfunction dependsOnEqual(lvalue, rvalue) {\n // allows ['Value'] and 'Value' to be equal\n if (Array.isArray(lvalue) !== Array.isArray(rvalue)) {\n const array = Array.isArray(lvalue) ? lvalue : rvalue;\n const nonArray = Array.isArray(lvalue) ? rvalue : lvalue;\n if (array.length === 1 && deepEqual(array[0], nonArray)) {\n return true;\n }\n return false;\n }\n // allows arrays passed to DependsOn to be equivalent irrespective of element order\n if (Array.isArray(lvalue) && Array.isArray(rvalue)) {\n if (lvalue.length !== rvalue.length) {\n return false;\n }\n for (let i = 0; i < lvalue.length; i++) {\n for (let j = 0; j < lvalue.length; j++) {\n if ((!deepEqual(lvalue[i], rvalue[j])) && (j === lvalue.length - 1)) {\n return false;\n }\n break;\n }\n }\n return true;\n }\n return false;\n}\n/**\n * Produce the differences between two maps, as a map, using a specified diff function.\n *\n * @param oldValue the old map.\n * @param newValue the new map.\n * @param elementDiff the diff function.\n *\n * @returns a map representing the differences between +oldValue+ and +newValue+.\n */\nfunction diffKeyedEntities(oldValue, newValue, elementDiff) {\n const result = {};\n for (const logicalId of unionOf(Object.keys(oldValue || {}), Object.keys(newValue || {}))) {\n const oldElement = oldValue && oldValue[logicalId];\n const newElement = newValue && newValue[logicalId];\n if (oldElement === undefined && newElement === undefined) {\n // Shouldn't happen in reality, but may happen in tests. Skip.\n continue;\n }\n result[logicalId] = elementDiff(oldElement, newElement, logicalId);\n }\n return result;\n}\nexports.diffKeyedEntities = diffKeyedEntities;\n/**\n * Computes the union of two sets of strings.\n *\n * @param lv the left set of strings.\n * @param rv the right set of strings.\n *\n * @returns a new array containing all elemebts from +lv+ and +rv+, with no duplicates.\n */\nfunction unionOf(lv, rv) {\n const result = new Set(lv);\n for (const v of rv) {\n result.add(v);\n }\n return new Array(...result);\n}\nexports.unionOf = unionOf;\n/**\n * GetStackTemplate flattens any codepoint greater than \"\\u7f\" to \"?\". This is\n * true even for codepoints in the supplemental planes which are represented\n * in JS as surrogate pairs, all the way up to \"\\u{10ffff}\".\n *\n * This function implements the same mangling in order to provide diagnostic\n * information in `cdk diff`.\n */\nfunction mangleLikeCloudFormation(payload) {\n return payload.replace(/[\\u{80}-\\u{10ffff}]/gu, '?');\n}\nexports.mangleLikeCloudFormation = mangleLikeCloudFormation;\n/**\n * A parseFloat implementation that does the right thing for\n * strings like '0.0.0'\n * (for which JavaScript's parseFloat() returns 0).\n * We return NaN for all of these strings that do not represent numbers,\n * and so comparing them fails,\n * and doesn't short-circuit the diff logic.\n */\nfunction safeParseFloat(str) {\n return Number(str);\n}\n/**\n * Lazily load the service spec database and cache the loaded db\n*/\nlet DATABASE;\nfunction database() {\n if (!DATABASE) {\n DATABASE = (0, aws_service_spec_1.loadAwsServiceSpecSync)();\n }\n return DATABASE;\n}\n/**\n * Load a Resource model from the Service Spec Database\n *\n * The database is loaded lazily and cached across multiple calls to `loadResourceModel`.\n */\nfunction loadResourceModel(type) {\n return database().lookup('resource', 'cloudFormationType', 'equals', type)[0];\n}\nexports.loadResourceModel = loadResourceModel;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0VBQW1FO0FBR25FOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsU0FBZ0IsU0FBUyxDQUFDLE1BQVcsRUFBRSxNQUFXO0lBQ2hELElBQUksTUFBTSxLQUFLLE1BQU0sRUFBRSxDQUFDO1FBQUMsT0FBTyxJQUFJLENBQUM7SUFBQyxDQUFDO0lBQ3ZDLGtFQUFrRTtJQUNsRSxJQUFJLENBQUMsQ0FBQyxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksT0FBTyxNQUFNLEtBQUssU0FBUyxDQUFDO1FBQzVELENBQUMsT0FBTyxNQUFNLEtBQUssU0FBUyxJQUFJLE9BQU8sTUFBTSxLQUFLLFFBQVEsQ0FBQyxDQUFDO1FBQzVELE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztRQUM1QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCwyREFBMkQ7SUFDM0QsMENBQTBDO0lBQzFDLElBQUksQ0FBQyxPQUFPLE1BQU0sS0FBSyxRQUFRLElBQUksT0FBTyxNQUFNLEtBQUssUUFBUSxDQUFDO1FBQzFELGNBQWMsQ0FBQyxNQUFNLENBQUMsS0FBSyxjQUFjLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUN0RCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLE9BQU8sTUFBTSxLQUFLLE9BQU8sTUFBTSxFQUFFLENBQUM7UUFBQyxPQUFPLEtBQUssQ0FBQztJQUFDLENBQUM7SUFDdEQsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sS0FBSyxDQUFDO0lBQUMsQ0FBQztJQUN0RSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsOEJBQThC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QVEsRUFBRSxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsb0JBQW9CLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hGLENBQUM7QUFGRCw4Q0FFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvYWRBd3NTZXJ2aWNlU3BlY1N5bmMgfSBmcm9tICdAYXdzLWNkay9hd3Mtc2VydmljZS1zcGVjJztcbmltcG9ydCB7IFJlc291cmNlLCBTcGVjRGF0YWJhc2UgfSBmcm9tICdAYXdzLWNkay9zZXJ2aWNlLXNwZWMtdHlwZXMnO1xuXG4vKipcbiAqIENvbXBhcmVzIHR3byBvYmplY3RzIGZvciBlcXVhbGl0eSwgZGVlcGx5LiBUaGUgZnVuY3Rpb24gaGFuZGxlcyBhcmd1bWVudHMgdGhhdCBhcmVcbiAqICtudWxsKywgK3VuZGVmaW5lZCssIGFycmF5cyBhbmQgb2JqZWN0cy4gRm9yIG9iamVjdHMsIHRoZSBmdW5jdGlvbiB3aWxsIG5vdCB0YWtlIHRoZVxuICogb2JqZWN0IHByb3RvdHlwZSBpbnRvIGFjY291bnQgZm9yIHRoZSBwdXJwb3NlIG9mIHRoZSBjb21wYXJpc29uLCBvbmx5IHRoZSB2YWx1ZXMgb2ZcbiAqIHByb3BlcnRpZXMgcmVwb3J0ZWQgYnkgK09iamVjdC5rZXlzKy5cbiAqXG4gKiBJZiBib3RoIG9wZXJhbmRzIGNhbiBiZSBwYXJzZWQgdG8gZXF1aXZhbGVudCBudW1iZXJzLCB3aWxsIHJldHVybiB0cnVlLlxuICogVGhpcyBtYWtlcyBkaWZmIGNvbnNpc3RlbnQgd2l0aCBDbG91ZEZvcm1hdGlvbiwgd2hlcmUgYSBudW1lcmljIDEwIGFuZCBhIGxpdGVyYWwgXCIxMFwiXG4gKiBhcmUgY29uc2lkZXJlZCBlcXVpdmFsZW50LlxuICpcbiAqIEBwYXJhbSBsdmFsdWUgdGhlIGxlZnQgb3BlcmFuZCBvZiB0aGUgZXF1YWxpdHkgY29tcGFyaXNvbi5cbiAqIEBwYXJhbSBydmFsdWUgdGhlIHJpZ2h0IG9wZXJhbmQgb2YgdGhlIGVxdWFsaXR5IGNvbXBhcmlzb24uXG4gKlxuICogQHJldHVybnMgK3RydWUrIGlmIGJvdGggK2x2YWx1ZSsgYW5kICtydmFsdWUrIGFyZSBlcXVpdmFsZW50IHRvIGVhY2ggb3RoZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWVwRXF1YWwobHZhbHVlOiBhbnksIHJ2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIGlmIChsdmFsdWUgPT09IHJ2YWx1ZSkgeyByZXR1cm4gdHJ1ZTsgfVxuICAvLyBDbG91ZEZvcm1hdGlvbiBhbGxvd3MgcGFzc2luZyBzdHJpbmdzIGludG8gYm9vbGVhbi10eXBlZCBmaWVsZHNcbiAgaWYgKCgodHlwZW9mIGx2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIHJ2YWx1ZSA9PT0gJ2Jvb2xlYW4nKSB8fFxuICAgICAgKHR5cGVvZiBsdmFsdWUgPT09ICdib29sZWFuJyAmJiB0eXBlb2YgcnZhbHVlID09PSAnc3RyaW5nJykpICYmXG4gICAgICBsdmFsdWUudG9TdHJpbmcoKSA9PT0gcnZhbHVlLnRvU3RyaW5nKCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICAvLyBhbGxvd3MgYSBudW1lcmljIDEwIGFuZCBhIGxpdGVyYWwgXCIxMFwiIHRvIGJlIGVxdWl2YWxlbnQ7XG4gIC8vIHRoaXMgaXMgY29uc2lzdGVudCB3aXRoIENsb3VkRm9ybWF0aW9uLlxuICBpZiAoKHR5cGVvZiBsdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBydmFsdWUgPT09ICdzdHJpbmcnKSAmJlxuICAgICAgc2FmZVBhcnNlRmxvYXQobHZhbHVlKSA9PT0gc2FmZVBhcnNlRmxvYXQocnZhbHVlKSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmICh0eXBlb2YgbHZhbHVlICE9PSB0eXBlb2YgcnZhbHVlKSB7IHJldHVybiBmYWxzZTsgfVxuICBpZiAoQXJyYXkuaXNBcnJheShsdmFsdWUpICE9PSBBcnJheS5pc0FycmF5KHJ2YWx1ZSkpIHsgcmV0dXJuIGZhbHNlOyB9XG4gIGlmIChBcnJheS5pc0FycmF5KGx2YWx1ZSkgLyogJiYgQXJyYXkuaXNBcnJheShydmFsdWUpICovKSB7XG4gICAgaWYgKGx2YWx1ZS5sZW5ndGggIT09IHJ2YWx1ZS5sZW5ndGgpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgZm9yIChsZXQgaSA9IDAgOyBpIDwgbHZhbHVlLmxlbmd0aCA7IGkrKykge1xuICAgICAgaWYgKCFkZWVwRXF1YWwobHZhbHVlW2ldLCBydmFsdWVbaV0pKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBpZiAodHlwZW9mIGx2YWx1ZSA9PT0gJ29iamVjdCcgLyogJiYgdHlwZW9mIHJ2YWx1ZSA9PT0gJ29iamVjdCcgKi8pIHtcbiAgICBpZiAobHZhbHVlID09PSBudWxsIHx8IHJ2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgLy8gSWYgYm90aCB3ZXJlIG51bGwsIHRoZXknZCBoYXZlIGJlZW4gPT09XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhsdmFsdWUpO1xuICAgIGlmIChrZXlzLmxlbmd0aCAhPT0gT2JqZWN0LmtleXMocnZhbHVlKS5sZW5ndGgpIHsgcmV0dXJuIGZhbHNlOyB9XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgaWYgKCFydmFsdWUuaGFzT3duUHJvcGVydHkoa2V5KSkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICAgIGlmIChrZXkgPT09ICdEZXBlbmRzT24nKSB7XG4gICAgICAgIGlmICghZGVwZW5kc09uRXF1YWwobHZhbHVlW2tleV0sIHJ2YWx1ZVtrZXldKSkgeyByZXR1cm4gZmFsc2U7IH07XG4gICAgICAgIC8vIGNoZWNrIGRpZmZlcmVuY2VzIG90aGVyIHRoYW4gYERlcGVuZHNPbmBcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIWRlZXBFcXVhbChsdmFsdWVba2V5XSwgcnZhbHVlW2tleV0pKSB7IHJldHVybiBmYWxzZTsgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICAvLyBOZWl0aGVyIG9iamVjdCwgbm9yIGFycmF5OiBJIGRlZHVjZSB0aGlzIGlzIHByaW1pdGl2ZSB0eXBlXG4gIC8vIFByaW1pdGl2ZSB0eXBlIGFuZCBub3QgPT09LCBzbyBJIGRlZHVjZSBub3QgZGVlcEVxdWFsXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBDb21wYXJlcyB0d28gYXJndW1lbnRzIHRvIERlcGVuZHNPbiBmb3IgZXF1YWxpdHkuXG4gKlxuICogQHBhcmFtIGx2YWx1ZSB0aGUgbGVmdCBvcGVyYW5kIG9mIHRoZSBlcXVhbGl0eSBjb21wYXJpc29uLlxuICogQHBhcmFtIHJ2YWx1ZSB0aGUgcmlnaHQgb3BlcmFuZCBvZiB0aGUgZXF1YWxpdHkgY29tcGFyaXNvbi5cbiAqXG4gKiBAcmV0dXJucyArdHJ1ZSsgaWYgYm90aCArbHZhbHVlKyBhbmQgK3J2YWx1ZSsgYXJlIGVxdWl2YWxlbnQgdG8gZWFjaCBvdGhlci5cbiAqL1xuZnVuY3Rpb24gZGVwZW5kc09uRXF1YWwobHZhbHVlOiBhbnksIHJ2YWx1ZTogYW55KTogYm9vbGVhbiB7XG4gIC8vIGFsbG93cyBbJ1ZhbHVlJ10gYW5kICdWYWx1ZScgdG8gYmUgZXF1YWxcbiAgaWYgKEFycmF5LmlzQXJyYXkobHZhbHVlKSAhPT0gQXJyYXkuaXNBcnJheShydmFsdWUpKSB7XG4gICAgY29uc3QgYXJyYXkgPSBBcnJheS5pc0FycmF5KGx2YWx1ZSkgPyBsdmFsdWUgOiBydmFsdWU7XG4gICAgY29uc3Qgbm9uQXJyYXkgPSBBcnJheS5pc0FycmF5KGx2YWx1ZSkgPyBydmFsdWUgOiBsdmFsdWU7XG5cbiAgICBpZiAoYXJyYXkubGVuZ3RoID09PSAxICYmIGRlZXBFcXVhbChhcnJheVswXSwgbm9uQXJyYXkpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLy8gYWxsb3dzIGFycmF5cyBwYXNzZWQgdG8gRGVwZW5kc09uIHRvIGJlIGVxdWl2YWxlbnQgaXJyZXNwZWN0aXZlIG9mIGVsZW1lbnQgb3JkZXJcbiAgaWYgKEFycmF5LmlzQXJyYXkobHZhbHVlKSAmJiBBcnJheS5pc0FycmF5KHJ2YWx1ZSkpIHtcbiAgICBpZiAobHZhbHVlLmxlbmd0aCAhPT0gcnZhbHVlLmxlbmd0aCkgeyByZXR1cm4gZmFsc2U7IH1cbiAgICBmb3IgKGxldCBpID0gMCA7IGkgPCBsdmFsdWUubGVuZ3RoIDsgaSsrKSB7XG4gICAgICBmb3IgKGxldCBqID0gMCA7IGogPCBsdmFsdWUubGVuZ3RoIDsgaisrKSB7XG4gICAgICAgIGlmICgoIWRlZXBFcXVhbChsdmFsdWVbaV0sIHJ2YWx1ZVtqXSkpICYmIChqID09PSBsdmFsdWUubGVuZ3RoIC0gMSkpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFByb2R1Y2UgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gdHdvIG1hcHMsIGFzIGEgbWFwLCB1c2luZyBhIHNwZWNpZmllZCBkaWZmIGZ1bmN0aW9uLlxuICpcbiAqIEBwYXJhbSBvbGRWYWx1ZSAgdGhlIG9sZCBtYXAuXG4gKiBAcGFyYW0gbmV3VmFsdWUgIHRoZSBuZXcgbWFwLlxuICogQHBhcmFtIGVsZW1lbnREaWZmIHRoZSBkaWZmIGZ1bmN0aW9uLlxuICpcbiAqIEByZXR1cm5zIGEgbWFwIHJlcHJlc2VudGluZyB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiArb2xkVmFsdWUrIGFuZCArbmV3VmFsdWUrLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZGlmZktleWVkRW50aXRpZXM8VD4oXG4gIG9sZFZhbHVlOiB7IFtrZXk6IHN0cmluZ106IGFueSB9IHwgdW5kZWZpbmVkLFxuICBuZXdWYWx1ZTogeyBba2V5OiBzdHJpbmddOiBhbnkgfSB8IHVuZGVmaW5lZCxcbiAgZWxlbWVudERpZmY6IChvbGRFbGVtZW50OiBhbnksIG5ld0VsZW1lbnQ6IGFueSwga2V5OiBzdHJpbmcpID0+IFQpOiB7IFtuYW1lOiBzdHJpbmddOiBUIH0ge1xuICBjb25zdCByZXN1bHQ6IHsgW25hbWU6IHN0cmluZ106IFQgfSA9IHt9O1xuICBmb3IgKGNvbnN0IGxvZ2ljYWxJZCBvZiB1bmlvbk9mKE9iamVjdC5rZXlzKG9sZFZhbHVlIHx8IHt9KSwgT2JqZWN0LmtleXMobmV3VmFsdWUgfHwge30pKSkge1xuICAgIGNvbnN0IG9sZEVsZW1lbnQgPSBvbGRWYWx1ZSAmJiBvbGRWYWx1ZVtsb2dpY2FsSWRdO1xuICAgIGNvbnN0IG5ld0VsZW1lbnQgPSBuZXdWYWx1ZSAmJiBuZXdWYWx1ZVtsb2dpY2FsSWRdO1xuXG4gICAgaWYgKG9sZEVsZW1lbnQgPT09IHVuZGVmaW5lZCAmJiBuZXdFbGVtZW50ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFNob3VsZG4ndCBoYXBwZW4gaW4gcmVhbGl0eSwgYnV0IG1heSBoYXBwZW4gaW4gdGVzdHMuIFNraXAuXG4gICAgICBjb250aW51ZTtcbiAgICB9XG5cbiAgICByZXN1bHRbbG9naWNhbElkXSA9IGVsZW1lbnREaWZmKG9sZEVsZW1lbnQsIG5ld0VsZW1lbnQsIGxvZ2ljYWxJZCk7XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLyoqXG4gKiBDb21wdXRlcyB0aGUgdW5pb24gb2YgdHdvIHNldHMgb2Ygc3RyaW5ncy5cbiAqXG4gKiBAcGFyYW0gbHYgdGhlIGxlZnQgc2V0IG9mIHN0cmluZ3MuXG4gKiBAcGFyYW0gcnYgdGhlIHJpZ2h0IHNldCBvZiBzdHJpbmdzLlxuICpcbiAqIEByZXR1cm5zIGEgbmV3IGFycmF5IGNvbnRhaW5pbmcgYWxsIGVsZW1lYnRzIGZyb20gK2x2KyBhbmQgK3J2Kywgd2l0aCBubyBkdXBsaWNhdGVzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gdW5pb25PZihsdjogc3RyaW5nW10gfCBTZXQ8c3RyaW5nPiwgcnY6IHN0cmluZ1tdIHwgU2V0PHN0cmluZz4pOiBzdHJpbmdbXSB7XG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBTZXQobHYpO1xuICBmb3IgKGNvbnN0IHYgb2YgcnYpIHtcbiAgICByZXN1bHQuYWRkKHYpO1xuICB9XG4gIHJldHVybiBuZXcgQXJyYXkoLi4ucmVzdWx0KTtcbn1cblxuLyoqXG4gKiBHZXRTdGFja1RlbXBsYXRlIGZsYXR0ZW5zIGFueSBjb2RlcG9pbnQgZ3JlYXRlciB0aGFuIFwiXFx1N2ZcIiB0byBcIj9cIi4gVGhpcyBpc1xuICogdHJ1ZSBldmVuIGZvciBjb2RlcG9pbnRzIGluIHRoZSBzdXBwbGVtZW50YWwgcGxhbmVzIHdoaWNoIGFyZSByZXByZXNlbnRlZFxuICogaW4gSlMgYXMgc3Vycm9nYXRlIHBhaXJzLCBhbGwgdGhlIHdheSB1cCB0byBcIlxcdXsxMGZmZmZ9XCIuXG4gKlxuICogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBzYW1lIG1hbmdsaW5nIGluIG9yZGVyIHRvIHByb3ZpZGUgZGlhZ25vc3RpY1xuICogaW5mb3JtYXRpb24gaW4gYGNkayBkaWZmYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hbmdsZUxpa2VDbG91ZEZvcm1hdGlvbihwYXlsb2FkOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHBheWxvYWQucmVwbGFjZSgvW1xcdXs4MH0tXFx1ezEwZmZmZn1dL2d1LCAnPycpO1xufVxuXG4vKipcbiAqIEEgcGFyc2VGbG9hdCBpbXBsZW1lbnRhdGlvbiB0aGF0IGRvZXMgdGhlIHJpZ2h0IHRoaW5nIGZvclxuICogc3RyaW5ncyBsaWtlICcwLjAuMCdcbiAqIChmb3Igd2hpY2ggSmF2YVNjcmlwdCdzIHBhcnNlRmxvYXQoKSByZXR1cm5zIDApLlxuICogV2UgcmV0dXJuIE5hTiBmb3IgYWxsIG9mIHRoZXNlIHN0cmluZ3MgdGhhdCBkbyBub3QgcmVwcmVzZW50IG51bWJlcnMsXG4gKiBhbmQgc28gY29tcGFyaW5nIHRoZW0gZmFpbHMsXG4gKiBhbmQgZG9lc24ndCBzaG9ydC1jaXJjdWl0IHRoZSBkaWZmIGxvZ2ljLlxuICovXG5mdW5jdGlvbiBzYWZlUGFyc2VGbG9hdChzdHI6IHN0cmluZyk6IG51bWJlciB7XG4gIHJldHVybiBOdW1iZXIoc3RyKTtcbn1cblxuLyoqXG4gKiBMYXppbHkgbG9hZCB0aGUgc2VydmljZSBzcGVjIGRhdGFiYXNlIGFuZCBjYWNoZSB0aGUgbG9hZGVkIGRiXG4qL1xubGV0IERBVEFCQVNFOiBTcGVjRGF0YWJhc2UgfCB1bmRlZmluZWQ7XG5mdW5jdGlvbiBkYXRhYmFzZSgpOiBTcGVjRGF0YWJhc2Uge1xuICBpZiAoIURBVEFCQVNFKSB7XG4gICAgREFUQUJBU0UgPSBsb2FkQXdzU2VydmljZVNwZWNTeW5jKCk7XG4gIH1cbiAgcmV0dXJuIERBVEFCQVNFO1xufVxuXG4vKipcbiAqIExvYWQgYSBSZXNvdXJjZSBtb2RlbCBmcm9tIHRoZSBTZXJ2aWNlIFNwZWMgRGF0YWJhc2VcbiAqXG4gKiBUaGUgZGF0YWJhc2UgaXMgbG9hZGVkIGxhemlseSBhbmQgY2FjaGVkIGFjcm9zcyBtdWx0aXBsZSBjYWxscyB0byBgbG9hZFJlc291cmNlTW9kZWxgLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbG9hZFJlc291cmNlTW9kZWwodHlwZTogc3RyaW5nKTogUmVzb3VyY2UgfCB1bmRlZmluZWQge1xuICByZXR1cm4gZGF0YWJhc2UoKS5sb29rdXAoJ3Jlc291cmNlJywgJ2Nsb3VkRm9ybWF0aW9uVHlwZScsICdlcXVhbHMnLCB0eXBlKVswXTtcbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DiffableCollection = void 0;\n/**\n * Calculate differences of immutable elements\n */\nclass DiffableCollection {\n constructor() {\n this.additions = [];\n this.removals = [];\n this.oldElements = [];\n this.newElements = [];\n }\n addOld(...elements) {\n this.oldElements.push(...elements);\n }\n addNew(...elements) {\n this.newElements.push(...elements);\n }\n calculateDiff() {\n this.additions.push(...difference(this.newElements, this.oldElements));\n this.removals.push(...difference(this.oldElements, this.newElements));\n }\n get hasChanges() {\n return this.additions.length + this.removals.length > 0;\n }\n get hasAdditions() {\n return this.additions.length > 0;\n }\n get hasRemovals() {\n return this.removals.length > 0;\n }\n}\nexports.DiffableCollection = DiffableCollection;\n/**\n * Whether a collection contains some element (by value)\n */\nfunction contains(element, xs) {\n return xs.some(x => x.equal(element));\n}\n/**\n * Return collection except for elements\n */\nfunction difference(collection, elements) {\n return collection.filter(x => !contains(x, elements));\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZmFibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaWZmYWJsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7R0FFRztBQUNILE1BQWEsa0JBQWtCO0lBQS9CO1FBQ2tCLGNBQVMsR0FBUSxFQUFFLENBQUM7UUFDcEIsYUFBUSxHQUFRLEVBQUUsQ0FBQztRQUVsQixnQkFBVyxHQUFRLEVBQUUsQ0FBQztRQUN0QixnQkFBVyxHQUFRLEVBQUUsQ0FBQztJQTBCekMsQ0FBQztJQXhCUSxNQUFNLENBQUMsR0FBRyxRQUFhO1FBQzVCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxHQUFHLFFBQWE7UUFDNUIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU0sYUFBYTtRQUNsQixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLFVBQVUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRCxJQUFXLFdBQVc7UUFDcEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7SUFDbEMsQ0FBQztDQUNGO0FBL0JELGdEQStCQztBQVNEOztHQUVHO0FBQ0gsU0FBUyxRQUFRLENBQWtCLE9BQVUsRUFBRSxFQUFPO0lBQ3BELE9BQU8sRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFTLFVBQVUsQ0FBa0IsVUFBZSxFQUFFLFFBQWE7SUFDakUsT0FBTyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ2FsY3VsYXRlIGRpZmZlcmVuY2VzIG9mIGltbXV0YWJsZSBlbGVtZW50c1xuICovXG5leHBvcnQgY2xhc3MgRGlmZmFibGVDb2xsZWN0aW9uPFQgZXh0ZW5kcyBFcTxUPj4ge1xuICBwdWJsaWMgcmVhZG9ubHkgYWRkaXRpb25zOiBUW10gPSBbXTtcbiAgcHVibGljIHJlYWRvbmx5IHJlbW92YWxzOiBUW10gPSBbXTtcblxuICBwcml2YXRlIHJlYWRvbmx5IG9sZEVsZW1lbnRzOiBUW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBuZXdFbGVtZW50czogVFtdID0gW107XG5cbiAgcHVibGljIGFkZE9sZCguLi5lbGVtZW50czogVFtdKSB7XG4gICAgdGhpcy5vbGRFbGVtZW50cy5wdXNoKC4uLmVsZW1lbnRzKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGROZXcoLi4uZWxlbWVudHM6IFRbXSkge1xuICAgIHRoaXMubmV3RWxlbWVudHMucHVzaCguLi5lbGVtZW50cyk7XG4gIH1cblxuICBwdWJsaWMgY2FsY3VsYXRlRGlmZigpIHtcbiAgICB0aGlzLmFkZGl0aW9ucy5wdXNoKC4uLmRpZmZlcmVuY2UodGhpcy5uZXdFbGVtZW50cywgdGhpcy5vbGRFbGVtZW50cykpO1xuICAgIHRoaXMucmVtb3ZhbHMucHVzaCguLi5kaWZmZXJlbmNlKHRoaXMub2xkRWxlbWVudHMsIHRoaXMubmV3RWxlbWVudHMpKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGFzQ2hhbmdlcygpIHtcbiAgICByZXR1cm4gdGhpcy5hZGRpdGlvbnMubGVuZ3RoICsgdGhpcy5yZW1vdmFscy5sZW5ndGggPiAwO1xuICB9XG5cbiAgcHVibGljIGdldCBoYXNBZGRpdGlvbnMoKSB7XG4gICAgcmV0dXJuIHRoaXMuYWRkaXRpb25zLmxlbmd0aCA+IDA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc1JlbW92YWxzKCkge1xuICAgIHJldHVybiB0aGlzLnJlbW92YWxzLmxlbmd0aCA+IDA7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGluZ3MgdGhhdCBjYW4gYmUgY29tcGFyZWQgdG8gdGhlbXNlbHZlcyAoYnkgdmFsdWUpXG4gKi9cbmludGVyZmFjZSBFcTxUPiB7XG4gIGVxdWFsKG90aGVyOiBUKTogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIGEgY29sbGVjdGlvbiBjb250YWlucyBzb21lIGVsZW1lbnQgKGJ5IHZhbHVlKVxuICovXG5mdW5jdGlvbiBjb250YWluczxUIGV4dGVuZHMgRXE8VD4+KGVsZW1lbnQ6IFQsIHhzOiBUW10pOiBib29sZWFuIHtcbiAgcmV0dXJuIHhzLnNvbWUoeCA9PiB4LmVxdWFsKGVsZW1lbnQpKTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gY29sbGVjdGlvbiBleGNlcHQgZm9yIGVsZW1lbnRzXG4gKi9cbmZ1bmN0aW9uIGRpZmZlcmVuY2U8VCBleHRlbmRzIEVxPFQ+Pihjb2xsZWN0aW9uOiBUW10sIGVsZW1lbnRzOiBUW10pOiBUW10ge1xuICByZXR1cm4gY29sbGVjdGlvbi5maWx0ZXIoeCA9PiAhY29udGFpbnMoeCwgZWxlbWVudHMpKTtcbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formatTable = void 0;\nconst chalk = require(\"chalk\");\nconst string_width_1 = require(\"string-width\");\nconst table = require(\"table\");\n/**\n * Render a two-dimensional array to a visually attractive table\n *\n * First row is considered the table header.\n */\nfunction formatTable(cells, columns) {\n return table.table(cells, {\n border: TABLE_BORDER_CHARACTERS,\n columns: buildColumnConfig(columns !== undefined ? calculateColumnWidths(cells, columns) : undefined),\n drawHorizontalLine: (line) => {\n // Numbering like this: [line 0] [header = row[0]] [line 1] [row 1] [line 2] [content 2] [line 3]\n return (line < 2 || line === cells.length) || lineBetween(cells[line - 1], cells[line]);\n },\n }).trimRight();\n}\nexports.formatTable = formatTable;\n/**\n * Whether we should draw a line between two rows\n *\n * Draw horizontal line if 2nd column values are different.\n */\nfunction lineBetween(rowA, rowB) {\n return rowA[1] !== rowB[1];\n}\nfunction buildColumnConfig(widths) {\n if (widths === undefined) {\n return undefined;\n }\n const ret = {};\n widths.forEach((width, i) => {\n if (width === undefined) {\n return;\n }\n ret[i] = { width };\n });\n return ret;\n}\n/**\n * Calculate column widths given a terminal width\n *\n * We do this by calculating a fair share for every column. Extra width smaller\n * than the fair share is evenly distributed over all columns that exceed their\n * fair share.\n */\nfunction calculateColumnWidths(rows, terminalWidth) {\n // The terminal is sometimes reported to be 0. Also if the terminal is VERY narrow,\n // just assume a reasonable minimum size.\n terminalWidth = Math.max(terminalWidth, 40);\n // use 'string-width' to not count ANSI chars as actual character width\n const columns = rows[0].map((_, i) => Math.max(...rows.map(row => (0, string_width_1.default)(String(row[i])))));\n // If we have no terminal width, do nothing\n const contentWidth = terminalWidth - 2 - columns.length * 3;\n // If we don't exceed the terminal width, do nothing\n if (sum(columns) <= contentWidth) {\n return columns;\n }\n const fairShare = Math.min(contentWidth / columns.length);\n const smallColumns = columns.filter(w => w < fairShare);\n let distributableWidth = contentWidth - sum(smallColumns);\n const fairDistributable = Math.floor(distributableWidth / (columns.length - smallColumns.length));\n const ret = new Array();\n for (const requestedWidth of columns) {\n if (requestedWidth < fairShare) {\n // Small column gets what they want\n ret.push(requestedWidth);\n }\n else {\n // Last column gets all remaining, otherwise get fair redist share\n const width = distributableWidth < 2 * fairDistributable ? distributableWidth : fairDistributable;\n ret.push(width);\n distributableWidth -= width;\n }\n }\n return ret;\n}\nfunction sum(xs) {\n let total = 0;\n for (const x of xs) {\n total += x;\n }\n return total;\n}\n// What color the table is going to be\nconst tableColor = chalk.gray;\n// Unicode table characters with a color\nconst TABLE_BORDER_CHARACTERS = {\n topBody: tableColor('─'),\n topJoin: tableColor('┬'),\n topLeft: tableColor('┌'),\n topRight: tableColor('┐'),\n bottomBody: tableColor('─'),\n bottomJoin: tableColor('┴'),\n bottomLeft: tableColor('└'),\n bottomRight: tableColor('┘'),\n bodyLeft: tableColor('│'),\n bodyRight: tableColor('│'),\n bodyJoin: tableColor('│'),\n joinBody: tableColor('─'),\n joinLeft: tableColor('├'),\n joinRight: tableColor('┤'),\n joinJoin: tableColor('┼'),\n};\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LXRhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZm9ybWF0LXRhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUErQjtBQUMvQiwrQ0FBdUM7QUFDdkMsK0JBQStCO0FBRS9COzs7O0dBSUc7QUFDSCxTQUFnQixXQUFXLENBQUMsS0FBaUIsRUFBRSxPQUEyQjtJQUN4RSxPQUFPLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFO1FBQ3hCLE1BQU0sRUFBRSx1QkFBdUI7UUFDL0IsT0FBTyxFQUFFLGlCQUFpQixDQUFDLE9BQU8sS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO1FBQ3JHLGtCQUFrQixFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDM0IsaUdBQWlHO1lBQ2pHLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLElBQUksS0FBSyxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDMUYsQ0FBQztLQUNGLENBQUMsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUNqQixDQUFDO0FBVEQsa0NBU0M7QUFFRDs7OztHQUlHO0FBQ0gsU0FBUyxXQUFXLENBQUMsSUFBYyxFQUFFLElBQWM7SUFDakQsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLE1BQTRCO0lBQ3JELElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQUMsT0FBTyxTQUFTLENBQUM7SUFBQyxDQUFDO0lBRS9DLE1BQU0sR0FBRyxHQUFnRCxFQUFFLENBQUM7SUFDNUQsTUFBTSxDQUFD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QUFDO0lBQ3hCLE9BQU8sRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3hCLE9BQU8sRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3hCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3pCLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzNCLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzNCLFVBQVUsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzNCLFdBQVcsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzVCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3pCLFNBQVMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzFCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3pCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3pCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQ3pCLFNBQVMsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzFCLFFBQVEsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDO0NBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgc3RyaW5nV2lkdGggZnJvbSAnc3RyaW5nLXdpZHRoJztcbmltcG9ydCAqIGFzIHRhYmxlIGZyb20gJ3RhYmxlJztcblxuLyoqXG4gKiBSZW5kZXIgYSB0d28tZGltZW5zaW9uYWwgYXJyYXkgdG8gYSB2aXN1YWxseSBhdHRyYWN0aXZlIHRhYmxlXG4gKlxuICogRmlyc3Qgcm93IGlzIGNvbnNpZGVyZWQgdGhlIHRhYmxlIGhlYWRlci5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFRhYmxlKGNlbGxzOiBzdHJpbmdbXVtdLCBjb2x1bW5zOiBudW1iZXIgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICByZXR1cm4gdGFibGUudGFibGUoY2VsbHMsIHtcbiAgICBib3JkZXI6IFRBQkxFX0JPUkRFUl9DSEFSQUNURVJTLFxuICAgIGNvbHVtbnM6IGJ1aWxkQ29sdW1uQ29uZmlnKGNvbHVtbnMgIT09IHVuZGVmaW5lZCA/IGNhbGN1bGF0ZUNvbHVtbldpZHRocyhjZWxscywgY29sdW1ucykgOiB1bmRlZmluZWQpLFxuICAgIGRyYXdIb3Jpem9udGFsTGluZTogKGxpbmUpID0+IHtcbiAgICAgIC8vIE51bWJlcmluZyBsaWtlIHRoaXM6IFtsaW5lIDBdIFtoZWFkZXIgPSByb3dbMF1dIFtsaW5lIDFdIFtyb3cgMV0gW2xpbmUgMl0gW2NvbnRlbnQgMl0gW2xpbmUgM11cbiAgICAgIHJldHVybiAobGluZSA8IDIgfHwgbGluZSA9PT0gY2VsbHMubGVuZ3RoKSB8fCBsaW5lQmV0d2VlbihjZWxsc1tsaW5lIC0gMV0sIGNlbGxzW2xpbmVdKTtcbiAgICB9LFxuICB9KS50cmltUmlnaHQoKTtcbn1cblxuLyoqXG4gKiBXaGV0aGVyIHdlIHNob3VsZCBkcmF3IGEgbGluZSBiZXR3ZWVuIHR3byByb3dzXG4gKlxuICogRHJhdyBob3Jpem9udGFsIGxpbmUgaWYgMm5kIGNvbHVtbiB2YWx1ZXMgYXJlIGRpZmZlcmVudC5cbiAqL1xuZnVuY3Rpb24gbGluZUJldHdlZW4ocm93QTogc3RyaW5nW10sIHJvd0I6IHN0cmluZ1tdKSB7XG4gIHJldHVybiByb3dBWzFdICE9PSByb3dCWzFdO1xufVxuXG5mdW5jdGlvbiBidWlsZENvbHVtbkNvbmZpZyh3aWR0aHM6IG51bWJlcltdIHwgdW5kZWZpbmVkKTogeyBbaW5kZXg6IG51bWJlcl06IHRhYmxlLkNvbHVtblVzZXJDb25maWcgfSB8IHVuZGVmaW5lZCB7XG4gIGlmICh3aWR0aHMgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG5cbiAgY29uc3QgcmV0OiB7IFtpbmRleDogbnVtYmVyXTogdGFibGUuQ29sdW1uVXNlckNvbmZpZyB9ID0ge307XG4gIHdpZHRocy5mb3JFYWNoKCh3aWR0aCwgaSkgPT4ge1xuICAgIGlmICh3aWR0aCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHJldFtpXSA9IHsgd2lkdGggfTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLyoqXG4gKiBDYWxjdWxhdGUgY29sdW1uIHdpZHRocyBnaXZlbiBhIHRlcm1pbmFsIHdpZHRoXG4gKlxuICogV2UgZG8gdGhpcyBieSBjYWxjdWxhdGluZyBhIGZhaXIgc2hhcmUgZm9yIGV2ZXJ5IGNvbHVtbi4gRXh0cmEgd2lkdGggc21hbGxlclxuICogdGhhbiB0aGUgZmFpciBzaGFyZSBpcyBldmVubHkgZGlzdHJpYnV0ZWQgb3ZlciBhbGwgY29sdW1ucyB0aGF0IGV4Y2VlZCB0aGVpclxuICogZmFpciBzaGFyZS5cbiAqL1xuZnVuY3Rpb24gY2FsY3VsYXRlQ29sdW1uV2lkdGhzKHJvd3M6IHN0cmluZ1tdW10sIHRlcm1pbmFsV2lkdGg6IG51bWJlcik6IG51bWJlcltdIHtcbiAgLy8gVGhlIHRlcm1pbmFsIGlzIHNvbWV0aW1lcyByZXBvcnRlZCB0byBiZSAwLiBBbHNvIGlmIHRoZSB0ZXJtaW5hbCBpcyBWRVJZIG5hcnJvdyxcbiAgLy8ganVzdCBhc3N1bWUgYSByZWFzb25hYmxlIG1pbmltdW0gc2l6ZS5cbiAgdGVybWluYWxXaWR0aCA9IE1hdGgubWF4KHRlcm1pbmFsV2lkdGgsIDQwKTtcblxuICAvLyB1c2UgJ3N0cmluZy13aWR0aCcgdG8gbm90IGNvdW50IEFOU0kgY2hhcnMgYXMgYWN0dWFsIGNoYXJhY3RlciB3aWR0aFxuICBjb25zdCBjb2x1bW5zID0gcm93c1swXS5tYXAoKF8sIGkpID0+IE1hdGgubWF4KC4uLnJvd3MubWFwKHJvdyA9PiBzdHJpbmdXaWR0aChTdHJpbmcocm93W2ldKSkpKSk7XG5cbiAgLy8gSWYgd2UgaGF2ZSBubyB0ZXJtaW5hbCB3aWR0aCwgZG8gbm90aGluZ1xuICBjb25zdCBjb250ZW50V2lkdGggPSB0ZXJtaW5hbFdpZHRoIC0gMiAtIGNvbHVtbnMubGVuZ3RoICogMztcblxuICAvLyBJZiB3ZSBkb24ndCBleGNlZWQgdGhlIHRlcm1pbmFsIHdpZHRoLCBkbyBub3RoaW5nXG4gIGlmIChzdW0oY29sdW1ucykgPD0gY29udGVudFdpZHRoKSB7IHJldHVybiBjb2x1bW5zOyB9XG5cbiAgY29uc3QgZmFpclNoYXJlID0gTWF0aC5taW4oY29udGVudFdpZHRoIC8gY29sdW1ucy5sZW5ndGgpO1xuICBjb25zdCBzbWFsbENvbHVtbnMgPSBjb2x1bW5zLmZpbHRlcih3ID0+IHcgPCBmYWlyU2hhcmUpO1xuXG4gIGxldCBkaXN0cmlidXRhYmxlV2lkdGggPSBjb250ZW50V2lkdGggLSBzdW0oc21hbGxDb2x1bW5zKTtcbiAgY29uc3QgZmFpckRpc3RyaWJ1dGFibGUgPSBNYXRoLmZsb29yKGRpc3RyaWJ1dGFibGVXaWR0aCAvIChjb2x1bW5zLmxlbmd0aCAtIHNtYWxsQ29sdW1ucy5sZW5ndGgpKTtcblxuICBjb25zdCByZXQgPSBuZXcgQXJyYXk8bnVtYmVyPigpO1xuICBmb3IgKGNvbnN0IHJlcXVlc3RlZFdpZHRoIG9mIGNvbHVtbnMpIHtcbiAgICBpZiAocmVxdWVzdGVkV2lkdGggPCBmYWlyU2hhcmUpIHtcbiAgICAgIC8vIFNtYWxsIGNvbHVtbiBnZXRzIHdoYXQgdGhleSB3YW50XG4gICAgICByZXQucHVzaChyZXF1ZXN0ZWRXaWR0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIExhc3QgY29sdW1uIGdldHMgYWxsIHJlbWFpbmluZywgb3RoZXJ3aXNlIGdldCBmYWlyIHJlZGlzdCBzaGFyZVxuICAgICAgY29uc3Qgd2lkdGggPSBkaXN0cmlidXRhYmxlV2lkdGggPCAyICogZmFpckRpc3RyaWJ1dGFibGUgPyBkaXN0cmlidXRhYmxlV2lkdGggOiBmYWlyRGlzdHJpYnV0YWJsZTtcbiAgICAgIHJldC5wdXNoKHdpZHRoKTtcbiAgICAgIGRpc3RyaWJ1dGFibGVXaWR0aCAtPSB3aWR0aDtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBzdW0oeHM6IG51bWJlcltdKTogbnVtYmVyIHtcbiAgbGV0IHRvdGFsID0gMDtcbiAgZm9yIChjb25zdCB4IG9mIHhzKSB7XG4gICAgdG90YWwgKz0geDtcbiAgfVxuICByZXR1cm4gdG90YWw7XG59XG5cbi8vIFdoYXQgY29sb3IgdGhlIHRhYmxlIGlzIGdvaW5nIHRvIGJlXG5jb25zdCB0YWJsZUNvbG9yID0gY2hhbGsuZ3JheTtcblxuLy8gVW5pY29kZSB0YWJsZSBjaGFyYWN0ZXJzIHdpdGggYSBjb2xvclxuY29uc3QgVEFCTEVfQk9SREVSX0NIQVJBQ1RFUlMgPSB7XG4gIHRvcEJvZHk6IHRhYmxlQ29sb3IoJ+KUgCcpLFxuICB0b3BKb2luOiB0YWJsZUNvbG9yKCfilKwnKSxcbiAgdG9wTGVmdDogdGFibGVDb2xvcign4pSMJyksXG4gIHRvcFJpZ2h0OiB0YWJsZUNvbG9yKCfilJAnKSxcbiAgYm90dG9tQm9keTogdGFibGVDb2xvcign4pSAJyksXG4gIGJvdHRvbUpvaW46IHRhYmxlQ29sb3IoJ+KUtCcpLFxuICBib3R0b21MZWZ0OiB0YWJsZUNvbG9yKCfilJQnKSxcbiAgYm90dG9tUmlnaHQ6IHRhYmxlQ29sb3IoJ+KUmCcpLFxuICBib2R5TGVmdDogdGFibGVDb2xvcign4pSCJyksXG4gIGJvZHlSaWdodDogdGFibGVDb2xvcign4pSCJyksXG4gIGJvZHlKb2luOiB0YWJsZUNvbG9yKCfilIInKSxcbiAgam9pbkJvZHk6IHRhYmxlQ29sb3IoJ+KUgCcpLFxuICBqb2luTGVmdDogdGFibGVDb2xvcign4pScJyksXG4gIGpvaW5SaWdodDogdGFibGVDb2xvcign4pSkJyksXG4gIGpvaW5Kb2luOiB0YWJsZUNvbG9yKCfilLwnKSxcbn07XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.formatSecurityChanges = exports.formatDifferences = void 0;\nconst util_1 = require(\"util\");\nconst chalk = require(\"chalk\");\nconst util_2 = require(\"./diff/util\");\nconst diff_template_1 = require(\"./diff-template\");\nconst format_table_1 = require(\"./format-table\");\n// from cx-api\nconst PATH_METADATA_KEY = 'aws:cdk:path';\n/* eslint-disable @typescript-eslint/no-require-imports */\nconst { structuredPatch } = require('diff');\n/**\n * Renders template differences to the process' console.\n *\n * @param stream The IO stream where to output the rendered diff.\n * @param templateDiff TemplateDiff to be rendered to the console.\n * @param logicalToPathMap A map from logical ID to construct path. Useful in\n * case there is no aws:cdk:path metadata in the template.\n * @param context the number of context lines to use in arbitrary JSON diff (defaults to 3).\n */\nfunction formatDifferences(stream, templateDiff, logicalToPathMap = {}, context = 3) {\n const formatter = new Formatter(stream, logicalToPathMap, templateDiff, context);\n if (templateDiff.awsTemplateFormatVersion || templateDiff.transform || templateDiff.description) {\n formatter.printSectionHeader('Template');\n formatter.formatDifference('AWSTemplateFormatVersion', 'AWSTemplateFormatVersion', templateDiff.awsTemplateFormatVersion);\n formatter.formatDifference('Transform', 'Transform', templateDiff.transform);\n formatter.formatDifference('Description', 'Description', templateDiff.description);\n formatter.printSectionFooter();\n }\n formatSecurityChangesWithBanner(formatter, templateDiff);\n formatter.formatSection('Parameters', 'Parameter', templateDiff.parameters);\n formatter.formatSection('Metadata', 'Metadata', templateDiff.metadata);\n formatter.formatSection('Mappings', 'Mapping', templateDiff.mappings);\n formatter.formatSection('Conditions', 'Condition', templateDiff.conditions);\n formatter.formatSection('Resources', 'Resource', templateDiff.resources, formatter.formatResourceDifference.bind(formatter));\n formatter.formatSection('Outputs', 'Output', templateDiff.outputs);\n formatter.formatSection('Other Changes', 'Unknown', templateDiff.unknown);\n}\nexports.formatDifferences = formatDifferences;\n/**\n * Renders a diff of security changes to the given stream\n */\nfunction formatSecurityChanges(stream, templateDiff, logicalToPathMap = {}, context) {\n const formatter = new Formatter(stream, logicalToPathMap, templateDiff, context);\n formatSecurityChangesWithBanner(formatter, templateDiff);\n}\nexports.formatSecurityChanges = formatSecurityChanges;\nfunction formatSecurityChangesWithBanner(formatter, templateDiff) {\n if (!templateDiff.iamChanges.hasChanges && !templateDiff.securityGroupChanges.hasChanges) {\n return;\n }\n formatter.formatIamChanges(templateDiff.iamChanges);\n formatter.formatSecurityGroupChanges(templateDiff.securityGroupChanges);\n formatter.warning('(NOTE: There may be security-related changes not in this list. See https://github.com/aws/aws-cdk/issues/1299)');\n formatter.printSectionFooter();\n}\nconst ADDITION = chalk.green('[+]');\nconst CONTEXT = chalk.grey('[ ]');\nconst UPDATE = chalk.yellow('[~]');\nconst REMOVAL = chalk.red('[-]');\nconst IMPORT = chalk.blue('[←]');\nclass Formatter {\n constructor(stream, logicalToPathMap, diff, context = 3) {\n this.stream = stream;\n this.logicalToPathMap = logicalToPathMap;\n this.context = context;\n // Read additional construct paths from the diff if it is supplied\n if (diff) {\n this.readConstructPathsFrom(diff);\n }\n }\n print(fmt, ...args) {\n this.stream.write(chalk.white((0, util_1.format)(fmt, ...args)) + '\\n');\n }\n warning(fmt, ...args) {\n this.stream.write(chalk.yellow((0, util_1.format)(fmt, ...args)) + '\\n');\n }\n formatSection(title, entryType, collection, formatter = this.formatDifference.bind(this)) {\n if (collection.differenceCount === 0) {\n return;\n }\n this.printSectionHeader(title);\n collection.forEachDifference((id, diff) => formatter(entryType, id, diff));\n this.printSectionFooter();\n }\n printSectionHeader(title) {\n this.print(chalk.underline(chalk.bold(title)));\n }\n printSectionFooter() {\n this.print('');\n }\n /**\n * Print a simple difference for a given named entity.\n *\n * @param logicalId the name of the entity that is different.\n * @param diff the difference to be rendered.\n */\n formatDifference(type, logicalId, diff) {\n if (!diff || !diff.isDifferent) {\n return;\n }\n let value;\n const oldValue = this.formatValue(diff.oldValue, chalk.red);\n const newValue = this.formatValue(diff.newValue, chalk.green);\n if (diff.isAddition) {\n value = newValue;\n }\n else if (diff.isUpdate) {\n value = `${oldValue} to ${newValue}`;\n }\n else if (diff.isRemoval) {\n value = oldValue;\n }\n this.print(`${this.formatPrefix(diff)} ${chalk.cyan(type)} ${this.formatLogicalId(logicalId)}: ${value}`);\n }\n /**\n * Print a resource difference for a given logical ID.\n *\n * @param logicalId the logical ID of the resource that changed.\n * @param diff the change to be rendered.\n */\n formatResourceDifference(_type, logicalId, diff) {\n if (!diff.isDifferent) {\n return;\n }\n const resourceType = diff.isRemoval ? diff.oldResourceType : diff.newResourceType;\n // eslint-disable-next-line max-len\n this.print(`${this.formatResourcePrefix(diff)} ${this.formatValue(resourceType, chalk.cyan)} ${this.formatLogicalId(logicalId)} ${this.formatImpact(diff.changeImpact)}`);\n if (diff.isUpdate) {\n const differenceCount = diff.differenceCount;\n let processedCount = 0;\n diff.forEachDifference((_, name, values) => {\n processedCount += 1;\n this.formatTreeDiff(name, values, processedCount === differenceCount);\n });\n }\n }\n formatResourcePrefix(diff) {\n if (diff.isImport) {\n return IMPORT;\n }\n return this.formatPrefix(diff);\n }\n formatPrefix(diff) {\n if (diff.isAddition) {\n return ADDITION;\n }\n if (diff.isUpdate) {\n return UPDATE;\n }\n if (diff.isRemoval) {\n return REMOVAL;\n }\n return chalk.white('[?]');\n }\n /**\n * @param value the value to be formatted.\n * @param color the color to be used.\n *\n * @returns the formatted string, with color applied.\n */\n formatValue(value, color) {\n if (value == null) {\n return undefined;\n }\n if (typeof value === 'string') {\n return color(value);\n }\n return color(JSON.stringify(value));\n }\n /**\n * @param impact the impact to be formatted\n * @returns a user-friendly, colored string representing the impact.\n */\n formatImpact(impact) {\n switch (impact) {\n case diff_template_1.ResourceImpact.MAY_REPLACE:\n return chalk.italic(chalk.yellow('may be replaced'));\n case diff_template_1.ResourceImpact.WILL_REPLACE:\n return chalk.italic(chalk.bold(chalk.red('replace')));\n case diff_template_1.ResourceImpact.WILL_DESTROY:\n return chalk.italic(chalk.bold(chalk.red('destroy')));\n case diff_template_1.ResourceImpact.WILL_ORPHAN:\n return chalk.italic(chalk.yellow('orphan'));\n case diff_template_1.ResourceImpact.WILL_IMPORT:\n return chalk.italic(chalk.blue('import'));\n case diff_template_1.ResourceImpact.WILL_UPDATE:\n case diff_template_1.ResourceImpact.WILL_CREATE:\n case diff_template_1.ResourceImpact.NO_CHANGE:\n return ''; // no extra info is gained here\n }\n }\n /**\n * Renders a tree of differences under a particular name.\n * @param name the name of the root of the tree.\n * @param diff the difference on the tree.\n * @param last whether this is the last node of a parent tree.\n */\n formatTreeDiff(name, diff, last) {\n let additionalInfo = '';\n if ((0, diff_template_1.isPropertyDifference)(diff)) {\n if (diff.changeImpact === diff_template_1.ResourceImpact.MAY_REPLACE) {\n additionalInfo = ' (may cause replacement)';\n }\n else if (diff.changeImpact === diff_template_1.ResourceImpact.WILL_REPLACE) {\n additionalInfo = ' (requires replacement)';\n }\n }\n this.print(' %s─ %s %s%s', last ? '└' : '├', this.changeTag(diff.oldValue, diff.newValue), name, additionalInfo);\n return this.formatObjectDiff(diff.oldValue, diff.newValue, ` ${last ? ' ' : '│'}`);\n }\n /**\n * Renders the difference between two objects, looking for the differences as deep as possible,\n * and rendering a tree graph of the path until the difference is found.\n *\n * @param oldObject the old object.\n * @param newObject the new object.\n * @param linePrefix a prefix (indent-like) to be used on every line.\n */\n formatObjectDiff(oldObject, newObject, linePrefix) {\n if ((typeof oldObject !== typeof newObject) || Array.isArray(oldObject) || typeof oldObject === 'string' || typeof oldObject === 'number') {\n if (oldObject !== undefined && newObject !== undefined) {\n if (typeof oldObject === 'object' || typeof newObject === 'object') {\n const oldStr = JSON.stringify(oldObject, null, 2);\n const newStr = JSON.stringify(newObject, null, 2);\n const diff = _diffStrings(oldStr, newStr, this.context);\n for (let i = 0; i < diff.length; i++) {\n this.print('%s %s %s', linePrefix, i === 0 ? '└─' : ' ', diff[i]);\n }\n }\n else {\n this.print('%s ├─ %s %s', linePrefix, REMOVAL, this.formatValue(oldObject, chalk.red));\n this.print('%s └─ %s %s', linePrefix, ADDITION, this.formatValue(newObject, chalk.green));\n }\n }\n else if (oldObject !== undefined /* && newObject === undefined */) {\n this.print('%s └─ %s', linePrefix, this.formatValue(oldObject, chalk.red));\n }\n else /* if (oldObject === undefined && newObject !== undefined) */ {\n this.print('%s └─ %s', linePrefix, this.formatValue(newObject, chalk.green));\n }\n return;\n }\n const keySet = new Set(Object.keys(oldObject));\n Object.keys(newObject).forEach(k => keySet.add(k));\n const keys = new Array(...keySet).filter(k => !(0, util_2.deepEqual)(oldObject[k], newObject[k])).sort();\n const lastKey = keys[keys.length - 1];\n for (const key of keys) {\n const oldValue = oldObject[key];\n const newValue = newObject[key];\n const treePrefix = key === lastKey ? '└' : '├';\n if (oldValue !== undefined && newValue !== undefined) {\n this.print('%s %s─ %s %s:', linePrefix, treePrefix, this.changeTag(oldValue, newValue), chalk.blue(`.${key}`));\n this.formatObjectDiff(oldValue, newValue, `${linePrefix} ${key === lastKey ? ' ' : '│'}`);\n }\n else if (oldValue !== undefined /* && newValue === undefined */) {\n this.print('%s %s─ %s Removed: %s', linePrefix, treePrefix, REMOVAL, chalk.blue(`.${key}`));\n }\n else /* if (oldValue === undefined && newValue !== undefined */ {\n this.print('%s %s─ %s Added: %s', linePrefix, treePrefix, ADDITION, chalk.blue(`.${key}`));\n }\n }\n }\n /**\n * @param oldValue the old value of a difference.\n * @param newValue the new value of a difference.\n *\n * @returns a tag to be rendered in the diff, reflecting whether the difference\n * was an ADDITION, UPDATE or REMOVAL.\n */\n changeTag(oldValue, newValue) {\n if (oldValue !== undefined && newValue !== undefined) {\n return UPDATE;\n }\n else if (oldValue !== undefined /* && newValue === undefined*/) {\n return REMOVAL;\n }\n else /* if (oldValue === undefined && newValue !== undefined) */ {\n return ADDITION;\n }\n }\n /**\n * Find 'aws:cdk:path' metadata in the diff and add it to the logicalToPathMap\n *\n * There are multiple sources of logicalID -> path mappings: synth metadata\n * and resource metadata, and we combine all sources into a single map.\n */\n readConstructPathsFrom(templateDiff) {\n for (const [logicalId, resourceDiff] of Object.entries(templateDiff.resources)) {\n if (!resourceDiff) {\n continue;\n }\n const oldPathMetadata = resourceDiff.oldValue?.Metadata?.[PATH_METADATA_KEY];\n if (oldPathMetadata && !(logicalId in this.logicalToPathMap)) {\n this.logicalToPathMap[logicalId] = oldPathMetadata;\n }\n const newPathMetadata = resourceDiff.newValue?.Metadata?.[PATH_METADATA_KEY];\n if (newPathMetadata && !(logicalId in this.logicalToPathMap)) {\n this.logicalToPathMap[logicalId] = newPathMetadata;\n }\n }\n }\n formatLogicalId(logicalId) {\n // if we have a path in the map, return it\n const normalized = this.normalizedLogicalIdPath(logicalId);\n if (normalized) {\n return `${normalized} ${chalk.gray(logicalId)}`;\n }\n return logicalId;\n }\n normalizedLogicalIdPath(logicalId) {\n // if we have a path in the map, return it\n const path = this.logicalToPathMap[logicalId];\n return path ? normalizePath(path) : undefined;\n /**\n * Path is supposed to start with \"/stack-name\". If this is the case (i.e. path has more than\n * two components, we remove the first part. Otherwise, we just use the full path.\n * @param p\n */\n function normalizePath(p) {\n if (p.startsWith('/')) {\n p = p.slice(1);\n }\n let parts = p.split('/');\n if (parts.length > 1) {\n parts = parts.slice(1);\n // remove the last component if it's \"Resource\" or \"Default\" (if we have more than a single component)\n if (parts.length > 1) {\n const last = parts[parts.length - 1];\n if (last === 'Resource' || last === 'Default') {\n parts = parts.slice(0, parts.length - 1);\n }\n }\n p = parts.join('/');\n }\n return p;\n }\n }\n formatIamChanges(changes) {\n if (!changes.hasChanges) {\n return;\n }\n if (changes.statements.hasChanges) {\n this.printSectionHeader('IAM Statement Changes');\n this.print((0, format_table_1.formatTable)(this.deepSubstituteBracedLogicalIds(changes.summarizeStatements()), this.stream.columns));\n }\n if (changes.managedPolicies.hasChanges) {\n this.printSectionHeader('IAM Policy Changes');\n this.print((0, format_table_1.formatTable)(this.deepSubstituteBracedLogicalIds(changes.summarizeManagedPolicies()), this.stream.columns));\n }\n }\n formatSecurityGroupChanges(changes) {\n if (!changes.hasChanges) {\n return;\n }\n this.printSectionHeader('Security Group Changes');\n this.print((0, format_table_1.formatTable)(this.deepSubstituteBracedLogicalIds(changes.summarize()), this.stream.columns));\n }\n deepSubstituteBracedLogicalIds(rows) {\n return rows.map(row => row.map(this.substituteBracedLogicalIds.bind(this)));\n }\n /**\n * Substitute all strings like ${LogId.xxx} with the path instead of the logical ID\n */\n substituteBracedLogicalIds(source) {\n return source.replace(/\\$\\{([^.}]+)(.[^}]+)?\\}/ig, (_match, logId, suffix) => {\n return '${' + (this.normalizedLogicalIdPath(logId) || logId) + (suffix || '') + '}';\n });\n }\n}\n/**\n * Creates a unified diff of two strings.\n *\n * @param oldStr the \"old\" version of the string.\n * @param newStr the \"new\" version of the string.\n * @param context the number of context lines to use in arbitrary JSON diff.\n *\n * @returns an array of diff lines.\n */\nfunction _diffStrings(oldStr, newStr, context) {\n const patch = structuredPatch(null, null, oldStr, newStr, null, null, { context });\n const result = new Array();\n for (const hunk of patch.hunks) {\n result.push(chalk.magenta(`@@ -${hunk.oldStart},${hunk.oldLines} +${hunk.newStart},${hunk.newLines} @@`));\n const baseIndent = _findIndent(hunk.lines);\n for (const line of hunk.lines) {\n // Don't care about termination newline.\n if (line === '\\\\ No newline at end of file') {\n continue;\n }\n const marker = line.charAt(0);\n const text = line.slice(1 + baseIndent);\n switch (marker) {\n case ' ':\n result.push(`${CONTEXT} ${text}`);\n break;\n case '+':\n result.push(chalk.bold(`${ADDITION} ${chalk.green(text)}`));\n break;\n case '-':\n result.push(chalk.bold(`${REMOVAL} ${chalk.red(text)}`));\n break;\n default:\n throw new Error(`Unexpected diff marker: ${marker} (full line: ${line})`);\n }\n }\n }\n return result;\n function _findIndent(lines) {\n let indent = Number.MAX_SAFE_INTEGER;\n for (const line of lines) {\n for (let i = 1; i < line.length; i++) {\n if (line.charAt(i) !== ' ') {\n indent = indent > i - 1 ? i - 1 : indent;\n break;\n }\n }\n }\n return indent;\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZm9ybWF0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLCtCQUE4QjtBQUM5QiwrQkFBK0I7QUFFL0Isc0NBQXdDO0FBQ3hDLG1EQUF1RztBQUN2RyxpREFBNkM7QUFJN0MsY0FBYztBQUNkLE1BQU0saUJBQWlCLEdBQUcsY0FBYyxDQUFDO0FBRXpDLDBEQUEwRDtBQUMxRCxNQUFNLEVBQUUsZUFBZSxFQUFFLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBTzVDOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsaUJBQWlCLENBQy9CLE1BQW9CLEVBQ3BCLFlBQTBCLEVBQzFCLG1CQUFvRCxFQUFFLEVBQ3RELFVBQWtCLENBQUM7SUFDbkIsTUFBTSxTQUFTLEdBQUcsSUFBSSxTQUFTLENBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUVqRixJQUFJLFlBQVksQ0FBQyx3QkFBd0IsSUFBSSxZQUFZLENBQUMsU0FBUyxJQUFJLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoRyxTQUFTLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekMsU0FBUyxDQUFDLGdCQUFnQixDQUFDLDBCQUEwQixFQUFFLDBCQUEwQixFQUFFLFlBQVksQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1FBQzFILFNBQVMsQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUM3RSxTQUFTLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDbkYsU0FBUyxDQUFDLGtCQUFrQixFQUFFLENBQUM7SUFDakMsQ0FBQztJQUVELCtCQUErQixDQUFDLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUV6RCxTQUFTLENBQUMs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RSxDQUFDO1lBQ3pCLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7Z0JBQ3JDLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztvQkFDM0IsTUFBTSxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7b0JBQ3pDLE1BQU07Z0JBQ1IsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JtYXQgfSBmcm9tICd1dGlsJztcbmltcG9ydCAqIGFzIGNoYWxrIGZyb20gJ2NoYWxrJztcbmltcG9ydCB7IERpZmZlcmVuY2VDb2xsZWN0aW9uLCBUZW1wbGF0ZURpZmYgfSBmcm9tICcuL2RpZmYvdHlwZXMnO1xuaW1wb3J0IHsgZGVlcEVxdWFsIH0gZnJvbSAnLi9kaWZmL3V0aWwnO1xuaW1wb3J0IHsgRGlmZmVyZW5jZSwgaXNQcm9wZXJ0eURpZmZlcmVuY2UsIFJlc291cmNlRGlmZmVyZW5jZSwgUmVzb3VyY2VJbXBhY3QgfSBmcm9tICcuL2RpZmYtdGVtcGxhdGUnO1xuaW1wb3J0IHsgZm9ybWF0VGFibGUgfSBmcm9tICcuL2Zvcm1hdC10YWJsZSc7XG5pbXBvcnQgeyBJYW1DaGFuZ2VzIH0gZnJvbSAnLi9pYW0vaWFtLWNoYW5nZXMnO1xuaW1wb3J0IHsgU2VjdXJpdHlHcm91cENoYW5nZXMgfSBmcm9tICcuL25ldHdvcmsvc2VjdXJpdHktZ3JvdXAtY2hhbmdlcyc7XG5cbi8vIGZyb20gY3gtYXBpXG5jb25zdCBQQVRIX01FVEFEQVRBX0tFWSA9ICdhd3M6Y2RrOnBhdGgnO1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tcmVxdWlyZS1pbXBvcnRzICovXG5jb25zdCB7IHN0cnVjdHVyZWRQYXRjaCB9ID0gcmVxdWlyZSgnZGlmZicpO1xuLyogZXNsaW50LWVuYWJsZSAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1hdFN0cmVhbSBleHRlbmRzIE5vZGVKUy5Xcml0YWJsZVN0cmVhbSB7XG4gIGNvbHVtbnM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUmVuZGVycyB0ZW1wbGF0ZSBkaWZmZXJlbmNlcyB0byB0aGUgcHJvY2VzcycgY29uc29sZS5cbiAqXG4gKiBAcGFyYW0gc3RyZWFtICAgICAgICAgICBUaGUgSU8gc3RyZWFtIHdoZXJlIHRvIG91dHB1dCB0aGUgcmVuZGVyZWQgZGlmZi5cbiAqIEBwYXJhbSB0ZW1wbGF0ZURpZmYgICAgIFRlbXBsYXRlRGlmZiB0byBiZSByZW5kZXJlZCB0byB0aGUgY29uc29sZS5cbiAqIEBwYXJhbSBsb2dpY2FsVG9QYXRoTWFwIEEgbWFwIGZyb20gbG9naWNhbCBJRCB0byBjb25zdHJ1Y3QgcGF0aC4gVXNlZnVsIGluXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIHRoZXJlIGlzIG5vIGF3czpjZGs6cGF0aCBtZXRhZGF0YSBpbiB0aGUgdGVtcGxhdGUuXG4gKiBAcGFyYW0gY29udGV4dCAgICAgICAgICB0aGUgbnVtYmVyIG9mIGNvbnRleHQgbGluZXMgdG8gdXNlIGluIGFyYml0cmFyeSBKU09OIGRpZmYgKGRlZmF1bHRzIHRvIDMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0RGlmZmVyZW5jZXMoXG4gIHN0cmVhbTogRm9ybWF0U3RyZWFtLFxuICB0ZW1wbGF0ZURpZmY6IFRlbXBsYXRlRGlmZixcbiAgbG9naWNhbFRvUGF0aE1hcDogeyBbbG9naWNhbElkOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9LFxuICBjb250ZXh0OiBudW1iZXIgPSAzKSB7XG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBGb3JtYXR0ZXIoc3RyZWFtLCBsb2dpY2FsVG9QYXRoTWFwLCB0ZW1wbGF0ZURpZmYsIGNvbnRleHQpO1xuXG4gIGlmICh0ZW1wbGF0ZURpZmYuYXdzVGVtcGxhdGVGb3JtYXRWZXJzaW9uIHx8IHRlbXBsYXRlRGlmZi50cmFuc2Zvcm0gfHwgdGVtcGxhdGVEaWZmLmRlc2NyaXB0aW9uKSB7XG4gICAgZm9ybWF0dGVyLnByaW50U2VjdGlvbkhlYWRlcignVGVtcGxhdGUnKTtcbiAgICBmb3JtYXR0ZXIuZm9ybWF0RGlmZmVyZW5jZSgnQVdTVGVtcGxhdGVGb3JtYXRWZXJzaW9uJywgJ0FXU1RlbXBsYXRlRm9ybWF0VmVyc2lvbicsIHRlbXBsYXRlRGlmZi5hd3NUZW1wbGF0ZUZvcm1hdFZlcnNpb24pO1xuICAgIGZvcm1hdHRlci5mb3JtYXREaWZmZXJlbmNlKCdUcmFuc2Zvcm0nLCAnVHJhbnNmb3JtJywgdGVtcGxhdGVEaWZmLnRyYW5zZm9ybSk7XG4gICAgZm9ybWF0dGVyLmZvcm1hdERpZmZlcmVuY2UoJ0Rlc2NyaXB0aW9uJywgJ0Rlc2NyaXB0aW9uJywgdGVtcGxhdGVEaWZmLmRlc2NyaXB0aW9uKTtcbiAgICBmb3JtYXR0ZXIucHJpbnRTZWN0aW9uRm9vdGVyKCk7XG4gIH1cblxuICBmb3JtYXRTZWN1cml0eUNoYW5nZXNXaXRoQmFubmVyKGZvcm1hdHRlciwgdGVtcGxhdGVEaWZmKTtcblxuICBmb3JtYXR0ZXIuZm9ybWF0U2VjdGlvbignUGFyYW1ldGVycycsICdQYXJhbWV0ZXInLCB0ZW1wbGF0ZURpZmYucGFyYW1ldGVycyk7XG4gIGZvcm1hdHRlci5mb3JtYXRTZWN0aW9uKCdNZXRhZGF0YScsICdNZXRhZGF0YScsIHRlbXBsYXRlRGlmZi5tZXRhZGF0YSk7XG4gIGZvcm1hdHRlci5mb3JtYXRTZWN0aW9uKCdNYXBwaW5ncycsICdNYXBwaW5nJywgdGVtcGxhdGVEaWZmLm1hcHBpbmdzKTtcbiAgZm9ybWF0dGVyLmZvcm1hdFNlY3Rpb24oJ0NvbmRpdGlvbnMnLCAnQ29uZGl0aW9uJywgdGVtcGxhdGVEaWZmLmNvbmRpdGlvbnMpO1xuICBmb3JtYXR0ZXIuZm9ybWF0U2VjdGlvbignUmVzb3VyY2VzJywgJ1Jlc291cmNlJywgdGVtcGxhdGVEaWZmLnJlc291cmNlcywgZm9ybWF0dGVyLmZvcm1hdFJlc291cmNlRGlmZmVyZW5jZS5iaW5kKGZvcm1hdHRlcikpO1xuICBmb3JtYXR0ZXIuZm9ybWF0U2VjdGlvbignT3V0cHV0cycsICdPdXRwdXQnLCB0ZW1wbGF0ZURpZmYub3V0cHV0cyk7XG4gIGZvcm1hdHRlci5mb3JtYXRTZWN0aW9uKCdPdGhlciBDaGFuZ2VzJywgJ1Vua25vd24nLCB0ZW1wbGF0ZURpZmYudW5rbm93bik7XG59XG5cbi8qKlxuICogUmVuZGVycyBhIGRpZmYgb2Ygc2VjdXJpdHkgY2hhbmdlcyB0byB0aGUgZ2l2ZW4gc3RyZWFtXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRTZWN1cml0eUNoYW5nZXMoXG4gIHN0cmVhbTogTm9kZUpTLldyaXRhYmxlU3RyZWFtLFxuICB0ZW1wbGF0ZURpZmY6IFRlbXBsYXRlRGlmZixcbiAgbG9naWNhbFRvUGF0aE1hcDogeyBbbG9naWNhbElkOiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9LFxuICBjb250ZXh0PzogbnVtYmVyKSB7XG4gIGNvbnN0IGZvcm1hdHRlciA9IG5ldyBGb3JtYXR0ZXIoc3RyZWFtLCBsb2dpY2FsVG9QYXRoTWFwLCB0ZW1wbGF0ZURpZmYsIGNvbnRleHQpO1xuXG4gIGZvcm1hdFNlY3VyaXR5Q2hhbmdlc1dpdGhCYW5uZXIoZm9ybWF0dGVyLCB0ZW1wbGF0ZURpZmYpO1xufVxuXG5mdW5jdGlvbiBmb3JtYXRTZWN1cml0eUNoYW5nZXNXaXRoQmFubmVyKGZvcm1hdHRlcjogRm9ybWF0dGVyLCB0ZW1wbGF0ZURpZmY6IFRlbXBsYXRlRGlmZikge1xuICBpZiAoIXRlbXBsYXRlRGlmZi5pYW1DaGFuZ2VzLmhhc0NoYW5nZXMgJiYgIXRlbXBsYXRlRGlmZi5zZWN1cml0eUdyb3VwQ2hhbmdlcy5oYXNDaGFuZ2VzKSB7IHJldHVybjsgfVxuICBmb3JtYXR0ZXIuZm9ybWF0SWFtQ2hhbmdlcyh0ZW1wbGF0ZURpZmYuaWFtQ2hhbmdlcyk7XG4gIGZvcm1hdHRlci5mb3JtYXRTZWN1cml0eUdyb3VwQ2hhbmdlcyh0ZW1wbGF0ZURpZmYuc2VjdXJpdHlHcm91cENoYW5nZXMpO1xuXG4gIGZvcm1hdHRlci53YXJuaW5nKCcoTk9URTogVGhlcmUgbWF5IGJlIHNlY3VyaXR5LXJlbGF0ZWQgY2hhbmdlcyBub3QgaW4gdGhpcyBsaXN0LiBTZWUgaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2lzc3Vlcy8xMjk5KScpO1xuICBmb3JtYXR0ZXIucHJpbnRTZWN0aW9uRm9vdGVyKCk7XG59XG5cbmNvbnN0IEFERElUSU9OID0gY2hhbGsuZ3JlZW4oJ1srXScpO1xuY29uc3QgQ09OVEVYVCA9IGNoYWxrLmdyZXkoJ1sgXScpO1xuY29uc3QgVVBEQVRFID0gY2hhbGsueWVsbG93KCdbfl0nKTtcbmNvbnN0IFJFTU9WQUwgPSBjaGFsay5yZWQoJ1stXScpO1xuY29uc3QgSU1QT1JUID0gY2hhbGsuYmx1ZSgnW+KGkF0nKTtcblxuY2xhc3MgRm9ybWF0dGVyIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBzdHJlYW06IEZvcm1hdFN0cmVhbSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IGxvZ2ljYWxUb1BhdGhNYXA6IHsgW2xvZ2ljYWxJZDogc3RyaW5nXTogc3RyaW5nIH0sXG4gICAgZGlmZj86IFRlbXBsYXRlRGlmZixcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNvbnRleHQ6IG51bWJlciA9IDMpIHtcbiAgICAvLyBSZWFkIGFkZGl0aW9uYWwgY29uc3RydWN0IHBhdGhzIGZyb20gdGhlIGRpZmYgaWYgaXQgaXMgc3VwcGxpZWRcbiAgICBpZiAoZGlmZikge1xuICAgICAgdGhpcy5yZWFkQ29uc3RydWN0UGF0aHNGcm9tKGRpZmYpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBwcmludChmbXQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICB0aGlzLnN0cmVhbS53cml0ZShjaGFsay53aGl0ZShmb3JtYXQoZm10LCAuLi5hcmdzKSkgKyAnXFxuJyk7XG4gIH1cblxuICBwdWJsaWMgd2FybmluZyhmbXQ6IHN0cmluZywgLi4uYXJnczogYW55W10pIHtcbiAgICB0aGlzLnN0cmVhbS53cml0ZShjaGFsay55ZWxsb3coZm9ybWF0KGZtdCwgLi4uYXJncykpICsgJ1xcbicpO1xuICB9XG5cbiAgcHVibGljIGZvcm1hdFNlY3Rpb248ViwgVCBleHRlbmRzIERpZmZlcmVuY2U8Vj4+KFxuICAgIHRpdGxlOiBzdHJpbmcsXG4gICAgZW50cnlUeXBlOiBzdHJpbmcsXG4gICAgY29sbGVjdGlvbjogRGlmZmVyZW5jZUNvbGxlY3Rpb248ViwgVD4sXG4gICAgZm9ybWF0dGVyOiAodHlwZTogc3RyaW5nLCBpZDogc3RyaW5nLCBkaWZmOiBUKSA9PiB2b2lkID0gdGhpcy5mb3JtYXREaWZmZXJlbmNlLmJpbmQodGhpcykpIHtcblxuICAgIGlmIChjb2xsZWN0aW9uLmRpZmZlcmVuY2VDb3VudCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMucHJpbnRTZWN0aW9uSGVhZGVyKHRpdGxlKTtcbiAgICBjb2xsZWN0aW9uLmZvckVhY2hEaWZmZXJlbmNlKChpZCwgZGlmZikgPT4gZm9ybWF0dGVyKGVudHJ5VHlwZSwgaWQsIGRpZmYpKTtcbiAgICB0aGlzLnByaW50U2VjdGlvbkZvb3RlcigpO1xuICB9XG5cbiAgcHVibGljIHByaW50U2VjdGlvbkhlYWRlcih0aXRsZTogc3RyaW5nKSB7XG4gICAgdGhpcy5wcmludChjaGFsay51bmRlcmxpbmUoY2hhbGsuYm9sZCh0aXRsZSkpKTtcbiAgfVxuXG4gIHB1YmxpYyBwcmludFNlY3Rpb25Gb290ZXIoKSB7XG4gICAgdGhpcy5wcmludCgnJyk7XG4gIH1cblxuICAvKipcbiAgICogUHJpbnQgYSBzaW1wbGUgZGlmZmVyZW5jZSBmb3IgYSBnaXZlbiBuYW1lZCBlbnRpdHkuXG4gICAqXG4gICAqIEBwYXJhbSBsb2dpY2FsSWQgdGhlIG5hbWUgb2YgdGhlIGVudGl0eSB0aGF0IGlzIGRpZmZlcmVudC5cbiAgICogQHBhcmFtIGRpZmYgdGhlIGRpZmZlcmVuY2UgdG8gYmUgcmVuZGVyZWQuXG4gICAqL1xuICBwdWJsaWMgZm9ybWF0RGlmZmVyZW5jZSh0eXBlOiBzdHJpbmcsIGxvZ2ljYWxJZDogc3RyaW5nLCBkaWZmOiBEaWZmZXJlbmNlPGFueT4gfCB1bmRlZmluZWQpIHtcbiAgICBpZiAoIWRpZmYgfHwgIWRpZmYuaXNEaWZmZXJlbnQpIHsgcmV0dXJuOyB9XG5cbiAgICBsZXQgdmFsdWU7XG5cbiAgICBjb25zdCBvbGRWYWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWUoZGlmZi5vbGRWYWx1ZSwgY2hhbGsucmVkKTtcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuZm9ybWF0VmFsdWUoZGlmZi5uZXdWYWx1ZSwgY2hhbGsuZ3JlZW4pO1xuICAgIGlmIChkaWZmLmlzQWRkaXRpb24pIHtcbiAgICAgIHZhbHVlID0gbmV3VmFsdWU7XG4gICAgfSBlbHNlIGlmIChkaWZmLmlzVXBkYXRlKSB7XG4gICAgICB2YWx1ZSA9IGAke29sZFZhbHVlfSB0byAke25ld1ZhbHVlfWA7XG4gICAgfSBlbHNlIGlmIChkaWZmLmlzUmVtb3ZhbCkge1xuICAgICAgdmFsdWUgPSBvbGRWYWx1ZTtcbiAgICB9XG5cbiAgICB0aGlzLnByaW50KGAke3RoaXMuZm9ybWF0UHJlZml4KGRpZmYpfSAke2NoYWxrLmN5YW4odHlwZSl9ICR7dGhpcy5mb3JtYXRMb2dpY2FsSWQobG9naWNhbElkKX06ICR7dmFsdWV9YCk7XG4gIH1cblxuICAvKipcbiAgICogUHJpbnQgYSByZXNvdXJjZSBkaWZmZXJlbmNlIGZvciBhIGdpdmVuIGxvZ2ljYWwgSUQuXG4gICAqXG4gICAqIEBwYXJhbSBsb2dpY2FsSWQgdGhlIGxvZ2ljYWwgSUQgb2YgdGhlIHJlc291cmNlIHRoYXQgY2hhbmdlZC5cbiAgICogQHBhcmFtIGRpZmYgICAgICB0aGUgY2hhbmdlIHRvIGJlIHJlbmRlcmVkLlxuICAgKi9cbiAgcHVibGljIGZvcm1hdFJlc291cmNlRGlmZmVyZW5jZShfdHlwZTogc3RyaW5nLCBsb2dpY2FsSWQ6IHN0cmluZywgZGlmZjogUmVzb3VyY2VEaWZmZXJlbmNlKSB7XG4gICAgaWYgKCFkaWZmLmlzRGlmZmVyZW50KSB7IHJldHVybjsgfVxuXG4gICAgY29uc3QgcmVzb3VyY2VUeXBlID0gZGlmZi5pc1JlbW92YWwgPyBkaWZmLm9sZFJlc291cmNlVHlwZSA6IGRpZmYubmV3UmVzb3VyY2VUeXBlO1xuXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICB0aGlzLnByaW50KGAke3RoaXMuZm9ybWF0UmVzb3VyY2VQcmVmaXgoZGlmZil9ICR7dGhpcy5mb3JtYXRWYWx1ZShyZXNvdXJjZVR5cGUsIGNoYWxrLmN5YW4pfSAke3RoaXMuZm9ybWF0TG9naWNhbElkKGxvZ2ljYWxJZCl9ICR7dGhpcy5mb3JtYXRJbXBhY3QoZGlmZi5jaGFuZ2VJbXBhY3QpfWApO1xuXG4gICAgaWYgKGRpZmYuaXNVcGRhdGUpIHtcbiAgICAgIGNvbnN0IGRpZmZlcmVuY2VDb3VudCA9IGRpZmYuZGlmZmVyZW5jZUNvdW50O1xuICAgICAgbGV0IHByb2Nlc3NlZENvdW50ID0gMDtcbiAgICAgIGRpZmYuZm9yRWFjaERpZmZlcmVuY2UoKF8sIG5hbWUsIHZhbHVlcykgPT4ge1xuICAgICAgICBwcm9jZXNzZWRDb3VudCArPSAxO1xuICAgICAgICB0aGlzLmZvcm1hdFRyZWVEaWZmKG5hbWUsIHZhbHVlcywgcHJvY2Vzc2VkQ291bnQgPT09IGRpZmZlcmVuY2VDb3VudCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZm9ybWF0UmVzb3VyY2VQcmVmaXgoZGlmZjogUmVzb3VyY2VEaWZmZXJlbmNlKSB7XG4gICAgaWYgKGRpZmYuaXNJbXBvcnQpIHsgcmV0dXJuIElNUE9SVDsgfVxuXG4gICAgcmV0dXJuIHRoaXMuZm9ybWF0UHJlZml4KGRpZmYpO1xuICB9XG5cbiAgcHVibGljIGZvcm1hdFByZWZpeDxUPihkaWZmOiBEaWZmZXJlbmNlPFQ+KSB7XG4gICAgaWYgKGRpZmYuaXNBZGRpdGlvbikgeyByZXR1cm4gQURESVRJT047IH1cbiAgICBpZiAoZGlmZi5pc1VwZGF0ZSkgeyByZXR1cm4gVVBEQVRFOyB9XG4gICAgaWYgKGRpZmYuaXNSZW1vdmFsKSB7IHJldHVybiBSRU1PVkFMOyB9XG4gICAgcmV0dXJuIGNoYWxrLndoaXRlKCdbP10nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAcGFyYW0gdmFsdWUgdGhlIHZhbHVlIHRvIGJlIGZvcm1hdHRlZC5cbiAgICogQHBhcmFtIGNvbG9yIHRoZSBjb2xvciB0byBiZSB1c2VkLlxuICAgKlxuICAgKiBAcmV0dXJucyB0aGUgZm9ybWF0dGVkIHN0cmluZywgd2l0aCBjb2xvciBhcHBsaWVkLlxuICAgKi9cbiAgcHVibGljIGZvcm1hdFZhbHVlKHZhbHVlOiBhbnksIGNvbG9yOiAoc3RyOiBzdHJpbmcpID0+IHN0cmluZykge1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cbiAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykgeyByZXR1cm4gY29sb3IodmFsdWUpOyB9XG4gICAgcmV0dXJuIGNvbG9yKEpTT04uc3RyaW5naWZ5KHZhbHVlKSk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIGltcGFjdCB0aGUgaW1wYWN0IHRvIGJlIGZvcm1hdHRlZFxuICAgKiBAcmV0dXJucyBhIHVzZXItZnJpZW5kbHksIGNvbG9yZWQgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgaW1wYWN0LlxuICAgKi9cbiAgcHVibGljIGZvcm1hdEltcGFjdChpbXBhY3Q6IFJlc291cmNlSW1wYWN0KSB7XG4gICAgc3dpdGNoIChpbXBhY3QpIHtcbiAgICAgIGNhc2UgUmVzb3VyY2VJbXBhY3QuTUFZX1JFUExBQ0U6XG4gICAgICAgIHJldHVybiBjaGFsay5pdGFsaWMoY2hhbGsueWVsbG93KCdtYXkgYmUgcmVwbGFjZWQnKSk7XG4gICAgICBjYXNlIFJlc291cmNlSW1wYWN0LldJTExfUkVQTEFDRTpcbiAgICAgICAgcmV0dXJuIGNoYWxrLml0YWxpYyhjaGFsay5ib2xkKGNoYWxrLnJlZCgncmVwbGFjZScpKSk7XG4gICAgICBjYXNlIFJlc291cmNlSW1wYWN0LldJTExfREVTVFJPWTpcbiAgICAgICAgcmV0dXJuIGNoYWxrLml0YWxpYyhjaGFsay5ib2xkKGNoYWxrLnJlZCgnZGVzdHJveScpKSk7XG4gICAgICBjYXNlIFJlc291cmNlSW1wYWN0LldJTExfT1JQSEFOOlxuICAgICAgICByZXR1cm4gY2hhbGsuaXRhbGljKGNoYWxrLnllbGxvdygnb3JwaGFuJykpO1xuICAgICAgY2FzZSBSZXNvdXJjZUltcGFjdC5XSUxMX0lNUE9SVDpcbiAgICAgICAgcmV0dXJuIGNoYWxrLml0YWxpYyhjaGFsay5ibHVlKCdpbXBvcnQnKSk7XG4gICAgICBjYXNlIFJlc291cmNlSW1wYWN0LldJTExfVVBEQVRFOlxuICAgICAgY2FzZSBSZXNvdXJjZUltcGFjdC5XSUxMX0NSRUFURTpcbiAgICAgIGNhc2UgUmVzb3VyY2VJbXBhY3QuTk9fQ0hBTkdFOlxuICAgICAgICByZXR1cm4gJyc7IC8vIG5vIGV4dHJhIGluZm8gaXMgZ2FpbmVkIGhlcmVcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyBhIHRyZWUgb2YgZGlmZmVyZW5jZXMgdW5kZXIgYSBwYXJ0aWN1bGFyIG5hbWUuXG4gICAqIEBwYXJhbSBuYW1lICAgIHRoZSBuYW1lIG9mIHRoZSByb290IG9mIHRoZSB0cmVlLlxuICAgKiBAcGFyYW0gZGlmZiAgICB0aGUgZGlmZmVyZW5jZSBvbiB0aGUgdHJlZS5cbiAgICogQHBhcmFtIGxhc3QgICAgd2hldGhlciB0aGlzIGlzIHRoZSBsYXN0IG5vZGUgb2YgYSBwYXJlbnQgdHJlZS5cbiAgICovXG4gIHB1YmxpYyBmb3JtYXRUcmVlRGlmZihuYW1lOiBzdHJpbmcsIGRpZmY6IERpZmZlcmVuY2U8YW55PiwgbGFzdDogYm9vbGVhbikge1xuICAgIGxldCBhZGRpdGlvbmFsSW5mbyA9ICcnO1xuICAgIGlmIChpc1Byb3BlcnR5RGlmZmVyZW5jZShkaWZmKSkge1xuICAgICAgaWYgKGRpZmYuY2hhbmdlSW1wYWN0ID09PSBSZXNvdXJjZUltcGFjdC5NQVlfUkVQTEFDRSkge1xuICAgICAgICBhZGRpdGlvbmFsSW5mbyA9ICcgKG1heSBjYXVzZSByZXBsYWNlbWVudCknO1xuICAgICAgfSBlbHNlIGlmIChkaWZmLmNoYW5nZUltcGFjdCA9PT0gUmVzb3VyY2VJbXBhY3QuV0lMTF9SRVBMQUNFKSB7XG4gICAgICAgIGFkZGl0aW9uYWxJbmZvID0gJyAocmVxdWlyZXMgcmVwbGFjZW1lbnQpJztcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5wcmludCgnICVz4pSAICVzICVzJXMnLCBsYXN0ID8gJ+KUlCcgOiAn4pScJywgdGhpcy5jaGFuZ2VUYWcoZGlmZi5vbGRWYWx1ZSwgZGlmZi5uZXdWYWx1ZSksIG5hbWUsIGFkZGl0aW9uYWxJbmZvKTtcbiAgICByZXR1cm4gdGhpcy5mb3JtYXRPYmplY3REaWZmKGRpZmYub2xkVmFsdWUsIGRpZmYubmV3VmFsdWUsIGAgJHtsYXN0ID8gJyAnIDogJ+KUgid9YCk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVycyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBvYmplY3RzLCBsb29raW5nIGZvciB0aGUgZGlmZmVyZW5jZXMgYXMgZGVlcCBhcyBwb3NzaWJsZSxcbiAgICogYW5kIHJlbmRlcmluZyBhIHRyZWUgZ3JhcGggb2YgdGhlIHBhdGggdW50aWwgdGhlIGRpZmZlcmVuY2UgaXMgZm91bmQuXG4gICAqXG4gICAqIEBwYXJhbSBvbGRPYmplY3QgIHRoZSBvbGQgb2JqZWN0LlxuICAgKiBAcGFyYW0gbmV3T2JqZWN0ICB0aGUgbmV3IG9iamVjdC5cbiAgICogQHBhcmFtIGxpbmVQcmVmaXggYSBwcmVmaXggKGluZGVudC1saWtlKSB0byBiZSB1c2VkIG9uIGV2ZXJ5IGxpbmUuXG4gICAqL1xuICBwdWJsaWMgZm9ybWF0T2JqZWN0RGlmZihvbGRPYmplY3Q6IGFueSwgbmV3T2JqZWN0OiBhbnksIGxpbmVQcmVmaXg6IHN0cmluZykge1xuICAgIGlmICgodHlwZW9mIG9sZE9iamVjdCAhPT0gdHlwZW9mIG5ld09iamVjdCkgfHwgQXJyYXkuaXNBcnJheShvbGRPYmplY3QpIHx8IHR5cGVvZiBvbGRPYmplY3QgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiBvbGRPYmplY3QgPT09ICdudW1iZXInKSB7XG4gICAgICBpZiAob2xkT2JqZWN0ICE9PSB1bmRlZmluZWQgJiYgbmV3T2JqZWN0ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBvbGRPYmplY3QgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBuZXdPYmplY3QgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgY29uc3Qgb2xkU3RyID0gSlNPTi5zdHJpbmdpZnkob2xkT2JqZWN0LCBudWxsLCAyKTtcbiAgICAgICAgICBjb25zdCBuZXdTdHIgPSBKU09OLnN0cmluZ2lmeShuZXdPYmplY3QsIG51bGwsIDIpO1xuICAgICAgICAgIGNvbnN0IGRpZmYgPSBfZGlmZlN0cmluZ3Mob2xkU3RyLCBuZXdTdHIsIHRoaXMuY29udGV4dCk7XG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkaWZmLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB0aGlzLnByaW50KCclcyAgICVzICVzJywgbGluZVByZWZpeCwgaSA9PT0gMCA/ICfilJTilIAnIDogJyAgJywgZGlmZltpXSk7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMucHJpbnQoJyVzICAg4pSc4pSAICVzICVzJywgbGluZVByZWZpeCwgUkVNT1ZBTCwgdGhpcy5mb3JtYXRWYWx1ZShvbGRPYmplY3QsIGNoYWxrLnJlZCkpO1xuICAgICAgICAgIHRoaXMucHJpbnQoJyVzICAg4pSU4pSAICVzICVzJywgbGluZVByZWZpeCwgQURESVRJT04sIHRoaXMuZm9ybWF0VmFsdWUobmV3T2JqZWN0LCBjaGFsay5ncmVlbikpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKG9sZE9iamVjdCAhPT0gdW5kZWZpbmVkIC8qICYmIG5ld09iamVjdCA9PT0gdW5kZWZpbmVkICovKSB7XG4gICAgICAgIHRoaXMucHJpbnQoJyVzICAg4pSU4pSAICVzJywgbGluZVByZWZpeCwgdGhpcy5mb3JtYXRWYWx1ZShvbGRPYmplY3QsIGNoYWxrLnJlZCkpO1xuICAgICAgfSBlbHNlIC8qIGlmIChvbGRPYmplY3QgPT09IHVuZGVmaW5lZCAmJiBuZXdPYmplY3QgIT09IHVuZGVmaW5lZCkgKi8ge1xuICAgICAgICB0aGlzLnByaW50KCclcyAgIOKUlOKUgCAlcycsIGxpbmVQcmVmaXgsIHRoaXMuZm9ybWF0VmFsdWUobmV3T2JqZWN0LCBjaGFsay5ncmVlbikpO1xuICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBrZXlTZXQgPSBuZXcgU2V0KE9iamVjdC5rZXlzKG9sZE9iamVjdCkpO1xuICAgIE9iamVjdC5rZXlzKG5ld09iamVjdCkuZm9yRWFjaChrID0+IGtleVNldC5hZGQoaykpO1xuICAgIGNvbnN0IGtleXMgPSBuZXcgQXJyYXkoLi4ua2V5U2V0KS5maWx0ZXIoayA9PiAhZGVlcEVxdWFsKG9sZE9iamVjdFtrXSwgbmV3T2JqZWN0W2tdKSkuc29ydCgpO1xuICAgIGNvbnN0IGxhc3RLZXkgPSBrZXlzW2tleXMubGVuZ3RoIC0gMV07XG4gICAgZm9yIChjb25zdCBrZXkgb2Yga2V5cykge1xuICAgICAgY29uc3Qgb2xkVmFsdWUgPSBvbGRPYmplY3Rba2V5XTtcbiAgICAgIGNvbnN0IG5ld1ZhbHVlID0gbmV3T2JqZWN0W2tleV07XG4gICAgICBjb25zdCB0cmVlUHJlZml4ID0ga2V5ID09PSBsYXN0S2V5ID8gJ+KUlCcgOiAn4pScJztcbiAgICAgIGlmIChvbGRWYWx1ZSAhPT0gdW5kZWZpbmVkICYmIG5ld1ZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgdGhpcy5wcmludCgnJXMgICAlc+KUgCAlcyAlczonLCBsaW5lUHJlZml4LCB0cmVlUHJlZml4LCB0aGlzLmNoYW5nZVRhZyhvbGRWYWx1ZSwgbmV3VmFsdWUpLCBjaGFsay5ibHVlKGAuJHtrZXl9YCkpO1xuICAgICAgICB0aGlzLmZvcm1hdE9iamVjdERpZmYob2xkVmFsdWUsIG5ld1ZhbHVlLCBgJHtsaW5lUHJlZml4fSAgICR7a2V5ID09PSBsYXN0S2V5ID8gJyAnIDogJ+KUgid9YCk7XG4gICAgICB9IGVsc2UgaWYgKG9sZFZhbHVlICE9PSB1bmRlZmluZWQgLyogJiYgbmV3VmFsdWUgPT09IHVuZGVmaW5lZCAqLykge1xuICAgICAgICB0aGlzLnByaW50KCclcyAgICVz4pSAICVzIFJlbW92ZWQ6ICVzJywgbGluZVByZWZpeCwgdHJlZVByZWZpeCwgUkVNT1ZBTCwgY2hhbGsuYmx1ZShgLiR7a2V5fWApKTtcbiAgICAgIH0gZWxzZSAvKiBpZiAob2xkVmFsdWUgPT09IHVuZGVmaW5lZCAmJiBuZXdWYWx1ZSAhPT0gdW5kZWZpbmVkICovIHtcbiAgICAgICAgdGhpcy5wcmludCgnJXMgICAlc+KUgCAlcyBBZGRlZDogJXMnLCBsaW5lUHJlZml4LCB0cmVlUHJlZml4LCBBRERJVElPTiwgY2hhbGsuYmx1ZShgLiR7a2V5fWApKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIG9sZFZhbHVlIHRoZSBvbGQgdmFsdWUgb2YgYSBkaWZmZXJlbmNlLlxuICAgKiBAcGFyYW0gbmV3VmFsdWUgdGhlIG5ldyB2YWx1ZSBvZiBhIGRpZmZlcmVuY2UuXG4gICAqXG4gICAqIEByZXR1cm5zIGEgdGFnIHRvIGJlIHJlbmRlcmVkIGluIHRoZSBkaWZmLCByZWZsZWN0aW5nIHdoZXRoZXIgdGhlIGRpZmZlcmVuY2VcbiAgICogICAgICB3YXMgYW4gQURESVRJT04sIFVQREFURSBvciBSRU1PVkFMLlxuICAgKi9cbiAgcHVibGljIGNoYW5nZVRhZyhvbGRWYWx1ZTogYW55IHwgdW5kZWZpbmVkLCBuZXdWYWx1ZTogYW55IHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgICBpZiAob2xkVmFsdWUgIT09IHVuZGVmaW5lZCAmJiBuZXdWYWx1ZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gVVBEQVRFO1xuICAgIH0gZWxzZSBpZiAob2xkVmFsdWUgIT09IHVuZGVmaW5lZCAvKiAmJiBuZXdWYWx1ZSA9PT0gdW5kZWZpbmVkKi8pIHtcbiAgICAgIHJldHVybiBSRU1PVkFMO1xuICAgIH0gZWxzZSAvKiBpZiAob2xkVmFsdWUgPT09IHVuZGVmaW5lZCAmJiBuZXdWYWx1ZSAhPT0gdW5kZWZpbmVkKSAqLyB7XG4gICAgICByZXR1cm4gQURESVRJT047XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEZpbmQgJ2F3czpjZGs6cGF0aCcgbWV0YWRhdGEgaW4gdGhlIGRpZmYgYW5kIGFkZCBpdCB0byB0aGUgbG9naWNhbFRvUGF0aE1hcFxuICAgKlxuICAgKiBUaGVyZSBhcmUgbXVsdGlwbGUgc291cmNlcyBvZiBsb2dpY2FsSUQgLT4gcGF0aCBtYXBwaW5nczogc3ludGggbWV0YWRhdGFcbiAgICogYW5kIHJlc291cmNlIG1ldGFkYXRhLCBhbmQgd2UgY29tYmluZSBhbGwgc291cmNlcyBpbnRvIGEgc2luZ2xlIG1hcC5cbiAgICovXG4gIHB1YmxpYyByZWFkQ29uc3RydWN0UGF0aHNGcm9tKHRlbXBsYXRlRGlmZjogVGVtcGxhdGVEaWZmKSB7XG4gICAgZm9yIChjb25zdCBbbG9naWNhbElkLCByZXNvdXJjZURpZmZdIG9mIE9iamVjdC5lbnRyaWVzKHRlbXBsYXRlRGlmZi5yZXNvdXJjZXMpKSB7XG4gICAgICBpZiAoIXJlc291cmNlRGlmZikgeyBjb250aW51ZTsgfVxuXG4gICAgICBjb25zdCBvbGRQYXRoTWV0YWRhdGEgPSByZXNvdXJjZURpZmYub2xkVmFsdWU/Lk1ldGFkYXRhPy5bUEFUSF9NRVRBREFUQV9LRVldO1xuICAgICAgaWYgKG9sZFBhdGhNZXRhZGF0YSAmJiAhKGxvZ2ljYWxJZCBpbiB0aGlzLmxvZ2ljYWxUb1BhdGhNYXApKSB7XG4gICAgICAgIHRoaXMubG9naWNhbFRvUGF0aE1hcFtsb2dpY2FsSWRdID0gb2xkUGF0aE1ldGFkYXRhO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBuZXdQYXRoTWV0YWRhdGEgPSByZXNvdXJjZURpZmYubmV3VmFsdWU/Lk1ldGFkYXRhPy5bUEFUSF9NRVRBREFUQV9LRVldO1xuICAgICAgaWYgKG5ld1BhdGhNZXRhZGF0YSAmJiAhKGxvZ2ljYWxJZCBpbiB0aGlzLmxvZ2ljYWxUb1BhdGhNYXApKSB7XG4gICAgICAgIHRoaXMubG9naWNhbFRvUGF0aE1hcFtsb2dpY2FsSWRdID0gbmV3UGF0aE1ldGFkYXRhO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXRMb2dpY2FsSWQobG9naWNhbElkOiBzdHJpbmcpIHtcbiAgICAvLyBpZiB3ZSBoYXZlIGEgcGF0aCBpbiB0aGUgbWFwLCByZXR1cm4gaXRcbiAgICBjb25zdCBub3JtYWxpemVkID0gdGhpcy5ub3JtYWxpemVkTG9naWNhbElkUGF0aChsb2dpY2FsSWQpO1xuXG4gICAgaWYgKG5vcm1hbGl6ZWQpIHtcbiAgICAgIHJldHVybiBgJHtub3JtYWxpemVkfSAke2NoYWxrLmdyYXkobG9naWNhbElkKX1gO1xuICAgIH1cblxuICAgIHJldHVybiBsb2dpY2FsSWQ7XG4gIH1cblxuICBwdWJsaWMgbm9ybWFsaXplZExvZ2ljYWxJZFBhdGgobG9naWNhbElkOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIC8vIGlmIHdlIGhhdmUgYSBwYXRoIGluIHRoZSBtYXAsIHJldHVybiBpdFxuICAgIGNvbnN0IHBhdGggPSB0aGlzLmxvZ2ljYWxUb1BhdGhNYXBbbG9naWNhbElkXTtcbiAgICByZXR1cm4gcGF0aCA/IG5vcm1hbGl6ZVBhdGgocGF0aCkgOiB1bmRlZmluZWQ7XG5cbiAgICAvKipcbiAgICAgKiBQYXRoIGlzIHN1cHBvc2VkIHRvIHN0YXJ0IHdpdGggXCIvc3RhY2stbmFtZVwiLiBJZiB0aGlzIGlzIHRoZSBjYXNlIChpLmUuIHBhdGggaGFzIG1vcmUgdGhhblxuICAgICAqIHR3byBjb21wb25lbnRzLCB3ZSByZW1vdmUgdGhlIGZpcnN0IHBhcnQuIE90aGVyd2lzZSwgd2UganVzdCB1c2UgdGhlIGZ1bGwgcGF0aC5cbiAgICAgKiBAcGFyYW0gcFxuICAgICAqL1xuICAgIGZ1bmN0aW9uIG5vcm1hbGl6ZVBhdGgocDogc3RyaW5nKSB7XG4gICAgICBpZiAocC5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgICAgcCA9IHAuc2xpY2UoMSk7XG4gICAgICB9XG5cbiAgICAgIGxldCBwYXJ0cyA9IHAuc3BsaXQoJy8nKTtcbiAgICAgIGlmIChwYXJ0cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHBhcnRzID0gcGFydHMuc2xpY2UoMSk7XG5cbiAgICAgICAgLy8gcmVtb3ZlIHRoZSBsYXN0IGNvbXBvbmVudCBpZiBpdCdzIFwiUmVzb3VyY2VcIiBvciBcIkRlZmF1bHRcIiAoaWYgd2UgaGF2ZSBtb3JlIHRoYW4gYSBzaW5nbGUgY29tcG9uZW50KVxuICAgICAgICBpZiAocGFydHMubGVuZ3RoID4gMSkge1xuICAgICAgICAgIGNvbnN0IGxhc3QgPSBwYXJ0c1twYXJ0cy5sZW5ndGggLSAxXTtcbiAgICAgICAgICBpZiAobGFzdCA9PT0gJ1Jlc291cmNlJyB8fCBsYXN0ID09PSAnRGVmYXVsdCcpIHtcbiAgICAgICAgICAgIHBhcnRzID0gcGFydHMuc2xpY2UoMCwgcGFydHMubGVuZ3RoIC0gMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcCA9IHBhcnRzLmpvaW4oJy8nKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBwO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXRJYW1DaGFuZ2VzKGNoYW5nZXM6IElhbUNoYW5nZXMpIHtcbiAgICBpZiAoIWNoYW5nZXMuaGFzQ2hhbmdlcykgeyByZXR1cm47IH1cblxuICAgIGlmIChjaGFuZ2VzLnN0YXRlbWVudHMuaGFzQ2hhbmdlcykge1xuICAgICAgdGhpcy5wcmludFNlY3Rpb25IZWFkZXIoJ0lBTSBTdGF0ZW1lbnQgQ2hhbmdlcycpO1xuICAgICAgdGhpcy5wcmludChmb3JtYXRUYWJsZSh0aGlzLmRlZXBTdWJzdGl0dXRlQnJhY2VkTG9naWNhbElkcyhjaGFuZ2VzLnN1bW1hcml6ZVN0YXRlbWVudHMoKSksIHRoaXMuc3RyZWFtLmNvbHVtbnMpKTtcbiAgICB9XG5cbiAgICBpZiAoY2hhbmdlcy5tYW5hZ2VkUG9saWNpZXMuaGFzQ2hhbmdlcykge1xuICAgICAgdGhpcy5wcmludFNlY3Rpb25IZWFkZXIoJ0lBTSBQb2xpY3kgQ2hhbmdlcycpO1xuICAgICAgdGhpcy5wcmludChmb3JtYXRUYWJsZSh0aGlzLmRlZXBTdWJzdGl0dXRlQnJhY2VkTG9naWNhbElkcyhjaGFuZ2VzLnN1bW1hcml6ZU1hbmFnZWRQb2xpY2llcygpKSwgdGhpcy5zdHJlYW0uY29sdW1ucykpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBmb3JtYXRTZWN1cml0eUdyb3VwQ2hhbmdlcyhjaGFuZ2VzOiBTZWN1cml0eUdyb3VwQ2hhbmdlcykge1xuICAgIGlmICghY2hhbmdlcy5oYXNDaGFuZ2VzKSB7IHJldHVybjsgfVxuXG4gICAgdGhpcy5wcmludFNlY3Rpb25IZWFkZXIoJ1NlY3VyaXR5IEdyb3VwIENoYW5nZXMnKTtcbiAgICB0aGlzLnByaW50KGZvcm1hdFRhYmxlKHRoaXMuZGVlcFN1YnN0aXR1dGVCcmFjZWRMb2dpY2FsSWRzKGNoYW5nZXMuc3VtbWFyaXplKCkpLCB0aGlzLnN0cmVhbS5jb2x1bW5zKSk7XG4gIH1cblxuICBwdWJsaWMgZGVlcFN1YnN0aXR1dGVCcmFjZWRMb2dpY2FsSWRzKHJvd3M6IHN0cmluZ1tdW10pOiBzdHJpbmdbXVtdIHtcbiAgICByZXR1cm4gcm93cy5tYXAocm93ID0+IHJvdy5tYXAodGhpcy5zdWJzdGl0dXRlQnJhY2VkTG9naWNhbElkcy5iaW5kKHRoaXMpKSk7XG4gIH1cblxuICAvKipcbiAgICogU3Vic3RpdHV0ZSBhbGwgc3RyaW5ncyBsaWtlICR7TG9nSWQueHh4fSB3aXRoIHRoZSBwYXRoIGluc3RlYWQgb2YgdGhlIGxvZ2ljYWwgSURcbiAgICovXG4gIHB1YmxpYyBzdWJzdGl0dXRlQnJhY2VkTG9naWNhbElkcyhzb3VyY2U6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHNvdXJjZS5yZXBsYWNlKC9cXCRcXHsoW14ufV0rKSguW159XSspP1xcfS9pZywgKF9tYXRjaCwgbG9nSWQsIHN1ZmZpeCkgPT4ge1xuICAgICAgcmV0dXJuICckeycgKyAodGhpcy5ub3JtYWxpemVkTG9naWNhbElkUGF0aChsb2dJZCkgfHwgbG9nSWQpICsgKHN1ZmZpeCB8fCAnJykgKyAnfSc7XG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBBIHBhdGNoIGFzIHJldHVybmVkIGJ5IGBgZGlmZi5zdHJ1Y3R1cmVkUGF0Y2hgYC5cbiAqL1xuaW50ZXJmYWNlIFBhdGNoIHtcbiAgLyoqXG4gICAqIEh1bmtzIGluIHRoZSBwYXRjaC5cbiAgICovXG4gIGh1bmtzOiBSZWFkb25seUFycmF5PFBhdGNoSHVuaz47XG59XG5cbi8qKlxuICogQSBodW5rIGluIGEgcGF0Y2ggcHJvZHVjZWQgYnkgYGBkaWZmLnN0cnVjdHVyZWRQYXRjaGBgLlxuICovXG5pbnRlcmZhY2UgUGF0Y2hIdW5rIHtcbiAgb2xkU3RhcnQ6IG51bWJlcjtcbiAgb2xkTGluZXM6IG51bWJlcjtcbiAgbmV3U3RhcnQ6IG51bWJlcjtcbiAgbmV3TGluZXM6IG51bWJlcjtcbiAgbGluZXM6IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSB1bmlmaWVkIGRpZmYgb2YgdHdvIHN0cmluZ3MuXG4gKlxuICogQHBhcmFtIG9sZFN0ciAgdGhlIFwib2xkXCIgdmVyc2lvbiBvZiB0aGUgc3RyaW5nLlxuICogQHBhcmFtIG5ld1N0ciAgdGhlIFwibmV3XCIgdmVyc2lvbiBvZiB0aGUgc3RyaW5nLlxuICogQHBhcmFtIGNvbnRleHQgdGhlIG51bWJlciBvZiBjb250ZXh0IGxpbmVzIHRvIHVzZSBpbiBhcmJpdHJhcnkgSlNPTiBkaWZmLlxuICpcbiAqIEByZXR1cm5zIGFuIGFycmF5IG9mIGRpZmYgbGluZXMuXG4gKi9cbmZ1bmN0aW9uIF9kaWZmU3RyaW5ncyhvbGRTdHI6IHN0cmluZywgbmV3U3RyOiBzdHJpbmcsIGNvbnRleHQ6IG51bWJlcik6IHN0cmluZ1tdIHtcbiAgY29uc3QgcGF0Y2g6IFBhdGNoID0gc3RydWN0dXJlZFBhdGNoKG51bGwsIG51bGwsIG9sZFN0ciwgbmV3U3RyLCBudWxsLCBudWxsLCB7IGNvbnRleHQgfSk7XG4gIGNvbnN0IHJlc3VsdCA9IG5ldyBBcnJheTxzdHJpbmc+KCk7XG4gIGZvciAoY29uc3QgaHVuayBvZiBwYXRjaC5odW5rcykge1xuICAgIHJlc3VsdC5wdXNoKGNoYWxrLm1hZ2VudGEoYEBAIC0ke2h1bmsub2xkU3RhcnR9LCR7aHVuay5vbGRMaW5lc30gKyR7aHVuay5uZXdTdGFydH0sJHtodW5rLm5ld0xpbmVzfSBAQGApKTtcbiAgICBjb25zdCBiYXNlSW5kZW50ID0gX2ZpbmRJbmRlbnQoaHVuay5saW5lcyk7XG4gICAgZm9yIChjb25zdCBsaW5lIG9mIGh1bmsubGluZXMpIHtcbiAgICAgIC8vIERvbid0IGNhcmUgYWJvdXQgdGVybWluYXRpb24gbmV3bGluZS5cbiAgICAgIGlmIChsaW5lID09PSAnXFxcXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlJykgeyBjb250aW51ZTsgfVxuICAgICAgY29uc3QgbWFya2VyID0gbGluZS5jaGFyQXQoMCk7XG4gICAgICBjb25zdCB0ZXh0ID0gbGluZS5zbGljZSgxICsgYmFzZUluZGVudCk7XG4gICAgICBzd2l0Y2ggKG1hcmtlcikge1xuICAgICAgICBjYXNlICcgJzpcbiAgICAgICAgICByZXN1bHQucHVzaChgJHtDT05URVhUfSAke3RleHR9YCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJysnOlxuICAgICAgICAgIHJlc3VsdC5wdXNoKGNoYWxrLmJvbGQoYCR7QURESVRJT059ICR7Y2hhbGsuZ3JlZW4odGV4dCl9YCkpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICctJzpcbiAgICAgICAgICByZXN1bHQucHVzaChjaGFsay5ib2xkKGAke1JFTU9WQUx9ICR7Y2hhbGsucmVkKHRleHQpfWApKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgZGlmZiBtYXJrZXI6ICR7bWFya2VyfSAoZnVsbCBsaW5lOiAke2xpbmV9KWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gcmVzdWx0O1xuXG4gIGZ1bmN0aW9uIF9maW5kSW5kZW50KGxpbmVzOiBzdHJpbmdbXSk6IG51bWJlciB7XG4gICAgbGV0IGluZGVudCA9IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSO1xuICAgIGZvciAoY29uc3QgbGluZSBvZiBsaW5lcykge1xuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBsaW5lLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGlmIChsaW5lLmNoYXJBdChpKSAhPT0gJyAnKSB7XG4gICAgICAgICAgaW5kZW50ID0gaW5kZW50ID4gaSAtIDEgPyBpIC0gMSA6IGluZGVudDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaW5kZW50O1xuICB9XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IamChanges = void 0;\nconst service_spec_types_1 = require(\"@aws-cdk/service-spec-types\");\nconst chalk = require(\"chalk\");\nconst managed_policy_1 = require(\"./managed-policy\");\nconst statement_1 = require(\"./statement\");\nconst diffable_1 = require(\"../diffable\");\nconst render_intrinsics_1 = require(\"../render-intrinsics\");\nconst util_1 = require(\"../util\");\n/**\n * Changes to IAM statements\n */\nclass IamChanges {\n constructor(props) {\n this.statements = new diffable_1.DiffableCollection();\n this.managedPolicies = new diffable_1.DiffableCollection();\n for (const propertyChange of props.propertyChanges) {\n this.readPropertyChange(propertyChange);\n }\n for (const resourceChange of props.resourceChanges) {\n this.readResourceChange(resourceChange);\n }\n this.statements.calculateDiff();\n this.managedPolicies.calculateDiff();\n }\n get hasChanges() {\n return this.statements.hasChanges || this.managedPolicies.hasChanges;\n }\n /**\n * Return whether the changes include broadened permissions\n *\n * Permissions are broadened if positive statements are added or\n * negative statements are removed, or if managed policies are added.\n */\n get permissionsBroadened() {\n return this.statements.additions.some(s => !s.isNegativeStatement)\n || this.statements.removals.some(s => s.isNegativeStatement)\n || this.managedPolicies.hasAdditions;\n }\n /**\n * Return a summary table of changes\n */\n summarizeStatements() {\n const ret = [];\n const header = ['', 'Resource', 'Effect', 'Action', 'Principal', 'Condition'];\n // First generate all lines, then sort on Resource so that similar resources are together\n for (const statement of this.statements.additions) {\n const renderedStatement = statement.render();\n ret.push([\n '+',\n renderedStatement.resource,\n renderedStatement.effect,\n renderedStatement.action,\n renderedStatement.principal,\n renderedStatement.condition,\n ].map(s => chalk.green(s)));\n }\n for (const statement of this.statements.removals) {\n const renderedStatement = statement.render();\n ret.push([\n chalk.red('-'),\n renderedStatement.resource,\n renderedStatement.effect,\n renderedStatement.action,\n renderedStatement.principal,\n renderedStatement.condition,\n ].map(s => chalk.red(s)));\n }\n // Sort by 2nd column\n ret.sort((0, util_1.makeComparator)((row) => [row[1]]));\n ret.splice(0, 0, header);\n return ret;\n }\n summarizeManagedPolicies() {\n const ret = [];\n const header = ['', 'Resource', 'Managed Policy ARN'];\n for (const att of this.managedPolicies.additions) {\n ret.push([\n '+',\n att.identityArn,\n att.managedPolicyArn,\n ].map(s => chalk.green(s)));\n }\n for (const att of this.managedPolicies.removals) {\n ret.push([\n '-',\n att.identityArn,\n att.managedPolicyArn,\n ].map(s => chalk.red(s)));\n }\n // Sort by 2nd column\n ret.sort((0, util_1.makeComparator)((row) => [row[1]]));\n ret.splice(0, 0, header);\n return ret;\n }\n /**\n * Return a machine-readable version of the changes.\n * This is only used in tests.\n *\n * @internal\n */\n _toJson() {\n return (0, util_1.deepRemoveUndefined)({\n statementAdditions: (0, util_1.dropIfEmpty)(this.statements.additions.map(s => s._toJson())),\n statementRemovals: (0, util_1.dropIfEmpty)(this.statements.removals.map(s => s._toJson())),\n managedPolicyAdditions: (0, util_1.dropIfEmpty)(this.managedPolicies.additions.map(s => s._toJson())),\n managedPolicyRemovals: (0, util_1.dropIfEmpty)(this.managedPolicies.removals.map(s => s._toJson())),\n });\n }\n readPropertyChange(propertyChange) {\n switch (propertyChange.scrutinyType) {\n case service_spec_types_1.PropertyScrutinyType.InlineIdentityPolicies:\n // AWS::IAM::{ Role | User | Group }.Policies\n this.statements.addOld(...this.readIdentityPolicies(propertyChange.oldValue, propertyChange.resourceLogicalId));\n this.statements.addNew(...this.readIdentityPolicies(propertyChange.newValue, propertyChange.resourceLogicalId));\n break;\n case service_spec_types_1.PropertyScrutinyType.InlineResourcePolicy:\n // Any PolicyDocument on a resource (including AssumeRolePolicyDocument)\n this.statements.addOld(...this.readResourceStatements(propertyChange.oldValue, propertyChange.resourceLogicalId));\n this.statements.addNew(...this.readResourceStatements(propertyChange.newValue, propertyChange.resourceLogicalId));\n break;\n case service_spec_types_1.PropertyScrutinyType.ManagedPolicies:\n // Just a list of managed policies\n this.managedPolicies.addOld(...this.readManagedPolicies(propertyChange.oldValue, propertyChange.resourceLogicalId));\n this.managedPolicies.addNew(...this.readManagedPolicies(propertyChange.newValue, propertyChange.resourceLogicalId));\n break;\n }\n }\n readResourceChange(resourceChange) {\n switch (resourceChange.scrutinyType) {\n case service_spec_types_1.ResourceScrutinyType.IdentityPolicyResource:\n // AWS::IAM::Policy\n this.statements.addOld(...this.readIdentityPolicyResource(resourceChange.oldProperties));\n this.statements.addNew(...this.readIdentityPolicyResource(resourceChange.newProperties));\n break;\n case service_spec_types_1.ResourceScrutinyType.ResourcePolicyResource:\n // AWS::*::{Bucket,Queue,Topic}Policy\n this.statements.addOld(...this.readResourcePolicyResource(resourceChange.oldProperties));\n this.statements.addNew(...this.readResourcePolicyResource(resourceChange.newProperties));\n break;\n case service_spec_types_1.ResourceScrutinyType.LambdaPermission:\n this.statements.addOld(...this.readLambdaStatements(resourceChange.oldProperties));\n this.statements.addNew(...this.readLambdaStatements(resourceChange.newProperties));\n break;\n }\n }\n /**\n * Parse a list of policies on an identity\n */\n readIdentityPolicies(policies, logicalId) {\n if (policies === undefined || !Array.isArray(policies)) {\n return [];\n }\n const appliesToPrincipal = 'AWS:${' + logicalId + '}';\n return (0, util_1.flatMap)(policies, (policy) => {\n // check if the Policy itself is not an intrinsic, like an Fn::If\n const unparsedStatement = policy.PolicyDocument?.Statement\n ? policy.PolicyDocument.Statement\n : policy;\n return defaultPrincipal(appliesToPrincipal, (0, statement_1.parseStatements)((0, render_intrinsics_1.renderIntrinsics)(unparsedStatement)));\n });\n }\n /**\n * Parse an IAM::Policy resource\n */\n readIdentityPolicyResource(properties) {\n if (properties === undefined) {\n return [];\n }\n properties = (0, render_intrinsics_1.renderIntrinsics)(properties);\n const principals = (properties.Groups || []).concat(properties.Users || []).concat(properties.Roles || []);\n return (0, util_1.flatMap)(principals, (principal) => {\n const ref = 'AWS:' + principal;\n return defaultPrincipal(ref, (0, statement_1.parseStatements)(properties.PolicyDocument.Statement));\n });\n }\n readResourceStatements(policy, logicalId) {\n if (policy === undefined) {\n return [];\n }\n const appliesToResource = '${' + logicalId + '.Arn}';\n return defaultResource(appliesToResource, (0, statement_1.parseStatements)((0, render_intrinsics_1.renderIntrinsics)(policy.Statement)));\n }\n /**\n * Parse an AWS::*::{Bucket,Topic,Queue}policy\n */\n readResourcePolicyResource(properties) {\n if (properties === undefined) {\n return [];\n }\n properties = (0, render_intrinsics_1.renderIntrinsics)(properties);\n const policyKeys = Object.keys(properties).filter(key => key.indexOf('Policy') > -1);\n // Find the key that identifies the resource(s) this policy applies to\n const resourceKeys = Object.keys(properties).filter(key => !policyKeys.includes(key) && !key.endsWith('Name'));\n let resources = resourceKeys.length === 1 ? properties[resourceKeys[0]] : ['???'];\n // For some resources, this is a singleton string, for some it's an array\n if (!Array.isArray(resources)) {\n resources = [resources];\n }\n return (0, util_1.flatMap)(resources, (resource) => {\n return defaultResource(resource, (0, statement_1.parseStatements)(properties[policyKeys[0]].Statement));\n });\n }\n readManagedPolicies(policyArns, logicalId) {\n if (!policyArns) {\n return [];\n }\n const rep = '${' + logicalId + '}';\n return managed_policy_1.ManagedPolicyAttachment.parseManagedPolicies(rep, (0, render_intrinsics_1.renderIntrinsics)(policyArns));\n }\n readLambdaStatements(properties) {\n if (!properties) {\n return [];\n }\n return [(0, statement_1.parseLambdaPermission)((0, render_intrinsics_1.renderIntrinsics)(properties))];\n }\n}\nexports.IamChanges = IamChanges;\nIamChanges.IamPropertyScrutinies = [\n service_spec_types_1.PropertyScrutinyType.InlineIdentityPolicies,\n service_spec_types_1.PropertyScrutinyType.InlineResourcePolicy,\n service_spec_types_1.PropertyScrutinyType.ManagedPolicies,\n];\nIamChanges.IamResourceScrutinies = [\n service_spec_types_1.ResourceScrutinyType.ResourcePolicyResource,\n service_spec_types_1.ResourceScrutinyType.IdentityPolicyResource,\n service_spec_types_1.ResourceScrutinyType.LambdaPermission,\n];\n/**\n * Set an undefined or wildcarded principal on these statements\n */\nfunction defaultPrincipal(principal, statements) {\n statements.forEach(s => s.principals.replaceEmpty(principal));\n statements.forEach(s => s.principals.replaceStar(principal));\n return statements;\n}\n/**\n * Set an undefined or wildcarded resource on these statements\n */\nfunction defaultResource(resource, statements) {\n statements.forEach(s => s.resources.replaceEmpty(resource));\n statements.forEach(s => s.resources.replaceStar(resource));\n return statements;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaWFtLWNoYW5nZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpYW0tY2hhbmdlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxvRUFBeUY7QUFDekYsK0JBQStCO0FBQy9CLHFEQUE4RTtBQUM5RSwyQ0FBK0Y7QUFHL0YsMENBQWlEO0FBQ2pELDREQUF3RDtBQUN4RCxrQ0FBb0Y7QUFPcEY7O0dBRUc7QUFDSCxNQUFhLFVBQVU7SUFnQnJCLFlBQVksS0FBc0I7UUFIbEIsZUFBVSxHQUFHLElBQUksNkJBQWtCLEVBQWEsQ0FBQztRQUNqRCxvQkFBZSxHQUFHLElBQUksNkJBQWtCLEVBQTJCLENBQUM7UUFHbEYsS0FBSyxNQUFNLGNBQWMsSUFBSSxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDbkQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQzFDLENBQUM7UUFDRCxLQUFLLE1BQU0sY0FBYyxJQUFJLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNuRCxJQUFJLENBQUMsa0JBQWtCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDMUMsQ0FBQztRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUM7UUFDaEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN2QyxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLElBQUksSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUM7SUFDdkUsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsSUFBVyxvQkFBb0I7UUFDN0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsQ0FBQztlQUMzRCxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxD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QUFFLFVBQXVCO0lBQ2xFLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzlELFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO0lBQzdELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsZUFBZSxDQUFDLFFBQWdCLEVBQUUsVUFBdUI7SUFDaEUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDNUQsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7SUFDM0QsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFByb3BlcnR5U2NydXRpbnlUeXBlLCBSZXNvdXJjZVNjcnV0aW55VHlwZSB9IGZyb20gJ0Bhd3MtY2RrL3NlcnZpY2Utc3BlYy10eXBlcyc7XG5pbXBvcnQgKiBhcyBjaGFsayBmcm9tICdjaGFsayc7XG5pbXBvcnQgeyBNYW5hZ2VkUG9saWN5QXR0YWNobWVudCwgTWFuYWdlZFBvbGljeUpzb24gfSBmcm9tICcuL21hbmFnZWQtcG9saWN5JztcbmltcG9ydCB7IHBhcnNlTGFtYmRhUGVybWlzc2lvbiwgcGFyc2VTdGF0ZW1lbnRzLCBTdGF0ZW1lbnQsIFN0YXRlbWVudEpzb24gfSBmcm9tICcuL3N0YXRlbWVudCc7XG5pbXBvcnQgeyBNYXliZVBhcnNlZCB9IGZyb20gJy4uL2RpZmYvbWF5YmUtcGFyc2VkJztcbmltcG9ydCB7IFByb3BlcnR5Q2hhbmdlLCBQcm9wZXJ0eU1hcCwgUmVzb3VyY2VDaGFuZ2UgfSBmcm9tICcuLi9kaWZmL3R5cGVzJztcbmltcG9ydCB7IERpZmZhYmxlQ29sbGVjdGlvbiB9IGZyb20gJy4uL2RpZmZhYmxlJztcbmltcG9ydCB7IHJlbmRlckludHJpbnNpY3MgfSBmcm9tICcuLi9yZW5kZXItaW50cmluc2ljcyc7XG5pbXBvcnQgeyBkZWVwUmVtb3ZlVW5kZWZpbmVkLCBkcm9wSWZFbXB0eSwgZmxhdE1hcCwgbWFrZUNvbXBhcmF0b3IgfSBmcm9tICcuLi91dGlsJztcblxuZXhwb3J0IGludGVyZmFjZSBJYW1DaGFuZ2VzUHJvcHMge1xuICBwcm9wZXJ0eUNoYW5nZXM6IFByb3BlcnR5Q2hhbmdlW107XG4gIHJlc291cmNlQ2hhbmdlczogUmVzb3VyY2VDaGFuZ2VbXTtcbn1cblxuLyoqXG4gKiBDaGFuZ2VzIHRvIElBTSBzdGF0ZW1lbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBJYW1DaGFuZ2VzIHtcbiAgcHVibGljIHN0YXRpYyBJYW1Qcm9wZXJ0eVNjcnV0aW5pZXMgPSBbXG4gICAgUHJvcGVydHlTY3J1dGlueVR5cGUuSW5saW5lSWRlbnRpdHlQb2xpY2llcyxcbiAgICBQcm9wZXJ0eVNjcnV0aW55VHlwZS5JbmxpbmVSZXNvdXJjZVBvbGljeSxcbiAgICBQcm9wZXJ0eVNjcnV0aW55VHlwZS5NYW5hZ2VkUG9saWNpZXMsXG4gIF07XG5cbiAgcHVibGljIHN0YXRpYyBJYW1SZXNvdXJjZVNjcnV0aW5pZXMgPSBbXG4gICAgUmVzb3VyY2VTY3J1dGlueVR5cGUuUmVzb3VyY2VQb2xpY3lSZXNvdXJjZSxcbiAgICBSZXNvdXJjZVNjcnV0aW55VHlwZS5JZGVudGl0eVBvbGljeVJlc291cmNlLFxuICAgIFJlc291cmNlU2NydXRpbnlUeXBlLkxhbWJkYVBlcm1pc3Npb24sXG4gIF07XG5cbiAgcHVibGljIHJlYWRvbmx5IHN0YXRlbWVudHMgPSBuZXcgRGlmZmFibGVDb2xsZWN0aW9uPFN0YXRlbWVudD4oKTtcbiAgcHVibGljIHJlYWRvbmx5IG1hbmFnZWRQb2xpY2llcyA9IG5ldyBEaWZmYWJsZUNvbGxlY3Rpb248TWFuYWdlZFBvbGljeUF0dGFjaG1lbnQ+KCk7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IElhbUNoYW5nZXNQcm9wcykge1xuICAgIGZvciAoY29uc3QgcHJvcGVydHlDaGFuZ2Ugb2YgcHJvcHMucHJvcGVydHlDaGFuZ2VzKSB7XG4gICAgICB0aGlzLnJlYWRQcm9wZXJ0eUNoYW5nZShwcm9wZXJ0eUNoYW5nZSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgcmVzb3VyY2VDaGFuZ2Ugb2YgcHJvcHMucmVzb3VyY2VDaGFuZ2VzKSB7XG4gICAgICB0aGlzLnJlYWRSZXNvdXJjZUNoYW5nZShyZXNvdXJjZUNoYW5nZSk7XG4gICAgfVxuXG4gICAgdGhpcy5zdGF0ZW1lbnRzLmNhbGN1bGF0ZURpZmYoKTtcbiAgICB0aGlzLm1hbmFnZWRQb2xpY2llcy5jYWxjdWxhdGVEaWZmKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0NoYW5nZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50cy5oYXNDaGFuZ2VzIHx8IHRoaXMubWFuYWdlZFBvbGljaWVzLmhhc0NoYW5nZXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGNoYW5nZXMgaW5jbHVkZSBicm9hZGVuZWQgcGVybWlzc2lvbnNcbiAgICpcbiAgICogUGVybWlzc2lvbnMgYXJlIGJyb2FkZW5lZCBpZiBwb3NpdGl2ZSBzdGF0ZW1lbnRzIGFyZSBhZGRlZCBvclxuICAgKiBuZWdhdGl2ZSBzdGF0ZW1lbnRzIGFyZSByZW1vdmVkLCBvciBpZiBtYW5hZ2VkIHBvbGljaWVzIGFyZSBhZGRlZC5cbiAgICovXG4gIHB1YmxpYyBnZXQgcGVybWlzc2lvbnNCcm9hZGVuZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdGVtZW50cy5hZGRpdGlvbnMuc29tZShzID0+ICFzLmlzTmVnYXRpdmVTdGF0ZW1lbnQpXG4gICAgICAgIHx8IHRoaXMuc3RhdGVtZW50cy5yZW1vdmFscy5zb21lKHMgPT4gcy5pc05lZ2F0aXZlU3RhdGVtZW50KVxuICAgICAgICB8fCB0aGlzLm1hbmFnZWRQb2xpY2llcy5oYXNBZGRpdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgc3VtbWFyeSB0YWJsZSBvZiBjaGFuZ2VzXG4gICAqL1xuICBwdWJsaWMgc3VtbWFyaXplU3RhdGVtZW50cygpOiBzdHJpbmdbXVtdIHtcbiAgICBjb25zdCByZXQ6IHN0cmluZ1tdW10gPSBbXTtcblxuICAgIGNvbnN0IGhlYWRlciA9IFsnJywgJ1Jlc291cmNlJywgJ0VmZmVjdCcsICdBY3Rpb24nLCAnUHJpbmNpcGFsJywgJ0NvbmRpdGlvbiddO1xuXG4gICAgLy8gRmlyc3QgZ2VuZXJhdGUgYWxsIGxpbmVzLCB0aGVuIHNvcnQgb24gUmVzb3VyY2Ugc28gdGhhdCBzaW1pbGFyIHJlc291cmNlcyBhcmUgdG9nZXRoZXJcbiAgICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiB0aGlzLnN0YXRlbWVudHMuYWRkaXRpb25zKSB7XG4gICAgICBjb25zdCByZW5kZXJlZFN0YXRlbWVudCA9IHN0YXRlbWVudC5yZW5kZXIoKTtcbiAgICAgIHJldC5wdXNoKFtcbiAgICAgICAgJysnLFxuICAgICAgICByZW5kZXJlZFN0YXRlbWVudC5yZXNvdXJjZSxcbiAgICAgICAgcmVuZGVyZWRTdGF0ZW1lbnQuZWZmZWN0LFxuICAgICAgICByZW5kZXJlZFN0YXRlbWVudC5hY3Rpb24sXG4gICAgICAgIHJlbmRlcmVkU3RhdGVtZW50LnByaW5jaXBhbCxcbiAgICAgICAgcmVuZGVyZWRTdGF0ZW1lbnQuY29uZGl0aW9uLFxuICAgICAgXS5tYXAocyA9PiBjaGFsay5ncmVlbihzKSkpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IHN0YXRlbWVudCBvZiB0aGlzLnN0YXRlbWVudHMucmVtb3ZhbHMpIHtcbiAgICAgIGNvbnN0IHJlbmRlcmVkU3RhdGVtZW50ID0gc3RhdGVtZW50LnJlbmRlcigpO1xuICAgICAgcmV0LnB1c2goW1xuICAgICAgICBjaGFsay5yZWQoJy0nKSxcbiAgICAgICAgcmVuZGVyZWRTdGF0ZW1lbnQucmVzb3VyY2UsXG4gICAgICAgIHJlbmRlcmVkU3RhdGVtZW50LmVmZmVjdCxcbiAgICAgICAgcmVuZGVyZWRTdGF0ZW1lbnQuYWN0aW9uLFxuICAgICAgICByZW5kZXJlZFN0YXRlbWVudC5wcmluY2lwYWwsXG4gICAgICAgIHJlbmRlcmVkU3RhdGVtZW50LmNvbmRpdGlvbixcbiAgICAgIF0ubWFwKHMgPT4gY2hhbGsucmVkKHMpKSk7XG4gICAgfVxuXG4gICAgLy8gU29ydCBieSAybmQgY29sdW1uXG4gICAgcmV0LnNvcnQobWFrZUNvbXBhcmF0b3IoKHJvdzogc3RyaW5nW10pID0+IFtyb3dbMV1dKSk7XG5cbiAgICByZXQuc3BsaWNlKDAsIDAsIGhlYWRlcik7XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgcHVibGljIHN1bW1hcml6ZU1hbmFnZWRQb2xpY2llcygpOiBzdHJpbmdbXVtdIHtcbiAgICBjb25zdCByZXQ6IHN0cmluZ1tdW10gPSBbXTtcbiAgICBjb25zdCBoZWFkZXIgPSBbJycsICdSZXNvdXJjZScsICdNYW5hZ2VkIFBvbGljeSBBUk4nXTtcblxuICAgIGZvciAoY29uc3QgYXR0IG9mIHRoaXMubWFuYWdlZFBvbGljaWVzLmFkZGl0aW9ucykge1xuICAgICAgcmV0LnB1c2goW1xuICAgICAgICAnKycsXG4gICAgICAgIGF0dC5pZGVudGl0eUFybixcbiAgICAgICAgYXR0Lm1hbmFnZWRQb2xpY3lBcm4sXG4gICAgICBdLm1hcChzID0+IGNoYWxrLmdyZWVuKHMpKSk7XG4gICAgfVxuICAgIGZvciAoY29uc3QgYXR0IG9mIHRoaXMubWFuYWdlZFBvbGljaWVzLnJlbW92YWxzKSB7XG4gICAgICByZXQucHVzaChbXG4gICAgICAgICctJyxcbiAgICAgICAgYXR0LmlkZW50aXR5QXJuLFxuICAgICAgICBhdHQubWFuYWdlZFBvbGljeUFybixcbiAgICAgIF0ubWFwKHMgPT4gY2hhbGsucmVkKHMpKSk7XG4gICAgfVxuXG4gICAgLy8gU29ydCBieSAybmQgY29sdW1uXG4gICAgcmV0LnNvcnQobWFrZUNvbXBhcmF0b3IoKHJvdzogc3RyaW5nW10pID0+IFtyb3dbMV1dKSk7XG5cbiAgICByZXQuc3BsaWNlKDAsIDAsIGhlYWRlcik7XG5cbiAgICByZXR1cm4gcmV0O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1hY2hpbmUtcmVhZGFibGUgdmVyc2lvbiBvZiB0aGUgY2hhbmdlcy5cbiAgICogVGhpcyBpcyBvbmx5IHVzZWQgaW4gdGVzdHMuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF90b0pzb24oKTogSWFtQ2hhbmdlc0pzb24ge1xuICAgIHJldHVybiBkZWVwUmVtb3ZlVW5kZWZpbmVkKHtcbiAgICAgIHN0YXRlbWVudEFkZGl0aW9uczogZHJvcElmRW1wdHkodGhpcy5zdGF0ZW1lbnRzLmFkZGl0aW9ucy5tYXAocyA9PiBzLl90b0pzb24oKSkpLFxuICAgICAgc3RhdGVtZW50UmVtb3ZhbHM6IGRyb3BJZkVtcHR5KHRoaXMuc3RhdGVtZW50cy5yZW1vdmFscy5tYXAocyA9PiBzLl90b0pzb24oKSkpLFxuICAgICAgbWFuYWdlZFBvbGljeUFkZGl0aW9uczogZHJvcElmRW1wdHkodGhpcy5tYW5hZ2VkUG9saWNpZXMuYWRkaXRpb25zLm1hcChzID0+IHMuX3RvSnNvbigpKSksXG4gICAgICBtYW5hZ2VkUG9saWN5UmVtb3ZhbHM6IGRyb3BJZkVtcHR5KHRoaXMubWFuYWdlZFBvbGljaWVzLnJlbW92YWxzLm1hcChzID0+IHMuX3RvSnNvbigpKSksXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRQcm9wZXJ0eUNoYW5nZShwcm9wZXJ0eUNoYW5nZTogUHJvcGVydHlDaGFuZ2UpIHtcbiAgICBzd2l0Y2ggKHByb3BlcnR5Q2hhbmdlLnNjcnV0aW55VHlwZSkge1xuICAgICAgY2FzZSBQcm9wZXJ0eVNjcnV0aW55VHlwZS5JbmxpbmVJZGVudGl0eVBvbGljaWVzOlxuICAgICAgICAvLyBBV1M6OklBTTo6eyBSb2xlIHwgVXNlciB8IEdyb3VwIH0uUG9saWNpZXNcbiAgICAgICAgdGhpcy5zdGF0ZW1lbnRzLmFkZE9sZCguLi50aGlzLnJlYWRJZGVudGl0eVBvbGljaWVzKHByb3BlcnR5Q2hhbmdlLm9sZFZhbHVlLCBwcm9wZXJ0eUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkTmV3KC4uLnRoaXMucmVhZElkZW50aXR5UG9saWNpZXMocHJvcGVydHlDaGFuZ2UubmV3VmFsdWUsIHByb3BlcnR5Q2hhbmdlLnJlc291cmNlTG9naWNhbElkKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBQcm9wZXJ0eVNjcnV0aW55VHlwZS5JbmxpbmVSZXNvdXJjZVBvbGljeTpcbiAgICAgICAgLy8gQW55IFBvbGljeURvY3VtZW50IG9uIGEgcmVzb3VyY2UgKGluY2x1ZGluZyBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQpXG4gICAgICAgIHRoaXMuc3RhdGVtZW50cy5hZGRPbGQoLi4udGhpcy5yZWFkUmVzb3VyY2VTdGF0ZW1lbnRzKHByb3BlcnR5Q2hhbmdlLm9sZFZhbHVlLCBwcm9wZXJ0eUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkTmV3KC4uLnRoaXMucmVhZFJlc291cmNlU3RhdGVtZW50cyhwcm9wZXJ0eUNoYW5nZS5uZXdWYWx1ZSwgcHJvcGVydHlDaGFuZ2UucmVzb3VyY2VMb2dpY2FsSWQpKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFByb3BlcnR5U2NydXRpbnlUeXBlLk1hbmFnZWRQb2xpY2llczpcbiAgICAgICAgLy8gSnVzdCBhIGxpc3Qgb2YgbWFuYWdlZCBwb2xpY2llc1xuICAgICAgICB0aGlzLm1hbmFnZWRQb2xpY2llcy5hZGRPbGQoLi4udGhpcy5yZWFkTWFuYWdlZFBvbGljaWVzKHByb3BlcnR5Q2hhbmdlLm9sZFZhbHVlLCBwcm9wZXJ0eUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICB0aGlzLm1hbmFnZWRQb2xpY2llcy5hZGROZXcoLi4udGhpcy5yZWFkTWFuYWdlZFBvbGljaWVzKHByb3BlcnR5Q2hhbmdlLm5ld1ZhbHVlLCBwcm9wZXJ0eUNoYW5nZS5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlYWRSZXNvdXJjZUNoYW5nZShyZXNvdXJjZUNoYW5nZTogUmVzb3VyY2VDaGFuZ2UpIHtcbiAgICBzd2l0Y2ggKHJlc291cmNlQ2hhbmdlLnNjcnV0aW55VHlwZSkge1xuICAgICAgY2FzZSBSZXNvdXJjZVNjcnV0aW55VHlwZS5JZGVudGl0eVBvbGljeVJlc291cmNlOlxuICAgICAgICAvLyBBV1M6OklBTTo6UG9saWN5XG4gICAgICAgIHRoaXMuc3RhdGVtZW50cy5hZGRPbGQoLi4udGhpcy5yZWFkSWRlbnRpdHlQb2xpY3lSZXNvdXJjZShyZXNvdXJjZUNoYW5nZS5vbGRQcm9wZXJ0aWVzKSk7XG4gICAgICAgIHRoaXMuc3RhdGVtZW50cy5hZGROZXcoLi4udGhpcy5yZWFkSWRlbnRpdHlQb2xpY3lSZXNvdXJjZShyZXNvdXJjZUNoYW5nZS5uZXdQcm9wZXJ0aWVzKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBSZXNvdXJjZVNjcnV0aW55VHlwZS5SZXNvdXJjZVBvbGljeVJlc291cmNlOlxuICAgICAgICAvLyBBV1M6Oio6OntCdWNrZXQsUXVldWUsVG9waWN9UG9saWN5XG4gICAgICAgIHRoaXMuc3RhdGVtZW50cy5hZGRPbGQoLi4udGhpcy5yZWFkUmVzb3VyY2VQb2xpY3lSZXNvdXJjZShyZXNvdXJjZUNoYW5nZS5vbGRQcm9wZXJ0aWVzKSk7XG4gICAgICAgIHRoaXMuc3RhdGVtZW50cy5hZGROZXcoLi4udGhpcy5yZWFkUmVzb3VyY2VQb2xpY3lSZXNvdXJjZShyZXNvdXJjZUNoYW5nZS5uZXdQcm9wZXJ0aWVzKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBSZXNvdXJjZVNjcnV0aW55VHlwZS5MYW1iZGFQZXJtaXNzaW9uOlxuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkT2xkKC4uLnRoaXMucmVhZExhbWJkYVN0YXRlbWVudHMocmVzb3VyY2VDaGFuZ2Uub2xkUHJvcGVydGllcykpO1xuICAgICAgICB0aGlzLnN0YXRlbWVudHMuYWRkTmV3KC4uLnRoaXMucmVhZExhbWJkYVN0YXRlbWVudHMocmVzb3VyY2VDaGFuZ2UubmV3UHJvcGVydGllcykpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgYSBsaXN0IG9mIHBvbGljaWVzIG9uIGFuIGlkZW50aXR5XG4gICAqL1xuICBwcml2YXRlIHJlYWRJZGVudGl0eVBvbGljaWVzKHBvbGljaWVzOiBhbnksIGxvZ2ljYWxJZDogc3RyaW5nKTogU3RhdGVtZW50W10ge1xuICAgIGlmIChwb2xpY2llcyA9PT0gdW5kZWZpbmVkIHx8ICFBcnJheS5pc0FycmF5KHBvbGljaWVzKSkgeyByZXR1cm4gW107IH1cblxuICAgIGNvbnN0IGFwcGxpZXNUb1ByaW5jaXBhbCA9ICdBV1M6JHsnICsgbG9naWNhbElkICsgJ30nO1xuXG4gICAgcmV0dXJuIGZsYXRNYXAocG9saWNpZXMsIChwb2xpY3k6IGFueSkgPT4ge1xuICAgICAgLy8gY2hlY2sgaWYgdGhlIFBvbGljeSBpdHNlbGYgaXMgbm90IGFuIGludHJpbnNpYywgbGlrZSBhbiBGbjo6SWZcbiAgICAgIGNvbnN0IHVucGFyc2VkU3RhdGVtZW50ID0gcG9saWN5LlBvbGljeURvY3VtZW50Py5TdGF0ZW1lbnRcbiAgICAgICAgPyBwb2xpY3kuUG9saWN5RG9jdW1lbnQuU3RhdGVtZW50XG4gICAgICAgIDogcG9saWN5O1xuICAgICAgcmV0dXJuIGRlZmF1bHRQcmluY2lwYWwoYXBwbGllc1RvUHJpbmNpcGFsLCBwYXJzZVN0YXRlbWVudHMocmVuZGVySW50cmluc2ljcyh1bnBhcnNlZFN0YXRlbWVudCkpKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBhbiBJQU06OlBvbGljeSByZXNvdXJjZVxuICAgKi9cbiAgcHJpdmF0ZSByZWFkSWRlbnRpdHlQb2xpY3lSZXNvdXJjZShwcm9wZXJ0aWVzOiBhbnkpOiBTdGF0ZW1lbnRbXSB7XG4gICAgaWYgKHByb3BlcnRpZXMgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gW107IH1cblxuICAgIHByb3BlcnRpZXMgPSByZW5kZXJJbnRyaW5zaWNzKHByb3BlcnRpZXMpO1xuXG4gICAgY29uc3QgcHJpbmNpcGFscyA9IChwcm9wZXJ0aWVzLkdyb3VwcyB8fCBbXSkuY29uY2F0KHByb3BlcnRpZXMuVXNlcnMgfHwgW10pLmNvbmNhdChwcm9wZXJ0aWVzLlJvbGVzIHx8IFtdKTtcbiAgICByZXR1cm4gZmxhdE1hcChwcmluY2lwYWxzLCAocHJpbmNpcGFsOiBzdHJpbmcpID0+IHtcbiAgICAgIGNvbnN0IHJlZiA9ICdBV1M6JyArIHByaW5jaXBhbDtcbiAgICAgIHJldHVybiBkZWZhdWx0UHJpbmNpcGFsKHJlZiwgcGFyc2VTdGF0ZW1lbnRzKHByb3BlcnRpZXMuUG9saWN5RG9jdW1lbnQuU3RhdGVtZW50KSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRSZXNvdXJjZVN0YXRlbWVudHMocG9saWN5OiBhbnksIGxvZ2ljYWxJZDogc3RyaW5nKTogU3RhdGVtZW50W10ge1xuICAgIGlmIChwb2xpY3kgPT09IHVuZGVmaW5lZCkgeyByZXR1cm4gW107IH1cblxuICAgIGNvbnN0IGFwcGxpZXNUb1Jlc291cmNlID0gJyR7JyArIGxvZ2ljYWxJZCArICcuQXJufSc7XG4gICAgcmV0dXJuIGRlZmF1bHRSZXNvdXJjZShhcHBsaWVzVG9SZXNvdXJjZSwgcGFyc2VTdGF0ZW1lbnRzKHJlbmRlckludHJpbnNpY3MocG9saWN5LlN0YXRlbWVudCkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXJzZSBhbiBBV1M6Oio6OntCdWNrZXQsVG9waWMsUXVldWV9cG9saWN5XG4gICAqL1xuICBwcml2YXRlIHJlYWRSZXNvdXJjZVBvbGljeVJlc291cmNlKHByb3BlcnRpZXM6IGFueSk6IFN0YXRlbWVudFtdIHtcbiAgICBpZiAocHJvcGVydGllcyA9PT0gdW5kZWZpbmVkKSB7IHJldHVybiBbXTsgfVxuXG4gICAgcHJvcGVydGllcyA9IHJlbmRlckludHJpbnNpY3MocHJvcGVydGllcyk7XG5cbiAgICBjb25zdCBwb2xpY3lLZXlzID0gT2JqZWN0LmtleXMocHJvcGVydGllcykuZmlsdGVyKGtleSA9PiBrZXkuaW5kZXhPZignUG9saWN5JykgPiAtMSk7XG5cbiAgICAvLyBGaW5kIHRoZSBrZXkgdGhhdCBpZGVudGlmaWVzIHRoZSByZXNvdXJjZShzKSB0aGlzIHBvbGljeSBhcHBsaWVzIHRvXG4gICAgY29uc3QgcmVzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMocHJvcGVydGllcykuZmlsdGVyKGtleSA9PiAhcG9saWN5S2V5cy5pbmNsdWRlcyhrZXkpICYmICFrZXkuZW5kc1dpdGgoJ05hbWUnKSk7XG4gICAgbGV0IHJlc291cmNlcyA9IHJlc291cmNlS2V5cy5sZW5ndGggPT09IDEgPyBwcm9wZXJ0aWVzW3Jlc291cmNlS2V5c1swXV0gOiBbJz8/PyddO1xuXG4gICAgLy8gRm9yIHNvbWUgcmVzb3VyY2VzLCB0aGlzIGlzIGEgc2luZ2xldG9uIHN0cmluZywgZm9yIHNvbWUgaXQncyBhbiBhcnJheVxuICAgIGlmICghQXJyYXkuaXNBcnJheShyZXNvdXJjZXMpKSB7XG4gICAgICByZXNvdXJjZXMgPSBbcmVzb3VyY2VzXTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmxhdE1hcChyZXNvdXJjZXMsIChyZXNvdXJjZTogc3RyaW5nKSA9PiB7XG4gICAgICByZXR1cm4gZGVmYXVsdFJlc291cmNlKHJlc291cmNlLCBwYXJzZVN0YXRlbWVudHMocHJvcGVydGllc1twb2xpY3lLZXlzWzBdXS5TdGF0ZW1lbnQpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZE1hbmFnZWRQb2xpY2llcyhwb2xpY3lBcm5zOiBhbnksIGxvZ2ljYWxJZDogc3RyaW5nKTogTWFuYWdlZFBvbGljeUF0dGFjaG1lbnRbXSB7XG4gICAgaWYgKCFwb2xpY3lBcm5zKSB7IHJldHVybiBbXTsgfVxuXG4gICAgY29uc3QgcmVwID0gJyR7JyArIGxvZ2ljYWxJZCArICd9JztcbiAgICByZXR1cm4gTWFuYWdlZFBvbGljeUF0dGFjaG1lbnQucGFyc2VNYW5hZ2VkUG9saWNpZXMocmVwLCByZW5kZXJJbnRyaW5zaWNzKHBvbGljeUFybnMpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZExhbWJkYVN0YXRlbWVudHMocHJvcGVydGllcz86IFByb3BlcnR5TWFwKTogU3RhdGVtZW50W10ge1xuICAgIGlmICghcHJvcGVydGllcykgeyByZXR1cm4gW107IH1cblxuICAgIHJldHVybiBbcGFyc2VMYW1iZGFQZXJtaXNzaW9uKHJlbmRlckludHJpbnNpY3MocHJvcGVydGllcykpXTtcbiAgfVxufVxuXG4vKipcbiAqIFNldCBhbiB1bmRlZmluZWQgb3Igd2lsZGNhcmRlZCBwcmluY2lwYWwgb24gdGhlc2Ugc3RhdGVtZW50c1xuICovXG5mdW5jdGlvbiBkZWZhdWx0UHJpbmNpcGFsKHByaW5jaXBhbDogc3RyaW5nLCBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSkge1xuICBzdGF0ZW1lbnRzLmZvckVhY2gocyA9PiBzLnByaW5jaXBhbHMucmVwbGFjZUVtcHR5KHByaW5jaXBhbCkpO1xuICBzdGF0ZW1lbnRzLmZvckVhY2gocyA9PiBzLnByaW5jaXBhbHMucmVwbGFjZVN0YXIocHJpbmNpcGFsKSk7XG4gIHJldHVybiBzdGF0ZW1lbnRzO1xufVxuXG4vKipcbiAqIFNldCBhbiB1bmRlZmluZWQgb3Igd2lsZGNhcmRlZCByZXNvdXJjZSBvbiB0aGVzZSBzdGF0ZW1lbnRzXG4gKi9cbmZ1bmN0aW9uIGRlZmF1bHRSZXNvdXJjZShyZXNvdXJjZTogc3RyaW5nLCBzdGF0ZW1lbnRzOiBTdGF0ZW1lbnRbXSkge1xuICBzdGF0ZW1lbnRzLmZvckVhY2gocyA9PiBzLnJlc291cmNlcy5yZXBsYWNlRW1wdHkocmVzb3VyY2UpKTtcbiAgc3RhdGVtZW50cy5mb3JFYWNoKHMgPT4gcy5yZXNvdXJjZXMucmVwbGFjZVN0YXIocmVzb3VyY2UpKTtcbiAgcmV0dXJuIHN0YXRlbWVudHM7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSWFtQ2hhbmdlc0pzb24ge1xuICBzdGF0ZW1lbnRBZGRpdGlvbnM/OiBBcnJheTxNYXliZVBhcnNlZDxTdGF0ZW1lbnRKc29uPj47XG4gIHN0YXRlbWVudFJlbW92YWxzPzogQXJyYXk8TWF5YmVQYXJzZWQ8U3RhdGVtZW50SnNvbj4+O1xuICBtYW5hZ2VkUG9saWN5QWRkaXRpb25zPzogQXJyYXk8TWF5YmVQYXJzZWQ8TWFuYWdlZFBvbGljeUpzb24+PjtcbiAgbWFuYWdlZFBvbGljeVJlbW92YWxzPzogQXJyYXk8TWF5YmVQYXJzZWQ8TWFuYWdlZFBvbGljeUpzb24+Pjtcbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ManagedPolicyAttachment = void 0;\nconst maybe_parsed_1 = require(\"../diff/maybe-parsed\");\nclass ManagedPolicyAttachment {\n static parseManagedPolicies(identityArn, arns) {\n return typeof arns === 'string'\n ? [new ManagedPolicyAttachment(identityArn, arns)]\n : arns.map((arn) => new ManagedPolicyAttachment(identityArn, arn));\n }\n constructor(identityArn, managedPolicyArn) {\n this.identityArn = identityArn;\n this.managedPolicyArn = managedPolicyArn;\n }\n equal(other) {\n return this.identityArn === other.identityArn\n && this.managedPolicyArn === other.managedPolicyArn;\n }\n /**\n * Return a machine-readable version of the changes.\n * This is only used in tests.\n *\n * @internal\n */\n _toJson() {\n return (0, maybe_parsed_1.mkParsed)({\n identityArn: this.identityArn,\n managedPolicyArn: this.managedPolicyArn,\n });\n }\n}\nexports.ManagedPolicyAttachment = ManagedPolicyAttachment;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFuYWdlZC1wb2xpY3kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJtYW5hZ2VkLXBvbGljeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1REFBNkQ7QUFFN0QsTUFBYSx1QkFBdUI7SUFDM0IsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFdBQW1CLEVBQUUsSUFBdUI7UUFDN0UsT0FBTyxPQUFPLElBQUksS0FBSyxRQUFRO1lBQzdCLENBQUMsQ0FBQyxDQUFDLElBQUksdUJBQXVCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ2xELENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBVyxFQUFFLEVBQUUsQ0FBQyxJQUFJLHVCQUF1QixDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFFRCxZQUE0QixXQUFtQixFQUFrQixnQkFBd0I7UUFBN0QsZ0JBQVcsR0FBWCxXQUFXLENBQVE7UUFBa0IscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFRO0lBQ3pGLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBOEI7UUFDekMsT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLEtBQUssQ0FBQyxXQUFXO2VBQ3RDLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7SUFDMUQsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksT0FBTztRQUNaLE9BQU8sSUFBQSx1QkFBUSxFQUFDO1lBQ2QsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLGdCQUFnQixFQUFFLElBQUksQ0FBQyxnQkFBZ0I7U0FDeEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBM0JELDBEQTJCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE1heWJlUGFyc2VkLCBta1BhcnNlZCB9IGZyb20gJy4uL2RpZmYvbWF5YmUtcGFyc2VkJztcblxuZXhwb3J0IGNsYXNzIE1hbmFnZWRQb2xpY3lBdHRhY2htZW50IHtcbiAgcHVibGljIHN0YXRpYyBwYXJzZU1hbmFnZWRQb2xpY2llcyhpZGVudGl0eUFybjogc3RyaW5nLCBhcm5zOiBzdHJpbmcgfCBzdHJpbmdbXSk6IE1hbmFnZWRQb2xpY3lBdHRhY2htZW50W10ge1xuICAgIHJldHVybiB0eXBlb2YgYXJucyA9PT0gJ3N0cmluZydcbiAgICAgID8gW25ldyBNYW5hZ2VkUG9saWN5QXR0YWNobWVudChpZGVudGl0eUFybiwgYXJucyldXG4gICAgICA6IGFybnMubWFwKChhcm46IHN0cmluZykgPT4gbmV3IE1hbmFnZWRQb2xpY3lBdHRhY2htZW50KGlkZW50aXR5QXJuLCBhcm4pKTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBpZGVudGl0eUFybjogc3RyaW5nLCBwdWJsaWMgcmVhZG9ubHkgbWFuYWdlZFBvbGljeUFybjogc3RyaW5nKSB7XG4gIH1cblxuICBwdWJsaWMgZXF1YWwob3RoZXI6IE1hbmFnZWRQb2xpY3lBdHRhY2htZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuaWRlbnRpdHlBcm4gPT09IG90aGVyLmlkZW50aXR5QXJuXG4gICAgICAgICYmIHRoaXMubWFuYWdlZFBvbGljeUFybiA9PT0gb3RoZXIubWFuYWdlZFBvbGljeUFybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBtYWNoaW5lLXJlYWRhYmxlIHZlcnNpb24gb2YgdGhlIGNoYW5nZXMuXG4gICAqIFRoaXMgaXMgb25seSB1c2VkIGluIHRlc3RzLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfdG9Kc29uKCk6IE1heWJlUGFyc2VkPE1hbmFnZWRQb2xpY3lKc29uPiB7XG4gICAgcmV0dXJuIG1rUGFyc2VkKHtcbiAgICAgIGlkZW50aXR5QXJuOiB0aGlzLmlkZW50aXR5QXJuLFxuICAgICAgbWFuYWdlZFBvbGljeUFybjogdGhpcy5tYW5hZ2VkUG9saWN5QXJuLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFuYWdlZFBvbGljeUpzb24ge1xuICBpZGVudGl0eUFybjogc3RyaW5nO1xuICBtYW5hZ2VkUG9saWN5QXJuOiBzdHJpbmc7XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.renderCondition = exports.Effect = exports.Targets = exports.parseLambdaPermission = exports.parseStatements = exports.Statement = void 0;\nconst maybe_parsed_1 = require(\"../diff/maybe-parsed\");\nconst util_1 = require(\"../util\");\n// namespace object imports won't work in the bundle for function exports\n// eslint-disable-next-line @typescript-eslint/no-require-imports\nconst deepEqual = require('fast-deep-equal');\nclass Statement {\n constructor(statement) {\n if (typeof statement === 'string') {\n this.sid = undefined;\n this.effect = Effect.Unknown;\n this.resources = new Targets({}, '', '');\n this.actions = new Targets({}, '', '');\n this.principals = new Targets({}, '', '');\n this.condition = undefined;\n this.serializedIntrinsic = statement;\n }\n else {\n this.sid = expectString(statement.Sid);\n this.effect = expectEffect(statement.Effect);\n this.resources = new Targets(statement, 'Resource', 'NotResource');\n this.actions = new Targets(statement, 'Action', 'NotAction');\n this.principals = new Targets(statement, 'Principal', 'NotPrincipal');\n this.condition = statement.Condition;\n this.serializedIntrinsic = undefined;\n }\n }\n /**\n * Whether this statement is equal to the other statement\n */\n equal(other) {\n return (this.sid === other.sid\n && this.effect === other.effect\n && this.serializedIntrinsic === other.serializedIntrinsic\n && this.resources.equal(other.resources)\n && this.actions.equal(other.actions)\n && this.principals.equal(other.principals)\n && deepEqual(this.condition, other.condition));\n }\n render() {\n return this.serializedIntrinsic\n ? {\n resource: this.serializedIntrinsic,\n effect: '',\n action: '',\n principal: this.principals.render(), // these will be replaced by the call to replaceEmpty() from IamChanges\n condition: '',\n }\n : {\n resource: this.resources.render(),\n effect: this.effect,\n action: this.actions.render(),\n principal: this.principals.render(),\n condition: renderCondition(this.condition),\n };\n }\n /**\n * Return a machine-readable version of the changes.\n * This is only used in tests.\n *\n * @internal\n */\n _toJson() {\n return this.serializedIntrinsic\n ? (0, maybe_parsed_1.mkUnparseable)(this.serializedIntrinsic)\n : (0, maybe_parsed_1.mkParsed)((0, util_1.deepRemoveUndefined)({\n sid: this.sid,\n effect: this.effect,\n resources: this.resources._toJson(),\n principals: this.principals._toJson(),\n actions: this.actions._toJson(),\n condition: this.condition,\n }));\n }\n /**\n * Whether this is a negative statement\n *\n * A statement is negative if any of its targets are negative, inverted\n * if the Effect is Deny.\n */\n get isNegativeStatement() {\n const notTarget = this.actions.not || this.principals.not || this.resources.not;\n return this.effect === Effect.Allow ? notTarget : !notTarget;\n }\n}\nexports.Statement = Statement;\n/**\n * Parse a list of statements from undefined, a Statement, or a list of statements\n */\nfunction parseStatements(x) {\n if (x === undefined) {\n x = [];\n }\n if (!Array.isArray(x)) {\n x = [x];\n }\n return x.map((s) => new Statement(s));\n}\nexports.parseStatements = parseStatements;\n/**\n * Parse a Statement from a Lambda::Permission object\n *\n * This is actually what Lambda adds to the policy document if you call AddPermission.\n */\nfunction parseLambdaPermission(x) {\n // Construct a statement from\n const statement = {\n Effect: 'Allow',\n Action: x.Action,\n Resource: x.FunctionName,\n };\n if (x.Principal !== undefined) {\n if (x.Principal === '*') {\n // *\n statement.Principal = '*';\n }\n else if (/^\\d{12}$/.test(x.Principal)) {\n // Account number\n // eslint-disable-next-line @aws-cdk/no-literal-partition\n statement.Principal = { AWS: `arn:aws:iam::${x.Principal}:root` };\n }\n else {\n // Assume it's a service principal\n // We might get this wrong vs. the previous one for tokens. Nothing to be done\n // about that. It's only for human readable consumption after all.\n statement.Principal = { Service: x.Principal };\n }\n }\n if (x.SourceArn !== undefined) {\n if (statement.Condition === undefined) {\n statement.Condition = {};\n }\n statement.Condition.ArnLike = { 'AWS:SourceArn': x.SourceArn };\n }\n if (x.SourceAccount !== undefined) {\n if (statement.Condition === undefined) {\n statement.Condition = {};\n }\n statement.Condition.StringEquals = { 'AWS:SourceAccount': x.SourceAccount };\n }\n if (x.EventSourceToken !== undefined) {\n if (statement.Condition === undefined) {\n statement.Condition = {};\n }\n statement.Condition.StringEquals = { 'lambda:EventSourceToken': x.EventSourceToken };\n }\n return new Statement(statement);\n}\nexports.parseLambdaPermission = parseLambdaPermission;\n/**\n * Targets for a field\n */\nclass Targets {\n constructor(statement, positiveKey, negativeKey) {\n if (negativeKey in statement) {\n this.values = forceListOfStrings(statement[negativeKey]);\n this.not = true;\n }\n else {\n this.values = forceListOfStrings(statement[positiveKey]);\n this.not = false;\n }\n this.values.sort();\n }\n get empty() {\n return this.values.length === 0;\n }\n /**\n * Whether this set of targets is equal to the other set of targets\n */\n equal(other) {\n return this.not === other.not && deepEqual(this.values.sort(), other.values.sort());\n }\n /**\n * If the current value set is empty, put this in it\n */\n replaceEmpty(replacement) {\n if (this.empty) {\n this.values.push(replacement);\n }\n }\n /**\n * If the actions contains a '*', replace with this string.\n */\n replaceStar(replacement) {\n for (let i = 0; i < this.values.length; i++) {\n if (this.values[i] === '*') {\n this.values[i] = replacement;\n }\n }\n this.values.sort();\n }\n /**\n * Render into a summary table cell\n */\n render() {\n return this.not\n ? this.values.map(s => `NOT ${s}`).join('\\n')\n : this.values.join('\\n');\n }\n /**\n * Return a machine-readable version of the changes.\n * This is only used in tests.\n *\n * @internal\n */\n _toJson() {\n return { not: this.not, values: this.values };\n }\n}\nexports.Targets = Targets;\nvar Effect;\n(function (Effect) {\n Effect[\"Unknown\"] = \"Unknown\";\n Effect[\"Allow\"] = \"Allow\";\n Effect[\"Deny\"] = \"Deny\";\n})(Effect || (exports.Effect = Effect = {}));\nfunction expectString(x) {\n return typeof x === 'string' ? x : undefined;\n}\nfunction expectEffect(x) {\n if (x === Effect.Allow || x === Effect.Deny) {\n return x;\n }\n return Effect.Unknown;\n}\nfunction forceListOfStrings(x) {\n if (typeof x === 'string') {\n return [x];\n }\n if (typeof x === 'undefined' || x === null) {\n return [];\n }\n if (Array.isArray(x)) {\n return x.map(e => forceListOfStrings(e).join(','));\n }\n if (typeof x === 'object' && x !== null) {\n const ret = [];\n for (const [key, value] of Object.entries(x)) {\n ret.push(...forceListOfStrings(value).map(s => `${key}:${s}`));\n }\n return ret;\n }\n return [`${x}`];\n}\n/**\n * Render the Condition column\n */\nfunction renderCondition(condition) {\n if (!condition || Object.keys(condition).length === 0) {\n return '';\n }\n const jsonRepresentation = JSON.stringify(condition, undefined, 2);\n // The JSON representation looks like this:\n //\n // {\n // \"ArnLike\": {\n // \"AWS:SourceArn\": \"${MyTopic86869434}\"\n // }\n // }\n //\n // We can make it more compact without losing information by getting rid of the outermost braces\n // and the indentation.\n const lines = jsonRepresentation.split('\\n');\n return lines.slice(1, lines.length - 1).map(s => s.slice(2)).join('\\n');\n}\nexports.renderCondition = renderCondition;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3RhdGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVEQUE0RTtBQUM1RSxrQ0FBOEM7QUFFOUMseUVBQXlFO0FBQ3pFLGlFQUFpRTtBQUNqRSxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUU3QyxNQUFhLFNBQVM7SUFpQ3BCLFlBQVksU0FBOEI7UUFDeEMsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUNsQyxJQUFJLENBQUMsR0FBRyxHQUFHLFNBQVMsQ0FBQztZQUNyQixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDN0IsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ3pDLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7WUFDM0IsSUFBSSxDQUFDLG1CQUFtQixHQUFHLFNBQVMsQ0FBQztRQUN2QyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxHQUFHLEdBQUcsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN2QyxJQUFJLENBQUMsTUFBTSxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDN0MsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO1lBQ25FLElBQUksQ0FBQyxPQUFP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LElBQUksQ0FBQyxTQUFTLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUVuRSwyQ0FBMkM7SUFDM0MsRUFBRTtJQUNGLEtBQUs7SUFDTCxrQkFBa0I7SUFDbEIsNkNBQTZDO0lBQzdDLE9BQU87SUFDUCxLQUFLO0lBQ0wsRUFBRTtJQUNGLGdHQUFnRztJQUNoRyx1QkFBdUI7SUFDdkIsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzdDLE9BQU8sS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzFFLENBQUM7QUFoQkQsMENBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWF5YmVQYXJzZWQsIG1rUGFyc2VkLCBta1VucGFyc2VhYmxlIH0gZnJvbSAnLi4vZGlmZi9tYXliZS1wYXJzZWQnO1xuaW1wb3J0IHsgZGVlcFJlbW92ZVVuZGVmaW5lZCB9IGZyb20gJy4uL3V0aWwnO1xuXG4vLyBuYW1lc3BhY2Ugb2JqZWN0IGltcG9ydHMgd29uJ3Qgd29yayBpbiB0aGUgYnVuZGxlIGZvciBmdW5jdGlvbiBleHBvcnRzXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXJlcXVpcmUtaW1wb3J0c1xuY29uc3QgZGVlcEVxdWFsID0gcmVxdWlyZSgnZmFzdC1kZWVwLWVxdWFsJyk7XG5cbmV4cG9ydCBjbGFzcyBTdGF0ZW1lbnQge1xuICAvKipcbiAgICogU3RhdGVtZW50IElEXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2lkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgLyoqXG4gICAqIFN0YXRlbWVudCBlZmZlY3RcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlZmZlY3Q6IEVmZmVjdDtcblxuICAvKipcbiAgICogUmVzb3VyY2VzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2VzOiBUYXJnZXRzO1xuXG4gIC8qKlxuICAgKiBQcmluY2lwYWxzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJpbmNpcGFsczogVGFyZ2V0cztcblxuICAvKipcbiAgICogQWN0aW9uc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFjdGlvbnM6IFRhcmdldHM7XG5cbiAgLyoqXG4gICAqIE9iamVjdCB3aXRoIGNvbmRpdGlvbnNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb25kaXRpb24/OiBhbnk7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBzZXJpYWxpemVkSW50cmluc2ljOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbiAgY29uc3RydWN0b3Ioc3RhdGVtZW50OiBVbmtub3duTWFwIHwgc3RyaW5nKSB7XG4gICAgaWYgKHR5cGVvZiBzdGF0ZW1lbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICB0aGlzLnNpZCA9IHVuZGVmaW5lZDtcbiAgICAgIHRoaXMuZWZmZWN0ID0gRWZmZWN0LlVua25vd247XG4gICAgICB0aGlzLnJlc291cmNlcyA9IG5ldyBUYXJnZXRzKHt9LCAnJywgJycpO1xuICAgICAgdGhpcy5hY3Rpb25zID0gbmV3IFRhcmdldHMoe30sICcnLCAnJyk7XG4gICAgICB0aGlzLnByaW5jaXBhbHMgPSBuZXcgVGFyZ2V0cyh7fSwgJycsICcnKTtcbiAgICAgIHRoaXMuY29uZGl0aW9uID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5zZXJpYWxpemVkSW50cmluc2ljID0gc3RhdGVtZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNpZCA9IGV4cGVjdFN0cmluZyhzdGF0ZW1lbnQuU2lkKTtcbiAgICAgIHRoaXMuZWZmZWN0ID0gZXhwZWN0RWZmZWN0KHN0YXRlbWVudC5FZmZlY3QpO1xuICAgICAgdGhpcy5yZXNvdXJjZXMgPSBuZXcgVGFyZ2V0cyhzdGF0ZW1lbnQsICdSZXNvdXJjZScsICdOb3RSZXNvdXJjZScpO1xuICAgICAgdGhpcy5hY3Rpb25zID0gbmV3IFRhcmdldHMoc3RhdGVtZW50LCAnQWN0aW9uJywgJ05vdEFjdGlvbicpO1xuICAgICAgdGhpcy5wcmluY2lwYWxzID0gbmV3IFRhcmdldHMoc3RhdGVtZW50LCAnUHJpbmNpcGFsJywgJ05vdFByaW5jaXBhbCcpO1xuICAgICAgdGhpcy5jb25kaXRpb24gPSBzdGF0ZW1lbnQuQ29uZGl0aW9uO1xuICAgICAgdGhpcy5zZXJpYWxpemVkSW50cmluc2ljID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgc3RhdGVtZW50IGlzIGVxdWFsIHRvIHRoZSBvdGhlciBzdGF0ZW1lbnRcbiAgICovXG4gIHB1YmxpYyBlcXVhbChvdGhlcjogU3RhdGVtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICh0aGlzLnNpZCA9PT0gb3RoZXIuc2lkXG4gICAgICAmJiB0aGlzLmVmZmVjdCA9PT0gb3RoZXIuZWZmZWN0XG4gICAgICAmJiB0aGlzLnNlcmlhbGl6ZWRJbnRyaW5zaWMgPT09IG90aGVyLnNlcmlhbGl6ZWRJbnRyaW5zaWNcbiAgICAgICYmIHRoaXMucmVzb3VyY2VzLmVxdWFsKG90aGVyLnJlc291cmNlcylcbiAgICAgICYmIHRoaXMuYWN0aW9ucy5lcXVhbChvdGhlci5hY3Rpb25zKVxuICAgICAgJiYgdGhpcy5wcmluY2lwYWxzLmVxdWFsKG90aGVyLnByaW5jaXBhbHMpXG4gICAgICAmJiBkZWVwRXF1YWwodGhpcy5jb25kaXRpb24sIG90aGVyLmNvbmRpdGlvbikpO1xuICB9XG5cbiAgcHVibGljIHJlbmRlcigpOiBSZW5kZXJlZFN0YXRlbWVudCB7XG4gICAgcmV0dXJuIHRoaXMuc2VyaWFsaXplZEludHJpbnNpY1xuICAgICAgPyB7XG4gICAgICAgIHJlc291cmNlOiB0aGlzLnNlcmlhbGl6ZWRJbnRyaW5zaWMsXG4gICAgICAgIGVmZmVjdDogJycsXG4gICAgICAgIGFjdGlvbjogJycsXG4gICAgICAgIHByaW5jaXBhbDogdGhpcy5wcmluY2lwYWxzLnJlbmRlcigpLCAvLyB0aGVzZSB3aWxsIGJlIHJlcGxhY2VkIGJ5IHRoZSBjYWxsIHRvIHJlcGxhY2VFbXB0eSgpIGZyb20gSWFtQ2hhbmdlc1xuICAgICAgICBjb25kaXRpb246ICcnLFxuICAgICAgfVxuICAgICAgOiB7XG4gICAgICAgIHJlc291cmNlOiB0aGlzLnJlc291cmNlcy5yZW5kZXIoKSxcbiAgICAgICAgZWZmZWN0OiB0aGlzLmVmZmVjdCxcbiAgICAgICAgYWN0aW9uOiB0aGlzLmFjdGlvbnMucmVuZGVyKCksXG4gICAgICAgIHByaW5jaXBhbDogdGhpcy5wcmluY2lwYWxzLnJlbmRlcigpLFxuICAgICAgICBjb25kaXRpb246IHJlbmRlckNvbmRpdGlvbih0aGlzLmNvbmRpdGlvbiksXG4gICAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIG1hY2hpbmUtcmVhZGFibGUgdmVyc2lvbiBvZiB0aGUgY2hhbmdlcy5cbiAgICogVGhpcyBpcyBvbmx5IHVzZWQgaW4gdGVzdHMuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF90b0pzb24oKTogTWF5YmVQYXJzZWQ8U3RhdGVtZW50SnNvbj4ge1xuICAgIHJldHVybiB0aGlzLnNlcmlhbGl6ZWRJbnRyaW5zaWNcbiAgICAgID8gbWtVbnBhcnNlYWJsZSh0aGlzLnNlcmlhbGl6ZWRJbnRyaW5zaWMpXG4gICAgICA6IG1rUGFyc2VkKGRlZXBSZW1vdmVVbmRlZmluZWQoe1xuICAgICAgICBzaWQ6IHRoaXMuc2lkLFxuICAgICAgICBlZmZlY3Q6IHRoaXMuZWZmZWN0LFxuICAgICAgICByZXNvdXJjZXM6IHRoaXMucmVzb3VyY2VzLl90b0pzb24oKSxcbiAgICAgICAgcHJpbmNpcGFsczogdGhpcy5wcmluY2lwYWxzLl90b0pzb24oKSxcbiAgICAgICAgYWN0aW9uczogdGhpcy5hY3Rpb25zLl90b0pzb24oKSxcbiAgICAgICAgY29uZGl0aW9uOiB0aGlzLmNvbmRpdGlvbixcbiAgICAgIH0pKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgaXMgYSBuZWdhdGl2ZSBzdGF0ZW1lbnRcbiAgICpcbiAgICogQSBzdGF0ZW1lbnQgaXMgbmVnYXRpdmUgaWYgYW55IG9mIGl0cyB0YXJnZXRzIGFyZSBuZWdhdGl2ZSwgaW52ZXJ0ZWRcbiAgICogaWYgdGhlIEVmZmVjdCBpcyBEZW55LlxuICAgKi9cbiAgcHVibGljIGdldCBpc05lZ2F0aXZlU3RhdGVtZW50KCk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IG5vdFRhcmdldCA9IHRoaXMuYWN0aW9ucy5ub3QgfHwgdGhpcy5wcmluY2lwYWxzLm5vdCB8fCB0aGlzLnJlc291cmNlcy5ub3Q7XG4gICAgcmV0dXJuIHRoaXMuZWZmZWN0ID09PSBFZmZlY3QuQWxsb3cgPyBub3RUYXJnZXQgOiAhbm90VGFyZ2V0O1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVuZGVyZWRTdGF0ZW1lbnQge1xuICByZWFkb25seSByZXNvdXJjZTogc3RyaW5nO1xuICByZWFkb25seSBlZmZlY3Q6IHN0cmluZztcbiAgcmVhZG9ubHkgYWN0aW9uOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByaW5jaXBhbDogc3RyaW5nO1xuICByZWFkb25seSBjb25kaXRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdGF0ZW1lbnRKc29uIHtcbiAgc2lkPzogc3RyaW5nO1xuICBlZmZlY3Q6IHN0cmluZztcbiAgcmVzb3VyY2VzOiBUYXJnZXRzSnNvbjtcbiAgYWN0aW9uczogVGFyZ2V0c0pzb247XG4gIHByaW5jaXBhbHM6IFRhcmdldHNKc29uO1xuICBjb25kaXRpb24/OiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGFyZ2V0c0pzb24ge1xuICBub3Q6IGJvb2xlYW47XG4gIHZhbHVlczogc3RyaW5nW107XG59XG5cbi8qKlxuICogUGFyc2UgYSBsaXN0IG9mIHN0YXRlbWVudHMgZnJvbSB1bmRlZmluZWQsIGEgU3RhdGVtZW50LCBvciBhIGxpc3Qgb2Ygc3RhdGVtZW50c1xuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTdGF0ZW1lbnRzKHg6IGFueSk6IFN0YXRlbWVudFtdIHtcbiAgaWYgKHggPT09IHVuZGVmaW5lZCkgeyB4ID0gW107IH1cbiAgaWYgKCFBcnJheS5pc0FycmF5KHgpKSB7IHggPSBbeF07IH1cbiAgcmV0dXJuIHgubWFwKChzOiBhbnkpID0+IG5ldyBTdGF0ZW1lbnQocykpO1xufVxuXG4vKipcbiAqIFBhcnNlIGEgU3RhdGVtZW50IGZyb20gYSBMYW1iZGE6OlBlcm1pc3Npb24gb2JqZWN0XG4gKlxuICogVGhpcyBpcyBhY3R1YWxseSB3aGF0IExhbWJkYSBhZGRzIHRvIHRoZSBwb2xpY3kgZG9jdW1lbnQgaWYgeW91IGNhbGwgQWRkUGVybWlzc2lvbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTGFtYmRhUGVybWlzc2lvbih4OiBhbnkpOiBTdGF0ZW1lbnQge1xuICAvLyBDb25zdHJ1Y3QgYSBzdGF0ZW1lbnQgZnJvbVxuICBjb25zdCBzdGF0ZW1lbnQ6IGFueSA9IHtcbiAgICBFZmZlY3Q6ICdBbGxvdycsXG4gICAgQWN0aW9uOiB4LkFjdGlvbixcbiAgICBSZXNvdXJjZTogeC5GdW5jdGlvbk5hbWUsXG4gIH07XG5cbiAgaWYgKHguUHJpbmNpcGFsICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoeC5QcmluY2lwYWwgPT09ICcqJykge1xuICAgICAgLy8gKlxuICAgICAgc3RhdGVtZW50LlByaW5jaXBhbCA9ICcqJztcbiAgICB9IGVsc2UgaWYgKC9eXFxkezEyfSQvLnRlc3QoeC5QcmluY2lwYWwpKSB7XG4gICAgICAvLyBBY2NvdW50IG51bWJlclxuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEBhd3MtY2RrL25vLWxpdGVyYWwtcGFydGl0aW9uXG4gICAgICBzdGF0ZW1lbnQuUHJpbmNpcGFsID0geyBBV1M6IGBhcm46YXdzOmlhbTo6JHt4LlByaW5jaXBhbH06cm9vdGAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gQXNzdW1lIGl0J3MgYSBzZXJ2aWNlIHByaW5jaXBhbFxuICAgICAgLy8gV2UgbWlnaHQgZ2V0IHRoaXMgd3JvbmcgdnMuIHRoZSBwcmV2aW91cyBvbmUgZm9yIHRva2Vucy4gTm90aGluZyB0byBiZSBkb25lXG4gICAgICAvLyBhYm91dCB0aGF0LiBJdCdzIG9ubHkgZm9yIGh1bWFuIHJlYWRhYmxlIGNvbnN1bXB0aW9uIGFmdGVyIGFsbC5cbiAgICAgIHN0YXRlbWVudC5QcmluY2lwYWwgPSB7IFNlcnZpY2U6IHguUHJpbmNpcGFsIH07XG4gICAgfVxuICB9XG4gIGlmICh4LlNvdXJjZUFybiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKHN0YXRlbWVudC5Db25kaXRpb24gPT09IHVuZGVmaW5lZCkgeyBzdGF0ZW1lbnQuQ29uZGl0aW9uID0ge307IH1cbiAgICBzdGF0ZW1lbnQuQ29uZGl0aW9uLkFybkxpa2UgPSB7ICdBV1M6U291cmNlQXJuJzogeC5Tb3VyY2VBcm4gfTtcbiAgfVxuICBpZiAoeC5Tb3VyY2VBY2NvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoc3RhdGVtZW50LkNvbmRpdGlvbiA9PT0gdW5kZWZpbmVkKSB7IHN0YXRlbWVudC5Db25kaXRpb24gPSB7fTsgfVxuICAgIHN0YXRlbWVudC5Db25kaXRpb24uU3RyaW5nRXF1YWxzID0geyAnQVdTOlNvdXJjZUFjY291bnQnOiB4LlNvdXJjZUFjY291bnQgfTtcbiAgfVxuICBpZiAoeC5FdmVudFNvdXJjZVRva2VuICE9PSB1bmRlZmluZWQpIHtcbiAgICBpZiAoc3RhdGVtZW50LkNvbmRpdGlvbiA9PT0gdW5kZWZpbmVkKSB7IHN0YXRlbWVudC5Db25kaXRpb24gPSB7fTsgfVxuICAgIHN0YXRlbWVudC5Db25kaXRpb24uU3RyaW5nRXF1YWxzID0geyAnbGFtYmRhOkV2ZW50U291cmNlVG9rZW4nOiB4LkV2ZW50U291cmNlVG9rZW4gfTtcbiAgfVxuXG4gIHJldHVybiBuZXcgU3RhdGVtZW50KHN0YXRlbWVudCk7XG59XG5cbi8qKlxuICogVGFyZ2V0cyBmb3IgYSBmaWVsZFxuICovXG5leHBvcnQgY2xhc3MgVGFyZ2V0cyB7XG4gIC8qKlxuICAgKiBUaGUgdmFsdWVzIG9mIHRoZSB0YXJnZXRzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdmFsdWVzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciBwb3NpdGl2ZSBvciBuZWdhdGl2ZSBtYXRjaGVyc1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5vdDogYm9vbGVhbjtcblxuICBjb25zdHJ1Y3RvcihzdGF0ZW1lbnQ6IFVua25vd25NYXAsIHBvc2l0aXZlS2V5OiBzdHJpbmcsIG5lZ2F0aXZlS2V5OiBzdHJpbmcpIHtcbiAgICBpZiAobmVnYXRpdmVLZXkgaW4gc3RhdGVtZW50KSB7XG4gICAgICB0aGlzLnZhbHVlcyA9IGZvcmNlTGlzdE9mU3RyaW5ncyhzdGF0ZW1lbnRbbmVnYXRpdmVLZXldKTtcbiAgICAgIHRoaXMubm90ID0gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy52YWx1ZXMgPSBmb3JjZUxpc3RPZlN0cmluZ3Moc3RhdGVtZW50W3Bvc2l0aXZlS2V5XSk7XG4gICAgICB0aGlzLm5vdCA9IGZhbHNlO1xuICAgIH1cbiAgICB0aGlzLnZhbHVlcy5zb3J0KCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGVtcHR5KCkge1xuICAgIHJldHVybiB0aGlzLnZhbHVlcy5sZW5ndGggPT09IDA7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIHNldCBvZiB0YXJnZXRzIGlzIGVxdWFsIHRvIHRoZSBvdGhlciBzZXQgb2YgdGFyZ2V0c1xuICAgKi9cbiAgcHVibGljIGVxdWFsKG90aGVyOiBUYXJnZXRzKSB7XG4gICAgcmV0dXJuIHRoaXMubm90ID09PSBvdGhlci5ub3QgJiYgZGVlcEVxdWFsKHRoaXMudmFsdWVzLnNvcnQoKSwgb3RoZXIudmFsdWVzLnNvcnQoKSk7XG4gIH1cblxuICAvKipcbiAgICogSWYgdGhlIGN1cnJlbnQgdmFsdWUgc2V0IGlzIGVtcHR5LCBwdXQgdGhpcyBpbiBpdFxuICAgKi9cbiAgcHVibGljIHJlcGxhY2VFbXB0eShyZXBsYWNlbWVudDogc3RyaW5nKSB7XG4gICAgaWYgKHRoaXMuZW1wdHkpIHtcbiAgICAgIHRoaXMudmFsdWVzLnB1c2gocmVwbGFjZW1lbnQpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJZiB0aGUgYWN0aW9ucyBjb250YWlucyBhICcqJywgcmVwbGFjZSB3aXRoIHRoaXMgc3RyaW5nLlxuICAgKi9cbiAgcHVibGljIHJlcGxhY2VTdGFyKHJlcGxhY2VtZW50OiBzdHJpbmcpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMudmFsdWVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAodGhpcy52YWx1ZXNbaV0gPT09ICcqJykge1xuICAgICAgICB0aGlzLnZhbHVlc1tpXSA9IHJlcGxhY2VtZW50O1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLnZhbHVlcy5zb3J0KCk7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIGludG8gYSBzdW1tYXJ5IHRhYmxlIGNlbGxcbiAgICovXG4gIHB1YmxpYyByZW5kZXIoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5ub3RcbiAgICAgID8gdGhpcy52YWx1ZXMubWFwKHMgPT4gYE5PVCAke3N9YCkuam9pbignXFxuJylcbiAgICAgIDogdGhpcy52YWx1ZXMuam9pbignXFxuJyk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgbWFjaGluZS1yZWFkYWJsZSB2ZXJzaW9uIG9mIHRoZSBjaGFuZ2VzLlxuICAgKiBUaGlzIGlzIG9ubHkgdXNlZCBpbiB0ZXN0cy5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX3RvSnNvbigpOiBUYXJnZXRzSnNvbiB7XG4gICAgcmV0dXJuIHsgbm90OiB0aGlzLm5vdCwgdmFsdWVzOiB0aGlzLnZhbHVlcyB9O1xuICB9XG59XG5cbnR5cGUgVW5rbm93bk1hcCA9IHtba2V5OiBzdHJpbmddOiB1bmtub3dufTtcblxuZXhwb3J0IGVudW0gRWZmZWN0IHtcbiAgVW5rbm93biA9ICdVbmtub3duJyxcbiAgQWxsb3cgPSAnQWxsb3cnLFxuICBEZW55ID0gJ0RlbnknLFxufVxuXG5mdW5jdGlvbiBleHBlY3RTdHJpbmcoeDogdW5rbm93bik6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gJ3N0cmluZycgPyB4IDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBleHBlY3RFZmZlY3QoeDogdW5rbm93bik6IEVmZmVjdCB7XG4gIGlmICh4ID09PSBFZmZlY3QuQWxsb3cgfHwgeCA9PT0gRWZmZWN0LkRlbnkpIHsgcmV0dXJuIHggYXMgRWZmZWN0OyB9XG4gIHJldHVybiBFZmZlY3QuVW5rbm93bjtcbn1cblxuZnVuY3Rpb24gZm9yY2VMaXN0T2ZTdHJpbmdzKHg6IHVua25vd24pOiBzdHJpbmdbXSB7XG4gIGlmICh0eXBlb2YgeCA9PT0gJ3N0cmluZycpIHsgcmV0dXJuIFt4XTsgfVxuICBpZiAodHlwZW9mIHggPT09ICd1bmRlZmluZWQnIHx8IHggPT09IG51bGwpIHsgcmV0dXJuIFtdOyB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoeCkpIHtcbiAgICByZXR1cm4geC5tYXAoZSA9PiBmb3JjZUxpc3RPZlN0cmluZ3MoZSkuam9pbignLCcpKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgeCAhPT0gbnVsbCkge1xuICAgIGNvbnN0IHJldDogc3RyaW5nW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyh4KSkge1xuICAgICAgcmV0LnB1c2goLi4uZm9yY2VMaXN0T2ZTdHJpbmdzKHZhbHVlKS5tYXAocyA9PiBgJHtrZXl9OiR7c31gKSk7XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICByZXR1cm4gW2Ake3h9YF07XG59XG5cbi8qKlxuICogUmVuZGVyIHRoZSBDb25kaXRpb24gY29sdW1uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJDb25kaXRpb24oY29uZGl0aW9uOiBhbnkpOiBzdHJpbmcge1xuICBpZiAoIWNvbmRpdGlvbiB8fCBPYmplY3Qua2V5cyhjb25kaXRpb24pLmxlbmd0aCA9PT0gMCkgeyByZXR1cm4gJyc7IH1cbiAgY29uc3QganNvblJlcHJlc2VudGF0aW9uID0gSlNPTi5zdHJpbmdpZnkoY29uZGl0aW9uLCB1bmRlZmluZWQsIDIpO1xuXG4gIC8vIFRoZSBKU09OIHJlcHJlc2VudGF0aW9uIGxvb2tzIGxpa2UgdGhpczpcbiAgLy9cbiAgLy8gIHtcbiAgLy8gICAgXCJBcm5MaWtlXCI6IHtcbiAgLy8gICAgICBcIkFXUzpTb3VyY2VBcm5cIjogXCIke015VG9waWM4Njg2OTQzNH1cIlxuICAvLyAgICB9XG4gIC8vICB9XG4gIC8vXG4gIC8vIFdlIGNhbiBtYWtlIGl0IG1vcmUgY29tcGFjdCB3aXRob3V0IGxvc2luZyBpbmZvcm1hdGlvbiBieSBnZXR0aW5nIHJpZCBvZiB0aGUgb3V0ZXJtb3N0IGJyYWNlc1xuICAvLyBhbmQgdGhlIGluZGVudGF0aW9uLlxuICBjb25zdCBsaW5lcyA9IGpzb25SZXByZXNlbnRhdGlvbi5zcGxpdCgnXFxuJyk7XG4gIHJldHVybiBsaW5lcy5zbGljZSgxLCBsaW5lcy5sZW5ndGggLSAxKS5tYXAocyA9PiBzLnNsaWNlKDIpKS5qb2luKCdcXG4nKTtcbn1cbiJdfQ==","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mangleLikeCloudFormation = exports.deepEqual = void 0;\n__exportStar(require(\"./diff-template\"), exports);\n__exportStar(require(\"./format\"), exports);\n__exportStar(require(\"./format-table\"), exports);\nvar util_1 = require(\"./diff/util\");\nObject.defineProperty(exports, \"deepEqual\", { enumerable: true, get: function () { return util_1.deepEqual; } });\nObject.defineProperty(exports, \"mangleLikeCloudFormation\", { enumerable: true, get: function () { return util_1.mangleLikeCloudFormation; } });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGtEQUFnQztBQUNoQywyQ0FBeUI7QUFDekIsaURBQStCO0FBQy9CLG9DQUFrRTtBQUF6RCxpR0FBQSxTQUFTLE9BQUE7QUFBRSxnSEFBQSx3QkFBd0IsT0FBQSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vZGlmZi10ZW1wbGF0ZSc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm1hdCc7XG5leHBvcnQgKiBmcm9tICcuL2Zvcm1hdC10YWJsZSc7XG5leHBvcnQgeyBkZWVwRXF1YWwsIG1hbmdsZUxpa2VDbG91ZEZvcm1hdGlvbiB9IGZyb20gJy4vZGlmZi91dGlsJztcbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SecurityGroupChanges = void 0;\nconst chalk = require(\"chalk\");\nconst security_group_rule_1 = require(\"./security-group-rule\");\nconst diffable_1 = require(\"../diffable\");\nconst render_intrinsics_1 = require(\"../render-intrinsics\");\nconst util_1 = require(\"../util\");\n/**\n * Changes to IAM statements\n */\nclass SecurityGroupChanges {\n constructor(props) {\n this.ingress = new diffable_1.DiffableCollection();\n this.egress = new diffable_1.DiffableCollection();\n // Group rules\n for (const ingressProp of props.ingressRulePropertyChanges) {\n this.ingress.addOld(...this.readInlineRules(ingressProp.oldValue, ingressProp.resourceLogicalId));\n this.ingress.addNew(...this.readInlineRules(ingressProp.newValue, ingressProp.resourceLogicalId));\n }\n for (const egressProp of props.egressRulePropertyChanges) {\n this.egress.addOld(...this.readInlineRules(egressProp.oldValue, egressProp.resourceLogicalId));\n this.egress.addNew(...this.readInlineRules(egressProp.newValue, egressProp.resourceLogicalId));\n }\n // Rule resources\n for (const ingressRes of props.ingressRuleResourceChanges) {\n this.ingress.addOld(...this.readRuleResource(ingressRes.oldProperties));\n this.ingress.addNew(...this.readRuleResource(ingressRes.newProperties));\n }\n for (const egressRes of props.egressRuleResourceChanges) {\n this.egress.addOld(...this.readRuleResource(egressRes.oldProperties));\n this.egress.addNew(...this.readRuleResource(egressRes.newProperties));\n }\n this.ingress.calculateDiff();\n this.egress.calculateDiff();\n }\n get hasChanges() {\n return this.ingress.hasChanges || this.egress.hasChanges;\n }\n /**\n * Return a summary table of changes\n */\n summarize() {\n const ret = [];\n const header = ['', 'Group', 'Dir', 'Protocol', 'Peer'];\n const inWord = 'In';\n const outWord = 'Out';\n // Render a single rule to the table (curried function so we can map it across rules easily--thank you JavaScript!)\n const renderRule = (plusMin, inOut) => (rule) => [\n plusMin,\n rule.groupId,\n inOut,\n rule.describeProtocol(),\n rule.describePeer(),\n ].map(s => plusMin === '+' ? chalk.green(s) : chalk.red(s));\n // First generate all lines, sort later\n ret.push(...this.ingress.additions.map(renderRule('+', inWord)));\n ret.push(...this.egress.additions.map(renderRule('+', outWord)));\n ret.push(...this.ingress.removals.map(renderRule('-', inWord)));\n ret.push(...this.egress.removals.map(renderRule('-', outWord)));\n // Sort by group name then ingress/egress (ingress first)\n ret.sort((0, util_1.makeComparator)((row) => [row[1], row[2].indexOf(inWord) > -1 ? 0 : 1]));\n ret.splice(0, 0, header);\n return ret;\n }\n toJson() {\n return (0, util_1.deepRemoveUndefined)({\n ingressRuleAdditions: (0, util_1.dropIfEmpty)(this.ingress.additions.map(s => s.toJson())),\n ingressRuleRemovals: (0, util_1.dropIfEmpty)(this.ingress.removals.map(s => s.toJson())),\n egressRuleAdditions: (0, util_1.dropIfEmpty)(this.egress.additions.map(s => s.toJson())),\n egressRuleRemovals: (0, util_1.dropIfEmpty)(this.egress.removals.map(s => s.toJson())),\n });\n }\n get rulesAdded() {\n return this.ingress.hasAdditions\n || this.egress.hasAdditions;\n }\n readInlineRules(rules, logicalId) {\n if (!rules || !Array.isArray(rules)) {\n return [];\n }\n // UnCloudFormation so the parser works in an easier domain\n const ref = '${' + logicalId + '.GroupId}';\n return rules.flatMap((r) => {\n const rendered = (0, render_intrinsics_1.renderIntrinsics)(r);\n // SecurityGroupRule is not robust against unparsed objects\n return typeof rendered === 'object' ? [new security_group_rule_1.SecurityGroupRule(rendered, ref)] : [];\n });\n }\n readRuleResource(resource) {\n if (!resource) {\n return [];\n }\n // UnCloudFormation so the parser works in an easier domain\n return [new security_group_rule_1.SecurityGroupRule((0, render_intrinsics_1.renderIntrinsics)(resource))];\n }\n}\nexports.SecurityGroupChanges = SecurityGroupChanges;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktZ3JvdXAtY2hhbmdlcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlY3VyaXR5LWdyb3VwLWNoYW5nZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStCO0FBQy9CLCtEQUFvRTtBQUVwRSwwQ0FBaUQ7QUFDakQsNERBQXdEO0FBQ3hELGtDQUEyRTtBQVMzRTs7R0FFRztBQUNILE1BQWEsb0JBQW9CO0lBSS9CLFlBQVksS0FBZ0M7UUFINUIsWUFBTyxHQUFHLElBQUksNkJBQWtCLEVBQXFCLENBQUM7UUFDdEQsV0FBTSxHQUFHLElBQUksNkJBQWtCLEVBQXFCLENBQUM7UUFHbkUsY0FBYztRQUNkLEtBQUssTUFBTSxXQUFXLElBQUksS0FBSyxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDM0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsV0FBVyxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztZQUNsRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ3BHLENBQUM7UUFDRCxLQUFLLE1BQU0sVUFBVSxJQUFJLEtBQUssQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO1lBQ3pELElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7WUFDL0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLGlCQUFpQixDQUFDLENBQUMsQ0FBQztRQUNq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QztJQUVPLGVBQWUsQ0FBQyxLQUFVLEVBQUUsU0FBaUI7UUFDbkQsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUFDLE9BQU8sRUFBRSxDQUFDO1FBQUMsQ0FBQztRQUVuRCwyREFBMkQ7UUFFM0QsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLFNBQVMsR0FBRyxXQUFXLENBQUM7UUFDM0MsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBTSxFQUFFLEVBQUU7WUFDOUIsTUFBTSxRQUFRLEdBQUcsSUFBQSxvQ0FBZ0IsRUFBQyxDQUFDLENBQUMsQ0FBQztZQUNyQywyREFBMkQ7WUFDM0QsT0FBTyxPQUFPLFFBQVEsS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSx1Q0FBaUIsQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3BGLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLGdCQUFnQixDQUFDLFFBQWE7UUFDcEMsSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQUMsT0FBTyxFQUFFLENBQUM7UUFBQyxDQUFDO1FBRTdCLDJEQUEyRDtRQUUzRCxPQUFPLENBQUMsSUFBSSx1Q0FBaUIsQ0FBQyxJQUFBLG9DQUFnQixFQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0NBQ0Y7QUFyR0Qsb0RBcUdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2hhbGsgZnJvbSAnY2hhbGsnO1xuaW1wb3J0IHsgUnVsZUpzb24sIFNlY3VyaXR5R3JvdXBSdWxlIH0gZnJvbSAnLi9zZWN1cml0eS1ncm91cC1ydWxlJztcbmltcG9ydCB7IFByb3BlcnR5Q2hhbmdlLCBSZXNvdXJjZUNoYW5nZSB9IGZyb20gJy4uL2RpZmYvdHlwZXMnO1xuaW1wb3J0IHsgRGlmZmFibGVDb2xsZWN0aW9uIH0gZnJvbSAnLi4vZGlmZmFibGUnO1xuaW1wb3J0IHsgcmVuZGVySW50cmluc2ljcyB9IGZyb20gJy4uL3JlbmRlci1pbnRyaW5zaWNzJztcbmltcG9ydCB7IGRlZXBSZW1vdmVVbmRlZmluZWQsIGRyb3BJZkVtcHR5LCBtYWtlQ29tcGFyYXRvciB9IGZyb20gJy4uL3V0aWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBDaGFuZ2VzUHJvcHMge1xuICBpbmdyZXNzUnVsZVByb3BlcnR5Q2hhbmdlczogUHJvcGVydHlDaGFuZ2VbXTtcbiAgaW5ncmVzc1J1bGVSZXNvdXJjZUNoYW5nZXM6IFJlc291cmNlQ2hhbmdlW107XG4gIGVncmVzc1J1bGVSZXNvdXJjZUNoYW5nZXM6IFJlc291cmNlQ2hhbmdlW107XG4gIGVncmVzc1J1bGVQcm9wZXJ0eUNoYW5nZXM6IFByb3BlcnR5Q2hhbmdlW107XG59XG5cbi8qKlxuICogQ2hhbmdlcyB0byBJQU0gc3RhdGVtZW50c1xuICovXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlHcm91cENoYW5nZXMge1xuICBwdWJsaWMgcmVhZG9ubHkgaW5ncmVzcyA9IG5ldyBEaWZmYWJsZUNvbGxlY3Rpb248U2VjdXJpdHlHcm91cFJ1bGU+KCk7XG4gIHB1YmxpYyByZWFkb25seSBlZ3Jlc3MgPSBuZXcgRGlmZmFibGVDb2xsZWN0aW9uPFNlY3VyaXR5R3JvdXBSdWxlPigpO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBTZWN1cml0eUdyb3VwQ2hhbmdlc1Byb3BzKSB7XG4gICAgLy8gR3JvdXAgcnVsZXNcbiAgICBmb3IgKGNvbnN0IGluZ3Jlc3NQcm9wIG9mIHByb3BzLmluZ3Jlc3NSdWxlUHJvcGVydHlDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmluZ3Jlc3MuYWRkT2xkKC4uLnRoaXMucmVhZElubGluZVJ1bGVzKGluZ3Jlc3NQcm9wLm9sZFZhbHVlLCBpbmdyZXNzUHJvcC5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgICAgdGhpcy5pbmdyZXNzLmFkZE5ldyguLi50aGlzLnJlYWRJbmxpbmVSdWxlcyhpbmdyZXNzUHJvcC5uZXdWYWx1ZSwgaW5ncmVzc1Byb3AucmVzb3VyY2VMb2dpY2FsSWQpKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBlZ3Jlc3NQcm9wIG9mIHByb3BzLmVncmVzc1J1bGVQcm9wZXJ0eUNoYW5nZXMpIHtcbiAgICAgIHRoaXMuZWdyZXNzLmFkZE9sZCguLi50aGlzLnJlYWRJbmxpbmVSdWxlcyhlZ3Jlc3NQcm9wLm9sZFZhbHVlLCBlZ3Jlc3NQcm9wLnJlc291cmNlTG9naWNhbElkKSk7XG4gICAgICB0aGlzLmVncmVzcy5hZGROZXcoLi4udGhpcy5yZWFkSW5saW5lUnVsZXMoZWdyZXNzUHJvcC5uZXdWYWx1ZSwgZWdyZXNzUHJvcC5yZXNvdXJjZUxvZ2ljYWxJZCkpO1xuICAgIH1cblxuICAgIC8vIFJ1bGUgcmVzb3VyY2VzXG4gICAgZm9yIChjb25zdCBpbmdyZXNzUmVzIG9mIHByb3BzLmluZ3Jlc3NSdWxlUmVzb3VyY2VDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmluZ3Jlc3MuYWRkT2xkKC4uLnRoaXMucmVhZFJ1bGVSZXNvdXJjZShpbmdyZXNzUmVzLm9sZFByb3BlcnRpZXMpKTtcbiAgICAgIHRoaXMuaW5ncmVzcy5hZGROZXcoLi4udGhpcy5yZWFkUnVsZVJlc291cmNlKGluZ3Jlc3NSZXMubmV3UHJvcGVydGllcykpO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IGVncmVzc1JlcyBvZiBwcm9wcy5lZ3Jlc3NSdWxlUmVzb3VyY2VDaGFuZ2VzKSB7XG4gICAgICB0aGlzLmVncmVzcy5hZGRPbGQoLi4udGhpcy5yZWFkUnVsZVJlc291cmNlKGVncmVzc1Jlcy5vbGRQcm9wZXJ0aWVzKSk7XG4gICAgICB0aGlzLmVncmVzcy5hZGROZXcoLi4udGhpcy5yZWFkUnVsZVJlc291cmNlKGVncmVzc1Jlcy5uZXdQcm9wZXJ0aWVzKSk7XG4gICAgfVxuXG4gICAgdGhpcy5pbmdyZXNzLmNhbGN1bGF0ZURpZmYoKTtcbiAgICB0aGlzLmVncmVzcy5jYWxjdWxhdGVEaWZmKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhhc0NoYW5nZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMuaW5ncmVzcy5oYXNDaGFuZ2VzIHx8IHRoaXMuZWdyZXNzLmhhc0NoYW5nZXM7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgc3VtbWFyeSB0YWJsZSBvZiBjaGFuZ2VzXG4gICAqL1xuICBwdWJsaWMgc3VtbWFyaXplKCk6IHN0cmluZ1tdW10ge1xuICAgIGNvbnN0IHJldDogc3RyaW5nW11bXSA9IFtdO1xuXG4gICAgY29uc3QgaGVhZGVyID0gWycnLCAnR3JvdXAnLCAnRGlyJywgJ1Byb3RvY29sJywgJ1BlZXInXTtcblxuICAgIGNvbnN0IGluV29yZCA9ICdJbic7XG4gICAgY29uc3Qgb3V0V29yZCA9ICdPdXQnO1xuXG4gICAgLy8gUmVuZGVyIGEgc2luZ2xlIHJ1bGUgdG8gdGhlIHRhYmxlIChjdXJyaWVkIGZ1bmN0aW9uIHNvIHdlIGNhbiBtYXAgaXQgYWNyb3NzIHJ1bGVzIGVhc2lseS0tdGhhbmsgeW91IEphdmFTY3JpcHQhKVxuICAgIGNvbnN0IHJlbmRlclJ1bGUgPSAocGx1c01pbjogc3RyaW5nLCBpbk91dDogc3RyaW5nKSA9PiAocnVsZTogU2VjdXJpdHlHcm91cFJ1bGUpID0+IFtcbiAgICAgIHBsdXNNaW4sXG4gICAgICBydWxlLmdyb3VwSWQsXG4gICAgICBpbk91dCxcbiAgICAgIHJ1bGUuZGVzY3JpYmVQcm90b2NvbCgpLFxuICAgICAgcnVsZS5kZXNjcmliZVBlZXIoKSxcbiAgICBdLm1hcChzID0+IHBsdXNNaW4gPT09ICcrJyA/IGNoYWxrLmdyZWVuKHMpIDogY2hhbGsucmVkKHMpKTtcblxuICAgIC8vIEZpcnN0IGdlbmVyYXRlIGFsbCBsaW5lcywgc29ydCBsYXRlclxuICAgIHJldC5wdXNoKC4uLnRoaXMuaW5ncmVzcy5hZGRpdGlvbnMubWFwKHJlbmRlclJ1bGUoJysnLCBpbldvcmQpKSk7XG4gICAgcmV0LnB1c2goLi4udGhpcy5lZ3Jlc3MuYWRkaXRpb25zLm1hcChyZW5kZXJSdWxlKCcrJywgb3V0V29yZCkpKTtcbiAgICByZXQucHVzaCguLi50aGlzLmluZ3Jlc3MucmVtb3ZhbHMubWFwKHJlbmRlclJ1bGUoJy0nLCBpbldvcmQpKSk7XG4gICAgcmV0LnB1c2goLi4udGhpcy5lZ3Jlc3MucmVtb3ZhbHMubWFwKHJlbmRlclJ1bGUoJy0nLCBvdXRXb3JkKSkpO1xuXG4gICAgLy8gU29ydCBieSBncm91cCBuYW1lIHRoZW4gaW5ncmVzcy9lZ3Jlc3MgKGluZ3Jlc3MgZmlyc3QpXG4gICAgcmV0LnNvcnQobWFrZUNvbXBhcmF0b3IoKHJvdzogc3RyaW5nW10pID0+IFtyb3dbMV0sIHJvd1syXS5pbmRleE9mKGluV29yZCkgPiAtMSA/IDAgOiAxXSkpO1xuXG4gICAgcmV0LnNwbGljZSgwLCAwLCBoZWFkZXIpO1xuXG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIHB1YmxpYyB0b0pzb24oKTogU2VjdXJpdHlHcm91cENoYW5nZXNKc29uIHtcbiAgICByZXR1cm4gZGVlcFJlbW92ZVVuZGVmaW5lZCh7XG4gICAgICBpbmdyZXNzUnVsZUFkZGl0aW9uczogZHJvcElmRW1wdHkodGhpcy5pbmdyZXNzLmFkZGl0aW9ucy5tYXAocyA9PiBzLnRvSnNvbigpKSksXG4gICAgICBpbmdyZXNzUnVsZVJlbW92YWxzOiBkcm9wSWZFbXB0eSh0aGlzLmluZ3Jlc3MucmVtb3ZhbHMubWFwKHMgPT4gcy50b0pzb24oKSkpLFxuICAgICAgZWdyZXNzUnVsZUFkZGl0aW9uczogZHJvcElmRW1wdHkodGhpcy5lZ3Jlc3MuYWRkaXRpb25zLm1hcChzID0+IHMudG9Kc29uKCkpKSxcbiAgICAgIGVncmVzc1J1bGVSZW1vdmFsczogZHJvcElmRW1wdHkodGhpcy5lZ3Jlc3MucmVtb3ZhbHMubWFwKHMgPT4gcy50b0pzb24oKSkpLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCBydWxlc0FkZGVkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmluZ3Jlc3MuaGFzQWRkaXRpb25zXG4gICAgICAgIHx8IHRoaXMuZWdyZXNzLmhhc0FkZGl0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgcmVhZElubGluZVJ1bGVzKHJ1bGVzOiBhbnksIGxvZ2ljYWxJZDogc3RyaW5nKTogU2VjdXJpdHlHcm91cFJ1bGVbXSB7XG4gICAgaWYgKCFydWxlcyB8fCAhQXJyYXkuaXNBcnJheShydWxlcykpIHsgcmV0dXJuIFtdOyB9XG5cbiAgICAvLyBVbkNsb3VkRm9ybWF0aW9uIHNvIHRoZSBwYXJzZXIgd29ya3MgaW4gYW4gZWFzaWVyIGRvbWFpblxuXG4gICAgY29uc3QgcmVmID0gJyR7JyArIGxvZ2ljYWxJZCArICcuR3JvdXBJZH0nO1xuICAgIHJldHVybiBydWxlcy5mbGF0TWFwKChyOiBhbnkpID0+IHtcbiAgICAgIGNvbnN0IHJlbmRlcmVkID0gcmVuZGVySW50cmluc2ljcyhyKTtcbiAgICAgIC8vIFNlY3VyaXR5R3JvdXBSdWxlIGlzIG5vdCByb2J1c3QgYWdhaW5zdCB1bnBhcnNlZCBvYmplY3RzXG4gICAgICByZXR1cm4gdHlwZW9mIHJlbmRlcmVkID09PSAnb2JqZWN0JyA/IFtuZXcgU2VjdXJpdHlHcm91cFJ1bGUocmVuZGVyZWQsIHJlZildIDogW107XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRSdWxlUmVzb3VyY2UocmVzb3VyY2U6IGFueSk6IFNlY3VyaXR5R3JvdXBSdWxlW10ge1xuICAgIGlmICghcmVzb3VyY2UpIHsgcmV0dXJuIFtdOyB9XG5cbiAgICAvLyBVbkNsb3VkRm9ybWF0aW9uIHNvIHRoZSBwYXJzZXIgd29ya3MgaW4gYW4gZWFzaWVyIGRvbWFpblxuXG4gICAgcmV0dXJuIFtuZXcgU2VjdXJpdHlHcm91cFJ1bGUocmVuZGVySW50cmluc2ljcyhyZXNvdXJjZSkpXTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBDaGFuZ2VzSnNvbiB7XG4gIGluZ3Jlc3NSdWxlQWRkaXRpb25zPzogUnVsZUpzb25bXTtcbiAgaW5ncmVzc1J1bGVSZW1vdmFscz86IFJ1bGVKc29uW107XG4gIGVncmVzc1J1bGVBZGRpdGlvbnM/OiBSdWxlSnNvbltdO1xuICBlZ3Jlc3NSdWxlUmVtb3ZhbHM/OiBSdWxlSnNvbltdO1xufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SecurityGroupRule = void 0;\n/**\n * A single security group rule, either egress or ingress\n */\nclass SecurityGroupRule {\n constructor(ruleObject, groupRef) {\n this.ipProtocol = ruleObject.IpProtocol?.toString() || '*unknown*';\n this.fromPort = ruleObject.FromPort;\n this.toPort = ruleObject.ToPort;\n this.groupId = ruleObject.GroupId || groupRef || '*unknown*'; // In case of an inline rule\n this.peer =\n findFirst(ruleObject, ['CidrIp', 'CidrIpv6'], (ip) => ({ kind: 'cidr-ip', ip }))\n ||\n findFirst(ruleObject, ['DestinationSecurityGroupId', 'SourceSecurityGroupId'], (securityGroupId) => ({ kind: 'security-group', securityGroupId }))\n ||\n findFirst(ruleObject, ['DestinationPrefixListId', 'SourcePrefixListId'], (prefixListId) => ({ kind: 'prefix-list', prefixListId }));\n }\n equal(other) {\n return this.ipProtocol === other.ipProtocol\n && this.fromPort === other.fromPort\n && this.toPort === other.toPort\n && peerEqual(this.peer, other.peer);\n }\n describeProtocol() {\n if (this.ipProtocol === '-1') {\n return 'Everything';\n }\n const ipProtocol = this.ipProtocol.toUpperCase();\n if (this.fromPort === -1) {\n return `All ${ipProtocol}`;\n }\n if (this.fromPort === this.toPort) {\n return `${ipProtocol} ${this.fromPort}`;\n }\n return `${ipProtocol} ${this.fromPort}-${this.toPort}`;\n }\n describePeer() {\n if (this.peer) {\n switch (this.peer.kind) {\n case 'cidr-ip':\n if (this.peer.ip === '0.0.0.0/0') {\n return 'Everyone (IPv4)';\n }\n if (this.peer.ip === '::/0') {\n return 'Everyone (IPv6)';\n }\n return `${this.peer.ip}`;\n case 'prefix-list': return `${this.peer.prefixListId}`;\n case 'security-group': return `${this.peer.securityGroupId}`;\n }\n }\n return '?';\n }\n toJson() {\n return {\n groupId: this.groupId,\n ipProtocol: this.ipProtocol,\n fromPort: this.fromPort,\n toPort: this.toPort,\n peer: this.peer,\n };\n }\n}\nexports.SecurityGroupRule = SecurityGroupRule;\nfunction peerEqual(a, b) {\n if ((a === undefined) !== (b === undefined)) {\n return false;\n }\n if (a === undefined) {\n return true;\n }\n if (a.kind !== b.kind) {\n return false;\n }\n switch (a.kind) {\n case 'cidr-ip': return a.ip === b.ip;\n case 'security-group': return a.securityGroupId === b.securityGroupId;\n case 'prefix-list': return a.prefixListId === b.prefixListId;\n }\n}\nfunction findFirst(obj, keys, fn) {\n for (const key of keys) {\n try {\n if (key in obj) {\n return fn(obj[key]);\n }\n }\n catch (e) {\n debugger;\n }\n }\n return undefined;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktZ3JvdXAtcnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNlY3VyaXR5LWdyb3VwLXJ1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxNQUFhLGlCQUFpQjtJQTBCNUIsWUFBWSxVQUFlLEVBQUUsUUFBaUI7UUFDNUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLFdBQVcsQ0FBQztRQUNuRSxJQUFJLENBQUMsUUFBUSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUM7UUFDcEMsSUFBSSxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLE9BQU8sSUFBSSxRQUFRLElBQUksV0FBVyxDQUFDLENBQUMsNEJBQTRCO1FBRTFGLElBQUksQ0FBQyxJQUFJO1lBQ0wsU0FBUyxDQUFDLFVBQVUsRUFDbEIsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEVBQ3RCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQWlCLENBQUEsQ0FBQzs7b0JBRWxELFNBQVMsQ0FBQyxVQUFVLEVBQ2xCLENBQUMsNEJBQTRCLEVBQUUsdUJBQXVCLENBQUMsRUFDdkQsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsZUFBZSxFQUF3QixDQUFBLENBQUM7O29CQUUxRixTQUFTLENBQUMsVUFBVSxFQUNsQixDQUFDLHlCQUF5QixFQUFFLG9CQUFvQixDQUFDLEVBQ2pELENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxZQUFZLEVBQXFCLENBQUEsQ0FBQyxDQUFDO0lBQ3JGLENBQUM7SUFFTSxLQUFLLENBQUMsS0FBd0I7UUFDbkMs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LENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxLQUFNLENBQWMsQ0FBQyxlQUFlLENBQUM7UUFDcEYsS0FBSyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLEtBQU0sQ0FBYyxDQUFDLFlBQVksQ0FBQztJQUM3RSxDQUFDO0FBQ0gsQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFJLEdBQVEsRUFBRSxJQUFjLEVBQUUsRUFBb0I7SUFDbEUsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUN2QixJQUFJLENBQUM7WUFDSCxJQUFJLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDZixPQUFPLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztZQUN0QixDQUFDO1FBQ0gsQ0FBQztRQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDWCxRQUFRLENBQUM7UUFDWCxDQUFDO0lBQ0gsQ0FBQztJQUNELE9BQU8sU0FBUyxDQUFDO0FBQ25CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEEgc2luZ2xlIHNlY3VyaXR5IGdyb3VwIHJ1bGUsIGVpdGhlciBlZ3Jlc3Mgb3IgaW5ncmVzc1xuICovXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlHcm91cFJ1bGUge1xuICAvKipcbiAgICogR3JvdXAgSUQgb2YgdGhlIGdyb3VwIHRoaXMgcnVsZSBhcHBsaWVzIHRvXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JvdXBJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJUCBwcm90b2NvbCB0aGlzIHJ1bGUgYXBwbGllcyB0b1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlwUHJvdG9jb2w6IHN0cmluZztcblxuICAvKipcbiAgICogU3RhcnQgb2YgcG9ydCByYW5nZSB0aGlzIHJ1bGUgYXBwbGllcyB0bywgb3IgSUNNUCB0eXBlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZnJvbVBvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEVuZCBvZiBwb3J0IHJhbmdlIHRoaXMgcnVsZSBhcHBsaWVzIHRvLCBvciBJQ01QIGNvZGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0b1BvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFBlZXIgb2YgdGhpcyBydWxlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGVlcj86IFJ1bGVQZWVyO1xuXG4gIGNvbnN0cnVjdG9yKHJ1bGVPYmplY3Q6IGFueSwgZ3JvdXBSZWY/OiBzdHJpbmcpIHtcbiAgICB0aGlzLmlwUHJvdG9jb2wgPSBydWxlT2JqZWN0LklwUHJvdG9jb2w/LnRvU3RyaW5nKCkgfHwgJyp1bmtub3duKic7XG4gICAgdGhpcy5mcm9tUG9ydCA9IHJ1bGVPYmplY3QuRnJvbVBvcnQ7XG4gICAgdGhpcy50b1BvcnQgPSBydWxlT2JqZWN0LlRvUG9ydDtcbiAgICB0aGlzLmdyb3VwSWQgPSBydWxlT2JqZWN0Lkdyb3VwSWQgfHwgZ3JvdXBSZWYgfHwgJyp1bmtub3duKic7IC8vIEluIGNhc2Ugb2YgYW4gaW5saW5lIHJ1bGVcblxuICAgIHRoaXMucGVlciA9XG4gICAgICAgIGZpbmRGaXJzdChydWxlT2JqZWN0LFxuICAgICAgICAgIFsnQ2lkcklwJywgJ0NpZHJJcHY2J10sXG4gICAgICAgICAgKGlwKSA9PiAoeyBraW5kOiAnY2lkci1pcCcsIGlwIH0gYXMgQ2lkcklwUGVlcikpXG4gICAgICAgIHx8XG4gICAgICAgIGZpbmRGaXJzdChydWxlT2JqZWN0LFxuICAgICAgICAgIFsnRGVzdGluYXRpb25TZWN1cml0eUdyb3VwSWQnLCAnU291cmNlU2VjdXJpdHlHcm91cElkJ10sXG4gICAgICAgICAgKHNlY3VyaXR5R3JvdXBJZCkgPT4gKHsga2luZDogJ3NlY3VyaXR5LWdyb3VwJywgc2VjdXJpdHlHcm91cElkIH0gYXMgU2VjdXJpdHlHcm91cFBlZXIpKVxuICAgICAgICB8fFxuICAgICAgICBmaW5kRmlyc3QocnVsZU9iamVjdCxcbiAgICAgICAgICBbJ0Rlc3RpbmF0aW9uUHJlZml4TGlzdElkJywgJ1NvdXJjZVByZWZpeExpc3RJZCddLFxuICAgICAgICAgIChwcmVmaXhMaXN0SWQpID0+ICh7IGtpbmQ6ICdwcmVmaXgtbGlzdCcsIHByZWZpeExpc3RJZCB9IGFzIFByZWZpeExpc3RQZWVyKSk7XG4gIH1cblxuICBwdWJsaWMgZXF1YWwob3RoZXI6IFNlY3VyaXR5R3JvdXBSdWxlKSB7XG4gICAgcmV0dXJuIHRoaXMuaXBQcm90b2NvbCA9PT0gb3RoZXIuaXBQcm90b2NvbFxuICAgICAgICAmJiB0aGlzLmZyb21Qb3J0ID09PSBvdGhlci5mcm9tUG9ydFxuICAgICAgICAmJiB0aGlzLnRvUG9ydCA9PT0gb3RoZXIudG9Qb3J0XG4gICAgICAgICYmIHBlZXJFcXVhbCh0aGlzLnBlZXIsIG90aGVyLnBlZXIpO1xuICB9XG5cbiAgcHVibGljIGRlc2NyaWJlUHJvdG9jb2woKSB7XG4gICAgaWYgKHRoaXMuaXBQcm90b2NvbCA9PT0gJy0xJykgeyByZXR1cm4gJ0V2ZXJ5dGhpbmcnOyB9XG5cbiAgICBjb25zdCBpcFByb3RvY29sID0gdGhpcy5pcFByb3RvY29sLnRvVXBwZXJDYXNlKCk7XG5cbiAgICBpZiAodGhpcy5mcm9tUG9ydCA9PT0gLTEpIHsgcmV0dXJuIGBBbGwgJHtpcFByb3RvY29sfWA7IH1cbiAgICBpZiAodGhpcy5mcm9tUG9ydCA9PT0gdGhpcy50b1BvcnQpIHsgcmV0dXJuIGAke2lwUHJvdG9jb2x9ICR7dGhpcy5mcm9tUG9ydH1gOyB9XG4gICAgcmV0dXJuIGAke2lwUHJvdG9jb2x9ICR7dGhpcy5mcm9tUG9ydH0tJHt0aGlzLnRvUG9ydH1gO1xuICB9XG5cbiAgcHVibGljIGRlc2NyaWJlUGVlcigpIHtcbiAgICBpZiAodGhpcy5wZWVyKSB7XG4gICAgICBzd2l0Y2ggKHRoaXMucGVlci5raW5kKSB7XG4gICAgICAgIGNhc2UgJ2NpZHItaXAnOlxuICAgICAgICAgIGlmICh0aGlzLnBlZXIuaXAgPT09ICcwLjAuMC4wLzAnKSB7IHJldHVybiAnRXZlcnlvbmUgKElQdjQpJzsgfVxuICAgICAgICAgIGlmICh0aGlzLnBlZXIuaXAgPT09ICc6Oi8wJykgeyByZXR1cm4gJ0V2ZXJ5b25lIChJUHY2KSc7IH1cbiAgICAgICAgICByZXR1cm4gYCR7dGhpcy5wZWVyLmlwfWA7XG4gICAgICAgIGNhc2UgJ3ByZWZpeC1saXN0JzogcmV0dXJuIGAke3RoaXMucGVlci5wcmVmaXhMaXN0SWR9YDtcbiAgICAgICAgY2FzZSAnc2VjdXJpdHktZ3JvdXAnOiByZXR1cm4gYCR7dGhpcy5wZWVyLnNlY3VyaXR5R3JvdXBJZH1gO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAnPyc7XG4gIH1cblxuICBwdWJsaWMgdG9Kc29uKCk6IFJ1bGVKc29uIHtcbiAgICByZXR1cm4ge1xuICAgICAgZ3JvdXBJZDogdGhpcy5ncm91cElkLFxuICAgICAgaXBQcm90b2NvbDogdGhpcy5pcFByb3RvY29sLFxuICAgICAgZnJvbVBvcnQ6IHRoaXMuZnJvbVBvcnQsXG4gICAgICB0b1BvcnQ6IHRoaXMudG9Qb3J0LFxuICAgICAgcGVlcjogdGhpcy5wZWVyLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBDaWRySXBQZWVyIHtcbiAga2luZDogJ2NpZHItaXAnO1xuICBpcDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBQZWVyIHtcbiAga2luZDogJ3NlY3VyaXR5LWdyb3VwJztcbiAgc2VjdXJpdHlHcm91cElkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHJlZml4TGlzdFBlZXIge1xuICBraW5kOiAncHJlZml4LWxpc3QnO1xuICBwcmVmaXhMaXN0SWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgUnVsZVBlZXIgPSBDaWRySXBQZWVyIHwgU2VjdXJpdHlHcm91cFBlZXIgfCBQcmVmaXhMaXN0UGVlcjtcblxuZnVuY3Rpb24gcGVlckVxdWFsKGE/OiBSdWxlUGVlciwgYj86IFJ1bGVQZWVyKSB7XG4gIGlmICgoYSA9PT0gdW5kZWZpbmVkKSAhPT0gKGIgPT09IHVuZGVmaW5lZCkpIHsgcmV0dXJuIGZhbHNlOyB9XG4gIGlmIChhID09PSB1bmRlZmluZWQpIHsgcmV0dXJuIHRydWU7IH1cblxuICBpZiAoYS5raW5kICE9PSBiIS5raW5kKSB7IHJldHVybiBmYWxzZTsgfVxuICBzd2l0Y2ggKGEua2luZCkge1xuICAgIGNhc2UgJ2NpZHItaXAnOiByZXR1cm4gYS5pcCA9PT0gKGIgYXMgdHlwZW9mIGEpLmlwO1xuICAgIGNhc2UgJ3NlY3VyaXR5LWdyb3VwJzogcmV0dXJuIGEuc2VjdXJpdHlHcm91cElkID09PSAoYiBhcyB0eXBlb2YgYSkuc2VjdXJpdHlHcm91cElkO1xuICAgIGNhc2UgJ3ByZWZpeC1saXN0JzogcmV0dXJuIGEucHJlZml4TGlzdElkID09PSAoYiBhcyB0eXBlb2YgYSkucHJlZml4TGlzdElkO1xuICB9XG59XG5cbmZ1bmN0aW9uIGZpbmRGaXJzdDxUPihvYmo6IGFueSwga2V5czogc3RyaW5nW10sIGZuOiAoeDogc3RyaW5nKSA9PiBUKTogVCB8IHVuZGVmaW5lZCB7XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKGtleSBpbiBvYmopIHtcbiAgICAgICAgcmV0dXJuIGZuKG9ialtrZXldKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBkZWJ1Z2dlcjtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdWxlSnNvbiB7XG4gIGdyb3VwSWQ6IHN0cmluZztcbiAgaXBQcm90b2NvbDogc3RyaW5nO1xuICBmcm9tUG9ydD86IG51bWJlcjtcbiAgdG9Qb3J0PzogbnVtYmVyO1xuICBwZWVyPzogUnVsZVBlZXI7XG59Il19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.renderIntrinsics = void 0;\n/**\n * Turn CloudFormation intrinsics into strings\n *\n * ------\n *\n * This stringification is not intended to be mechanically reversible! It's intended\n * to be understood by humans!\n *\n * ------\n *\n * Turns Fn::GetAtt and Fn::Ref objects into the same strings that can be\n * parsed by Fn::Sub, but without the surrounding intrinsics.\n *\n * Evaluates Fn::Join directly if the second argument is a literal list of strings.\n *\n * Removes list and object values evaluating to { Ref: 'AWS::NoValue' }.\n *\n * For other intrinsics we choose a string representation that CloudFormation\n * cannot actually parse, but is comprehensible to humans.\n */\nfunction renderIntrinsics(x) {\n if (Array.isArray(x)) {\n return x.filter(el => !isNoValue(el)).map(renderIntrinsics);\n }\n if (isNoValue(x)) {\n return undefined;\n }\n const intrinsic = getIntrinsic(x);\n if (intrinsic) {\n if (intrinsic.fn === 'Ref') {\n return '${' + intrinsic.args + '}';\n }\n if (intrinsic.fn === 'Fn::GetAtt') {\n return '${' + intrinsic.args[0] + '.' + intrinsic.args[1] + '}';\n }\n if (intrinsic.fn === 'Fn::Join') {\n return unCloudFormationFnJoin(intrinsic.args[0], intrinsic.args[1]);\n }\n return stringifyIntrinsic(intrinsic.fn, intrinsic.args);\n }\n if (typeof x === 'object' && x !== null) {\n const ret = {};\n for (const [key, value] of Object.entries(x)) {\n if (!isNoValue(value)) {\n ret[key] = renderIntrinsics(value);\n }\n }\n return ret;\n }\n return x;\n}\nexports.renderIntrinsics = renderIntrinsics;\nfunction unCloudFormationFnJoin(separator, args) {\n if (Array.isArray(args)) {\n return args.filter(el => !isNoValue(el)).map(renderIntrinsics).join(separator);\n }\n return stringifyIntrinsic('Fn::Join', [separator, args]);\n}\nfunction stringifyIntrinsic(fn, args) {\n return JSON.stringify({ [fn]: renderIntrinsics(args) });\n}\nfunction getIntrinsic(x) {\n if (x === undefined || x === null || Array.isArray(x)) {\n return undefined;\n }\n if (typeof x !== 'object') {\n return undefined;\n }\n const keys = Object.keys(x);\n return keys.length === 1 && (keys[0] === 'Ref' || keys[0].startsWith('Fn::')) ? { fn: keys[0], args: x[keys[0]] } : undefined;\n}\nfunction isNoValue(x) {\n const int = getIntrinsic(x);\n return int && int.fn === 'Ref' && int.args === 'AWS::NoValue';\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLWludHJpbnNpY3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZW5kZXItaW50cmluc2ljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLENBQU07SUFDckMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDckIsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sU0FBUyxDQUFDO0lBQUMsQ0FBQztJQUV2QyxNQUFNLFNBQVMsR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDbEMsSUFBSSxTQUFTLEVBQUUsQ0FBQztRQUNkLElBQUksU0FBUyxDQUFDLEVBQUUsS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUFDLE9BQU8sSUFBSSxHQUFHLFNBQVMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO1FBQUMsQ0FBQztRQUNuRSxJQUFJLFNBQVMsQ0FBQyxFQUFFLEtBQUssWUFBWSxFQUFFLENBQUM7WUFBQyxPQUFPLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUFDLENBQUM7UUFDdkcsSUFBSSxTQUFTLENBQUMsRUFBRSxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQUMsT0FBTyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUFDLENBQUM7UUFDekcsT0FBTyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLElBQUksQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3hDLE1BQU0sR0FBRyxHQUFRLEVBQUUsQ0FBQztRQUNwQixLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDdEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3JDLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBekJELDRDQXlCQztBQUVELFNBQVMsc0JBQXNCLENBQUMsU0FBaUIsRUFBRSxJQUFTO0lBQzFELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3hCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ2pGLENBQUM7SUFDRCxPQUFPLGtCQUFrQixDQUFDLFVBQVUsRUFBRSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRCxTQUFTLGtCQUFrQixDQUFDLEVBQVUsRUFBRSxJQUFTO0lBQy9DLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFFRCxTQUFTLFlBQVksQ0FBQyxDQUFNO0lBQzFCLElBQUksQ0FBQyxLQUFLLFNBQVMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sU0FBUyxDQUFDO0lBQUMsQ0FBQztJQUM1RSxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQUMsT0FBTyxTQUFTLENBQUM7SUFBQyxDQUFDO0lBQ2hELE1BQU0sSUFBSSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDNUIsT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDaEksQ0FBQztBQUVELFNBQVMsU0FBUyxDQUFDLENBQU07SUFDdkIsTUFBTSxHQUFHLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVCLE9BQU8sR0FBRyxJQUFJLEdBQUcsQ0FBQyxFQUFFLEtBQUssS0FBSyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEtBQUssY0FBYyxDQUFDO0FBQ2hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFR1cm4gQ2xvdWRGb3JtYXRpb24gaW50cmluc2ljcyBpbnRvIHN0cmluZ3NcbiAqXG4gKiAtLS0tLS1cbiAqXG4gKiBUaGlzIHN0cmluZ2lmaWNhdGlvbiBpcyBub3QgaW50ZW5kZWQgdG8gYmUgbWVjaGFuaWNhbGx5IHJldmVyc2libGUhIEl0J3MgaW50ZW5kZWRcbiAqIHRvIGJlIHVuZGVyc3Rvb2QgYnkgaHVtYW5zIVxuICpcbiAqIC0tLS0tLVxuICpcbiAqIFR1cm5zIEZuOjpHZXRBdHQgYW5kIEZuOjpSZWYgb2JqZWN0cyBpbnRvIHRoZSBzYW1lIHN0cmluZ3MgdGhhdCBjYW4gYmVcbiAqIHBhcnNlZCBieSBGbjo6U3ViLCBidXQgd2l0aG91dCB0aGUgc3Vycm91bmRpbmcgaW50cmluc2ljcy5cbiAqXG4gKiBFdmFsdWF0ZXMgRm46OkpvaW4gZGlyZWN0bHkgaWYgdGhlIHNlY29uZCBhcmd1bWVudCBpcyBhIGxpdGVyYWwgbGlzdCBvZiBzdHJpbmdzLlxuICpcbiAqIFJlbW92ZXMgbGlzdCBhbmQgb2JqZWN0IHZhbHVlcyBldmFsdWF0aW5nIHRvIHsgUmVmOiAnQVdTOjpOb1ZhbHVlJyB9LlxuICpcbiAqIEZvciBvdGhlciBpbnRyaW5zaWNzIHdlIGNob29zZSBhIHN0cmluZyByZXByZXNlbnRhdGlvbiB0aGF0IENsb3VkRm9ybWF0aW9uXG4gKiBjYW5ub3QgYWN0dWFsbHkgcGFyc2UsIGJ1dCBpcyBjb21wcmVoZW5zaWJsZSB0byBodW1hbnMuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJJbnRyaW5zaWNzKHg6IGFueSk6IGFueSB7XG4gIGlmIChBcnJheS5pc0FycmF5KHgpKSB7XG4gICAgcmV0dXJuIHguZmlsdGVyKGVsID0+ICFpc05vVmFsdWUoZWwpKS5tYXAocmVuZGVySW50cmluc2ljcyk7XG4gIH1cblxuICBpZiAoaXNOb1ZhbHVlKHgpKSB7IHJldHVybiB1bmRlZmluZWQ7IH1cblxuICBjb25zdCBpbnRyaW5zaWMgPSBnZXRJbnRyaW5zaWMoeCk7XG4gIGlmIChpbnRyaW5zaWMpIHtcbiAgICBpZiAoaW50cmluc2ljLmZuID09PSAnUmVmJykgeyByZXR1cm4gJyR7JyArIGludHJpbnNpYy5hcmdzICsgJ30nOyB9XG4gICAgaWYgKGludHJpbnNpYy5mbiA9PT0gJ0ZuOjpHZXRBdHQnKSB7IHJldHVybiAnJHsnICsgaW50cmluc2ljLmFyZ3NbMF0gKyAnLicgKyBpbnRyaW5zaWMuYXJnc1sxXSArICd9JzsgfVxuICAgIGlmIChpbnRyaW5zaWMuZm4gPT09ICdGbjo6Sm9pbicpIHsgcmV0dXJuIHVuQ2xvdWRGb3JtYXRpb25GbkpvaW4oaW50cmluc2ljLmFyZ3NbMF0sIGludHJpbnNpYy5hcmdzWzFdKTsgfVxuICAgIHJldHVybiBzdHJpbmdpZnlJbnRyaW5zaWMoaW50cmluc2ljLmZuLCBpbnRyaW5zaWMuYXJncyk7XG4gIH1cblxuICBpZiAodHlwZW9mIHggPT09ICdvYmplY3QnICYmIHggIT09IG51bGwpIHtcbiAgICBjb25zdCByZXQ6IGFueSA9IHt9O1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHgpKSB7XG4gICAgICBpZiAoIWlzTm9WYWx1ZSh2YWx1ZSkpIHtcbiAgICAgICAgcmV0W2tleV0gPSByZW5kZXJJbnRyaW5zaWNzKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuICByZXR1cm4geDtcbn1cblxuZnVuY3Rpb24gdW5DbG91ZEZvcm1hdGlvbkZuSm9pbihzZXBhcmF0b3I6IHN0cmluZywgYXJnczogYW55KSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGFyZ3MpKSB7XG4gICAgcmV0dXJuIGFyZ3MuZmlsdGVyKGVsID0+ICFpc05vVmFsdWUoZWwpKS5tYXAocmVuZGVySW50cmluc2ljcykuam9pbihzZXBhcmF0b3IpO1xuICB9XG4gIHJldHVybiBzdHJpbmdpZnlJbnRyaW5zaWMoJ0ZuOjpKb2luJywgW3NlcGFyYXRvciwgYXJnc10pO1xufVxuXG5mdW5jdGlvbiBzdHJpbmdpZnlJbnRyaW5zaWMoZm46IHN0cmluZywgYXJnczogYW55KSB7XG4gIHJldHVybiBKU09OLnN0cmluZ2lmeSh7IFtmbl06IHJlbmRlckludHJpbnNpY3MoYXJncykgfSk7XG59XG5cbmZ1bmN0aW9uIGdldEludHJpbnNpYyh4OiBhbnkpOiBJbnRyaW5zaWMgfCB1bmRlZmluZWQge1xuICBpZiAoeCA9PT0gdW5kZWZpbmVkIHx8IHggPT09IG51bGwgfHwgQXJyYXkuaXNBcnJheSh4KSkgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gIGlmICh0eXBlb2YgeCAhPT0gJ29iamVjdCcpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoeCk7XG4gIHJldHVybiBrZXlzLmxlbmd0aCA9PT0gMSAmJiAoa2V5c1swXSA9PT0gJ1JlZicgfHwga2V5c1swXS5zdGFydHNXaXRoKCdGbjo6JykpID8geyBmbjoga2V5c1swXSwgYXJnczogeFtrZXlzWzBdXSB9IDogdW5kZWZpbmVkO1xufVxuXG5mdW5jdGlvbiBpc05vVmFsdWUoeDogYW55KSB7XG4gIGNvbnN0IGludCA9IGdldEludHJpbnNpYyh4KTtcbiAgcmV0dXJuIGludCAmJiBpbnQuZm4gPT09ICdSZWYnICYmIGludC5hcmdzID09PSAnQVdTOjpOb1ZhbHVlJztcbn1cblxuaW50ZXJmYWNlIEludHJpbnNpYyB7XG4gIGZuOiBzdHJpbmc7XG4gIGFyZ3M6IGFueTtcbn0iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.flatMap = exports.deepRemoveUndefined = exports.dropIfEmpty = exports.makeComparator = void 0;\n/**\n * Turn a (multi-key) extraction function into a comparator for use in Array.sort()\n */\nfunction makeComparator(keyFn) {\n return (a, b) => {\n const keyA = keyFn(a);\n const keyB = keyFn(b);\n const len = Math.min(keyA.length, keyB.length);\n for (let i = 0; i < len; i++) {\n const c = compare(keyA[i], keyB[i]);\n if (c !== 0) {\n return c;\n }\n }\n // Arrays are the same up to the min length -- shorter array sorts first\n return keyA.length - keyB.length;\n };\n}\nexports.makeComparator = makeComparator;\nfunction compare(a, b) {\n if (a < b) {\n return -1;\n }\n if (b < a) {\n return 1;\n }\n return 0;\n}\nfunction dropIfEmpty(xs) {\n return xs.length > 0 ? xs : undefined;\n}\nexports.dropIfEmpty = dropIfEmpty;\nfunction deepRemoveUndefined(x) {\n if (typeof x === undefined || x === null) {\n return x;\n }\n if (Array.isArray(x)) {\n return x.map(deepRemoveUndefined);\n }\n if (typeof x === 'object') {\n for (const [key, value] of Object.entries(x)) {\n x[key] = deepRemoveUndefined(value);\n if (x[key] === undefined) {\n delete x[key];\n }\n }\n return x;\n }\n return x;\n}\nexports.deepRemoveUndefined = deepRemoveUndefined;\nfunction flatMap(xs, f) {\n const ret = new Array();\n for (const x of xs) {\n ret.push(...f(x));\n }\n return ret;\n}\nexports.flatMap = flatMap;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxTQUFnQixjQUFjLENBQU8sS0FBb0I7SUFDdkQsT0FBTyxDQUFDLENBQUksRUFBRSxDQUFJLEVBQUUsRUFBRTtRQUNwQixNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdEIsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3RCLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFL0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQzdCLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQUMsT0FBTyxDQUFDLENBQUM7WUFBQyxDQUFDO1FBQzVCLENBQUM7UUFFRCx3RUFBd0U7UUFDeEUsT0FBTyxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDbkMsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQWRELHdDQWNDO0FBRUQsU0FBUyxPQUFPLENBQUksQ0FBSSxFQUFFLENBQUk7SUFDNUIsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUN4QixPQUFPLENBQUMsQ0FBQztBQUNYLENBQUM7QUFFRCxTQUFnQixXQUFXLENBQUksRUFBTztJQUNwQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUN4QyxDQUFDO0FBRkQsa0NBRUM7QUFFRCxTQUFnQixtQkFBbUIsQ0FBQyxDQUFNO0lBQ3hDLElBQUksT0FBTyxDQUFDLEtBQUssU0FBUyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUN2RCxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQUMsQ0FBQztJQUM1RCxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsRUFBRSxDQUFDO1FBQzFCLEtBQUssTUFBTSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDN0MsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLFNBQVMsRUFBRSxDQUFDO2dCQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsT0FBTyxDQUFDLENBQUM7SUFDWCxDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUM7QUFDWCxDQUFDO0FBWEQsa0RBV0M7QUFFRCxTQUFnQixPQUFPLENBQU8sRUFBTyxFQUFFLENBQWdCO0lBQ3JELE1BQU0sR0FBRyxHQUFHLElBQUksS0FBSyxFQUFLLENBQUM7SUFDM0IsS0FBSyxNQUFNLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQztRQUNuQixHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDcEIsQ0FBQztJQUNELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQU5ELDBCQU1DIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUdXJuIGEgKG11bHRpLWtleSkgZXh0cmFjdGlvbiBmdW5jdGlvbiBpbnRvIGEgY29tcGFyYXRvciBmb3IgdXNlIGluIEFycmF5LnNvcnQoKVxuICovXG5leHBvcnQgZnVuY3Rpb24gbWFrZUNvbXBhcmF0b3I8VCwgVT4oa2V5Rm46ICh4OiBUKSA9PiBVW10pIHtcbiAgcmV0dXJuIChhOiBULCBiOiBUKSA9PiB7XG4gICAgY29uc3Qga2V5QSA9IGtleUZuKGEpO1xuICAgIGNvbnN0IGtleUIgPSBrZXlGbihiKTtcbiAgICBjb25zdCBsZW4gPSBNYXRoLm1pbihrZXlBLmxlbmd0aCwga2V5Qi5sZW5ndGgpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuICAgICAgY29uc3QgYyA9IGNvbXBhcmUoa2V5QVtpXSwga2V5QltpXSk7XG4gICAgICBpZiAoYyAhPT0gMCkgeyByZXR1cm4gYzsgfVxuICAgIH1cblxuICAgIC8vIEFycmF5cyBhcmUgdGhlIHNhbWUgdXAgdG8gdGhlIG1pbiBsZW5ndGggLS0gc2hvcnRlciBhcnJheSBzb3J0cyBmaXJzdFxuICAgIHJldHVybiBrZXlBLmxlbmd0aCAtIGtleUIubGVuZ3RoO1xuICB9O1xufVxuXG5mdW5jdGlvbiBjb21wYXJlPFQ+KGE6IFQsIGI6IFQpIHtcbiAgaWYgKGEgPCBiKSB7IHJldHVybiAtMTsgfVxuICBpZiAoYiA8IGEpIHsgcmV0dXJuIDE7IH1cbiAgcmV0dXJuIDA7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBkcm9wSWZFbXB0eTxUPih4czogVFtdKTogVFtdIHwgdW5kZWZpbmVkIHtcbiAgcmV0dXJuIHhzLmxlbmd0aCA+IDAgPyB4cyA6IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRlZXBSZW1vdmVVbmRlZmluZWQoeDogYW55KTogYW55IHtcbiAgaWYgKHR5cGVvZiB4ID09PSB1bmRlZmluZWQgfHwgeCA9PT0gbnVsbCkgeyByZXR1cm4geDsgfVxuICBpZiAoQXJyYXkuaXNBcnJheSh4KSkgeyByZXR1cm4geC5tYXAoZGVlcFJlbW92ZVVuZGVmaW5lZCk7IH1cbiAgaWYgKHR5cGVvZiB4ID09PSAnb2JqZWN0Jykge1xuICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHgpKSB7XG4gICAgICB4W2tleV0gPSBkZWVwUmVtb3ZlVW5kZWZpbmVkKHZhbHVlKTtcbiAgICAgIGlmICh4W2tleV0gPT09IHVuZGVmaW5lZCkgeyBkZWxldGUgeFtrZXldOyB9XG4gICAgfVxuICAgIHJldHVybiB4O1xuICB9XG4gIHJldHVybiB4O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZmxhdE1hcDxULCBVPih4czogVFtdLCBmOiAoeDogVCkgPT4gVVtdKTogVVtdIHtcbiAgY29uc3QgcmV0ID0gbmV3IEFycmF5PFU+KCk7XG4gIGZvciAoY29uc3QgeCBvZiB4cykge1xuICAgIHJldC5wdXNoKC4uLmYoeCkpO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0=","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./types/database\"), exports);\n__exportStar(require(\"./types/resource\"), exports);\n__exportStar(require(\"./types/augmentations\"), exports);\n__exportStar(require(\"./types/metrics\"), exports);\n__exportStar(require(\"./types/diff\"), exports);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG1EQUFpQztBQUNqQyxtREFBaUM7QUFDakMsd0RBQXNDO0FBQ3RDLGtEQUFnQztBQUNoQywrQ0FBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL3R5cGVzL2RhdGFiYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvcmVzb3VyY2UnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcy9hdWdtZW50YXRpb25zJztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMvbWV0cmljcyc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzL2RpZmYnO1xuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVnbWVudGF0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9hdWdtZW50YXRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlbGF0aW9uc2hpcCB9IGZyb20gJ0BjZGtsYWJzL3Rza2InO1xuaW1wb3J0IHsgUmVzb3VyY2UgfSBmcm9tICcuL3Jlc291cmNlJztcblxuLyoqXG4gKiBBdWdtZW50YXRpb25zIGZvciBhIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIHR5cGVcbiAqXG4gKiBBdWdtZW50YXRpb25zIGFyZSBhIGRlcHJlY2F0ZWQgbWVjaGFuaXNtIGZvciBhdXRvbWF0aWNhbGx5IGdlbmVyYXRpbmcgbWV0cmljc1xuICogZnVuY3Rpb25zIGZvciBjZXJ0YWluIHJlc291cmNlcywgdXRpbGl6aW5nIFR5cGVTY3JpcHQgbWl4aW5zLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlQXVnbWVudGF0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgLyoqXG4gICAqIE1ldHJpYyBhdWdtZW50YXRpb25zIGZvciB0aGlzIHJlc291cmNlIHR5cGVcbiAgICovXG4gIG1ldHJpY3M/OiBSZXNvdXJjZU1ldHJpY0F1Z21lbnRhdGlvbnM7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBmaWxlIGNvbnRhaW5pbmcgdGhlIGNsYXNzIHRvIGJlIFwiYXVnbWVudGVkXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGtlYmFiIGNhc2VkIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIG5hbWUgKyAnLWJhc2UnXG4gICAqL1xuICBiYXNlQ2xhc3NGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY2xhc3MgdG8gYmUgXCJhdWdtZW50ZWRcIi5cbiAgICpcbiAgICogQGRlZmF1bHQgQ2xvdWRGb3JtYXRpb24gcmVzb3VyY2UgbmFtZSArICdCYXNlJ1xuICAgKi9cbiAgYmFzZUNsYXNzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBpbnRlcmZhY2UgdG8gYmUgXCJhdWdtZW50ZWRcIi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBzYW1lIGFzIGBgY2xhc3NGaWxlYGAuXG4gICAqL1xuICBpbnRlcmZhY2VGaWxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgaW50ZXJmYWNlIHRvIGJlIFwiYXVnbWVudGVkXCIuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdJJyArIENsb3VkRm9ybWF0aW9uIHJlc291cmNlIG5hbWVcbiAgICovXG4gIGludGVyZmFjZT86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSXNBdWdtZW50ZWRSZXNvdXJjZSA9IFJlbGF0aW9uc2hpcDxSZXNvdXJjZSwgUmVzb3VyY2VBdWdtZW50YXRpb24+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlTWV0cmljQXVnbWVudGF0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZXNwYWNlIG9mIG1ldHJpY3MgZm9yIHRoaXMgc2VydmljZVxuICAgKi9cbiAgbmFtZXNwYWNlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwcm9wZXJ0aWVzIG9mIHRoZSByZXNvdXJjZSBjbGFzcyB0aGF0IHByb3ZpZGUgdmFsdWVzIGZvciB0aGUgZGltZW5zaW9uc1xuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgYHsgUXVldWVOYW1lOiAncXVldWVOYW1lJyB9YCBzYXlzIHRoYXQgdGhlIG1ldHJpYyBoYXMgYSBgUXVldWVOYW1lYFxuICAgKiBkaW1lbnNpb24sIGZvciB3aGljaCB0aGUgdmFsdWUgY2FuIGJlIG9idGFpbmVkIGJ5IHJlYWRpbmcgYHRoaXMucXVldWVOYW1lYC5cbiAgICovXG4gIGRpbWVuc2lvbnM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRyaWNzIGZvciB0aGlzIHJlc291cmNlXG4gICAqL1xuICBtZXRyaWNzOiBSZXNvdXJjZU1ldHJpY1tdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlTWV0cmljIHtcbiAgLyoqXG4gICAqIFVwcGVyY2FzZS1maXJzdCBtZXRyaWMgbmFtZVxuICAgKi9cbiAgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEb2N1bWVudGF0aW9uIGxpbmVcbiAgICovXG4gIGRvY3VtZW50YXRpb246IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGlzIGFuIGV2ZW4gY291bnQgKDEgZ2V0cyBlbWl0dGVkIGV2ZXJ5IHRpbWUgc29tZXRoaW5nIG9jY3VycylcbiAgICpcbiAgICogQGRlZmF1bHQgTWV0cmljVHlwZS5BdHRyaWJcbiAgICovXG4gIHR5cGU/OiBNZXRyaWNUeXBlO1xufVxuXG5leHBvcnQgdHlwZSBNZXRyaWNUeXBlID1cbiAgLyoqXG4gICAqIFRoaXMgbWV0cmljIGlzIGVtaXR0ZWQgZm9yIGV2ZW50cywgbWVhc3VyaW5nIGEgYXR0cmlidXRlIG9mIHRoZSBldmVudC5cbiAgICpcbiAgICogVHlwaWNhbCBleGFtcGxlcyBvZiB0aGlzIHdvdWxkIGJlIGR1cmF0aW9uLCBvciByZXF1ZXN0IHNpemUsIG9yIHNpbWlsYXIuXG4gICAqXG4gICAqIFRoZSBkZWZhdWx0IGFnZ3JlZ2F0ZSBmb3IgdGhpcyB0eXBlIG9mIGV2ZW50IGlzIFwiQXZnXCIuXG4gICAqL1xuICB8ICdhdHRyaWInXG5cbiAgLyoqXG4gICAqIFRoaXMgbWV0cmljIGlzIGVtaXR0ZWQgZm9yIGV2ZW50cywgYW5kIHRoZSB2YWx1ZSBpcyBhbHdheXMgYDFgLlxuICAgKlxuICAgKiBPbmx5IFwiU3VtXCIgaXMgYSBtZWFuaW5nZnVsIGFnZ3JlZ2F0ZSBvZiB0aGlzIHR5cGUgb2YgbWV0cmljOyBhbGwgb3RoZXJcbiAgICogYWdncmVnYXRpb25zIHdpbGwgb25seSBldmVyIHByb2R1Y2UgdGhlIHZhbHVlIGAxYC5cbiAgICovXG4gIHwgJ2NvdW50J1xuXG4gIC8qKlxuICAgKiBUaGlzIG1ldHJpYyBpcyBlbWl0dGVkIHBlcmlvZGljYWxseSwgcmVwcmVzZW50aW5nIGEgc3lzdGVtIHByb3BlcnR5LlxuICAgKlxuICAgKiBUaGUgbWV0cmljIG1lYXN1cmVzIHNvbWUgZ2xvYmFsIGV2ZXItY2hhbmdpbmcgcHJvcGVydHksIGFuZCBkb2VzIG5vdFxuICAgKiBtZWFzdXJlIGV2ZW50cy4gVGhlIG1vc3QgdXNlZnVsIGFnZ3JlZ2F0ZSBvZiB0aGlzIHR5cGUgb2YgbWV0cmljIGlzIFwiTWF4XCIuXG4gICAqL1xuICB8ICdnYXVnZSc7XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RichSpecDatabase = exports.loadDatabase = exports.emptyDatabase = void 0;\nconst fs_1 = require(\"fs\");\nconst zlib_1 = require(\"zlib\");\nconst tskb_1 = require(\"@cdklabs/tskb\");\nfunction emptyDatabase() {\n return new tskb_1.Database({\n resource: (0, tskb_1.entityCollection)().index({\n cloudFormationType: (0, tskb_1.fieldIndex)('cloudFormationType', tskb_1.stringCmp),\n }),\n region: (0, tskb_1.entityCollection)().index({\n name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp),\n }),\n service: (0, tskb_1.entityCollection)().index({\n name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp),\n cloudFormationNamespace: (0, tskb_1.fieldIndex)('cloudFormationNamespace', tskb_1.stringCmp),\n }),\n typeDefinition: (0, tskb_1.entityCollection)(),\n augmentations: (0, tskb_1.entityCollection)(),\n metric: (0, tskb_1.entityCollection)().index({\n name: (0, tskb_1.fieldIndex)('name', tskb_1.stringCmp),\n namespace: (0, tskb_1.fieldIndex)('namespace', tskb_1.stringCmp),\n dedupKey: (0, tskb_1.fieldIndex)('dedupKey', tskb_1.stringCmp),\n }),\n dimensionSet: (0, tskb_1.entityCollection)().index({\n dedupKey: (0, tskb_1.fieldIndex)('dedupKey', tskb_1.stringCmp),\n }),\n }, (r) => ({\n hasResource: r.relationship('service', 'resource'),\n regionHasResource: r.relationship('region', 'resource'),\n regionHasService: r.relationship('region', 'service'),\n usesType: r.relationship('resource', 'typeDefinition'),\n isAugmented: r.relationship('resource', 'augmentations'),\n usesDimensionSet: r.relationship('metric', 'dimensionSet'),\n resourceHasMetric: r.relationship('resource', 'metric'),\n serviceHasMetric: r.relationship('service', 'metric'),\n resourceHasDimensionSet: r.relationship('resource', 'dimensionSet'),\n serviceHasDimensionSet: r.relationship('service', 'dimensionSet'),\n }));\n}\nexports.emptyDatabase = emptyDatabase;\nasync function loadDatabase(pathToDb) {\n const db = emptyDatabase();\n const contents = await fs_1.promises.readFile(pathToDb);\n const json = pathToDb.endsWith('.gz') ? (0, zlib_1.gunzipSync)(contents).toString('utf-8') : contents.toString('utf-8');\n db.load(JSON.parse(json));\n return db;\n}\nexports.loadDatabase = loadDatabase;\n/**\n * Helpers for working with a SpecDatabase\n */\nclass RichSpecDatabase {\n constructor(db) {\n this.db = db;\n }\n /**\n * Find all resources of a given type\n */\n resourceByType(cfnType, operation = 'resourceByType') {\n const res = this.db.lookup('resource', 'cloudFormationType', 'equals', cfnType);\n if (res.length === 0) {\n throw new Error(`${operation}: no such resource: ${cfnType}`);\n }\n return res[0];\n }\n /**\n * All type definitions used by a certain resource\n */\n resourceTypeDefs(cfnType) {\n const resource = this.db.lookup('resource', 'cloudFormationType', 'equals', cfnType).only();\n return this.db.follow('usesType', resource).map((x) => x.entity);\n }\n /**\n * Find a type definition from a given property type\n */\n tryFindDef(type) {\n return type.type === 'ref' ? this.db.get('typeDefinition', type.reference.$ref) : undefined;\n }\n}\nexports.RichSpecDatabase = RichSpecDatabase;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkJBQW9DO0FBQ3BDLCtCQUFrQztBQUNsQyx3Q0FBa0Y7QUF1QmxGLFNBQWdCLGFBQWE7SUFDM0IsT0FBTyxJQUFJLGVBQVEsQ0FDakI7UUFDRSxRQUFRLEVBQUUsSUFBQSx1QkFBZ0IsR0FBWSxDQUFDLEtBQUssQ0FBQztZQUMzQyxrQkFBa0IsRUFBRSxJQUFBLGlCQUFVLEVBQUMsb0JBQW9CLEVBQUUsZ0JBQVMsQ0FBQztTQUNoRSxDQUFDO1FBQ0YsTUFBTSxFQUFFLElBQUEsdUJBQWdCLEdBQVUsQ0FBQyxLQUFLLENBQUM7WUFDdkMsSUFBSSxFQUFFLElBQUEsaUJBQVUsRUFBQyxNQUFNLEVBQUUsZ0JBQVMsQ0FBQztTQUNwQyxDQUFDO1FBQ0YsT0FBTyxFQUFFLElBQUEsdUJBQWdCLEdBQVcsQ0FBQyxLQUFLLENBQUM7WUFDekMsSUFBSSxFQUFFLElBQUEsaUJBQVUsRUFBQyxNQUFNLEVBQUUsZ0JBQVMsQ0FBQztZQUNuQyx1QkFBdUIsRUFBRSxJQUFBLGlCQUFVLEVBQUMseUJBQXlCLEVBQUUsZ0JBQVMsQ0FBQztTQUMxRSxDQUFDO1FBQ0YsY0FBYyxFQUFFLElBQUEsdUJBQWdCLEdBQWtCO1FBQ2xELGFBQWEsRUFBRSxJQUFBLHVCQUFnQixHQUF3QjtRQUN2RCxNQUFNLEVBQUUsSUFBQSx1QkFBZ0IsR0FBVSxDQUFDLEtBQUssQ0FBQztZQUN2QyxJQUFJLEVBQUUsSUFBQSxpQkFBVSxFQUFDLE1BQU0sRUFBRSxnQkFBUyxDQUFDO1lBQ25DLFNBQVMsRUFBRSxJQUFBLGlCQUFVLEVBQUMsV0FBVyxFQUFFLGdCQUFTLENBQUM7WUFDN0MsUUFBUSxFQUFFLElBQUEsaUJBQVUsRUFBQyxVQUFVLEVBQUUsZ0JBQVMsQ0FBQztTQUM1QyxDQUFDO1FBQ0YsWUFBWSxFQUFFLElBQUEs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QUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVEOztPQUVHO0lBQ0ksVUFBVSxDQUFDLElBQWtCO1FBQ2xDLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztJQUM5RixDQUFDO0NBQ0Y7QUE1QkQsNENBNEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcHJvbWlzZXMgYXMgZnMgfSBmcm9tICdmcyc7XG5pbXBvcnQgeyBndW56aXBTeW5jIH0gZnJvbSAnemxpYic7XG5pbXBvcnQgeyBEYXRhYmFzZSwgZW50aXR5Q29sbGVjdGlvbiwgZmllbGRJbmRleCwgc3RyaW5nQ21wIH0gZnJvbSAnQGNka2xhYnMvdHNrYic7XG5pbXBvcnQgeyBJc0F1Z21lbnRlZFJlc291cmNlLCBSZXNvdXJjZUF1Z21lbnRhdGlvbiB9IGZyb20gJy4vYXVnbWVudGF0aW9ucyc7XG5pbXBvcnQge1xuICBEaW1lbnNpb25TZXQsXG4gIE1ldHJpYyxcbiAgUmVzb3VyY2VIYXNEaW1lbnNpb25TZXQsXG4gIFNlcnZpY2VIYXNEaW1lbnNpb25TZXQsXG4gIFVzZXNEaW1lbnNpb25TZXQsXG4gIFJlc291cmNlSGFzTWV0cmljLFxuICBTZXJ2aWNlSGFzTWV0cmljLFxufSBmcm9tICcuL21ldHJpY3MnO1xuaW1wb3J0IHtcbiAgUmVzb3VyY2UsXG4gIFNlcnZpY2UsXG4gIFR5cGVEZWZpbml0aW9uLFxuICBQcm9wZXJ0eVR5cGUsXG4gIFJlZ2lvbixcbiAgSGFzUmVzb3VyY2UsXG4gIFJlZ2lvbkhhc1Jlc291cmNlLFxuICBSZWdpb25IYXNTZXJ2aWNlLFxuICBVc2VzVHlwZSxcbn0gZnJvbSAnLi9yZXNvdXJjZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBlbXB0eURhdGFiYXNlKCkge1xuICByZXR1cm4gbmV3IERhdGFiYXNlKFxuICAgIHtcbiAgICAgIHJlc291cmNlOiBlbnRpdHlDb2xsZWN0aW9uPFJlc291cmNlPigpLmluZGV4KHtcbiAgICAgICAgY2xvdWRGb3JtYXRpb25UeXBlOiBmaWVsZEluZGV4KCdjbG91ZEZvcm1hdGlvblR5cGUnLCBzdHJpbmdDbXApLFxuICAgICAgfSksXG4gICAgICByZWdpb246IGVudGl0eUNvbGxlY3Rpb248UmVnaW9uPigpLmluZGV4KHtcbiAgICAgICAgbmFtZTogZmllbGRJbmRleCgnbmFtZScsIHN0cmluZ0NtcCksXG4gICAgICB9KSxcbiAgICAgIHNlcnZpY2U6IGVudGl0eUNvbGxlY3Rpb248U2VydmljZT4oKS5pbmRleCh7XG4gICAgICAgIG5hbWU6IGZpZWxkSW5kZXgoJ25hbWUnLCBzdHJpbmdDbXApLFxuICAgICAgICBjbG91ZEZvcm1hdGlvbk5hbWVzcGFjZTogZmllbGRJbmRleCgnY2xvdWRGb3JtYXRpb25OYW1lc3BhY2UnLCBzdHJpbmdDbXApLFxuICAgICAgfSksXG4gICAgICB0eXBlRGVmaW5pdGlvbjogZW50aXR5Q29sbGVjdGlvbjxUeXBlRGVmaW5pdGlvbj4oKSxcbiAgICAgIGF1Z21lbnRhdGlvbnM6IGVudGl0eUNvbGxlY3Rpb248UmVzb3VyY2VBdWdtZW50YXRpb24+KCksXG4gICAgICBtZXRyaWM6IGVudGl0eUNvbGxlY3Rpb248TWV0cmljPigpLmluZGV4KHtcbiAgICAgICAgbmFtZTogZmllbGRJbmRleCgnbmFtZScsIHN0cmluZ0NtcCksXG4gICAgICAgIG5hbWVzcGFjZTogZmllbGRJbmRleCgnbmFtZXNwYWNlJywgc3RyaW5nQ21wKSxcbiAgICAgICAgZGVkdXBLZXk6IGZpZWxkSW5kZXgoJ2RlZHVwS2V5Jywgc3RyaW5nQ21wKSxcbiAgICAgIH0pLFxuICAgICAgZGltZW5zaW9uU2V0OiBlbnRpdHlDb2xsZWN0aW9uPERpbWVuc2lvblNldD4oKS5pbmRleCh7XG4gICAgICAgIGRlZHVwS2V5OiBmaWVsZEluZGV4KCdkZWR1cEtleScsIHN0cmluZ0NtcCksXG4gICAgICB9KSxcbiAgICB9LFxuICAgIChyKSA9PiAoe1xuICAgICAgaGFzUmVzb3VyY2U6IHIucmVsYXRpb25zaGlwPEhhc1Jlc291cmNlPignc2VydmljZScsICdyZXNvdXJjZScpLFxuICAgICAgcmVnaW9uSGFzUmVzb3VyY2U6IHIucmVsYXRpb25zaGlwPFJlZ2lvbkhhc1Jlc291cmNlPigncmVnaW9uJywgJ3Jlc291cmNlJyksXG4gICAgICByZWdpb25IYXNTZXJ2aWNlOiByLnJlbGF0aW9uc2hpcDxSZWdpb25IYXNTZXJ2aWNlPigncmVnaW9uJywgJ3NlcnZpY2UnKSxcbiAgICAgIHVzZXNUeXBlOiByLnJlbGF0aW9uc2hpcDxVc2VzVHlwZT4oJ3Jlc291cmNlJywgJ3R5cGVEZWZpbml0aW9uJyksXG4gICAgICBpc0F1Z21lbnRlZDogci5yZWxhdGlvbnNoaXA8SXNBdWdtZW50ZWRSZXNvdXJjZT4oJ3Jlc291cmNlJywgJ2F1Z21lbnRhdGlvbnMnKSxcbiAgICAgIHVzZXNEaW1lbnNpb25TZXQ6IHIucmVsYXRpb25zaGlwPFVzZXNEaW1lbnNpb25TZXQ+KCdtZXRyaWMnLCAnZGltZW5zaW9uU2V0JyksXG4gICAgICByZXNvdXJjZUhhc01ldHJpYzogci5yZWxhdGlvbnNoaXA8UmVzb3VyY2VIYXNNZXRyaWM+KCdyZXNvdXJjZScsICdtZXRyaWMnKSxcbiAgICAgIHNlcnZpY2VIYXNNZXRyaWM6IHIucmVsYXRpb25zaGlwPFNlcnZpY2VIYXNNZXRyaWM+KCdzZXJ2aWNlJywgJ21ldHJpYycpLFxuICAgICAgcmVzb3VyY2VIYXNEaW1lbnNpb25TZXQ6IHIucmVsYXRpb25zaGlwPFJlc291cmNlSGFzRGltZW5zaW9uU2V0PigncmVzb3VyY2UnLCAnZGltZW5zaW9uU2V0JyksXG4gICAgICBzZXJ2aWNlSGFzRGltZW5zaW9uU2V0OiByLnJlbGF0aW9uc2hpcDxTZXJ2aWNlSGFzRGltZW5zaW9uU2V0Pignc2VydmljZScsICdkaW1lbnNpb25TZXQnKSxcbiAgICB9KSxcbiAgKTtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGxvYWREYXRhYmFzZShwYXRoVG9EYjogc3RyaW5nKSB7XG4gIGNvbnN0IGRiID0gZW1wdHlEYXRhYmFzZSgpO1xuICBjb25zdCBjb250ZW50cyA9IGF3YWl0IGZzLnJlYWRGaWxlKHBhdGhUb0RiKTtcbiAgY29uc3QganNvbiA9IHBhdGhUb0RiLmVuZHNXaXRoKCcuZ3onKSA/IGd1bnppcFN5bmMoY29udGVudHMpLnRvU3RyaW5nKCd1dGYtOCcpIDogY29udGVudHMudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gIGRiLmxvYWQoSlNPTi5wYXJzZShqc29uKSk7XG4gIHJldHVybiBkYjtcbn1cblxuZXhwb3J0IHR5cGUgU3BlY0RhdGFiYXNlID0gUmV0dXJuVHlwZTx0eXBlb2YgZW1wdHlEYXRhYmFzZT47XG5cbi8qKlxuICogSGVscGVycyBmb3Igd29ya2luZyB3aXRoIGEgU3BlY0RhdGFiYXNlXG4gKi9cbmV4cG9ydCBjbGFzcyBSaWNoU3BlY0RhdGFiYXNlIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBkYjogU3BlY0RhdGFiYXNlKSB7fVxuXG4gIC8qKlxuICAgKiBGaW5kIGFsbCByZXNvdXJjZXMgb2YgYSBnaXZlbiB0eXBlXG4gICAqL1xuICBwdWJsaWMgcmVzb3VyY2VCeVR5cGUoY2ZuVHlwZTogc3RyaW5nLCBvcGVyYXRpb24gPSAncmVzb3VyY2VCeVR5cGUnKTogUmVzb3VyY2Uge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMuZGIubG9va3VwKCdyZXNvdXJjZScsICdjbG91ZEZvcm1hdGlvblR5cGUnLCAnZXF1YWxzJywgY2ZuVHlwZSk7XG4gICAgaWYgKHJlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgJHtvcGVyYXRpb259OiBubyBzdWNoIHJlc291cmNlOiAke2NmblR5cGV9YCk7XG4gICAgfVxuICAgIHJldHVybiByZXNbMF07XG4gIH1cblxuICAvKipcbiAgICogQWxsIHR5cGUgZGVmaW5pdGlvbnMgdXNlZCBieSBhIGNlcnRhaW4gcmVzb3VyY2VcbiAgICovXG4gIHB1YmxpYyByZXNvdXJjZVR5cGVEZWZzKGNmblR5cGU6IHN0cmluZyk6IHJlYWRvbmx5IFR5cGVEZWZpbml0aW9uW10ge1xuICAgIGNvbnN0IHJlc291cmNlID0gdGhpcy5kYi5sb29rdXAoJ3Jlc291cmNlJywgJ2Nsb3VkRm9ybWF0aW9uVHlwZScsICdlcXVhbHMnLCBjZm5UeXBlKS5vbmx5KCk7XG4gICAgcmV0dXJuIHRoaXMuZGIuZm9sbG93KCd1c2VzVHlwZScsIHJlc291cmNlKS5tYXAoKHgpID0+IHguZW50aXR5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGaW5kIGEgdHlwZSBkZWZpbml0aW9uIGZyb20gYSBnaXZlbiBwcm9wZXJ0eSB0eXBlXG4gICAqL1xuICBwdWJsaWMgdHJ5RmluZERlZih0eXBlOiBQcm9wZXJ0eVR5cGUpOiBUeXBlRGVmaW5pdGlvbiB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHR5cGUudHlwZSA9PT0gJ3JlZicgPyB0aGlzLmRiLmdldCgndHlwZURlZmluaXRpb24nLCB0eXBlLnJlZmVyZW5jZS4kcmVmKSA6IHVuZGVmaW5lZDtcbiAgfVxufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlmZi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9kaWZmLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBdHRyaWJ1dGUsIFByb3BlcnR5LCBSZXNvdXJjZSwgU2VydmljZSwgVHlwZURlZmluaXRpb24gfSBmcm9tICcuL3Jlc291cmNlJztcblxuZXhwb3J0IGludGVyZmFjZSBTcGVjRGF0YWJhc2VEaWZmIHtcbiAgc2VydmljZXM6IE1hcERpZmY8U2VydmljZSwgVXBkYXRlZFNlcnZpY2U+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExpc3REaWZmPEUsIEVEPiB7XG4gIHJlYWRvbmx5IGFkZGVkPzogRVtdO1xuICByZWFkb25seSByZW1vdmVkPzogRVtdO1xuICByZWFkb25seSB1cGRhdGVkPzogRURbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBNYXBEaWZmPEUsIEVEPiB7XG4gIHJlYWRvbmx5IGFkZGVkPzogUmVjb3JkPHN0cmluZywgRT47XG4gIHJlYWRvbmx5IHJlbW92ZWQ/OiBSZWNvcmQ8c3RyaW5nLCBFPjtcbiAgcmVhZG9ubHkgdXBkYXRlZD86IFJlY29yZDxzdHJpbmcsIEVEPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkU2VydmljZSB7XG4gIHJlYWRvbmx5IG5hbWU/OiBTY2FsYXJEaWZmPFNlcnZpY2VbJ25hbWUnXT47XG4gIHJlYWRvbmx5IHNob3J0TmFtZT86IFNjYWxhckRpZmY8U2VydmljZVsnc2hvcnROYW1lJ10+O1xuICByZWFkb25seSBjYXBpdGFsaXplZD86IFNjYWxhckRpZmY8U2VydmljZVsnY2FwaXRhbGl6ZWQnXT47XG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uTmFtZXNwYWNlPzogU2NhbGFyRGlmZjxTZXJ2aWNlWydjbG91ZEZvcm1hdGlvbk5hbWVzcGFjZSddPjtcbiAgcmVhZG9ubHkgcmVzb3VyY2VEaWZmPzogTWFwRGlmZjxSZXNvdXJjZSwgVXBkYXRlZFJlc291cmNlPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkUmVzb3VyY2Uge1xuICByZWFkb25seSBuYW1lPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBjbG91ZEZvcm1hdGlvblR5cGU/OiBTY2FsYXJEaWZmPHN0cmluZz47XG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uVHJhbnNmb3JtPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBkb2N1bWVudGF0aW9uPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogTWFwRGlmZjxQcm9wZXJ0eSwgVXBkYXRlZFByb3BlcnR5PjtcbiAgcmVhZG9ubHkgYXR0cmlidXRlcz86IE1hcERpZmY8QXR0cmlidXRlLCBVcGRhdGVkQXR0cmlidXRlPjtcbiAgcmVhZG9ubHkgaWRlbnRpZmllcj86IFNjYWxhckRpZmY8UmVzb3VyY2VbJ2lkZW50aWZpZXInXT47XG4gIHJlYWRvbmx5IGlzU3RhdGVmdWw/OiBTY2FsYXJEaWZmPGJvb2xlYW4+O1xuICByZWFkb25seSB0YWdJbmZvcm1hdGlvbj86IFNjYWxhckRpZmY8UmVzb3VyY2VbJ3RhZ0luZm9ybWF0aW9uJ10+O1xuICByZWFkb25seSBzY3J1dGluaXphYmxlPzogU2NhbGFyRGlmZjxSZXNvdXJjZVsnc2NydXRpbml6YWJsZSddPjtcbiAgcmVhZG9ubHkgdHlwZURlZmluaXRpb25EaWZmPzogTWFwRGlmZjxUeXBlRGVmaW5pdGlvbiwgVXBkYXRlZFR5cGVEZWZpbml0aW9uPjtcbiAgcmVhZG9ubHkgcHJpbWFyeUlkZW50aWZpZXI/OiBMaXN0RGlmZjxzdHJpbmcsIHZvaWQ+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZWRQcm9wZXJ0eSB7XG4gIHJlYWRvbmx5IG9sZDogUHJvcGVydHk7XG4gIHJlYWRvbmx5IG5ldzogUHJvcGVydHk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlZEF0dHJpYnV0ZSB7XG4gIHJlYWRvbmx5IG9sZDogQXR0cmlidXRlO1xuICByZWFkb25seSBuZXc6IEF0dHJpYnV0ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVkVHlwZURlZmluaXRpb24ge1xuICByZWFkb25seSBuYW1lPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBkb2N1bWVudGF0aW9uPzogU2NhbGFyRGlmZjxzdHJpbmc+O1xuICByZWFkb25seSBwcm9wZXJ0aWVzPzogTWFwRGlmZjxQcm9wZXJ0eSwgVXBkYXRlZFByb3BlcnR5PjtcbiAgcmVhZG9ubHkgbXVzdFJlbmRlckZvckJ3Q29tcGF0PzogU2NhbGFyRGlmZjxib29sZWFuPjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2FsYXJEaWZmPEE+IHtcbiAgcmVhZG9ubHkgb2xkPzogQTtcbiAgcmVhZG9ubHkgbmV3PzogQTtcbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWV0cmljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy90eXBlcy9tZXRyaWNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlbGF0aW9uc2hpcCB9IGZyb20gJ0BjZGtsYWJzL3Rza2InO1xuaW1wb3J0IHsgUmVzb3VyY2UsIFNlcnZpY2UgfSBmcm9tICcuL3Jlc291cmNlJztcblxuLyoqXG4gKiBBIE1ldHJpYyBEaW1lbnNpb24gKG5vdCBhbiBlbnRpdHkpXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGltZW5zaW9uIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGRpbWVuc2lvblxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogQSBwb3RlbnRpYWwgdmFsdWUgZm9yIHRoaXMgZGltZW5zaW9uXG4gICAqL1xuICByZWFkb25seSB2YWx1ZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIHNldCBvZiBNZXRyaWMgRGltZW5zaW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGltZW5zaW9uU2V0IGV4dGVuZHMgRW50aXR5IHtcbiAgLyoqXG4gICAqIEEgdW5pcXVlIHZhbHVlIHVzZWQgdG8gZGVkdXBsaWNhdGUgdGhlIGVudGl0eVxuICAgKi9cbiAgZGVkdXBLZXk6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBkaW1lbnNpb25zIGluIHRoaXMgc2V0XG4gICAqL1xuICBkaW1lbnNpb25zOiBEaW1lbnNpb25bXTtcbn1cbmV4cG9ydCB0eXBlIFJlc291cmNlSGFzRGltZW5zaW9uU2V0ID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBEaW1lbnNpb25TZXQ+O1xuZXhwb3J0IHR5cGUgU2VydmljZUhhc0RpbWVuc2lvblNldCA9IFJlbGF0aW9uc2hpcDxTZXJ2aWNlLCBEaW1lbnNpb25TZXQ+O1xuXG4vKipcbiAqIEEgQ2xvdWRXYXRjaCBNZXRyaWNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZXRyaWMgZXh0ZW5kcyBFbnRpdHkge1xuICAvKipcbiAgICogTWV0cmljIG5hbWVzcGFjZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZXNwYWNlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBtZXRyaWNcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIERlZmF1bHQgKHN1Z2dlc3RlZCkgc3RhdGlzdGljIGZvciB0aGlzIG1ldHJpY1xuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGlzdGljOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBBIHVuaXF1ZSB2YWx1ZSB1c2VkIHRvIGRlZHVwbGljYXRlIHRoZSBlbnRpdHlcbiAgICovXG4gIHJlYWRvbmx5IGRlZHVwS2V5OiBzdHJpbmc7XG59XG5leHBvcnQgdHlwZSBVc2VzRGltZW5zaW9uU2V0ID0gUmVsYXRpb25zaGlwPE1ldHJpYywgRGltZW5zaW9uU2V0PjtcbmV4cG9ydCB0eXBlIFJlc291cmNlSGFzTWV0cmljID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBNZXRyaWM+O1xuZXhwb3J0IHR5cGUgU2VydmljZUhhc01ldHJpYyA9IFJlbGF0aW9uc2hpcDxTZXJ2aWNlLCBNZXRyaWM+O1xuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RichPropertyType = exports.PropertyScrutinyType = exports.ResourceScrutinyType = exports.isCollectionType = exports.Deprecation = exports.RichAttribute = exports.RichProperty = exports.RichTypedField = void 0;\nconst sorting_1 = require(\"../util/sorting\");\nclass RichTypedField {\n constructor(field) {\n this.field = field;\n if (field === undefined) {\n throw new Error('Field is undefined');\n }\n }\n types() {\n var _a;\n return [...((_a = this.field.previousTypes) !== null && _a !== void 0 ? _a : []), this.field.type];\n }\n /**\n * Update the type of this property with a new type\n *\n * Only if it's not in the set of types already.\n */\n updateType(type) {\n const richType = new RichPropertyType(type);\n // Only add this type if we don't already have it. We are only doing comparisons where 'integer' and 'number'\n // are treated the same, for all other types we need strict equality. We used to use 'assignableTo' as a\n // condition, but these types will be rendered in both co- and contravariant positions, and so we really can't\n // do much better than full equality.\n if (this.types().some((t) => richType.equals(t))) {\n // Nothing to do, type is already in there.\n return false;\n }\n // Special case: if the new type is `string` and the old type is `date-time`, we assume this is\n // the same type but we dropped some formatting information. No need to make this a separate type.\n if (type.type === 'string' && this.types().some((t) => t.type === 'date-time')) {\n return false;\n }\n if (!this.field.previousTypes) {\n this.field.previousTypes = [];\n }\n this.field.previousTypes.push(this.field.type);\n this.field.type = type;\n return true;\n }\n}\nexports.RichTypedField = RichTypedField;\nclass RichProperty extends RichTypedField {\n constructor(property) {\n super(property);\n }\n}\nexports.RichProperty = RichProperty;\nclass RichAttribute extends RichTypedField {\n constructor(attr) {\n super(attr);\n }\n}\nexports.RichAttribute = RichAttribute;\nvar Deprecation;\n(function (Deprecation) {\n /**\n * Not deprecated\n */\n Deprecation[\"NONE\"] = \"NONE\";\n /**\n * Warn about use\n */\n Deprecation[\"WARN\"] = \"WARN\";\n /**\n * Do not emit the value at all\n *\n * (Handle properties that were incorrectly added to the spec)\n */\n Deprecation[\"IGNORE\"] = \"IGNORE\";\n})(Deprecation = exports.Deprecation || (exports.Deprecation = {}));\nfunction isCollectionType(x) {\n return x.type === 'array' || x.type === 'map';\n}\nexports.isCollectionType = isCollectionType;\n/**\n * Mark a resource as a resource that needs additional scrutiy when added, removed or changed\n *\n * Used to mark resources that represent security policies.\n */\nvar ResourceScrutinyType;\n(function (ResourceScrutinyType) {\n /**\n * No additional scrutiny\n */\n ResourceScrutinyType[\"None\"] = \"None\";\n /**\n * An externally attached policy document to a resource\n *\n * (Common for SQS, SNS, S3, ...)\n */\n ResourceScrutinyType[\"ResourcePolicyResource\"] = \"ResourcePolicyResource\";\n /**\n * This is an IAM policy on an identity resource\n *\n * (Basically saying: this is AWS::IAM::Policy)\n */\n ResourceScrutinyType[\"IdentityPolicyResource\"] = \"IdentityPolicyResource\";\n /**\n * This is a Lambda Permission policy\n */\n ResourceScrutinyType[\"LambdaPermission\"] = \"LambdaPermission\";\n /**\n * An ingress rule object\n */\n ResourceScrutinyType[\"IngressRuleResource\"] = \"IngressRuleResource\";\n /**\n * A set of egress rules\n */\n ResourceScrutinyType[\"EgressRuleResource\"] = \"EgressRuleResource\";\n /**\n * AWS::SSO::Assignment\n *\n * IAM Identity Center (formerly known as SSO)\n */\n ResourceScrutinyType[\"SsoAssignmentResource\"] = \"SsoAssignmentResource\";\n /**\n * AWS::SSO::InstanceAccessControlAttributeConfiguration\n *\n * IAM Identity Center (formerly known as SSO)\n */\n ResourceScrutinyType[\"SsoInstanceACAConfigResource\"] = \"SsoInstanceACAConfigResource\";\n /**\n * AWS::SSO::PermissionSet\n *\n * IAM Identity Center (formerly known as SSO)\n */\n ResourceScrutinyType[\"SsoPermissionSet\"] = \"SsoPermissionSet\";\n})(ResourceScrutinyType = exports.ResourceScrutinyType || (exports.ResourceScrutinyType = {}));\n/**\n * Mark a property as a property that needs additional scrutiny when it changes\n *\n * Used to mark sensitive properties that have security-related implications.\n */\nvar PropertyScrutinyType;\n(function (PropertyScrutinyType) {\n /**\n * No additional scrutiny\n */\n PropertyScrutinyType[\"None\"] = \"None\";\n /**\n * This is an IAM policy directly on a resource\n */\n PropertyScrutinyType[\"InlineResourcePolicy\"] = \"InlineResourcePolicy\";\n /**\n * Either an AssumeRolePolicyDocument or a dictionary of policy documents\n */\n PropertyScrutinyType[\"InlineIdentityPolicies\"] = \"InlineIdentityPolicies\";\n /**\n * A list of managed policies (on an identity resource)\n */\n PropertyScrutinyType[\"ManagedPolicies\"] = \"ManagedPolicies\";\n /**\n * A set of ingress rules (on a security group)\n */\n PropertyScrutinyType[\"IngressRules\"] = \"IngressRules\";\n /**\n * A set of egress rules (on a security group)\n */\n PropertyScrutinyType[\"EgressRules\"] = \"EgressRules\";\n})(PropertyScrutinyType = exports.PropertyScrutinyType || (exports.PropertyScrutinyType = {}));\nclass RichPropertyType {\n constructor(type) {\n this.type = type;\n }\n equals(rhs) {\n switch (this.type.type) {\n case 'integer':\n case 'boolean':\n case 'date-time':\n case 'json':\n case 'null':\n case 'number':\n case 'string':\n case 'tag':\n return rhs.type === this.type.type;\n case 'array':\n case 'map':\n return rhs.type === this.type.type && new RichPropertyType(this.type.element).equals(rhs.element);\n case 'ref':\n return rhs.type === 'ref' && this.type.reference.$ref === rhs.reference.$ref;\n case 'union':\n const lhsKey = this.sortKey();\n const rhsKey = new RichPropertyType(rhs).sortKey();\n return lhsKey.length === rhsKey.length && lhsKey.every((l, i) => l === rhsKey[i]);\n }\n }\n /**\n * Whether the current type is JavaScript-equal to the RHS type\n *\n * Same as normal equality, but consider `integer` and `number` the same types.\n */\n javascriptEquals(rhs) {\n switch (this.type.type) {\n case 'number':\n case 'integer':\n // Widening\n return rhs.type === 'integer' || rhs.type === 'number';\n case 'array':\n case 'map':\n return rhs.type === this.type.type && new RichPropertyType(this.type.element).javascriptEquals(rhs.element);\n case 'union':\n if (rhs.type !== 'union') {\n return false;\n }\n // Every type in this union needs to be equal one type in RHS\n return this.type.types.every((t1) => rhs.types.some((t2) => new RichPropertyType(t1).javascriptEquals(t2)));\n default:\n // For anything else, need strict equality\n return this.equals(rhs);\n }\n }\n /**\n * Whether the current type is assignable to the RHS type.\n *\n * This is means every type member of the LHS must be present in the RHS type\n */\n assignableTo(rhs) {\n const extractMembers = (type) => (type.type == 'union' ? type.types : [type]);\n const asRichType = (type) => new RichPropertyType(type);\n const rhsMembers = extractMembers(rhs);\n for (const lhsMember of extractMembers(this.type).map(asRichType)) {\n if (!rhsMembers.some((type) => lhsMember.equals(type))) {\n return false;\n }\n }\n return true;\n }\n /**\n * Return a version of this type, but with all type unions in a regularized order\n */\n normalize(db) {\n switch (this.type.type) {\n case 'array':\n case 'map':\n return new RichPropertyType({\n type: this.type.type,\n element: new RichPropertyType(this.type.element).normalize(db).type,\n });\n case 'union':\n const types = this.type.types\n .map((t) => new RichPropertyType(t).normalize(db))\n .map((t) => [t, t.sortKey(db)]);\n types.sort((0, sorting_1.sortKeyComparator)(([_, sortKey]) => sortKey));\n return new RichPropertyType({\n type: 'union',\n types: types.map(([t, _]) => t.type),\n });\n default:\n return this;\n }\n }\n stringify(db, withId = true) {\n switch (this.type.type) {\n case 'integer':\n case 'boolean':\n case 'date-time':\n case 'json':\n case 'null':\n case 'number':\n case 'string':\n case 'tag':\n return this.type.type;\n case 'array':\n return `Array<${new RichPropertyType(this.type.element).stringify(db, withId)}>`;\n case 'map':\n return `Map`;\n case 'ref':\n const type = db.get('typeDefinition', this.type.reference);\n return withId ? `${type.name}(${this.type.reference.$ref})` : type.name;\n case 'union':\n return this.type.types.map((t) => new RichPropertyType(t).stringify(db, withId)).join(' | ');\n }\n }\n /**\n * Return a sortable key based on this type\n *\n * If a database is given, type definitions will be sorted based on type name,\n * otherwise on identifier\n */\n sortKey(db) {\n var _a, _b;\n switch (this.type.type) {\n case 'integer':\n case 'boolean':\n case 'date-time':\n case 'json':\n case 'null':\n case 'number':\n case 'string':\n case 'tag':\n return ['0', this.type.type];\n case 'array':\n case 'map':\n return ['1', this.type.type, ...new RichPropertyType(this.type.element).sortKey(db)];\n case 'ref':\n return ['2', this.type.type, (_b = (_a = db === null || db === void 0 ? void 0 : db.get('typeDefinition', this.type.reference)) === null || _a === void 0 ? void 0 : _a.name) !== null && _b !== void 0 ? _b : this.type.reference.$ref];\n case 'union':\n const typeKeys = this.type.types.map((t) => new RichPropertyType(t).sortKey(db));\n typeKeys.sort((0, sorting_1.sortKeyComparator)((x) => x));\n return ['3', this.type.type, ...typeKeys.flatMap((x) => x)];\n }\n }\n}\nexports.RichPropertyType = RichPropertyType;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMvcmVzb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsNkNBQW9EO0FBdUtwRCxNQUFhLGNBQWM7SUFDekIsWUFBNkIsS0FBK0M7UUFBL0MsVUFBSyxHQUFMLEtBQUssQ0FBMEM7UUFDMUUsSUFBSSxLQUFLLEtBQUssU0FBUyxFQUFFO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztTQUN2QztJQUNILENBQUM7SUFFTSxLQUFLOztRQUNWLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBQSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsbUNBQUksRUFBRSxDQUFDLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLFVBQVUsQ0FBQyxJQUFrQjtRQUNsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTVDLDZHQUE2RztRQUM3Ryx3R0FBd0c7UUFDeEcsOEdBQThHO1FBQzlHLHFDQUFxQztRQUNyQyxJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNoRCwyQ0FBMkM7WUFDM0MsT0FBTyxLQUFLLENBQUM7U0FDZDtRQUVELCtGQUErRjtRQUMvRixrR0FBa0c7UUFDbEcsSUFBSSxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQyxFQUFFO1lBQzlFLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxJQUFJ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QyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDakYsUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFBLDJCQUFpQixFQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUMzQyxPQUFPLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUMvRDtJQUNILENBQUM7Q0FDRjtBQXRKRCw0Q0FzSkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFbnRpdHksIFJlZmVyZW5jZSwgUmVsYXRpb25zaGlwIH0gZnJvbSAnQGNka2xhYnMvdHNrYic7XG5pbXBvcnQgeyBTcGVjRGF0YWJhc2UgfSBmcm9tICcuL2RhdGFiYXNlJztcbmltcG9ydCB7IHNvcnRLZXlDb21wYXJhdG9yIH0gZnJvbSAnLi4vdXRpbC9zb3J0aW5nJztcblxuZXhwb3J0IGludGVyZmFjZSBQYXJ0aXRpb24gZXh0ZW5kcyBFbnRpdHkge1xuICByZWFkb25seSBwYXJ0aXRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgSGFzUmVnaW9uID0gUmVsYXRpb25zaGlwPFBhcnRpdGlvbiwgUmVnaW9uLCB7IGlzUHJpbWFyeT86IGJvb2xlYW4gfT47XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VydmljZSBleHRlbmRzIEVudGl0eSB7XG4gIC8qKlxuICAgKiBUaGUgZnVsbCBuYW1lIG9mIHRoZSBzZXJ2aWNlIGluY2x1ZGluZyB0aGUgZ3JvdXAgcHJlZml4LCBsb3dlcmNhc2VkIGFuZCBoeXBoZW5hdGVkLlxuICAgKlxuICAgKiBFLmcuIGBBV1M6OkR5bmFtb0RCYCAtPiBgYXdzLWR5bmFtb2RiYFxuICAgKlxuICAgKiBAZXhhbXBsZSBhd3MtZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIE9ubHkgdGhlIHNlcnZpY2UgcGFydCBvZiB0aGUgbmFtZSwgbG93ZXJjYXNlZC5cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYGR5bmFtb2RiYFxuICAgKlxuICAgKiBAZXhhbXBsZSBkeW5hbW9kYlxuICAgKi9cbiAgcmVhZG9ubHkgc2hvcnROYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgc2hvcnRuYW1lIG9mIHRoZSBzZXJ2aWNlIGluIGNhcGl0YWxpemVkIGZvcm1cbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmAgLT4gYER5bmFtb0RCYFxuICAgKlxuICAgKiBAZXhhbXBsZSBkeW5hbW9kYlxuICAgKi9cbiAgcmVhZG9ubHkgY2FwaXRhbGl6ZWQ6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBjb21wbGV0ZSBjbG91ZGZvcm1hdGlvbiBzdHlsZSBuYW1lc3BhY2Ugb2YgdGhlIHNlcnZpY2VcbiAgICpcbiAgICogRS5nLiBgQVdTOjpEeW5hbW9EQmBcbiAgICpcbiAgICogQGV4YW1wbGUgZHluYW1vZGJcbiAgICovXG4gIHJlYWRvbmx5IGNsb3VkRm9ybWF0aW9uTmFtZXNwYWNlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVnaW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2N1bWVudGF0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbWFya2Rvd246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNvdXJjZSBleHRlbmRzIEVudGl0eSB7XG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgY2xvdWRGb3JtYXRpb25UeXBlOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBJZiBzZXQsIHRoaXMgQ2xvdWRGb3JtYXRpb24gVHJhbnNmb3JtIGlzIHJlcXVpcmVkIGJ5IHRoZSByZXNvdXJjZVxuICAgKi9cbiAgY2xvdWRGb3JtYXRpb25UcmFuc2Zvcm0/OiBzdHJpbmc7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IHByb3BlcnRpZXM6IFJlc291cmNlUHJvcGVydGllcztcbiAgcmVhZG9ubHkgYXR0cmlidXRlczogUmVjb3JkPHN0cmluZywgQXR0cmlidXRlPjtcbiAgcmVhZG9ubHkgdmFsaWRhdGlvbnM/OiB1bmtub3duO1xuICBpZGVudGlmaWVyPzogUmVzb3VyY2VJZGVudGlmaWVyO1xuICBpc1N0YXRlZnVsPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5mb3JtYXRpb24gYWJvdXQgdGhlIHRhZ2dhYmlsaXR5IG9mIHRoaXMgcmVzb3VyY2VcbiAgICpcbiAgICogVW5kZWZpbmVkIGlmIHRoZSByZXNvdXJjZSBpcyBub3QgdGFnZ2FibGUuXG4gICAqL1xuICB0YWdJbmZvcm1hdGlvbj86IFRhZ0luZm9ybWF0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIGNoYW5nZXMgdG8gdGhpcyByZXNvdXJjZSBuZWVkIHRvIGJlIHNjcnV0aW5pemVkXG4gICAqXG4gICAqIEBkZWZhdWx0IFJlc291cmNlU2NydXRpbnlUeXBlLk5PTkVcbiAgICovXG4gIHNjcnV0aW5pemFibGU/OiBSZXNvdXJjZVNjcnV0aW55VHlwZTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBwYXRocyB0byBwcm9wZXJ0aWVzIHRoYXQgYWxzbyBjYXVzZSByZXBsYWNlbWVudC5cbiAgICpcbiAgICogVGhpcyBpcyB0byBpbmRpY2F0ZSB0aGF0IGNlcnRhaW4gcHJvcGVydHkgcGF0aHMgaW50byB0aGlzIHJlc291cmNlXG4gICAqIHdpbGwgY2F1c2UgcmVwbGFjZW1lbnQ7IG9ubHkgcmVwbGFjZW1lbnRzIHRoYXQgY2Fubm90IGJlIHJlcHJlc2VudGVkXG4gICAqIGJ5IHRhZ2dpbmcgdGhlIHByb3BlcnR5IGluIGEgdHlwZSBkZWZpbml0aW9uIHdpbGwgYmUgaW5jbHVkZWQgaGVyZVxuICAgKiAoZm9yIGV4YW1wbGUsIGJlY2F1c2UgdGhlIHRhZ2dlZCBwcm9wZXJ0eSB3b3VsZCBiZSBpbiBhIHByZWRlZmluZWRcbiAgICogdHlwZSBsaWtlIGB0YWdgKS5cbiAgICpcbiAgICogQWxsIHByb3BlcnRpZXMgaW4gdGhpcyBsaXN0IHNob3VsZCBiZSB0cmVhdGVkIGFzIGBjYXVzZXNSZXBsYWNlbWVudDogJ3llcydgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtXG4gICAqL1xuICBhZGRpdGlvbmFsUmVwbGFjZW1lbnRQcm9wZXJ0aWVzPzogc3RyaW5nW11bXTtcbn1cblxuZXhwb3J0IHR5cGUgUmVzb3VyY2VQcm9wZXJ0aWVzID0gUmVjb3JkPHN0cmluZywgUHJvcGVydHk+O1xuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVEZWZpbml0aW9uIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuICBkb2N1bWVudGF0aW9uPzogc3RyaW5nO1xuICByZWFkb25seSBwcm9wZXJ0aWVzOiBSZXNvdXJjZVByb3BlcnRpZXM7XG5cbiAgLyoqXG4gICAqIElmIHRydWUsIHJlbmRlciB0aGlzIHR5cGUgZXZlbiBpZiBpdCBpcyB1bnVzZWQuXG4gICAqL1xuICBtdXN0UmVuZGVyRm9yQndDb21wYXQ/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFByb3BlcnR5IHtcbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIG9mIHRoZSBwcm9wZXJ0eVxuICAgKi9cbiAgZG9jdW1lbnRhdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogSXMgdGhpcyBwcm9wZXJ0eSByZXF1aXJlZFxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVxdWlyZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgY3VycmVudCB0eXBlIG9mIHRoaXMgcHJvcGVydHlcbiAgICovXG4gIHR5cGU6IFByb3BlcnR5VHlwZTtcblxuICAvKipcbiAgICogQW4gb3JkZXJlZCBsaXN0IG9mIHByZXZpb3VzIHR5cGVzIG9mIHRoaXMgcHJvcGVydHkgaW4gYXNjZW5kaW5nIG9yZGVyXG4gICAqXG4gICAqIERvZXMgbm90IGluY2x1ZGUgdGhlIGN1cnJlbnQgdHlwZSwgdXNlIGB0eXBlYCBmb3IgdGhpcy5cbiAgICovXG4gIHByZXZpb3VzVHlwZXM/OiBQcm9wZXJ0eVR5cGVbXTtcblxuICAvKipcbiAgICogQSBzdHJpbmcgcmVwcmVzZW50YXRpb24gdGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhpcyBwcm9wZXJ0eVxuICAgKlxuICAgKiBUaGlzIHZhbHVlIGlzIG5vdCBkaXJlY3RseSBmdW5jdGlvbmFsOyBpdCBkZXNjcmliZXMgaG93IHRoZSB1bmRlcmx5aW5nIHJlc291cmNlXG4gICAqIHdpbGwgYmVoYXZlIGlmIHRoZSB2YWx1ZSBpcyBub3Qgc3BlY2lmaWVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHQgdW5rbm93blxuICAgKi9cbiAgZGVmYXVsdFZhbHVlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoaXMgcHJvcGVydHkgaXMgZGVwcmVjYXRlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vdCBkZXByZWNhdGVkXG4gICAqL1xuICBkZXByZWNhdGVkPzogRGVwcmVjYXRpb247XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgY2hhbmdlcyB0byB0aGlzIHByb3BlcnR5IG5lZWRzIHRvIGJlIHNjcnV0aW5pemVkIHNwZWNpYWxseVxuICAgKlxuICAgKiBAZGVmYXVsdCBQcm9wZXJ0eVNjcnV0aW55VHlwZS5OT05FXG4gICAqL1xuICBzY3J1dGluaXphYmxlPzogUHJvcGVydHlTY3J1dGlueVR5cGU7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGNvbnRhaW5pbmcgcmVzb3VyY2Ugd2lsbCBiZSByZXBsYWNlZCBpZiB0aGlzIHByb3BlcnR5IGlzIGNoYW5nZWRcbiAgICpcbiAgICogQGRlZmF1bHQgJ25vJ1xuICAgKi9cbiAgY2F1c2VzUmVwbGFjZW1lbnQ/OiAneWVzJyB8ICdubycgfCAnbWF5YmUnO1xufVxuXG5leHBvcnQgY2xhc3MgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGZpZWxkOiBQaWNrPFByb3BlcnR5LCAndHlwZScgfCAncHJldmlvdXNUeXBlcyc+KSB7XG4gICAgaWYgKGZpZWxkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRmllbGQgaXMgdW5kZWZpbmVkJyk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHR5cGVzKCk6IFByb3BlcnR5VHlwZVtdIHtcbiAgICByZXR1cm4gWy4uLih0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMgPz8gW10pLCB0aGlzLmZpZWxkLnR5cGVdO1xuICB9XG5cbiAgLyoqXG4gICAqIFVwZGF0ZSB0aGUgdHlwZSBvZiB0aGlzIHByb3BlcnR5IHdpdGggYSBuZXcgdHlwZVxuICAgKlxuICAgKiBPbmx5IGlmIGl0J3Mgbm90IGluIHRoZSBzZXQgb2YgdHlwZXMgYWxyZWFkeS5cbiAgICovXG4gIHB1YmxpYyB1cGRhdGVUeXBlKHR5cGU6IFByb3BlcnR5VHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IHJpY2hUeXBlID0gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodHlwZSk7XG5cbiAgICAvLyBPbmx5IGFkZCB0aGlzIHR5cGUgaWYgd2UgZG9uJ3QgYWxyZWFkeSBoYXZlIGl0LiBXZSBhcmUgb25seSBkb2luZyBjb21wYXJpc29ucyB3aGVyZSAnaW50ZWdlcicgYW5kICdudW1iZXInXG4gICAgLy8gYXJlIHRyZWF0ZWQgdGhlIHNhbWUsIGZvciBhbGwgb3RoZXIgdHlwZXMgd2UgbmVlZCBzdHJpY3QgZXF1YWxpdHkuIFdlIHVzZWQgdG8gdXNlICdhc3NpZ25hYmxlVG8nIGFzIGFcbiAgICAvLyBjb25kaXRpb24sIGJ1dCB0aGVzZSB0eXBlcyB3aWxsIGJlIHJlbmRlcmVkIGluIGJvdGggY28tIGFuZCBjb250cmF2YXJpYW50IHBvc2l0aW9ucywgYW5kIHNvIHdlIHJlYWxseSBjYW4ndFxuICAgIC8vIGRvIG11Y2ggYmV0dGVyIHRoYW4gZnVsbCBlcXVhbGl0eS5cbiAgICBpZiAodGhpcy50eXBlcygpLnNvbWUoKHQpID0+IHJpY2hUeXBlLmVxdWFscyh0KSkpIHtcbiAgICAgIC8vIE5vdGhpbmcgdG8gZG8sIHR5cGUgaXMgYWxyZWFkeSBpbiB0aGVyZS5cbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTcGVjaWFsIGNhc2U6IGlmIHRoZSBuZXcgdHlwZSBpcyBgc3RyaW5nYCBhbmQgdGhlIG9sZCB0eXBlIGlzIGBkYXRlLXRpbWVgLCB3ZSBhc3N1bWUgdGhpcyBpc1xuICAgIC8vIHRoZSBzYW1lIHR5cGUgYnV0IHdlIGRyb3BwZWQgc29tZSBmb3JtYXR0aW5nIGluZm9ybWF0aW9uLiBObyBuZWVkIHRvIG1ha2UgdGhpcyBhIHNlcGFyYXRlIHR5cGUuXG4gICAgaWYgKHR5cGUudHlwZSA9PT0gJ3N0cmluZycgJiYgdGhpcy50eXBlcygpLnNvbWUoKHQpID0+IHQudHlwZSA9PT0gJ2RhdGUtdGltZScpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMpIHtcbiAgICAgIHRoaXMuZmllbGQucHJldmlvdXNUeXBlcyA9IFtdO1xuICAgIH1cbiAgICB0aGlzLmZpZWxkLnByZXZpb3VzVHlwZXMucHVzaCh0aGlzLmZpZWxkLnR5cGUpO1xuICAgIHRoaXMuZmllbGQudHlwZSA9IHR5cGU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJpY2hQcm9wZXJ0eSBleHRlbmRzIFJpY2hUeXBlZEZpZWxkIHtcbiAgY29uc3RydWN0b3IocHJvcGVydHk6IFByb3BlcnR5KSB7XG4gICAgc3VwZXIocHJvcGVydHkpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSaWNoQXR0cmlidXRlIGV4dGVuZHMgUmljaFR5cGVkRmllbGQge1xuICBjb25zdHJ1Y3RvcihhdHRyOiBBdHRyaWJ1dGUpIHtcbiAgICBzdXBlcihhdHRyKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF0dHJpYnV0ZSB7XG4gIGRvY3VtZW50YXRpb24/OiBzdHJpbmc7XG4gIHR5cGU6IFByb3BlcnR5VHlwZTtcbiAgLyoqXG4gICAqIEFuIG9yZGVyZWQgbGlzdCBvZiBwcmV2aW91cyB0eXBlcyBvZiB0aGlzIHByb3BlcnR5IGluIGFzY2VuZGluZyBvcmRlclxuICAgKlxuICAgKiBEb2VzIG5vdCBpbmNsdWRlIHRoZSBjdXJyZW50IHR5cGUsIHVzZSBgdHlwZWAgZm9yIHRoaXMuXG4gICAqL1xuICBwcmV2aW91c1R5cGVzPzogUHJvcGVydHlUeXBlW107XG59XG5cbmV4cG9ydCBlbnVtIERlcHJlY2F0aW9uIHtcbiAgLyoqXG4gICAqIE5vdCBkZXByZWNhdGVkXG4gICAqL1xuICBOT05FID0gJ05PTkUnLFxuXG4gIC8qKlxuICAgKiBXYXJuIGFib3V0IHVzZVxuICAgKi9cbiAgV0FSTiA9ICdXQVJOJyxcblxuICAvKipcbiAgICogRG8gbm90IGVtaXQgdGhlIHZhbHVlIGF0IGFsbFxuICAgKlxuICAgKiAoSGFuZGxlIHByb3BlcnRpZXMgdGhhdCB3ZXJlIGluY29ycmVjdGx5IGFkZGVkIHRvIHRoZSBzcGVjKVxuICAgKi9cbiAgSUdOT1JFID0gJ0lHTk9SRScsXG59XG5cbmV4cG9ydCB0eXBlIFByb3BlcnR5VHlwZSA9XG4gIHwgUHJpbWl0aXZlVHlwZVxuICB8IERlZmluaXRpb25SZWZlcmVuY2VcbiAgfCBCdWlsdGluVGFnVHlwZVxuICB8IEFycmF5VHlwZTxQcm9wZXJ0eVR5cGU+XG4gIHwgTWFwVHlwZTxQcm9wZXJ0eVR5cGU+XG4gIHwgVHlwZVVuaW9uPFByb3BlcnR5VHlwZT47XG5cbmV4cG9ydCB0eXBlIFByaW1pdGl2ZVR5cGUgPVxuICB8IFN0cmluZ1R5cGVcbiAgfCBOdW1iZXJUeXBlXG4gIHwgSW50ZWdlclR5cGVcbiAgfCBCb29sZWFuVHlwZVxuICB8IEpzb25UeXBlXG4gIHwgRGF0ZVRpbWVUeXBlXG4gIHwgTnVsbFR5cGVcbiAgfCBCdWlsdGluVGFnVHlwZTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29sbGVjdGlvblR5cGUoeDogUHJvcGVydHlUeXBlKTogeCBpcyBBcnJheVR5cGU8YW55PiB8IE1hcFR5cGU8YW55PiB7XG4gIHJldHVybiB4LnR5cGUgPT09ICdhcnJheScgfHwgeC50eXBlID09PSAnbWFwJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUYWdJbmZvcm1hdGlvbiB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBwcm9wZXJ0eSB0aGF0IGhvbGRzIHRoZSB0YWdzXG4gICAqL1xuICByZWFkb25seSB0YWdQcm9wZXJ0eU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVXNlZCB0byBpbnN0cnVjdCBjZGsuVGFnTWFuYWdlciBob3cgdG8gaGFuZGxlIHRhZ3NcbiAgICovXG4gIHJlYWRvbmx5IHZhcmlhbnQ6IFRhZ1ZhcmlhbnQ7XG59XG5cbmV4cG9ydCB0eXBlIFRhZ1ZhcmlhbnQgPSAnc3RhbmRhcmQnIHwgJ2FzZycgfCAnbWFwJztcblxuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3N0cmluZyc7XG59XG5leHBvcnQgaW50ZXJmYWNlIEJ1aWx0aW5UYWdUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ3RhZyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTnVtYmVyVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdudW1iZXInO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEludGVnZXJUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2ludGVnZXInO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJvb2xlYW5UeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2Jvb2xlYW4nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25UeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ2pzb24nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE51bGxUeXBlIHtcbiAgcmVhZG9ubHkgdHlwZTogJ251bGwnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERhdGVUaW1lVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICdkYXRlLXRpbWUnO1xufVxuXG4vKipcbiAqIFRoZSBcImxlZ2FjeVwiIHRhZyB0eXBlICh1c2VkIGluIHRoZSBvbGQgcmVzb3VyY2Ugc3BlYylcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCdWlsdGluVGFnVHlwZSB7XG4gIHJlYWRvbmx5IHR5cGU6ICd0YWcnO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERlZmluaXRpb25SZWZlcmVuY2Uge1xuICByZWFkb25seSB0eXBlOiAncmVmJztcbiAgcmVhZG9ubHkgcmVmZXJlbmNlOiBSZWZlcmVuY2U8VHlwZURlZmluaXRpb24+O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFycmF5VHlwZTxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdhcnJheSc7XG4gIHJlYWRvbmx5IGVsZW1lbnQ6IEU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFwVHlwZTxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdtYXAnO1xuICByZWFkb25seSBlbGVtZW50OiBFO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFR5cGVVbmlvbjxFPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICd1bmlvbic7XG4gIHJlYWRvbmx5IHR5cGVzOiBFW107XG59XG5cbmV4cG9ydCB0eXBlIEhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFNlcnZpY2UsIFJlc291cmNlPjtcbmV4cG9ydCB0eXBlIFJlZ2lvbkhhc1Jlc291cmNlID0gUmVsYXRpb25zaGlwPFJlZ2lvbiwgUmVzb3VyY2U+O1xuZXhwb3J0IHR5cGUgUmVnaW9uSGFzU2VydmljZSA9IFJlbGF0aW9uc2hpcDxSZWdpb24sIFNlcnZpY2U+O1xuZXhwb3J0IHR5cGUgUmVzb3VyY2VEb2MgPSBSZWxhdGlvbnNoaXA8UmVzb3VyY2UsIERvY3VtZW50YXRpb24+O1xuXG5leHBvcnQgdHlwZSBTZXJ2aWNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBTZXJ2aWNlPjtcbmV4cG9ydCB0eXBlIFJlc291cmNlSW5SZWdpb24gPSBSZWxhdGlvbnNoaXA8UmVnaW9uLCBSZXNvdXJjZT47XG5cbmV4cG9ydCB0eXBlIFVzZXNUeXBlID0gUmVsYXRpb25zaGlwPFJlc291cmNlLCBUeXBlRGVmaW5pdGlvbj47XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb3VyY2VJZGVudGlmaWVyIGV4dGVuZHMgRW50aXR5IHtcbiAgcmVhZG9ubHkgYXJuVGVtcGxhdGU/OiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByaW1hcnlJZGVudGlmaWVyPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogTWFyayBhIHJlc291cmNlIGFzIGEgcmVzb3VyY2UgdGhhdCBuZWVkcyBhZGRpdGlvbmFsIHNjcnV0aXkgd2hlbiBhZGRlZCwgcmVtb3ZlZCBvciBjaGFuZ2VkXG4gKlxuICogVXNlZCB0byBtYXJrIHJlc291cmNlcyB0aGF0IHJlcHJlc2VudCBzZWN1cml0eSBwb2xpY2llcy5cbiAqL1xuZXhwb3J0IGVudW0gUmVzb3VyY2VTY3J1dGlueVR5cGUge1xuICAvKipcbiAgICogTm8gYWRkaXRpb25hbCBzY3J1dGlueVxuICAgKi9cbiAgTm9uZSA9ICdOb25lJyxcblxuICAvKipcbiAgICogQW4gZXh0ZXJuYWxseSBhdHRhY2hlZCBwb2xpY3kgZG9jdW1lbnQgdG8gYSByZXNvdXJjZVxuICAgKlxuICAgKiAoQ29tbW9uIGZvciBTUVMsIFNOUywgUzMsIC4uLilcbiAgICovXG4gIFJlc291cmNlUG9saWN5UmVzb3VyY2UgPSAnUmVzb3VyY2VQb2xpY3lSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gSUFNIHBvbGljeSBvbiBhbiBpZGVudGl0eSByZXNvdXJjZVxuICAgKlxuICAgKiAoQmFzaWNhbGx5IHNheWluZzogdGhpcyBpcyBBV1M6OklBTTo6UG9saWN5KVxuICAgKi9cbiAgSWRlbnRpdHlQb2xpY3lSZXNvdXJjZSA9ICdJZGVudGl0eVBvbGljeVJlc291cmNlJyxcblxuICAvKipcbiAgICogVGhpcyBpcyBhIExhbWJkYSBQZXJtaXNzaW9uIHBvbGljeVxuICAgKi9cbiAgTGFtYmRhUGVybWlzc2lvbiA9ICdMYW1iZGFQZXJtaXNzaW9uJyxcblxuICAvKipcbiAgICogQW4gaW5ncmVzcyBydWxlIG9iamVjdFxuICAgKi9cbiAgSW5ncmVzc1J1bGVSZXNvdXJjZSA9ICdJbmdyZXNzUnVsZVJlc291cmNlJyxcblxuICAvKipcbiAgICogQSBzZXQgb2YgZWdyZXNzIHJ1bGVzXG4gICAqL1xuICBFZ3Jlc3NSdWxlUmVzb3VyY2UgPSAnRWdyZXNzUnVsZVJlc291cmNlJyxcblxuICAvKipcbiAgICogQVdTOjpTU086OkFzc2lnbm1lbnRcbiAgICpcbiAgICogSUFNIElkZW50aXR5IENlbnRlciAoZm9ybWVybHkga25vd24gYXMgU1NPKVxuICAgKi9cbiAgU3NvQXNzaWdubWVudFJlc291cmNlID0gJ1Nzb0Fzc2lnbm1lbnRSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIEFXUzo6U1NPOjpJbnN0YW5jZUFjY2Vzc0NvbnRyb2xBdHRyaWJ1dGVDb25maWd1cmF0aW9uXG4gICAqXG4gICAqIElBTSBJZGVudGl0eSBDZW50ZXIgKGZvcm1lcmx5IGtub3duIGFzIFNTTylcbiAgICovXG4gIFNzb0luc3RhbmNlQUNBQ29uZmlnUmVzb3VyY2UgPSAnU3NvSW5zdGFuY2VBQ0FDb25maWdSZXNvdXJjZScsXG5cbiAgLyoqXG4gICAqIEFXUzo6U1NPOjpQZXJtaXNzaW9uU2V0XG4gICAqXG4gICAqIElBTSBJZGVudGl0eSBDZW50ZXIgKGZvcm1lcmx5IGtub3duIGFzIFNTTylcbiAgICovXG4gIFNzb1Blcm1pc3Npb25TZXQgPSAnU3NvUGVybWlzc2lvblNldCcsXG59XG5cbi8qKlxuICogTWFyayBhIHByb3BlcnR5IGFzIGEgcHJvcGVydHkgdGhhdCBuZWVkcyBhZGRpdGlvbmFsIHNjcnV0aW55IHdoZW4gaXQgY2hhbmdlc1xuICpcbiAqIFVzZWQgdG8gbWFyayBzZW5zaXRpdmUgcHJvcGVydGllcyB0aGF0IGhhdmUgc2VjdXJpdHktcmVsYXRlZCBpbXBsaWNhdGlvbnMuXG4gKi9cbmV4cG9ydCBlbnVtIFByb3BlcnR5U2NydXRpbnlUeXBlIHtcbiAgLyoqXG4gICAqIE5vIGFkZGl0aW9uYWwgc2NydXRpbnlcbiAgICovXG4gIE5vbmUgPSAnTm9uZScsXG5cbiAgLyoqXG4gICAqIFRoaXMgaXMgYW4gSUFNIHBvbGljeSBkaXJlY3RseSBvbiBhIHJlc291cmNlXG4gICAqL1xuICBJbmxpbmVSZXNvdXJjZVBvbGljeSA9ICdJbmxpbmVSZXNvdXJjZVBvbGljeScsXG5cbiAgLyoqXG4gICAqIEVpdGhlciBhbiBBc3N1bWVSb2xlUG9saWN5RG9jdW1lbnQgb3IgYSBkaWN0aW9uYXJ5IG9mIHBvbGljeSBkb2N1bWVudHNcbiAgICovXG4gIElubGluZUlkZW50aXR5UG9saWNpZXMgPSAnSW5saW5lSWRlbnRpdHlQb2xpY2llcycsXG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBtYW5hZ2VkIHBvbGljaWVzIChvbiBhbiBpZGVudGl0eSByZXNvdXJjZSlcbiAgICovXG4gIE1hbmFnZWRQb2xpY2llcyA9ICdNYW5hZ2VkUG9saWNpZXMnLFxuXG4gIC8qKlxuICAgKiBBIHNldCBvZiBpbmdyZXNzIHJ1bGVzIChvbiBhIHNlY3VyaXR5IGdyb3VwKVxuICAgKi9cbiAgSW5ncmVzc1J1bGVzID0gJ0luZ3Jlc3NSdWxlcycsXG5cbiAgLyoqXG4gICAqIEEgc2V0IG9mIGVncmVzcyBydWxlcyAob24gYSBzZWN1cml0eSBncm91cClcbiAgICovXG4gIEVncmVzc1J1bGVzID0gJ0VncmVzc1J1bGVzJyxcbn1cblxuZXhwb3J0IGNsYXNzIFJpY2hQcm9wZXJ0eVR5cGUge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHR5cGU6IFByb3BlcnR5VHlwZSkge31cblxuICBwdWJsaWMgZXF1YWxzKHJoczogUHJvcGVydHlUeXBlKTogYm9vbGVhbiB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICByZXR1cm4gcmhzLnR5cGUgPT09IHRoaXMudHlwZS50eXBlO1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSB0aGlzLnR5cGUudHlwZSAmJiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuZXF1YWxzKHJocy5lbGVtZW50KTtcbiAgICAgIGNhc2UgJ3JlZic6XG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gJ3JlZicgJiYgdGhpcy50eXBlLnJlZmVyZW5jZS4kcmVmID09PSByaHMucmVmZXJlbmNlLiRyZWY7XG4gICAgICBjYXNlICd1bmlvbic6XG4gICAgICAgIGNvbnN0IGxoc0tleSA9IHRoaXMuc29ydEtleSgpO1xuICAgICAgICBjb25zdCByaHNLZXkgPSBuZXcgUmljaFByb3BlcnR5VHlwZShyaHMpLnNvcnRLZXkoKTtcbiAgICAgICAgcmV0dXJuIGxoc0tleS5sZW5ndGggPT09IHJoc0tleS5sZW5ndGggJiYgbGhzS2V5LmV2ZXJ5KChsLCBpKSA9PiBsID09PSByaHNLZXlbaV0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBjdXJyZW50IHR5cGUgaXMgSmF2YVNjcmlwdC1lcXVhbCB0byB0aGUgUkhTIHR5cGVcbiAgICpcbiAgICogU2FtZSBhcyBub3JtYWwgZXF1YWxpdHksIGJ1dCBjb25zaWRlciBgaW50ZWdlcmAgYW5kIGBudW1iZXJgIHRoZSBzYW1lIHR5cGVzLlxuICAgKi9cbiAgcHVibGljIGphdmFzY3JpcHRFcXVhbHMocmhzOiBQcm9wZXJ0eVR5cGUpOiBib29sZWFuIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICAgIC8vIFdpZGVuaW5nXG4gICAgICAgIHJldHVybiByaHMudHlwZSA9PT0gJ2ludGVnZXInIHx8IHJocy50eXBlID09PSAnbnVtYmVyJztcblxuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIHJocy50eXBlID09PSB0aGlzLnR5cGUudHlwZSAmJiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuamF2YXNjcmlwdEVxdWFscyhyaHMuZWxlbWVudCk7XG5cbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgaWYgKHJocy50eXBlICE9PSAndW5pb24nKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICAgIC8vIEV2ZXJ5IHR5cGUgaW4gdGhpcyB1bmlvbiBuZWVkcyB0byBiZSBlcXVhbCBvbmUgdHlwZSBpbiBSSFNcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50eXBlcy5ldmVyeSgodDEpID0+IHJocy50eXBlcy5zb21lKCh0MikgPT4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUodDEpLmphdmFzY3JpcHRFcXVhbHModDIpKSk7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIC8vIEZvciBhbnl0aGluZyBlbHNlLCBuZWVkIHN0cmljdCBlcXVhbGl0eVxuICAgICAgICByZXR1cm4gdGhpcy5lcXVhbHMocmhzKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGUgY3VycmVudCB0eXBlIGlzIGFzc2lnbmFibGUgdG8gdGhlIFJIUyB0eXBlLlxuICAgKlxuICAgKiBUaGlzIGlzIG1lYW5zIGV2ZXJ5IHR5cGUgbWVtYmVyIG9mIHRoZSBMSFMgbXVzdCBiZSBwcmVzZW50IGluIHRoZSBSSFMgdHlwZVxuICAgKi9cbiAgcHVibGljIGFzc2lnbmFibGVUbyhyaHM6IFByb3BlcnR5VHlwZSk6IGJvb2xlYW4ge1xuICAgIGNvbnN0IGV4dHJhY3RNZW1iZXJzID0gKHR5cGU6IFByb3BlcnR5VHlwZSk6IFByb3BlcnR5VHlwZVtdID0+ICh0eXBlLnR5cGUgPT0gJ3VuaW9uJyA/IHR5cGUudHlwZXMgOiBbdHlwZV0pO1xuICAgIGNvbnN0IGFzUmljaFR5cGUgPSAodHlwZTogUHJvcGVydHlUeXBlKTogUmljaFByb3BlcnR5VHlwZSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0eXBlKTtcblxuICAgIGNvbnN0IHJoc01lbWJlcnMgPSBleHRyYWN0TWVtYmVycyhyaHMpO1xuICAgIGZvciAoY29uc3QgbGhzTWVtYmVyIG9mIGV4dHJhY3RNZW1iZXJzKHRoaXMudHlwZSkubWFwKGFzUmljaFR5cGUpKSB7XG4gICAgICBpZiAoIXJoc01lbWJlcnMuc29tZSgodHlwZSkgPT4gbGhzTWVtYmVyLmVxdWFscyh0eXBlKSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHZlcnNpb24gb2YgdGhpcyB0eXBlLCBidXQgd2l0aCBhbGwgdHlwZSB1bmlvbnMgaW4gYSByZWd1bGFyaXplZCBvcmRlclxuICAgKi9cbiAgcHVibGljIG5vcm1hbGl6ZShkYjogU3BlY0RhdGFiYXNlKTogUmljaFByb3BlcnR5VHlwZSB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnYXJyYXknOlxuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIG5ldyBSaWNoUHJvcGVydHlUeXBlKHtcbiAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUudHlwZSxcbiAgICAgICAgICBlbGVtZW50OiBuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkubm9ybWFsaXplKGRiKS50eXBlLFxuICAgICAgICB9KTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgY29uc3QgdHlwZXMgPSB0aGlzLnR5cGUudHlwZXNcbiAgICAgICAgICAubWFwKCh0KSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0KS5ub3JtYWxpemUoZGIpKVxuICAgICAgICAgIC5tYXAoKHQpID0+IFt0LCB0LnNvcnRLZXkoZGIpXSBhcyBjb25zdCk7XG4gICAgICAgIHR5cGVzLnNvcnQoc29ydEtleUNvbXBhcmF0b3IoKFtfLCBzb3J0S2V5XSkgPT4gc29ydEtleSkpO1xuICAgICAgICByZXR1cm4gbmV3IFJpY2hQcm9wZXJ0eVR5cGUoe1xuICAgICAgICAgIHR5cGU6ICd1bmlvbicsXG4gICAgICAgICAgdHlwZXM6IHR5cGVzLm1hcCgoW3QsIF9dKSA9PiB0LnR5cGUpLFxuICAgICAgICB9KTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdHJpbmdpZnkoZGI6IFNwZWNEYXRhYmFzZSwgd2l0aElkID0gdHJ1ZSk6IHN0cmluZyB7XG4gICAgc3dpdGNoICh0aGlzLnR5cGUudHlwZSkge1xuICAgICAgY2FzZSAnaW50ZWdlcic6XG4gICAgICBjYXNlICdib29sZWFuJzpcbiAgICAgIGNhc2UgJ2RhdGUtdGltZSc6XG4gICAgICBjYXNlICdqc29uJzpcbiAgICAgIGNhc2UgJ251bGwnOlxuICAgICAgY2FzZSAnbnVtYmVyJzpcbiAgICAgIGNhc2UgJ3N0cmluZyc6XG4gICAgICBjYXNlICd0YWcnOlxuICAgICAgICByZXR1cm4gdGhpcy50eXBlLnR5cGU7XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICAgIHJldHVybiBgQXJyYXk8JHtuZXcgUmljaFByb3BlcnR5VHlwZSh0aGlzLnR5cGUuZWxlbWVudCkuc3RyaW5naWZ5KGRiLCB3aXRoSWQpfT5gO1xuICAgICAgY2FzZSAnbWFwJzpcbiAgICAgICAgcmV0dXJuIGBNYXA8c3RyaW5nLCAke25ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5zdHJpbmdpZnkoZGIsIHdpdGhJZCl9PmA7XG4gICAgICBjYXNlICdyZWYnOlxuICAgICAgICBjb25zdCB0eXBlID0gZGIuZ2V0KCd0eXBlRGVmaW5pdGlvbicsIHRoaXMudHlwZS5yZWZlcmVuY2UpO1xuICAgICAgICByZXR1cm4gd2l0aElkID8gYCR7dHlwZS5uYW1lfSgke3RoaXMudHlwZS5yZWZlcmVuY2UuJHJlZn0pYCA6IHR5cGUubmFtZTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgcmV0dXJuIHRoaXMudHlwZS50eXBlcy5tYXAoKHQpID0+IG5ldyBSaWNoUHJvcGVydHlUeXBlKHQpLnN0cmluZ2lmeShkYiwgd2l0aElkKSkuam9pbignIHwgJyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiBhIHNvcnRhYmxlIGtleSBiYXNlZCBvbiB0aGlzIHR5cGVcbiAgICpcbiAgICogSWYgYSBkYXRhYmFzZSBpcyBnaXZlbiwgdHlwZSBkZWZpbml0aW9ucyB3aWxsIGJlIHNvcnRlZCBiYXNlZCBvbiB0eXBlIG5hbWUsXG4gICAqIG90aGVyd2lzZSBvbiBpZGVudGlmaWVyXG4gICAqL1xuICBwdWJsaWMgc29ydEtleShkYj86IFNwZWNEYXRhYmFzZSk6IHN0cmluZ1tdIHtcbiAgICBzd2l0Y2ggKHRoaXMudHlwZS50eXBlKSB7XG4gICAgICBjYXNlICdpbnRlZ2VyJzpcbiAgICAgIGNhc2UgJ2Jvb2xlYW4nOlxuICAgICAgY2FzZSAnZGF0ZS10aW1lJzpcbiAgICAgIGNhc2UgJ2pzb24nOlxuICAgICAgY2FzZSAnbnVsbCc6XG4gICAgICBjYXNlICdudW1iZXInOlxuICAgICAgY2FzZSAnc3RyaW5nJzpcbiAgICAgIGNhc2UgJ3RhZyc6XG4gICAgICAgIHJldHVybiBbJzAnLCB0aGlzLnR5cGUudHlwZV07XG4gICAgICBjYXNlICdhcnJheSc6XG4gICAgICBjYXNlICdtYXAnOlxuICAgICAgICByZXR1cm4gWycxJywgdGhpcy50eXBlLnR5cGUsIC4uLm5ldyBSaWNoUHJvcGVydHlUeXBlKHRoaXMudHlwZS5lbGVtZW50KS5zb3J0S2V5KGRiKV07XG4gICAgICBjYXNlICdyZWYnOlxuICAgICAgICByZXR1cm4gWycyJywgdGhpcy50eXBlLnR5cGUsIGRiPy5nZXQoJ3R5cGVEZWZpbml0aW9uJywgdGhpcy50eXBlLnJlZmVyZW5jZSk/Lm5hbWUgPz8gdGhpcy50eXBlLnJlZmVyZW5jZS4kcmVmXTtcbiAgICAgIGNhc2UgJ3VuaW9uJzpcbiAgICAgICAgY29uc3QgdHlwZUtleXMgPSB0aGlzLnR5cGUudHlwZXMubWFwKCh0KSA9PiBuZXcgUmljaFByb3BlcnR5VHlwZSh0KS5zb3J0S2V5KGRiKSk7XG4gICAgICAgIHR5cGVLZXlzLnNvcnQoc29ydEtleUNvbXBhcmF0b3IoKHgpID0+IHgpKTtcbiAgICAgICAgcmV0dXJuIFsnMycsIHRoaXMudHlwZS50eXBlLCAuLi50eXBlS2V5cy5mbGF0TWFwKCh4KSA9PiB4KV07XG4gICAgfVxuICB9XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sortKeyComparator = void 0;\n/**\n * Make a sorting comparator that will sort by a given sort key\n */\nfunction sortKeyComparator(keyFn) {\n return (a, b) => {\n const ak = keyFn(a);\n const bk = keyFn(b);\n for (let i = 0; i < ak.length && i < bk.length; i++) {\n const av = ak[i];\n const bv = bk[i];\n let diff = 0;\n if (typeof av === 'number' && typeof bv === 'number') {\n diff = av - bv;\n }\n else if (typeof av === 'string' && typeof bv === 'string') {\n diff = av.localeCompare(bv);\n }\n if (diff !== 0) {\n return diff;\n }\n }\n return bk.length - ak.length;\n };\n}\nexports.sortKeyComparator = sortKeyComparator;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3NvcnRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxTQUFnQixpQkFBaUIsQ0FBSSxLQUF1QztJQUMxRSxPQUFPLENBQUMsQ0FBSSxFQUFFLENBQUksRUFBVSxFQUFFO1FBQzVCLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNwQixNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFcEIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDbkQsTUFBTSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pCLE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUVqQixJQUFJLElBQUksR0FBRyxDQUFDLENBQUM7WUFDYixJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQUU7Z0JBQ3BELElBQUksR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO2FBQ2hCO2lCQUFNLElBQUksT0FBTyxFQUFFLEtBQUssUUFBUSxJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsRUFBRTtnQkFDM0QsSUFBSSxHQUFHLEVBQUUsQ0FBQyxhQUFhLENBQUMsRUFBRSxDQUFDLENBQUM7YUFDN0I7WUFFRCxJQUFJLElBQUksS0FBSyxDQUFDLEVBQUU7Z0JBQ2QsT0FBTyxJQUFJLENBQUM7YUFDYjtTQUNGO1FBRUQsT0FBTyxFQUFFLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDL0IsQ0FBQyxDQUFDO0FBQ0osQ0FBQztBQXZCRCw4Q0F1QkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIE1ha2UgYSBzb3J0aW5nIGNvbXBhcmF0b3IgdGhhdCB3aWxsIHNvcnQgYnkgYSBnaXZlbiBzb3J0IGtleVxuICovXG5leHBvcnQgZnVuY3Rpb24gc29ydEtleUNvbXBhcmF0b3I8QT4oa2V5Rm46ICh4OiBBKSA9PiBBcnJheTxzdHJpbmcgfCBudW1iZXI+KSB7XG4gIHJldHVybiAoYTogQSwgYjogQSk6IG51bWJlciA9PiB7XG4gICAgY29uc3QgYWsgPSBrZXlGbihhKTtcbiAgICBjb25zdCBiayA9IGtleUZuKGIpO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhay5sZW5ndGggJiYgaSA8IGJrLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBhdiA9IGFrW2ldO1xuICAgICAgY29uc3QgYnYgPSBia1tpXTtcblxuICAgICAgbGV0IGRpZmYgPSAwO1xuICAgICAgaWYgKHR5cGVvZiBhdiA9PT0gJ251bWJlcicgJiYgdHlwZW9mIGJ2ID09PSAnbnVtYmVyJykge1xuICAgICAgICBkaWZmID0gYXYgLSBidjtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGF2ID09PSAnc3RyaW5nJyAmJiB0eXBlb2YgYnYgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGRpZmYgPSBhdi5sb2NhbGVDb21wYXJlKGJ2KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGRpZmYgIT09IDApIHtcbiAgICAgICAgcmV0dXJuIGRpZmY7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGJrLmxlbmd0aCAtIGFrLmxlbmd0aDtcbiAgfTtcbn1cbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveHttpAuthSchemeConfig = exports.defaultCloudFormationHttpAuthSchemeProvider = exports.defaultCloudFormationHttpAuthSchemeParametersProvider = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_middleware_1 = require(\"@smithy/util-middleware\");\nconst defaultCloudFormationHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: (0, util_middleware_1.getSmithyContext)(context).operation,\n region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) ||\n (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nexports.defaultCloudFormationHttpAuthSchemeParametersProvider = defaultCloudFormationHttpAuthSchemeParametersProvider;\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"cloudformation\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nconst defaultCloudFormationHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nexports.defaultCloudFormationHttpAuthSchemeProvider = defaultCloudFormationHttpAuthSchemeProvider;\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = (0, core_1.resolveAwsSdkSigV4Config)(config);\n return {\n ...config_0,\n };\n};\nexports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultEndpointResolver = void 0;\nconst util_endpoints_1 = require(\"@aws-sdk/util-endpoints\");\nconst util_endpoints_2 = require(\"@smithy/util-endpoints\");\nconst ruleset_1 = require(\"./ruleset\");\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n });\n};\nexports.defaultEndpointResolver = defaultEndpointResolver;\nutil_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ruleSet = void 0;\nconst u = \"required\", v = \"fn\", w = \"argv\", x = \"ref\";\nconst a = true, b = \"isSet\", c = \"booleanEquals\", d = \"error\", e = \"endpoint\", f = \"tree\", g = \"PartitionResult\", h = \"getAttr\", i = { [u]: false, \"type\": \"String\" }, j = { [u]: true, \"default\": false, \"type\": \"Boolean\" }, k = { [x]: \"Endpoint\" }, l = { [v]: c, [w]: [{ [x]: \"UseFIPS\" }, true] }, m = { [v]: c, [w]: [{ [x]: \"UseDualStack\" }, true] }, n = {}, o = { [v]: h, [w]: [{ [x]: g }, \"supportsFIPS\"] }, p = { [x]: g }, q = { [v]: c, [w]: [true, { [v]: h, [w]: [p, \"supportsDualStack\"] }] }, r = [l], s = [m], t = [{ [x]: \"Region\" }];\nconst _data = { version: \"1.0\", parameters: { Region: i, UseDualStack: j, UseFIPS: j, Endpoint: i }, rules: [{ conditions: [{ [v]: b, [w]: [k] }], rules: [{ conditions: r, error: \"Invalid Configuration: FIPS and custom endpoint are not supported\", type: d }, { conditions: s, error: \"Invalid Configuration: Dualstack and custom endpoint are not supported\", type: d }, { endpoint: { url: k, properties: n, headers: n }, type: e }], type: f }, { conditions: [{ [v]: b, [w]: t }], rules: [{ conditions: [{ [v]: \"aws.partition\", [w]: t, assign: g }], rules: [{ conditions: [l, m], rules: [{ conditions: [{ [v]: c, [w]: [a, o] }, q], rules: [{ endpoint: { url: \"https://cloudformation-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"FIPS and DualStack are enabled, but this partition does not support one or both\", type: d }], type: f }, { conditions: r, rules: [{ conditions: [{ [v]: c, [w]: [o, a] }], rules: [{ conditions: [{ [v]: \"stringEquals\", [w]: [{ [v]: h, [w]: [p, \"name\"] }, \"aws-us-gov\"] }], endpoint: { url: \"https://cloudformation.{Region}.amazonaws.com\", properties: n, headers: n }, type: e }, { endpoint: { url: \"https://cloudformation-fips.{Region}.{PartitionResult#dnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"FIPS is enabled but this partition does not support FIPS\", type: d }], type: f }, { conditions: s, rules: [{ conditions: [q], rules: [{ endpoint: { url: \"https://cloudformation.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"DualStack is enabled but this partition does not support DualStack\", type: d }], type: f }, { endpoint: { url: \"https://cloudformation.{Region}.{PartitionResult#dnsSuffix}\", properties: n, headers: n }, type: e }], type: f }], type: f }, { error: \"Invalid Configuration: Missing Region\", type: d }] };\nexports.ruleSet = _data;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AccountFilterType: () => AccountFilterType,\n AccountGateStatus: () => AccountGateStatus,\n ActivateOrganizationsAccessCommand: () => ActivateOrganizationsAccessCommand,\n ActivateTypeCommand: () => ActivateTypeCommand,\n AlreadyExistsException: () => AlreadyExistsException,\n AttributeChangeType: () => AttributeChangeType,\n BatchDescribeTypeConfigurationsCommand: () => BatchDescribeTypeConfigurationsCommand,\n CFNRegistryException: () => CFNRegistryException,\n CallAs: () => CallAs,\n CancelUpdateStackCommand: () => CancelUpdateStackCommand,\n Capability: () => Capability,\n Category: () => Category,\n ChangeAction: () => ChangeAction,\n ChangeSetHooksStatus: () => ChangeSetHooksStatus,\n ChangeSetNotFoundException: () => ChangeSetNotFoundException,\n ChangeSetStatus: () => ChangeSetStatus,\n ChangeSetType: () => ChangeSetType,\n ChangeSource: () => ChangeSource,\n ChangeType: () => ChangeType,\n CloudFormation: () => CloudFormation,\n CloudFormationClient: () => CloudFormationClient,\n CloudFormationServiceException: () => CloudFormationServiceException,\n ConcurrencyMode: () => ConcurrencyMode,\n ConcurrentResourcesLimitExceededException: () => ConcurrentResourcesLimitExceededException,\n ContinueUpdateRollbackCommand: () => ContinueUpdateRollbackCommand,\n CreateChangeSetCommand: () => CreateChangeSetCommand,\n CreateGeneratedTemplateCommand: () => CreateGeneratedTemplateCommand,\n CreateStackCommand: () => CreateStackCommand,\n CreateStackInstancesCommand: () => CreateStackInstancesCommand,\n CreateStackSetCommand: () => CreateStackSetCommand,\n CreatedButModifiedException: () => CreatedButModifiedException,\n DeactivateOrganizationsAccessCommand: () => DeactivateOrganizationsAccessCommand,\n DeactivateTypeCommand: () => DeactivateTypeCommand,\n DeleteChangeSetCommand: () => DeleteChangeSetCommand,\n DeleteGeneratedTemplateCommand: () => DeleteGeneratedTemplateCommand,\n DeleteStackCommand: () => DeleteStackCommand,\n DeleteStackInstancesCommand: () => DeleteStackInstancesCommand,\n DeleteStackSetCommand: () => DeleteStackSetCommand,\n DeprecatedStatus: () => DeprecatedStatus,\n DeregisterTypeCommand: () => DeregisterTypeCommand,\n DescribeAccountLimitsCommand: () => DescribeAccountLimitsCommand,\n DescribeChangeSetCommand: () => DescribeChangeSetCommand,\n DescribeChangeSetHooksCommand: () => DescribeChangeSetHooksCommand,\n DescribeGeneratedTemplateCommand: () => DescribeGeneratedTemplateCommand,\n DescribeOrganizationsAccessCommand: () => DescribeOrganizationsAccessCommand,\n DescribePublisherCommand: () => DescribePublisherCommand,\n DescribeResourceScanCommand: () => DescribeResourceScanCommand,\n DescribeStackDriftDetectionStatusCommand: () => DescribeStackDriftDetectionStatusCommand,\n DescribeStackEventsCommand: () => DescribeStackEventsCommand,\n DescribeStackInstanceCommand: () => DescribeStackInstanceCommand,\n DescribeStackResourceCommand: () => DescribeStackResourceCommand,\n DescribeStackResourceDriftsCommand: () => DescribeStackResourceDriftsCommand,\n DescribeStackResourcesCommand: () => DescribeStackResourcesCommand,\n DescribeStackSetCommand: () => DescribeStackSetCommand,\n DescribeStackSetOperationCommand: () => DescribeStackSetOperationCommand,\n DescribeStacksCommand: () => DescribeStacksCommand,\n DescribeTypeCommand: () => DescribeTypeCommand,\n DescribeTypeRegistrationCommand: () => DescribeTypeRegistrationCommand,\n DetailedStatus: () => DetailedStatus,\n DetectStackDriftCommand: () => DetectStackDriftCommand,\n DetectStackResourceDriftCommand: () => DetectStackResourceDriftCommand,\n DetectStackSetDriftCommand: () => DetectStackSetDriftCommand,\n DifferenceType: () => DifferenceType,\n EstimateTemplateCostCommand: () => EstimateTemplateCostCommand,\n EvaluationType: () => EvaluationType,\n ExecuteChangeSetCommand: () => ExecuteChangeSetCommand,\n ExecutionStatus: () => ExecutionStatus,\n GeneratedTemplateDeletionPolicy: () => GeneratedTemplateDeletionPolicy,\n GeneratedTemplateNotFoundException: () => GeneratedTemplateNotFoundException,\n GeneratedTemplateResourceStatus: () => GeneratedTemplateResourceStatus,\n GeneratedTemplateStatus: () => GeneratedTemplateStatus,\n GeneratedTemplateUpdateReplacePolicy: () => GeneratedTemplateUpdateReplacePolicy,\n GetGeneratedTemplateCommand: () => GetGeneratedTemplateCommand,\n GetStackPolicyCommand: () => GetStackPolicyCommand,\n GetTemplateCommand: () => GetTemplateCommand,\n GetTemplateSummaryCommand: () => GetTemplateSummaryCommand,\n HandlerErrorCode: () => HandlerErrorCode,\n HookFailureMode: () => HookFailureMode,\n HookInvocationPoint: () => HookInvocationPoint,\n HookStatus: () => HookStatus,\n HookTargetType: () => HookTargetType,\n IdentityProvider: () => IdentityProvider,\n ImportStacksToStackSetCommand: () => ImportStacksToStackSetCommand,\n InsufficientCapabilitiesException: () => InsufficientCapabilitiesException,\n InvalidChangeSetStatusException: () => InvalidChangeSetStatusException,\n InvalidOperationException: () => InvalidOperationException,\n InvalidStateTransitionException: () => InvalidStateTransitionException,\n LimitExceededException: () => LimitExceededException,\n ListChangeSetsCommand: () => ListChangeSetsCommand,\n ListExportsCommand: () => ListExportsCommand,\n ListGeneratedTemplatesCommand: () => ListGeneratedTemplatesCommand,\n ListImportsCommand: () => ListImportsCommand,\n ListResourceScanRelatedResourcesCommand: () => ListResourceScanRelatedResourcesCommand,\n ListResourceScanResourcesCommand: () => ListResourceScanResourcesCommand,\n ListResourceScansCommand: () => ListResourceScansCommand,\n ListStackInstanceResourceDriftsCommand: () => ListStackInstanceResourceDriftsCommand,\n ListStackInstancesCommand: () => ListStackInstancesCommand,\n ListStackResourcesCommand: () => ListStackResourcesCommand,\n ListStackSetAutoDeploymentTargetsCommand: () => ListStackSetAutoDeploymentTargetsCommand,\n ListStackSetOperationResultsCommand: () => ListStackSetOperationResultsCommand,\n ListStackSetOperationsCommand: () => ListStackSetOperationsCommand,\n ListStackSetsCommand: () => ListStackSetsCommand,\n ListStacksCommand: () => ListStacksCommand,\n ListTypeRegistrationsCommand: () => ListTypeRegistrationsCommand,\n ListTypeVersionsCommand: () => ListTypeVersionsCommand,\n ListTypesCommand: () => ListTypesCommand,\n NameAlreadyExistsException: () => NameAlreadyExistsException,\n OnFailure: () => OnFailure,\n OnStackFailure: () => OnStackFailure,\n OperationIdAlreadyExistsException: () => OperationIdAlreadyExistsException,\n OperationInProgressException: () => OperationInProgressException,\n OperationNotFoundException: () => OperationNotFoundException,\n OperationResultFilterName: () => OperationResultFilterName,\n OperationStatus: () => OperationStatus,\n OperationStatusCheckFailedException: () => OperationStatusCheckFailedException,\n OrganizationStatus: () => OrganizationStatus,\n PermissionModels: () => PermissionModels,\n PolicyAction: () => PolicyAction,\n ProvisioningType: () => ProvisioningType,\n PublishTypeCommand: () => PublishTypeCommand,\n PublisherStatus: () => PublisherStatus,\n RecordHandlerProgressCommand: () => RecordHandlerProgressCommand,\n RegionConcurrencyType: () => RegionConcurrencyType,\n RegisterPublisherCommand: () => RegisterPublisherCommand,\n RegisterTypeCommand: () => RegisterTypeCommand,\n RegistrationStatus: () => RegistrationStatus,\n RegistryType: () => RegistryType,\n Replacement: () => Replacement,\n RequiresRecreation: () => RequiresRecreation,\n ResourceAttribute: () => ResourceAttribute,\n ResourceScanInProgressException: () => ResourceScanInProgressException,\n ResourceScanLimitExceededException: () => ResourceScanLimitExceededException,\n ResourceScanNotFoundException: () => ResourceScanNotFoundException,\n ResourceScanStatus: () => ResourceScanStatus,\n ResourceSignalStatus: () => ResourceSignalStatus,\n ResourceStatus: () => ResourceStatus,\n RollbackStackCommand: () => RollbackStackCommand,\n SetStackPolicyCommand: () => SetStackPolicyCommand,\n SetTypeConfigurationCommand: () => SetTypeConfigurationCommand,\n SetTypeDefaultVersionCommand: () => SetTypeDefaultVersionCommand,\n SignalResourceCommand: () => SignalResourceCommand,\n StackDriftDetectionStatus: () => StackDriftDetectionStatus,\n StackDriftStatus: () => StackDriftStatus,\n StackInstanceDetailedStatus: () => StackInstanceDetailedStatus,\n StackInstanceFilterName: () => StackInstanceFilterName,\n StackInstanceNotFoundException: () => StackInstanceNotFoundException,\n StackInstanceStatus: () => StackInstanceStatus,\n StackNotFoundException: () => StackNotFoundException,\n StackResourceDriftStatus: () => StackResourceDriftStatus,\n StackSetDriftDetectionStatus: () => StackSetDriftDetectionStatus,\n StackSetDriftStatus: () => StackSetDriftStatus,\n StackSetNotEmptyException: () => StackSetNotEmptyException,\n StackSetNotFoundException: () => StackSetNotFoundException,\n StackSetOperationAction: () => StackSetOperationAction,\n StackSetOperationResultStatus: () => StackSetOperationResultStatus,\n StackSetOperationStatus: () => StackSetOperationStatus,\n StackSetStatus: () => StackSetStatus,\n StackStatus: () => StackStatus,\n StaleRequestException: () => StaleRequestException,\n StartResourceScanCommand: () => StartResourceScanCommand,\n StopStackSetOperationCommand: () => StopStackSetOperationCommand,\n TemplateFormat: () => TemplateFormat,\n TemplateStage: () => TemplateStage,\n TestTypeCommand: () => TestTypeCommand,\n ThirdPartyType: () => ThirdPartyType,\n TokenAlreadyExistsException: () => TokenAlreadyExistsException,\n TypeConfigurationNotFoundException: () => TypeConfigurationNotFoundException,\n TypeNotFoundException: () => TypeNotFoundException,\n TypeTestsStatus: () => TypeTestsStatus,\n UpdateGeneratedTemplateCommand: () => UpdateGeneratedTemplateCommand,\n UpdateStackCommand: () => UpdateStackCommand,\n UpdateStackInstancesCommand: () => UpdateStackInstancesCommand,\n UpdateStackSetCommand: () => UpdateStackSetCommand,\n UpdateTerminationProtectionCommand: () => UpdateTerminationProtectionCommand,\n ValidateTemplateCommand: () => ValidateTemplateCommand,\n VersionBump: () => VersionBump,\n Visibility: () => Visibility,\n WarningType: () => WarningType,\n __Client: () => import_smithy_client.Client,\n paginateDescribeAccountLimits: () => paginateDescribeAccountLimits,\n paginateDescribeStackEvents: () => paginateDescribeStackEvents,\n paginateDescribeStackResourceDrifts: () => paginateDescribeStackResourceDrifts,\n paginateDescribeStacks: () => paginateDescribeStacks,\n paginateListChangeSets: () => paginateListChangeSets,\n paginateListExports: () => paginateListExports,\n paginateListGeneratedTemplates: () => paginateListGeneratedTemplates,\n paginateListImports: () => paginateListImports,\n paginateListResourceScanRelatedResources: () => paginateListResourceScanRelatedResources,\n paginateListResourceScanResources: () => paginateListResourceScanResources,\n paginateListResourceScans: () => paginateListResourceScans,\n paginateListStackInstances: () => paginateListStackInstances,\n paginateListStackResources: () => paginateListStackResources,\n paginateListStackSetOperationResults: () => paginateListStackSetOperationResults,\n paginateListStackSetOperations: () => paginateListStackSetOperations,\n paginateListStackSets: () => paginateListStackSets,\n paginateListStacks: () => paginateListStacks,\n paginateListTypeRegistrations: () => paginateListTypeRegistrations,\n paginateListTypeVersions: () => paginateListTypeVersions,\n paginateListTypes: () => paginateListTypes,\n waitForChangeSetCreateComplete: () => waitForChangeSetCreateComplete,\n waitForStackCreateComplete: () => waitForStackCreateComplete,\n waitForStackDeleteComplete: () => waitForStackDeleteComplete,\n waitForStackExists: () => waitForStackExists,\n waitForStackImportComplete: () => waitForStackImportComplete,\n waitForStackRollbackComplete: () => waitForStackRollbackComplete,\n waitForStackUpdateComplete: () => waitForStackUpdateComplete,\n waitForTypeRegistrationComplete: () => waitForTypeRegistrationComplete,\n waitUntilChangeSetCreateComplete: () => waitUntilChangeSetCreateComplete,\n waitUntilStackCreateComplete: () => waitUntilStackCreateComplete,\n waitUntilStackDeleteComplete: () => waitUntilStackDeleteComplete,\n waitUntilStackExists: () => waitUntilStackExists,\n waitUntilStackImportComplete: () => waitUntilStackImportComplete,\n waitUntilStackRollbackComplete: () => waitUntilStackRollbackComplete,\n waitUntilStackUpdateComplete: () => waitUntilStackUpdateComplete,\n waitUntilTypeRegistrationComplete: () => waitUntilTypeRegistrationComplete\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/CloudFormationClient.ts\nvar import_middleware_host_header = require(\"@aws-sdk/middleware-host-header\");\nvar import_middleware_logger = require(\"@aws-sdk/middleware-logger\");\nvar import_middleware_recursion_detection = require(\"@aws-sdk/middleware-recursion-detection\");\nvar import_middleware_user_agent = require(\"@aws-sdk/middleware-user-agent\");\nvar import_config_resolver = require(\"@smithy/config-resolver\");\nvar import_core = require(\"@smithy/core\");\nvar import_middleware_content_length = require(\"@smithy/middleware-content-length\");\nvar import_middleware_endpoint = require(\"@smithy/middleware-endpoint\");\nvar import_middleware_retry = require(\"@smithy/middleware-retry\");\n\nvar import_httpAuthSchemeProvider = require(\"./auth/httpAuthSchemeProvider\");\n\n// src/endpoint/EndpointParameters.ts\nvar resolveClientEndpointParameters = /* @__PURE__ */ __name((options) => {\n return {\n ...options,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"cloudformation\"\n };\n}, \"resolveClientEndpointParameters\");\nvar commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" }\n};\n\n// src/CloudFormationClient.ts\nvar import_runtimeConfig = require(\"././runtimeConfig\");\n\n// src/runtimeExtensions.ts\nvar import_region_config_resolver = require(\"@aws-sdk/region-config-resolver\");\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar import_smithy_client = require(\"@smithy/smithy-client\");\n\n// src/auth/httpAuthExtensionConfiguration.ts\nvar getHttpAuthExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n } else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n }\n };\n}, \"getHttpAuthExtensionConfiguration\");\nvar resolveHttpAuthRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials()\n };\n}, \"resolveHttpAuthRuntimeConfig\");\n\n// src/runtimeExtensions.ts\nvar asPartial = /* @__PURE__ */ __name((t) => t, \"asPartial\");\nvar resolveRuntimeExtensions = /* @__PURE__ */ __name((runtimeConfig, extensions) => {\n const extensionConfiguration = {\n ...asPartial((0, import_region_config_resolver.getAwsRegionExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_smithy_client.getDefaultExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_protocol_http.getHttpHandlerExtensionConfiguration)(runtimeConfig)),\n ...asPartial(getHttpAuthExtensionConfiguration(runtimeConfig))\n };\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return {\n ...runtimeConfig,\n ...(0, import_region_config_resolver.resolveAwsRegionExtensionConfiguration)(extensionConfiguration),\n ...(0, import_smithy_client.resolveDefaultRuntimeConfig)(extensionConfiguration),\n ...(0, import_protocol_http.resolveHttpHandlerRuntimeConfig)(extensionConfiguration),\n ...resolveHttpAuthRuntimeConfig(extensionConfiguration)\n };\n}, \"resolveRuntimeExtensions\");\n\n// src/CloudFormationClient.ts\nvar _CloudFormationClient = class _CloudFormationClient extends import_smithy_client.Client {\n constructor(...[configuration]) {\n const _config_0 = (0, import_runtimeConfig.getRuntimeConfig)(configuration || {});\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = (0, import_config_resolver.resolveRegionConfig)(_config_1);\n const _config_3 = (0, import_middleware_endpoint.resolveEndpointConfig)(_config_2);\n const _config_4 = (0, import_middleware_retry.resolveRetryConfig)(_config_3);\n const _config_5 = (0, import_middleware_host_header.resolveHostHeaderConfig)(_config_4);\n const _config_6 = (0, import_middleware_user_agent.resolveUserAgentConfig)(_config_5);\n const _config_7 = (0, import_httpAuthSchemeProvider.resolveHttpAuthSchemeConfig)(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, (configuration == null ? void 0 : configuration.extensions) || []);\n super(_config_8);\n this.config = _config_8;\n this.middlewareStack.use((0, import_middleware_retry.getRetryPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_content_length.getContentLengthPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_host_header.getHostHeaderPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_logger.getLoggerPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_recursion_detection.getRecursionDetectionPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_user_agent.getUserAgentPlugin)(this.config));\n this.middlewareStack.use(\n (0, import_core.getHttpAuthSchemeEndpointRuleSetPlugin)(this.config, {\n httpAuthSchemeParametersProvider: this.getDefaultHttpAuthSchemeParametersProvider(),\n identityProviderConfigProvider: this.getIdentityProviderConfigProvider()\n })\n );\n this.middlewareStack.use((0, import_core.getHttpSigningPlugin)(this.config));\n }\n /**\n * Destroy underlying resources, like sockets. It's usually not necessary to do this.\n * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed.\n * Otherwise, sockets might stay open for quite a long time before the server terminates them.\n */\n destroy() {\n super.destroy();\n }\n getDefaultHttpAuthSchemeParametersProvider() {\n return import_httpAuthSchemeProvider.defaultCloudFormationHttpAuthSchemeParametersProvider;\n }\n getIdentityProviderConfigProvider() {\n return async (config) => new import_core.DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials\n });\n }\n};\n__name(_CloudFormationClient, \"CloudFormationClient\");\nvar CloudFormationClient = _CloudFormationClient;\n\n// src/CloudFormation.ts\n\n\n// src/commands/ActivateOrganizationsAccessCommand.ts\n\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\n\nvar import_types = require(\"@smithy/types\");\n\n// src/protocols/Aws_query.ts\nvar import_core2 = require(\"@aws-sdk/core\");\n\n\nvar import_uuid = require(\"uuid\");\n\n// src/models/CloudFormationServiceException.ts\n\nvar _CloudFormationServiceException = class _CloudFormationServiceException extends import_smithy_client.ServiceException {\n /**\n * @internal\n */\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, _CloudFormationServiceException.prototype);\n }\n};\n__name(_CloudFormationServiceException, \"CloudFormationServiceException\");\nvar CloudFormationServiceException = _CloudFormationServiceException;\n\n// src/models/models_0.ts\nvar AccountFilterType = {\n DIFFERENCE: \"DIFFERENCE\",\n INTERSECTION: \"INTERSECTION\",\n NONE: \"NONE\",\n UNION: \"UNION\"\n};\nvar AccountGateStatus = {\n FAILED: \"FAILED\",\n SKIPPED: \"SKIPPED\",\n SUCCEEDED: \"SUCCEEDED\"\n};\nvar _InvalidOperationException = class _InvalidOperationException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidOperationException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidOperationException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidOperationException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_InvalidOperationException, \"InvalidOperationException\");\nvar InvalidOperationException = _InvalidOperationException;\nvar _OperationNotFoundException = class _OperationNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"OperationNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"OperationNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _OperationNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_OperationNotFoundException, \"OperationNotFoundException\");\nvar OperationNotFoundException = _OperationNotFoundException;\nvar ThirdPartyType = {\n HOOK: \"HOOK\",\n MODULE: \"MODULE\",\n RESOURCE: \"RESOURCE\"\n};\nvar VersionBump = {\n MAJOR: \"MAJOR\",\n MINOR: \"MINOR\"\n};\nvar _CFNRegistryException = class _CFNRegistryException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"CFNRegistryException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"CFNRegistryException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _CFNRegistryException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_CFNRegistryException, \"CFNRegistryException\");\nvar CFNRegistryException = _CFNRegistryException;\nvar _TypeNotFoundException = class _TypeNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"TypeNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"TypeNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _TypeNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_TypeNotFoundException, \"TypeNotFoundException\");\nvar TypeNotFoundException = _TypeNotFoundException;\nvar _AlreadyExistsException = class _AlreadyExistsException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"AlreadyExistsException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"AlreadyExistsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _AlreadyExistsException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_AlreadyExistsException, \"AlreadyExistsException\");\nvar AlreadyExistsException = _AlreadyExistsException;\nvar AttributeChangeType = {\n Add: \"Add\",\n Modify: \"Modify\",\n Remove: \"Remove\"\n};\nvar _TypeConfigurationNotFoundException = class _TypeConfigurationNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"TypeConfigurationNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"TypeConfigurationNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _TypeConfigurationNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_TypeConfigurationNotFoundException, \"TypeConfigurationNotFoundException\");\nvar TypeConfigurationNotFoundException = _TypeConfigurationNotFoundException;\nvar CallAs = {\n DELEGATED_ADMIN: \"DELEGATED_ADMIN\",\n SELF: \"SELF\"\n};\nvar _TokenAlreadyExistsException = class _TokenAlreadyExistsException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"TokenAlreadyExistsException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"TokenAlreadyExistsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _TokenAlreadyExistsException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_TokenAlreadyExistsException, \"TokenAlreadyExistsException\");\nvar TokenAlreadyExistsException = _TokenAlreadyExistsException;\nvar Capability = {\n CAPABILITY_AUTO_EXPAND: \"CAPABILITY_AUTO_EXPAND\",\n CAPABILITY_IAM: \"CAPABILITY_IAM\",\n CAPABILITY_NAMED_IAM: \"CAPABILITY_NAMED_IAM\"\n};\nvar Category = {\n ACTIVATED: \"ACTIVATED\",\n AWS_TYPES: \"AWS_TYPES\",\n REGISTERED: \"REGISTERED\",\n THIRD_PARTY: \"THIRD_PARTY\"\n};\nvar ChangeAction = {\n Add: \"Add\",\n Dynamic: \"Dynamic\",\n Import: \"Import\",\n Modify: \"Modify\",\n Remove: \"Remove\"\n};\nvar ChangeSource = {\n Automatic: \"Automatic\",\n DirectModification: \"DirectModification\",\n ParameterReference: \"ParameterReference\",\n ResourceAttribute: \"ResourceAttribute\",\n ResourceReference: \"ResourceReference\"\n};\nvar EvaluationType = {\n Dynamic: \"Dynamic\",\n Static: \"Static\"\n};\nvar ResourceAttribute = {\n CreationPolicy: \"CreationPolicy\",\n DeletionPolicy: \"DeletionPolicy\",\n Metadata: \"Metadata\",\n Properties: \"Properties\",\n Tags: \"Tags\",\n UpdatePolicy: \"UpdatePolicy\",\n UpdateReplacePolicy: \"UpdateReplacePolicy\"\n};\nvar RequiresRecreation = {\n Always: \"Always\",\n Conditionally: \"Conditionally\",\n Never: \"Never\"\n};\nvar PolicyAction = {\n Delete: \"Delete\",\n ReplaceAndDelete: \"ReplaceAndDelete\",\n ReplaceAndRetain: \"ReplaceAndRetain\",\n ReplaceAndSnapshot: \"ReplaceAndSnapshot\",\n Retain: \"Retain\",\n Snapshot: \"Snapshot\"\n};\nvar Replacement = {\n Conditional: \"Conditional\",\n False: \"False\",\n True: \"True\"\n};\nvar ChangeType = {\n Resource: \"Resource\"\n};\nvar HookFailureMode = {\n FAIL: \"FAIL\",\n WARN: \"WARN\"\n};\nvar HookInvocationPoint = {\n PRE_PROVISION: \"PRE_PROVISION\"\n};\nvar HookTargetType = {\n RESOURCE: \"RESOURCE\"\n};\nvar ChangeSetHooksStatus = {\n PLANNED: \"PLANNED\",\n PLANNING: \"PLANNING\",\n UNAVAILABLE: \"UNAVAILABLE\"\n};\nvar _ChangeSetNotFoundException = class _ChangeSetNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ChangeSetNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ChangeSetNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ChangeSetNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_ChangeSetNotFoundException, \"ChangeSetNotFoundException\");\nvar ChangeSetNotFoundException = _ChangeSetNotFoundException;\nvar ChangeSetStatus = {\n CREATE_COMPLETE: \"CREATE_COMPLETE\",\n CREATE_IN_PROGRESS: \"CREATE_IN_PROGRESS\",\n CREATE_PENDING: \"CREATE_PENDING\",\n DELETE_COMPLETE: \"DELETE_COMPLETE\",\n DELETE_FAILED: \"DELETE_FAILED\",\n DELETE_IN_PROGRESS: \"DELETE_IN_PROGRESS\",\n DELETE_PENDING: \"DELETE_PENDING\",\n FAILED: \"FAILED\"\n};\nvar ExecutionStatus = {\n AVAILABLE: \"AVAILABLE\",\n EXECUTE_COMPLETE: \"EXECUTE_COMPLETE\",\n EXECUTE_FAILED: \"EXECUTE_FAILED\",\n EXECUTE_IN_PROGRESS: \"EXECUTE_IN_PROGRESS\",\n OBSOLETE: \"OBSOLETE\",\n UNAVAILABLE: \"UNAVAILABLE\"\n};\nvar ChangeSetType = {\n CREATE: \"CREATE\",\n IMPORT: \"IMPORT\",\n UPDATE: \"UPDATE\"\n};\nvar OnStackFailure = {\n DELETE: \"DELETE\",\n DO_NOTHING: \"DO_NOTHING\",\n ROLLBACK: \"ROLLBACK\"\n};\nvar _InsufficientCapabilitiesException = class _InsufficientCapabilitiesException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InsufficientCapabilitiesException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InsufficientCapabilitiesException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InsufficientCapabilitiesException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_InsufficientCapabilitiesException, \"InsufficientCapabilitiesException\");\nvar InsufficientCapabilitiesException = _InsufficientCapabilitiesException;\nvar _LimitExceededException = class _LimitExceededException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"LimitExceededException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"LimitExceededException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _LimitExceededException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_LimitExceededException, \"LimitExceededException\");\nvar LimitExceededException = _LimitExceededException;\nvar _ConcurrentResourcesLimitExceededException = class _ConcurrentResourcesLimitExceededException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ConcurrentResourcesLimitExceededException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ConcurrentResourcesLimitExceededException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ConcurrentResourcesLimitExceededException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_ConcurrentResourcesLimitExceededException, \"ConcurrentResourcesLimitExceededException\");\nvar ConcurrentResourcesLimitExceededException = _ConcurrentResourcesLimitExceededException;\nvar GeneratedTemplateDeletionPolicy = {\n DELETE: \"DELETE\",\n RETAIN: \"RETAIN\"\n};\nvar GeneratedTemplateUpdateReplacePolicy = {\n DELETE: \"DELETE\",\n RETAIN: \"RETAIN\"\n};\nvar OnFailure = {\n DELETE: \"DELETE\",\n DO_NOTHING: \"DO_NOTHING\",\n ROLLBACK: \"ROLLBACK\"\n};\nvar ConcurrencyMode = {\n SOFT_FAILURE_TOLERANCE: \"SOFT_FAILURE_TOLERANCE\",\n STRICT_FAILURE_TOLERANCE: \"STRICT_FAILURE_TOLERANCE\"\n};\nvar RegionConcurrencyType = {\n PARALLEL: \"PARALLEL\",\n SEQUENTIAL: \"SEQUENTIAL\"\n};\nvar _OperationIdAlreadyExistsException = class _OperationIdAlreadyExistsException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"OperationIdAlreadyExistsException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"OperationIdAlreadyExistsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _OperationIdAlreadyExistsException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_OperationIdAlreadyExistsException, \"OperationIdAlreadyExistsException\");\nvar OperationIdAlreadyExistsException = _OperationIdAlreadyExistsException;\nvar _OperationInProgressException = class _OperationInProgressException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"OperationInProgressException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"OperationInProgressException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _OperationInProgressException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_OperationInProgressException, \"OperationInProgressException\");\nvar OperationInProgressException = _OperationInProgressException;\nvar _StackSetNotFoundException = class _StackSetNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"StackSetNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"StackSetNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _StackSetNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_StackSetNotFoundException, \"StackSetNotFoundException\");\nvar StackSetNotFoundException = _StackSetNotFoundException;\nvar _StaleRequestException = class _StaleRequestException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"StaleRequestException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"StaleRequestException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _StaleRequestException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_StaleRequestException, \"StaleRequestException\");\nvar StaleRequestException = _StaleRequestException;\nvar _CreatedButModifiedException = class _CreatedButModifiedException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"CreatedButModifiedException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"CreatedButModifiedException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _CreatedButModifiedException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_CreatedButModifiedException, \"CreatedButModifiedException\");\nvar CreatedButModifiedException = _CreatedButModifiedException;\nvar PermissionModels = {\n SELF_MANAGED: \"SELF_MANAGED\",\n SERVICE_MANAGED: \"SERVICE_MANAGED\"\n};\nvar _NameAlreadyExistsException = class _NameAlreadyExistsException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"NameAlreadyExistsException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"NameAlreadyExistsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _NameAlreadyExistsException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_NameAlreadyExistsException, \"NameAlreadyExistsException\");\nvar NameAlreadyExistsException = _NameAlreadyExistsException;\nvar _InvalidChangeSetStatusException = class _InvalidChangeSetStatusException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidChangeSetStatusException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidChangeSetStatusException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidChangeSetStatusException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_InvalidChangeSetStatusException, \"InvalidChangeSetStatusException\");\nvar InvalidChangeSetStatusException = _InvalidChangeSetStatusException;\nvar _GeneratedTemplateNotFoundException = class _GeneratedTemplateNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"GeneratedTemplateNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"GeneratedTemplateNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _GeneratedTemplateNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_GeneratedTemplateNotFoundException, \"GeneratedTemplateNotFoundException\");\nvar GeneratedTemplateNotFoundException = _GeneratedTemplateNotFoundException;\nvar _StackSetNotEmptyException = class _StackSetNotEmptyException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"StackSetNotEmptyException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"StackSetNotEmptyException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _StackSetNotEmptyException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_StackSetNotEmptyException, \"StackSetNotEmptyException\");\nvar StackSetNotEmptyException = _StackSetNotEmptyException;\nvar RegistryType = {\n HOOK: \"HOOK\",\n MODULE: \"MODULE\",\n RESOURCE: \"RESOURCE\"\n};\nvar GeneratedTemplateResourceStatus = {\n COMPLETE: \"COMPLETE\",\n FAILED: \"FAILED\",\n IN_PROGRESS: \"IN_PROGRESS\",\n PENDING: \"PENDING\"\n};\nvar WarningType = {\n MUTUALLY_EXCLUSIVE_PROPERTIES: \"MUTUALLY_EXCLUSIVE_PROPERTIES\",\n MUTUALLY_EXCLUSIVE_TYPES: \"MUTUALLY_EXCLUSIVE_TYPES\",\n UNSUPPORTED_PROPERTIES: \"UNSUPPORTED_PROPERTIES\"\n};\nvar GeneratedTemplateStatus = {\n COMPLETE: \"COMPLETE\",\n CREATE_IN_PROGRESS: \"CREATE_IN_PROGRESS\",\n CREATE_PENDING: \"CREATE_PENDING\",\n DELETE_IN_PROGRESS: \"DELETE_IN_PROGRESS\",\n DELETE_PENDING: \"DELETE_PENDING\",\n FAILED: \"FAILED\",\n UPDATE_IN_PROGRESS: \"UPDATE_IN_PROGRESS\",\n UPDATE_PENDING: \"UPDATE_PENDING\"\n};\nvar OrganizationStatus = {\n DISABLED: \"DISABLED\",\n DISABLED_PERMANENTLY: \"DISABLED_PERMANENTLY\",\n ENABLED: \"ENABLED\"\n};\nvar IdentityProvider = {\n AWS_Marketplace: \"AWS_Marketplace\",\n Bitbucket: \"Bitbucket\",\n GitHub: \"GitHub\"\n};\nvar PublisherStatus = {\n UNVERIFIED: \"UNVERIFIED\",\n VERIFIED: \"VERIFIED\"\n};\nvar ResourceScanStatus = {\n COMPLETE: \"COMPLETE\",\n EXPIRED: \"EXPIRED\",\n FAILED: \"FAILED\",\n IN_PROGRESS: \"IN_PROGRESS\"\n};\nvar _ResourceScanNotFoundException = class _ResourceScanNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ResourceScanNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ResourceScanNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ResourceScanNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_ResourceScanNotFoundException, \"ResourceScanNotFoundException\");\nvar ResourceScanNotFoundException = _ResourceScanNotFoundException;\nvar StackDriftDetectionStatus = {\n DETECTION_COMPLETE: \"DETECTION_COMPLETE\",\n DETECTION_FAILED: \"DETECTION_FAILED\",\n DETECTION_IN_PROGRESS: \"DETECTION_IN_PROGRESS\"\n};\nvar StackDriftStatus = {\n DRIFTED: \"DRIFTED\",\n IN_SYNC: \"IN_SYNC\",\n NOT_CHECKED: \"NOT_CHECKED\",\n UNKNOWN: \"UNKNOWN\"\n};\nvar DetailedStatus = {\n CONFIGURATION_COMPLETE: \"CONFIGURATION_COMPLETE\",\n VALIDATION_FAILED: \"VALIDATION_FAILED\"\n};\nvar HookStatus = {\n HOOK_COMPLETE_FAILED: \"HOOK_COMPLETE_FAILED\",\n HOOK_COMPLETE_SUCCEEDED: \"HOOK_COMPLETE_SUCCEEDED\",\n HOOK_FAILED: \"HOOK_FAILED\",\n HOOK_IN_PROGRESS: \"HOOK_IN_PROGRESS\"\n};\nvar ResourceStatus = {\n CREATE_COMPLETE: \"CREATE_COMPLETE\",\n CREATE_FAILED: \"CREATE_FAILED\",\n CREATE_IN_PROGRESS: \"CREATE_IN_PROGRESS\",\n DELETE_COMPLETE: \"DELETE_COMPLETE\",\n DELETE_FAILED: \"DELETE_FAILED\",\n DELETE_IN_PROGRESS: \"DELETE_IN_PROGRESS\",\n DELETE_SKIPPED: \"DELETE_SKIPPED\",\n IMPORT_COMPLETE: \"IMPORT_COMPLETE\",\n IMPORT_FAILED: \"IMPORT_FAILED\",\n IMPORT_IN_PROGRESS: \"IMPORT_IN_PROGRESS\",\n IMPORT_ROLLBACK_COMPLETE: \"IMPORT_ROLLBACK_COMPLETE\",\n IMPORT_ROLLBACK_FAILED: \"IMPORT_ROLLBACK_FAILED\",\n IMPORT_ROLLBACK_IN_PROGRESS: \"IMPORT_ROLLBACK_IN_PROGRESS\",\n ROLLBACK_COMPLETE: \"ROLLBACK_COMPLETE\",\n ROLLBACK_FAILED: \"ROLLBACK_FAILED\",\n ROLLBACK_IN_PROGRESS: \"ROLLBACK_IN_PROGRESS\",\n UPDATE_COMPLETE: \"UPDATE_COMPLETE\",\n UPDATE_FAILED: \"UPDATE_FAILED\",\n UPDATE_IN_PROGRESS: \"UPDATE_IN_PROGRESS\",\n UPDATE_ROLLBACK_COMPLETE: \"UPDATE_ROLLBACK_COMPLETE\",\n UPDATE_ROLLBACK_FAILED: \"UPDATE_ROLLBACK_FAILED\",\n UPDATE_ROLLBACK_IN_PROGRESS: \"UPDATE_ROLLBACK_IN_PROGRESS\"\n};\nvar StackInstanceDetailedStatus = {\n CANCELLED: \"CANCELLED\",\n FAILED: \"FAILED\",\n FAILED_IMPORT: \"FAILED_IMPORT\",\n INOPERABLE: \"INOPERABLE\",\n PENDING: \"PENDING\",\n RUNNING: \"RUNNING\",\n SKIPPED_SUSPENDED_ACCOUNT: \"SKIPPED_SUSPENDED_ACCOUNT\",\n SUCCEEDED: \"SUCCEEDED\"\n};\nvar StackInstanceStatus = {\n CURRENT: \"CURRENT\",\n INOPERABLE: \"INOPERABLE\",\n OUTDATED: \"OUTDATED\"\n};\nvar _StackInstanceNotFoundException = class _StackInstanceNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"StackInstanceNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"StackInstanceNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _StackInstanceNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_StackInstanceNotFoundException, \"StackInstanceNotFoundException\");\nvar StackInstanceNotFoundException = _StackInstanceNotFoundException;\nvar StackResourceDriftStatus = {\n DELETED: \"DELETED\",\n IN_SYNC: \"IN_SYNC\",\n MODIFIED: \"MODIFIED\",\n NOT_CHECKED: \"NOT_CHECKED\"\n};\nvar DifferenceType = {\n ADD: \"ADD\",\n NOT_EQUAL: \"NOT_EQUAL\",\n REMOVE: \"REMOVE\"\n};\nvar StackStatus = {\n CREATE_COMPLETE: \"CREATE_COMPLETE\",\n CREATE_FAILED: \"CREATE_FAILED\",\n CREATE_IN_PROGRESS: \"CREATE_IN_PROGRESS\",\n DELETE_COMPLETE: \"DELETE_COMPLETE\",\n DELETE_FAILED: \"DELETE_FAILED\",\n DELETE_IN_PROGRESS: \"DELETE_IN_PROGRESS\",\n IMPORT_COMPLETE: \"IMPORT_COMPLETE\",\n IMPORT_IN_PROGRESS: \"IMPORT_IN_PROGRESS\",\n IMPORT_ROLLBACK_COMPLETE: \"IMPORT_ROLLBACK_COMPLETE\",\n IMPORT_ROLLBACK_FAILED: \"IMPORT_ROLLBACK_FAILED\",\n IMPORT_ROLLBACK_IN_PROGRESS: \"IMPORT_ROLLBACK_IN_PROGRESS\",\n REVIEW_IN_PROGRESS: \"REVIEW_IN_PROGRESS\",\n ROLLBACK_COMPLETE: \"ROLLBACK_COMPLETE\",\n ROLLBACK_FAILED: \"ROLLBACK_FAILED\",\n ROLLBACK_IN_PROGRESS: \"ROLLBACK_IN_PROGRESS\",\n UPDATE_COMPLETE: \"UPDATE_COMPLETE\",\n UPDATE_COMPLETE_CLEANUP_IN_PROGRESS: \"UPDATE_COMPLETE_CLEANUP_IN_PROGRESS\",\n UPDATE_FAILED: \"UPDATE_FAILED\",\n UPDATE_IN_PROGRESS: \"UPDATE_IN_PROGRESS\",\n UPDATE_ROLLBACK_COMPLETE: \"UPDATE_ROLLBACK_COMPLETE\",\n UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS: \"UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS\",\n UPDATE_ROLLBACK_FAILED: \"UPDATE_ROLLBACK_FAILED\",\n UPDATE_ROLLBACK_IN_PROGRESS: \"UPDATE_ROLLBACK_IN_PROGRESS\"\n};\nvar StackSetDriftDetectionStatus = {\n COMPLETED: \"COMPLETED\",\n FAILED: \"FAILED\",\n IN_PROGRESS: \"IN_PROGRESS\",\n PARTIAL_SUCCESS: \"PARTIAL_SUCCESS\",\n STOPPED: \"STOPPED\"\n};\nvar StackSetDriftStatus = {\n DRIFTED: \"DRIFTED\",\n IN_SYNC: \"IN_SYNC\",\n NOT_CHECKED: \"NOT_CHECKED\"\n};\nvar StackSetStatus = {\n ACTIVE: \"ACTIVE\",\n DELETED: \"DELETED\"\n};\nvar StackSetOperationAction = {\n CREATE: \"CREATE\",\n DELETE: \"DELETE\",\n DETECT_DRIFT: \"DETECT_DRIFT\",\n UPDATE: \"UPDATE\"\n};\nvar StackSetOperationStatus = {\n FAILED: \"FAILED\",\n QUEUED: \"QUEUED\",\n RUNNING: \"RUNNING\",\n STOPPED: \"STOPPED\",\n STOPPING: \"STOPPING\",\n SUCCEEDED: \"SUCCEEDED\"\n};\nvar DeprecatedStatus = {\n DEPRECATED: \"DEPRECATED\",\n LIVE: \"LIVE\"\n};\nvar ProvisioningType = {\n FULLY_MUTABLE: \"FULLY_MUTABLE\",\n IMMUTABLE: \"IMMUTABLE\",\n NON_PROVISIONABLE: \"NON_PROVISIONABLE\"\n};\nvar TypeTestsStatus = {\n FAILED: \"FAILED\",\n IN_PROGRESS: \"IN_PROGRESS\",\n NOT_TESTED: \"NOT_TESTED\",\n PASSED: \"PASSED\"\n};\nvar Visibility = {\n PRIVATE: \"PRIVATE\",\n PUBLIC: \"PUBLIC\"\n};\nvar RegistrationStatus = {\n COMPLETE: \"COMPLETE\",\n FAILED: \"FAILED\",\n IN_PROGRESS: \"IN_PROGRESS\"\n};\nvar TemplateFormat = {\n JSON: \"JSON\",\n YAML: \"YAML\"\n};\nvar TemplateStage = {\n Original: \"Original\",\n Processed: \"Processed\"\n};\nvar _StackNotFoundException = class _StackNotFoundException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"StackNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"StackNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _StackNotFoundException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_StackNotFoundException, \"StackNotFoundException\");\nvar StackNotFoundException = _StackNotFoundException;\nvar _ResourceScanInProgressException = class _ResourceScanInProgressException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ResourceScanInProgressException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ResourceScanInProgressException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ResourceScanInProgressException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_ResourceScanInProgressException, \"ResourceScanInProgressException\");\nvar ResourceScanInProgressException = _ResourceScanInProgressException;\nvar StackInstanceFilterName = {\n DETAILED_STATUS: \"DETAILED_STATUS\",\n DRIFT_STATUS: \"DRIFT_STATUS\",\n LAST_OPERATION_ID: \"LAST_OPERATION_ID\"\n};\nvar OperationResultFilterName = {\n OPERATION_RESULT_STATUS: \"OPERATION_RESULT_STATUS\"\n};\nvar StackSetOperationResultStatus = {\n CANCELLED: \"CANCELLED\",\n FAILED: \"FAILED\",\n PENDING: \"PENDING\",\n RUNNING: \"RUNNING\",\n SUCCEEDED: \"SUCCEEDED\"\n};\nvar _InvalidStateTransitionException = class _InvalidStateTransitionException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidStateTransitionException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidStateTransitionException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidStateTransitionException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_InvalidStateTransitionException, \"InvalidStateTransitionException\");\nvar InvalidStateTransitionException = _InvalidStateTransitionException;\nvar _OperationStatusCheckFailedException = class _OperationStatusCheckFailedException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"OperationStatusCheckFailedException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"OperationStatusCheckFailedException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _OperationStatusCheckFailedException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_OperationStatusCheckFailedException, \"OperationStatusCheckFailedException\");\nvar OperationStatusCheckFailedException = _OperationStatusCheckFailedException;\nvar OperationStatus = {\n FAILED: \"FAILED\",\n IN_PROGRESS: \"IN_PROGRESS\",\n PENDING: \"PENDING\",\n SUCCESS: \"SUCCESS\"\n};\nvar HandlerErrorCode = {\n AccessDenied: \"AccessDenied\",\n AlreadyExists: \"AlreadyExists\",\n GeneralServiceException: \"GeneralServiceException\",\n HandlerInternalFailure: \"HandlerInternalFailure\",\n InternalFailure: \"InternalFailure\",\n InvalidCredentials: \"InvalidCredentials\",\n InvalidRequest: \"InvalidRequest\",\n InvalidTypeConfiguration: \"InvalidTypeConfiguration\",\n NetworkFailure: \"NetworkFailure\",\n NonCompliant: \"NonCompliant\",\n NotFound: \"NotFound\",\n NotUpdatable: \"NotUpdatable\",\n ResourceConflict: \"ResourceConflict\",\n ServiceInternalError: \"ServiceInternalError\",\n ServiceLimitExceeded: \"ServiceLimitExceeded\",\n ServiceTimeout: \"NotStabilized\",\n Throttling: \"Throttling\",\n Unknown: \"Unknown\",\n UnsupportedTarget: \"UnsupportedTarget\"\n};\n\n// src/models/models_1.ts\nvar ResourceSignalStatus = {\n FAILURE: \"FAILURE\",\n SUCCESS: \"SUCCESS\"\n};\nvar _ResourceScanLimitExceededException = class _ResourceScanLimitExceededException extends CloudFormationServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ResourceScanLimitExceededException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ResourceScanLimitExceededException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ResourceScanLimitExceededException.prototype);\n this.Message = opts.Message;\n }\n};\n__name(_ResourceScanLimitExceededException, \"ResourceScanLimitExceededException\");\nvar ResourceScanLimitExceededException = _ResourceScanLimitExceededException;\n\n// src/protocols/Aws_query.ts\nvar se_ActivateOrganizationsAccessCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ActivateOrganizationsAccessInput(input, context),\n [_A]: _AOA,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ActivateOrganizationsAccessCommand\");\nvar se_ActivateTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ActivateTypeInput(input, context),\n [_A]: _AT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ActivateTypeCommand\");\nvar se_BatchDescribeTypeConfigurationsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_BatchDescribeTypeConfigurationsInput(input, context),\n [_A]: _BDTC,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_BatchDescribeTypeConfigurationsCommand\");\nvar se_CancelUpdateStackCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_CancelUpdateStackInput(input, context),\n [_A]: _CUS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CancelUpdateStackCommand\");\nvar se_ContinueUpdateRollbackCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ContinueUpdateRollbackInput(input, context),\n [_A]: _CUR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ContinueUpdateRollbackCommand\");\nvar se_CreateChangeSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_CreateChangeSetInput(input, context),\n [_A]: _CCS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CreateChangeSetCommand\");\nvar se_CreateGeneratedTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_CreateGeneratedTemplateInput(input, context),\n [_A]: _CGT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CreateGeneratedTemplateCommand\");\nvar se_CreateStackCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_CreateStackInput(input, context),\n [_A]: _CS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CreateStackCommand\");\nvar se_CreateStackInstancesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_CreateStackInstancesInput(input, context),\n [_A]: _CSI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CreateStackInstancesCommand\");\nvar se_CreateStackSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_CreateStackSetInput(input, context),\n [_A]: _CSS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CreateStackSetCommand\");\nvar se_DeactivateOrganizationsAccessCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeactivateOrganizationsAccessInput(input, context),\n [_A]: _DOA,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeactivateOrganizationsAccessCommand\");\nvar se_DeactivateTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeactivateTypeInput(input, context),\n [_A]: _DT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeactivateTypeCommand\");\nvar se_DeleteChangeSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeleteChangeSetInput(input, context),\n [_A]: _DCS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteChangeSetCommand\");\nvar se_DeleteGeneratedTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeleteGeneratedTemplateInput(input, context),\n [_A]: _DGT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteGeneratedTemplateCommand\");\nvar se_DeleteStackCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeleteStackInput(input, context),\n [_A]: _DS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteStackCommand\");\nvar se_DeleteStackInstancesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeleteStackInstancesInput(input, context),\n [_A]: _DSI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteStackInstancesCommand\");\nvar se_DeleteStackSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeleteStackSetInput(input, context),\n [_A]: _DSS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteStackSetCommand\");\nvar se_DeregisterTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DeregisterTypeInput(input, context),\n [_A]: _DTe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeregisterTypeCommand\");\nvar se_DescribeAccountLimitsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeAccountLimitsInput(input, context),\n [_A]: _DAL,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeAccountLimitsCommand\");\nvar se_DescribeChangeSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeChangeSetInput(input, context),\n [_A]: _DCSe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeChangeSetCommand\");\nvar se_DescribeChangeSetHooksCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeChangeSetHooksInput(input, context),\n [_A]: _DCSH,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeChangeSetHooksCommand\");\nvar se_DescribeGeneratedTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeGeneratedTemplateInput(input, context),\n [_A]: _DGTe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeGeneratedTemplateCommand\");\nvar se_DescribeOrganizationsAccessCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeOrganizationsAccessInput(input, context),\n [_A]: _DOAe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeOrganizationsAccessCommand\");\nvar se_DescribePublisherCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribePublisherInput(input, context),\n [_A]: _DP,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribePublisherCommand\");\nvar se_DescribeResourceScanCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeResourceScanInput(input, context),\n [_A]: _DRS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeResourceScanCommand\");\nvar se_DescribeStackDriftDetectionStatusCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackDriftDetectionStatusInput(input, context),\n [_A]: _DSDDS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackDriftDetectionStatusCommand\");\nvar se_DescribeStackEventsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackEventsInput(input, context),\n [_A]: _DSE,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackEventsCommand\");\nvar se_DescribeStackInstanceCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackInstanceInput(input, context),\n [_A]: _DSIe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackInstanceCommand\");\nvar se_DescribeStackResourceCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackResourceInput(input, context),\n [_A]: _DSR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackResourceCommand\");\nvar se_DescribeStackResourceDriftsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackResourceDriftsInput(input, context),\n [_A]: _DSRD,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackResourceDriftsCommand\");\nvar se_DescribeStackResourcesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackResourcesInput(input, context),\n [_A]: _DSRe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackResourcesCommand\");\nvar se_DescribeStacksCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStacksInput(input, context),\n [_A]: _DSe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStacksCommand\");\nvar se_DescribeStackSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackSetInput(input, context),\n [_A]: _DSSe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackSetCommand\");\nvar se_DescribeStackSetOperationCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeStackSetOperationInput(input, context),\n [_A]: _DSSO,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeStackSetOperationCommand\");\nvar se_DescribeTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeTypeInput(input, context),\n [_A]: _DTes,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeTypeCommand\");\nvar se_DescribeTypeRegistrationCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DescribeTypeRegistrationInput(input, context),\n [_A]: _DTR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeTypeRegistrationCommand\");\nvar se_DetectStackDriftCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DetectStackDriftInput(input, context),\n [_A]: _DSD,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DetectStackDriftCommand\");\nvar se_DetectStackResourceDriftCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DetectStackResourceDriftInput(input, context),\n [_A]: _DSRDe,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DetectStackResourceDriftCommand\");\nvar se_DetectStackSetDriftCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DetectStackSetDriftInput(input, context),\n [_A]: _DSSD,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DetectStackSetDriftCommand\");\nvar se_EstimateTemplateCostCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_EstimateTemplateCostInput(input, context),\n [_A]: _ETC,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_EstimateTemplateCostCommand\");\nvar se_ExecuteChangeSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ExecuteChangeSetInput(input, context),\n [_A]: _ECS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ExecuteChangeSetCommand\");\nvar se_GetGeneratedTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetGeneratedTemplateInput(input, context),\n [_A]: _GGT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetGeneratedTemplateCommand\");\nvar se_GetStackPolicyCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetStackPolicyInput(input, context),\n [_A]: _GSP,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetStackPolicyCommand\");\nvar se_GetTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetTemplateInput(input, context),\n [_A]: _GT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetTemplateCommand\");\nvar se_GetTemplateSummaryCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetTemplateSummaryInput(input, context),\n [_A]: _GTS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetTemplateSummaryCommand\");\nvar se_ImportStacksToStackSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ImportStacksToStackSetInput(input, context),\n [_A]: _ISTSS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ImportStacksToStackSetCommand\");\nvar se_ListChangeSetsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListChangeSetsInput(input, context),\n [_A]: _LCS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListChangeSetsCommand\");\nvar se_ListExportsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListExportsInput(input, context),\n [_A]: _LE,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListExportsCommand\");\nvar se_ListGeneratedTemplatesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListGeneratedTemplatesInput(input, context),\n [_A]: _LGT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListGeneratedTemplatesCommand\");\nvar se_ListImportsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListImportsInput(input, context),\n [_A]: _LI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListImportsCommand\");\nvar se_ListResourceScanRelatedResourcesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListResourceScanRelatedResourcesInput(input, context),\n [_A]: _LRSRR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListResourceScanRelatedResourcesCommand\");\nvar se_ListResourceScanResourcesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListResourceScanResourcesInput(input, context),\n [_A]: _LRSR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListResourceScanResourcesCommand\");\nvar se_ListResourceScansCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListResourceScansInput(input, context),\n [_A]: _LRS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListResourceScansCommand\");\nvar se_ListStackInstanceResourceDriftsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackInstanceResourceDriftsInput(input, context),\n [_A]: _LSIRD,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackInstanceResourceDriftsCommand\");\nvar se_ListStackInstancesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackInstancesInput(input, context),\n [_A]: _LSI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackInstancesCommand\");\nvar se_ListStackResourcesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackResourcesInput(input, context),\n [_A]: _LSR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackResourcesCommand\");\nvar se_ListStacksCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStacksInput(input, context),\n [_A]: _LS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStacksCommand\");\nvar se_ListStackSetAutoDeploymentTargetsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackSetAutoDeploymentTargetsInput(input, context),\n [_A]: _LSSADT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackSetAutoDeploymentTargetsCommand\");\nvar se_ListStackSetOperationResultsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackSetOperationResultsInput(input, context),\n [_A]: _LSSOR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackSetOperationResultsCommand\");\nvar se_ListStackSetOperationsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackSetOperationsInput(input, context),\n [_A]: _LSSO,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackSetOperationsCommand\");\nvar se_ListStackSetsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListStackSetsInput(input, context),\n [_A]: _LSS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListStackSetsCommand\");\nvar se_ListTypeRegistrationsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListTypeRegistrationsInput(input, context),\n [_A]: _LTR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListTypeRegistrationsCommand\");\nvar se_ListTypesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListTypesInput(input, context),\n [_A]: _LT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListTypesCommand\");\nvar se_ListTypeVersionsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ListTypeVersionsInput(input, context),\n [_A]: _LTV,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListTypeVersionsCommand\");\nvar se_PublishTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_PublishTypeInput(input, context),\n [_A]: _PT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_PublishTypeCommand\");\nvar se_RecordHandlerProgressCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_RecordHandlerProgressInput(input, context),\n [_A]: _RHP,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_RecordHandlerProgressCommand\");\nvar se_RegisterPublisherCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_RegisterPublisherInput(input, context),\n [_A]: _RP,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_RegisterPublisherCommand\");\nvar se_RegisterTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_RegisterTypeInput(input, context),\n [_A]: _RT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_RegisterTypeCommand\");\nvar se_RollbackStackCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_RollbackStackInput(input, context),\n [_A]: _RS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_RollbackStackCommand\");\nvar se_SetStackPolicyCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_SetStackPolicyInput(input, context),\n [_A]: _SSP,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_SetStackPolicyCommand\");\nvar se_SetTypeConfigurationCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_SetTypeConfigurationInput(input, context),\n [_A]: _STC,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_SetTypeConfigurationCommand\");\nvar se_SetTypeDefaultVersionCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_SetTypeDefaultVersionInput(input, context),\n [_A]: _STDV,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_SetTypeDefaultVersionCommand\");\nvar se_SignalResourceCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_SignalResourceInput(input, context),\n [_A]: _SR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_SignalResourceCommand\");\nvar se_StartResourceScanCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_StartResourceScanInput(input, context),\n [_A]: _SRS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_StartResourceScanCommand\");\nvar se_StopStackSetOperationCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_StopStackSetOperationInput(input, context),\n [_A]: _SSSO,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_StopStackSetOperationCommand\");\nvar se_TestTypeCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_TestTypeInput(input, context),\n [_A]: _TT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_TestTypeCommand\");\nvar se_UpdateGeneratedTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_UpdateGeneratedTemplateInput(input, context),\n [_A]: _UGT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UpdateGeneratedTemplateCommand\");\nvar se_UpdateStackCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_UpdateStackInput(input, context),\n [_A]: _US,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UpdateStackCommand\");\nvar se_UpdateStackInstancesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_UpdateStackInstancesInput(input, context),\n [_A]: _USI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UpdateStackInstancesCommand\");\nvar se_UpdateStackSetCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_UpdateStackSetInput(input, context),\n [_A]: _USS,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UpdateStackSetCommand\");\nvar se_UpdateTerminationProtectionCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_UpdateTerminationProtectionInput(input, context),\n [_A]: _UTP,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UpdateTerminationProtectionCommand\");\nvar se_ValidateTemplateCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_ValidateTemplateInput(input, context),\n [_A]: _VT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ValidateTemplateCommand\");\nvar de_ActivateOrganizationsAccessCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ActivateOrganizationsAccessOutput(data.ActivateOrganizationsAccessResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ActivateOrganizationsAccessCommand\");\nvar de_ActivateTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ActivateTypeOutput(data.ActivateTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ActivateTypeCommand\");\nvar de_BatchDescribeTypeConfigurationsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_BatchDescribeTypeConfigurationsOutput(data.BatchDescribeTypeConfigurationsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_BatchDescribeTypeConfigurationsCommand\");\nvar de_CancelUpdateStackCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_CancelUpdateStackCommand\");\nvar de_ContinueUpdateRollbackCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ContinueUpdateRollbackOutput(data.ContinueUpdateRollbackResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ContinueUpdateRollbackCommand\");\nvar de_CreateChangeSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_CreateChangeSetOutput(data.CreateChangeSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_CreateChangeSetCommand\");\nvar de_CreateGeneratedTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_CreateGeneratedTemplateOutput(data.CreateGeneratedTemplateResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_CreateGeneratedTemplateCommand\");\nvar de_CreateStackCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_CreateStackOutput(data.CreateStackResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_CreateStackCommand\");\nvar de_CreateStackInstancesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_CreateStackInstancesOutput(data.CreateStackInstancesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_CreateStackInstancesCommand\");\nvar de_CreateStackSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_CreateStackSetOutput(data.CreateStackSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_CreateStackSetCommand\");\nvar de_DeactivateOrganizationsAccessCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DeactivateOrganizationsAccessOutput(data.DeactivateOrganizationsAccessResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeactivateOrganizationsAccessCommand\");\nvar de_DeactivateTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DeactivateTypeOutput(data.DeactivateTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeactivateTypeCommand\");\nvar de_DeleteChangeSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DeleteChangeSetOutput(data.DeleteChangeSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeleteChangeSetCommand\");\nvar de_DeleteGeneratedTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_DeleteGeneratedTemplateCommand\");\nvar de_DeleteStackCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_DeleteStackCommand\");\nvar de_DeleteStackInstancesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DeleteStackInstancesOutput(data.DeleteStackInstancesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeleteStackInstancesCommand\");\nvar de_DeleteStackSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DeleteStackSetOutput(data.DeleteStackSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeleteStackSetCommand\");\nvar de_DeregisterTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DeregisterTypeOutput(data.DeregisterTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeregisterTypeCommand\");\nvar de_DescribeAccountLimitsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeAccountLimitsOutput(data.DescribeAccountLimitsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeAccountLimitsCommand\");\nvar de_DescribeChangeSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeChangeSetOutput(data.DescribeChangeSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeChangeSetCommand\");\nvar de_DescribeChangeSetHooksCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeChangeSetHooksOutput(data.DescribeChangeSetHooksResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeChangeSetHooksCommand\");\nvar de_DescribeGeneratedTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeGeneratedTemplateOutput(data.DescribeGeneratedTemplateResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeGeneratedTemplateCommand\");\nvar de_DescribeOrganizationsAccessCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeOrganizationsAccessOutput(data.DescribeOrganizationsAccessResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeOrganizationsAccessCommand\");\nvar de_DescribePublisherCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribePublisherOutput(data.DescribePublisherResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribePublisherCommand\");\nvar de_DescribeResourceScanCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeResourceScanOutput(data.DescribeResourceScanResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeResourceScanCommand\");\nvar de_DescribeStackDriftDetectionStatusCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackDriftDetectionStatusOutput(data.DescribeStackDriftDetectionStatusResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackDriftDetectionStatusCommand\");\nvar de_DescribeStackEventsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackEventsOutput(data.DescribeStackEventsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackEventsCommand\");\nvar de_DescribeStackInstanceCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackInstanceOutput(data.DescribeStackInstanceResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackInstanceCommand\");\nvar de_DescribeStackResourceCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackResourceOutput(data.DescribeStackResourceResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackResourceCommand\");\nvar de_DescribeStackResourceDriftsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackResourceDriftsOutput(data.DescribeStackResourceDriftsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackResourceDriftsCommand\");\nvar de_DescribeStackResourcesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackResourcesOutput(data.DescribeStackResourcesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackResourcesCommand\");\nvar de_DescribeStacksCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStacksOutput(data.DescribeStacksResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStacksCommand\");\nvar de_DescribeStackSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackSetOutput(data.DescribeStackSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackSetCommand\");\nvar de_DescribeStackSetOperationCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeStackSetOperationOutput(data.DescribeStackSetOperationResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeStackSetOperationCommand\");\nvar de_DescribeTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeTypeOutput(data.DescribeTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeTypeCommand\");\nvar de_DescribeTypeRegistrationCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DescribeTypeRegistrationOutput(data.DescribeTypeRegistrationResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeTypeRegistrationCommand\");\nvar de_DetectStackDriftCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DetectStackDriftOutput(data.DetectStackDriftResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DetectStackDriftCommand\");\nvar de_DetectStackResourceDriftCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DetectStackResourceDriftOutput(data.DetectStackResourceDriftResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DetectStackResourceDriftCommand\");\nvar de_DetectStackSetDriftCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DetectStackSetDriftOutput(data.DetectStackSetDriftResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DetectStackSetDriftCommand\");\nvar de_EstimateTemplateCostCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_EstimateTemplateCostOutput(data.EstimateTemplateCostResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_EstimateTemplateCostCommand\");\nvar de_ExecuteChangeSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ExecuteChangeSetOutput(data.ExecuteChangeSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ExecuteChangeSetCommand\");\nvar de_GetGeneratedTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetGeneratedTemplateOutput(data.GetGeneratedTemplateResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetGeneratedTemplateCommand\");\nvar de_GetStackPolicyCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetStackPolicyOutput(data.GetStackPolicyResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetStackPolicyCommand\");\nvar de_GetTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetTemplateOutput(data.GetTemplateResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetTemplateCommand\");\nvar de_GetTemplateSummaryCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetTemplateSummaryOutput(data.GetTemplateSummaryResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetTemplateSummaryCommand\");\nvar de_ImportStacksToStackSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ImportStacksToStackSetOutput(data.ImportStacksToStackSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ImportStacksToStackSetCommand\");\nvar de_ListChangeSetsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListChangeSetsOutput(data.ListChangeSetsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListChangeSetsCommand\");\nvar de_ListExportsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListExportsOutput(data.ListExportsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListExportsCommand\");\nvar de_ListGeneratedTemplatesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListGeneratedTemplatesOutput(data.ListGeneratedTemplatesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListGeneratedTemplatesCommand\");\nvar de_ListImportsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListImportsOutput(data.ListImportsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListImportsCommand\");\nvar de_ListResourceScanRelatedResourcesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListResourceScanRelatedResourcesOutput(data.ListResourceScanRelatedResourcesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListResourceScanRelatedResourcesCommand\");\nvar de_ListResourceScanResourcesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListResourceScanResourcesOutput(data.ListResourceScanResourcesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListResourceScanResourcesCommand\");\nvar de_ListResourceScansCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListResourceScansOutput(data.ListResourceScansResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListResourceScansCommand\");\nvar de_ListStackInstanceResourceDriftsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackInstanceResourceDriftsOutput(data.ListStackInstanceResourceDriftsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackInstanceResourceDriftsCommand\");\nvar de_ListStackInstancesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackInstancesOutput(data.ListStackInstancesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackInstancesCommand\");\nvar de_ListStackResourcesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackResourcesOutput(data.ListStackResourcesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackResourcesCommand\");\nvar de_ListStacksCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStacksOutput(data.ListStacksResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStacksCommand\");\nvar de_ListStackSetAutoDeploymentTargetsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackSetAutoDeploymentTargetsOutput(data.ListStackSetAutoDeploymentTargetsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackSetAutoDeploymentTargetsCommand\");\nvar de_ListStackSetOperationResultsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackSetOperationResultsOutput(data.ListStackSetOperationResultsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackSetOperationResultsCommand\");\nvar de_ListStackSetOperationsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackSetOperationsOutput(data.ListStackSetOperationsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackSetOperationsCommand\");\nvar de_ListStackSetsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListStackSetsOutput(data.ListStackSetsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListStackSetsCommand\");\nvar de_ListTypeRegistrationsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListTypeRegistrationsOutput(data.ListTypeRegistrationsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListTypeRegistrationsCommand\");\nvar de_ListTypesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListTypesOutput(data.ListTypesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListTypesCommand\");\nvar de_ListTypeVersionsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ListTypeVersionsOutput(data.ListTypeVersionsResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListTypeVersionsCommand\");\nvar de_PublishTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_PublishTypeOutput(data.PublishTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_PublishTypeCommand\");\nvar de_RecordHandlerProgressCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_RecordHandlerProgressOutput(data.RecordHandlerProgressResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_RecordHandlerProgressCommand\");\nvar de_RegisterPublisherCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_RegisterPublisherOutput(data.RegisterPublisherResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_RegisterPublisherCommand\");\nvar de_RegisterTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_RegisterTypeOutput(data.RegisterTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_RegisterTypeCommand\");\nvar de_RollbackStackCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_RollbackStackOutput(data.RollbackStackResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_RollbackStackCommand\");\nvar de_SetStackPolicyCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_SetStackPolicyCommand\");\nvar de_SetTypeConfigurationCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_SetTypeConfigurationOutput(data.SetTypeConfigurationResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_SetTypeConfigurationCommand\");\nvar de_SetTypeDefaultVersionCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_SetTypeDefaultVersionOutput(data.SetTypeDefaultVersionResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_SetTypeDefaultVersionCommand\");\nvar de_SignalResourceCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_SignalResourceCommand\");\nvar de_StartResourceScanCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_StartResourceScanOutput(data.StartResourceScanResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_StartResourceScanCommand\");\nvar de_StopStackSetOperationCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_StopStackSetOperationOutput(data.StopStackSetOperationResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_StopStackSetOperationCommand\");\nvar de_TestTypeCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_TestTypeOutput(data.TestTypeResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_TestTypeCommand\");\nvar de_UpdateGeneratedTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_UpdateGeneratedTemplateOutput(data.UpdateGeneratedTemplateResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UpdateGeneratedTemplateCommand\");\nvar de_UpdateStackCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_UpdateStackOutput(data.UpdateStackResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UpdateStackCommand\");\nvar de_UpdateStackInstancesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_UpdateStackInstancesOutput(data.UpdateStackInstancesResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UpdateStackInstancesCommand\");\nvar de_UpdateStackSetCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_UpdateStackSetOutput(data.UpdateStackSetResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UpdateStackSetCommand\");\nvar de_UpdateTerminationProtectionCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_UpdateTerminationProtectionOutput(data.UpdateTerminationProtectionResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UpdateTerminationProtectionCommand\");\nvar de_ValidateTemplateCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_ValidateTemplateOutput(data.ValidateTemplateResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ValidateTemplateCommand\");\nvar de_CommandError = /* @__PURE__ */ __name(async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await (0, import_core2.parseXmlErrorBody)(output.body, context)\n };\n const errorCode = loadQueryErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"InvalidOperationException\":\n case \"com.amazonaws.cloudformation#InvalidOperationException\":\n throw await de_InvalidOperationExceptionRes(parsedOutput, context);\n case \"OperationNotFoundException\":\n case \"com.amazonaws.cloudformation#OperationNotFoundException\":\n throw await de_OperationNotFoundExceptionRes(parsedOutput, context);\n case \"CFNRegistryException\":\n case \"com.amazonaws.cloudformation#CFNRegistryException\":\n throw await de_CFNRegistryExceptionRes(parsedOutput, context);\n case \"TypeNotFoundException\":\n case \"com.amazonaws.cloudformation#TypeNotFoundException\":\n throw await de_TypeNotFoundExceptionRes(parsedOutput, context);\n case \"TypeConfigurationNotFoundException\":\n case \"com.amazonaws.cloudformation#TypeConfigurationNotFoundException\":\n throw await de_TypeConfigurationNotFoundExceptionRes(parsedOutput, context);\n case \"TokenAlreadyExistsException\":\n case \"com.amazonaws.cloudformation#TokenAlreadyExistsException\":\n throw await de_TokenAlreadyExistsExceptionRes(parsedOutput, context);\n case \"AlreadyExistsException\":\n case \"com.amazonaws.cloudformation#AlreadyExistsException\":\n throw await de_AlreadyExistsExceptionRes(parsedOutput, context);\n case \"InsufficientCapabilitiesException\":\n case \"com.amazonaws.cloudformation#InsufficientCapabilitiesException\":\n throw await de_InsufficientCapabilitiesExceptionRes(parsedOutput, context);\n case \"LimitExceededException\":\n case \"com.amazonaws.cloudformation#LimitExceededException\":\n throw await de_LimitExceededExceptionRes(parsedOutput, context);\n case \"ConcurrentResourcesLimitExceeded\":\n case \"com.amazonaws.cloudformation#ConcurrentResourcesLimitExceededException\":\n throw await de_ConcurrentResourcesLimitExceededExceptionRes(parsedOutput, context);\n case \"OperationIdAlreadyExistsException\":\n case \"com.amazonaws.cloudformation#OperationIdAlreadyExistsException\":\n throw await de_OperationIdAlreadyExistsExceptionRes(parsedOutput, context);\n case \"OperationInProgressException\":\n case \"com.amazonaws.cloudformation#OperationInProgressException\":\n throw await de_OperationInProgressExceptionRes(parsedOutput, context);\n case \"StackSetNotFoundException\":\n case \"com.amazonaws.cloudformation#StackSetNotFoundException\":\n throw await de_StackSetNotFoundExceptionRes(parsedOutput, context);\n case \"StaleRequestException\":\n case \"com.amazonaws.cloudformation#StaleRequestException\":\n throw await de_StaleRequestExceptionRes(parsedOutput, context);\n case \"CreatedButModifiedException\":\n case \"com.amazonaws.cloudformation#CreatedButModifiedException\":\n throw await de_CreatedButModifiedExceptionRes(parsedOutput, context);\n case \"NameAlreadyExistsException\":\n case \"com.amazonaws.cloudformation#NameAlreadyExistsException\":\n throw await de_NameAlreadyExistsExceptionRes(parsedOutput, context);\n case \"InvalidChangeSetStatus\":\n case \"com.amazonaws.cloudformation#InvalidChangeSetStatusException\":\n throw await de_InvalidChangeSetStatusExceptionRes(parsedOutput, context);\n case \"GeneratedTemplateNotFound\":\n case \"com.amazonaws.cloudformation#GeneratedTemplateNotFoundException\":\n throw await de_GeneratedTemplateNotFoundExceptionRes(parsedOutput, context);\n case \"StackSetNotEmptyException\":\n case \"com.amazonaws.cloudformation#StackSetNotEmptyException\":\n throw await de_StackSetNotEmptyExceptionRes(parsedOutput, context);\n case \"ChangeSetNotFound\":\n case \"com.amazonaws.cloudformation#ChangeSetNotFoundException\":\n throw await de_ChangeSetNotFoundExceptionRes(parsedOutput, context);\n case \"ResourceScanNotFound\":\n case \"com.amazonaws.cloudformation#ResourceScanNotFoundException\":\n throw await de_ResourceScanNotFoundExceptionRes(parsedOutput, context);\n case \"StackInstanceNotFoundException\":\n case \"com.amazonaws.cloudformation#StackInstanceNotFoundException\":\n throw await de_StackInstanceNotFoundExceptionRes(parsedOutput, context);\n case \"StackNotFoundException\":\n case \"com.amazonaws.cloudformation#StackNotFoundException\":\n throw await de_StackNotFoundExceptionRes(parsedOutput, context);\n case \"ResourceScanInProgress\":\n case \"com.amazonaws.cloudformation#ResourceScanInProgressException\":\n throw await de_ResourceScanInProgressExceptionRes(parsedOutput, context);\n case \"ConditionalCheckFailed\":\n case \"com.amazonaws.cloudformation#OperationStatusCheckFailedException\":\n throw await de_OperationStatusCheckFailedExceptionRes(parsedOutput, context);\n case \"InvalidStateTransition\":\n case \"com.amazonaws.cloudformation#InvalidStateTransitionException\":\n throw await de_InvalidStateTransitionExceptionRes(parsedOutput, context);\n case \"ResourceScanLimitExceeded\":\n case \"com.amazonaws.cloudformation#ResourceScanLimitExceededException\":\n throw await de_ResourceScanLimitExceededExceptionRes(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n return throwDefaultError({\n output,\n parsedBody: parsedBody.Error,\n errorCode\n });\n }\n}, \"de_CommandError\");\nvar de_AlreadyExistsExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_AlreadyExistsException(body.Error, context);\n const exception = new AlreadyExistsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_AlreadyExistsExceptionRes\");\nvar de_CFNRegistryExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_CFNRegistryException(body.Error, context);\n const exception = new CFNRegistryException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_CFNRegistryExceptionRes\");\nvar de_ChangeSetNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_ChangeSetNotFoundException(body.Error, context);\n const exception = new ChangeSetNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ChangeSetNotFoundExceptionRes\");\nvar de_ConcurrentResourcesLimitExceededExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_ConcurrentResourcesLimitExceededException(body.Error, context);\n const exception = new ConcurrentResourcesLimitExceededException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ConcurrentResourcesLimitExceededExceptionRes\");\nvar de_CreatedButModifiedExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_CreatedButModifiedException(body.Error, context);\n const exception = new CreatedButModifiedException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_CreatedButModifiedExceptionRes\");\nvar de_GeneratedTemplateNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_GeneratedTemplateNotFoundException(body.Error, context);\n const exception = new GeneratedTemplateNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_GeneratedTemplateNotFoundExceptionRes\");\nvar de_InsufficientCapabilitiesExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_InsufficientCapabilitiesException(body.Error, context);\n const exception = new InsufficientCapabilitiesException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InsufficientCapabilitiesExceptionRes\");\nvar de_InvalidChangeSetStatusExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_InvalidChangeSetStatusException(body.Error, context);\n const exception = new InvalidChangeSetStatusException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidChangeSetStatusExceptionRes\");\nvar de_InvalidOperationExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_InvalidOperationException(body.Error, context);\n const exception = new InvalidOperationException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidOperationExceptionRes\");\nvar de_InvalidStateTransitionExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_InvalidStateTransitionException(body.Error, context);\n const exception = new InvalidStateTransitionException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidStateTransitionExceptionRes\");\nvar de_LimitExceededExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_LimitExceededException(body.Error, context);\n const exception = new LimitExceededException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_LimitExceededExceptionRes\");\nvar de_NameAlreadyExistsExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_NameAlreadyExistsException(body.Error, context);\n const exception = new NameAlreadyExistsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_NameAlreadyExistsExceptionRes\");\nvar de_OperationIdAlreadyExistsExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_OperationIdAlreadyExistsException(body.Error, context);\n const exception = new OperationIdAlreadyExistsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_OperationIdAlreadyExistsExceptionRes\");\nvar de_OperationInProgressExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_OperationInProgressException(body.Error, context);\n const exception = new OperationInProgressException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_OperationInProgressExceptionRes\");\nvar de_OperationNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_OperationNotFoundException(body.Error, context);\n const exception = new OperationNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_OperationNotFoundExceptionRes\");\nvar de_OperationStatusCheckFailedExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_OperationStatusCheckFailedException(body.Error, context);\n const exception = new OperationStatusCheckFailedException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_OperationStatusCheckFailedExceptionRes\");\nvar de_ResourceScanInProgressExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_ResourceScanInProgressException(body.Error, context);\n const exception = new ResourceScanInProgressException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ResourceScanInProgressExceptionRes\");\nvar de_ResourceScanLimitExceededExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_ResourceScanLimitExceededException(body.Error, context);\n const exception = new ResourceScanLimitExceededException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ResourceScanLimitExceededExceptionRes\");\nvar de_ResourceScanNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_ResourceScanNotFoundException(body.Error, context);\n const exception = new ResourceScanNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ResourceScanNotFoundExceptionRes\");\nvar de_StackInstanceNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_StackInstanceNotFoundException(body.Error, context);\n const exception = new StackInstanceNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_StackInstanceNotFoundExceptionRes\");\nvar de_StackNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_StackNotFoundException(body.Error, context);\n const exception = new StackNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_StackNotFoundExceptionRes\");\nvar de_StackSetNotEmptyExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_StackSetNotEmptyException(body.Error, context);\n const exception = new StackSetNotEmptyException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_StackSetNotEmptyExceptionRes\");\nvar de_StackSetNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_StackSetNotFoundException(body.Error, context);\n const exception = new StackSetNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_StackSetNotFoundExceptionRes\");\nvar de_StaleRequestExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_StaleRequestException(body.Error, context);\n const exception = new StaleRequestException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_StaleRequestExceptionRes\");\nvar de_TokenAlreadyExistsExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_TokenAlreadyExistsException(body.Error, context);\n const exception = new TokenAlreadyExistsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_TokenAlreadyExistsExceptionRes\");\nvar de_TypeConfigurationNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_TypeConfigurationNotFoundException(body.Error, context);\n const exception = new TypeConfigurationNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_TypeConfigurationNotFoundExceptionRes\");\nvar de_TypeNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_TypeNotFoundException(body.Error, context);\n const exception = new TypeNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_TypeNotFoundExceptionRes\");\nvar se_AccountList = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_AccountList\");\nvar se_ActivateOrganizationsAccessInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n return entries;\n}, \"se_ActivateOrganizationsAccessInput\");\nvar se_ActivateTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_PTA] != null) {\n entries[_PTA] = input[_PTA];\n }\n if (input[_PI] != null) {\n entries[_PI] = input[_PI];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_TNA] != null) {\n entries[_TNA] = input[_TNA];\n }\n if (input[_AU] != null) {\n entries[_AU] = input[_AU];\n }\n if (input[_LC] != null) {\n const memberEntries = se_LoggingConfig(input[_LC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `LoggingConfig.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_ERA] != null) {\n entries[_ERA] = input[_ERA];\n }\n if (input[_VB] != null) {\n entries[_VB] = input[_VB];\n }\n if (input[_MV] != null) {\n entries[_MV] = input[_MV];\n }\n return entries;\n}, \"se_ActivateTypeInput\");\nvar se_AutoDeployment = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_E] != null) {\n entries[_E] = input[_E];\n }\n if (input[_RSOAR] != null) {\n entries[_RSOAR] = input[_RSOAR];\n }\n return entries;\n}, \"se_AutoDeployment\");\nvar se_BatchDescribeTypeConfigurationsInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_TCI] != null) {\n const memberEntries = se_TypeConfigurationIdentifiers(input[_TCI], context);\n if (((_a = input[_TCI]) == null ? void 0 : _a.length) === 0) {\n entries.TypeConfigurationIdentifiers = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `TypeConfigurationIdentifiers.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_BatchDescribeTypeConfigurationsInput\");\nvar se_CancelUpdateStackInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n return entries;\n}, \"se_CancelUpdateStackInput\");\nvar se_Capabilities = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_Capabilities\");\nvar se_ContinueUpdateRollbackInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_RARN] != null) {\n entries[_RARN] = input[_RARN];\n }\n if (input[_RTS] != null) {\n const memberEntries = se_ResourcesToSkip(input[_RTS], context);\n if (((_a = input[_RTS]) == null ? void 0 : _a.length) === 0) {\n entries.ResourcesToSkip = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourcesToSkip.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n return entries;\n}, \"se_ContinueUpdateRollbackInput\");\nvar se_CreateChangeSetInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c, _d, _e2, _f;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_UPT] != null) {\n entries[_UPT] = input[_UPT];\n }\n if (input[_P] != null) {\n const memberEntries = se_Parameters(input[_P], context);\n if (((_a = input[_P]) == null ? void 0 : _a.length) === 0) {\n entries.Parameters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Parameters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_C] != null) {\n const memberEntries = se_Capabilities(input[_C], context);\n if (((_b = input[_C]) == null ? void 0 : _b.length) === 0) {\n entries.Capabilities = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Capabilities.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RTe] != null) {\n const memberEntries = se_ResourceTypes(input[_RTe], context);\n if (((_c = input[_RTe]) == null ? void 0 : _c.length) === 0) {\n entries.ResourceTypes = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourceTypes.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RARN] != null) {\n entries[_RARN] = input[_RARN];\n }\n if (input[_RC] != null) {\n const memberEntries = se_RollbackConfiguration(input[_RC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RollbackConfiguration.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_NARN] != null) {\n const memberEntries = se_NotificationARNs(input[_NARN], context);\n if (((_d = input[_NARN]) == null ? void 0 : _d.length) === 0) {\n entries.NotificationARNs = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `NotificationARNs.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Ta] != null) {\n const memberEntries = se_Tags(input[_Ta], context);\n if (((_e2 = input[_Ta]) == null ? void 0 : _e2.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_CSN] != null) {\n entries[_CSN] = input[_CSN];\n }\n if (input[_CT] != null) {\n entries[_CT] = input[_CT];\n }\n if (input[_D] != null) {\n entries[_D] = input[_D];\n }\n if (input[_CST] != null) {\n entries[_CST] = input[_CST];\n }\n if (input[_RTI] != null) {\n const memberEntries = se_ResourcesToImport(input[_RTI], context);\n if (((_f = input[_RTI]) == null ? void 0 : _f.length) === 0) {\n entries.ResourcesToImport = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourcesToImport.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_INS] != null) {\n entries[_INS] = input[_INS];\n }\n if (input[_OSF] != null) {\n entries[_OSF] = input[_OSF];\n }\n if (input[_IER] != null) {\n entries[_IER] = input[_IER];\n }\n return entries;\n}, \"se_CreateChangeSetInput\");\nvar se_CreateGeneratedTemplateInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_R] != null) {\n const memberEntries = se_ResourceDefinitions(input[_R], context);\n if (((_a = input[_R]) == null ? void 0 : _a.length) === 0) {\n entries.Resources = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Resources.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_GTN] != null) {\n entries[_GTN] = input[_GTN];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_TC] != null) {\n const memberEntries = se_TemplateConfiguration(input[_TC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `TemplateConfiguration.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_CreateGeneratedTemplateInput\");\nvar se_CreateStackInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c, _d, _e2;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_P] != null) {\n const memberEntries = se_Parameters(input[_P], context);\n if (((_a = input[_P]) == null ? void 0 : _a.length) === 0) {\n entries.Parameters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Parameters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_DR] != null) {\n entries[_DR] = input[_DR];\n }\n if (input[_RC] != null) {\n const memberEntries = se_RollbackConfiguration(input[_RC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RollbackConfiguration.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_TIM] != null) {\n entries[_TIM] = input[_TIM];\n }\n if (input[_NARN] != null) {\n const memberEntries = se_NotificationARNs(input[_NARN], context);\n if (((_b = input[_NARN]) == null ? void 0 : _b.length) === 0) {\n entries.NotificationARNs = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `NotificationARNs.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_C] != null) {\n const memberEntries = se_Capabilities(input[_C], context);\n if (((_c = input[_C]) == null ? void 0 : _c.length) === 0) {\n entries.Capabilities = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Capabilities.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RTe] != null) {\n const memberEntries = se_ResourceTypes(input[_RTe], context);\n if (((_d = input[_RTe]) == null ? void 0 : _d.length) === 0) {\n entries.ResourceTypes = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourceTypes.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RARN] != null) {\n entries[_RARN] = input[_RARN];\n }\n if (input[_OF] != null) {\n entries[_OF] = input[_OF];\n }\n if (input[_SPB] != null) {\n entries[_SPB] = input[_SPB];\n }\n if (input[_SPURL] != null) {\n entries[_SPURL] = input[_SPURL];\n }\n if (input[_Ta] != null) {\n const memberEntries = se_Tags(input[_Ta], context);\n if (((_e2 = input[_Ta]) == null ? void 0 : _e2.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n if (input[_ETP] != null) {\n entries[_ETP] = input[_ETP];\n }\n if (input[_REOC] != null) {\n entries[_REOC] = input[_REOC];\n }\n return entries;\n}, \"se_CreateStackInput\");\nvar se_CreateStackInstancesInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_Ac] != null) {\n const memberEntries = se_AccountList(input[_Ac], context);\n if (((_a = input[_Ac]) == null ? void 0 : _a.length) === 0) {\n entries.Accounts = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Accounts.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_DTep] != null) {\n const memberEntries = se_DeploymentTargets(input[_DTep], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `DeploymentTargets.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Re] != null) {\n const memberEntries = se_RegionList(input[_Re], context);\n if (((_b = input[_Re]) == null ? void 0 : _b.length) === 0) {\n entries.Regions = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Regions.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_PO] != null) {\n const memberEntries = se_Parameters(input[_PO], context);\n if (((_c = input[_PO]) == null ? void 0 : _c.length) === 0) {\n entries.ParameterOverrides = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ParameterOverrides.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OP] != null) {\n const memberEntries = se_StackSetOperationPreferences(input[_OP], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OperationPreferences.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OI] === void 0) {\n input[_OI] = (0, import_uuid.v4)();\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_CreateStackInstancesInput\");\nvar se_CreateStackSetInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_D] != null) {\n entries[_D] = input[_D];\n }\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_SI] != null) {\n entries[_SI] = input[_SI];\n }\n if (input[_P] != null) {\n const memberEntries = se_Parameters(input[_P], context);\n if (((_a = input[_P]) == null ? void 0 : _a.length) === 0) {\n entries.Parameters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Parameters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_C] != null) {\n const memberEntries = se_Capabilities(input[_C], context);\n if (((_b = input[_C]) == null ? void 0 : _b.length) === 0) {\n entries.Capabilities = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Capabilities.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Ta] != null) {\n const memberEntries = se_Tags(input[_Ta], context);\n if (((_c = input[_Ta]) == null ? void 0 : _c.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_ARARN] != null) {\n entries[_ARARN] = input[_ARARN];\n }\n if (input[_ERN] != null) {\n entries[_ERN] = input[_ERN];\n }\n if (input[_PM] != null) {\n entries[_PM] = input[_PM];\n }\n if (input[_AD] != null) {\n const memberEntries = se_AutoDeployment(input[_AD], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `AutoDeployment.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n if (input[_CRT] === void 0) {\n input[_CRT] = (0, import_uuid.v4)();\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n if (input[_ME] != null) {\n const memberEntries = se_ManagedExecution(input[_ME], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ManagedExecution.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_CreateStackSetInput\");\nvar se_DeactivateOrganizationsAccessInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n return entries;\n}, \"se_DeactivateOrganizationsAccessInput\");\nvar se_DeactivateTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n return entries;\n}, \"se_DeactivateTypeInput\");\nvar se_DeleteChangeSetInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_CSN] != null) {\n entries[_CSN] = input[_CSN];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n return entries;\n}, \"se_DeleteChangeSetInput\");\nvar se_DeleteGeneratedTemplateInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_GTN] != null) {\n entries[_GTN] = input[_GTN];\n }\n return entries;\n}, \"se_DeleteGeneratedTemplateInput\");\nvar se_DeleteStackInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_RR] != null) {\n const memberEntries = se_RetainResources(input[_RR], context);\n if (((_a = input[_RR]) == null ? void 0 : _a.length) === 0) {\n entries.RetainResources = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RetainResources.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RARN] != null) {\n entries[_RARN] = input[_RARN];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n return entries;\n}, \"se_DeleteStackInput\");\nvar se_DeleteStackInstancesInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_Ac] != null) {\n const memberEntries = se_AccountList(input[_Ac], context);\n if (((_a = input[_Ac]) == null ? void 0 : _a.length) === 0) {\n entries.Accounts = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Accounts.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_DTep] != null) {\n const memberEntries = se_DeploymentTargets(input[_DTep], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `DeploymentTargets.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Re] != null) {\n const memberEntries = se_RegionList(input[_Re], context);\n if (((_b = input[_Re]) == null ? void 0 : _b.length) === 0) {\n entries.Regions = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Regions.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OP] != null) {\n const memberEntries = se_StackSetOperationPreferences(input[_OP], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OperationPreferences.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RSe] != null) {\n entries[_RSe] = input[_RSe];\n }\n if (input[_OI] === void 0) {\n input[_OI] = (0, import_uuid.v4)();\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DeleteStackInstancesInput\");\nvar se_DeleteStackSetInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DeleteStackSetInput\");\nvar se_DeploymentTargets = /* @__PURE__ */ __name((input, context) => {\n var _a, _b;\n const entries = {};\n if (input[_Ac] != null) {\n const memberEntries = se_AccountList(input[_Ac], context);\n if (((_a = input[_Ac]) == null ? void 0 : _a.length) === 0) {\n entries.Accounts = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Accounts.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_AUc] != null) {\n entries[_AUc] = input[_AUc];\n }\n if (input[_OUI] != null) {\n const memberEntries = se_OrganizationalUnitIdList(input[_OUI], context);\n if (((_b = input[_OUI]) == null ? void 0 : _b.length) === 0) {\n entries.OrganizationalUnitIds = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OrganizationalUnitIds.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_AFT] != null) {\n entries[_AFT] = input[_AFT];\n }\n return entries;\n}, \"se_DeploymentTargets\");\nvar se_DeregisterTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_VI] != null) {\n entries[_VI] = input[_VI];\n }\n return entries;\n}, \"se_DeregisterTypeInput\");\nvar se_DescribeAccountLimitsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_DescribeAccountLimitsInput\");\nvar se_DescribeChangeSetHooksInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_CSN] != null) {\n entries[_CSN] = input[_CSN];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n return entries;\n}, \"se_DescribeChangeSetHooksInput\");\nvar se_DescribeChangeSetInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_CSN] != null) {\n entries[_CSN] = input[_CSN];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_IPV] != null) {\n entries[_IPV] = input[_IPV];\n }\n return entries;\n}, \"se_DescribeChangeSetInput\");\nvar se_DescribeGeneratedTemplateInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_GTN] != null) {\n entries[_GTN] = input[_GTN];\n }\n return entries;\n}, \"se_DescribeGeneratedTemplateInput\");\nvar se_DescribeOrganizationsAccessInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DescribeOrganizationsAccessInput\");\nvar se_DescribePublisherInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_PI] != null) {\n entries[_PI] = input[_PI];\n }\n return entries;\n}, \"se_DescribePublisherInput\");\nvar se_DescribeResourceScanInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_RSI] != null) {\n entries[_RSI] = input[_RSI];\n }\n return entries;\n}, \"se_DescribeResourceScanInput\");\nvar se_DescribeStackDriftDetectionStatusInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SDDI] != null) {\n entries[_SDDI] = input[_SDDI];\n }\n return entries;\n}, \"se_DescribeStackDriftDetectionStatusInput\");\nvar se_DescribeStackEventsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_DescribeStackEventsInput\");\nvar se_DescribeStackInstanceInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_SIA] != null) {\n entries[_SIA] = input[_SIA];\n }\n if (input[_SIR] != null) {\n entries[_SIR] = input[_SIR];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DescribeStackInstanceInput\");\nvar se_DescribeStackResourceDriftsInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_SRDSF] != null) {\n const memberEntries = se_StackResourceDriftStatusFilters(input[_SRDSF], context);\n if (((_a = input[_SRDSF]) == null ? void 0 : _a.length) === 0) {\n entries.StackResourceDriftStatusFilters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `StackResourceDriftStatusFilters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n return entries;\n}, \"se_DescribeStackResourceDriftsInput\");\nvar se_DescribeStackResourceInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n return entries;\n}, \"se_DescribeStackResourceInput\");\nvar se_DescribeStackResourcesInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n if (input[_PRI] != null) {\n entries[_PRI] = input[_PRI];\n }\n return entries;\n}, \"se_DescribeStackResourcesInput\");\nvar se_DescribeStackSetInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DescribeStackSetInput\");\nvar se_DescribeStackSetOperationInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DescribeStackSetOperationInput\");\nvar se_DescribeStacksInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_DescribeStacksInput\");\nvar se_DescribeTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_VI] != null) {\n entries[_VI] = input[_VI];\n }\n if (input[_PI] != null) {\n entries[_PI] = input[_PI];\n }\n if (input[_PVN] != null) {\n entries[_PVN] = input[_PVN];\n }\n return entries;\n}, \"se_DescribeTypeInput\");\nvar se_DescribeTypeRegistrationInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_RTeg] != null) {\n entries[_RTeg] = input[_RTeg];\n }\n return entries;\n}, \"se_DescribeTypeRegistrationInput\");\nvar se_DetectStackDriftInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_LRIo] != null) {\n const memberEntries = se_LogicalResourceIds(input[_LRIo], context);\n if (((_a = input[_LRIo]) == null ? void 0 : _a.length) === 0) {\n entries.LogicalResourceIds = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `LogicalResourceIds.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_DetectStackDriftInput\");\nvar se_DetectStackResourceDriftInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n return entries;\n}, \"se_DetectStackResourceDriftInput\");\nvar se_DetectStackSetDriftInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_OP] != null) {\n const memberEntries = se_StackSetOperationPreferences(input[_OP], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OperationPreferences.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OI] === void 0) {\n input[_OI] = (0, import_uuid.v4)();\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_DetectStackSetDriftInput\");\nvar se_EstimateTemplateCostInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_P] != null) {\n const memberEntries = se_Parameters(input[_P], context);\n if (((_a = input[_P]) == null ? void 0 : _a.length) === 0) {\n entries.Parameters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Parameters.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_EstimateTemplateCostInput\");\nvar se_ExecuteChangeSetInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_CSN] != null) {\n entries[_CSN] = input[_CSN];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n if (input[_DR] != null) {\n entries[_DR] = input[_DR];\n }\n if (input[_REOC] != null) {\n entries[_REOC] = input[_REOC];\n }\n return entries;\n}, \"se_ExecuteChangeSetInput\");\nvar se_GetGeneratedTemplateInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_F] != null) {\n entries[_F] = input[_F];\n }\n if (input[_GTN] != null) {\n entries[_GTN] = input[_GTN];\n }\n return entries;\n}, \"se_GetGeneratedTemplateInput\");\nvar se_GetStackPolicyInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n return entries;\n}, \"se_GetStackPolicyInput\");\nvar se_GetTemplateInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_CSN] != null) {\n entries[_CSN] = input[_CSN];\n }\n if (input[_TS] != null) {\n entries[_TS] = input[_TS];\n }\n return entries;\n}, \"se_GetTemplateInput\");\nvar se_GetTemplateSummaryInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n if (input[_TSC] != null) {\n const memberEntries = se_TemplateSummaryConfig(input[_TSC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `TemplateSummaryConfig.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_GetTemplateSummaryInput\");\nvar se_ImportStacksToStackSetInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_SIt] != null) {\n const memberEntries = se_StackIdList(input[_SIt], context);\n if (((_a = input[_SIt]) == null ? void 0 : _a.length) === 0) {\n entries.StackIds = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `StackIds.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_SIU] != null) {\n entries[_SIU] = input[_SIU];\n }\n if (input[_OUI] != null) {\n const memberEntries = se_OrganizationalUnitIdList(input[_OUI], context);\n if (((_b = input[_OUI]) == null ? void 0 : _b.length) === 0) {\n entries.OrganizationalUnitIds = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OrganizationalUnitIds.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OP] != null) {\n const memberEntries = se_StackSetOperationPreferences(input[_OP], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OperationPreferences.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OI] === void 0) {\n input[_OI] = (0, import_uuid.v4)();\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ImportStacksToStackSetInput\");\nvar se_JazzLogicalResourceIds = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_JazzLogicalResourceIds\");\nvar se_JazzResourceIdentifierProperties = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n Object.keys(input).filter((key) => input[key] != null).forEach((key) => {\n entries[`entry.${counter}.key`] = key;\n entries[`entry.${counter}.value`] = input[key];\n counter++;\n });\n return entries;\n}, \"se_JazzResourceIdentifierProperties\");\nvar se_ListChangeSetsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_ListChangeSetsInput\");\nvar se_ListExportsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_ListExportsInput\");\nvar se_ListGeneratedTemplatesInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n return entries;\n}, \"se_ListGeneratedTemplatesInput\");\nvar se_ListImportsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_EN] != null) {\n entries[_EN] = input[_EN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_ListImportsInput\");\nvar se_ListResourceScanRelatedResourcesInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_RSI] != null) {\n entries[_RSI] = input[_RSI];\n }\n if (input[_R] != null) {\n const memberEntries = se_ScannedResourceIdentifiers(input[_R], context);\n if (((_a = input[_R]) == null ? void 0 : _a.length) === 0) {\n entries.Resources = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Resources.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n return entries;\n}, \"se_ListResourceScanRelatedResourcesInput\");\nvar se_ListResourceScanResourcesInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_RSI] != null) {\n entries[_RSI] = input[_RSI];\n }\n if (input[_RI] != null) {\n entries[_RI] = input[_RI];\n }\n if (input[_RTP] != null) {\n entries[_RTP] = input[_RTP];\n }\n if (input[_TK] != null) {\n entries[_TK] = input[_TK];\n }\n if (input[_TV] != null) {\n entries[_TV] = input[_TV];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n return entries;\n}, \"se_ListResourceScanResourcesInput\");\nvar se_ListResourceScansInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n return entries;\n}, \"se_ListResourceScansInput\");\nvar se_ListStackInstanceResourceDriftsInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_SIRDS] != null) {\n const memberEntries = se_StackResourceDriftStatusFilters(input[_SIRDS], context);\n if (((_a = input[_SIRDS]) == null ? void 0 : _a.length) === 0) {\n entries.StackInstanceResourceDriftStatuses = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `StackInstanceResourceDriftStatuses.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_SIA] != null) {\n entries[_SIA] = input[_SIA];\n }\n if (input[_SIR] != null) {\n entries[_SIR] = input[_SIR];\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ListStackInstanceResourceDriftsInput\");\nvar se_ListStackInstancesInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_Fi] != null) {\n const memberEntries = se_StackInstanceFilters(input[_Fi], context);\n if (((_a = input[_Fi]) == null ? void 0 : _a.length) === 0) {\n entries.Filters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Filters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_SIA] != null) {\n entries[_SIA] = input[_SIA];\n }\n if (input[_SIR] != null) {\n entries[_SIR] = input[_SIR];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ListStackInstancesInput\");\nvar se_ListStackResourcesInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_ListStackResourcesInput\");\nvar se_ListStackSetAutoDeploymentTargetsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ListStackSetAutoDeploymentTargetsInput\");\nvar se_ListStackSetOperationResultsInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n if (input[_Fi] != null) {\n const memberEntries = se_OperationResultFilters(input[_Fi], context);\n if (((_a = input[_Fi]) == null ? void 0 : _a.length) === 0) {\n entries.Filters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Filters.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_ListStackSetOperationResultsInput\");\nvar se_ListStackSetOperationsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ListStackSetOperationsInput\");\nvar se_ListStackSetsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_S] != null) {\n entries[_S] = input[_S];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ListStackSetsInput\");\nvar se_ListStacksInput = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_SSF] != null) {\n const memberEntries = se_StackStatusFilter(input[_SSF], context);\n if (((_a = input[_SSF]) == null ? void 0 : _a.length) === 0) {\n entries.StackStatusFilter = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `StackStatusFilter.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_ListStacksInput\");\nvar se_ListTypeRegistrationsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_TA] != null) {\n entries[_TA] = input[_TA];\n }\n if (input[_RSF] != null) {\n entries[_RSF] = input[_RSF];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_ListTypeRegistrationsInput\");\nvar se_ListTypesInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Vi] != null) {\n entries[_Vi] = input[_Vi];\n }\n if (input[_PTr] != null) {\n entries[_PTr] = input[_PTr];\n }\n if (input[_DSep] != null) {\n entries[_DSep] = input[_DSep];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_Fi] != null) {\n const memberEntries = se_TypeFilters(input[_Fi], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Filters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n return entries;\n}, \"se_ListTypesInput\");\nvar se_ListTypeVersionsInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_MR] != null) {\n entries[_MR] = input[_MR];\n }\n if (input[_NT] != null) {\n entries[_NT] = input[_NT];\n }\n if (input[_DSep] != null) {\n entries[_DSep] = input[_DSep];\n }\n if (input[_PI] != null) {\n entries[_PI] = input[_PI];\n }\n return entries;\n}, \"se_ListTypeVersionsInput\");\nvar se_LoggingConfig = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_LRA] != null) {\n entries[_LRA] = input[_LRA];\n }\n if (input[_LGN] != null) {\n entries[_LGN] = input[_LGN];\n }\n return entries;\n}, \"se_LoggingConfig\");\nvar se_LogicalResourceIds = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_LogicalResourceIds\");\nvar se_ManagedExecution = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Act] != null) {\n entries[_Act] = input[_Act];\n }\n return entries;\n}, \"se_ManagedExecution\");\nvar se_NotificationARNs = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_NotificationARNs\");\nvar se_OperationResultFilter = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_N] != null) {\n entries[_N] = input[_N];\n }\n if (input[_Va] != null) {\n entries[_Va] = input[_Va];\n }\n return entries;\n}, \"se_OperationResultFilter\");\nvar se_OperationResultFilters = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_OperationResultFilter(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_OperationResultFilters\");\nvar se_OrganizationalUnitIdList = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_OrganizationalUnitIdList\");\nvar se_Parameter = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_PK] != null) {\n entries[_PK] = input[_PK];\n }\n if (input[_PV] != null) {\n entries[_PV] = input[_PV];\n }\n if (input[_UPV] != null) {\n entries[_UPV] = input[_UPV];\n }\n if (input[_RV] != null) {\n entries[_RV] = input[_RV];\n }\n return entries;\n}, \"se_Parameter\");\nvar se_Parameters = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_Parameter(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_Parameters\");\nvar se_PublishTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_PVN] != null) {\n entries[_PVN] = input[_PVN];\n }\n return entries;\n}, \"se_PublishTypeInput\");\nvar se_RecordHandlerProgressInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_BT] != null) {\n entries[_BT] = input[_BT];\n }\n if (input[_OS] != null) {\n entries[_OS] = input[_OS];\n }\n if (input[_COS] != null) {\n entries[_COS] = input[_COS];\n }\n if (input[_SM] != null) {\n entries[_SM] = input[_SM];\n }\n if (input[_EC] != null) {\n entries[_EC] = input[_EC];\n }\n if (input[_RM] != null) {\n entries[_RM] = input[_RM];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n return entries;\n}, \"se_RecordHandlerProgressInput\");\nvar se_RegionList = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_RegionList\");\nvar se_RegisterPublisherInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_ATAC] != null) {\n entries[_ATAC] = input[_ATAC];\n }\n if (input[_CAo] != null) {\n entries[_CAo] = input[_CAo];\n }\n return entries;\n}, \"se_RegisterPublisherInput\");\nvar se_RegisterTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_SHP] != null) {\n entries[_SHP] = input[_SHP];\n }\n if (input[_LC] != null) {\n const memberEntries = se_LoggingConfig(input[_LC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `LoggingConfig.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_ERA] != null) {\n entries[_ERA] = input[_ERA];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n return entries;\n}, \"se_RegisterTypeInput\");\nvar se_ResourceDefinition = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_RTes] != null) {\n entries[_RTes] = input[_RTes];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n if (input[_RI] != null) {\n const memberEntries = se_ResourceIdentifierProperties(input[_RI], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourceIdentifier.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_ResourceDefinition\");\nvar se_ResourceDefinitions = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_ResourceDefinition(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_ResourceDefinitions\");\nvar se_ResourceIdentifierProperties = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n Object.keys(input).filter((key) => input[key] != null).forEach((key) => {\n entries[`entry.${counter}.key`] = key;\n entries[`entry.${counter}.value`] = input[key];\n counter++;\n });\n return entries;\n}, \"se_ResourceIdentifierProperties\");\nvar se_ResourcesToImport = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_ResourceToImport(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_ResourcesToImport\");\nvar se_ResourcesToSkip = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_ResourcesToSkip\");\nvar se_ResourceToImport = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_RTes] != null) {\n entries[_RTes] = input[_RTes];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n if (input[_RI] != null) {\n const memberEntries = se_ResourceIdentifierProperties(input[_RI], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourceIdentifier.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_ResourceToImport\");\nvar se_ResourceTypes = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_ResourceTypes\");\nvar se_RetainResources = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_RetainResources\");\nvar se_RollbackConfiguration = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_RTo] != null) {\n const memberEntries = se_RollbackTriggers(input[_RTo], context);\n if (((_a = input[_RTo]) == null ? void 0 : _a.length) === 0) {\n entries.RollbackTriggers = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RollbackTriggers.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_MTIM] != null) {\n entries[_MTIM] = input[_MTIM];\n }\n return entries;\n}, \"se_RollbackConfiguration\");\nvar se_RollbackStackInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_RARN] != null) {\n entries[_RARN] = input[_RARN];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n if (input[_REOC] != null) {\n entries[_REOC] = input[_REOC];\n }\n return entries;\n}, \"se_RollbackStackInput\");\nvar se_RollbackTrigger = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n return entries;\n}, \"se_RollbackTrigger\");\nvar se_RollbackTriggers = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_RollbackTrigger(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_RollbackTriggers\");\nvar se_ScannedResourceIdentifier = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_RTes] != null) {\n entries[_RTes] = input[_RTes];\n }\n if (input[_RI] != null) {\n const memberEntries = se_JazzResourceIdentifierProperties(input[_RI], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourceIdentifier.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_ScannedResourceIdentifier\");\nvar se_ScannedResourceIdentifiers = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_ScannedResourceIdentifier(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_ScannedResourceIdentifiers\");\nvar se_SetStackPolicyInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_SPB] != null) {\n entries[_SPB] = input[_SPB];\n }\n if (input[_SPURL] != null) {\n entries[_SPURL] = input[_SPURL];\n }\n return entries;\n}, \"se_SetStackPolicyInput\");\nvar se_SetTypeConfigurationInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_TA] != null) {\n entries[_TA] = input[_TA];\n }\n if (input[_Co] != null) {\n entries[_Co] = input[_Co];\n }\n if (input[_CAon] != null) {\n entries[_CAon] = input[_CAon];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n return entries;\n}, \"se_SetTypeConfigurationInput\");\nvar se_SetTypeDefaultVersionInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_VI] != null) {\n entries[_VI] = input[_VI];\n }\n return entries;\n}, \"se_SetTypeDefaultVersionInput\");\nvar se_SignalResourceInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_LRI] != null) {\n entries[_LRI] = input[_LRI];\n }\n if (input[_UI] != null) {\n entries[_UI] = input[_UI];\n }\n if (input[_S] != null) {\n entries[_S] = input[_S];\n }\n return entries;\n}, \"se_SignalResourceInput\");\nvar se_StackIdList = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_StackIdList\");\nvar se_StackInstanceFilter = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_N] != null) {\n entries[_N] = input[_N];\n }\n if (input[_Va] != null) {\n entries[_Va] = input[_Va];\n }\n return entries;\n}, \"se_StackInstanceFilter\");\nvar se_StackInstanceFilters = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_StackInstanceFilter(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_StackInstanceFilters\");\nvar se_StackResourceDriftStatusFilters = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_StackResourceDriftStatusFilters\");\nvar se_StackSetOperationPreferences = /* @__PURE__ */ __name((input, context) => {\n var _a;\n const entries = {};\n if (input[_RCT] != null) {\n entries[_RCT] = input[_RCT];\n }\n if (input[_RO] != null) {\n const memberEntries = se_RegionList(input[_RO], context);\n if (((_a = input[_RO]) == null ? void 0 : _a.length) === 0) {\n entries.RegionOrder = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RegionOrder.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_FTC] != null) {\n entries[_FTC] = input[_FTC];\n }\n if (input[_FTP] != null) {\n entries[_FTP] = input[_FTP];\n }\n if (input[_MCC] != null) {\n entries[_MCC] = input[_MCC];\n }\n if (input[_MCP] != null) {\n entries[_MCP] = input[_MCP];\n }\n if (input[_CM] != null) {\n entries[_CM] = input[_CM];\n }\n return entries;\n}, \"se_StackSetOperationPreferences\");\nvar se_StackStatusFilter = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_StackStatusFilter\");\nvar se_StartResourceScanInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n return entries;\n}, \"se_StartResourceScanInput\");\nvar se_StopStackSetOperationInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_StopStackSetOperationInput\");\nvar se_Tag = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_K] != null) {\n entries[_K] = input[_K];\n }\n if (input[_Val] != null) {\n entries[_Val] = input[_Val];\n }\n return entries;\n}, \"se_Tag\");\nvar se_Tags = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_Tag(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_Tags\");\nvar se_TemplateConfiguration = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_DPe] != null) {\n entries[_DPe] = input[_DPe];\n }\n if (input[_URP] != null) {\n entries[_URP] = input[_URP];\n }\n return entries;\n}, \"se_TemplateConfiguration\");\nvar se_TemplateSummaryConfig = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_TURTAW] != null) {\n entries[_TURTAW] = input[_TURTAW];\n }\n return entries;\n}, \"se_TemplateSummaryConfig\");\nvar se_TestTypeInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Ar] != null) {\n entries[_Ar] = input[_Ar];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n if (input[_VI] != null) {\n entries[_VI] = input[_VI];\n }\n if (input[_LDB] != null) {\n entries[_LDB] = input[_LDB];\n }\n return entries;\n}, \"se_TestTypeInput\");\nvar se_TypeConfigurationIdentifier = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_TA] != null) {\n entries[_TA] = input[_TA];\n }\n if (input[_TCA] != null) {\n entries[_TCA] = input[_TCA];\n }\n if (input[_TCAy] != null) {\n entries[_TCAy] = input[_TCAy];\n }\n if (input[_T] != null) {\n entries[_T] = input[_T];\n }\n if (input[_TN] != null) {\n entries[_TN] = input[_TN];\n }\n return entries;\n}, \"se_TypeConfigurationIdentifier\");\nvar se_TypeConfigurationIdentifiers = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_TypeConfigurationIdentifier(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_TypeConfigurationIdentifiers\");\nvar se_TypeFilters = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_Ca] != null) {\n entries[_Ca] = input[_Ca];\n }\n if (input[_PI] != null) {\n entries[_PI] = input[_PI];\n }\n if (input[_TNP] != null) {\n entries[_TNP] = input[_TNP];\n }\n return entries;\n}, \"se_TypeFilters\");\nvar se_UpdateGeneratedTemplateInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b;\n const entries = {};\n if (input[_GTN] != null) {\n entries[_GTN] = input[_GTN];\n }\n if (input[_NGTN] != null) {\n entries[_NGTN] = input[_NGTN];\n }\n if (input[_AR] != null) {\n const memberEntries = se_ResourceDefinitions(input[_AR], context);\n if (((_a = input[_AR]) == null ? void 0 : _a.length) === 0) {\n entries.AddResources = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `AddResources.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RRe] != null) {\n const memberEntries = se_JazzLogicalResourceIds(input[_RRe], context);\n if (((_b = input[_RRe]) == null ? void 0 : _b.length) === 0) {\n entries.RemoveResources = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RemoveResources.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RAR] != null) {\n entries[_RAR] = input[_RAR];\n }\n if (input[_TC] != null) {\n const memberEntries = se_TemplateConfiguration(input[_TC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `TemplateConfiguration.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_UpdateGeneratedTemplateInput\");\nvar se_UpdateStackInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c, _d, _e2;\n const entries = {};\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_UPT] != null) {\n entries[_UPT] = input[_UPT];\n }\n if (input[_SPDUB] != null) {\n entries[_SPDUB] = input[_SPDUB];\n }\n if (input[_SPDUURL] != null) {\n entries[_SPDUURL] = input[_SPDUURL];\n }\n if (input[_P] != null) {\n const memberEntries = se_Parameters(input[_P], context);\n if (((_a = input[_P]) == null ? void 0 : _a.length) === 0) {\n entries.Parameters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Parameters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_C] != null) {\n const memberEntries = se_Capabilities(input[_C], context);\n if (((_b = input[_C]) == null ? void 0 : _b.length) === 0) {\n entries.Capabilities = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Capabilities.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RTe] != null) {\n const memberEntries = se_ResourceTypes(input[_RTe], context);\n if (((_c = input[_RTe]) == null ? void 0 : _c.length) === 0) {\n entries.ResourceTypes = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ResourceTypes.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_RARN] != null) {\n entries[_RARN] = input[_RARN];\n }\n if (input[_RC] != null) {\n const memberEntries = se_RollbackConfiguration(input[_RC], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `RollbackConfiguration.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_SPB] != null) {\n entries[_SPB] = input[_SPB];\n }\n if (input[_SPURL] != null) {\n entries[_SPURL] = input[_SPURL];\n }\n if (input[_NARN] != null) {\n const memberEntries = se_NotificationARNs(input[_NARN], context);\n if (((_d = input[_NARN]) == null ? void 0 : _d.length) === 0) {\n entries.NotificationARNs = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `NotificationARNs.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Ta] != null) {\n const memberEntries = se_Tags(input[_Ta], context);\n if (((_e2 = input[_Ta]) == null ? void 0 : _e2.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_DR] != null) {\n entries[_DR] = input[_DR];\n }\n if (input[_CRT] != null) {\n entries[_CRT] = input[_CRT];\n }\n if (input[_REOC] != null) {\n entries[_REOC] = input[_REOC];\n }\n return entries;\n}, \"se_UpdateStackInput\");\nvar se_UpdateStackInstancesInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_Ac] != null) {\n const memberEntries = se_AccountList(input[_Ac], context);\n if (((_a = input[_Ac]) == null ? void 0 : _a.length) === 0) {\n entries.Accounts = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Accounts.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_DTep] != null) {\n const memberEntries = se_DeploymentTargets(input[_DTep], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `DeploymentTargets.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Re] != null) {\n const memberEntries = se_RegionList(input[_Re], context);\n if (((_b = input[_Re]) == null ? void 0 : _b.length) === 0) {\n entries.Regions = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Regions.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_PO] != null) {\n const memberEntries = se_Parameters(input[_PO], context);\n if (((_c = input[_PO]) == null ? void 0 : _c.length) === 0) {\n entries.ParameterOverrides = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ParameterOverrides.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OP] != null) {\n const memberEntries = se_StackSetOperationPreferences(input[_OP], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OperationPreferences.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OI] === void 0) {\n input[_OI] = (0, import_uuid.v4)();\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_UpdateStackInstancesInput\");\nvar se_UpdateStackSetInput = /* @__PURE__ */ __name((input, context) => {\n var _a, _b, _c, _d, _e2;\n const entries = {};\n if (input[_SSN] != null) {\n entries[_SSN] = input[_SSN];\n }\n if (input[_D] != null) {\n entries[_D] = input[_D];\n }\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n if (input[_UPT] != null) {\n entries[_UPT] = input[_UPT];\n }\n if (input[_P] != null) {\n const memberEntries = se_Parameters(input[_P], context);\n if (((_a = input[_P]) == null ? void 0 : _a.length) === 0) {\n entries.Parameters = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Parameters.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_C] != null) {\n const memberEntries = se_Capabilities(input[_C], context);\n if (((_b = input[_C]) == null ? void 0 : _b.length) === 0) {\n entries.Capabilities = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Capabilities.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Ta] != null) {\n const memberEntries = se_Tags(input[_Ta], context);\n if (((_c = input[_Ta]) == null ? void 0 : _c.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OP] != null) {\n const memberEntries = se_StackSetOperationPreferences(input[_OP], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `OperationPreferences.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_ARARN] != null) {\n entries[_ARARN] = input[_ARARN];\n }\n if (input[_ERN] != null) {\n entries[_ERN] = input[_ERN];\n }\n if (input[_DTep] != null) {\n const memberEntries = se_DeploymentTargets(input[_DTep], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `DeploymentTargets.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_PM] != null) {\n entries[_PM] = input[_PM];\n }\n if (input[_AD] != null) {\n const memberEntries = se_AutoDeployment(input[_AD], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `AutoDeployment.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_OI] === void 0) {\n input[_OI] = (0, import_uuid.v4)();\n }\n if (input[_OI] != null) {\n entries[_OI] = input[_OI];\n }\n if (input[_Ac] != null) {\n const memberEntries = se_AccountList(input[_Ac], context);\n if (((_d = input[_Ac]) == null ? void 0 : _d.length) === 0) {\n entries.Accounts = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Accounts.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_Re] != null) {\n const memberEntries = se_RegionList(input[_Re], context);\n if (((_e2 = input[_Re]) == null ? void 0 : _e2.length) === 0) {\n entries.Regions = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Regions.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n if (input[_ME] != null) {\n const memberEntries = se_ManagedExecution(input[_ME], context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ManagedExecution.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_UpdateStackSetInput\");\nvar se_UpdateTerminationProtectionInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_ETP] != null) {\n entries[_ETP] = input[_ETP];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n return entries;\n}, \"se_UpdateTerminationProtectionInput\");\nvar se_ValidateTemplateInput = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_TB] != null) {\n entries[_TB] = input[_TB];\n }\n if (input[_TURL] != null) {\n entries[_TURL] = input[_TURL];\n }\n return entries;\n}, \"se_ValidateTemplateInput\");\nvar de_AccountGateResult = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n return contents;\n}, \"de_AccountGateResult\");\nvar de_AccountLimit = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_N] != null) {\n contents[_N] = (0, import_smithy_client.expectString)(output[_N]);\n }\n if (output[_Val] != null) {\n contents[_Val] = (0, import_smithy_client.strictParseInt32)(output[_Val]);\n }\n return contents;\n}, \"de_AccountLimit\");\nvar de_AccountLimitList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_AccountLimit(entry, context);\n });\n}, \"de_AccountLimitList\");\nvar de_AccountList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_AccountList\");\nvar de_ActivateOrganizationsAccessOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_ActivateOrganizationsAccessOutput\");\nvar de_ActivateTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n return contents;\n}, \"de_ActivateTypeOutput\");\nvar de_AllowedValues = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_AllowedValues\");\nvar de_AlreadyExistsException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_AlreadyExistsException\");\nvar de_AutoDeployment = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_E] != null) {\n contents[_E] = (0, import_smithy_client.parseBoolean)(output[_E]);\n }\n if (output[_RSOAR] != null) {\n contents[_RSOAR] = (0, import_smithy_client.parseBoolean)(output[_RSOAR]);\n }\n return contents;\n}, \"de_AutoDeployment\");\nvar de_BatchDescribeTypeConfigurationsError = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_EC] != null) {\n contents[_EC] = (0, import_smithy_client.expectString)(output[_EC]);\n }\n if (output[_EM] != null) {\n contents[_EM] = (0, import_smithy_client.expectString)(output[_EM]);\n }\n if (output[_TCIy] != null) {\n contents[_TCIy] = de_TypeConfigurationIdentifier(output[_TCIy], context);\n }\n return contents;\n}, \"de_BatchDescribeTypeConfigurationsError\");\nvar de_BatchDescribeTypeConfigurationsErrors = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_BatchDescribeTypeConfigurationsError(entry, context);\n });\n}, \"de_BatchDescribeTypeConfigurationsErrors\");\nvar de_BatchDescribeTypeConfigurationsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Errors === \"\") {\n contents[_Er] = [];\n } else if (output[_Er] != null && output[_Er][_m] != null) {\n contents[_Er] = de_BatchDescribeTypeConfigurationsErrors((0, import_smithy_client.getArrayIfSingleItem)(output[_Er][_m]), context);\n }\n if (output.UnprocessedTypeConfigurations === \"\") {\n contents[_UTC] = [];\n } else if (output[_UTC] != null && output[_UTC][_m] != null) {\n contents[_UTC] = de_UnprocessedTypeConfigurations((0, import_smithy_client.getArrayIfSingleItem)(output[_UTC][_m]), context);\n }\n if (output.TypeConfigurations === \"\") {\n contents[_TCy] = [];\n } else if (output[_TCy] != null && output[_TCy][_m] != null) {\n contents[_TCy] = de_TypeConfigurationDetailsList((0, import_smithy_client.getArrayIfSingleItem)(output[_TCy][_m]), context);\n }\n return contents;\n}, \"de_BatchDescribeTypeConfigurationsOutput\");\nvar de_Capabilities = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_Capabilities\");\nvar de_CFNRegistryException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_CFNRegistryException\");\nvar de_Change = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n if (output[_HIC] != null) {\n contents[_HIC] = (0, import_smithy_client.strictParseInt32)(output[_HIC]);\n }\n if (output[_RCe] != null) {\n contents[_RCe] = de_ResourceChange(output[_RCe], context);\n }\n return contents;\n}, \"de_Change\");\nvar de_Changes = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_Change(entry, context);\n });\n}, \"de_Changes\");\nvar de_ChangeSetHook = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_IP] != null) {\n contents[_IP] = (0, import_smithy_client.expectString)(output[_IP]);\n }\n if (output[_FM] != null) {\n contents[_FM] = (0, import_smithy_client.expectString)(output[_FM]);\n }\n if (output[_TN] != null) {\n contents[_TN] = (0, import_smithy_client.expectString)(output[_TN]);\n }\n if (output[_TVI] != null) {\n contents[_TVI] = (0, import_smithy_client.expectString)(output[_TVI]);\n }\n if (output[_TCVI] != null) {\n contents[_TCVI] = (0, import_smithy_client.expectString)(output[_TCVI]);\n }\n if (output[_TD] != null) {\n contents[_TD] = de_ChangeSetHookTargetDetails(output[_TD], context);\n }\n return contents;\n}, \"de_ChangeSetHook\");\nvar de_ChangeSetHookResourceTargetDetails = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_RA] != null) {\n contents[_RA] = (0, import_smithy_client.expectString)(output[_RA]);\n }\n return contents;\n}, \"de_ChangeSetHookResourceTargetDetails\");\nvar de_ChangeSetHooks = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ChangeSetHook(entry, context);\n });\n}, \"de_ChangeSetHooks\");\nvar de_ChangeSetHookTargetDetails = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_TTa] != null) {\n contents[_TTa] = (0, import_smithy_client.expectString)(output[_TTa]);\n }\n if (output[_RTD] != null) {\n contents[_RTD] = de_ChangeSetHookResourceTargetDetails(output[_RTD], context);\n }\n return contents;\n}, \"de_ChangeSetHookTargetDetails\");\nvar de_ChangeSetNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_ChangeSetNotFoundException\");\nvar de_ChangeSetSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ChangeSetSummary(entry, context);\n });\n}, \"de_ChangeSetSummaries\");\nvar de_ChangeSetSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_CSIh] != null) {\n contents[_CSIh] = (0, import_smithy_client.expectString)(output[_CSIh]);\n }\n if (output[_CSN] != null) {\n contents[_CSN] = (0, import_smithy_client.expectString)(output[_CSN]);\n }\n if (output[_ES] != null) {\n contents[_ES] = (0, import_smithy_client.expectString)(output[_ES]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_CTr] != null) {\n contents[_CTr] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTr]));\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_INS] != null) {\n contents[_INS] = (0, import_smithy_client.parseBoolean)(output[_INS]);\n }\n if (output[_PCSI] != null) {\n contents[_PCSI] = (0, import_smithy_client.expectString)(output[_PCSI]);\n }\n if (output[_RCSI] != null) {\n contents[_RCSI] = (0, import_smithy_client.expectString)(output[_RCSI]);\n }\n if (output[_IER] != null) {\n contents[_IER] = (0, import_smithy_client.parseBoolean)(output[_IER]);\n }\n return contents;\n}, \"de_ChangeSetSummary\");\nvar de_ConcurrentResourcesLimitExceededException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_ConcurrentResourcesLimitExceededException\");\nvar de_ContinueUpdateRollbackOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_ContinueUpdateRollbackOutput\");\nvar de_CreateChangeSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_I] != null) {\n contents[_I] = (0, import_smithy_client.expectString)(output[_I]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_CreateChangeSetOutput\");\nvar de_CreatedButModifiedException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_CreatedButModifiedException\");\nvar de_CreateGeneratedTemplateOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_GTI] != null) {\n contents[_GTI] = (0, import_smithy_client.expectString)(output[_GTI]);\n }\n return contents;\n}, \"de_CreateGeneratedTemplateOutput\");\nvar de_CreateStackInstancesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n return contents;\n}, \"de_CreateStackInstancesOutput\");\nvar de_CreateStackOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_CreateStackOutput\");\nvar de_CreateStackSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SSI] != null) {\n contents[_SSI] = (0, import_smithy_client.expectString)(output[_SSI]);\n }\n return contents;\n}, \"de_CreateStackSetOutput\");\nvar de_DeactivateOrganizationsAccessOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_DeactivateOrganizationsAccessOutput\");\nvar de_DeactivateTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_DeactivateTypeOutput\");\nvar de_DeleteChangeSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_DeleteChangeSetOutput\");\nvar de_DeleteStackInstancesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n return contents;\n}, \"de_DeleteStackInstancesOutput\");\nvar de_DeleteStackSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_DeleteStackSetOutput\");\nvar de_DeploymentTargets = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Accounts === \"\") {\n contents[_Ac] = [];\n } else if (output[_Ac] != null && output[_Ac][_m] != null) {\n contents[_Ac] = de_AccountList((0, import_smithy_client.getArrayIfSingleItem)(output[_Ac][_m]), context);\n }\n if (output[_AUc] != null) {\n contents[_AUc] = (0, import_smithy_client.expectString)(output[_AUc]);\n }\n if (output.OrganizationalUnitIds === \"\") {\n contents[_OUI] = [];\n } else if (output[_OUI] != null && output[_OUI][_m] != null) {\n contents[_OUI] = de_OrganizationalUnitIdList((0, import_smithy_client.getArrayIfSingleItem)(output[_OUI][_m]), context);\n }\n if (output[_AFT] != null) {\n contents[_AFT] = (0, import_smithy_client.expectString)(output[_AFT]);\n }\n return contents;\n}, \"de_DeploymentTargets\");\nvar de_DeregisterTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_DeregisterTypeOutput\");\nvar de_DescribeAccountLimitsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.AccountLimits === \"\") {\n contents[_AL] = [];\n } else if (output[_AL] != null && output[_AL][_m] != null) {\n contents[_AL] = de_AccountLimitList((0, import_smithy_client.getArrayIfSingleItem)(output[_AL][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_DescribeAccountLimitsOutput\");\nvar de_DescribeChangeSetHooksOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_CSIh] != null) {\n contents[_CSIh] = (0, import_smithy_client.expectString)(output[_CSIh]);\n }\n if (output[_CSN] != null) {\n contents[_CSN] = (0, import_smithy_client.expectString)(output[_CSN]);\n }\n if (output.Hooks === \"\") {\n contents[_H] = [];\n } else if (output[_H] != null && output[_H][_m] != null) {\n contents[_H] = de_ChangeSetHooks((0, import_smithy_client.getArrayIfSingleItem)(output[_H][_m]), context);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n return contents;\n}, \"de_DescribeChangeSetHooksOutput\");\nvar de_DescribeChangeSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_CSN] != null) {\n contents[_CSN] = (0, import_smithy_client.expectString)(output[_CSN]);\n }\n if (output[_CSIh] != null) {\n contents[_CSIh] = (0, import_smithy_client.expectString)(output[_CSIh]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output.Parameters === \"\") {\n contents[_P] = [];\n } else if (output[_P] != null && output[_P][_m] != null) {\n contents[_P] = de_Parameters((0, import_smithy_client.getArrayIfSingleItem)(output[_P][_m]), context);\n }\n if (output[_CTr] != null) {\n contents[_CTr] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTr]));\n }\n if (output[_ES] != null) {\n contents[_ES] = (0, import_smithy_client.expectString)(output[_ES]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output.NotificationARNs === \"\") {\n contents[_NARN] = [];\n } else if (output[_NARN] != null && output[_NARN][_m] != null) {\n contents[_NARN] = de_NotificationARNs((0, import_smithy_client.getArrayIfSingleItem)(output[_NARN][_m]), context);\n }\n if (output[_RC] != null) {\n contents[_RC] = de_RollbackConfiguration(output[_RC], context);\n }\n if (output.Capabilities === \"\") {\n contents[_C] = [];\n } else if (output[_C] != null && output[_C][_m] != null) {\n contents[_C] = de_Capabilities((0, import_smithy_client.getArrayIfSingleItem)(output[_C][_m]), context);\n }\n if (output.Tags === \"\") {\n contents[_Ta] = [];\n } else if (output[_Ta] != null && output[_Ta][_m] != null) {\n contents[_Ta] = de_Tags((0, import_smithy_client.getArrayIfSingleItem)(output[_Ta][_m]), context);\n }\n if (output.Changes === \"\") {\n contents[_Ch] = [];\n } else if (output[_Ch] != null && output[_Ch][_m] != null) {\n contents[_Ch] = de_Changes((0, import_smithy_client.getArrayIfSingleItem)(output[_Ch][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n if (output[_INS] != null) {\n contents[_INS] = (0, import_smithy_client.parseBoolean)(output[_INS]);\n }\n if (output[_PCSI] != null) {\n contents[_PCSI] = (0, import_smithy_client.expectString)(output[_PCSI]);\n }\n if (output[_RCSI] != null) {\n contents[_RCSI] = (0, import_smithy_client.expectString)(output[_RCSI]);\n }\n if (output[_OSF] != null) {\n contents[_OSF] = (0, import_smithy_client.expectString)(output[_OSF]);\n }\n if (output[_IER] != null) {\n contents[_IER] = (0, import_smithy_client.parseBoolean)(output[_IER]);\n }\n return contents;\n}, \"de_DescribeChangeSetOutput\");\nvar de_DescribeGeneratedTemplateOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_GTI] != null) {\n contents[_GTI] = (0, import_smithy_client.expectString)(output[_GTI]);\n }\n if (output[_GTN] != null) {\n contents[_GTN] = (0, import_smithy_client.expectString)(output[_GTN]);\n }\n if (output.Resources === \"\") {\n contents[_R] = [];\n } else if (output[_R] != null && output[_R][_m] != null) {\n contents[_R] = de_ResourceDetails((0, import_smithy_client.getArrayIfSingleItem)(output[_R][_m]), context);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_CTr] != null) {\n contents[_CTr] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTr]));\n }\n if (output[_LUT] != null) {\n contents[_LUT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LUT]));\n }\n if (output[_Pr] != null) {\n contents[_Pr] = de_TemplateProgress(output[_Pr], context);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_TC] != null) {\n contents[_TC] = de_TemplateConfiguration(output[_TC], context);\n }\n if (output[_TW] != null) {\n contents[_TW] = (0, import_smithy_client.strictParseInt32)(output[_TW]);\n }\n return contents;\n}, \"de_DescribeGeneratedTemplateOutput\");\nvar de_DescribeOrganizationsAccessOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n return contents;\n}, \"de_DescribeOrganizationsAccessOutput\");\nvar de_DescribePublisherOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PI] != null) {\n contents[_PI] = (0, import_smithy_client.expectString)(output[_PI]);\n }\n if (output[_PS] != null) {\n contents[_PS] = (0, import_smithy_client.expectString)(output[_PS]);\n }\n if (output[_IPd] != null) {\n contents[_IPd] = (0, import_smithy_client.expectString)(output[_IPd]);\n }\n if (output[_PP] != null) {\n contents[_PP] = (0, import_smithy_client.expectString)(output[_PP]);\n }\n return contents;\n}, \"de_DescribePublisherOutput\");\nvar de_DescribeResourceScanOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RSI] != null) {\n contents[_RSI] = (0, import_smithy_client.expectString)(output[_RSI]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_ST] != null) {\n contents[_ST] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_ST]));\n }\n if (output[_ET] != null) {\n contents[_ET] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_ET]));\n }\n if (output[_PC] != null) {\n contents[_PC] = (0, import_smithy_client.strictParseFloat)(output[_PC]);\n }\n if (output.ResourceTypes === \"\") {\n contents[_RTe] = [];\n } else if (output[_RTe] != null && output[_RTe][_m] != null) {\n contents[_RTe] = de_ResourceTypes((0, import_smithy_client.getArrayIfSingleItem)(output[_RTe][_m]), context);\n }\n if (output[_RSes] != null) {\n contents[_RSes] = (0, import_smithy_client.strictParseInt32)(output[_RSes]);\n }\n if (output[_RRes] != null) {\n contents[_RRes] = (0, import_smithy_client.strictParseInt32)(output[_RRes]);\n }\n return contents;\n}, \"de_DescribeResourceScanOutput\");\nvar de_DescribeStackDriftDetectionStatusOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_SDDI] != null) {\n contents[_SDDI] = (0, import_smithy_client.expectString)(output[_SDDI]);\n }\n if (output[_SDS] != null) {\n contents[_SDS] = (0, import_smithy_client.expectString)(output[_SDS]);\n }\n if (output[_DSet] != null) {\n contents[_DSet] = (0, import_smithy_client.expectString)(output[_DSet]);\n }\n if (output[_DSRet] != null) {\n contents[_DSRet] = (0, import_smithy_client.expectString)(output[_DSRet]);\n }\n if (output[_DSRC] != null) {\n contents[_DSRC] = (0, import_smithy_client.strictParseInt32)(output[_DSRC]);\n }\n if (output[_Ti] != null) {\n contents[_Ti] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_Ti]));\n }\n return contents;\n}, \"de_DescribeStackDriftDetectionStatusOutput\");\nvar de_DescribeStackEventsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.StackEvents === \"\") {\n contents[_SE] = [];\n } else if (output[_SE] != null && output[_SE][_m] != null) {\n contents[_SE] = de_StackEvents((0, import_smithy_client.getArrayIfSingleItem)(output[_SE][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_DescribeStackEventsOutput\");\nvar de_DescribeStackInstanceOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SIta] != null) {\n contents[_SIta] = de_StackInstance(output[_SIta], context);\n }\n return contents;\n}, \"de_DescribeStackInstanceOutput\");\nvar de_DescribeStackResourceDriftsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.StackResourceDrifts === \"\") {\n contents[_SRD] = [];\n } else if (output[_SRD] != null && output[_SRD][_m] != null) {\n contents[_SRD] = de_StackResourceDrifts((0, import_smithy_client.getArrayIfSingleItem)(output[_SRD][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_DescribeStackResourceDriftsOutput\");\nvar de_DescribeStackResourceOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SRDt] != null) {\n contents[_SRDt] = de_StackResourceDetail(output[_SRDt], context);\n }\n return contents;\n}, \"de_DescribeStackResourceOutput\");\nvar de_DescribeStackResourcesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.StackResources === \"\") {\n contents[_SRta] = [];\n } else if (output[_SRta] != null && output[_SRta][_m] != null) {\n contents[_SRta] = de_StackResources((0, import_smithy_client.getArrayIfSingleItem)(output[_SRta][_m]), context);\n }\n return contents;\n}, \"de_DescribeStackResourcesOutput\");\nvar de_DescribeStackSetOperationOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SSO] != null) {\n contents[_SSO] = de_StackSetOperation(output[_SSO], context);\n }\n return contents;\n}, \"de_DescribeStackSetOperationOutput\");\nvar de_DescribeStackSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SS] != null) {\n contents[_SS] = de_StackSet(output[_SS], context);\n }\n return contents;\n}, \"de_DescribeStackSetOutput\");\nvar de_DescribeStacksOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Stacks === \"\") {\n contents[_St] = [];\n } else if (output[_St] != null && output[_St][_m] != null) {\n contents[_St] = de_Stacks((0, import_smithy_client.getArrayIfSingleItem)(output[_St][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_DescribeStacksOutput\");\nvar de_DescribeTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n if (output[_TN] != null) {\n contents[_TN] = (0, import_smithy_client.expectString)(output[_TN]);\n }\n if (output[_DVI] != null) {\n contents[_DVI] = (0, import_smithy_client.expectString)(output[_DVI]);\n }\n if (output[_IDV] != null) {\n contents[_IDV] = (0, import_smithy_client.parseBoolean)(output[_IDV]);\n }\n if (output[_TTS] != null) {\n contents[_TTS] = (0, import_smithy_client.expectString)(output[_TTS]);\n }\n if (output[_TTSD] != null) {\n contents[_TTSD] = (0, import_smithy_client.expectString)(output[_TTSD]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_Sc] != null) {\n contents[_Sc] = (0, import_smithy_client.expectString)(output[_Sc]);\n }\n if (output[_PTr] != null) {\n contents[_PTr] = (0, import_smithy_client.expectString)(output[_PTr]);\n }\n if (output[_DSep] != null) {\n contents[_DSep] = (0, import_smithy_client.expectString)(output[_DSep]);\n }\n if (output[_LC] != null) {\n contents[_LC] = de_LoggingConfig(output[_LC], context);\n }\n if (output.RequiredActivatedTypes === \"\") {\n contents[_RAT] = [];\n } else if (output[_RAT] != null && output[_RAT][_m] != null) {\n contents[_RAT] = de_RequiredActivatedTypes((0, import_smithy_client.getArrayIfSingleItem)(output[_RAT][_m]), context);\n }\n if (output[_ERA] != null) {\n contents[_ERA] = (0, import_smithy_client.expectString)(output[_ERA]);\n }\n if (output[_Vi] != null) {\n contents[_Vi] = (0, import_smithy_client.expectString)(output[_Vi]);\n }\n if (output[_SU] != null) {\n contents[_SU] = (0, import_smithy_client.expectString)(output[_SU]);\n }\n if (output[_DU] != null) {\n contents[_DU] = (0, import_smithy_client.expectString)(output[_DU]);\n }\n if (output[_LU] != null) {\n contents[_LU] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LU]));\n }\n if (output[_TCi] != null) {\n contents[_TCi] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_TCi]));\n }\n if (output[_CSo] != null) {\n contents[_CSo] = (0, import_smithy_client.expectString)(output[_CSo]);\n }\n if (output[_PI] != null) {\n contents[_PI] = (0, import_smithy_client.expectString)(output[_PI]);\n }\n if (output[_OTN] != null) {\n contents[_OTN] = (0, import_smithy_client.expectString)(output[_OTN]);\n }\n if (output[_OTA] != null) {\n contents[_OTA] = (0, import_smithy_client.expectString)(output[_OTA]);\n }\n if (output[_PVN] != null) {\n contents[_PVN] = (0, import_smithy_client.expectString)(output[_PVN]);\n }\n if (output[_LPV] != null) {\n contents[_LPV] = (0, import_smithy_client.expectString)(output[_LPV]);\n }\n if (output[_IA] != null) {\n contents[_IA] = (0, import_smithy_client.parseBoolean)(output[_IA]);\n }\n if (output[_AU] != null) {\n contents[_AU] = (0, import_smithy_client.parseBoolean)(output[_AU]);\n }\n return contents;\n}, \"de_DescribeTypeOutput\");\nvar de_DescribeTypeRegistrationOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PSr] != null) {\n contents[_PSr] = (0, import_smithy_client.expectString)(output[_PSr]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_TA] != null) {\n contents[_TA] = (0, import_smithy_client.expectString)(output[_TA]);\n }\n if (output[_TVA] != null) {\n contents[_TVA] = (0, import_smithy_client.expectString)(output[_TVA]);\n }\n return contents;\n}, \"de_DescribeTypeRegistrationOutput\");\nvar de_DetectStackDriftOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SDDI] != null) {\n contents[_SDDI] = (0, import_smithy_client.expectString)(output[_SDDI]);\n }\n return contents;\n}, \"de_DetectStackDriftOutput\");\nvar de_DetectStackResourceDriftOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SRDta] != null) {\n contents[_SRDta] = de_StackResourceDrift(output[_SRDta], context);\n }\n return contents;\n}, \"de_DetectStackResourceDriftOutput\");\nvar de_DetectStackSetDriftOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n return contents;\n}, \"de_DetectStackSetDriftOutput\");\nvar de_EstimateTemplateCostOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_U] != null) {\n contents[_U] = (0, import_smithy_client.expectString)(output[_U]);\n }\n return contents;\n}, \"de_EstimateTemplateCostOutput\");\nvar de_ExecuteChangeSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_ExecuteChangeSetOutput\");\nvar de_Export = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_ESI] != null) {\n contents[_ESI] = (0, import_smithy_client.expectString)(output[_ESI]);\n }\n if (output[_N] != null) {\n contents[_N] = (0, import_smithy_client.expectString)(output[_N]);\n }\n if (output[_Val] != null) {\n contents[_Val] = (0, import_smithy_client.expectString)(output[_Val]);\n }\n return contents;\n}, \"de_Export\");\nvar de_Exports = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_Export(entry, context);\n });\n}, \"de_Exports\");\nvar de_GeneratedTemplateNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_GeneratedTemplateNotFoundException\");\nvar de_GetGeneratedTemplateOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_TB] != null) {\n contents[_TB] = (0, import_smithy_client.expectString)(output[_TB]);\n }\n return contents;\n}, \"de_GetGeneratedTemplateOutput\");\nvar de_GetStackPolicyOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SPB] != null) {\n contents[_SPB] = (0, import_smithy_client.expectString)(output[_SPB]);\n }\n return contents;\n}, \"de_GetStackPolicyOutput\");\nvar de_GetTemplateOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_TB] != null) {\n contents[_TB] = (0, import_smithy_client.expectString)(output[_TB]);\n }\n if (output.StagesAvailable === \"\") {\n contents[_SA] = [];\n } else if (output[_SA] != null && output[_SA][_m] != null) {\n contents[_SA] = de_StageList((0, import_smithy_client.getArrayIfSingleItem)(output[_SA][_m]), context);\n }\n return contents;\n}, \"de_GetTemplateOutput\");\nvar de_GetTemplateSummaryOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Parameters === \"\") {\n contents[_P] = [];\n } else if (output[_P] != null && output[_P][_m] != null) {\n contents[_P] = de_ParameterDeclarations((0, import_smithy_client.getArrayIfSingleItem)(output[_P][_m]), context);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output.Capabilities === \"\") {\n contents[_C] = [];\n } else if (output[_C] != null && output[_C][_m] != null) {\n contents[_C] = de_Capabilities((0, import_smithy_client.getArrayIfSingleItem)(output[_C][_m]), context);\n }\n if (output[_CR] != null) {\n contents[_CR] = (0, import_smithy_client.expectString)(output[_CR]);\n }\n if (output.ResourceTypes === \"\") {\n contents[_RTe] = [];\n } else if (output[_RTe] != null && output[_RTe][_m] != null) {\n contents[_RTe] = de_ResourceTypes((0, import_smithy_client.getArrayIfSingleItem)(output[_RTe][_m]), context);\n }\n if (output[_V] != null) {\n contents[_V] = (0, import_smithy_client.expectString)(output[_V]);\n }\n if (output[_Me] != null) {\n contents[_Me] = (0, import_smithy_client.expectString)(output[_Me]);\n }\n if (output.DeclaredTransforms === \"\") {\n contents[_DTec] = [];\n } else if (output[_DTec] != null && output[_DTec][_m] != null) {\n contents[_DTec] = de_TransformsList((0, import_smithy_client.getArrayIfSingleItem)(output[_DTec][_m]), context);\n }\n if (output.ResourceIdentifierSummaries === \"\") {\n contents[_RIS] = [];\n } else if (output[_RIS] != null && output[_RIS][_m] != null) {\n contents[_RIS] = de_ResourceIdentifierSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_RIS][_m]), context);\n }\n if (output[_W] != null) {\n contents[_W] = de_Warnings(output[_W], context);\n }\n return contents;\n}, \"de_GetTemplateSummaryOutput\");\nvar de_Imports = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_Imports\");\nvar de_ImportStacksToStackSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n return contents;\n}, \"de_ImportStacksToStackSetOutput\");\nvar de_InsufficientCapabilitiesException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_InsufficientCapabilitiesException\");\nvar de_InvalidChangeSetStatusException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_InvalidChangeSetStatusException\");\nvar de_InvalidOperationException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_InvalidOperationException\");\nvar de_InvalidStateTransitionException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_InvalidStateTransitionException\");\nvar de_JazzResourceIdentifierProperties = /* @__PURE__ */ __name((output, context) => {\n return output.reduce((acc, pair) => {\n if (pair[\"value\"] === null) {\n return acc;\n }\n acc[pair[\"key\"]] = (0, import_smithy_client.expectString)(pair[\"value\"]);\n return acc;\n }, {});\n}, \"de_JazzResourceIdentifierProperties\");\nvar de_LimitExceededException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_LimitExceededException\");\nvar de_ListChangeSetsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_ChangeSetSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListChangeSetsOutput\");\nvar de_ListExportsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Exports === \"\") {\n contents[_Ex] = [];\n } else if (output[_Ex] != null && output[_Ex][_m] != null) {\n contents[_Ex] = de_Exports((0, import_smithy_client.getArrayIfSingleItem)(output[_Ex][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListExportsOutput\");\nvar de_ListGeneratedTemplatesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_TemplateSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListGeneratedTemplatesOutput\");\nvar de_ListImportsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Imports === \"\") {\n contents[_Im] = [];\n } else if (output[_Im] != null && output[_Im][_m] != null) {\n contents[_Im] = de_Imports((0, import_smithy_client.getArrayIfSingleItem)(output[_Im][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListImportsOutput\");\nvar de_ListResourceScanRelatedResourcesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.RelatedResources === \"\") {\n contents[_RRel] = [];\n } else if (output[_RRel] != null && output[_RRel][_m] != null) {\n contents[_RRel] = de_RelatedResources((0, import_smithy_client.getArrayIfSingleItem)(output[_RRel][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListResourceScanRelatedResourcesOutput\");\nvar de_ListResourceScanResourcesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Resources === \"\") {\n contents[_R] = [];\n } else if (output[_R] != null && output[_R][_m] != null) {\n contents[_R] = de_ScannedResources((0, import_smithy_client.getArrayIfSingleItem)(output[_R][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListResourceScanResourcesOutput\");\nvar de_ListResourceScansOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.ResourceScanSummaries === \"\") {\n contents[_RSS] = [];\n } else if (output[_RSS] != null && output[_RSS][_m] != null) {\n contents[_RSS] = de_ResourceScanSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_RSS][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListResourceScansOutput\");\nvar de_ListStackInstanceResourceDriftsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_StackInstanceResourceDriftsSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackInstanceResourceDriftsOutput\");\nvar de_ListStackInstancesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_StackInstanceSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackInstancesOutput\");\nvar de_ListStackResourcesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.StackResourceSummaries === \"\") {\n contents[_SRSt] = [];\n } else if (output[_SRSt] != null && output[_SRSt][_m] != null) {\n contents[_SRSt] = de_StackResourceSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_SRSt][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackResourcesOutput\");\nvar de_ListStackSetAutoDeploymentTargetsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_StackSetAutoDeploymentTargetSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackSetAutoDeploymentTargetsOutput\");\nvar de_ListStackSetOperationResultsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_StackSetOperationResultSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackSetOperationResultsOutput\");\nvar de_ListStackSetOperationsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_StackSetOperationSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackSetOperationsOutput\");\nvar de_ListStackSetsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Summaries === \"\") {\n contents[_Su] = [];\n } else if (output[_Su] != null && output[_Su][_m] != null) {\n contents[_Su] = de_StackSetSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_Su][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStackSetsOutput\");\nvar de_ListStacksOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.StackSummaries === \"\") {\n contents[_SSt] = [];\n } else if (output[_SSt] != null && output[_SSt][_m] != null) {\n contents[_SSt] = de_StackSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_SSt][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListStacksOutput\");\nvar de_ListTypeRegistrationsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.RegistrationTokenList === \"\") {\n contents[_RTL] = [];\n } else if (output[_RTL] != null && output[_RTL][_m] != null) {\n contents[_RTL] = de_RegistrationTokenList((0, import_smithy_client.getArrayIfSingleItem)(output[_RTL][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListTypeRegistrationsOutput\");\nvar de_ListTypesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.TypeSummaries === \"\") {\n contents[_TSy] = [];\n } else if (output[_TSy] != null && output[_TSy][_m] != null) {\n contents[_TSy] = de_TypeSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_TSy][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListTypesOutput\");\nvar de_ListTypeVersionsOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.TypeVersionSummaries === \"\") {\n contents[_TVS] = [];\n } else if (output[_TVS] != null && output[_TVS][_m] != null) {\n contents[_TVS] = de_TypeVersionSummaries((0, import_smithy_client.getArrayIfSingleItem)(output[_TVS][_m]), context);\n }\n if (output[_NT] != null) {\n contents[_NT] = (0, import_smithy_client.expectString)(output[_NT]);\n }\n return contents;\n}, \"de_ListTypeVersionsOutput\");\nvar de_LoggingConfig = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_LRA] != null) {\n contents[_LRA] = (0, import_smithy_client.expectString)(output[_LRA]);\n }\n if (output[_LGN] != null) {\n contents[_LGN] = (0, import_smithy_client.expectString)(output[_LGN]);\n }\n return contents;\n}, \"de_LoggingConfig\");\nvar de_LogicalResourceIds = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_LogicalResourceIds\");\nvar de_ManagedExecution = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Act] != null) {\n contents[_Act] = (0, import_smithy_client.parseBoolean)(output[_Act]);\n }\n return contents;\n}, \"de_ManagedExecution\");\nvar de_ModuleInfo = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_TH] != null) {\n contents[_TH] = (0, import_smithy_client.expectString)(output[_TH]);\n }\n if (output[_LIH] != null) {\n contents[_LIH] = (0, import_smithy_client.expectString)(output[_LIH]);\n }\n return contents;\n}, \"de_ModuleInfo\");\nvar de_NameAlreadyExistsException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_NameAlreadyExistsException\");\nvar de_NotificationARNs = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_NotificationARNs\");\nvar de_OperationIdAlreadyExistsException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_OperationIdAlreadyExistsException\");\nvar de_OperationInProgressException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_OperationInProgressException\");\nvar de_OperationNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_OperationNotFoundException\");\nvar de_OperationStatusCheckFailedException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_OperationStatusCheckFailedException\");\nvar de_OrganizationalUnitIdList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_OrganizationalUnitIdList\");\nvar de_Output = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OK] != null) {\n contents[_OK] = (0, import_smithy_client.expectString)(output[_OK]);\n }\n if (output[_OV] != null) {\n contents[_OV] = (0, import_smithy_client.expectString)(output[_OV]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_EN] != null) {\n contents[_EN] = (0, import_smithy_client.expectString)(output[_EN]);\n }\n return contents;\n}, \"de_Output\");\nvar de_Outputs = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_Output(entry, context);\n });\n}, \"de_Outputs\");\nvar de_Parameter = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PK] != null) {\n contents[_PK] = (0, import_smithy_client.expectString)(output[_PK]);\n }\n if (output[_PV] != null) {\n contents[_PV] = (0, import_smithy_client.expectString)(output[_PV]);\n }\n if (output[_UPV] != null) {\n contents[_UPV] = (0, import_smithy_client.parseBoolean)(output[_UPV]);\n }\n if (output[_RV] != null) {\n contents[_RV] = (0, import_smithy_client.expectString)(output[_RV]);\n }\n return contents;\n}, \"de_Parameter\");\nvar de_ParameterConstraints = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.AllowedValues === \"\") {\n contents[_AV] = [];\n } else if (output[_AV] != null && output[_AV][_m] != null) {\n contents[_AV] = de_AllowedValues((0, import_smithy_client.getArrayIfSingleItem)(output[_AV][_m]), context);\n }\n return contents;\n}, \"de_ParameterConstraints\");\nvar de_ParameterDeclaration = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PK] != null) {\n contents[_PK] = (0, import_smithy_client.expectString)(output[_PK]);\n }\n if (output[_DV] != null) {\n contents[_DV] = (0, import_smithy_client.expectString)(output[_DV]);\n }\n if (output[_PTa] != null) {\n contents[_PTa] = (0, import_smithy_client.expectString)(output[_PTa]);\n }\n if (output[_NE] != null) {\n contents[_NE] = (0, import_smithy_client.parseBoolean)(output[_NE]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_PCa] != null) {\n contents[_PCa] = de_ParameterConstraints(output[_PCa], context);\n }\n return contents;\n}, \"de_ParameterDeclaration\");\nvar de_ParameterDeclarations = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ParameterDeclaration(entry, context);\n });\n}, \"de_ParameterDeclarations\");\nvar de_Parameters = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_Parameter(entry, context);\n });\n}, \"de_Parameters\");\nvar de_PhysicalResourceIdContext = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_PhysicalResourceIdContextKeyValuePair(entry, context);\n });\n}, \"de_PhysicalResourceIdContext\");\nvar de_PhysicalResourceIdContextKeyValuePair = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_K] != null) {\n contents[_K] = (0, import_smithy_client.expectString)(output[_K]);\n }\n if (output[_Val] != null) {\n contents[_Val] = (0, import_smithy_client.expectString)(output[_Val]);\n }\n return contents;\n}, \"de_PhysicalResourceIdContextKeyValuePair\");\nvar de_PropertyDifference = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PPr] != null) {\n contents[_PPr] = (0, import_smithy_client.expectString)(output[_PPr]);\n }\n if (output[_EV] != null) {\n contents[_EV] = (0, import_smithy_client.expectString)(output[_EV]);\n }\n if (output[_AVc] != null) {\n contents[_AVc] = (0, import_smithy_client.expectString)(output[_AVc]);\n }\n if (output[_DTi] != null) {\n contents[_DTi] = (0, import_smithy_client.expectString)(output[_DTi]);\n }\n return contents;\n}, \"de_PropertyDifference\");\nvar de_PropertyDifferences = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_PropertyDifference(entry, context);\n });\n}, \"de_PropertyDifferences\");\nvar de_PublishTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PTA] != null) {\n contents[_PTA] = (0, import_smithy_client.expectString)(output[_PTA]);\n }\n return contents;\n}, \"de_PublishTypeOutput\");\nvar de_RecordHandlerProgressOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_RecordHandlerProgressOutput\");\nvar de_RegionList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_RegionList\");\nvar de_RegisterPublisherOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PI] != null) {\n contents[_PI] = (0, import_smithy_client.expectString)(output[_PI]);\n }\n return contents;\n}, \"de_RegisterPublisherOutput\");\nvar de_RegisterTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RTeg] != null) {\n contents[_RTeg] = (0, import_smithy_client.expectString)(output[_RTeg]);\n }\n return contents;\n}, \"de_RegisterTypeOutput\");\nvar de_RegistrationTokenList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_RegistrationTokenList\");\nvar de_RelatedResources = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ScannedResource(entry, context);\n });\n}, \"de_RelatedResources\");\nvar de_RequiredActivatedType = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_TNA] != null) {\n contents[_TNA] = (0, import_smithy_client.expectString)(output[_TNA]);\n }\n if (output[_OTN] != null) {\n contents[_OTN] = (0, import_smithy_client.expectString)(output[_OTN]);\n }\n if (output[_PI] != null) {\n contents[_PI] = (0, import_smithy_client.expectString)(output[_PI]);\n }\n if (output.SupportedMajorVersions === \"\") {\n contents[_SMV] = [];\n } else if (output[_SMV] != null && output[_SMV][_m] != null) {\n contents[_SMV] = de_SupportedMajorVersions((0, import_smithy_client.getArrayIfSingleItem)(output[_SMV][_m]), context);\n }\n return contents;\n}, \"de_RequiredActivatedType\");\nvar de_RequiredActivatedTypes = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_RequiredActivatedType(entry, context);\n });\n}, \"de_RequiredActivatedTypes\");\nvar de_ResourceChange = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PA] != null) {\n contents[_PA] = (0, import_smithy_client.expectString)(output[_PA]);\n }\n if (output[_A] != null) {\n contents[_A] = (0, import_smithy_client.expectString)(output[_A]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_Rep] != null) {\n contents[_Rep] = (0, import_smithy_client.expectString)(output[_Rep]);\n }\n if (output.Scope === \"\") {\n contents[_Sco] = [];\n } else if (output[_Sco] != null && output[_Sco][_m] != null) {\n contents[_Sco] = de_Scope((0, import_smithy_client.getArrayIfSingleItem)(output[_Sco][_m]), context);\n }\n if (output.Details === \"\") {\n contents[_De] = [];\n } else if (output[_De] != null && output[_De][_m] != null) {\n contents[_De] = de_ResourceChangeDetails((0, import_smithy_client.getArrayIfSingleItem)(output[_De][_m]), context);\n }\n if (output[_CSIh] != null) {\n contents[_CSIh] = (0, import_smithy_client.expectString)(output[_CSIh]);\n }\n if (output[_MI] != null) {\n contents[_MI] = de_ModuleInfo(output[_MI], context);\n }\n if (output[_BC] != null) {\n contents[_BC] = (0, import_smithy_client.expectString)(output[_BC]);\n }\n if (output[_AC] != null) {\n contents[_AC] = (0, import_smithy_client.expectString)(output[_AC]);\n }\n return contents;\n}, \"de_ResourceChange\");\nvar de_ResourceChangeDetail = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Tar] != null) {\n contents[_Tar] = de_ResourceTargetDefinition(output[_Tar], context);\n }\n if (output[_Ev] != null) {\n contents[_Ev] = (0, import_smithy_client.expectString)(output[_Ev]);\n }\n if (output[_CSh] != null) {\n contents[_CSh] = (0, import_smithy_client.expectString)(output[_CSh]);\n }\n if (output[_CE] != null) {\n contents[_CE] = (0, import_smithy_client.expectString)(output[_CE]);\n }\n return contents;\n}, \"de_ResourceChangeDetail\");\nvar de_ResourceChangeDetails = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ResourceChangeDetail(entry, context);\n });\n}, \"de_ResourceChangeDetails\");\nvar de_ResourceDetail = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output.ResourceIdentifier === \"\") {\n contents[_RI] = {};\n } else if (output[_RI] != null && output[_RI][_e] != null) {\n contents[_RI] = de_ResourceIdentifierProperties((0, import_smithy_client.getArrayIfSingleItem)(output[_RI][_e]), context);\n }\n if (output[_RSeso] != null) {\n contents[_RSeso] = (0, import_smithy_client.expectString)(output[_RSeso]);\n }\n if (output[_RSR] != null) {\n contents[_RSR] = (0, import_smithy_client.expectString)(output[_RSR]);\n }\n if (output.Warnings === \"\") {\n contents[_W] = [];\n } else if (output[_W] != null && output[_W][_m] != null) {\n contents[_W] = de_WarningDetails((0, import_smithy_client.getArrayIfSingleItem)(output[_W][_m]), context);\n }\n return contents;\n}, \"de_ResourceDetail\");\nvar de_ResourceDetails = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ResourceDetail(entry, context);\n });\n}, \"de_ResourceDetails\");\nvar de_ResourceIdentifierProperties = /* @__PURE__ */ __name((output, context) => {\n return output.reduce((acc, pair) => {\n if (pair[\"value\"] === null) {\n return acc;\n }\n acc[pair[\"key\"]] = (0, import_smithy_client.expectString)(pair[\"value\"]);\n return acc;\n }, {});\n}, \"de_ResourceIdentifierProperties\");\nvar de_ResourceIdentifiers = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_ResourceIdentifiers\");\nvar de_ResourceIdentifierSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ResourceIdentifierSummary(entry, context);\n });\n}, \"de_ResourceIdentifierSummaries\");\nvar de_ResourceIdentifierSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output.LogicalResourceIds === \"\") {\n contents[_LRIo] = [];\n } else if (output[_LRIo] != null && output[_LRIo][_m] != null) {\n contents[_LRIo] = de_LogicalResourceIds((0, import_smithy_client.getArrayIfSingleItem)(output[_LRIo][_m]), context);\n }\n if (output.ResourceIdentifiers === \"\") {\n contents[_RIe] = [];\n } else if (output[_RIe] != null && output[_RIe][_m] != null) {\n contents[_RIe] = de_ResourceIdentifiers((0, import_smithy_client.getArrayIfSingleItem)(output[_RIe][_m]), context);\n }\n return contents;\n}, \"de_ResourceIdentifierSummary\");\nvar de_ResourceScanInProgressException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_ResourceScanInProgressException\");\nvar de_ResourceScanLimitExceededException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_ResourceScanLimitExceededException\");\nvar de_ResourceScanNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_ResourceScanNotFoundException\");\nvar de_ResourceScanSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ResourceScanSummary(entry, context);\n });\n}, \"de_ResourceScanSummaries\");\nvar de_ResourceScanSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RSI] != null) {\n contents[_RSI] = (0, import_smithy_client.expectString)(output[_RSI]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_ST] != null) {\n contents[_ST] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_ST]));\n }\n if (output[_ET] != null) {\n contents[_ET] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_ET]));\n }\n if (output[_PC] != null) {\n contents[_PC] = (0, import_smithy_client.strictParseFloat)(output[_PC]);\n }\n return contents;\n}, \"de_ResourceScanSummary\");\nvar de_ResourceTargetDefinition = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_At] != null) {\n contents[_At] = (0, import_smithy_client.expectString)(output[_At]);\n }\n if (output[_N] != null) {\n contents[_N] = (0, import_smithy_client.expectString)(output[_N]);\n }\n if (output[_RReq] != null) {\n contents[_RReq] = (0, import_smithy_client.expectString)(output[_RReq]);\n }\n if (output[_Pa] != null) {\n contents[_Pa] = (0, import_smithy_client.expectString)(output[_Pa]);\n }\n if (output[_BV] != null) {\n contents[_BV] = (0, import_smithy_client.expectString)(output[_BV]);\n }\n if (output[_AVf] != null) {\n contents[_AVf] = (0, import_smithy_client.expectString)(output[_AVf]);\n }\n if (output[_ACT] != null) {\n contents[_ACT] = (0, import_smithy_client.expectString)(output[_ACT]);\n }\n return contents;\n}, \"de_ResourceTargetDefinition\");\nvar de_ResourceTypes = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_ResourceTypes\");\nvar de_RollbackConfiguration = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.RollbackTriggers === \"\") {\n contents[_RTo] = [];\n } else if (output[_RTo] != null && output[_RTo][_m] != null) {\n contents[_RTo] = de_RollbackTriggers((0, import_smithy_client.getArrayIfSingleItem)(output[_RTo][_m]), context);\n }\n if (output[_MTIM] != null) {\n contents[_MTIM] = (0, import_smithy_client.strictParseInt32)(output[_MTIM]);\n }\n return contents;\n}, \"de_RollbackConfiguration\");\nvar de_RollbackStackOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_RollbackStackOutput\");\nvar de_RollbackTrigger = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n return contents;\n}, \"de_RollbackTrigger\");\nvar de_RollbackTriggers = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_RollbackTrigger(entry, context);\n });\n}, \"de_RollbackTriggers\");\nvar de_ScannedResource = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output.ResourceIdentifier === \"\") {\n contents[_RI] = {};\n } else if (output[_RI] != null && output[_RI][_e] != null) {\n contents[_RI] = de_JazzResourceIdentifierProperties((0, import_smithy_client.getArrayIfSingleItem)(output[_RI][_e]), context);\n }\n if (output[_MBS] != null) {\n contents[_MBS] = (0, import_smithy_client.parseBoolean)(output[_MBS]);\n }\n return contents;\n}, \"de_ScannedResource\");\nvar de_ScannedResources = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_ScannedResource(entry, context);\n });\n}, \"de_ScannedResources\");\nvar de_Scope = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_Scope\");\nvar de_SetTypeConfigurationOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_CAonf] != null) {\n contents[_CAonf] = (0, import_smithy_client.expectString)(output[_CAonf]);\n }\n return contents;\n}, \"de_SetTypeConfigurationOutput\");\nvar de_SetTypeDefaultVersionOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_SetTypeDefaultVersionOutput\");\nvar de_Stack = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_CSIh] != null) {\n contents[_CSIh] = (0, import_smithy_client.expectString)(output[_CSIh]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output.Parameters === \"\") {\n contents[_P] = [];\n } else if (output[_P] != null && output[_P][_m] != null) {\n contents[_P] = de_Parameters((0, import_smithy_client.getArrayIfSingleItem)(output[_P][_m]), context);\n }\n if (output[_CTr] != null) {\n contents[_CTr] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTr]));\n }\n if (output[_DTel] != null) {\n contents[_DTel] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_DTel]));\n }\n if (output[_LUT] != null) {\n contents[_LUT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LUT]));\n }\n if (output[_RC] != null) {\n contents[_RC] = de_RollbackConfiguration(output[_RC], context);\n }\n if (output[_SSta] != null) {\n contents[_SSta] = (0, import_smithy_client.expectString)(output[_SSta]);\n }\n if (output[_SSR] != null) {\n contents[_SSR] = (0, import_smithy_client.expectString)(output[_SSR]);\n }\n if (output[_DR] != null) {\n contents[_DR] = (0, import_smithy_client.parseBoolean)(output[_DR]);\n }\n if (output.NotificationARNs === \"\") {\n contents[_NARN] = [];\n } else if (output[_NARN] != null && output[_NARN][_m] != null) {\n contents[_NARN] = de_NotificationARNs((0, import_smithy_client.getArrayIfSingleItem)(output[_NARN][_m]), context);\n }\n if (output[_TIM] != null) {\n contents[_TIM] = (0, import_smithy_client.strictParseInt32)(output[_TIM]);\n }\n if (output.Capabilities === \"\") {\n contents[_C] = [];\n } else if (output[_C] != null && output[_C][_m] != null) {\n contents[_C] = de_Capabilities((0, import_smithy_client.getArrayIfSingleItem)(output[_C][_m]), context);\n }\n if (output.Outputs === \"\") {\n contents[_O] = [];\n } else if (output[_O] != null && output[_O][_m] != null) {\n contents[_O] = de_Outputs((0, import_smithy_client.getArrayIfSingleItem)(output[_O][_m]), context);\n }\n if (output[_RARN] != null) {\n contents[_RARN] = (0, import_smithy_client.expectString)(output[_RARN]);\n }\n if (output.Tags === \"\") {\n contents[_Ta] = [];\n } else if (output[_Ta] != null && output[_Ta][_m] != null) {\n contents[_Ta] = de_Tags((0, import_smithy_client.getArrayIfSingleItem)(output[_Ta][_m]), context);\n }\n if (output[_ETP] != null) {\n contents[_ETP] = (0, import_smithy_client.parseBoolean)(output[_ETP]);\n }\n if (output[_PIa] != null) {\n contents[_PIa] = (0, import_smithy_client.expectString)(output[_PIa]);\n }\n if (output[_RIo] != null) {\n contents[_RIo] = (0, import_smithy_client.expectString)(output[_RIo]);\n }\n if (output[_DI] != null) {\n contents[_DI] = de_StackDriftInformation(output[_DI], context);\n }\n if (output[_REOC] != null) {\n contents[_REOC] = (0, import_smithy_client.parseBoolean)(output[_REOC]);\n }\n if (output[_DSeta] != null) {\n contents[_DSeta] = (0, import_smithy_client.expectString)(output[_DSeta]);\n }\n return contents;\n}, \"de_Stack\");\nvar de_StackDriftInformation = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SDS] != null) {\n contents[_SDS] = (0, import_smithy_client.expectString)(output[_SDS]);\n }\n if (output[_LCT] != null) {\n contents[_LCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LCT]));\n }\n return contents;\n}, \"de_StackDriftInformation\");\nvar de_StackDriftInformationSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SDS] != null) {\n contents[_SDS] = (0, import_smithy_client.expectString)(output[_SDS]);\n }\n if (output[_LCT] != null) {\n contents[_LCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LCT]));\n }\n return contents;\n}, \"de_StackDriftInformationSummary\");\nvar de_StackEvent = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_EI] != null) {\n contents[_EI] = (0, import_smithy_client.expectString)(output[_EI]);\n }\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_Ti] != null) {\n contents[_Ti] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_Ti]));\n }\n if (output[_RSeso] != null) {\n contents[_RSeso] = (0, import_smithy_client.expectString)(output[_RSeso]);\n }\n if (output[_RSR] != null) {\n contents[_RSR] = (0, import_smithy_client.expectString)(output[_RSR]);\n }\n if (output[_RPe] != null) {\n contents[_RPe] = (0, import_smithy_client.expectString)(output[_RPe]);\n }\n if (output[_CRT] != null) {\n contents[_CRT] = (0, import_smithy_client.expectString)(output[_CRT]);\n }\n if (output[_HT] != null) {\n contents[_HT] = (0, import_smithy_client.expectString)(output[_HT]);\n }\n if (output[_HS] != null) {\n contents[_HS] = (0, import_smithy_client.expectString)(output[_HS]);\n }\n if (output[_HSR] != null) {\n contents[_HSR] = (0, import_smithy_client.expectString)(output[_HSR]);\n }\n if (output[_HIP] != null) {\n contents[_HIP] = (0, import_smithy_client.expectString)(output[_HIP]);\n }\n if (output[_HFM] != null) {\n contents[_HFM] = (0, import_smithy_client.expectString)(output[_HFM]);\n }\n if (output[_DSeta] != null) {\n contents[_DSeta] = (0, import_smithy_client.expectString)(output[_DSeta]);\n }\n return contents;\n}, \"de_StackEvent\");\nvar de_StackEvents = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackEvent(entry, context);\n });\n}, \"de_StackEvents\");\nvar de_StackInstance = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SSI] != null) {\n contents[_SSI] = (0, import_smithy_client.expectString)(output[_SSI]);\n }\n if (output[_Reg] != null) {\n contents[_Reg] = (0, import_smithy_client.expectString)(output[_Reg]);\n }\n if (output[_Acc] != null) {\n contents[_Acc] = (0, import_smithy_client.expectString)(output[_Acc]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output.ParameterOverrides === \"\") {\n contents[_PO] = [];\n } else if (output[_PO] != null && output[_PO][_m] != null) {\n contents[_PO] = de_Parameters((0, import_smithy_client.getArrayIfSingleItem)(output[_PO][_m]), context);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SIS] != null) {\n contents[_SIS] = de_StackInstanceComprehensiveStatus(output[_SIS], context);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_OUIr] != null) {\n contents[_OUIr] = (0, import_smithy_client.expectString)(output[_OUIr]);\n }\n if (output[_DSr] != null) {\n contents[_DSr] = (0, import_smithy_client.expectString)(output[_DSr]);\n }\n if (output[_LDCT] != null) {\n contents[_LDCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LDCT]));\n }\n if (output[_LOI] != null) {\n contents[_LOI] = (0, import_smithy_client.expectString)(output[_LOI]);\n }\n return contents;\n}, \"de_StackInstance\");\nvar de_StackInstanceComprehensiveStatus = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_DSeta] != null) {\n contents[_DSeta] = (0, import_smithy_client.expectString)(output[_DSeta]);\n }\n return contents;\n}, \"de_StackInstanceComprehensiveStatus\");\nvar de_StackInstanceNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_StackInstanceNotFoundException\");\nvar de_StackInstanceResourceDriftsSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackInstanceResourceDriftsSummary(entry, context);\n });\n}, \"de_StackInstanceResourceDriftsSummaries\");\nvar de_StackInstanceResourceDriftsSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output.PhysicalResourceIdContext === \"\") {\n contents[_PRIC] = [];\n } else if (output[_PRIC] != null && output[_PRIC][_m] != null) {\n contents[_PRIC] = de_PhysicalResourceIdContext((0, import_smithy_client.getArrayIfSingleItem)(output[_PRIC][_m]), context);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output.PropertyDifferences === \"\") {\n contents[_PD] = [];\n } else if (output[_PD] != null && output[_PD][_m] != null) {\n contents[_PD] = de_PropertyDifferences((0, import_smithy_client.getArrayIfSingleItem)(output[_PD][_m]), context);\n }\n if (output[_SRDS] != null) {\n contents[_SRDS] = (0, import_smithy_client.expectString)(output[_SRDS]);\n }\n if (output[_Ti] != null) {\n contents[_Ti] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_Ti]));\n }\n return contents;\n}, \"de_StackInstanceResourceDriftsSummary\");\nvar de_StackInstanceSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackInstanceSummary(entry, context);\n });\n}, \"de_StackInstanceSummaries\");\nvar de_StackInstanceSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SSI] != null) {\n contents[_SSI] = (0, import_smithy_client.expectString)(output[_SSI]);\n }\n if (output[_Reg] != null) {\n contents[_Reg] = (0, import_smithy_client.expectString)(output[_Reg]);\n }\n if (output[_Acc] != null) {\n contents[_Acc] = (0, import_smithy_client.expectString)(output[_Acc]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_SIS] != null) {\n contents[_SIS] = de_StackInstanceComprehensiveStatus(output[_SIS], context);\n }\n if (output[_OUIr] != null) {\n contents[_OUIr] = (0, import_smithy_client.expectString)(output[_OUIr]);\n }\n if (output[_DSr] != null) {\n contents[_DSr] = (0, import_smithy_client.expectString)(output[_DSr]);\n }\n if (output[_LDCT] != null) {\n contents[_LDCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LDCT]));\n }\n if (output[_LOI] != null) {\n contents[_LOI] = (0, import_smithy_client.expectString)(output[_LOI]);\n }\n return contents;\n}, \"de_StackInstanceSummary\");\nvar de_StackNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_StackNotFoundException\");\nvar de_StackResource = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_Ti] != null) {\n contents[_Ti] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_Ti]));\n }\n if (output[_RSeso] != null) {\n contents[_RSeso] = (0, import_smithy_client.expectString)(output[_RSeso]);\n }\n if (output[_RSR] != null) {\n contents[_RSR] = (0, import_smithy_client.expectString)(output[_RSR]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_DI] != null) {\n contents[_DI] = de_StackResourceDriftInformation(output[_DI], context);\n }\n if (output[_MI] != null) {\n contents[_MI] = de_ModuleInfo(output[_MI], context);\n }\n return contents;\n}, \"de_StackResource\");\nvar de_StackResourceDetail = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_LUTa] != null) {\n contents[_LUTa] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LUTa]));\n }\n if (output[_RSeso] != null) {\n contents[_RSeso] = (0, import_smithy_client.expectString)(output[_RSeso]);\n }\n if (output[_RSR] != null) {\n contents[_RSR] = (0, import_smithy_client.expectString)(output[_RSR]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_Me] != null) {\n contents[_Me] = (0, import_smithy_client.expectString)(output[_Me]);\n }\n if (output[_DI] != null) {\n contents[_DI] = de_StackResourceDriftInformation(output[_DI], context);\n }\n if (output[_MI] != null) {\n contents[_MI] = de_ModuleInfo(output[_MI], context);\n }\n return contents;\n}, \"de_StackResourceDetail\");\nvar de_StackResourceDrift = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output.PhysicalResourceIdContext === \"\") {\n contents[_PRIC] = [];\n } else if (output[_PRIC] != null && output[_PRIC][_m] != null) {\n contents[_PRIC] = de_PhysicalResourceIdContext((0, import_smithy_client.getArrayIfSingleItem)(output[_PRIC][_m]), context);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_EP] != null) {\n contents[_EP] = (0, import_smithy_client.expectString)(output[_EP]);\n }\n if (output[_AP] != null) {\n contents[_AP] = (0, import_smithy_client.expectString)(output[_AP]);\n }\n if (output.PropertyDifferences === \"\") {\n contents[_PD] = [];\n } else if (output[_PD] != null && output[_PD][_m] != null) {\n contents[_PD] = de_PropertyDifferences((0, import_smithy_client.getArrayIfSingleItem)(output[_PD][_m]), context);\n }\n if (output[_SRDS] != null) {\n contents[_SRDS] = (0, import_smithy_client.expectString)(output[_SRDS]);\n }\n if (output[_Ti] != null) {\n contents[_Ti] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_Ti]));\n }\n if (output[_MI] != null) {\n contents[_MI] = de_ModuleInfo(output[_MI], context);\n }\n return contents;\n}, \"de_StackResourceDrift\");\nvar de_StackResourceDriftInformation = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SRDS] != null) {\n contents[_SRDS] = (0, import_smithy_client.expectString)(output[_SRDS]);\n }\n if (output[_LCT] != null) {\n contents[_LCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LCT]));\n }\n return contents;\n}, \"de_StackResourceDriftInformation\");\nvar de_StackResourceDriftInformationSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SRDS] != null) {\n contents[_SRDS] = (0, import_smithy_client.expectString)(output[_SRDS]);\n }\n if (output[_LCT] != null) {\n contents[_LCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LCT]));\n }\n return contents;\n}, \"de_StackResourceDriftInformationSummary\");\nvar de_StackResourceDrifts = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackResourceDrift(entry, context);\n });\n}, \"de_StackResourceDrifts\");\nvar de_StackResources = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackResource(entry, context);\n });\n}, \"de_StackResources\");\nvar de_StackResourceSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackResourceSummary(entry, context);\n });\n}, \"de_StackResourceSummaries\");\nvar de_StackResourceSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_LRI] != null) {\n contents[_LRI] = (0, import_smithy_client.expectString)(output[_LRI]);\n }\n if (output[_PRI] != null) {\n contents[_PRI] = (0, import_smithy_client.expectString)(output[_PRI]);\n }\n if (output[_RTes] != null) {\n contents[_RTes] = (0, import_smithy_client.expectString)(output[_RTes]);\n }\n if (output[_LUTa] != null) {\n contents[_LUTa] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LUTa]));\n }\n if (output[_RSeso] != null) {\n contents[_RSeso] = (0, import_smithy_client.expectString)(output[_RSeso]);\n }\n if (output[_RSR] != null) {\n contents[_RSR] = (0, import_smithy_client.expectString)(output[_RSR]);\n }\n if (output[_DI] != null) {\n contents[_DI] = de_StackResourceDriftInformationSummary(output[_DI], context);\n }\n if (output[_MI] != null) {\n contents[_MI] = de_ModuleInfo(output[_MI], context);\n }\n return contents;\n}, \"de_StackResourceSummary\");\nvar de_Stacks = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_Stack(entry, context);\n });\n}, \"de_Stacks\");\nvar de_StackSet = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SSN] != null) {\n contents[_SSN] = (0, import_smithy_client.expectString)(output[_SSN]);\n }\n if (output[_SSI] != null) {\n contents[_SSI] = (0, import_smithy_client.expectString)(output[_SSI]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_TB] != null) {\n contents[_TB] = (0, import_smithy_client.expectString)(output[_TB]);\n }\n if (output.Parameters === \"\") {\n contents[_P] = [];\n } else if (output[_P] != null && output[_P][_m] != null) {\n contents[_P] = de_Parameters((0, import_smithy_client.getArrayIfSingleItem)(output[_P][_m]), context);\n }\n if (output.Capabilities === \"\") {\n contents[_C] = [];\n } else if (output[_C] != null && output[_C][_m] != null) {\n contents[_C] = de_Capabilities((0, import_smithy_client.getArrayIfSingleItem)(output[_C][_m]), context);\n }\n if (output.Tags === \"\") {\n contents[_Ta] = [];\n } else if (output[_Ta] != null && output[_Ta][_m] != null) {\n contents[_Ta] = de_Tags((0, import_smithy_client.getArrayIfSingleItem)(output[_Ta][_m]), context);\n }\n if (output[_SSARN] != null) {\n contents[_SSARN] = (0, import_smithy_client.expectString)(output[_SSARN]);\n }\n if (output[_ARARN] != null) {\n contents[_ARARN] = (0, import_smithy_client.expectString)(output[_ARARN]);\n }\n if (output[_ERN] != null) {\n contents[_ERN] = (0, import_smithy_client.expectString)(output[_ERN]);\n }\n if (output[_SSDDD] != null) {\n contents[_SSDDD] = de_StackSetDriftDetectionDetails(output[_SSDDD], context);\n }\n if (output[_AD] != null) {\n contents[_AD] = de_AutoDeployment(output[_AD], context);\n }\n if (output[_PM] != null) {\n contents[_PM] = (0, import_smithy_client.expectString)(output[_PM]);\n }\n if (output.OrganizationalUnitIds === \"\") {\n contents[_OUI] = [];\n } else if (output[_OUI] != null && output[_OUI][_m] != null) {\n contents[_OUI] = de_OrganizationalUnitIdList((0, import_smithy_client.getArrayIfSingleItem)(output[_OUI][_m]), context);\n }\n if (output[_ME] != null) {\n contents[_ME] = de_ManagedExecution(output[_ME], context);\n }\n if (output.Regions === \"\") {\n contents[_Re] = [];\n } else if (output[_Re] != null && output[_Re][_m] != null) {\n contents[_Re] = de_RegionList((0, import_smithy_client.getArrayIfSingleItem)(output[_Re][_m]), context);\n }\n return contents;\n}, \"de_StackSet\");\nvar de_StackSetAutoDeploymentTargetSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackSetAutoDeploymentTargetSummary(entry, context);\n });\n}, \"de_StackSetAutoDeploymentTargetSummaries\");\nvar de_StackSetAutoDeploymentTargetSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OUIr] != null) {\n contents[_OUIr] = (0, import_smithy_client.expectString)(output[_OUIr]);\n }\n if (output.Regions === \"\") {\n contents[_Re] = [];\n } else if (output[_Re] != null && output[_Re][_m] != null) {\n contents[_Re] = de_RegionList((0, import_smithy_client.getArrayIfSingleItem)(output[_Re][_m]), context);\n }\n return contents;\n}, \"de_StackSetAutoDeploymentTargetSummary\");\nvar de_StackSetDriftDetectionDetails = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_DSr] != null) {\n contents[_DSr] = (0, import_smithy_client.expectString)(output[_DSr]);\n }\n if (output[_DDS] != null) {\n contents[_DDS] = (0, import_smithy_client.expectString)(output[_DDS]);\n }\n if (output[_LDCT] != null) {\n contents[_LDCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LDCT]));\n }\n if (output[_TSIC] != null) {\n contents[_TSIC] = (0, import_smithy_client.strictParseInt32)(output[_TSIC]);\n }\n if (output[_DSIC] != null) {\n contents[_DSIC] = (0, import_smithy_client.strictParseInt32)(output[_DSIC]);\n }\n if (output[_ISSIC] != null) {\n contents[_ISSIC] = (0, import_smithy_client.strictParseInt32)(output[_ISSIC]);\n }\n if (output[_IPSIC] != null) {\n contents[_IPSIC] = (0, import_smithy_client.strictParseInt32)(output[_IPSIC]);\n }\n if (output[_FSIC] != null) {\n contents[_FSIC] = (0, import_smithy_client.strictParseInt32)(output[_FSIC]);\n }\n return contents;\n}, \"de_StackSetDriftDetectionDetails\");\nvar de_StackSetNotEmptyException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_StackSetNotEmptyException\");\nvar de_StackSetNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_StackSetNotFoundException\");\nvar de_StackSetOperation = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n if (output[_SSI] != null) {\n contents[_SSI] = (0, import_smithy_client.expectString)(output[_SSI]);\n }\n if (output[_A] != null) {\n contents[_A] = (0, import_smithy_client.expectString)(output[_A]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_OP] != null) {\n contents[_OP] = de_StackSetOperationPreferences(output[_OP], context);\n }\n if (output[_RSe] != null) {\n contents[_RSe] = (0, import_smithy_client.parseBoolean)(output[_RSe]);\n }\n if (output[_ARARN] != null) {\n contents[_ARARN] = (0, import_smithy_client.expectString)(output[_ARARN]);\n }\n if (output[_ERN] != null) {\n contents[_ERN] = (0, import_smithy_client.expectString)(output[_ERN]);\n }\n if (output[_CTre] != null) {\n contents[_CTre] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTre]));\n }\n if (output[_ETn] != null) {\n contents[_ETn] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_ETn]));\n }\n if (output[_DTep] != null) {\n contents[_DTep] = de_DeploymentTargets(output[_DTep], context);\n }\n if (output[_SSDDD] != null) {\n contents[_SSDDD] = de_StackSetDriftDetectionDetails(output[_SSDDD], context);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_SD] != null) {\n contents[_SD] = de_StackSetOperationStatusDetails(output[_SD], context);\n }\n return contents;\n}, \"de_StackSetOperation\");\nvar de_StackSetOperationPreferences = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RCT] != null) {\n contents[_RCT] = (0, import_smithy_client.expectString)(output[_RCT]);\n }\n if (output.RegionOrder === \"\") {\n contents[_RO] = [];\n } else if (output[_RO] != null && output[_RO][_m] != null) {\n contents[_RO] = de_RegionList((0, import_smithy_client.getArrayIfSingleItem)(output[_RO][_m]), context);\n }\n if (output[_FTC] != null) {\n contents[_FTC] = (0, import_smithy_client.strictParseInt32)(output[_FTC]);\n }\n if (output[_FTP] != null) {\n contents[_FTP] = (0, import_smithy_client.strictParseInt32)(output[_FTP]);\n }\n if (output[_MCC] != null) {\n contents[_MCC] = (0, import_smithy_client.strictParseInt32)(output[_MCC]);\n }\n if (output[_MCP] != null) {\n contents[_MCP] = (0, import_smithy_client.strictParseInt32)(output[_MCP]);\n }\n if (output[_CM] != null) {\n contents[_CM] = (0, import_smithy_client.expectString)(output[_CM]);\n }\n return contents;\n}, \"de_StackSetOperationPreferences\");\nvar de_StackSetOperationResultSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackSetOperationResultSummary(entry, context);\n });\n}, \"de_StackSetOperationResultSummaries\");\nvar de_StackSetOperationResultSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Acc] != null) {\n contents[_Acc] = (0, import_smithy_client.expectString)(output[_Acc]);\n }\n if (output[_Reg] != null) {\n contents[_Reg] = (0, import_smithy_client.expectString)(output[_Reg]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_AGR] != null) {\n contents[_AGR] = de_AccountGateResult(output[_AGR], context);\n }\n if (output[_OUIr] != null) {\n contents[_OUIr] = (0, import_smithy_client.expectString)(output[_OUIr]);\n }\n return contents;\n}, \"de_StackSetOperationResultSummary\");\nvar de_StackSetOperationStatusDetails = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_FSIC] != null) {\n contents[_FSIC] = (0, import_smithy_client.strictParseInt32)(output[_FSIC]);\n }\n return contents;\n}, \"de_StackSetOperationStatusDetails\");\nvar de_StackSetOperationSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackSetOperationSummary(entry, context);\n });\n}, \"de_StackSetOperationSummaries\");\nvar de_StackSetOperationSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n if (output[_A] != null) {\n contents[_A] = (0, import_smithy_client.expectString)(output[_A]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_CTre] != null) {\n contents[_CTre] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTre]));\n }\n if (output[_ETn] != null) {\n contents[_ETn] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_ETn]));\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_SD] != null) {\n contents[_SD] = de_StackSetOperationStatusDetails(output[_SD], context);\n }\n if (output[_OP] != null) {\n contents[_OP] = de_StackSetOperationPreferences(output[_OP], context);\n }\n return contents;\n}, \"de_StackSetOperationSummary\");\nvar de_StackSetSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackSetSummary(entry, context);\n });\n}, \"de_StackSetSummaries\");\nvar de_StackSetSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SSN] != null) {\n contents[_SSN] = (0, import_smithy_client.expectString)(output[_SSN]);\n }\n if (output[_SSI] != null) {\n contents[_SSI] = (0, import_smithy_client.expectString)(output[_SSI]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_AD] != null) {\n contents[_AD] = de_AutoDeployment(output[_AD], context);\n }\n if (output[_PM] != null) {\n contents[_PM] = (0, import_smithy_client.expectString)(output[_PM]);\n }\n if (output[_DSr] != null) {\n contents[_DSr] = (0, import_smithy_client.expectString)(output[_DSr]);\n }\n if (output[_LDCT] != null) {\n contents[_LDCT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LDCT]));\n }\n if (output[_ME] != null) {\n contents[_ME] = de_ManagedExecution(output[_ME], context);\n }\n return contents;\n}, \"de_StackSetSummary\");\nvar de_StackSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_StackSummary(entry, context);\n });\n}, \"de_StackSummaries\");\nvar de_StackSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n if (output[_SN] != null) {\n contents[_SN] = (0, import_smithy_client.expectString)(output[_SN]);\n }\n if (output[_TDe] != null) {\n contents[_TDe] = (0, import_smithy_client.expectString)(output[_TDe]);\n }\n if (output[_CTr] != null) {\n contents[_CTr] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTr]));\n }\n if (output[_LUT] != null) {\n contents[_LUT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LUT]));\n }\n if (output[_DTel] != null) {\n contents[_DTel] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_DTel]));\n }\n if (output[_SSta] != null) {\n contents[_SSta] = (0, import_smithy_client.expectString)(output[_SSta]);\n }\n if (output[_SSR] != null) {\n contents[_SSR] = (0, import_smithy_client.expectString)(output[_SSR]);\n }\n if (output[_PIa] != null) {\n contents[_PIa] = (0, import_smithy_client.expectString)(output[_PIa]);\n }\n if (output[_RIo] != null) {\n contents[_RIo] = (0, import_smithy_client.expectString)(output[_RIo]);\n }\n if (output[_DI] != null) {\n contents[_DI] = de_StackDriftInformationSummary(output[_DI], context);\n }\n return contents;\n}, \"de_StackSummary\");\nvar de_StageList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_StageList\");\nvar de_StaleRequestException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_StaleRequestException\");\nvar de_StartResourceScanOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RSI] != null) {\n contents[_RSI] = (0, import_smithy_client.expectString)(output[_RSI]);\n }\n return contents;\n}, \"de_StartResourceScanOutput\");\nvar de_StopStackSetOperationOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n return contents;\n}, \"de_StopStackSetOperationOutput\");\nvar de_SupportedMajorVersions = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.strictParseInt32)(entry);\n });\n}, \"de_SupportedMajorVersions\");\nvar de_Tag = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_K] != null) {\n contents[_K] = (0, import_smithy_client.expectString)(output[_K]);\n }\n if (output[_Val] != null) {\n contents[_Val] = (0, import_smithy_client.expectString)(output[_Val]);\n }\n return contents;\n}, \"de_Tag\");\nvar de_Tags = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_Tag(entry, context);\n });\n}, \"de_Tags\");\nvar de_TemplateConfiguration = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_DPe] != null) {\n contents[_DPe] = (0, import_smithy_client.expectString)(output[_DPe]);\n }\n if (output[_URP] != null) {\n contents[_URP] = (0, import_smithy_client.expectString)(output[_URP]);\n }\n return contents;\n}, \"de_TemplateConfiguration\");\nvar de_TemplateParameter = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PK] != null) {\n contents[_PK] = (0, import_smithy_client.expectString)(output[_PK]);\n }\n if (output[_DV] != null) {\n contents[_DV] = (0, import_smithy_client.expectString)(output[_DV]);\n }\n if (output[_NE] != null) {\n contents[_NE] = (0, import_smithy_client.parseBoolean)(output[_NE]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n return contents;\n}, \"de_TemplateParameter\");\nvar de_TemplateParameters = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_TemplateParameter(entry, context);\n });\n}, \"de_TemplateParameters\");\nvar de_TemplateProgress = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_RSesou] != null) {\n contents[_RSesou] = (0, import_smithy_client.strictParseInt32)(output[_RSesou]);\n }\n if (output[_RF] != null) {\n contents[_RF] = (0, import_smithy_client.strictParseInt32)(output[_RF]);\n }\n if (output[_RPes] != null) {\n contents[_RPes] = (0, import_smithy_client.strictParseInt32)(output[_RPes]);\n }\n if (output[_RPeso] != null) {\n contents[_RPeso] = (0, import_smithy_client.strictParseInt32)(output[_RPeso]);\n }\n return contents;\n}, \"de_TemplateProgress\");\nvar de_TemplateSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_TemplateSummary(entry, context);\n });\n}, \"de_TemplateSummaries\");\nvar de_TemplateSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_GTI] != null) {\n contents[_GTI] = (0, import_smithy_client.expectString)(output[_GTI]);\n }\n if (output[_GTN] != null) {\n contents[_GTN] = (0, import_smithy_client.expectString)(output[_GTN]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_SRt] != null) {\n contents[_SRt] = (0, import_smithy_client.expectString)(output[_SRt]);\n }\n if (output[_CTr] != null) {\n contents[_CTr] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_CTr]));\n }\n if (output[_LUT] != null) {\n contents[_LUT] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LUT]));\n }\n if (output[_NOR] != null) {\n contents[_NOR] = (0, import_smithy_client.strictParseInt32)(output[_NOR]);\n }\n return contents;\n}, \"de_TemplateSummary\");\nvar de_TestTypeOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_TVA] != null) {\n contents[_TVA] = (0, import_smithy_client.expectString)(output[_TVA]);\n }\n return contents;\n}, \"de_TestTypeOutput\");\nvar de_TokenAlreadyExistsException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_TokenAlreadyExistsException\");\nvar de_TransformsList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return (0, import_smithy_client.expectString)(entry);\n });\n}, \"de_TransformsList\");\nvar de_TypeConfigurationDetails = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n if (output[_Al] != null) {\n contents[_Al] = (0, import_smithy_client.expectString)(output[_Al]);\n }\n if (output[_Co] != null) {\n contents[_Co] = (0, import_smithy_client.expectString)(output[_Co]);\n }\n if (output[_LU] != null) {\n contents[_LU] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LU]));\n }\n if (output[_TA] != null) {\n contents[_TA] = (0, import_smithy_client.expectString)(output[_TA]);\n }\n if (output[_TN] != null) {\n contents[_TN] = (0, import_smithy_client.expectString)(output[_TN]);\n }\n if (output[_IDC] != null) {\n contents[_IDC] = (0, import_smithy_client.parseBoolean)(output[_IDC]);\n }\n return contents;\n}, \"de_TypeConfigurationDetails\");\nvar de_TypeConfigurationDetailsList = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_TypeConfigurationDetails(entry, context);\n });\n}, \"de_TypeConfigurationDetailsList\");\nvar de_TypeConfigurationIdentifier = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_TA] != null) {\n contents[_TA] = (0, import_smithy_client.expectString)(output[_TA]);\n }\n if (output[_TCA] != null) {\n contents[_TCA] = (0, import_smithy_client.expectString)(output[_TCA]);\n }\n if (output[_TCAy] != null) {\n contents[_TCAy] = (0, import_smithy_client.expectString)(output[_TCAy]);\n }\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n if (output[_TN] != null) {\n contents[_TN] = (0, import_smithy_client.expectString)(output[_TN]);\n }\n return contents;\n}, \"de_TypeConfigurationIdentifier\");\nvar de_TypeConfigurationNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_TypeConfigurationNotFoundException\");\nvar de_TypeNotFoundException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_M] != null) {\n contents[_M] = (0, import_smithy_client.expectString)(output[_M]);\n }\n return contents;\n}, \"de_TypeNotFoundException\");\nvar de_TypeSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_TypeSummary(entry, context);\n });\n}, \"de_TypeSummaries\");\nvar de_TypeSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n if (output[_TN] != null) {\n contents[_TN] = (0, import_smithy_client.expectString)(output[_TN]);\n }\n if (output[_DVI] != null) {\n contents[_DVI] = (0, import_smithy_client.expectString)(output[_DVI]);\n }\n if (output[_TA] != null) {\n contents[_TA] = (0, import_smithy_client.expectString)(output[_TA]);\n }\n if (output[_LU] != null) {\n contents[_LU] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_LU]));\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_PI] != null) {\n contents[_PI] = (0, import_smithy_client.expectString)(output[_PI]);\n }\n if (output[_OTN] != null) {\n contents[_OTN] = (0, import_smithy_client.expectString)(output[_OTN]);\n }\n if (output[_PVN] != null) {\n contents[_PVN] = (0, import_smithy_client.expectString)(output[_PVN]);\n }\n if (output[_LPV] != null) {\n contents[_LPV] = (0, import_smithy_client.expectString)(output[_LPV]);\n }\n if (output[_PIu] != null) {\n contents[_PIu] = (0, import_smithy_client.expectString)(output[_PIu]);\n }\n if (output[_PN] != null) {\n contents[_PN] = (0, import_smithy_client.expectString)(output[_PN]);\n }\n if (output[_IA] != null) {\n contents[_IA] = (0, import_smithy_client.parseBoolean)(output[_IA]);\n }\n return contents;\n}, \"de_TypeSummary\");\nvar de_TypeVersionSummaries = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_TypeVersionSummary(entry, context);\n });\n}, \"de_TypeVersionSummaries\");\nvar de_TypeVersionSummary = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n if (output[_TN] != null) {\n contents[_TN] = (0, import_smithy_client.expectString)(output[_TN]);\n }\n if (output[_VI] != null) {\n contents[_VI] = (0, import_smithy_client.expectString)(output[_VI]);\n }\n if (output[_IDV] != null) {\n contents[_IDV] = (0, import_smithy_client.parseBoolean)(output[_IDV]);\n }\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n if (output[_TCi] != null) {\n contents[_TCi] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_TCi]));\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output[_PVN] != null) {\n contents[_PVN] = (0, import_smithy_client.expectString)(output[_PVN]);\n }\n return contents;\n}, \"de_TypeVersionSummary\");\nvar de_UnprocessedTypeConfigurations = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_TypeConfigurationIdentifier(entry, context);\n });\n}, \"de_UnprocessedTypeConfigurations\");\nvar de_UpdateGeneratedTemplateOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_GTI] != null) {\n contents[_GTI] = (0, import_smithy_client.expectString)(output[_GTI]);\n }\n return contents;\n}, \"de_UpdateGeneratedTemplateOutput\");\nvar de_UpdateStackInstancesOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n return contents;\n}, \"de_UpdateStackInstancesOutput\");\nvar de_UpdateStackOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_UpdateStackOutput\");\nvar de_UpdateStackSetOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_OI] != null) {\n contents[_OI] = (0, import_smithy_client.expectString)(output[_OI]);\n }\n return contents;\n}, \"de_UpdateStackSetOutput\");\nvar de_UpdateTerminationProtectionOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_UpdateTerminationProtectionOutput\");\nvar de_ValidateTemplateOutput = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.Parameters === \"\") {\n contents[_P] = [];\n } else if (output[_P] != null && output[_P][_m] != null) {\n contents[_P] = de_TemplateParameters((0, import_smithy_client.getArrayIfSingleItem)(output[_P][_m]), context);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n if (output.Capabilities === \"\") {\n contents[_C] = [];\n } else if (output[_C] != null && output[_C][_m] != null) {\n contents[_C] = de_Capabilities((0, import_smithy_client.getArrayIfSingleItem)(output[_C][_m]), context);\n }\n if (output[_CR] != null) {\n contents[_CR] = (0, import_smithy_client.expectString)(output[_CR]);\n }\n if (output.DeclaredTransforms === \"\") {\n contents[_DTec] = [];\n } else if (output[_DTec] != null && output[_DTec][_m] != null) {\n contents[_DTec] = de_TransformsList((0, import_smithy_client.getArrayIfSingleItem)(output[_DTec][_m]), context);\n }\n return contents;\n}, \"de_ValidateTemplateOutput\");\nvar de_WarningDetail = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_T] != null) {\n contents[_T] = (0, import_smithy_client.expectString)(output[_T]);\n }\n if (output.Properties === \"\") {\n contents[_Pro] = [];\n } else if (output[_Pro] != null && output[_Pro][_m] != null) {\n contents[_Pro] = de_WarningProperties((0, import_smithy_client.getArrayIfSingleItem)(output[_Pro][_m]), context);\n }\n return contents;\n}, \"de_WarningDetail\");\nvar de_WarningDetails = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_WarningDetail(entry, context);\n });\n}, \"de_WarningDetails\");\nvar de_WarningProperties = /* @__PURE__ */ __name((output, context) => {\n return (output || []).filter((e) => e != null).map((entry) => {\n return de_WarningProperty(entry, context);\n });\n}, \"de_WarningProperties\");\nvar de_WarningProperty = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_PPr] != null) {\n contents[_PPr] = (0, import_smithy_client.expectString)(output[_PPr]);\n }\n if (output[_Req] != null) {\n contents[_Req] = (0, import_smithy_client.parseBoolean)(output[_Req]);\n }\n if (output[_D] != null) {\n contents[_D] = (0, import_smithy_client.expectString)(output[_D]);\n }\n return contents;\n}, \"de_WarningProperty\");\nvar de_Warnings = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output.UnrecognizedResourceTypes === \"\") {\n contents[_URT] = [];\n } else if (output[_URT] != null && output[_URT][_m] != null) {\n contents[_URT] = de_ResourceTypes((0, import_smithy_client.getArrayIfSingleItem)(output[_URT][_m]), context);\n }\n return contents;\n}, \"de_Warnings\");\nvar deserializeMetadata = /* @__PURE__ */ __name((output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"]\n}), \"deserializeMetadata\");\nvar throwDefaultError = (0, import_smithy_client.withBaseException)(CloudFormationServiceException);\nvar buildHttpRpcRequest = /* @__PURE__ */ __name(async (context, headers, path, resolvedHostname, body) => {\n const { hostname, protocol = \"https\", port, path: basePath } = await context.endpoint();\n const contents = {\n protocol,\n hostname,\n port,\n method: \"POST\",\n path: basePath.endsWith(\"/\") ? basePath.slice(0, -1) + path : basePath + path,\n headers\n };\n if (resolvedHostname !== void 0) {\n contents.hostname = resolvedHostname;\n }\n if (body !== void 0) {\n contents.body = body;\n }\n return new import_protocol_http.HttpRequest(contents);\n}, \"buildHttpRpcRequest\");\nvar SHARED_HEADERS = {\n \"content-type\": \"application/x-www-form-urlencoded\"\n};\nvar _ = \"2010-05-15\";\nvar _A = \"Action\";\nvar _AC = \"AfterContext\";\nvar _ACT = \"AttributeChangeType\";\nvar _AD = \"AutoDeployment\";\nvar _AFT = \"AccountFilterType\";\nvar _AGR = \"AccountGateResult\";\nvar _AL = \"AccountLimits\";\nvar _AOA = \"ActivateOrganizationsAccess\";\nvar _AP = \"ActualProperties\";\nvar _AR = \"AddResources\";\nvar _ARARN = \"AdministrationRoleARN\";\nvar _AT = \"ActivateType\";\nvar _ATAC = \"AcceptTermsAndConditions\";\nvar _AU = \"AutoUpdate\";\nvar _AUc = \"AccountsUrl\";\nvar _AV = \"AllowedValues\";\nvar _AVc = \"ActualValue\";\nvar _AVf = \"AfterValue\";\nvar _Ac = \"Accounts\";\nvar _Acc = \"Account\";\nvar _Act = \"Active\";\nvar _Al = \"Alias\";\nvar _Ar = \"Arn\";\nvar _At = \"Attribute\";\nvar _BC = \"BeforeContext\";\nvar _BDTC = \"BatchDescribeTypeConfigurations\";\nvar _BT = \"BearerToken\";\nvar _BV = \"BeforeValue\";\nvar _C = \"Capabilities\";\nvar _CA = \"CallAs\";\nvar _CAo = \"ConnectionArn\";\nvar _CAon = \"ConfigurationAlias\";\nvar _CAonf = \"ConfigurationArn\";\nvar _CCS = \"CreateChangeSet\";\nvar _CE = \"CausingEntity\";\nvar _CGT = \"CreateGeneratedTemplate\";\nvar _CM = \"ConcurrencyMode\";\nvar _COS = \"CurrentOperationStatus\";\nvar _CR = \"CapabilitiesReason\";\nvar _CRT = \"ClientRequestToken\";\nvar _CS = \"CreateStack\";\nvar _CSI = \"CreateStackInstances\";\nvar _CSIh = \"ChangeSetId\";\nvar _CSN = \"ChangeSetName\";\nvar _CSS = \"CreateStackSet\";\nvar _CST = \"ChangeSetType\";\nvar _CSh = \"ChangeSource\";\nvar _CSo = \"ConfigurationSchema\";\nvar _CT = \"ClientToken\";\nvar _CTr = \"CreationTime\";\nvar _CTre = \"CreationTimestamp\";\nvar _CUR = \"ContinueUpdateRollback\";\nvar _CUS = \"CancelUpdateStack\";\nvar _Ca = \"Category\";\nvar _Ch = \"Changes\";\nvar _Co = \"Configuration\";\nvar _D = \"Description\";\nvar _DAL = \"DescribeAccountLimits\";\nvar _DCS = \"DeleteChangeSet\";\nvar _DCSH = \"DescribeChangeSetHooks\";\nvar _DCSe = \"DescribeChangeSet\";\nvar _DDS = \"DriftDetectionStatus\";\nvar _DGT = \"DeleteGeneratedTemplate\";\nvar _DGTe = \"DescribeGeneratedTemplate\";\nvar _DI = \"DriftInformation\";\nvar _DOA = \"DeactivateOrganizationsAccess\";\nvar _DOAe = \"DescribeOrganizationsAccess\";\nvar _DP = \"DescribePublisher\";\nvar _DPe = \"DeletionPolicy\";\nvar _DR = \"DisableRollback\";\nvar _DRS = \"DescribeResourceScan\";\nvar _DS = \"DeleteStack\";\nvar _DSD = \"DetectStackDrift\";\nvar _DSDDS = \"DescribeStackDriftDetectionStatus\";\nvar _DSE = \"DescribeStackEvents\";\nvar _DSI = \"DeleteStackInstances\";\nvar _DSIC = \"DriftedStackInstancesCount\";\nvar _DSIe = \"DescribeStackInstance\";\nvar _DSR = \"DescribeStackResource\";\nvar _DSRC = \"DriftedStackResourceCount\";\nvar _DSRD = \"DescribeStackResourceDrifts\";\nvar _DSRDe = \"DetectStackResourceDrift\";\nvar _DSRe = \"DescribeStackResources\";\nvar _DSRet = \"DetectionStatusReason\";\nvar _DSS = \"DeleteStackSet\";\nvar _DSSD = \"DetectStackSetDrift\";\nvar _DSSO = \"DescribeStackSetOperation\";\nvar _DSSe = \"DescribeStackSet\";\nvar _DSe = \"DescribeStacks\";\nvar _DSep = \"DeprecatedStatus\";\nvar _DSet = \"DetectionStatus\";\nvar _DSeta = \"DetailedStatus\";\nvar _DSr = \"DriftStatus\";\nvar _DT = \"DeactivateType\";\nvar _DTR = \"DescribeTypeRegistration\";\nvar _DTe = \"DeregisterType\";\nvar _DTec = \"DeclaredTransforms\";\nvar _DTel = \"DeletionTime\";\nvar _DTep = \"DeploymentTargets\";\nvar _DTes = \"DescribeType\";\nvar _DTi = \"DifferenceType\";\nvar _DU = \"DocumentationUrl\";\nvar _DV = \"DefaultValue\";\nvar _DVI = \"DefaultVersionId\";\nvar _De = \"Details\";\nvar _E = \"Enabled\";\nvar _EC = \"ErrorCode\";\nvar _ECS = \"ExecuteChangeSet\";\nvar _EI = \"EventId\";\nvar _EM = \"ErrorMessage\";\nvar _EN = \"ExportName\";\nvar _EP = \"ExpectedProperties\";\nvar _ERA = \"ExecutionRoleArn\";\nvar _ERN = \"ExecutionRoleName\";\nvar _ES = \"ExecutionStatus\";\nvar _ESI = \"ExportingStackId\";\nvar _ET = \"EndTime\";\nvar _ETC = \"EstimateTemplateCost\";\nvar _ETP = \"EnableTerminationProtection\";\nvar _ETn = \"EndTimestamp\";\nvar _EV = \"ExpectedValue\";\nvar _Er = \"Errors\";\nvar _Ev = \"Evaluation\";\nvar _Ex = \"Exports\";\nvar _F = \"Format\";\nvar _FM = \"FailureMode\";\nvar _FSIC = \"FailedStackInstancesCount\";\nvar _FTC = \"FailureToleranceCount\";\nvar _FTP = \"FailureTolerancePercentage\";\nvar _Fi = \"Filters\";\nvar _GGT = \"GetGeneratedTemplate\";\nvar _GSP = \"GetStackPolicy\";\nvar _GT = \"GetTemplate\";\nvar _GTI = \"GeneratedTemplateId\";\nvar _GTN = \"GeneratedTemplateName\";\nvar _GTS = \"GetTemplateSummary\";\nvar _H = \"Hooks\";\nvar _HFM = \"HookFailureMode\";\nvar _HIC = \"HookInvocationCount\";\nvar _HIP = \"HookInvocationPoint\";\nvar _HS = \"HookStatus\";\nvar _HSR = \"HookStatusReason\";\nvar _HT = \"HookType\";\nvar _I = \"Id\";\nvar _IA = \"IsActivated\";\nvar _IDC = \"IsDefaultConfiguration\";\nvar _IDV = \"IsDefaultVersion\";\nvar _IER = \"ImportExistingResources\";\nvar _INS = \"IncludeNestedStacks\";\nvar _IP = \"InvocationPoint\";\nvar _IPSIC = \"InProgressStackInstancesCount\";\nvar _IPV = \"IncludePropertyValues\";\nvar _IPd = \"IdentityProvider\";\nvar _ISSIC = \"InSyncStackInstancesCount\";\nvar _ISTSS = \"ImportStacksToStackSet\";\nvar _Im = \"Imports\";\nvar _K = \"Key\";\nvar _LC = \"LoggingConfig\";\nvar _LCS = \"ListChangeSets\";\nvar _LCT = \"LastCheckTimestamp\";\nvar _LDB = \"LogDeliveryBucket\";\nvar _LDCT = \"LastDriftCheckTimestamp\";\nvar _LE = \"ListExports\";\nvar _LGN = \"LogGroupName\";\nvar _LGT = \"ListGeneratedTemplates\";\nvar _LI = \"ListImports\";\nvar _LIH = \"LogicalIdHierarchy\";\nvar _LOI = \"LastOperationId\";\nvar _LPV = \"LatestPublicVersion\";\nvar _LRA = \"LogRoleArn\";\nvar _LRI = \"LogicalResourceId\";\nvar _LRIo = \"LogicalResourceIds\";\nvar _LRS = \"ListResourceScans\";\nvar _LRSR = \"ListResourceScanResources\";\nvar _LRSRR = \"ListResourceScanRelatedResources\";\nvar _LS = \"ListStacks\";\nvar _LSI = \"ListStackInstances\";\nvar _LSIRD = \"ListStackInstanceResourceDrifts\";\nvar _LSR = \"ListStackResources\";\nvar _LSS = \"ListStackSets\";\nvar _LSSADT = \"ListStackSetAutoDeploymentTargets\";\nvar _LSSO = \"ListStackSetOperations\";\nvar _LSSOR = \"ListStackSetOperationResults\";\nvar _LT = \"ListTypes\";\nvar _LTR = \"ListTypeRegistrations\";\nvar _LTV = \"ListTypeVersions\";\nvar _LU = \"LastUpdated\";\nvar _LUT = \"LastUpdatedTime\";\nvar _LUTa = \"LastUpdatedTimestamp\";\nvar _M = \"Message\";\nvar _MBS = \"ManagedByStack\";\nvar _MCC = \"MaxConcurrentCount\";\nvar _MCP = \"MaxConcurrentPercentage\";\nvar _ME = \"ManagedExecution\";\nvar _MI = \"ModuleInfo\";\nvar _MR = \"MaxResults\";\nvar _MTIM = \"MonitoringTimeInMinutes\";\nvar _MV = \"MajorVersion\";\nvar _Me = \"Metadata\";\nvar _N = \"Name\";\nvar _NARN = \"NotificationARNs\";\nvar _NE = \"NoEcho\";\nvar _NGTN = \"NewGeneratedTemplateName\";\nvar _NOR = \"NumberOfResources\";\nvar _NT = \"NextToken\";\nvar _O = \"Outputs\";\nvar _OF = \"OnFailure\";\nvar _OI = \"OperationId\";\nvar _OK = \"OutputKey\";\nvar _OP = \"OperationPreferences\";\nvar _OS = \"OperationStatus\";\nvar _OSF = \"OnStackFailure\";\nvar _OTA = \"OriginalTypeArn\";\nvar _OTN = \"OriginalTypeName\";\nvar _OUI = \"OrganizationalUnitIds\";\nvar _OUIr = \"OrganizationalUnitId\";\nvar _OV = \"OutputValue\";\nvar _P = \"Parameters\";\nvar _PA = \"PolicyAction\";\nvar _PC = \"PercentageCompleted\";\nvar _PCSI = \"ParentChangeSetId\";\nvar _PCa = \"ParameterConstraints\";\nvar _PD = \"PropertyDifferences\";\nvar _PI = \"PublisherId\";\nvar _PIa = \"ParentId\";\nvar _PIu = \"PublisherIdentity\";\nvar _PK = \"ParameterKey\";\nvar _PM = \"PermissionModel\";\nvar _PN = \"PublisherName\";\nvar _PO = \"ParameterOverrides\";\nvar _PP = \"PublisherProfile\";\nvar _PPr = \"PropertyPath\";\nvar _PRI = \"PhysicalResourceId\";\nvar _PRIC = \"PhysicalResourceIdContext\";\nvar _PS = \"PublisherStatus\";\nvar _PSr = \"ProgressStatus\";\nvar _PT = \"PublishType\";\nvar _PTA = \"PublicTypeArn\";\nvar _PTa = \"ParameterType\";\nvar _PTr = \"ProvisioningType\";\nvar _PV = \"ParameterValue\";\nvar _PVN = \"PublicVersionNumber\";\nvar _Pa = \"Path\";\nvar _Pr = \"Progress\";\nvar _Pro = \"Properties\";\nvar _R = \"Resources\";\nvar _RA = \"ResourceAction\";\nvar _RAR = \"RefreshAllResources\";\nvar _RARN = \"RoleARN\";\nvar _RAT = \"RequiredActivatedTypes\";\nvar _RC = \"RollbackConfiguration\";\nvar _RCSI = \"RootChangeSetId\";\nvar _RCT = \"RegionConcurrencyType\";\nvar _RCe = \"ResourceChange\";\nvar _REOC = \"RetainExceptOnCreate\";\nvar _RF = \"ResourcesFailed\";\nvar _RHP = \"RecordHandlerProgress\";\nvar _RI = \"ResourceIdentifier\";\nvar _RIS = \"ResourceIdentifierSummaries\";\nvar _RIe = \"ResourceIdentifiers\";\nvar _RIo = \"RootId\";\nvar _RM = \"ResourceModel\";\nvar _RO = \"RegionOrder\";\nvar _RP = \"RegisterPublisher\";\nvar _RPe = \"ResourceProperties\";\nvar _RPes = \"ResourcesProcessing\";\nvar _RPeso = \"ResourcesPending\";\nvar _RR = \"RetainResources\";\nvar _RRe = \"RemoveResources\";\nvar _RRel = \"RelatedResources\";\nvar _RReq = \"RequiresRecreation\";\nvar _RRes = \"ResourcesRead\";\nvar _RS = \"RollbackStack\";\nvar _RSF = \"RegistrationStatusFilter\";\nvar _RSI = \"ResourceScanId\";\nvar _RSOAR = \"RetainStacksOnAccountRemoval\";\nvar _RSR = \"ResourceStatusReason\";\nvar _RSS = \"ResourceScanSummaries\";\nvar _RSe = \"RetainStacks\";\nvar _RSes = \"ResourcesScanned\";\nvar _RSeso = \"ResourceStatus\";\nvar _RSesou = \"ResourcesSucceeded\";\nvar _RT = \"RegisterType\";\nvar _RTD = \"ResourceTargetDetails\";\nvar _RTI = \"ResourcesToImport\";\nvar _RTL = \"RegistrationTokenList\";\nvar _RTP = \"ResourceTypePrefix\";\nvar _RTS = \"ResourcesToSkip\";\nvar _RTe = \"ResourceTypes\";\nvar _RTeg = \"RegistrationToken\";\nvar _RTes = \"ResourceType\";\nvar _RTo = \"RollbackTriggers\";\nvar _RV = \"ResolvedValue\";\nvar _Re = \"Regions\";\nvar _Reg = \"Region\";\nvar _Rep = \"Replacement\";\nvar _Req = \"Required\";\nvar _S = \"Status\";\nvar _SA = \"StagesAvailable\";\nvar _SD = \"StatusDetails\";\nvar _SDDI = \"StackDriftDetectionId\";\nvar _SDS = \"StackDriftStatus\";\nvar _SE = \"StackEvents\";\nvar _SHP = \"SchemaHandlerPackage\";\nvar _SI = \"StackId\";\nvar _SIA = \"StackInstanceAccount\";\nvar _SIR = \"StackInstanceRegion\";\nvar _SIRDS = \"StackInstanceResourceDriftStatuses\";\nvar _SIS = \"StackInstanceStatus\";\nvar _SIU = \"StackIdsUrl\";\nvar _SIt = \"StackIds\";\nvar _SIta = \"StackInstance\";\nvar _SM = \"StatusMessage\";\nvar _SMV = \"SupportedMajorVersions\";\nvar _SN = \"StackName\";\nvar _SPB = \"StackPolicyBody\";\nvar _SPDUB = \"StackPolicyDuringUpdateBody\";\nvar _SPDUURL = \"StackPolicyDuringUpdateURL\";\nvar _SPURL = \"StackPolicyURL\";\nvar _SR = \"SignalResource\";\nvar _SRD = \"StackResourceDrifts\";\nvar _SRDS = \"StackResourceDriftStatus\";\nvar _SRDSF = \"StackResourceDriftStatusFilters\";\nvar _SRDt = \"StackResourceDetail\";\nvar _SRDta = \"StackResourceDrift\";\nvar _SRS = \"StartResourceScan\";\nvar _SRSt = \"StackResourceSummaries\";\nvar _SRt = \"StatusReason\";\nvar _SRta = \"StackResources\";\nvar _SS = \"StackSet\";\nvar _SSARN = \"StackSetARN\";\nvar _SSDDD = \"StackSetDriftDetectionDetails\";\nvar _SSF = \"StackStatusFilter\";\nvar _SSI = \"StackSetId\";\nvar _SSN = \"StackSetName\";\nvar _SSO = \"StackSetOperation\";\nvar _SSP = \"SetStackPolicy\";\nvar _SSR = \"StackStatusReason\";\nvar _SSSO = \"StopStackSetOperation\";\nvar _SSt = \"StackSummaries\";\nvar _SSta = \"StackStatus\";\nvar _ST = \"StartTime\";\nvar _STC = \"SetTypeConfiguration\";\nvar _STDV = \"SetTypeDefaultVersion\";\nvar _SU = \"SourceUrl\";\nvar _Sc = \"Schema\";\nvar _Sco = \"Scope\";\nvar _St = \"Stacks\";\nvar _Su = \"Summaries\";\nvar _T = \"Type\";\nvar _TA = \"TypeArn\";\nvar _TB = \"TemplateBody\";\nvar _TC = \"TemplateConfiguration\";\nvar _TCA = \"TypeConfigurationAlias\";\nvar _TCAy = \"TypeConfigurationArn\";\nvar _TCI = \"TypeConfigurationIdentifiers\";\nvar _TCIy = \"TypeConfigurationIdentifier\";\nvar _TCVI = \"TypeConfigurationVersionId\";\nvar _TCi = \"TimeCreated\";\nvar _TCy = \"TypeConfigurations\";\nvar _TD = \"TargetDetails\";\nvar _TDe = \"TemplateDescription\";\nvar _TH = \"TypeHierarchy\";\nvar _TIM = \"TimeoutInMinutes\";\nvar _TK = \"TagKey\";\nvar _TN = \"TypeName\";\nvar _TNA = \"TypeNameAlias\";\nvar _TNP = \"TypeNamePrefix\";\nvar _TS = \"TemplateStage\";\nvar _TSC = \"TemplateSummaryConfig\";\nvar _TSIC = \"TotalStackInstancesCount\";\nvar _TSy = \"TypeSummaries\";\nvar _TT = \"TestType\";\nvar _TTS = \"TypeTestsStatus\";\nvar _TTSD = \"TypeTestsStatusDescription\";\nvar _TTa = \"TargetType\";\nvar _TURL = \"TemplateURL\";\nvar _TURTAW = \"TreatUnrecognizedResourceTypesAsWarnings\";\nvar _TV = \"TagValue\";\nvar _TVA = \"TypeVersionArn\";\nvar _TVI = \"TypeVersionId\";\nvar _TVS = \"TypeVersionSummaries\";\nvar _TW = \"TotalWarnings\";\nvar _Ta = \"Tags\";\nvar _Tar = \"Target\";\nvar _Ti = \"Timestamp\";\nvar _U = \"Url\";\nvar _UGT = \"UpdateGeneratedTemplate\";\nvar _UI = \"UniqueId\";\nvar _UPT = \"UsePreviousTemplate\";\nvar _UPV = \"UsePreviousValue\";\nvar _URP = \"UpdateReplacePolicy\";\nvar _URT = \"UnrecognizedResourceTypes\";\nvar _US = \"UpdateStack\";\nvar _USI = \"UpdateStackInstances\";\nvar _USS = \"UpdateStackSet\";\nvar _UTC = \"UnprocessedTypeConfigurations\";\nvar _UTP = \"UpdateTerminationProtection\";\nvar _V = \"Version\";\nvar _VB = \"VersionBump\";\nvar _VI = \"VersionId\";\nvar _VT = \"ValidateTemplate\";\nvar _Va = \"Values\";\nvar _Val = \"Value\";\nvar _Vi = \"Visibility\";\nvar _W = \"Warnings\";\nvar _e = \"entry\";\nvar _m = \"member\";\nvar buildFormUrlencodedString = /* @__PURE__ */ __name((formEntries) => Object.entries(formEntries).map(([key, value]) => (0, import_smithy_client.extendedEncodeURIComponent)(key) + \"=\" + (0, import_smithy_client.extendedEncodeURIComponent)(value)).join(\"&\"), \"buildFormUrlencodedString\");\nvar loadQueryErrorCode = /* @__PURE__ */ __name((output, data) => {\n var _a;\n if (((_a = data.Error) == null ? void 0 : _a.Code) !== void 0) {\n return data.Error.Code;\n }\n if (output.statusCode == 404) {\n return \"NotFound\";\n }\n}, \"loadQueryErrorCode\");\n\n// src/commands/ActivateOrganizationsAccessCommand.ts\nvar _ActivateOrganizationsAccessCommand = class _ActivateOrganizationsAccessCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ActivateOrganizationsAccess\", {}).n(\"CloudFormationClient\", \"ActivateOrganizationsAccessCommand\").f(void 0, void 0).ser(se_ActivateOrganizationsAccessCommand).de(de_ActivateOrganizationsAccessCommand).build() {\n};\n__name(_ActivateOrganizationsAccessCommand, \"ActivateOrganizationsAccessCommand\");\nvar ActivateOrganizationsAccessCommand = _ActivateOrganizationsAccessCommand;\n\n// src/commands/ActivateTypeCommand.ts\n\n\n\n\nvar _ActivateTypeCommand = class _ActivateTypeCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ActivateType\", {}).n(\"CloudFormationClient\", \"ActivateTypeCommand\").f(void 0, void 0).ser(se_ActivateTypeCommand).de(de_ActivateTypeCommand).build() {\n};\n__name(_ActivateTypeCommand, \"ActivateTypeCommand\");\nvar ActivateTypeCommand = _ActivateTypeCommand;\n\n// src/commands/BatchDescribeTypeConfigurationsCommand.ts\n\n\n\n\nvar _BatchDescribeTypeConfigurationsCommand = class _BatchDescribeTypeConfigurationsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"BatchDescribeTypeConfigurations\", {}).n(\"CloudFormationClient\", \"BatchDescribeTypeConfigurationsCommand\").f(void 0, void 0).ser(se_BatchDescribeTypeConfigurationsCommand).de(de_BatchDescribeTypeConfigurationsCommand).build() {\n};\n__name(_BatchDescribeTypeConfigurationsCommand, \"BatchDescribeTypeConfigurationsCommand\");\nvar BatchDescribeTypeConfigurationsCommand = _BatchDescribeTypeConfigurationsCommand;\n\n// src/commands/CancelUpdateStackCommand.ts\n\n\n\n\nvar _CancelUpdateStackCommand = class _CancelUpdateStackCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"CancelUpdateStack\", {}).n(\"CloudFormationClient\", \"CancelUpdateStackCommand\").f(void 0, void 0).ser(se_CancelUpdateStackCommand).de(de_CancelUpdateStackCommand).build() {\n};\n__name(_CancelUpdateStackCommand, \"CancelUpdateStackCommand\");\nvar CancelUpdateStackCommand = _CancelUpdateStackCommand;\n\n// src/commands/ContinueUpdateRollbackCommand.ts\n\n\n\n\nvar _ContinueUpdateRollbackCommand = class _ContinueUpdateRollbackCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ContinueUpdateRollback\", {}).n(\"CloudFormationClient\", \"ContinueUpdateRollbackCommand\").f(void 0, void 0).ser(se_ContinueUpdateRollbackCommand).de(de_ContinueUpdateRollbackCommand).build() {\n};\n__name(_ContinueUpdateRollbackCommand, \"ContinueUpdateRollbackCommand\");\nvar ContinueUpdateRollbackCommand = _ContinueUpdateRollbackCommand;\n\n// src/commands/CreateChangeSetCommand.ts\n\n\n\n\nvar _CreateChangeSetCommand = class _CreateChangeSetCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"CreateChangeSet\", {}).n(\"CloudFormationClient\", \"CreateChangeSetCommand\").f(void 0, void 0).ser(se_CreateChangeSetCommand).de(de_CreateChangeSetCommand).build() {\n};\n__name(_CreateChangeSetCommand, \"CreateChangeSetCommand\");\nvar CreateChangeSetCommand = _CreateChangeSetCommand;\n\n// src/commands/CreateGeneratedTemplateCommand.ts\n\n\n\n\nvar _CreateGeneratedTemplateCommand = class _CreateGeneratedTemplateCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"CreateGeneratedTemplate\", {}).n(\"CloudFormationClient\", \"CreateGeneratedTemplateCommand\").f(void 0, void 0).ser(se_CreateGeneratedTemplateCommand).de(de_CreateGeneratedTemplateCommand).build() {\n};\n__name(_CreateGeneratedTemplateCommand, \"CreateGeneratedTemplateCommand\");\nvar CreateGeneratedTemplateCommand = _CreateGeneratedTemplateCommand;\n\n// src/commands/CreateStackCommand.ts\n\n\n\n\nvar _CreateStackCommand = class _CreateStackCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"CreateStack\", {}).n(\"CloudFormationClient\", \"CreateStackCommand\").f(void 0, void 0).ser(se_CreateStackCommand).de(de_CreateStackCommand).build() {\n};\n__name(_CreateStackCommand, \"CreateStackCommand\");\nvar CreateStackCommand = _CreateStackCommand;\n\n// src/commands/CreateStackInstancesCommand.ts\n\n\n\n\nvar _CreateStackInstancesCommand = class _CreateStackInstancesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"CreateStackInstances\", {}).n(\"CloudFormationClient\", \"CreateStackInstancesCommand\").f(void 0, void 0).ser(se_CreateStackInstancesCommand).de(de_CreateStackInstancesCommand).build() {\n};\n__name(_CreateStackInstancesCommand, \"CreateStackInstancesCommand\");\nvar CreateStackInstancesCommand = _CreateStackInstancesCommand;\n\n// src/commands/CreateStackSetCommand.ts\n\n\n\n\nvar _CreateStackSetCommand = class _CreateStackSetCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"CreateStackSet\", {}).n(\"CloudFormationClient\", \"CreateStackSetCommand\").f(void 0, void 0).ser(se_CreateStackSetCommand).de(de_CreateStackSetCommand).build() {\n};\n__name(_CreateStackSetCommand, \"CreateStackSetCommand\");\nvar CreateStackSetCommand = _CreateStackSetCommand;\n\n// src/commands/DeactivateOrganizationsAccessCommand.ts\n\n\n\n\nvar _DeactivateOrganizationsAccessCommand = class _DeactivateOrganizationsAccessCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeactivateOrganizationsAccess\", {}).n(\"CloudFormationClient\", \"DeactivateOrganizationsAccessCommand\").f(void 0, void 0).ser(se_DeactivateOrganizationsAccessCommand).de(de_DeactivateOrganizationsAccessCommand).build() {\n};\n__name(_DeactivateOrganizationsAccessCommand, \"DeactivateOrganizationsAccessCommand\");\nvar DeactivateOrganizationsAccessCommand = _DeactivateOrganizationsAccessCommand;\n\n// src/commands/DeactivateTypeCommand.ts\n\n\n\n\nvar _DeactivateTypeCommand = class _DeactivateTypeCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeactivateType\", {}).n(\"CloudFormationClient\", \"DeactivateTypeCommand\").f(void 0, void 0).ser(se_DeactivateTypeCommand).de(de_DeactivateTypeCommand).build() {\n};\n__name(_DeactivateTypeCommand, \"DeactivateTypeCommand\");\nvar DeactivateTypeCommand = _DeactivateTypeCommand;\n\n// src/commands/DeleteChangeSetCommand.ts\n\n\n\n\nvar _DeleteChangeSetCommand = class _DeleteChangeSetCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeleteChangeSet\", {}).n(\"CloudFormationClient\", \"DeleteChangeSetCommand\").f(void 0, void 0).ser(se_DeleteChangeSetCommand).de(de_DeleteChangeSetCommand).build() {\n};\n__name(_DeleteChangeSetCommand, \"DeleteChangeSetCommand\");\nvar DeleteChangeSetCommand = _DeleteChangeSetCommand;\n\n// src/commands/DeleteGeneratedTemplateCommand.ts\n\n\n\n\nvar _DeleteGeneratedTemplateCommand = class _DeleteGeneratedTemplateCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeleteGeneratedTemplate\", {}).n(\"CloudFormationClient\", \"DeleteGeneratedTemplateCommand\").f(void 0, void 0).ser(se_DeleteGeneratedTemplateCommand).de(de_DeleteGeneratedTemplateCommand).build() {\n};\n__name(_DeleteGeneratedTemplateCommand, \"DeleteGeneratedTemplateCommand\");\nvar DeleteGeneratedTemplateCommand = _DeleteGeneratedTemplateCommand;\n\n// src/commands/DeleteStackCommand.ts\n\n\n\n\nvar _DeleteStackCommand = class _DeleteStackCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeleteStack\", {}).n(\"CloudFormationClient\", \"DeleteStackCommand\").f(void 0, void 0).ser(se_DeleteStackCommand).de(de_DeleteStackCommand).build() {\n};\n__name(_DeleteStackCommand, \"DeleteStackCommand\");\nvar DeleteStackCommand = _DeleteStackCommand;\n\n// src/commands/DeleteStackInstancesCommand.ts\n\n\n\n\nvar _DeleteStackInstancesCommand = class _DeleteStackInstancesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeleteStackInstances\", {}).n(\"CloudFormationClient\", \"DeleteStackInstancesCommand\").f(void 0, void 0).ser(se_DeleteStackInstancesCommand).de(de_DeleteStackInstancesCommand).build() {\n};\n__name(_DeleteStackInstancesCommand, \"DeleteStackInstancesCommand\");\nvar DeleteStackInstancesCommand = _DeleteStackInstancesCommand;\n\n// src/commands/DeleteStackSetCommand.ts\n\n\n\n\nvar _DeleteStackSetCommand = class _DeleteStackSetCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeleteStackSet\", {}).n(\"CloudFormationClient\", \"DeleteStackSetCommand\").f(void 0, void 0).ser(se_DeleteStackSetCommand).de(de_DeleteStackSetCommand).build() {\n};\n__name(_DeleteStackSetCommand, \"DeleteStackSetCommand\");\nvar DeleteStackSetCommand = _DeleteStackSetCommand;\n\n// src/commands/DeregisterTypeCommand.ts\n\n\n\n\nvar _DeregisterTypeCommand = class _DeregisterTypeCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DeregisterType\", {}).n(\"CloudFormationClient\", \"DeregisterTypeCommand\").f(void 0, void 0).ser(se_DeregisterTypeCommand).de(de_DeregisterTypeCommand).build() {\n};\n__name(_DeregisterTypeCommand, \"DeregisterTypeCommand\");\nvar DeregisterTypeCommand = _DeregisterTypeCommand;\n\n// src/commands/DescribeAccountLimitsCommand.ts\n\n\n\n\nvar _DescribeAccountLimitsCommand = class _DescribeAccountLimitsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeAccountLimits\", {}).n(\"CloudFormationClient\", \"DescribeAccountLimitsCommand\").f(void 0, void 0).ser(se_DescribeAccountLimitsCommand).de(de_DescribeAccountLimitsCommand).build() {\n};\n__name(_DescribeAccountLimitsCommand, \"DescribeAccountLimitsCommand\");\nvar DescribeAccountLimitsCommand = _DescribeAccountLimitsCommand;\n\n// src/commands/DescribeChangeSetCommand.ts\n\n\n\n\nvar _DescribeChangeSetCommand = class _DescribeChangeSetCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeChangeSet\", {}).n(\"CloudFormationClient\", \"DescribeChangeSetCommand\").f(void 0, void 0).ser(se_DescribeChangeSetCommand).de(de_DescribeChangeSetCommand).build() {\n};\n__name(_DescribeChangeSetCommand, \"DescribeChangeSetCommand\");\nvar DescribeChangeSetCommand = _DescribeChangeSetCommand;\n\n// src/commands/DescribeChangeSetHooksCommand.ts\n\n\n\n\nvar _DescribeChangeSetHooksCommand = class _DescribeChangeSetHooksCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeChangeSetHooks\", {}).n(\"CloudFormationClient\", \"DescribeChangeSetHooksCommand\").f(void 0, void 0).ser(se_DescribeChangeSetHooksCommand).de(de_DescribeChangeSetHooksCommand).build() {\n};\n__name(_DescribeChangeSetHooksCommand, \"DescribeChangeSetHooksCommand\");\nvar DescribeChangeSetHooksCommand = _DescribeChangeSetHooksCommand;\n\n// src/commands/DescribeGeneratedTemplateCommand.ts\n\n\n\n\nvar _DescribeGeneratedTemplateCommand = class _DescribeGeneratedTemplateCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeGeneratedTemplate\", {}).n(\"CloudFormationClient\", \"DescribeGeneratedTemplateCommand\").f(void 0, void 0).ser(se_DescribeGeneratedTemplateCommand).de(de_DescribeGeneratedTemplateCommand).build() {\n};\n__name(_DescribeGeneratedTemplateCommand, \"DescribeGeneratedTemplateCommand\");\nvar DescribeGeneratedTemplateCommand = _DescribeGeneratedTemplateCommand;\n\n// src/commands/DescribeOrganizationsAccessCommand.ts\n\n\n\n\nvar _DescribeOrganizationsAccessCommand = class _DescribeOrganizationsAccessCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeOrganizationsAccess\", {}).n(\"CloudFormationClient\", \"DescribeOrganizationsAccessCommand\").f(void 0, void 0).ser(se_DescribeOrganizationsAccessCommand).de(de_DescribeOrganizationsAccessCommand).build() {\n};\n__name(_DescribeOrganizationsAccessCommand, \"DescribeOrganizationsAccessCommand\");\nvar DescribeOrganizationsAccessCommand = _DescribeOrganizationsAccessCommand;\n\n// src/commands/DescribePublisherCommand.ts\n\n\n\n\nvar _DescribePublisherCommand = class _DescribePublisherCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribePublisher\", {}).n(\"CloudFormationClient\", \"DescribePublisherCommand\").f(void 0, void 0).ser(se_DescribePublisherCommand).de(de_DescribePublisherCommand).build() {\n};\n__name(_DescribePublisherCommand, \"DescribePublisherCommand\");\nvar DescribePublisherCommand = _DescribePublisherCommand;\n\n// src/commands/DescribeResourceScanCommand.ts\n\n\n\n\nvar _DescribeResourceScanCommand = class _DescribeResourceScanCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeResourceScan\", {}).n(\"CloudFormationClient\", \"DescribeResourceScanCommand\").f(void 0, void 0).ser(se_DescribeResourceScanCommand).de(de_DescribeResourceScanCommand).build() {\n};\n__name(_DescribeResourceScanCommand, \"DescribeResourceScanCommand\");\nvar DescribeResourceScanCommand = _DescribeResourceScanCommand;\n\n// src/commands/DescribeStackDriftDetectionStatusCommand.ts\n\n\n\n\nvar _DescribeStackDriftDetectionStatusCommand = class _DescribeStackDriftDetectionStatusCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackDriftDetectionStatus\", {}).n(\"CloudFormationClient\", \"DescribeStackDriftDetectionStatusCommand\").f(void 0, void 0).ser(se_DescribeStackDriftDetectionStatusCommand).de(de_DescribeStackDriftDetectionStatusCommand).build() {\n};\n__name(_DescribeStackDriftDetectionStatusCommand, \"DescribeStackDriftDetectionStatusCommand\");\nvar DescribeStackDriftDetectionStatusCommand = _DescribeStackDriftDetectionStatusCommand;\n\n// src/commands/DescribeStackEventsCommand.ts\n\n\n\n\nvar _DescribeStackEventsCommand = class _DescribeStackEventsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackEvents\", {}).n(\"CloudFormationClient\", \"DescribeStackEventsCommand\").f(void 0, void 0).ser(se_DescribeStackEventsCommand).de(de_DescribeStackEventsCommand).build() {\n};\n__name(_DescribeStackEventsCommand, \"DescribeStackEventsCommand\");\nvar DescribeStackEventsCommand = _DescribeStackEventsCommand;\n\n// src/commands/DescribeStackInstanceCommand.ts\n\n\n\n\nvar _DescribeStackInstanceCommand = class _DescribeStackInstanceCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackInstance\", {}).n(\"CloudFormationClient\", \"DescribeStackInstanceCommand\").f(void 0, void 0).ser(se_DescribeStackInstanceCommand).de(de_DescribeStackInstanceCommand).build() {\n};\n__name(_DescribeStackInstanceCommand, \"DescribeStackInstanceCommand\");\nvar DescribeStackInstanceCommand = _DescribeStackInstanceCommand;\n\n// src/commands/DescribeStackResourceCommand.ts\n\n\n\n\nvar _DescribeStackResourceCommand = class _DescribeStackResourceCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackResource\", {}).n(\"CloudFormationClient\", \"DescribeStackResourceCommand\").f(void 0, void 0).ser(se_DescribeStackResourceCommand).de(de_DescribeStackResourceCommand).build() {\n};\n__name(_DescribeStackResourceCommand, \"DescribeStackResourceCommand\");\nvar DescribeStackResourceCommand = _DescribeStackResourceCommand;\n\n// src/commands/DescribeStackResourceDriftsCommand.ts\n\n\n\n\nvar _DescribeStackResourceDriftsCommand = class _DescribeStackResourceDriftsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackResourceDrifts\", {}).n(\"CloudFormationClient\", \"DescribeStackResourceDriftsCommand\").f(void 0, void 0).ser(se_DescribeStackResourceDriftsCommand).de(de_DescribeStackResourceDriftsCommand).build() {\n};\n__name(_DescribeStackResourceDriftsCommand, \"DescribeStackResourceDriftsCommand\");\nvar DescribeStackResourceDriftsCommand = _DescribeStackResourceDriftsCommand;\n\n// src/commands/DescribeStackResourcesCommand.ts\n\n\n\n\nvar _DescribeStackResourcesCommand = class _DescribeStackResourcesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackResources\", {}).n(\"CloudFormationClient\", \"DescribeStackResourcesCommand\").f(void 0, void 0).ser(se_DescribeStackResourcesCommand).de(de_DescribeStackResourcesCommand).build() {\n};\n__name(_DescribeStackResourcesCommand, \"DescribeStackResourcesCommand\");\nvar DescribeStackResourcesCommand = _DescribeStackResourcesCommand;\n\n// src/commands/DescribeStacksCommand.ts\n\n\n\n\nvar _DescribeStacksCommand = class _DescribeStacksCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStacks\", {}).n(\"CloudFormationClient\", \"DescribeStacksCommand\").f(void 0, void 0).ser(se_DescribeStacksCommand).de(de_DescribeStacksCommand).build() {\n};\n__name(_DescribeStacksCommand, \"DescribeStacksCommand\");\nvar DescribeStacksCommand = _DescribeStacksCommand;\n\n// src/commands/DescribeStackSetCommand.ts\n\n\n\n\nvar _DescribeStackSetCommand = class _DescribeStackSetCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackSet\", {}).n(\"CloudFormationClient\", \"DescribeStackSetCommand\").f(void 0, void 0).ser(se_DescribeStackSetCommand).de(de_DescribeStackSetCommand).build() {\n};\n__name(_DescribeStackSetCommand, \"DescribeStackSetCommand\");\nvar DescribeStackSetCommand = _DescribeStackSetCommand;\n\n// src/commands/DescribeStackSetOperationCommand.ts\n\n\n\n\nvar _DescribeStackSetOperationCommand = class _DescribeStackSetOperationCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeStackSetOperation\", {}).n(\"CloudFormationClient\", \"DescribeStackSetOperationCommand\").f(void 0, void 0).ser(se_DescribeStackSetOperationCommand).de(de_DescribeStackSetOperationCommand).build() {\n};\n__name(_DescribeStackSetOperationCommand, \"DescribeStackSetOperationCommand\");\nvar DescribeStackSetOperationCommand = _DescribeStackSetOperationCommand;\n\n// src/commands/DescribeTypeCommand.ts\n\n\n\n\nvar _DescribeTypeCommand = class _DescribeTypeCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeType\", {}).n(\"CloudFormationClient\", \"DescribeTypeCommand\").f(void 0, void 0).ser(se_DescribeTypeCommand).de(de_DescribeTypeCommand).build() {\n};\n__name(_DescribeTypeCommand, \"DescribeTypeCommand\");\nvar DescribeTypeCommand = _DescribeTypeCommand;\n\n// src/commands/DescribeTypeRegistrationCommand.ts\n\n\n\n\nvar _DescribeTypeRegistrationCommand = class _DescribeTypeRegistrationCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DescribeTypeRegistration\", {}).n(\"CloudFormationClient\", \"DescribeTypeRegistrationCommand\").f(void 0, void 0).ser(se_DescribeTypeRegistrationCommand).de(de_DescribeTypeRegistrationCommand).build() {\n};\n__name(_DescribeTypeRegistrationCommand, \"DescribeTypeRegistrationCommand\");\nvar DescribeTypeRegistrationCommand = _DescribeTypeRegistrationCommand;\n\n// src/commands/DetectStackDriftCommand.ts\n\n\n\n\nvar _DetectStackDriftCommand = class _DetectStackDriftCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DetectStackDrift\", {}).n(\"CloudFormationClient\", \"DetectStackDriftCommand\").f(void 0, void 0).ser(se_DetectStackDriftCommand).de(de_DetectStackDriftCommand).build() {\n};\n__name(_DetectStackDriftCommand, \"DetectStackDriftCommand\");\nvar DetectStackDriftCommand = _DetectStackDriftCommand;\n\n// src/commands/DetectStackResourceDriftCommand.ts\n\n\n\n\nvar _DetectStackResourceDriftCommand = class _DetectStackResourceDriftCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DetectStackResourceDrift\", {}).n(\"CloudFormationClient\", \"DetectStackResourceDriftCommand\").f(void 0, void 0).ser(se_DetectStackResourceDriftCommand).de(de_DetectStackResourceDriftCommand).build() {\n};\n__name(_DetectStackResourceDriftCommand, \"DetectStackResourceDriftCommand\");\nvar DetectStackResourceDriftCommand = _DetectStackResourceDriftCommand;\n\n// src/commands/DetectStackSetDriftCommand.ts\n\n\n\n\nvar _DetectStackSetDriftCommand = class _DetectStackSetDriftCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"DetectStackSetDrift\", {}).n(\"CloudFormationClient\", \"DetectStackSetDriftCommand\").f(void 0, void 0).ser(se_DetectStackSetDriftCommand).de(de_DetectStackSetDriftCommand).build() {\n};\n__name(_DetectStackSetDriftCommand, \"DetectStackSetDriftCommand\");\nvar DetectStackSetDriftCommand = _DetectStackSetDriftCommand;\n\n// src/commands/EstimateTemplateCostCommand.ts\n\n\n\n\nvar _EstimateTemplateCostCommand = class _EstimateTemplateCostCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"EstimateTemplateCost\", {}).n(\"CloudFormationClient\", \"EstimateTemplateCostCommand\").f(void 0, void 0).ser(se_EstimateTemplateCostCommand).de(de_EstimateTemplateCostCommand).build() {\n};\n__name(_EstimateTemplateCostCommand, \"EstimateTemplateCostCommand\");\nvar EstimateTemplateCostCommand = _EstimateTemplateCostCommand;\n\n// src/commands/ExecuteChangeSetCommand.ts\n\n\n\n\nvar _ExecuteChangeSetCommand = class _ExecuteChangeSetCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ExecuteChangeSet\", {}).n(\"CloudFormationClient\", \"ExecuteChangeSetCommand\").f(void 0, void 0).ser(se_ExecuteChangeSetCommand).de(de_ExecuteChangeSetCommand).build() {\n};\n__name(_ExecuteChangeSetCommand, \"ExecuteChangeSetCommand\");\nvar ExecuteChangeSetCommand = _ExecuteChangeSetCommand;\n\n// src/commands/GetGeneratedTemplateCommand.ts\n\n\n\n\nvar _GetGeneratedTemplateCommand = class _GetGeneratedTemplateCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"GetGeneratedTemplate\", {}).n(\"CloudFormationClient\", \"GetGeneratedTemplateCommand\").f(void 0, void 0).ser(se_GetGeneratedTemplateCommand).de(de_GetGeneratedTemplateCommand).build() {\n};\n__name(_GetGeneratedTemplateCommand, \"GetGeneratedTemplateCommand\");\nvar GetGeneratedTemplateCommand = _GetGeneratedTemplateCommand;\n\n// src/commands/GetStackPolicyCommand.ts\n\n\n\n\nvar _GetStackPolicyCommand = class _GetStackPolicyCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"GetStackPolicy\", {}).n(\"CloudFormationClient\", \"GetStackPolicyCommand\").f(void 0, void 0).ser(se_GetStackPolicyCommand).de(de_GetStackPolicyCommand).build() {\n};\n__name(_GetStackPolicyCommand, \"GetStackPolicyCommand\");\nvar GetStackPolicyCommand = _GetStackPolicyCommand;\n\n// src/commands/GetTemplateCommand.ts\n\n\n\n\nvar _GetTemplateCommand = class _GetTemplateCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"GetTemplate\", {}).n(\"CloudFormationClient\", \"GetTemplateCommand\").f(void 0, void 0).ser(se_GetTemplateCommand).de(de_GetTemplateCommand).build() {\n};\n__name(_GetTemplateCommand, \"GetTemplateCommand\");\nvar GetTemplateCommand = _GetTemplateCommand;\n\n// src/commands/GetTemplateSummaryCommand.ts\n\n\n\n\nvar _GetTemplateSummaryCommand = class _GetTemplateSummaryCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"GetTemplateSummary\", {}).n(\"CloudFormationClient\", \"GetTemplateSummaryCommand\").f(void 0, void 0).ser(se_GetTemplateSummaryCommand).de(de_GetTemplateSummaryCommand).build() {\n};\n__name(_GetTemplateSummaryCommand, \"GetTemplateSummaryCommand\");\nvar GetTemplateSummaryCommand = _GetTemplateSummaryCommand;\n\n// src/commands/ImportStacksToStackSetCommand.ts\n\n\n\n\nvar _ImportStacksToStackSetCommand = class _ImportStacksToStackSetCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ImportStacksToStackSet\", {}).n(\"CloudFormationClient\", \"ImportStacksToStackSetCommand\").f(void 0, void 0).ser(se_ImportStacksToStackSetCommand).de(de_ImportStacksToStackSetCommand).build() {\n};\n__name(_ImportStacksToStackSetCommand, \"ImportStacksToStackSetCommand\");\nvar ImportStacksToStackSetCommand = _ImportStacksToStackSetCommand;\n\n// src/commands/ListChangeSetsCommand.ts\n\n\n\n\nvar _ListChangeSetsCommand = class _ListChangeSetsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListChangeSets\", {}).n(\"CloudFormationClient\", \"ListChangeSetsCommand\").f(void 0, void 0).ser(se_ListChangeSetsCommand).de(de_ListChangeSetsCommand).build() {\n};\n__name(_ListChangeSetsCommand, \"ListChangeSetsCommand\");\nvar ListChangeSetsCommand = _ListChangeSetsCommand;\n\n// src/commands/ListExportsCommand.ts\n\n\n\n\nvar _ListExportsCommand = class _ListExportsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListExports\", {}).n(\"CloudFormationClient\", \"ListExportsCommand\").f(void 0, void 0).ser(se_ListExportsCommand).de(de_ListExportsCommand).build() {\n};\n__name(_ListExportsCommand, \"ListExportsCommand\");\nvar ListExportsCommand = _ListExportsCommand;\n\n// src/commands/ListGeneratedTemplatesCommand.ts\n\n\n\n\nvar _ListGeneratedTemplatesCommand = class _ListGeneratedTemplatesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListGeneratedTemplates\", {}).n(\"CloudFormationClient\", \"ListGeneratedTemplatesCommand\").f(void 0, void 0).ser(se_ListGeneratedTemplatesCommand).de(de_ListGeneratedTemplatesCommand).build() {\n};\n__name(_ListGeneratedTemplatesCommand, \"ListGeneratedTemplatesCommand\");\nvar ListGeneratedTemplatesCommand = _ListGeneratedTemplatesCommand;\n\n// src/commands/ListImportsCommand.ts\n\n\n\n\nvar _ListImportsCommand = class _ListImportsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListImports\", {}).n(\"CloudFormationClient\", \"ListImportsCommand\").f(void 0, void 0).ser(se_ListImportsCommand).de(de_ListImportsCommand).build() {\n};\n__name(_ListImportsCommand, \"ListImportsCommand\");\nvar ListImportsCommand = _ListImportsCommand;\n\n// src/commands/ListResourceScanRelatedResourcesCommand.ts\n\n\n\n\nvar _ListResourceScanRelatedResourcesCommand = class _ListResourceScanRelatedResourcesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListResourceScanRelatedResources\", {}).n(\"CloudFormationClient\", \"ListResourceScanRelatedResourcesCommand\").f(void 0, void 0).ser(se_ListResourceScanRelatedResourcesCommand).de(de_ListResourceScanRelatedResourcesCommand).build() {\n};\n__name(_ListResourceScanRelatedResourcesCommand, \"ListResourceScanRelatedResourcesCommand\");\nvar ListResourceScanRelatedResourcesCommand = _ListResourceScanRelatedResourcesCommand;\n\n// src/commands/ListResourceScanResourcesCommand.ts\n\n\n\n\nvar _ListResourceScanResourcesCommand = class _ListResourceScanResourcesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListResourceScanResources\", {}).n(\"CloudFormationClient\", \"ListResourceScanResourcesCommand\").f(void 0, void 0).ser(se_ListResourceScanResourcesCommand).de(de_ListResourceScanResourcesCommand).build() {\n};\n__name(_ListResourceScanResourcesCommand, \"ListResourceScanResourcesCommand\");\nvar ListResourceScanResourcesCommand = _ListResourceScanResourcesCommand;\n\n// src/commands/ListResourceScansCommand.ts\n\n\n\n\nvar _ListResourceScansCommand = class _ListResourceScansCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListResourceScans\", {}).n(\"CloudFormationClient\", \"ListResourceScansCommand\").f(void 0, void 0).ser(se_ListResourceScansCommand).de(de_ListResourceScansCommand).build() {\n};\n__name(_ListResourceScansCommand, \"ListResourceScansCommand\");\nvar ListResourceScansCommand = _ListResourceScansCommand;\n\n// src/commands/ListStackInstanceResourceDriftsCommand.ts\n\n\n\n\nvar _ListStackInstanceResourceDriftsCommand = class _ListStackInstanceResourceDriftsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackInstanceResourceDrifts\", {}).n(\"CloudFormationClient\", \"ListStackInstanceResourceDriftsCommand\").f(void 0, void 0).ser(se_ListStackInstanceResourceDriftsCommand).de(de_ListStackInstanceResourceDriftsCommand).build() {\n};\n__name(_ListStackInstanceResourceDriftsCommand, \"ListStackInstanceResourceDriftsCommand\");\nvar ListStackInstanceResourceDriftsCommand = _ListStackInstanceResourceDriftsCommand;\n\n// src/commands/ListStackInstancesCommand.ts\n\n\n\n\nvar _ListStackInstancesCommand = class _ListStackInstancesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackInstances\", {}).n(\"CloudFormationClient\", \"ListStackInstancesCommand\").f(void 0, void 0).ser(se_ListStackInstancesCommand).de(de_ListStackInstancesCommand).build() {\n};\n__name(_ListStackInstancesCommand, \"ListStackInstancesCommand\");\nvar ListStackInstancesCommand = _ListStackInstancesCommand;\n\n// src/commands/ListStackResourcesCommand.ts\n\n\n\n\nvar _ListStackResourcesCommand = class _ListStackResourcesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackResources\", {}).n(\"CloudFormationClient\", \"ListStackResourcesCommand\").f(void 0, void 0).ser(se_ListStackResourcesCommand).de(de_ListStackResourcesCommand).build() {\n};\n__name(_ListStackResourcesCommand, \"ListStackResourcesCommand\");\nvar ListStackResourcesCommand = _ListStackResourcesCommand;\n\n// src/commands/ListStacksCommand.ts\n\n\n\n\nvar _ListStacksCommand = class _ListStacksCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStacks\", {}).n(\"CloudFormationClient\", \"ListStacksCommand\").f(void 0, void 0).ser(se_ListStacksCommand).de(de_ListStacksCommand).build() {\n};\n__name(_ListStacksCommand, \"ListStacksCommand\");\nvar ListStacksCommand = _ListStacksCommand;\n\n// src/commands/ListStackSetAutoDeploymentTargetsCommand.ts\n\n\n\n\nvar _ListStackSetAutoDeploymentTargetsCommand = class _ListStackSetAutoDeploymentTargetsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackSetAutoDeploymentTargets\", {}).n(\"CloudFormationClient\", \"ListStackSetAutoDeploymentTargetsCommand\").f(void 0, void 0).ser(se_ListStackSetAutoDeploymentTargetsCommand).de(de_ListStackSetAutoDeploymentTargetsCommand).build() {\n};\n__name(_ListStackSetAutoDeploymentTargetsCommand, \"ListStackSetAutoDeploymentTargetsCommand\");\nvar ListStackSetAutoDeploymentTargetsCommand = _ListStackSetAutoDeploymentTargetsCommand;\n\n// src/commands/ListStackSetOperationResultsCommand.ts\n\n\n\n\nvar _ListStackSetOperationResultsCommand = class _ListStackSetOperationResultsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackSetOperationResults\", {}).n(\"CloudFormationClient\", \"ListStackSetOperationResultsCommand\").f(void 0, void 0).ser(se_ListStackSetOperationResultsCommand).de(de_ListStackSetOperationResultsCommand).build() {\n};\n__name(_ListStackSetOperationResultsCommand, \"ListStackSetOperationResultsCommand\");\nvar ListStackSetOperationResultsCommand = _ListStackSetOperationResultsCommand;\n\n// src/commands/ListStackSetOperationsCommand.ts\n\n\n\n\nvar _ListStackSetOperationsCommand = class _ListStackSetOperationsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackSetOperations\", {}).n(\"CloudFormationClient\", \"ListStackSetOperationsCommand\").f(void 0, void 0).ser(se_ListStackSetOperationsCommand).de(de_ListStackSetOperationsCommand).build() {\n};\n__name(_ListStackSetOperationsCommand, \"ListStackSetOperationsCommand\");\nvar ListStackSetOperationsCommand = _ListStackSetOperationsCommand;\n\n// src/commands/ListStackSetsCommand.ts\n\n\n\n\nvar _ListStackSetsCommand = class _ListStackSetsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListStackSets\", {}).n(\"CloudFormationClient\", \"ListStackSetsCommand\").f(void 0, void 0).ser(se_ListStackSetsCommand).de(de_ListStackSetsCommand).build() {\n};\n__name(_ListStackSetsCommand, \"ListStackSetsCommand\");\nvar ListStackSetsCommand = _ListStackSetsCommand;\n\n// src/commands/ListTypeRegistrationsCommand.ts\n\n\n\n\nvar _ListTypeRegistrationsCommand = class _ListTypeRegistrationsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListTypeRegistrations\", {}).n(\"CloudFormationClient\", \"ListTypeRegistrationsCommand\").f(void 0, void 0).ser(se_ListTypeRegistrationsCommand).de(de_ListTypeRegistrationsCommand).build() {\n};\n__name(_ListTypeRegistrationsCommand, \"ListTypeRegistrationsCommand\");\nvar ListTypeRegistrationsCommand = _ListTypeRegistrationsCommand;\n\n// src/commands/ListTypesCommand.ts\n\n\n\n\nvar _ListTypesCommand = class _ListTypesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListTypes\", {}).n(\"CloudFormationClient\", \"ListTypesCommand\").f(void 0, void 0).ser(se_ListTypesCommand).de(de_ListTypesCommand).build() {\n};\n__name(_ListTypesCommand, \"ListTypesCommand\");\nvar ListTypesCommand = _ListTypesCommand;\n\n// src/commands/ListTypeVersionsCommand.ts\n\n\n\n\nvar _ListTypeVersionsCommand = class _ListTypeVersionsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ListTypeVersions\", {}).n(\"CloudFormationClient\", \"ListTypeVersionsCommand\").f(void 0, void 0).ser(se_ListTypeVersionsCommand).de(de_ListTypeVersionsCommand).build() {\n};\n__name(_ListTypeVersionsCommand, \"ListTypeVersionsCommand\");\nvar ListTypeVersionsCommand = _ListTypeVersionsCommand;\n\n// src/commands/PublishTypeCommand.ts\n\n\n\n\nvar _PublishTypeCommand = class _PublishTypeCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"PublishType\", {}).n(\"CloudFormationClient\", \"PublishTypeCommand\").f(void 0, void 0).ser(se_PublishTypeCommand).de(de_PublishTypeCommand).build() {\n};\n__name(_PublishTypeCommand, \"PublishTypeCommand\");\nvar PublishTypeCommand = _PublishTypeCommand;\n\n// src/commands/RecordHandlerProgressCommand.ts\n\n\n\n\nvar _RecordHandlerProgressCommand = class _RecordHandlerProgressCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"RecordHandlerProgress\", {}).n(\"CloudFormationClient\", \"RecordHandlerProgressCommand\").f(void 0, void 0).ser(se_RecordHandlerProgressCommand).de(de_RecordHandlerProgressCommand).build() {\n};\n__name(_RecordHandlerProgressCommand, \"RecordHandlerProgressCommand\");\nvar RecordHandlerProgressCommand = _RecordHandlerProgressCommand;\n\n// src/commands/RegisterPublisherCommand.ts\n\n\n\n\nvar _RegisterPublisherCommand = class _RegisterPublisherCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"RegisterPublisher\", {}).n(\"CloudFormationClient\", \"RegisterPublisherCommand\").f(void 0, void 0).ser(se_RegisterPublisherCommand).de(de_RegisterPublisherCommand).build() {\n};\n__name(_RegisterPublisherCommand, \"RegisterPublisherCommand\");\nvar RegisterPublisherCommand = _RegisterPublisherCommand;\n\n// src/commands/RegisterTypeCommand.ts\n\n\n\n\nvar _RegisterTypeCommand = class _RegisterTypeCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"RegisterType\", {}).n(\"CloudFormationClient\", \"RegisterTypeCommand\").f(void 0, void 0).ser(se_RegisterTypeCommand).de(de_RegisterTypeCommand).build() {\n};\n__name(_RegisterTypeCommand, \"RegisterTypeCommand\");\nvar RegisterTypeCommand = _RegisterTypeCommand;\n\n// src/commands/RollbackStackCommand.ts\n\n\n\n\nvar _RollbackStackCommand = class _RollbackStackCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"RollbackStack\", {}).n(\"CloudFormationClient\", \"RollbackStackCommand\").f(void 0, void 0).ser(se_RollbackStackCommand).de(de_RollbackStackCommand).build() {\n};\n__name(_RollbackStackCommand, \"RollbackStackCommand\");\nvar RollbackStackCommand = _RollbackStackCommand;\n\n// src/commands/SetStackPolicyCommand.ts\n\n\n\n\nvar _SetStackPolicyCommand = class _SetStackPolicyCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"SetStackPolicy\", {}).n(\"CloudFormationClient\", \"SetStackPolicyCommand\").f(void 0, void 0).ser(se_SetStackPolicyCommand).de(de_SetStackPolicyCommand).build() {\n};\n__name(_SetStackPolicyCommand, \"SetStackPolicyCommand\");\nvar SetStackPolicyCommand = _SetStackPolicyCommand;\n\n// src/commands/SetTypeConfigurationCommand.ts\n\n\n\n\nvar _SetTypeConfigurationCommand = class _SetTypeConfigurationCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"SetTypeConfiguration\", {}).n(\"CloudFormationClient\", \"SetTypeConfigurationCommand\").f(void 0, void 0).ser(se_SetTypeConfigurationCommand).de(de_SetTypeConfigurationCommand).build() {\n};\n__name(_SetTypeConfigurationCommand, \"SetTypeConfigurationCommand\");\nvar SetTypeConfigurationCommand = _SetTypeConfigurationCommand;\n\n// src/commands/SetTypeDefaultVersionCommand.ts\n\n\n\n\nvar _SetTypeDefaultVersionCommand = class _SetTypeDefaultVersionCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"SetTypeDefaultVersion\", {}).n(\"CloudFormationClient\", \"SetTypeDefaultVersionCommand\").f(void 0, void 0).ser(se_SetTypeDefaultVersionCommand).de(de_SetTypeDefaultVersionCommand).build() {\n};\n__name(_SetTypeDefaultVersionCommand, \"SetTypeDefaultVersionCommand\");\nvar SetTypeDefaultVersionCommand = _SetTypeDefaultVersionCommand;\n\n// src/commands/SignalResourceCommand.ts\n\n\n\n\nvar _SignalResourceCommand = class _SignalResourceCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"SignalResource\", {}).n(\"CloudFormationClient\", \"SignalResourceCommand\").f(void 0, void 0).ser(se_SignalResourceCommand).de(de_SignalResourceCommand).build() {\n};\n__name(_SignalResourceCommand, \"SignalResourceCommand\");\nvar SignalResourceCommand = _SignalResourceCommand;\n\n// src/commands/StartResourceScanCommand.ts\n\n\n\n\nvar _StartResourceScanCommand = class _StartResourceScanCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"StartResourceScan\", {}).n(\"CloudFormationClient\", \"StartResourceScanCommand\").f(void 0, void 0).ser(se_StartResourceScanCommand).de(de_StartResourceScanCommand).build() {\n};\n__name(_StartResourceScanCommand, \"StartResourceScanCommand\");\nvar StartResourceScanCommand = _StartResourceScanCommand;\n\n// src/commands/StopStackSetOperationCommand.ts\n\n\n\n\nvar _StopStackSetOperationCommand = class _StopStackSetOperationCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"StopStackSetOperation\", {}).n(\"CloudFormationClient\", \"StopStackSetOperationCommand\").f(void 0, void 0).ser(se_StopStackSetOperationCommand).de(de_StopStackSetOperationCommand).build() {\n};\n__name(_StopStackSetOperationCommand, \"StopStackSetOperationCommand\");\nvar StopStackSetOperationCommand = _StopStackSetOperationCommand;\n\n// src/commands/TestTypeCommand.ts\n\n\n\n\nvar _TestTypeCommand = class _TestTypeCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"TestType\", {}).n(\"CloudFormationClient\", \"TestTypeCommand\").f(void 0, void 0).ser(se_TestTypeCommand).de(de_TestTypeCommand).build() {\n};\n__name(_TestTypeCommand, \"TestTypeCommand\");\nvar TestTypeCommand = _TestTypeCommand;\n\n// src/commands/UpdateGeneratedTemplateCommand.ts\n\n\n\n\nvar _UpdateGeneratedTemplateCommand = class _UpdateGeneratedTemplateCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"UpdateGeneratedTemplate\", {}).n(\"CloudFormationClient\", \"UpdateGeneratedTemplateCommand\").f(void 0, void 0).ser(se_UpdateGeneratedTemplateCommand).de(de_UpdateGeneratedTemplateCommand).build() {\n};\n__name(_UpdateGeneratedTemplateCommand, \"UpdateGeneratedTemplateCommand\");\nvar UpdateGeneratedTemplateCommand = _UpdateGeneratedTemplateCommand;\n\n// src/commands/UpdateStackCommand.ts\n\n\n\n\nvar _UpdateStackCommand = class _UpdateStackCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"UpdateStack\", {}).n(\"CloudFormationClient\", \"UpdateStackCommand\").f(void 0, void 0).ser(se_UpdateStackCommand).de(de_UpdateStackCommand).build() {\n};\n__name(_UpdateStackCommand, \"UpdateStackCommand\");\nvar UpdateStackCommand = _UpdateStackCommand;\n\n// src/commands/UpdateStackInstancesCommand.ts\n\n\n\n\nvar _UpdateStackInstancesCommand = class _UpdateStackInstancesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"UpdateStackInstances\", {}).n(\"CloudFormationClient\", \"UpdateStackInstancesCommand\").f(void 0, void 0).ser(se_UpdateStackInstancesCommand).de(de_UpdateStackInstancesCommand).build() {\n};\n__name(_UpdateStackInstancesCommand, \"UpdateStackInstancesCommand\");\nvar UpdateStackInstancesCommand = _UpdateStackInstancesCommand;\n\n// src/commands/UpdateStackSetCommand.ts\n\n\n\n\nvar _UpdateStackSetCommand = class _UpdateStackSetCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"UpdateStackSet\", {}).n(\"CloudFormationClient\", \"UpdateStackSetCommand\").f(void 0, void 0).ser(se_UpdateStackSetCommand).de(de_UpdateStackSetCommand).build() {\n};\n__name(_UpdateStackSetCommand, \"UpdateStackSetCommand\");\nvar UpdateStackSetCommand = _UpdateStackSetCommand;\n\n// src/commands/UpdateTerminationProtectionCommand.ts\n\n\n\n\nvar _UpdateTerminationProtectionCommand = class _UpdateTerminationProtectionCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"UpdateTerminationProtection\", {}).n(\"CloudFormationClient\", \"UpdateTerminationProtectionCommand\").f(void 0, void 0).ser(se_UpdateTerminationProtectionCommand).de(de_UpdateTerminationProtectionCommand).build() {\n};\n__name(_UpdateTerminationProtectionCommand, \"UpdateTerminationProtectionCommand\");\nvar UpdateTerminationProtectionCommand = _UpdateTerminationProtectionCommand;\n\n// src/commands/ValidateTemplateCommand.ts\n\n\n\n\nvar _ValidateTemplateCommand = class _ValidateTemplateCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"CloudFormation\", \"ValidateTemplate\", {}).n(\"CloudFormationClient\", \"ValidateTemplateCommand\").f(void 0, void 0).ser(se_ValidateTemplateCommand).de(de_ValidateTemplateCommand).build() {\n};\n__name(_ValidateTemplateCommand, \"ValidateTemplateCommand\");\nvar ValidateTemplateCommand = _ValidateTemplateCommand;\n\n// src/CloudFormation.ts\nvar commands = {\n ActivateOrganizationsAccessCommand,\n ActivateTypeCommand,\n BatchDescribeTypeConfigurationsCommand,\n CancelUpdateStackCommand,\n ContinueUpdateRollbackCommand,\n CreateChangeSetCommand,\n CreateGeneratedTemplateCommand,\n CreateStackCommand,\n CreateStackInstancesCommand,\n CreateStackSetCommand,\n DeactivateOrganizationsAccessCommand,\n DeactivateTypeCommand,\n DeleteChangeSetCommand,\n DeleteGeneratedTemplateCommand,\n DeleteStackCommand,\n DeleteStackInstancesCommand,\n DeleteStackSetCommand,\n DeregisterTypeCommand,\n DescribeAccountLimitsCommand,\n DescribeChangeSetCommand,\n DescribeChangeSetHooksCommand,\n DescribeGeneratedTemplateCommand,\n DescribeOrganizationsAccessCommand,\n DescribePublisherCommand,\n DescribeResourceScanCommand,\n DescribeStackDriftDetectionStatusCommand,\n DescribeStackEventsCommand,\n DescribeStackInstanceCommand,\n DescribeStackResourceCommand,\n DescribeStackResourceDriftsCommand,\n DescribeStackResourcesCommand,\n DescribeStacksCommand,\n DescribeStackSetCommand,\n DescribeStackSetOperationCommand,\n DescribeTypeCommand,\n DescribeTypeRegistrationCommand,\n DetectStackDriftCommand,\n DetectStackResourceDriftCommand,\n DetectStackSetDriftCommand,\n EstimateTemplateCostCommand,\n ExecuteChangeSetCommand,\n GetGeneratedTemplateCommand,\n GetStackPolicyCommand,\n GetTemplateCommand,\n GetTemplateSummaryCommand,\n ImportStacksToStackSetCommand,\n ListChangeSetsCommand,\n ListExportsCommand,\n ListGeneratedTemplatesCommand,\n ListImportsCommand,\n ListResourceScanRelatedResourcesCommand,\n ListResourceScanResourcesCommand,\n ListResourceScansCommand,\n ListStackInstanceResourceDriftsCommand,\n ListStackInstancesCommand,\n ListStackResourcesCommand,\n ListStacksCommand,\n ListStackSetAutoDeploymentTargetsCommand,\n ListStackSetOperationResultsCommand,\n ListStackSetOperationsCommand,\n ListStackSetsCommand,\n ListTypeRegistrationsCommand,\n ListTypesCommand,\n ListTypeVersionsCommand,\n PublishTypeCommand,\n RecordHandlerProgressCommand,\n RegisterPublisherCommand,\n RegisterTypeCommand,\n RollbackStackCommand,\n SetStackPolicyCommand,\n SetTypeConfigurationCommand,\n SetTypeDefaultVersionCommand,\n SignalResourceCommand,\n StartResourceScanCommand,\n StopStackSetOperationCommand,\n TestTypeCommand,\n UpdateGeneratedTemplateCommand,\n UpdateStackCommand,\n UpdateStackInstancesCommand,\n UpdateStackSetCommand,\n UpdateTerminationProtectionCommand,\n ValidateTemplateCommand\n};\nvar _CloudFormation = class _CloudFormation extends CloudFormationClient {\n};\n__name(_CloudFormation, \"CloudFormation\");\nvar CloudFormation = _CloudFormation;\n(0, import_smithy_client.createAggregatedClient)(commands, CloudFormation);\n\n// src/pagination/DescribeAccountLimitsPaginator.ts\n\nvar paginateDescribeAccountLimits = (0, import_core.createPaginator)(CloudFormationClient, DescribeAccountLimitsCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/DescribeStackEventsPaginator.ts\n\nvar paginateDescribeStackEvents = (0, import_core.createPaginator)(CloudFormationClient, DescribeStackEventsCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/DescribeStackResourceDriftsPaginator.ts\n\nvar paginateDescribeStackResourceDrifts = (0, import_core.createPaginator)(CloudFormationClient, DescribeStackResourceDriftsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/DescribeStacksPaginator.ts\n\nvar paginateDescribeStacks = (0, import_core.createPaginator)(CloudFormationClient, DescribeStacksCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/ListChangeSetsPaginator.ts\n\nvar paginateListChangeSets = (0, import_core.createPaginator)(CloudFormationClient, ListChangeSetsCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/ListExportsPaginator.ts\n\nvar paginateListExports = (0, import_core.createPaginator)(CloudFormationClient, ListExportsCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/ListGeneratedTemplatesPaginator.ts\n\nvar paginateListGeneratedTemplates = (0, import_core.createPaginator)(CloudFormationClient, ListGeneratedTemplatesCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListImportsPaginator.ts\n\nvar paginateListImports = (0, import_core.createPaginator)(CloudFormationClient, ListImportsCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/ListResourceScanRelatedResourcesPaginator.ts\n\nvar paginateListResourceScanRelatedResources = (0, import_core.createPaginator)(CloudFormationClient, ListResourceScanRelatedResourcesCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListResourceScanResourcesPaginator.ts\n\nvar paginateListResourceScanResources = (0, import_core.createPaginator)(CloudFormationClient, ListResourceScanResourcesCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListResourceScansPaginator.ts\n\nvar paginateListResourceScans = (0, import_core.createPaginator)(CloudFormationClient, ListResourceScansCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListStackInstancesPaginator.ts\n\nvar paginateListStackInstances = (0, import_core.createPaginator)(CloudFormationClient, ListStackInstancesCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListStackResourcesPaginator.ts\n\nvar paginateListStackResources = (0, import_core.createPaginator)(CloudFormationClient, ListStackResourcesCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/ListStackSetOperationResultsPaginator.ts\n\nvar paginateListStackSetOperationResults = (0, import_core.createPaginator)(CloudFormationClient, ListStackSetOperationResultsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListStackSetOperationsPaginator.ts\n\nvar paginateListStackSetOperations = (0, import_core.createPaginator)(CloudFormationClient, ListStackSetOperationsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListStackSetsPaginator.ts\n\nvar paginateListStackSets = (0, import_core.createPaginator)(CloudFormationClient, ListStackSetsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListStacksPaginator.ts\n\nvar paginateListStacks = (0, import_core.createPaginator)(CloudFormationClient, ListStacksCommand, \"NextToken\", \"NextToken\", \"\");\n\n// src/pagination/ListTypeRegistrationsPaginator.ts\n\nvar paginateListTypeRegistrations = (0, import_core.createPaginator)(CloudFormationClient, ListTypeRegistrationsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListTypeVersionsPaginator.ts\n\nvar paginateListTypeVersions = (0, import_core.createPaginator)(CloudFormationClient, ListTypeVersionsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/pagination/ListTypesPaginator.ts\n\nvar paginateListTypes = (0, import_core.createPaginator)(CloudFormationClient, ListTypesCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n\n// src/waiters/waitForChangeSetCreateComplete.ts\nvar import_util_waiter = require(\"@smithy/util-waiter\");\nvar checkState = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeChangeSetCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n return result.Status;\n }, \"returnComparator\");\n if (returnComparator() === \"CREATE_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n return result.Status;\n }, \"returnComparator\");\n if (returnComparator() === \"FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForChangeSetCreateComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState);\n}, \"waitForChangeSetCreateComplete\");\nvar waitUntilChangeSetCreateComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilChangeSetCreateComplete\");\n\n// src/waiters/waitForStackCreateComplete.ts\n\nvar checkState2 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeStacksCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"CREATE_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_IN_PROGRESS\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_COMPLETE_CLEANUP_IN_PROGRESS\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_FAILED\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_ROLLBACK_IN_PROGRESS\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_ROLLBACK_FAILED\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_ROLLBACK_COMPLETE_CLEANUP_IN_PROGRESS\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_ROLLBACK_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"CREATE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"DELETE_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"DELETE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"ROLLBACK_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForStackCreateComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState2);\n}, \"waitForStackCreateComplete\");\nvar waitUntilStackCreateComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState2);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilStackCreateComplete\");\n\n// src/waiters/waitForStackDeleteComplete.ts\n\nvar checkState3 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeStacksCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"DELETE_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"DELETE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"CREATE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_ROLLBACK_IN_PROGRESS\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_ROLLBACK_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForStackDeleteComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState3);\n}, \"waitForStackDeleteComplete\");\nvar waitUntilStackDeleteComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState3);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilStackDeleteComplete\");\n\n// src/waiters/waitForStackExists.ts\n\nvar checkState4 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeStacksCommand(input));\n reason = result;\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForStackExists = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 5, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState4);\n}, \"waitForStackExists\");\nvar waitUntilStackExists = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 5, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState4);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilStackExists\");\n\n// src/waiters/waitForStackImportComplete.ts\n\nvar checkState5 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeStacksCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"IMPORT_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"ROLLBACK_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"IMPORT_ROLLBACK_IN_PROGRESS\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"IMPORT_ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"IMPORT_ROLLBACK_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForStackImportComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState5);\n}, \"waitForStackImportComplete\");\nvar waitUntilStackImportComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState5);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilStackImportComplete\");\n\n// src/waiters/waitForStackRollbackComplete.ts\n\nvar checkState6 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeStacksCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_ROLLBACK_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"DELETE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForStackRollbackComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState6);\n}, \"waitForStackRollbackComplete\");\nvar waitUntilStackRollbackComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState6);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilStackRollbackComplete\");\n\n// src/waiters/waitForStackUpdateComplete.ts\n\nvar checkState7 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeStacksCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n let allStringEq_5 = returnComparator().length > 0;\n for (const element_4 of returnComparator()) {\n allStringEq_5 = allStringEq_5 && element_4 == \"UPDATE_COMPLETE\";\n }\n if (allStringEq_5) {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_ROLLBACK_FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n const flat_1 = [].concat(...result.Stacks);\n const projection_3 = flat_1.map((element_2) => {\n return element_2.StackStatus;\n });\n return projection_3;\n }, \"returnComparator\");\n for (const anyStringEq_4 of returnComparator()) {\n if (anyStringEq_4 == \"UPDATE_ROLLBACK_COMPLETE\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n if (exception.name && exception.name == \"ValidationError\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForStackUpdateComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState7);\n}, \"waitForStackUpdateComplete\");\nvar waitUntilStackUpdateComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState7);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilStackUpdateComplete\");\n\n// src/waiters/waitForTypeRegistrationComplete.ts\n\nvar checkState8 = /* @__PURE__ */ __name(async (client, input) => {\n let reason;\n try {\n const result = await client.send(new DescribeTypeRegistrationCommand(input));\n reason = result;\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n return result.ProgressStatus;\n }, \"returnComparator\");\n if (returnComparator() === \"COMPLETE\") {\n return { state: import_util_waiter.WaiterState.SUCCESS, reason };\n }\n } catch (e) {\n }\n try {\n const returnComparator = /* @__PURE__ */ __name(() => {\n return result.ProgressStatus;\n }, \"returnComparator\");\n if (returnComparator() === \"FAILED\") {\n return { state: import_util_waiter.WaiterState.FAILURE, reason };\n }\n } catch (e) {\n }\n } catch (exception) {\n reason = exception;\n }\n return { state: import_util_waiter.WaiterState.RETRY, reason };\n}, \"checkState\");\nvar waitForTypeRegistrationComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n return (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState8);\n}, \"waitForTypeRegistrationComplete\");\nvar waitUntilTypeRegistrationComplete = /* @__PURE__ */ __name(async (params, input) => {\n const serviceDefaults = { minDelay: 30, maxDelay: 120 };\n const result = await (0, import_util_waiter.createWaiter)({ ...serviceDefaults, ...params }, input, checkState8);\n return (0, import_util_waiter.checkExceptions)(result);\n}, \"waitUntilTypeRegistrationComplete\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n CloudFormationServiceException,\n __Client,\n CloudFormationClient,\n CloudFormation,\n $Command,\n ActivateOrganizationsAccessCommand,\n ActivateTypeCommand,\n BatchDescribeTypeConfigurationsCommand,\n CancelUpdateStackCommand,\n ContinueUpdateRollbackCommand,\n CreateChangeSetCommand,\n CreateGeneratedTemplateCommand,\n CreateStackCommand,\n CreateStackInstancesCommand,\n CreateStackSetCommand,\n DeactivateOrganizationsAccessCommand,\n DeactivateTypeCommand,\n DeleteChangeSetCommand,\n DeleteGeneratedTemplateCommand,\n DeleteStackCommand,\n DeleteStackInstancesCommand,\n DeleteStackSetCommand,\n DeregisterTypeCommand,\n DescribeAccountLimitsCommand,\n DescribeChangeSetCommand,\n DescribeChangeSetHooksCommand,\n DescribeGeneratedTemplateCommand,\n DescribeOrganizationsAccessCommand,\n DescribePublisherCommand,\n DescribeResourceScanCommand,\n DescribeStackDriftDetectionStatusCommand,\n DescribeStackEventsCommand,\n DescribeStackInstanceCommand,\n DescribeStackResourceCommand,\n DescribeStackResourceDriftsCommand,\n DescribeStackResourcesCommand,\n DescribeStackSetCommand,\n DescribeStackSetOperationCommand,\n DescribeStacksCommand,\n DescribeTypeCommand,\n DescribeTypeRegistrationCommand,\n DetectStackDriftCommand,\n DetectStackResourceDriftCommand,\n DetectStackSetDriftCommand,\n EstimateTemplateCostCommand,\n ExecuteChangeSetCommand,\n GetGeneratedTemplateCommand,\n GetStackPolicyCommand,\n GetTemplateCommand,\n GetTemplateSummaryCommand,\n ImportStacksToStackSetCommand,\n ListChangeSetsCommand,\n ListExportsCommand,\n ListGeneratedTemplatesCommand,\n ListImportsCommand,\n ListResourceScanRelatedResourcesCommand,\n ListResourceScanResourcesCommand,\n ListResourceScansCommand,\n ListStackInstanceResourceDriftsCommand,\n ListStackInstancesCommand,\n ListStackResourcesCommand,\n ListStackSetAutoDeploymentTargetsCommand,\n ListStackSetOperationResultsCommand,\n ListStackSetOperationsCommand,\n ListStackSetsCommand,\n ListStacksCommand,\n ListTypeRegistrationsCommand,\n ListTypeVersionsCommand,\n ListTypesCommand,\n PublishTypeCommand,\n RecordHandlerProgressCommand,\n RegisterPublisherCommand,\n RegisterTypeCommand,\n RollbackStackCommand,\n SetStackPolicyCommand,\n SetTypeConfigurationCommand,\n SetTypeDefaultVersionCommand,\n SignalResourceCommand,\n StartResourceScanCommand,\n StopStackSetOperationCommand,\n TestTypeCommand,\n UpdateGeneratedTemplateCommand,\n UpdateStackCommand,\n UpdateStackInstancesCommand,\n UpdateStackSetCommand,\n UpdateTerminationProtectionCommand,\n ValidateTemplateCommand,\n paginateDescribeAccountLimits,\n paginateDescribeStackEvents,\n paginateDescribeStackResourceDrifts,\n paginateDescribeStacks,\n paginateListChangeSets,\n paginateListExports,\n paginateListGeneratedTemplates,\n paginateListImports,\n paginateListResourceScanRelatedResources,\n paginateListResourceScanResources,\n paginateListResourceScans,\n paginateListStackInstances,\n paginateListStackResources,\n paginateListStackSetOperationResults,\n paginateListStackSetOperations,\n paginateListStackSets,\n paginateListStacks,\n paginateListTypeRegistrations,\n paginateListTypeVersions,\n paginateListTypes,\n waitForChangeSetCreateComplete,\n waitUntilChangeSetCreateComplete,\n waitForStackCreateComplete,\n waitUntilStackCreateComplete,\n waitForStackDeleteComplete,\n waitUntilStackDeleteComplete,\n waitForStackExists,\n waitUntilStackExists,\n waitForStackImportComplete,\n waitUntilStackImportComplete,\n waitForStackRollbackComplete,\n waitUntilStackRollbackComplete,\n waitForStackUpdateComplete,\n waitUntilStackUpdateComplete,\n waitForTypeRegistrationComplete,\n waitUntilTypeRegistrationComplete,\n AccountFilterType,\n AccountGateStatus,\n InvalidOperationException,\n OperationNotFoundException,\n ThirdPartyType,\n VersionBump,\n CFNRegistryException,\n TypeNotFoundException,\n AlreadyExistsException,\n AttributeChangeType,\n TypeConfigurationNotFoundException,\n CallAs,\n TokenAlreadyExistsException,\n Capability,\n Category,\n ChangeAction,\n ChangeSource,\n EvaluationType,\n ResourceAttribute,\n RequiresRecreation,\n PolicyAction,\n Replacement,\n ChangeType,\n HookFailureMode,\n HookInvocationPoint,\n HookTargetType,\n ChangeSetHooksStatus,\n ChangeSetNotFoundException,\n ChangeSetStatus,\n ExecutionStatus,\n ChangeSetType,\n OnStackFailure,\n InsufficientCapabilitiesException,\n LimitExceededException,\n ConcurrentResourcesLimitExceededException,\n GeneratedTemplateDeletionPolicy,\n GeneratedTemplateUpdateReplacePolicy,\n OnFailure,\n ConcurrencyMode,\n RegionConcurrencyType,\n OperationIdAlreadyExistsException,\n OperationInProgressException,\n StackSetNotFoundException,\n StaleRequestException,\n CreatedButModifiedException,\n PermissionModels,\n NameAlreadyExistsException,\n InvalidChangeSetStatusException,\n GeneratedTemplateNotFoundException,\n StackSetNotEmptyException,\n RegistryType,\n GeneratedTemplateResourceStatus,\n WarningType,\n GeneratedTemplateStatus,\n OrganizationStatus,\n IdentityProvider,\n PublisherStatus,\n ResourceScanStatus,\n ResourceScanNotFoundException,\n StackDriftDetectionStatus,\n StackDriftStatus,\n DetailedStatus,\n HookStatus,\n ResourceStatus,\n StackInstanceDetailedStatus,\n StackInstanceStatus,\n StackInstanceNotFoundException,\n StackResourceDriftStatus,\n DifferenceType,\n StackStatus,\n StackSetDriftDetectionStatus,\n StackSetDriftStatus,\n StackSetStatus,\n StackSetOperationAction,\n StackSetOperationStatus,\n DeprecatedStatus,\n ProvisioningType,\n TypeTestsStatus,\n Visibility,\n RegistrationStatus,\n TemplateFormat,\n TemplateStage,\n StackNotFoundException,\n ResourceScanInProgressException,\n StackInstanceFilterName,\n OperationResultFilterName,\n StackSetOperationResultStatus,\n InvalidStateTransitionException,\n OperationStatusCheckFailedException,\n OperationStatus,\n HandlerErrorCode,\n ResourceSignalStatus,\n ResourceScanLimitExceededException\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst tslib_1 = require(\"tslib\");\nconst package_json_1 = tslib_1.__importDefault(require(\"../package.json\"));\nconst core_1 = require(\"@aws-sdk/core\");\nconst credential_provider_node_1 = require(\"@aws-sdk/credential-provider-node\");\nconst util_user_agent_node_1 = require(\"@aws-sdk/util-user-agent-node\");\nconst config_resolver_1 = require(\"@smithy/config-resolver\");\nconst hash_node_1 = require(\"@smithy/hash-node\");\nconst middleware_retry_1 = require(\"@smithy/middleware-retry\");\nconst node_config_provider_1 = require(\"@smithy/node-config-provider\");\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst util_body_length_node_1 = require(\"@smithy/util-body-length-node\");\nconst util_retry_1 = require(\"@smithy/util-retry\");\nconst runtimeConfig_shared_1 = require(\"./runtimeConfig.shared\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst util_defaults_mode_node_1 = require(\"@smithy/util-defaults-mode-node\");\nconst smithy_client_2 = require(\"@smithy/smithy-client\");\nconst getRuntimeConfig = (config) => {\n (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version);\n const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config);\n const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode);\n const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config);\n (0, core_1.emitWarningIfUnsupportedVersion)(process.version);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength,\n credentialDefaultProvider: config?.credentialDefaultProvider ?? credential_provider_node_1.defaultProvider,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }),\n maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS),\n region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS),\n requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n (0, node_config_provider_1.loadConfig)({\n ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE,\n }),\n sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, \"sha256\"),\n streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS),\n useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS),\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst url_parser_1 = require(\"@smithy/url-parser\");\nconst util_base64_1 = require(\"@smithy/util-base64\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst httpAuthSchemeProvider_1 = require(\"./auth/httpAuthSchemeProvider\");\nconst endpointResolver_1 = require(\"./endpoint/endpointResolver\");\nconst getRuntimeConfig = (config) => {\n return {\n apiVersion: \"2010-05-15\",\n base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64,\n base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultCloudFormationHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new core_1.AwsSdkSigV4Signer(),\n },\n ],\n logger: config?.logger ?? new smithy_client_1.NoOpLogger(),\n serviceId: config?.serviceId ?? \"CloudFormation\",\n urlParser: config?.urlParser ?? url_parser_1.parseUrl,\n utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8,\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function () {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function () {\n return _parse.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function () {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function () {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function () {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function () {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function () {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function () {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function () {\n return _version.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction md5(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('md5').update(bytes).digest();\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n randomUUID: _crypto.default.randomUUID\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\n\nfunction rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n _crypto.default.randomFillSync(rnds8Pool);\n\n poolPtr = 0;\n }\n\n return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction sha1(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('sha1').update(bytes).digest();\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nexports.unsafeStringify = unsafeStringify;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nfunction unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.unsafeStringify)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.URL = exports.DNS = void 0;\nexports.default = v35;\n\nvar _stringify = require(\"./stringify.js\");\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _native = _interopRequireDefault(require(\"./native.js\"));\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n if (_native.default.randomUUID && !buf && !options) {\n return _native.default.randomUUID();\n }\n\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.slice(14, 15), 16);\n}\n\nvar _default = version;\nexports.default = _default;","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveHttpAuthSchemeConfig = exports.defaultCognitoIdentityHttpAuthSchemeProvider = exports.defaultCognitoIdentityHttpAuthSchemeParametersProvider = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_middleware_1 = require(\"@smithy/util-middleware\");\nconst defaultCognitoIdentityHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: (0, util_middleware_1.getSmithyContext)(context).operation,\n region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) ||\n (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nexports.defaultCognitoIdentityHttpAuthSchemeParametersProvider = defaultCognitoIdentityHttpAuthSchemeParametersProvider;\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"cognito-identity\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createSmithyApiNoAuthHttpAuthOption(authParameters) {\n return {\n schemeId: \"smithy.api#noAuth\",\n };\n}\nconst defaultCognitoIdentityHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n case \"GetCredentialsForIdentity\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"GetId\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"GetOpenIdToken\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"UnlinkIdentity\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nexports.defaultCognitoIdentityHttpAuthSchemeProvider = defaultCognitoIdentityHttpAuthSchemeProvider;\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = (0, core_1.resolveAwsSdkSigV4Config)(config);\n return {\n ...config_0,\n };\n};\nexports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultEndpointResolver = void 0;\nconst util_endpoints_1 = require(\"@aws-sdk/util-endpoints\");\nconst util_endpoints_2 = require(\"@smithy/util-endpoints\");\nconst ruleset_1 = require(\"./ruleset\");\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n });\n};\nexports.defaultEndpointResolver = defaultEndpointResolver;\nutil_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ruleSet = void 0;\nconst s = \"required\", t = \"fn\", u = \"argv\", v = \"ref\";\nconst a = true, b = \"isSet\", c = \"booleanEquals\", d = \"error\", e = \"endpoint\", f = \"tree\", g = \"PartitionResult\", h = { [s]: false, \"type\": \"String\" }, i = { [s]: true, \"default\": false, \"type\": \"Boolean\" }, j = { [v]: \"Endpoint\" }, k = { [t]: c, [u]: [{ [v]: \"UseFIPS\" }, true] }, l = { [t]: c, [u]: [{ [v]: \"UseDualStack\" }, true] }, m = {}, n = { [t]: \"getAttr\", [u]: [{ [v]: g }, \"supportsFIPS\"] }, o = { [t]: c, [u]: [true, { [t]: \"getAttr\", [u]: [{ [v]: g }, \"supportsDualStack\"] }] }, p = [k], q = [l], r = [{ [v]: \"Region\" }];\nconst _data = { version: \"1.0\", parameters: { Region: h, UseDualStack: i, UseFIPS: i, Endpoint: h }, rules: [{ conditions: [{ [t]: b, [u]: [j] }], rules: [{ conditions: p, error: \"Invalid Configuration: FIPS and custom endpoint are not supported\", type: d }, { conditions: q, error: \"Invalid Configuration: Dualstack and custom endpoint are not supported\", type: d }, { endpoint: { url: j, properties: m, headers: m }, type: e }], type: f }, { conditions: [{ [t]: b, [u]: r }], rules: [{ conditions: [{ [t]: \"aws.partition\", [u]: r, assign: g }], rules: [{ conditions: [k, l], rules: [{ conditions: [{ [t]: c, [u]: [a, n] }, o], rules: [{ endpoint: { url: \"https://cognito-identity-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: m, headers: m }, type: e }], type: f }, { error: \"FIPS and DualStack are enabled, but this partition does not support one or both\", type: d }], type: f }, { conditions: p, rules: [{ conditions: [{ [t]: c, [u]: [n, a] }], rules: [{ endpoint: { url: \"https://cognito-identity-fips.{Region}.{PartitionResult#dnsSuffix}\", properties: m, headers: m }, type: e }], type: f }, { error: \"FIPS is enabled but this partition does not support FIPS\", type: d }], type: f }, { conditions: q, rules: [{ conditions: [o], rules: [{ endpoint: { url: \"https://cognito-identity.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: m, headers: m }, type: e }], type: f }, { error: \"DualStack is enabled but this partition does not support DualStack\", type: d }], type: f }, { endpoint: { url: \"https://cognito-identity.{Region}.{PartitionResult#dnsSuffix}\", properties: m, headers: m }, type: e }], type: f }], type: f }, { error: \"Invalid Configuration: Missing Region\", type: d }] };\nexports.ruleSet = _data;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AmbiguousRoleResolutionType: () => AmbiguousRoleResolutionType,\n CognitoIdentity: () => CognitoIdentity,\n CognitoIdentityClient: () => CognitoIdentityClient,\n CognitoIdentityServiceException: () => CognitoIdentityServiceException,\n ConcurrentModificationException: () => ConcurrentModificationException,\n CreateIdentityPoolCommand: () => CreateIdentityPoolCommand,\n DeleteIdentitiesCommand: () => DeleteIdentitiesCommand,\n DeleteIdentityPoolCommand: () => DeleteIdentityPoolCommand,\n DescribeIdentityCommand: () => DescribeIdentityCommand,\n DescribeIdentityPoolCommand: () => DescribeIdentityPoolCommand,\n DeveloperUserAlreadyRegisteredException: () => DeveloperUserAlreadyRegisteredException,\n ErrorCode: () => ErrorCode,\n ExternalServiceException: () => ExternalServiceException,\n GetCredentialsForIdentityCommand: () => GetCredentialsForIdentityCommand,\n GetIdCommand: () => GetIdCommand,\n GetIdentityPoolRolesCommand: () => GetIdentityPoolRolesCommand,\n GetOpenIdTokenCommand: () => GetOpenIdTokenCommand,\n GetOpenIdTokenForDeveloperIdentityCommand: () => GetOpenIdTokenForDeveloperIdentityCommand,\n GetPrincipalTagAttributeMapCommand: () => GetPrincipalTagAttributeMapCommand,\n InternalErrorException: () => InternalErrorException,\n InvalidIdentityPoolConfigurationException: () => InvalidIdentityPoolConfigurationException,\n InvalidParameterException: () => InvalidParameterException,\n LimitExceededException: () => LimitExceededException,\n ListIdentitiesCommand: () => ListIdentitiesCommand,\n ListIdentityPoolsCommand: () => ListIdentityPoolsCommand,\n ListTagsForResourceCommand: () => ListTagsForResourceCommand,\n LookupDeveloperIdentityCommand: () => LookupDeveloperIdentityCommand,\n MappingRuleMatchType: () => MappingRuleMatchType,\n MergeDeveloperIdentitiesCommand: () => MergeDeveloperIdentitiesCommand,\n NotAuthorizedException: () => NotAuthorizedException,\n ResourceConflictException: () => ResourceConflictException,\n ResourceNotFoundException: () => ResourceNotFoundException,\n RoleMappingType: () => RoleMappingType,\n SetIdentityPoolRolesCommand: () => SetIdentityPoolRolesCommand,\n SetPrincipalTagAttributeMapCommand: () => SetPrincipalTagAttributeMapCommand,\n TagResourceCommand: () => TagResourceCommand,\n TooManyRequestsException: () => TooManyRequestsException,\n UnlinkDeveloperIdentityCommand: () => UnlinkDeveloperIdentityCommand,\n UnlinkIdentityCommand: () => UnlinkIdentityCommand,\n UntagResourceCommand: () => UntagResourceCommand,\n UpdateIdentityPoolCommand: () => UpdateIdentityPoolCommand,\n __Client: () => import_smithy_client.Client,\n paginateListIdentityPools: () => paginateListIdentityPools\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/CognitoIdentityClient.ts\nvar import_middleware_host_header = require(\"@aws-sdk/middleware-host-header\");\nvar import_middleware_logger = require(\"@aws-sdk/middleware-logger\");\nvar import_middleware_recursion_detection = require(\"@aws-sdk/middleware-recursion-detection\");\nvar import_middleware_user_agent = require(\"@aws-sdk/middleware-user-agent\");\nvar import_config_resolver = require(\"@smithy/config-resolver\");\nvar import_core = require(\"@smithy/core\");\nvar import_middleware_content_length = require(\"@smithy/middleware-content-length\");\nvar import_middleware_endpoint = require(\"@smithy/middleware-endpoint\");\nvar import_middleware_retry = require(\"@smithy/middleware-retry\");\n\nvar import_httpAuthSchemeProvider = require(\"./auth/httpAuthSchemeProvider\");\n\n// src/endpoint/EndpointParameters.ts\nvar resolveClientEndpointParameters = /* @__PURE__ */ __name((options) => {\n return {\n ...options,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"cognito-identity\"\n };\n}, \"resolveClientEndpointParameters\");\nvar commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" }\n};\n\n// src/CognitoIdentityClient.ts\nvar import_runtimeConfig = require(\"././runtimeConfig\");\n\n// src/runtimeExtensions.ts\nvar import_region_config_resolver = require(\"@aws-sdk/region-config-resolver\");\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar import_smithy_client = require(\"@smithy/smithy-client\");\n\n// src/auth/httpAuthExtensionConfiguration.ts\nvar getHttpAuthExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n } else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n }\n };\n}, \"getHttpAuthExtensionConfiguration\");\nvar resolveHttpAuthRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials()\n };\n}, \"resolveHttpAuthRuntimeConfig\");\n\n// src/runtimeExtensions.ts\nvar asPartial = /* @__PURE__ */ __name((t) => t, \"asPartial\");\nvar resolveRuntimeExtensions = /* @__PURE__ */ __name((runtimeConfig, extensions) => {\n const extensionConfiguration = {\n ...asPartial((0, import_region_config_resolver.getAwsRegionExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_smithy_client.getDefaultExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_protocol_http.getHttpHandlerExtensionConfiguration)(runtimeConfig)),\n ...asPartial(getHttpAuthExtensionConfiguration(runtimeConfig))\n };\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return {\n ...runtimeConfig,\n ...(0, import_region_config_resolver.resolveAwsRegionExtensionConfiguration)(extensionConfiguration),\n ...(0, import_smithy_client.resolveDefaultRuntimeConfig)(extensionConfiguration),\n ...(0, import_protocol_http.resolveHttpHandlerRuntimeConfig)(extensionConfiguration),\n ...resolveHttpAuthRuntimeConfig(extensionConfiguration)\n };\n}, \"resolveRuntimeExtensions\");\n\n// src/CognitoIdentityClient.ts\nvar _CognitoIdentityClient = class _CognitoIdentityClient extends import_smithy_client.Client {\n constructor(...[configuration]) {\n const _config_0 = (0, import_runtimeConfig.getRuntimeConfig)(configuration || {});\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = (0, import_config_resolver.resolveRegionConfig)(_config_1);\n const _config_3 = (0, import_middleware_endpoint.resolveEndpointConfig)(_config_2);\n const _config_4 = (0, import_middleware_retry.resolveRetryConfig)(_config_3);\n const _config_5 = (0, import_middleware_host_header.resolveHostHeaderConfig)(_config_4);\n const _config_6 = (0, import_middleware_user_agent.resolveUserAgentConfig)(_config_5);\n const _config_7 = (0, import_httpAuthSchemeProvider.resolveHttpAuthSchemeConfig)(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, (configuration == null ? void 0 : configuration.extensions) || []);\n super(_config_8);\n this.config = _config_8;\n this.middlewareStack.use((0, import_middleware_retry.getRetryPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_content_length.getContentLengthPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_host_header.getHostHeaderPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_logger.getLoggerPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_recursion_detection.getRecursionDetectionPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_user_agent.getUserAgentPlugin)(this.config));\n this.middlewareStack.use(\n (0, import_core.getHttpAuthSchemeEndpointRuleSetPlugin)(this.config, {\n httpAuthSchemeParametersProvider: this.getDefaultHttpAuthSchemeParametersProvider(),\n identityProviderConfigProvider: this.getIdentityProviderConfigProvider()\n })\n );\n this.middlewareStack.use((0, import_core.getHttpSigningPlugin)(this.config));\n }\n /**\n * Destroy underlying resources, like sockets. It's usually not necessary to do this.\n * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed.\n * Otherwise, sockets might stay open for quite a long time before the server terminates them.\n */\n destroy() {\n super.destroy();\n }\n getDefaultHttpAuthSchemeParametersProvider() {\n return import_httpAuthSchemeProvider.defaultCognitoIdentityHttpAuthSchemeParametersProvider;\n }\n getIdentityProviderConfigProvider() {\n return async (config) => new import_core.DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials\n });\n }\n};\n__name(_CognitoIdentityClient, \"CognitoIdentityClient\");\nvar CognitoIdentityClient = _CognitoIdentityClient;\n\n// src/CognitoIdentity.ts\n\n\n// src/commands/CreateIdentityPoolCommand.ts\n\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\n\nvar import_types = require(\"@smithy/types\");\n\n// src/protocols/Aws_json1_1.ts\nvar import_core2 = require(\"@aws-sdk/core\");\n\n\n\n// src/models/CognitoIdentityServiceException.ts\n\nvar _CognitoIdentityServiceException = class _CognitoIdentityServiceException extends import_smithy_client.ServiceException {\n /**\n * @internal\n */\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, _CognitoIdentityServiceException.prototype);\n }\n};\n__name(_CognitoIdentityServiceException, \"CognitoIdentityServiceException\");\nvar CognitoIdentityServiceException = _CognitoIdentityServiceException;\n\n// src/models/models_0.ts\nvar AmbiguousRoleResolutionType = {\n AUTHENTICATED_ROLE: \"AuthenticatedRole\",\n DENY: \"Deny\"\n};\nvar _InternalErrorException = class _InternalErrorException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InternalErrorException\",\n $fault: \"server\",\n ...opts\n });\n this.name = \"InternalErrorException\";\n this.$fault = \"server\";\n Object.setPrototypeOf(this, _InternalErrorException.prototype);\n }\n};\n__name(_InternalErrorException, \"InternalErrorException\");\nvar InternalErrorException = _InternalErrorException;\nvar _InvalidParameterException = class _InvalidParameterException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidParameterException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidParameterException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidParameterException.prototype);\n }\n};\n__name(_InvalidParameterException, \"InvalidParameterException\");\nvar InvalidParameterException = _InvalidParameterException;\nvar _LimitExceededException = class _LimitExceededException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"LimitExceededException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"LimitExceededException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _LimitExceededException.prototype);\n }\n};\n__name(_LimitExceededException, \"LimitExceededException\");\nvar LimitExceededException = _LimitExceededException;\nvar _NotAuthorizedException = class _NotAuthorizedException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"NotAuthorizedException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"NotAuthorizedException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _NotAuthorizedException.prototype);\n }\n};\n__name(_NotAuthorizedException, \"NotAuthorizedException\");\nvar NotAuthorizedException = _NotAuthorizedException;\nvar _ResourceConflictException = class _ResourceConflictException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ResourceConflictException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ResourceConflictException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ResourceConflictException.prototype);\n }\n};\n__name(_ResourceConflictException, \"ResourceConflictException\");\nvar ResourceConflictException = _ResourceConflictException;\nvar _TooManyRequestsException = class _TooManyRequestsException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"TooManyRequestsException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"TooManyRequestsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _TooManyRequestsException.prototype);\n }\n};\n__name(_TooManyRequestsException, \"TooManyRequestsException\");\nvar TooManyRequestsException = _TooManyRequestsException;\nvar ErrorCode = {\n ACCESS_DENIED: \"AccessDenied\",\n INTERNAL_SERVER_ERROR: \"InternalServerError\"\n};\nvar _ResourceNotFoundException = class _ResourceNotFoundException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ResourceNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ResourceNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ResourceNotFoundException.prototype);\n }\n};\n__name(_ResourceNotFoundException, \"ResourceNotFoundException\");\nvar ResourceNotFoundException = _ResourceNotFoundException;\nvar _ExternalServiceException = class _ExternalServiceException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ExternalServiceException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ExternalServiceException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ExternalServiceException.prototype);\n }\n};\n__name(_ExternalServiceException, \"ExternalServiceException\");\nvar ExternalServiceException = _ExternalServiceException;\nvar _InvalidIdentityPoolConfigurationException = class _InvalidIdentityPoolConfigurationException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidIdentityPoolConfigurationException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidIdentityPoolConfigurationException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidIdentityPoolConfigurationException.prototype);\n }\n};\n__name(_InvalidIdentityPoolConfigurationException, \"InvalidIdentityPoolConfigurationException\");\nvar InvalidIdentityPoolConfigurationException = _InvalidIdentityPoolConfigurationException;\nvar MappingRuleMatchType = {\n CONTAINS: \"Contains\",\n EQUALS: \"Equals\",\n NOT_EQUAL: \"NotEqual\",\n STARTS_WITH: \"StartsWith\"\n};\nvar RoleMappingType = {\n RULES: \"Rules\",\n TOKEN: \"Token\"\n};\nvar _DeveloperUserAlreadyRegisteredException = class _DeveloperUserAlreadyRegisteredException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"DeveloperUserAlreadyRegisteredException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"DeveloperUserAlreadyRegisteredException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _DeveloperUserAlreadyRegisteredException.prototype);\n }\n};\n__name(_DeveloperUserAlreadyRegisteredException, \"DeveloperUserAlreadyRegisteredException\");\nvar DeveloperUserAlreadyRegisteredException = _DeveloperUserAlreadyRegisteredException;\nvar _ConcurrentModificationException = class _ConcurrentModificationException extends CognitoIdentityServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ConcurrentModificationException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ConcurrentModificationException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ConcurrentModificationException.prototype);\n }\n};\n__name(_ConcurrentModificationException, \"ConcurrentModificationException\");\nvar ConcurrentModificationException = _ConcurrentModificationException;\n\n// src/protocols/Aws_json1_1.ts\nvar se_CreateIdentityPoolCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"CreateIdentityPool\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_CreateIdentityPoolCommand\");\nvar se_DeleteIdentitiesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"DeleteIdentities\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteIdentitiesCommand\");\nvar se_DeleteIdentityPoolCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"DeleteIdentityPool\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DeleteIdentityPoolCommand\");\nvar se_DescribeIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"DescribeIdentity\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeIdentityCommand\");\nvar se_DescribeIdentityPoolCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"DescribeIdentityPool\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DescribeIdentityPoolCommand\");\nvar se_GetCredentialsForIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"GetCredentialsForIdentity\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetCredentialsForIdentityCommand\");\nvar se_GetIdCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"GetId\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetIdCommand\");\nvar se_GetIdentityPoolRolesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"GetIdentityPoolRoles\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetIdentityPoolRolesCommand\");\nvar se_GetOpenIdTokenCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"GetOpenIdToken\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetOpenIdTokenCommand\");\nvar se_GetOpenIdTokenForDeveloperIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"GetOpenIdTokenForDeveloperIdentity\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetOpenIdTokenForDeveloperIdentityCommand\");\nvar se_GetPrincipalTagAttributeMapCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"GetPrincipalTagAttributeMap\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetPrincipalTagAttributeMapCommand\");\nvar se_ListIdentitiesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"ListIdentities\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListIdentitiesCommand\");\nvar se_ListIdentityPoolsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"ListIdentityPools\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListIdentityPoolsCommand\");\nvar se_ListTagsForResourceCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"ListTagsForResource\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_ListTagsForResourceCommand\");\nvar se_LookupDeveloperIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"LookupDeveloperIdentity\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_LookupDeveloperIdentityCommand\");\nvar se_MergeDeveloperIdentitiesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"MergeDeveloperIdentities\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_MergeDeveloperIdentitiesCommand\");\nvar se_SetIdentityPoolRolesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"SetIdentityPoolRoles\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_SetIdentityPoolRolesCommand\");\nvar se_SetPrincipalTagAttributeMapCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"SetPrincipalTagAttributeMap\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_SetPrincipalTagAttributeMapCommand\");\nvar se_TagResourceCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"TagResource\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_TagResourceCommand\");\nvar se_UnlinkDeveloperIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"UnlinkDeveloperIdentity\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UnlinkDeveloperIdentityCommand\");\nvar se_UnlinkIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"UnlinkIdentity\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UnlinkIdentityCommand\");\nvar se_UntagResourceCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"UntagResource\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UntagResourceCommand\");\nvar se_UpdateIdentityPoolCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = sharedHeaders(\"UpdateIdentityPool\");\n let body;\n body = JSON.stringify((0, import_smithy_client._json)(input));\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_UpdateIdentityPoolCommand\");\nvar de_CreateIdentityPoolCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_CreateIdentityPoolCommand\");\nvar de_DeleteIdentitiesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DeleteIdentitiesCommand\");\nvar de_DeleteIdentityPoolCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_DeleteIdentityPoolCommand\");\nvar de_DescribeIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = de_IdentityDescription(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeIdentityCommand\");\nvar de_DescribeIdentityPoolCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DescribeIdentityPoolCommand\");\nvar de_GetCredentialsForIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = de_GetCredentialsForIdentityResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetCredentialsForIdentityCommand\");\nvar de_GetIdCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetIdCommand\");\nvar de_GetIdentityPoolRolesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetIdentityPoolRolesCommand\");\nvar de_GetOpenIdTokenCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetOpenIdTokenCommand\");\nvar de_GetOpenIdTokenForDeveloperIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetOpenIdTokenForDeveloperIdentityCommand\");\nvar de_GetPrincipalTagAttributeMapCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetPrincipalTagAttributeMapCommand\");\nvar de_ListIdentitiesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = de_ListIdentitiesResponse(data, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListIdentitiesCommand\");\nvar de_ListIdentityPoolsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListIdentityPoolsCommand\");\nvar de_ListTagsForResourceCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_ListTagsForResourceCommand\");\nvar de_LookupDeveloperIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_LookupDeveloperIdentityCommand\");\nvar de_MergeDeveloperIdentitiesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_MergeDeveloperIdentitiesCommand\");\nvar de_SetIdentityPoolRolesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_SetIdentityPoolRolesCommand\");\nvar de_SetPrincipalTagAttributeMapCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_SetPrincipalTagAttributeMapCommand\");\nvar de_TagResourceCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_TagResourceCommand\");\nvar de_UnlinkDeveloperIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_UnlinkDeveloperIdentityCommand\");\nvar de_UnlinkIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n await (0, import_smithy_client.collectBody)(output.body, context);\n const response = {\n $metadata: deserializeMetadata(output)\n };\n return response;\n}, \"de_UnlinkIdentityCommand\");\nvar de_UntagResourceCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UntagResourceCommand\");\nvar de_UpdateIdentityPoolCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core2.parseJsonBody)(output.body, context);\n let contents = {};\n contents = (0, import_smithy_client._json)(data);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_UpdateIdentityPoolCommand\");\nvar de_CommandError = /* @__PURE__ */ __name(async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await (0, import_core2.parseJsonErrorBody)(output.body, context)\n };\n const errorCode = (0, import_core2.loadRestJsonErrorCode)(output, parsedOutput.body);\n switch (errorCode) {\n case \"InternalErrorException\":\n case \"com.amazonaws.cognitoidentity#InternalErrorException\":\n throw await de_InternalErrorExceptionRes(parsedOutput, context);\n case \"InvalidParameterException\":\n case \"com.amazonaws.cognitoidentity#InvalidParameterException\":\n throw await de_InvalidParameterExceptionRes(parsedOutput, context);\n case \"LimitExceededException\":\n case \"com.amazonaws.cognitoidentity#LimitExceededException\":\n throw await de_LimitExceededExceptionRes(parsedOutput, context);\n case \"NotAuthorizedException\":\n case \"com.amazonaws.cognitoidentity#NotAuthorizedException\":\n throw await de_NotAuthorizedExceptionRes(parsedOutput, context);\n case \"ResourceConflictException\":\n case \"com.amazonaws.cognitoidentity#ResourceConflictException\":\n throw await de_ResourceConflictExceptionRes(parsedOutput, context);\n case \"TooManyRequestsException\":\n case \"com.amazonaws.cognitoidentity#TooManyRequestsException\":\n throw await de_TooManyRequestsExceptionRes(parsedOutput, context);\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.cognitoidentity#ResourceNotFoundException\":\n throw await de_ResourceNotFoundExceptionRes(parsedOutput, context);\n case \"ExternalServiceException\":\n case \"com.amazonaws.cognitoidentity#ExternalServiceException\":\n throw await de_ExternalServiceExceptionRes(parsedOutput, context);\n case \"InvalidIdentityPoolConfigurationException\":\n case \"com.amazonaws.cognitoidentity#InvalidIdentityPoolConfigurationException\":\n throw await de_InvalidIdentityPoolConfigurationExceptionRes(parsedOutput, context);\n case \"DeveloperUserAlreadyRegisteredException\":\n case \"com.amazonaws.cognitoidentity#DeveloperUserAlreadyRegisteredException\":\n throw await de_DeveloperUserAlreadyRegisteredExceptionRes(parsedOutput, context);\n case \"ConcurrentModificationException\":\n case \"com.amazonaws.cognitoidentity#ConcurrentModificationException\":\n throw await de_ConcurrentModificationExceptionRes(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n return throwDefaultError({\n output,\n parsedBody,\n errorCode\n });\n }\n}, \"de_CommandError\");\nvar de_ConcurrentModificationExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new ConcurrentModificationException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ConcurrentModificationExceptionRes\");\nvar de_DeveloperUserAlreadyRegisteredExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new DeveloperUserAlreadyRegisteredException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_DeveloperUserAlreadyRegisteredExceptionRes\");\nvar de_ExternalServiceExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new ExternalServiceException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ExternalServiceExceptionRes\");\nvar de_InternalErrorExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new InternalErrorException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InternalErrorExceptionRes\");\nvar de_InvalidIdentityPoolConfigurationExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new InvalidIdentityPoolConfigurationException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidIdentityPoolConfigurationExceptionRes\");\nvar de_InvalidParameterExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new InvalidParameterException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidParameterExceptionRes\");\nvar de_LimitExceededExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new LimitExceededException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_LimitExceededExceptionRes\");\nvar de_NotAuthorizedExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new NotAuthorizedException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_NotAuthorizedExceptionRes\");\nvar de_ResourceConflictExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new ResourceConflictException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ResourceConflictExceptionRes\");\nvar de_ResourceNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new ResourceNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ResourceNotFoundExceptionRes\");\nvar de_TooManyRequestsExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = (0, import_smithy_client._json)(body);\n const exception = new TooManyRequestsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_TooManyRequestsExceptionRes\");\nvar de_Credentials = /* @__PURE__ */ __name((output, context) => {\n return (0, import_smithy_client.take)(output, {\n AccessKeyId: import_smithy_client.expectString,\n Expiration: (_) => (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseEpochTimestamp)((0, import_smithy_client.expectNumber)(_))),\n SecretKey: import_smithy_client.expectString,\n SessionToken: import_smithy_client.expectString\n });\n}, \"de_Credentials\");\nvar de_GetCredentialsForIdentityResponse = /* @__PURE__ */ __name((output, context) => {\n return (0, import_smithy_client.take)(output, {\n Credentials: (_) => de_Credentials(_, context),\n IdentityId: import_smithy_client.expectString\n });\n}, \"de_GetCredentialsForIdentityResponse\");\nvar de_IdentitiesList = /* @__PURE__ */ __name((output, context) => {\n const retVal = (output || []).filter((e) => e != null).map((entry) => {\n return de_IdentityDescription(entry, context);\n });\n return retVal;\n}, \"de_IdentitiesList\");\nvar de_IdentityDescription = /* @__PURE__ */ __name((output, context) => {\n return (0, import_smithy_client.take)(output, {\n CreationDate: (_) => (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseEpochTimestamp)((0, import_smithy_client.expectNumber)(_))),\n IdentityId: import_smithy_client.expectString,\n LastModifiedDate: (_) => (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseEpochTimestamp)((0, import_smithy_client.expectNumber)(_))),\n Logins: import_smithy_client._json\n });\n}, \"de_IdentityDescription\");\nvar de_ListIdentitiesResponse = /* @__PURE__ */ __name((output, context) => {\n return (0, import_smithy_client.take)(output, {\n Identities: (_) => de_IdentitiesList(_, context),\n IdentityPoolId: import_smithy_client.expectString,\n NextToken: import_smithy_client.expectString\n });\n}, \"de_ListIdentitiesResponse\");\nvar deserializeMetadata = /* @__PURE__ */ __name((output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"]\n}), \"deserializeMetadata\");\nvar throwDefaultError = (0, import_smithy_client.withBaseException)(CognitoIdentityServiceException);\nvar buildHttpRpcRequest = /* @__PURE__ */ __name(async (context, headers, path, resolvedHostname, body) => {\n const { hostname, protocol = \"https\", port, path: basePath } = await context.endpoint();\n const contents = {\n protocol,\n hostname,\n port,\n method: \"POST\",\n path: basePath.endsWith(\"/\") ? basePath.slice(0, -1) + path : basePath + path,\n headers\n };\n if (resolvedHostname !== void 0) {\n contents.hostname = resolvedHostname;\n }\n if (body !== void 0) {\n contents.body = body;\n }\n return new import_protocol_http.HttpRequest(contents);\n}, \"buildHttpRpcRequest\");\nfunction sharedHeaders(operation) {\n return {\n \"content-type\": \"application/x-amz-json-1.1\",\n \"x-amz-target\": `AWSCognitoIdentityService.${operation}`\n };\n}\n__name(sharedHeaders, \"sharedHeaders\");\n\n// src/commands/CreateIdentityPoolCommand.ts\nvar _CreateIdentityPoolCommand = class _CreateIdentityPoolCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"CreateIdentityPool\", {}).n(\"CognitoIdentityClient\", \"CreateIdentityPoolCommand\").f(void 0, void 0).ser(se_CreateIdentityPoolCommand).de(de_CreateIdentityPoolCommand).build() {\n};\n__name(_CreateIdentityPoolCommand, \"CreateIdentityPoolCommand\");\nvar CreateIdentityPoolCommand = _CreateIdentityPoolCommand;\n\n// src/commands/DeleteIdentitiesCommand.ts\n\n\n\n\nvar _DeleteIdentitiesCommand = class _DeleteIdentitiesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"DeleteIdentities\", {}).n(\"CognitoIdentityClient\", \"DeleteIdentitiesCommand\").f(void 0, void 0).ser(se_DeleteIdentitiesCommand).de(de_DeleteIdentitiesCommand).build() {\n};\n__name(_DeleteIdentitiesCommand, \"DeleteIdentitiesCommand\");\nvar DeleteIdentitiesCommand = _DeleteIdentitiesCommand;\n\n// src/commands/DeleteIdentityPoolCommand.ts\n\n\n\n\nvar _DeleteIdentityPoolCommand = class _DeleteIdentityPoolCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"DeleteIdentityPool\", {}).n(\"CognitoIdentityClient\", \"DeleteIdentityPoolCommand\").f(void 0, void 0).ser(se_DeleteIdentityPoolCommand).de(de_DeleteIdentityPoolCommand).build() {\n};\n__name(_DeleteIdentityPoolCommand, \"DeleteIdentityPoolCommand\");\nvar DeleteIdentityPoolCommand = _DeleteIdentityPoolCommand;\n\n// src/commands/DescribeIdentityCommand.ts\n\n\n\n\nvar _DescribeIdentityCommand = class _DescribeIdentityCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"DescribeIdentity\", {}).n(\"CognitoIdentityClient\", \"DescribeIdentityCommand\").f(void 0, void 0).ser(se_DescribeIdentityCommand).de(de_DescribeIdentityCommand).build() {\n};\n__name(_DescribeIdentityCommand, \"DescribeIdentityCommand\");\nvar DescribeIdentityCommand = _DescribeIdentityCommand;\n\n// src/commands/DescribeIdentityPoolCommand.ts\n\n\n\n\nvar _DescribeIdentityPoolCommand = class _DescribeIdentityPoolCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"DescribeIdentityPool\", {}).n(\"CognitoIdentityClient\", \"DescribeIdentityPoolCommand\").f(void 0, void 0).ser(se_DescribeIdentityPoolCommand).de(de_DescribeIdentityPoolCommand).build() {\n};\n__name(_DescribeIdentityPoolCommand, \"DescribeIdentityPoolCommand\");\nvar DescribeIdentityPoolCommand = _DescribeIdentityPoolCommand;\n\n// src/commands/GetCredentialsForIdentityCommand.ts\n\n\n\n\nvar _GetCredentialsForIdentityCommand = class _GetCredentialsForIdentityCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"GetCredentialsForIdentity\", {}).n(\"CognitoIdentityClient\", \"GetCredentialsForIdentityCommand\").f(void 0, void 0).ser(se_GetCredentialsForIdentityCommand).de(de_GetCredentialsForIdentityCommand).build() {\n};\n__name(_GetCredentialsForIdentityCommand, \"GetCredentialsForIdentityCommand\");\nvar GetCredentialsForIdentityCommand = _GetCredentialsForIdentityCommand;\n\n// src/commands/GetIdCommand.ts\n\n\n\n\nvar _GetIdCommand = class _GetIdCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"GetId\", {}).n(\"CognitoIdentityClient\", \"GetIdCommand\").f(void 0, void 0).ser(se_GetIdCommand).de(de_GetIdCommand).build() {\n};\n__name(_GetIdCommand, \"GetIdCommand\");\nvar GetIdCommand = _GetIdCommand;\n\n// src/commands/GetIdentityPoolRolesCommand.ts\n\n\n\n\nvar _GetIdentityPoolRolesCommand = class _GetIdentityPoolRolesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"GetIdentityPoolRoles\", {}).n(\"CognitoIdentityClient\", \"GetIdentityPoolRolesCommand\").f(void 0, void 0).ser(se_GetIdentityPoolRolesCommand).de(de_GetIdentityPoolRolesCommand).build() {\n};\n__name(_GetIdentityPoolRolesCommand, \"GetIdentityPoolRolesCommand\");\nvar GetIdentityPoolRolesCommand = _GetIdentityPoolRolesCommand;\n\n// src/commands/GetOpenIdTokenCommand.ts\n\n\n\n\nvar _GetOpenIdTokenCommand = class _GetOpenIdTokenCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"GetOpenIdToken\", {}).n(\"CognitoIdentityClient\", \"GetOpenIdTokenCommand\").f(void 0, void 0).ser(se_GetOpenIdTokenCommand).de(de_GetOpenIdTokenCommand).build() {\n};\n__name(_GetOpenIdTokenCommand, \"GetOpenIdTokenCommand\");\nvar GetOpenIdTokenCommand = _GetOpenIdTokenCommand;\n\n// src/commands/GetOpenIdTokenForDeveloperIdentityCommand.ts\n\n\n\n\nvar _GetOpenIdTokenForDeveloperIdentityCommand = class _GetOpenIdTokenForDeveloperIdentityCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"GetOpenIdTokenForDeveloperIdentity\", {}).n(\"CognitoIdentityClient\", \"GetOpenIdTokenForDeveloperIdentityCommand\").f(void 0, void 0).ser(se_GetOpenIdTokenForDeveloperIdentityCommand).de(de_GetOpenIdTokenForDeveloperIdentityCommand).build() {\n};\n__name(_GetOpenIdTokenForDeveloperIdentityCommand, \"GetOpenIdTokenForDeveloperIdentityCommand\");\nvar GetOpenIdTokenForDeveloperIdentityCommand = _GetOpenIdTokenForDeveloperIdentityCommand;\n\n// src/commands/GetPrincipalTagAttributeMapCommand.ts\n\n\n\n\nvar _GetPrincipalTagAttributeMapCommand = class _GetPrincipalTagAttributeMapCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"GetPrincipalTagAttributeMap\", {}).n(\"CognitoIdentityClient\", \"GetPrincipalTagAttributeMapCommand\").f(void 0, void 0).ser(se_GetPrincipalTagAttributeMapCommand).de(de_GetPrincipalTagAttributeMapCommand).build() {\n};\n__name(_GetPrincipalTagAttributeMapCommand, \"GetPrincipalTagAttributeMapCommand\");\nvar GetPrincipalTagAttributeMapCommand = _GetPrincipalTagAttributeMapCommand;\n\n// src/commands/ListIdentitiesCommand.ts\n\n\n\n\nvar _ListIdentitiesCommand = class _ListIdentitiesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"ListIdentities\", {}).n(\"CognitoIdentityClient\", \"ListIdentitiesCommand\").f(void 0, void 0).ser(se_ListIdentitiesCommand).de(de_ListIdentitiesCommand).build() {\n};\n__name(_ListIdentitiesCommand, \"ListIdentitiesCommand\");\nvar ListIdentitiesCommand = _ListIdentitiesCommand;\n\n// src/commands/ListIdentityPoolsCommand.ts\n\n\n\n\nvar _ListIdentityPoolsCommand = class _ListIdentityPoolsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"ListIdentityPools\", {}).n(\"CognitoIdentityClient\", \"ListIdentityPoolsCommand\").f(void 0, void 0).ser(se_ListIdentityPoolsCommand).de(de_ListIdentityPoolsCommand).build() {\n};\n__name(_ListIdentityPoolsCommand, \"ListIdentityPoolsCommand\");\nvar ListIdentityPoolsCommand = _ListIdentityPoolsCommand;\n\n// src/commands/ListTagsForResourceCommand.ts\n\n\n\n\nvar _ListTagsForResourceCommand = class _ListTagsForResourceCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"ListTagsForResource\", {}).n(\"CognitoIdentityClient\", \"ListTagsForResourceCommand\").f(void 0, void 0).ser(se_ListTagsForResourceCommand).de(de_ListTagsForResourceCommand).build() {\n};\n__name(_ListTagsForResourceCommand, \"ListTagsForResourceCommand\");\nvar ListTagsForResourceCommand = _ListTagsForResourceCommand;\n\n// src/commands/LookupDeveloperIdentityCommand.ts\n\n\n\n\nvar _LookupDeveloperIdentityCommand = class _LookupDeveloperIdentityCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"LookupDeveloperIdentity\", {}).n(\"CognitoIdentityClient\", \"LookupDeveloperIdentityCommand\").f(void 0, void 0).ser(se_LookupDeveloperIdentityCommand).de(de_LookupDeveloperIdentityCommand).build() {\n};\n__name(_LookupDeveloperIdentityCommand, \"LookupDeveloperIdentityCommand\");\nvar LookupDeveloperIdentityCommand = _LookupDeveloperIdentityCommand;\n\n// src/commands/MergeDeveloperIdentitiesCommand.ts\n\n\n\n\nvar _MergeDeveloperIdentitiesCommand = class _MergeDeveloperIdentitiesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"MergeDeveloperIdentities\", {}).n(\"CognitoIdentityClient\", \"MergeDeveloperIdentitiesCommand\").f(void 0, void 0).ser(se_MergeDeveloperIdentitiesCommand).de(de_MergeDeveloperIdentitiesCommand).build() {\n};\n__name(_MergeDeveloperIdentitiesCommand, \"MergeDeveloperIdentitiesCommand\");\nvar MergeDeveloperIdentitiesCommand = _MergeDeveloperIdentitiesCommand;\n\n// src/commands/SetIdentityPoolRolesCommand.ts\n\n\n\n\nvar _SetIdentityPoolRolesCommand = class _SetIdentityPoolRolesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"SetIdentityPoolRoles\", {}).n(\"CognitoIdentityClient\", \"SetIdentityPoolRolesCommand\").f(void 0, void 0).ser(se_SetIdentityPoolRolesCommand).de(de_SetIdentityPoolRolesCommand).build() {\n};\n__name(_SetIdentityPoolRolesCommand, \"SetIdentityPoolRolesCommand\");\nvar SetIdentityPoolRolesCommand = _SetIdentityPoolRolesCommand;\n\n// src/commands/SetPrincipalTagAttributeMapCommand.ts\n\n\n\n\nvar _SetPrincipalTagAttributeMapCommand = class _SetPrincipalTagAttributeMapCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"SetPrincipalTagAttributeMap\", {}).n(\"CognitoIdentityClient\", \"SetPrincipalTagAttributeMapCommand\").f(void 0, void 0).ser(se_SetPrincipalTagAttributeMapCommand).de(de_SetPrincipalTagAttributeMapCommand).build() {\n};\n__name(_SetPrincipalTagAttributeMapCommand, \"SetPrincipalTagAttributeMapCommand\");\nvar SetPrincipalTagAttributeMapCommand = _SetPrincipalTagAttributeMapCommand;\n\n// src/commands/TagResourceCommand.ts\n\n\n\n\nvar _TagResourceCommand = class _TagResourceCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"TagResource\", {}).n(\"CognitoIdentityClient\", \"TagResourceCommand\").f(void 0, void 0).ser(se_TagResourceCommand).de(de_TagResourceCommand).build() {\n};\n__name(_TagResourceCommand, \"TagResourceCommand\");\nvar TagResourceCommand = _TagResourceCommand;\n\n// src/commands/UnlinkDeveloperIdentityCommand.ts\n\n\n\n\nvar _UnlinkDeveloperIdentityCommand = class _UnlinkDeveloperIdentityCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"UnlinkDeveloperIdentity\", {}).n(\"CognitoIdentityClient\", \"UnlinkDeveloperIdentityCommand\").f(void 0, void 0).ser(se_UnlinkDeveloperIdentityCommand).de(de_UnlinkDeveloperIdentityCommand).build() {\n};\n__name(_UnlinkDeveloperIdentityCommand, \"UnlinkDeveloperIdentityCommand\");\nvar UnlinkDeveloperIdentityCommand = _UnlinkDeveloperIdentityCommand;\n\n// src/commands/UnlinkIdentityCommand.ts\n\n\n\n\nvar _UnlinkIdentityCommand = class _UnlinkIdentityCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"UnlinkIdentity\", {}).n(\"CognitoIdentityClient\", \"UnlinkIdentityCommand\").f(void 0, void 0).ser(se_UnlinkIdentityCommand).de(de_UnlinkIdentityCommand).build() {\n};\n__name(_UnlinkIdentityCommand, \"UnlinkIdentityCommand\");\nvar UnlinkIdentityCommand = _UnlinkIdentityCommand;\n\n// src/commands/UntagResourceCommand.ts\n\n\n\n\nvar _UntagResourceCommand = class _UntagResourceCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"UntagResource\", {}).n(\"CognitoIdentityClient\", \"UntagResourceCommand\").f(void 0, void 0).ser(se_UntagResourceCommand).de(de_UntagResourceCommand).build() {\n};\n__name(_UntagResourceCommand, \"UntagResourceCommand\");\nvar UntagResourceCommand = _UntagResourceCommand;\n\n// src/commands/UpdateIdentityPoolCommand.ts\n\n\n\n\nvar _UpdateIdentityPoolCommand = class _UpdateIdentityPoolCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSCognitoIdentityService\", \"UpdateIdentityPool\", {}).n(\"CognitoIdentityClient\", \"UpdateIdentityPoolCommand\").f(void 0, void 0).ser(se_UpdateIdentityPoolCommand).de(de_UpdateIdentityPoolCommand).build() {\n};\n__name(_UpdateIdentityPoolCommand, \"UpdateIdentityPoolCommand\");\nvar UpdateIdentityPoolCommand = _UpdateIdentityPoolCommand;\n\n// src/CognitoIdentity.ts\nvar commands = {\n CreateIdentityPoolCommand,\n DeleteIdentitiesCommand,\n DeleteIdentityPoolCommand,\n DescribeIdentityCommand,\n DescribeIdentityPoolCommand,\n GetCredentialsForIdentityCommand,\n GetIdCommand,\n GetIdentityPoolRolesCommand,\n GetOpenIdTokenCommand,\n GetOpenIdTokenForDeveloperIdentityCommand,\n GetPrincipalTagAttributeMapCommand,\n ListIdentitiesCommand,\n ListIdentityPoolsCommand,\n ListTagsForResourceCommand,\n LookupDeveloperIdentityCommand,\n MergeDeveloperIdentitiesCommand,\n SetIdentityPoolRolesCommand,\n SetPrincipalTagAttributeMapCommand,\n TagResourceCommand,\n UnlinkDeveloperIdentityCommand,\n UnlinkIdentityCommand,\n UntagResourceCommand,\n UpdateIdentityPoolCommand\n};\nvar _CognitoIdentity = class _CognitoIdentity extends CognitoIdentityClient {\n};\n__name(_CognitoIdentity, \"CognitoIdentity\");\nvar CognitoIdentity = _CognitoIdentity;\n(0, import_smithy_client.createAggregatedClient)(commands, CognitoIdentity);\n\n// src/pagination/ListIdentityPoolsPaginator.ts\n\nvar paginateListIdentityPools = (0, import_core.createPaginator)(CognitoIdentityClient, ListIdentityPoolsCommand, \"NextToken\", \"NextToken\", \"MaxResults\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n CognitoIdentityServiceException,\n __Client,\n CognitoIdentityClient,\n CognitoIdentity,\n $Command,\n CreateIdentityPoolCommand,\n DeleteIdentitiesCommand,\n DeleteIdentityPoolCommand,\n DescribeIdentityCommand,\n DescribeIdentityPoolCommand,\n GetCredentialsForIdentityCommand,\n GetIdCommand,\n GetIdentityPoolRolesCommand,\n GetOpenIdTokenCommand,\n GetOpenIdTokenForDeveloperIdentityCommand,\n GetPrincipalTagAttributeMapCommand,\n ListIdentitiesCommand,\n ListIdentityPoolsCommand,\n ListTagsForResourceCommand,\n LookupDeveloperIdentityCommand,\n MergeDeveloperIdentitiesCommand,\n SetIdentityPoolRolesCommand,\n SetPrincipalTagAttributeMapCommand,\n TagResourceCommand,\n UnlinkDeveloperIdentityCommand,\n UnlinkIdentityCommand,\n UntagResourceCommand,\n UpdateIdentityPoolCommand,\n paginateListIdentityPools,\n AmbiguousRoleResolutionType,\n InternalErrorException,\n InvalidParameterException,\n LimitExceededException,\n NotAuthorizedException,\n ResourceConflictException,\n TooManyRequestsException,\n ErrorCode,\n ResourceNotFoundException,\n ExternalServiceException,\n InvalidIdentityPoolConfigurationException,\n MappingRuleMatchType,\n RoleMappingType,\n DeveloperUserAlreadyRegisteredException,\n ConcurrentModificationException\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst tslib_1 = require(\"tslib\");\nconst package_json_1 = tslib_1.__importDefault(require(\"../package.json\"));\nconst core_1 = require(\"@aws-sdk/core\");\nconst credential_provider_node_1 = require(\"@aws-sdk/credential-provider-node\");\nconst util_user_agent_node_1 = require(\"@aws-sdk/util-user-agent-node\");\nconst config_resolver_1 = require(\"@smithy/config-resolver\");\nconst hash_node_1 = require(\"@smithy/hash-node\");\nconst middleware_retry_1 = require(\"@smithy/middleware-retry\");\nconst node_config_provider_1 = require(\"@smithy/node-config-provider\");\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst util_body_length_node_1 = require(\"@smithy/util-body-length-node\");\nconst util_retry_1 = require(\"@smithy/util-retry\");\nconst runtimeConfig_shared_1 = require(\"./runtimeConfig.shared\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst util_defaults_mode_node_1 = require(\"@smithy/util-defaults-mode-node\");\nconst smithy_client_2 = require(\"@smithy/smithy-client\");\nconst getRuntimeConfig = (config) => {\n (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version);\n const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config);\n const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode);\n const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config);\n (0, core_1.emitWarningIfUnsupportedVersion)(process.version);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength,\n credentialDefaultProvider: config?.credentialDefaultProvider ?? credential_provider_node_1.defaultProvider,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }),\n maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS),\n region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS),\n requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n (0, node_config_provider_1.loadConfig)({\n ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE,\n }),\n sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, \"sha256\"),\n streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS),\n useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS),\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst core_2 = require(\"@smithy/core\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst url_parser_1 = require(\"@smithy/url-parser\");\nconst util_base64_1 = require(\"@smithy/util-base64\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst httpAuthSchemeProvider_1 = require(\"./auth/httpAuthSchemeProvider\");\nconst endpointResolver_1 = require(\"./endpoint/endpointResolver\");\nconst getRuntimeConfig = (config) => {\n return {\n apiVersion: \"2014-06-30\",\n base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64,\n base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultCognitoIdentityHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new core_1.AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new core_2.NoAuthSigner(),\n },\n ],\n logger: config?.logger ?? new smithy_client_1.NoOpLogger(),\n serviceId: config?.serviceId ?? \"Cognito Identity\",\n urlParser: config?.urlParser ?? url_parser_1.parseUrl,\n utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8,\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveHttpAuthSchemeConfig = exports.defaultSSOOIDCHttpAuthSchemeProvider = exports.defaultSSOOIDCHttpAuthSchemeParametersProvider = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_middleware_1 = require(\"@smithy/util-middleware\");\nconst defaultSSOOIDCHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: (0, util_middleware_1.getSmithyContext)(context).operation,\n region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) ||\n (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nexports.defaultSSOOIDCHttpAuthSchemeParametersProvider = defaultSSOOIDCHttpAuthSchemeParametersProvider;\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"sso-oauth\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createSmithyApiNoAuthHttpAuthOption(authParameters) {\n return {\n schemeId: \"smithy.api#noAuth\",\n };\n}\nconst defaultSSOOIDCHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n case \"CreateToken\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"RegisterClient\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"StartDeviceAuthorization\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nexports.defaultSSOOIDCHttpAuthSchemeProvider = defaultSSOOIDCHttpAuthSchemeProvider;\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = (0, core_1.resolveAwsSdkSigV4Config)(config);\n return {\n ...config_0,\n };\n};\nexports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultEndpointResolver = void 0;\nconst util_endpoints_1 = require(\"@aws-sdk/util-endpoints\");\nconst util_endpoints_2 = require(\"@smithy/util-endpoints\");\nconst ruleset_1 = require(\"./ruleset\");\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n });\n};\nexports.defaultEndpointResolver = defaultEndpointResolver;\nutil_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ruleSet = void 0;\nconst u = \"required\", v = \"fn\", w = \"argv\", x = \"ref\";\nconst a = true, b = \"isSet\", c = \"booleanEquals\", d = \"error\", e = \"endpoint\", f = \"tree\", g = \"PartitionResult\", h = \"getAttr\", i = { [u]: false, \"type\": \"String\" }, j = { [u]: true, \"default\": false, \"type\": \"Boolean\" }, k = { [x]: \"Endpoint\" }, l = { [v]: c, [w]: [{ [x]: \"UseFIPS\" }, true] }, m = { [v]: c, [w]: [{ [x]: \"UseDualStack\" }, true] }, n = {}, o = { [v]: h, [w]: [{ [x]: g }, \"supportsFIPS\"] }, p = { [x]: g }, q = { [v]: c, [w]: [true, { [v]: h, [w]: [p, \"supportsDualStack\"] }] }, r = [l], s = [m], t = [{ [x]: \"Region\" }];\nconst _data = { version: \"1.0\", parameters: { Region: i, UseDualStack: j, UseFIPS: j, Endpoint: i }, rules: [{ conditions: [{ [v]: b, [w]: [k] }], rules: [{ conditions: r, error: \"Invalid Configuration: FIPS and custom endpoint are not supported\", type: d }, { conditions: s, error: \"Invalid Configuration: Dualstack and custom endpoint are not supported\", type: d }, { endpoint: { url: k, properties: n, headers: n }, type: e }], type: f }, { conditions: [{ [v]: b, [w]: t }], rules: [{ conditions: [{ [v]: \"aws.partition\", [w]: t, assign: g }], rules: [{ conditions: [l, m], rules: [{ conditions: [{ [v]: c, [w]: [a, o] }, q], rules: [{ endpoint: { url: \"https://oidc-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"FIPS and DualStack are enabled, but this partition does not support one or both\", type: d }], type: f }, { conditions: r, rules: [{ conditions: [{ [v]: c, [w]: [o, a] }], rules: [{ conditions: [{ [v]: \"stringEquals\", [w]: [{ [v]: h, [w]: [p, \"name\"] }, \"aws-us-gov\"] }], endpoint: { url: \"https://oidc.{Region}.amazonaws.com\", properties: n, headers: n }, type: e }, { endpoint: { url: \"https://oidc-fips.{Region}.{PartitionResult#dnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"FIPS is enabled but this partition does not support FIPS\", type: d }], type: f }, { conditions: s, rules: [{ conditions: [q], rules: [{ endpoint: { url: \"https://oidc.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"DualStack is enabled but this partition does not support DualStack\", type: d }], type: f }, { endpoint: { url: \"https://oidc.{Region}.{PartitionResult#dnsSuffix}\", properties: n, headers: n }, type: e }], type: f }], type: f }, { error: \"Invalid Configuration: Missing Region\", type: d }] };\nexports.ruleSet = _data;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AccessDeniedException: () => AccessDeniedException,\n AuthorizationPendingException: () => AuthorizationPendingException,\n CreateTokenCommand: () => CreateTokenCommand,\n CreateTokenRequestFilterSensitiveLog: () => CreateTokenRequestFilterSensitiveLog,\n CreateTokenResponseFilterSensitiveLog: () => CreateTokenResponseFilterSensitiveLog,\n CreateTokenWithIAMCommand: () => CreateTokenWithIAMCommand,\n CreateTokenWithIAMRequestFilterSensitiveLog: () => CreateTokenWithIAMRequestFilterSensitiveLog,\n CreateTokenWithIAMResponseFilterSensitiveLog: () => CreateTokenWithIAMResponseFilterSensitiveLog,\n ExpiredTokenException: () => ExpiredTokenException,\n InternalServerException: () => InternalServerException,\n InvalidClientException: () => InvalidClientException,\n InvalidClientMetadataException: () => InvalidClientMetadataException,\n InvalidGrantException: () => InvalidGrantException,\n InvalidRequestException: () => InvalidRequestException,\n InvalidRequestRegionException: () => InvalidRequestRegionException,\n InvalidScopeException: () => InvalidScopeException,\n RegisterClientCommand: () => RegisterClientCommand,\n RegisterClientResponseFilterSensitiveLog: () => RegisterClientResponseFilterSensitiveLog,\n SSOOIDC: () => SSOOIDC,\n SSOOIDCClient: () => SSOOIDCClient,\n SSOOIDCServiceException: () => SSOOIDCServiceException,\n SlowDownException: () => SlowDownException,\n StartDeviceAuthorizationCommand: () => StartDeviceAuthorizationCommand,\n StartDeviceAuthorizationRequestFilterSensitiveLog: () => StartDeviceAuthorizationRequestFilterSensitiveLog,\n UnauthorizedClientException: () => UnauthorizedClientException,\n UnsupportedGrantTypeException: () => UnsupportedGrantTypeException,\n __Client: () => import_smithy_client.Client\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/SSOOIDCClient.ts\nvar import_middleware_host_header = require(\"@aws-sdk/middleware-host-header\");\nvar import_middleware_logger = require(\"@aws-sdk/middleware-logger\");\nvar import_middleware_recursion_detection = require(\"@aws-sdk/middleware-recursion-detection\");\nvar import_middleware_user_agent = require(\"@aws-sdk/middleware-user-agent\");\nvar import_config_resolver = require(\"@smithy/config-resolver\");\nvar import_core = require(\"@smithy/core\");\nvar import_middleware_content_length = require(\"@smithy/middleware-content-length\");\nvar import_middleware_endpoint = require(\"@smithy/middleware-endpoint\");\nvar import_middleware_retry = require(\"@smithy/middleware-retry\");\n\nvar import_httpAuthSchemeProvider = require(\"./auth/httpAuthSchemeProvider\");\n\n// src/endpoint/EndpointParameters.ts\nvar resolveClientEndpointParameters = /* @__PURE__ */ __name((options) => {\n return {\n ...options,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"sso-oauth\"\n };\n}, \"resolveClientEndpointParameters\");\nvar commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" }\n};\n\n// src/SSOOIDCClient.ts\nvar import_runtimeConfig = require(\"././runtimeConfig\");\n\n// src/runtimeExtensions.ts\nvar import_region_config_resolver = require(\"@aws-sdk/region-config-resolver\");\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar import_smithy_client = require(\"@smithy/smithy-client\");\n\n// src/auth/httpAuthExtensionConfiguration.ts\nvar getHttpAuthExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n } else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n }\n };\n}, \"getHttpAuthExtensionConfiguration\");\nvar resolveHttpAuthRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials()\n };\n}, \"resolveHttpAuthRuntimeConfig\");\n\n// src/runtimeExtensions.ts\nvar asPartial = /* @__PURE__ */ __name((t) => t, \"asPartial\");\nvar resolveRuntimeExtensions = /* @__PURE__ */ __name((runtimeConfig, extensions) => {\n const extensionConfiguration = {\n ...asPartial((0, import_region_config_resolver.getAwsRegionExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_smithy_client.getDefaultExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_protocol_http.getHttpHandlerExtensionConfiguration)(runtimeConfig)),\n ...asPartial(getHttpAuthExtensionConfiguration(runtimeConfig))\n };\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return {\n ...runtimeConfig,\n ...(0, import_region_config_resolver.resolveAwsRegionExtensionConfiguration)(extensionConfiguration),\n ...(0, import_smithy_client.resolveDefaultRuntimeConfig)(extensionConfiguration),\n ...(0, import_protocol_http.resolveHttpHandlerRuntimeConfig)(extensionConfiguration),\n ...resolveHttpAuthRuntimeConfig(extensionConfiguration)\n };\n}, \"resolveRuntimeExtensions\");\n\n// src/SSOOIDCClient.ts\nvar _SSOOIDCClient = class _SSOOIDCClient extends import_smithy_client.Client {\n constructor(...[configuration]) {\n const _config_0 = (0, import_runtimeConfig.getRuntimeConfig)(configuration || {});\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = (0, import_config_resolver.resolveRegionConfig)(_config_1);\n const _config_3 = (0, import_middleware_endpoint.resolveEndpointConfig)(_config_2);\n const _config_4 = (0, import_middleware_retry.resolveRetryConfig)(_config_3);\n const _config_5 = (0, import_middleware_host_header.resolveHostHeaderConfig)(_config_4);\n const _config_6 = (0, import_middleware_user_agent.resolveUserAgentConfig)(_config_5);\n const _config_7 = (0, import_httpAuthSchemeProvider.resolveHttpAuthSchemeConfig)(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, (configuration == null ? void 0 : configuration.extensions) || []);\n super(_config_8);\n this.config = _config_8;\n this.middlewareStack.use((0, import_middleware_retry.getRetryPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_content_length.getContentLengthPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_host_header.getHostHeaderPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_logger.getLoggerPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_recursion_detection.getRecursionDetectionPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_user_agent.getUserAgentPlugin)(this.config));\n this.middlewareStack.use(\n (0, import_core.getHttpAuthSchemeEndpointRuleSetPlugin)(this.config, {\n httpAuthSchemeParametersProvider: this.getDefaultHttpAuthSchemeParametersProvider(),\n identityProviderConfigProvider: this.getIdentityProviderConfigProvider()\n })\n );\n this.middlewareStack.use((0, import_core.getHttpSigningPlugin)(this.config));\n }\n /**\n * Destroy underlying resources, like sockets. It's usually not necessary to do this.\n * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed.\n * Otherwise, sockets might stay open for quite a long time before the server terminates them.\n */\n destroy() {\n super.destroy();\n }\n getDefaultHttpAuthSchemeParametersProvider() {\n return import_httpAuthSchemeProvider.defaultSSOOIDCHttpAuthSchemeParametersProvider;\n }\n getIdentityProviderConfigProvider() {\n return async (config) => new import_core.DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials\n });\n }\n};\n__name(_SSOOIDCClient, \"SSOOIDCClient\");\nvar SSOOIDCClient = _SSOOIDCClient;\n\n// src/SSOOIDC.ts\n\n\n// src/commands/CreateTokenCommand.ts\n\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\n\nvar import_types = require(\"@smithy/types\");\n\n// src/models/models_0.ts\n\n\n// src/models/SSOOIDCServiceException.ts\n\nvar _SSOOIDCServiceException = class _SSOOIDCServiceException extends import_smithy_client.ServiceException {\n /**\n * @internal\n */\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, _SSOOIDCServiceException.prototype);\n }\n};\n__name(_SSOOIDCServiceException, \"SSOOIDCServiceException\");\nvar SSOOIDCServiceException = _SSOOIDCServiceException;\n\n// src/models/models_0.ts\nvar _AccessDeniedException = class _AccessDeniedException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"AccessDeniedException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"AccessDeniedException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _AccessDeniedException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_AccessDeniedException, \"AccessDeniedException\");\nvar AccessDeniedException = _AccessDeniedException;\nvar _AuthorizationPendingException = class _AuthorizationPendingException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"AuthorizationPendingException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"AuthorizationPendingException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _AuthorizationPendingException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_AuthorizationPendingException, \"AuthorizationPendingException\");\nvar AuthorizationPendingException = _AuthorizationPendingException;\nvar _ExpiredTokenException = class _ExpiredTokenException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ExpiredTokenException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ExpiredTokenException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ExpiredTokenException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_ExpiredTokenException, \"ExpiredTokenException\");\nvar ExpiredTokenException = _ExpiredTokenException;\nvar _InternalServerException = class _InternalServerException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InternalServerException\",\n $fault: \"server\",\n ...opts\n });\n this.name = \"InternalServerException\";\n this.$fault = \"server\";\n Object.setPrototypeOf(this, _InternalServerException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InternalServerException, \"InternalServerException\");\nvar InternalServerException = _InternalServerException;\nvar _InvalidClientException = class _InvalidClientException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidClientException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidClientException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidClientException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InvalidClientException, \"InvalidClientException\");\nvar InvalidClientException = _InvalidClientException;\nvar _InvalidGrantException = class _InvalidGrantException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidGrantException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidGrantException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidGrantException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InvalidGrantException, \"InvalidGrantException\");\nvar InvalidGrantException = _InvalidGrantException;\nvar _InvalidRequestException = class _InvalidRequestException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidRequestException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidRequestException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidRequestException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InvalidRequestException, \"InvalidRequestException\");\nvar InvalidRequestException = _InvalidRequestException;\nvar _InvalidScopeException = class _InvalidScopeException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidScopeException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidScopeException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidScopeException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InvalidScopeException, \"InvalidScopeException\");\nvar InvalidScopeException = _InvalidScopeException;\nvar _SlowDownException = class _SlowDownException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"SlowDownException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"SlowDownException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _SlowDownException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_SlowDownException, \"SlowDownException\");\nvar SlowDownException = _SlowDownException;\nvar _UnauthorizedClientException = class _UnauthorizedClientException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"UnauthorizedClientException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"UnauthorizedClientException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _UnauthorizedClientException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_UnauthorizedClientException, \"UnauthorizedClientException\");\nvar UnauthorizedClientException = _UnauthorizedClientException;\nvar _UnsupportedGrantTypeException = class _UnsupportedGrantTypeException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"UnsupportedGrantTypeException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"UnsupportedGrantTypeException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _UnsupportedGrantTypeException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_UnsupportedGrantTypeException, \"UnsupportedGrantTypeException\");\nvar UnsupportedGrantTypeException = _UnsupportedGrantTypeException;\nvar _InvalidRequestRegionException = class _InvalidRequestRegionException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidRequestRegionException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidRequestRegionException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidRequestRegionException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n this.endpoint = opts.endpoint;\n this.region = opts.region;\n }\n};\n__name(_InvalidRequestRegionException, \"InvalidRequestRegionException\");\nvar InvalidRequestRegionException = _InvalidRequestRegionException;\nvar _InvalidClientMetadataException = class _InvalidClientMetadataException extends SSOOIDCServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidClientMetadataException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidClientMetadataException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidClientMetadataException.prototype);\n this.error = opts.error;\n this.error_description = opts.error_description;\n }\n};\n__name(_InvalidClientMetadataException, \"InvalidClientMetadataException\");\nvar InvalidClientMetadataException = _InvalidClientMetadataException;\nvar CreateTokenRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.clientSecret && { clientSecret: import_smithy_client.SENSITIVE_STRING },\n ...obj.refreshToken && { refreshToken: import_smithy_client.SENSITIVE_STRING }\n}), \"CreateTokenRequestFilterSensitiveLog\");\nvar CreateTokenResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.accessToken && { accessToken: import_smithy_client.SENSITIVE_STRING },\n ...obj.refreshToken && { refreshToken: import_smithy_client.SENSITIVE_STRING },\n ...obj.idToken && { idToken: import_smithy_client.SENSITIVE_STRING }\n}), \"CreateTokenResponseFilterSensitiveLog\");\nvar CreateTokenWithIAMRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.refreshToken && { refreshToken: import_smithy_client.SENSITIVE_STRING },\n ...obj.assertion && { assertion: import_smithy_client.SENSITIVE_STRING },\n ...obj.subjectToken && { subjectToken: import_smithy_client.SENSITIVE_STRING }\n}), \"CreateTokenWithIAMRequestFilterSensitiveLog\");\nvar CreateTokenWithIAMResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.accessToken && { accessToken: import_smithy_client.SENSITIVE_STRING },\n ...obj.refreshToken && { refreshToken: import_smithy_client.SENSITIVE_STRING },\n ...obj.idToken && { idToken: import_smithy_client.SENSITIVE_STRING }\n}), \"CreateTokenWithIAMResponseFilterSensitiveLog\");\nvar RegisterClientResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.clientSecret && { clientSecret: import_smithy_client.SENSITIVE_STRING }\n}), \"RegisterClientResponseFilterSensitiveLog\");\nvar StartDeviceAuthorizationRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.clientSecret && { clientSecret: import_smithy_client.SENSITIVE_STRING }\n}), \"StartDeviceAuthorizationRequestFilterSensitiveLog\");\n\n// src/protocols/Aws_restJson1.ts\nvar import_core2 = require(\"@aws-sdk/core\");\n\n\nvar se_CreateTokenCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = {\n \"content-type\": \"application/json\"\n };\n b.bp(\"/token\");\n let body;\n body = JSON.stringify(\n (0, import_smithy_client.take)(input, {\n clientId: [],\n clientSecret: [],\n code: [],\n deviceCode: [],\n grantType: [],\n redirectUri: [],\n refreshToken: [],\n scope: (_) => (0, import_smithy_client._json)(_)\n })\n );\n b.m(\"POST\").h(headers).b(body);\n return b.build();\n}, \"se_CreateTokenCommand\");\nvar se_CreateTokenWithIAMCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = {\n \"content-type\": \"application/json\"\n };\n b.bp(\"/token\");\n const query = (0, import_smithy_client.map)({\n [_ai]: [, \"t\"]\n });\n let body;\n body = JSON.stringify(\n (0, import_smithy_client.take)(input, {\n assertion: [],\n clientId: [],\n code: [],\n grantType: [],\n redirectUri: [],\n refreshToken: [],\n requestedTokenType: [],\n scope: (_) => (0, import_smithy_client._json)(_),\n subjectToken: [],\n subjectTokenType: []\n })\n );\n b.m(\"POST\").h(headers).q(query).b(body);\n return b.build();\n}, \"se_CreateTokenWithIAMCommand\");\nvar se_RegisterClientCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = {\n \"content-type\": \"application/json\"\n };\n b.bp(\"/client/register\");\n let body;\n body = JSON.stringify(\n (0, import_smithy_client.take)(input, {\n clientName: [],\n clientType: [],\n scopes: (_) => (0, import_smithy_client._json)(_)\n })\n );\n b.m(\"POST\").h(headers).b(body);\n return b.build();\n}, \"se_RegisterClientCommand\");\nvar se_StartDeviceAuthorizationCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = {\n \"content-type\": \"application/json\"\n };\n b.bp(\"/device_authorization\");\n let body;\n body = JSON.stringify(\n (0, import_smithy_client.take)(input, {\n clientId: [],\n clientSecret: [],\n startUrl: []\n })\n );\n b.m(\"POST\").h(headers).b(body);\n return b.build();\n}, \"se_StartDeviceAuthorizationCommand\");\nvar de_CreateTokenCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n accessToken: import_smithy_client.expectString,\n expiresIn: import_smithy_client.expectInt32,\n idToken: import_smithy_client.expectString,\n refreshToken: import_smithy_client.expectString,\n tokenType: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_CreateTokenCommand\");\nvar de_CreateTokenWithIAMCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n accessToken: import_smithy_client.expectString,\n expiresIn: import_smithy_client.expectInt32,\n idToken: import_smithy_client.expectString,\n issuedTokenType: import_smithy_client.expectString,\n refreshToken: import_smithy_client.expectString,\n scope: import_smithy_client._json,\n tokenType: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_CreateTokenWithIAMCommand\");\nvar de_RegisterClientCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n authorizationEndpoint: import_smithy_client.expectString,\n clientId: import_smithy_client.expectString,\n clientIdIssuedAt: import_smithy_client.expectLong,\n clientSecret: import_smithy_client.expectString,\n clientSecretExpiresAt: import_smithy_client.expectLong,\n tokenEndpoint: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_RegisterClientCommand\");\nvar de_StartDeviceAuthorizationCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n deviceCode: import_smithy_client.expectString,\n expiresIn: import_smithy_client.expectInt32,\n interval: import_smithy_client.expectInt32,\n userCode: import_smithy_client.expectString,\n verificationUri: import_smithy_client.expectString,\n verificationUriComplete: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_StartDeviceAuthorizationCommand\");\nvar de_CommandError = /* @__PURE__ */ __name(async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await (0, import_core2.parseJsonErrorBody)(output.body, context)\n };\n const errorCode = (0, import_core2.loadRestJsonErrorCode)(output, parsedOutput.body);\n switch (errorCode) {\n case \"AccessDeniedException\":\n case \"com.amazonaws.ssooidc#AccessDeniedException\":\n throw await de_AccessDeniedExceptionRes(parsedOutput, context);\n case \"AuthorizationPendingException\":\n case \"com.amazonaws.ssooidc#AuthorizationPendingException\":\n throw await de_AuthorizationPendingExceptionRes(parsedOutput, context);\n case \"ExpiredTokenException\":\n case \"com.amazonaws.ssooidc#ExpiredTokenException\":\n throw await de_ExpiredTokenExceptionRes(parsedOutput, context);\n case \"InternalServerException\":\n case \"com.amazonaws.ssooidc#InternalServerException\":\n throw await de_InternalServerExceptionRes(parsedOutput, context);\n case \"InvalidClientException\":\n case \"com.amazonaws.ssooidc#InvalidClientException\":\n throw await de_InvalidClientExceptionRes(parsedOutput, context);\n case \"InvalidGrantException\":\n case \"com.amazonaws.ssooidc#InvalidGrantException\":\n throw await de_InvalidGrantExceptionRes(parsedOutput, context);\n case \"InvalidRequestException\":\n case \"com.amazonaws.ssooidc#InvalidRequestException\":\n throw await de_InvalidRequestExceptionRes(parsedOutput, context);\n case \"InvalidScopeException\":\n case \"com.amazonaws.ssooidc#InvalidScopeException\":\n throw await de_InvalidScopeExceptionRes(parsedOutput, context);\n case \"SlowDownException\":\n case \"com.amazonaws.ssooidc#SlowDownException\":\n throw await de_SlowDownExceptionRes(parsedOutput, context);\n case \"UnauthorizedClientException\":\n case \"com.amazonaws.ssooidc#UnauthorizedClientException\":\n throw await de_UnauthorizedClientExceptionRes(parsedOutput, context);\n case \"UnsupportedGrantTypeException\":\n case \"com.amazonaws.ssooidc#UnsupportedGrantTypeException\":\n throw await de_UnsupportedGrantTypeExceptionRes(parsedOutput, context);\n case \"InvalidRequestRegionException\":\n case \"com.amazonaws.ssooidc#InvalidRequestRegionException\":\n throw await de_InvalidRequestRegionExceptionRes(parsedOutput, context);\n case \"InvalidClientMetadataException\":\n case \"com.amazonaws.ssooidc#InvalidClientMetadataException\":\n throw await de_InvalidClientMetadataExceptionRes(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n return throwDefaultError({\n output,\n parsedBody,\n errorCode\n });\n }\n}, \"de_CommandError\");\nvar throwDefaultError = (0, import_smithy_client.withBaseException)(SSOOIDCServiceException);\nvar de_AccessDeniedExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new AccessDeniedException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_AccessDeniedExceptionRes\");\nvar de_AuthorizationPendingExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new AuthorizationPendingException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_AuthorizationPendingExceptionRes\");\nvar de_ExpiredTokenExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new ExpiredTokenException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_ExpiredTokenExceptionRes\");\nvar de_InternalServerExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InternalServerException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InternalServerExceptionRes\");\nvar de_InvalidClientExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidClientException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidClientExceptionRes\");\nvar de_InvalidClientMetadataExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidClientMetadataException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidClientMetadataExceptionRes\");\nvar de_InvalidGrantExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidGrantException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidGrantExceptionRes\");\nvar de_InvalidRequestExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidRequestException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidRequestExceptionRes\");\nvar de_InvalidRequestRegionExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n endpoint: import_smithy_client.expectString,\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString,\n region: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidRequestRegionException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidRequestRegionExceptionRes\");\nvar de_InvalidScopeExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidScopeException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidScopeExceptionRes\");\nvar de_SlowDownExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new SlowDownException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_SlowDownExceptionRes\");\nvar de_UnauthorizedClientExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new UnauthorizedClientException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_UnauthorizedClientExceptionRes\");\nvar de_UnsupportedGrantTypeExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n error: import_smithy_client.expectString,\n error_description: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new UnsupportedGrantTypeException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_UnsupportedGrantTypeExceptionRes\");\nvar deserializeMetadata = /* @__PURE__ */ __name((output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"]\n}), \"deserializeMetadata\");\nvar _ai = \"aws_iam\";\n\n// src/commands/CreateTokenCommand.ts\nvar _CreateTokenCommand = class _CreateTokenCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSSOOIDCService\", \"CreateToken\", {}).n(\"SSOOIDCClient\", \"CreateTokenCommand\").f(CreateTokenRequestFilterSensitiveLog, CreateTokenResponseFilterSensitiveLog).ser(se_CreateTokenCommand).de(de_CreateTokenCommand).build() {\n};\n__name(_CreateTokenCommand, \"CreateTokenCommand\");\nvar CreateTokenCommand = _CreateTokenCommand;\n\n// src/commands/CreateTokenWithIAMCommand.ts\n\n\n\n\nvar _CreateTokenWithIAMCommand = class _CreateTokenWithIAMCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSSOOIDCService\", \"CreateTokenWithIAM\", {}).n(\"SSOOIDCClient\", \"CreateTokenWithIAMCommand\").f(CreateTokenWithIAMRequestFilterSensitiveLog, CreateTokenWithIAMResponseFilterSensitiveLog).ser(se_CreateTokenWithIAMCommand).de(de_CreateTokenWithIAMCommand).build() {\n};\n__name(_CreateTokenWithIAMCommand, \"CreateTokenWithIAMCommand\");\nvar CreateTokenWithIAMCommand = _CreateTokenWithIAMCommand;\n\n// src/commands/RegisterClientCommand.ts\n\n\n\n\nvar _RegisterClientCommand = class _RegisterClientCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSSOOIDCService\", \"RegisterClient\", {}).n(\"SSOOIDCClient\", \"RegisterClientCommand\").f(void 0, RegisterClientResponseFilterSensitiveLog).ser(se_RegisterClientCommand).de(de_RegisterClientCommand).build() {\n};\n__name(_RegisterClientCommand, \"RegisterClientCommand\");\nvar RegisterClientCommand = _RegisterClientCommand;\n\n// src/commands/StartDeviceAuthorizationCommand.ts\n\n\n\n\nvar _StartDeviceAuthorizationCommand = class _StartDeviceAuthorizationCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSSOOIDCService\", \"StartDeviceAuthorization\", {}).n(\"SSOOIDCClient\", \"StartDeviceAuthorizationCommand\").f(StartDeviceAuthorizationRequestFilterSensitiveLog, void 0).ser(se_StartDeviceAuthorizationCommand).de(de_StartDeviceAuthorizationCommand).build() {\n};\n__name(_StartDeviceAuthorizationCommand, \"StartDeviceAuthorizationCommand\");\nvar StartDeviceAuthorizationCommand = _StartDeviceAuthorizationCommand;\n\n// src/SSOOIDC.ts\nvar commands = {\n CreateTokenCommand,\n CreateTokenWithIAMCommand,\n RegisterClientCommand,\n StartDeviceAuthorizationCommand\n};\nvar _SSOOIDC = class _SSOOIDC extends SSOOIDCClient {\n};\n__name(_SSOOIDC, \"SSOOIDC\");\nvar SSOOIDC = _SSOOIDC;\n(0, import_smithy_client.createAggregatedClient)(commands, SSOOIDC);\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n SSOOIDCServiceException,\n __Client,\n SSOOIDCClient,\n SSOOIDC,\n $Command,\n CreateTokenCommand,\n CreateTokenWithIAMCommand,\n RegisterClientCommand,\n StartDeviceAuthorizationCommand,\n AccessDeniedException,\n AuthorizationPendingException,\n ExpiredTokenException,\n InternalServerException,\n InvalidClientException,\n InvalidGrantException,\n InvalidRequestException,\n InvalidScopeException,\n SlowDownException,\n UnauthorizedClientException,\n UnsupportedGrantTypeException,\n InvalidRequestRegionException,\n InvalidClientMetadataException,\n CreateTokenRequestFilterSensitiveLog,\n CreateTokenResponseFilterSensitiveLog,\n CreateTokenWithIAMRequestFilterSensitiveLog,\n CreateTokenWithIAMResponseFilterSensitiveLog,\n RegisterClientResponseFilterSensitiveLog,\n StartDeviceAuthorizationRequestFilterSensitiveLog\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst tslib_1 = require(\"tslib\");\nconst package_json_1 = tslib_1.__importDefault(require(\"../package.json\"));\nconst core_1 = require(\"@aws-sdk/core\");\nconst credential_provider_node_1 = require(\"@aws-sdk/credential-provider-node\");\nconst util_user_agent_node_1 = require(\"@aws-sdk/util-user-agent-node\");\nconst config_resolver_1 = require(\"@smithy/config-resolver\");\nconst hash_node_1 = require(\"@smithy/hash-node\");\nconst middleware_retry_1 = require(\"@smithy/middleware-retry\");\nconst node_config_provider_1 = require(\"@smithy/node-config-provider\");\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst util_body_length_node_1 = require(\"@smithy/util-body-length-node\");\nconst util_retry_1 = require(\"@smithy/util-retry\");\nconst runtimeConfig_shared_1 = require(\"./runtimeConfig.shared\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst util_defaults_mode_node_1 = require(\"@smithy/util-defaults-mode-node\");\nconst smithy_client_2 = require(\"@smithy/smithy-client\");\nconst getRuntimeConfig = (config) => {\n (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version);\n const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config);\n const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode);\n const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config);\n (0, core_1.emitWarningIfUnsupportedVersion)(process.version);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength,\n credentialDefaultProvider: config?.credentialDefaultProvider ?? credential_provider_node_1.defaultProvider,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }),\n maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS),\n region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS),\n requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n (0, node_config_provider_1.loadConfig)({\n ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE,\n }),\n sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, \"sha256\"),\n streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS),\n useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS),\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst core_2 = require(\"@smithy/core\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst url_parser_1 = require(\"@smithy/url-parser\");\nconst util_base64_1 = require(\"@smithy/util-base64\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst httpAuthSchemeProvider_1 = require(\"./auth/httpAuthSchemeProvider\");\nconst endpointResolver_1 = require(\"./endpoint/endpointResolver\");\nconst getRuntimeConfig = (config) => {\n return {\n apiVersion: \"2019-06-10\",\n base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64,\n base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultSSOOIDCHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new core_1.AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new core_2.NoAuthSigner(),\n },\n ],\n logger: config?.logger ?? new smithy_client_1.NoOpLogger(),\n serviceId: config?.serviceId ?? \"SSO OIDC\",\n urlParser: config?.urlParser ?? url_parser_1.parseUrl,\n utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8,\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveHttpAuthSchemeConfig = exports.defaultSSOHttpAuthSchemeProvider = exports.defaultSSOHttpAuthSchemeParametersProvider = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_middleware_1 = require(\"@smithy/util-middleware\");\nconst defaultSSOHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: (0, util_middleware_1.getSmithyContext)(context).operation,\n region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) ||\n (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nexports.defaultSSOHttpAuthSchemeParametersProvider = defaultSSOHttpAuthSchemeParametersProvider;\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"awsssoportal\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createSmithyApiNoAuthHttpAuthOption(authParameters) {\n return {\n schemeId: \"smithy.api#noAuth\",\n };\n}\nconst defaultSSOHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n case \"GetRoleCredentials\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"ListAccountRoles\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"ListAccounts\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"Logout\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nexports.defaultSSOHttpAuthSchemeProvider = defaultSSOHttpAuthSchemeProvider;\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = (0, core_1.resolveAwsSdkSigV4Config)(config);\n return {\n ...config_0,\n };\n};\nexports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultEndpointResolver = void 0;\nconst util_endpoints_1 = require(\"@aws-sdk/util-endpoints\");\nconst util_endpoints_2 = require(\"@smithy/util-endpoints\");\nconst ruleset_1 = require(\"./ruleset\");\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n });\n};\nexports.defaultEndpointResolver = defaultEndpointResolver;\nutil_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ruleSet = void 0;\nconst u = \"required\", v = \"fn\", w = \"argv\", x = \"ref\";\nconst a = true, b = \"isSet\", c = \"booleanEquals\", d = \"error\", e = \"endpoint\", f = \"tree\", g = \"PartitionResult\", h = \"getAttr\", i = { [u]: false, \"type\": \"String\" }, j = { [u]: true, \"default\": false, \"type\": \"Boolean\" }, k = { [x]: \"Endpoint\" }, l = { [v]: c, [w]: [{ [x]: \"UseFIPS\" }, true] }, m = { [v]: c, [w]: [{ [x]: \"UseDualStack\" }, true] }, n = {}, o = { [v]: h, [w]: [{ [x]: g }, \"supportsFIPS\"] }, p = { [x]: g }, q = { [v]: c, [w]: [true, { [v]: h, [w]: [p, \"supportsDualStack\"] }] }, r = [l], s = [m], t = [{ [x]: \"Region\" }];\nconst _data = { version: \"1.0\", parameters: { Region: i, UseDualStack: j, UseFIPS: j, Endpoint: i }, rules: [{ conditions: [{ [v]: b, [w]: [k] }], rules: [{ conditions: r, error: \"Invalid Configuration: FIPS and custom endpoint are not supported\", type: d }, { conditions: s, error: \"Invalid Configuration: Dualstack and custom endpoint are not supported\", type: d }, { endpoint: { url: k, properties: n, headers: n }, type: e }], type: f }, { conditions: [{ [v]: b, [w]: t }], rules: [{ conditions: [{ [v]: \"aws.partition\", [w]: t, assign: g }], rules: [{ conditions: [l, m], rules: [{ conditions: [{ [v]: c, [w]: [a, o] }, q], rules: [{ endpoint: { url: \"https://portal.sso-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"FIPS and DualStack are enabled, but this partition does not support one or both\", type: d }], type: f }, { conditions: r, rules: [{ conditions: [{ [v]: c, [w]: [o, a] }], rules: [{ conditions: [{ [v]: \"stringEquals\", [w]: [{ [v]: h, [w]: [p, \"name\"] }, \"aws-us-gov\"] }], endpoint: { url: \"https://portal.sso.{Region}.amazonaws.com\", properties: n, headers: n }, type: e }, { endpoint: { url: \"https://portal.sso-fips.{Region}.{PartitionResult#dnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"FIPS is enabled but this partition does not support FIPS\", type: d }], type: f }, { conditions: s, rules: [{ conditions: [q], rules: [{ endpoint: { url: \"https://portal.sso.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: n, headers: n }, type: e }], type: f }, { error: \"DualStack is enabled but this partition does not support DualStack\", type: d }], type: f }, { endpoint: { url: \"https://portal.sso.{Region}.{PartitionResult#dnsSuffix}\", properties: n, headers: n }, type: e }], type: f }], type: f }, { error: \"Invalid Configuration: Missing Region\", type: d }] };\nexports.ruleSet = _data;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n GetRoleCredentialsCommand: () => GetRoleCredentialsCommand,\n GetRoleCredentialsRequestFilterSensitiveLog: () => GetRoleCredentialsRequestFilterSensitiveLog,\n GetRoleCredentialsResponseFilterSensitiveLog: () => GetRoleCredentialsResponseFilterSensitiveLog,\n InvalidRequestException: () => InvalidRequestException,\n ListAccountRolesCommand: () => ListAccountRolesCommand,\n ListAccountRolesRequestFilterSensitiveLog: () => ListAccountRolesRequestFilterSensitiveLog,\n ListAccountsCommand: () => ListAccountsCommand,\n ListAccountsRequestFilterSensitiveLog: () => ListAccountsRequestFilterSensitiveLog,\n LogoutCommand: () => LogoutCommand,\n LogoutRequestFilterSensitiveLog: () => LogoutRequestFilterSensitiveLog,\n ResourceNotFoundException: () => ResourceNotFoundException,\n RoleCredentialsFilterSensitiveLog: () => RoleCredentialsFilterSensitiveLog,\n SSO: () => SSO,\n SSOClient: () => SSOClient,\n SSOServiceException: () => SSOServiceException,\n TooManyRequestsException: () => TooManyRequestsException,\n UnauthorizedException: () => UnauthorizedException,\n __Client: () => import_smithy_client.Client,\n paginateListAccountRoles: () => paginateListAccountRoles,\n paginateListAccounts: () => paginateListAccounts\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/SSOClient.ts\nvar import_middleware_host_header = require(\"@aws-sdk/middleware-host-header\");\nvar import_middleware_logger = require(\"@aws-sdk/middleware-logger\");\nvar import_middleware_recursion_detection = require(\"@aws-sdk/middleware-recursion-detection\");\nvar import_middleware_user_agent = require(\"@aws-sdk/middleware-user-agent\");\nvar import_config_resolver = require(\"@smithy/config-resolver\");\nvar import_core = require(\"@smithy/core\");\nvar import_middleware_content_length = require(\"@smithy/middleware-content-length\");\nvar import_middleware_endpoint = require(\"@smithy/middleware-endpoint\");\nvar import_middleware_retry = require(\"@smithy/middleware-retry\");\n\nvar import_httpAuthSchemeProvider = require(\"./auth/httpAuthSchemeProvider\");\n\n// src/endpoint/EndpointParameters.ts\nvar resolveClientEndpointParameters = /* @__PURE__ */ __name((options) => {\n return {\n ...options,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n defaultSigningName: \"awsssoportal\"\n };\n}, \"resolveClientEndpointParameters\");\nvar commonParams = {\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" }\n};\n\n// src/SSOClient.ts\nvar import_runtimeConfig = require(\"././runtimeConfig\");\n\n// src/runtimeExtensions.ts\nvar import_region_config_resolver = require(\"@aws-sdk/region-config-resolver\");\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar import_smithy_client = require(\"@smithy/smithy-client\");\n\n// src/auth/httpAuthExtensionConfiguration.ts\nvar getHttpAuthExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n } else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n }\n };\n}, \"getHttpAuthExtensionConfiguration\");\nvar resolveHttpAuthRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials()\n };\n}, \"resolveHttpAuthRuntimeConfig\");\n\n// src/runtimeExtensions.ts\nvar asPartial = /* @__PURE__ */ __name((t) => t, \"asPartial\");\nvar resolveRuntimeExtensions = /* @__PURE__ */ __name((runtimeConfig, extensions) => {\n const extensionConfiguration = {\n ...asPartial((0, import_region_config_resolver.getAwsRegionExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_smithy_client.getDefaultExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, import_protocol_http.getHttpHandlerExtensionConfiguration)(runtimeConfig)),\n ...asPartial(getHttpAuthExtensionConfiguration(runtimeConfig))\n };\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return {\n ...runtimeConfig,\n ...(0, import_region_config_resolver.resolveAwsRegionExtensionConfiguration)(extensionConfiguration),\n ...(0, import_smithy_client.resolveDefaultRuntimeConfig)(extensionConfiguration),\n ...(0, import_protocol_http.resolveHttpHandlerRuntimeConfig)(extensionConfiguration),\n ...resolveHttpAuthRuntimeConfig(extensionConfiguration)\n };\n}, \"resolveRuntimeExtensions\");\n\n// src/SSOClient.ts\nvar _SSOClient = class _SSOClient extends import_smithy_client.Client {\n constructor(...[configuration]) {\n const _config_0 = (0, import_runtimeConfig.getRuntimeConfig)(configuration || {});\n const _config_1 = resolveClientEndpointParameters(_config_0);\n const _config_2 = (0, import_config_resolver.resolveRegionConfig)(_config_1);\n const _config_3 = (0, import_middleware_endpoint.resolveEndpointConfig)(_config_2);\n const _config_4 = (0, import_middleware_retry.resolveRetryConfig)(_config_3);\n const _config_5 = (0, import_middleware_host_header.resolveHostHeaderConfig)(_config_4);\n const _config_6 = (0, import_middleware_user_agent.resolveUserAgentConfig)(_config_5);\n const _config_7 = (0, import_httpAuthSchemeProvider.resolveHttpAuthSchemeConfig)(_config_6);\n const _config_8 = resolveRuntimeExtensions(_config_7, (configuration == null ? void 0 : configuration.extensions) || []);\n super(_config_8);\n this.config = _config_8;\n this.middlewareStack.use((0, import_middleware_retry.getRetryPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_content_length.getContentLengthPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_host_header.getHostHeaderPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_logger.getLoggerPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_recursion_detection.getRecursionDetectionPlugin)(this.config));\n this.middlewareStack.use((0, import_middleware_user_agent.getUserAgentPlugin)(this.config));\n this.middlewareStack.use(\n (0, import_core.getHttpAuthSchemeEndpointRuleSetPlugin)(this.config, {\n httpAuthSchemeParametersProvider: this.getDefaultHttpAuthSchemeParametersProvider(),\n identityProviderConfigProvider: this.getIdentityProviderConfigProvider()\n })\n );\n this.middlewareStack.use((0, import_core.getHttpSigningPlugin)(this.config));\n }\n /**\n * Destroy underlying resources, like sockets. It's usually not necessary to do this.\n * However in Node.js, it's best to explicitly shut down the client's agent when it is no longer needed.\n * Otherwise, sockets might stay open for quite a long time before the server terminates them.\n */\n destroy() {\n super.destroy();\n }\n getDefaultHttpAuthSchemeParametersProvider() {\n return import_httpAuthSchemeProvider.defaultSSOHttpAuthSchemeParametersProvider;\n }\n getIdentityProviderConfigProvider() {\n return async (config) => new import_core.DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials\n });\n }\n};\n__name(_SSOClient, \"SSOClient\");\nvar SSOClient = _SSOClient;\n\n// src/SSO.ts\n\n\n// src/commands/GetRoleCredentialsCommand.ts\n\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\n\nvar import_types = require(\"@smithy/types\");\n\n// src/models/models_0.ts\n\n\n// src/models/SSOServiceException.ts\n\nvar _SSOServiceException = class _SSOServiceException extends import_smithy_client.ServiceException {\n /**\n * @internal\n */\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, _SSOServiceException.prototype);\n }\n};\n__name(_SSOServiceException, \"SSOServiceException\");\nvar SSOServiceException = _SSOServiceException;\n\n// src/models/models_0.ts\nvar _InvalidRequestException = class _InvalidRequestException extends SSOServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidRequestException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidRequestException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidRequestException.prototype);\n }\n};\n__name(_InvalidRequestException, \"InvalidRequestException\");\nvar InvalidRequestException = _InvalidRequestException;\nvar _ResourceNotFoundException = class _ResourceNotFoundException extends SSOServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ResourceNotFoundException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ResourceNotFoundException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ResourceNotFoundException.prototype);\n }\n};\n__name(_ResourceNotFoundException, \"ResourceNotFoundException\");\nvar ResourceNotFoundException = _ResourceNotFoundException;\nvar _TooManyRequestsException = class _TooManyRequestsException extends SSOServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"TooManyRequestsException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"TooManyRequestsException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _TooManyRequestsException.prototype);\n }\n};\n__name(_TooManyRequestsException, \"TooManyRequestsException\");\nvar TooManyRequestsException = _TooManyRequestsException;\nvar _UnauthorizedException = class _UnauthorizedException extends SSOServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"UnauthorizedException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"UnauthorizedException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _UnauthorizedException.prototype);\n }\n};\n__name(_UnauthorizedException, \"UnauthorizedException\");\nvar UnauthorizedException = _UnauthorizedException;\nvar GetRoleCredentialsRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.accessToken && { accessToken: import_smithy_client.SENSITIVE_STRING }\n}), \"GetRoleCredentialsRequestFilterSensitiveLog\");\nvar RoleCredentialsFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.secretAccessKey && { secretAccessKey: import_smithy_client.SENSITIVE_STRING },\n ...obj.sessionToken && { sessionToken: import_smithy_client.SENSITIVE_STRING }\n}), \"RoleCredentialsFilterSensitiveLog\");\nvar GetRoleCredentialsResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.roleCredentials && { roleCredentials: RoleCredentialsFilterSensitiveLog(obj.roleCredentials) }\n}), \"GetRoleCredentialsResponseFilterSensitiveLog\");\nvar ListAccountRolesRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.accessToken && { accessToken: import_smithy_client.SENSITIVE_STRING }\n}), \"ListAccountRolesRequestFilterSensitiveLog\");\nvar ListAccountsRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.accessToken && { accessToken: import_smithy_client.SENSITIVE_STRING }\n}), \"ListAccountsRequestFilterSensitiveLog\");\nvar LogoutRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.accessToken && { accessToken: import_smithy_client.SENSITIVE_STRING }\n}), \"LogoutRequestFilterSensitiveLog\");\n\n// src/protocols/Aws_restJson1.ts\nvar import_core2 = require(\"@aws-sdk/core\");\n\n\nvar se_GetRoleCredentialsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = (0, import_smithy_client.map)({}, isSerializableHeaderValue, {\n [_xasbt]: input[_aT]\n });\n b.bp(\"/federation/credentials\");\n const query = (0, import_smithy_client.map)({\n [_rn]: [, (0, import_smithy_client.expectNonNull)(input[_rN], `roleName`)],\n [_ai]: [, (0, import_smithy_client.expectNonNull)(input[_aI], `accountId`)]\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n}, \"se_GetRoleCredentialsCommand\");\nvar se_ListAccountRolesCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = (0, import_smithy_client.map)({}, isSerializableHeaderValue, {\n [_xasbt]: input[_aT]\n });\n b.bp(\"/assignment/roles\");\n const query = (0, import_smithy_client.map)({\n [_nt]: [, input[_nT]],\n [_mr]: [() => input.maxResults !== void 0, () => input[_mR].toString()],\n [_ai]: [, (0, import_smithy_client.expectNonNull)(input[_aI], `accountId`)]\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n}, \"se_ListAccountRolesCommand\");\nvar se_ListAccountsCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = (0, import_smithy_client.map)({}, isSerializableHeaderValue, {\n [_xasbt]: input[_aT]\n });\n b.bp(\"/assignment/accounts\");\n const query = (0, import_smithy_client.map)({\n [_nt]: [, input[_nT]],\n [_mr]: [() => input.maxResults !== void 0, () => input[_mR].toString()]\n });\n let body;\n b.m(\"GET\").h(headers).q(query).b(body);\n return b.build();\n}, \"se_ListAccountsCommand\");\nvar se_LogoutCommand = /* @__PURE__ */ __name(async (input, context) => {\n const b = (0, import_core.requestBuilder)(input, context);\n const headers = (0, import_smithy_client.map)({}, isSerializableHeaderValue, {\n [_xasbt]: input[_aT]\n });\n b.bp(\"/logout\");\n let body;\n b.m(\"POST\").h(headers).b(body);\n return b.build();\n}, \"se_LogoutCommand\");\nvar de_GetRoleCredentialsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n roleCredentials: import_smithy_client._json\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_GetRoleCredentialsCommand\");\nvar de_ListAccountRolesCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n nextToken: import_smithy_client.expectString,\n roleList: import_smithy_client._json\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_ListAccountRolesCommand\");\nvar de_ListAccountsCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n const data = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.expectObject)(await (0, import_core2.parseJsonBody)(output.body, context)), \"body\");\n const doc = (0, import_smithy_client.take)(data, {\n accountList: import_smithy_client._json,\n nextToken: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n return contents;\n}, \"de_ListAccountsCommand\");\nvar de_LogoutCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode !== 200 && output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const contents = (0, import_smithy_client.map)({\n $metadata: deserializeMetadata(output)\n });\n await (0, import_smithy_client.collectBody)(output.body, context);\n return contents;\n}, \"de_LogoutCommand\");\nvar de_CommandError = /* @__PURE__ */ __name(async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await (0, import_core2.parseJsonErrorBody)(output.body, context)\n };\n const errorCode = (0, import_core2.loadRestJsonErrorCode)(output, parsedOutput.body);\n switch (errorCode) {\n case \"InvalidRequestException\":\n case \"com.amazonaws.sso#InvalidRequestException\":\n throw await de_InvalidRequestExceptionRes(parsedOutput, context);\n case \"ResourceNotFoundException\":\n case \"com.amazonaws.sso#ResourceNotFoundException\":\n throw await de_ResourceNotFoundExceptionRes(parsedOutput, context);\n case \"TooManyRequestsException\":\n case \"com.amazonaws.sso#TooManyRequestsException\":\n throw await de_TooManyRequestsExceptionRes(parsedOutput, context);\n case \"UnauthorizedException\":\n case \"com.amazonaws.sso#UnauthorizedException\":\n throw await de_UnauthorizedExceptionRes(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n return throwDefaultError({\n output,\n parsedBody,\n errorCode\n });\n }\n}, \"de_CommandError\");\nvar throwDefaultError = (0, import_smithy_client.withBaseException)(SSOServiceException);\nvar de_InvalidRequestExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n message: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new InvalidRequestException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_InvalidRequestExceptionRes\");\nvar de_ResourceNotFoundExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n message: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new ResourceNotFoundException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_ResourceNotFoundExceptionRes\");\nvar de_TooManyRequestsExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n message: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new TooManyRequestsException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_TooManyRequestsExceptionRes\");\nvar de_UnauthorizedExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const contents = (0, import_smithy_client.map)({});\n const data = parsedOutput.body;\n const doc = (0, import_smithy_client.take)(data, {\n message: import_smithy_client.expectString\n });\n Object.assign(contents, doc);\n const exception = new UnauthorizedException({\n $metadata: deserializeMetadata(parsedOutput),\n ...contents\n });\n return (0, import_smithy_client.decorateServiceException)(exception, parsedOutput.body);\n}, \"de_UnauthorizedExceptionRes\");\nvar deserializeMetadata = /* @__PURE__ */ __name((output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"]\n}), \"deserializeMetadata\");\nvar isSerializableHeaderValue = /* @__PURE__ */ __name((value) => value !== void 0 && value !== null && value !== \"\" && (!Object.getOwnPropertyNames(value).includes(\"length\") || value.length != 0) && (!Object.getOwnPropertyNames(value).includes(\"size\") || value.size != 0), \"isSerializableHeaderValue\");\nvar _aI = \"accountId\";\nvar _aT = \"accessToken\";\nvar _ai = \"account_id\";\nvar _mR = \"maxResults\";\nvar _mr = \"max_result\";\nvar _nT = \"nextToken\";\nvar _nt = \"next_token\";\nvar _rN = \"roleName\";\nvar _rn = \"role_name\";\nvar _xasbt = \"x-amz-sso_bearer_token\";\n\n// src/commands/GetRoleCredentialsCommand.ts\nvar _GetRoleCredentialsCommand = class _GetRoleCredentialsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"SWBPortalService\", \"GetRoleCredentials\", {}).n(\"SSOClient\", \"GetRoleCredentialsCommand\").f(GetRoleCredentialsRequestFilterSensitiveLog, GetRoleCredentialsResponseFilterSensitiveLog).ser(se_GetRoleCredentialsCommand).de(de_GetRoleCredentialsCommand).build() {\n};\n__name(_GetRoleCredentialsCommand, \"GetRoleCredentialsCommand\");\nvar GetRoleCredentialsCommand = _GetRoleCredentialsCommand;\n\n// src/commands/ListAccountRolesCommand.ts\n\n\n\n\nvar _ListAccountRolesCommand = class _ListAccountRolesCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"SWBPortalService\", \"ListAccountRoles\", {}).n(\"SSOClient\", \"ListAccountRolesCommand\").f(ListAccountRolesRequestFilterSensitiveLog, void 0).ser(se_ListAccountRolesCommand).de(de_ListAccountRolesCommand).build() {\n};\n__name(_ListAccountRolesCommand, \"ListAccountRolesCommand\");\nvar ListAccountRolesCommand = _ListAccountRolesCommand;\n\n// src/commands/ListAccountsCommand.ts\n\n\n\n\nvar _ListAccountsCommand = class _ListAccountsCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"SWBPortalService\", \"ListAccounts\", {}).n(\"SSOClient\", \"ListAccountsCommand\").f(ListAccountsRequestFilterSensitiveLog, void 0).ser(se_ListAccountsCommand).de(de_ListAccountsCommand).build() {\n};\n__name(_ListAccountsCommand, \"ListAccountsCommand\");\nvar ListAccountsCommand = _ListAccountsCommand;\n\n// src/commands/LogoutCommand.ts\n\n\n\n\nvar _LogoutCommand = class _LogoutCommand extends import_smithy_client.Command.classBuilder().ep({\n ...commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"SWBPortalService\", \"Logout\", {}).n(\"SSOClient\", \"LogoutCommand\").f(LogoutRequestFilterSensitiveLog, void 0).ser(se_LogoutCommand).de(de_LogoutCommand).build() {\n};\n__name(_LogoutCommand, \"LogoutCommand\");\nvar LogoutCommand = _LogoutCommand;\n\n// src/SSO.ts\nvar commands = {\n GetRoleCredentialsCommand,\n ListAccountRolesCommand,\n ListAccountsCommand,\n LogoutCommand\n};\nvar _SSO = class _SSO extends SSOClient {\n};\n__name(_SSO, \"SSO\");\nvar SSO = _SSO;\n(0, import_smithy_client.createAggregatedClient)(commands, SSO);\n\n// src/pagination/ListAccountRolesPaginator.ts\n\nvar paginateListAccountRoles = (0, import_core.createPaginator)(SSOClient, ListAccountRolesCommand, \"nextToken\", \"nextToken\", \"maxResults\");\n\n// src/pagination/ListAccountsPaginator.ts\n\nvar paginateListAccounts = (0, import_core.createPaginator)(SSOClient, ListAccountsCommand, \"nextToken\", \"nextToken\", \"maxResults\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n SSOServiceException,\n __Client,\n SSOClient,\n SSO,\n $Command,\n GetRoleCredentialsCommand,\n ListAccountRolesCommand,\n ListAccountsCommand,\n LogoutCommand,\n paginateListAccountRoles,\n paginateListAccounts,\n InvalidRequestException,\n ResourceNotFoundException,\n TooManyRequestsException,\n UnauthorizedException,\n GetRoleCredentialsRequestFilterSensitiveLog,\n RoleCredentialsFilterSensitiveLog,\n GetRoleCredentialsResponseFilterSensitiveLog,\n ListAccountRolesRequestFilterSensitiveLog,\n ListAccountsRequestFilterSensitiveLog,\n LogoutRequestFilterSensitiveLog\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst tslib_1 = require(\"tslib\");\nconst package_json_1 = tslib_1.__importDefault(require(\"../package.json\"));\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_user_agent_node_1 = require(\"@aws-sdk/util-user-agent-node\");\nconst config_resolver_1 = require(\"@smithy/config-resolver\");\nconst hash_node_1 = require(\"@smithy/hash-node\");\nconst middleware_retry_1 = require(\"@smithy/middleware-retry\");\nconst node_config_provider_1 = require(\"@smithy/node-config-provider\");\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst util_body_length_node_1 = require(\"@smithy/util-body-length-node\");\nconst util_retry_1 = require(\"@smithy/util-retry\");\nconst runtimeConfig_shared_1 = require(\"./runtimeConfig.shared\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst util_defaults_mode_node_1 = require(\"@smithy/util-defaults-mode-node\");\nconst smithy_client_2 = require(\"@smithy/smithy-client\");\nconst getRuntimeConfig = (config) => {\n (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version);\n const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config);\n const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode);\n const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config);\n (0, core_1.emitWarningIfUnsupportedVersion)(process.version);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }),\n maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS),\n region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS),\n requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n (0, node_config_provider_1.loadConfig)({\n ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE,\n }),\n sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, \"sha256\"),\n streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS),\n useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS),\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst core_2 = require(\"@smithy/core\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst url_parser_1 = require(\"@smithy/url-parser\");\nconst util_base64_1 = require(\"@smithy/util-base64\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst httpAuthSchemeProvider_1 = require(\"./auth/httpAuthSchemeProvider\");\nconst endpointResolver_1 = require(\"./endpoint/endpointResolver\");\nconst getRuntimeConfig = (config) => {\n return {\n apiVersion: \"2019-06-10\",\n base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64,\n base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultSSOHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new core_1.AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new core_2.NoAuthSigner(),\n },\n ],\n logger: config?.logger ?? new smithy_client_1.NoOpLogger(),\n serviceId: config?.serviceId ?? \"SSO\",\n urlParser: config?.urlParser ?? url_parser_1.parseUrl,\n utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8,\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.STSClient = exports.__Client = void 0;\nconst middleware_host_header_1 = require(\"@aws-sdk/middleware-host-header\");\nconst middleware_logger_1 = require(\"@aws-sdk/middleware-logger\");\nconst middleware_recursion_detection_1 = require(\"@aws-sdk/middleware-recursion-detection\");\nconst middleware_user_agent_1 = require(\"@aws-sdk/middleware-user-agent\");\nconst config_resolver_1 = require(\"@smithy/config-resolver\");\nconst core_1 = require(\"@smithy/core\");\nconst middleware_content_length_1 = require(\"@smithy/middleware-content-length\");\nconst middleware_endpoint_1 = require(\"@smithy/middleware-endpoint\");\nconst middleware_retry_1 = require(\"@smithy/middleware-retry\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nObject.defineProperty(exports, \"__Client\", { enumerable: true, get: function () { return smithy_client_1.Client; } });\nconst httpAuthSchemeProvider_1 = require(\"./auth/httpAuthSchemeProvider\");\nconst EndpointParameters_1 = require(\"./endpoint/EndpointParameters\");\nconst runtimeConfig_1 = require(\"./runtimeConfig\");\nconst runtimeExtensions_1 = require(\"./runtimeExtensions\");\nclass STSClient extends smithy_client_1.Client {\n constructor(...[configuration]) {\n const _config_0 = (0, runtimeConfig_1.getRuntimeConfig)(configuration || {});\n const _config_1 = (0, EndpointParameters_1.resolveClientEndpointParameters)(_config_0);\n const _config_2 = (0, config_resolver_1.resolveRegionConfig)(_config_1);\n const _config_3 = (0, middleware_endpoint_1.resolveEndpointConfig)(_config_2);\n const _config_4 = (0, middleware_retry_1.resolveRetryConfig)(_config_3);\n const _config_5 = (0, middleware_host_header_1.resolveHostHeaderConfig)(_config_4);\n const _config_6 = (0, middleware_user_agent_1.resolveUserAgentConfig)(_config_5);\n const _config_7 = (0, httpAuthSchemeProvider_1.resolveHttpAuthSchemeConfig)(_config_6);\n const _config_8 = (0, runtimeExtensions_1.resolveRuntimeExtensions)(_config_7, configuration?.extensions || []);\n super(_config_8);\n this.config = _config_8;\n this.middlewareStack.use((0, middleware_retry_1.getRetryPlugin)(this.config));\n this.middlewareStack.use((0, middleware_content_length_1.getContentLengthPlugin)(this.config));\n this.middlewareStack.use((0, middleware_host_header_1.getHostHeaderPlugin)(this.config));\n this.middlewareStack.use((0, middleware_logger_1.getLoggerPlugin)(this.config));\n this.middlewareStack.use((0, middleware_recursion_detection_1.getRecursionDetectionPlugin)(this.config));\n this.middlewareStack.use((0, middleware_user_agent_1.getUserAgentPlugin)(this.config));\n this.middlewareStack.use((0, core_1.getHttpAuthSchemeEndpointRuleSetPlugin)(this.config, {\n httpAuthSchemeParametersProvider: this.getDefaultHttpAuthSchemeParametersProvider(),\n identityProviderConfigProvider: this.getIdentityProviderConfigProvider(),\n }));\n this.middlewareStack.use((0, core_1.getHttpSigningPlugin)(this.config));\n }\n destroy() {\n super.destroy();\n }\n getDefaultHttpAuthSchemeParametersProvider() {\n return httpAuthSchemeProvider_1.defaultSTSHttpAuthSchemeParametersProvider;\n }\n getIdentityProviderConfigProvider() {\n return async (config) => new core_1.DefaultIdentityProviderConfig({\n \"aws.auth#sigv4\": config.credentials,\n });\n }\n}\nexports.STSClient = STSClient;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveHttpAuthRuntimeConfig = exports.getHttpAuthExtensionConfiguration = void 0;\nconst getHttpAuthExtensionConfiguration = (runtimeConfig) => {\n const _httpAuthSchemes = runtimeConfig.httpAuthSchemes;\n let _httpAuthSchemeProvider = runtimeConfig.httpAuthSchemeProvider;\n let _credentials = runtimeConfig.credentials;\n return {\n setHttpAuthScheme(httpAuthScheme) {\n const index = _httpAuthSchemes.findIndex((scheme) => scheme.schemeId === httpAuthScheme.schemeId);\n if (index === -1) {\n _httpAuthSchemes.push(httpAuthScheme);\n }\n else {\n _httpAuthSchemes.splice(index, 1, httpAuthScheme);\n }\n },\n httpAuthSchemes() {\n return _httpAuthSchemes;\n },\n setHttpAuthSchemeProvider(httpAuthSchemeProvider) {\n _httpAuthSchemeProvider = httpAuthSchemeProvider;\n },\n httpAuthSchemeProvider() {\n return _httpAuthSchemeProvider;\n },\n setCredentials(credentials) {\n _credentials = credentials;\n },\n credentials() {\n return _credentials;\n },\n };\n};\nexports.getHttpAuthExtensionConfiguration = getHttpAuthExtensionConfiguration;\nconst resolveHttpAuthRuntimeConfig = (config) => {\n return {\n httpAuthSchemes: config.httpAuthSchemes(),\n httpAuthSchemeProvider: config.httpAuthSchemeProvider(),\n credentials: config.credentials(),\n };\n};\nexports.resolveHttpAuthRuntimeConfig = resolveHttpAuthRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveHttpAuthSchemeConfig = exports.resolveStsAuthConfig = exports.defaultSTSHttpAuthSchemeProvider = exports.defaultSTSHttpAuthSchemeParametersProvider = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst util_middleware_1 = require(\"@smithy/util-middleware\");\nconst STSClient_1 = require(\"../STSClient\");\nconst defaultSTSHttpAuthSchemeParametersProvider = async (config, context, input) => {\n return {\n operation: (0, util_middleware_1.getSmithyContext)(context).operation,\n region: (await (0, util_middleware_1.normalizeProvider)(config.region)()) ||\n (() => {\n throw new Error(\"expected `region` to be configured for `aws.auth#sigv4`\");\n })(),\n };\n};\nexports.defaultSTSHttpAuthSchemeParametersProvider = defaultSTSHttpAuthSchemeParametersProvider;\nfunction createAwsAuthSigv4HttpAuthOption(authParameters) {\n return {\n schemeId: \"aws.auth#sigv4\",\n signingProperties: {\n name: \"sts\",\n region: authParameters.region,\n },\n propertiesExtractor: (config, context) => ({\n signingProperties: {\n config,\n context,\n },\n }),\n };\n}\nfunction createSmithyApiNoAuthHttpAuthOption(authParameters) {\n return {\n schemeId: \"smithy.api#noAuth\",\n };\n}\nconst defaultSTSHttpAuthSchemeProvider = (authParameters) => {\n const options = [];\n switch (authParameters.operation) {\n case \"AssumeRoleWithSAML\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n case \"AssumeRoleWithWebIdentity\": {\n options.push(createSmithyApiNoAuthHttpAuthOption(authParameters));\n break;\n }\n default: {\n options.push(createAwsAuthSigv4HttpAuthOption(authParameters));\n }\n }\n return options;\n};\nexports.defaultSTSHttpAuthSchemeProvider = defaultSTSHttpAuthSchemeProvider;\nconst resolveStsAuthConfig = (input) => ({\n ...input,\n stsClientCtor: STSClient_1.STSClient,\n});\nexports.resolveStsAuthConfig = resolveStsAuthConfig;\nconst resolveHttpAuthSchemeConfig = (config) => {\n const config_0 = (0, exports.resolveStsAuthConfig)(config);\n const config_1 = (0, core_1.resolveAwsSdkSigV4Config)(config_0);\n return {\n ...config_1,\n };\n};\nexports.resolveHttpAuthSchemeConfig = resolveHttpAuthSchemeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.commonParams = exports.resolveClientEndpointParameters = void 0;\nconst resolveClientEndpointParameters = (options) => {\n return {\n ...options,\n useDualstackEndpoint: options.useDualstackEndpoint ?? false,\n useFipsEndpoint: options.useFipsEndpoint ?? false,\n useGlobalEndpoint: options.useGlobalEndpoint ?? false,\n defaultSigningName: \"sts\",\n };\n};\nexports.resolveClientEndpointParameters = resolveClientEndpointParameters;\nexports.commonParams = {\n UseGlobalEndpoint: { type: \"builtInParams\", name: \"useGlobalEndpoint\" },\n UseFIPS: { type: \"builtInParams\", name: \"useFipsEndpoint\" },\n Endpoint: { type: \"builtInParams\", name: \"endpoint\" },\n Region: { type: \"builtInParams\", name: \"region\" },\n UseDualStack: { type: \"builtInParams\", name: \"useDualstackEndpoint\" },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.defaultEndpointResolver = void 0;\nconst util_endpoints_1 = require(\"@aws-sdk/util-endpoints\");\nconst util_endpoints_2 = require(\"@smithy/util-endpoints\");\nconst ruleset_1 = require(\"./ruleset\");\nconst defaultEndpointResolver = (endpointParams, context = {}) => {\n return (0, util_endpoints_2.resolveEndpoint)(ruleset_1.ruleSet, {\n endpointParams: endpointParams,\n logger: context.logger,\n });\n};\nexports.defaultEndpointResolver = defaultEndpointResolver;\nutil_endpoints_2.customEndpointFunctions.aws = util_endpoints_1.awsEndpointFunctions;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.ruleSet = void 0;\nconst F = \"required\", G = \"type\", H = \"fn\", I = \"argv\", J = \"ref\";\nconst a = false, b = true, c = \"booleanEquals\", d = \"stringEquals\", e = \"sigv4\", f = \"sts\", g = \"us-east-1\", h = \"endpoint\", i = \"https://sts.{Region}.{PartitionResult#dnsSuffix}\", j = \"tree\", k = \"error\", l = \"getAttr\", m = { [F]: false, [G]: \"String\" }, n = { [F]: true, \"default\": false, [G]: \"Boolean\" }, o = { [J]: \"Endpoint\" }, p = { [H]: \"isSet\", [I]: [{ [J]: \"Region\" }] }, q = { [J]: \"Region\" }, r = { [H]: \"aws.partition\", [I]: [q], \"assign\": \"PartitionResult\" }, s = { [J]: \"UseFIPS\" }, t = { [J]: \"UseDualStack\" }, u = { \"url\": \"https://sts.amazonaws.com\", \"properties\": { \"authSchemes\": [{ \"name\": e, \"signingName\": f, \"signingRegion\": g }] }, \"headers\": {} }, v = {}, w = { \"conditions\": [{ [H]: d, [I]: [q, \"aws-global\"] }], [h]: u, [G]: h }, x = { [H]: c, [I]: [s, true] }, y = { [H]: c, [I]: [t, true] }, z = { [H]: l, [I]: [{ [J]: \"PartitionResult\" }, \"supportsFIPS\"] }, A = { [J]: \"PartitionResult\" }, B = { [H]: c, [I]: [true, { [H]: l, [I]: [A, \"supportsDualStack\"] }] }, C = [{ [H]: \"isSet\", [I]: [o] }], D = [x], E = [y];\nconst _data = { version: \"1.0\", parameters: { Region: m, UseDualStack: n, UseFIPS: n, Endpoint: m, UseGlobalEndpoint: n }, rules: [{ conditions: [{ [H]: c, [I]: [{ [J]: \"UseGlobalEndpoint\" }, b] }, { [H]: \"not\", [I]: C }, p, r, { [H]: c, [I]: [s, a] }, { [H]: c, [I]: [t, a] }], rules: [{ conditions: [{ [H]: d, [I]: [q, \"ap-northeast-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"ap-south-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"ap-southeast-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"ap-southeast-2\"] }], endpoint: u, [G]: h }, w, { conditions: [{ [H]: d, [I]: [q, \"ca-central-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"eu-central-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"eu-north-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"eu-west-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"eu-west-2\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"eu-west-3\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"sa-east-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, g] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"us-east-2\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"us-west-1\"] }], endpoint: u, [G]: h }, { conditions: [{ [H]: d, [I]: [q, \"us-west-2\"] }], endpoint: u, [G]: h }, { endpoint: { url: i, properties: { authSchemes: [{ name: e, signingName: f, signingRegion: \"{Region}\" }] }, headers: v }, [G]: h }], [G]: j }, { conditions: C, rules: [{ conditions: D, error: \"Invalid Configuration: FIPS and custom endpoint are not supported\", [G]: k }, { conditions: E, error: \"Invalid Configuration: Dualstack and custom endpoint are not supported\", [G]: k }, { endpoint: { url: o, properties: v, headers: v }, [G]: h }], [G]: j }, { conditions: [p], rules: [{ conditions: [r], rules: [{ conditions: [x, y], rules: [{ conditions: [{ [H]: c, [I]: [b, z] }, B], rules: [{ endpoint: { url: \"https://sts-fips.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: v, headers: v }, [G]: h }], [G]: j }, { error: \"FIPS and DualStack are enabled, but this partition does not support one or both\", [G]: k }], [G]: j }, { conditions: D, rules: [{ conditions: [{ [H]: c, [I]: [z, b] }], rules: [{ conditions: [{ [H]: d, [I]: [{ [H]: l, [I]: [A, \"name\"] }, \"aws-us-gov\"] }], endpoint: { url: \"https://sts.{Region}.amazonaws.com\", properties: v, headers: v }, [G]: h }, { endpoint: { url: \"https://sts-fips.{Region}.{PartitionResult#dnsSuffix}\", properties: v, headers: v }, [G]: h }], [G]: j }, { error: \"FIPS is enabled but this partition does not support FIPS\", [G]: k }], [G]: j }, { conditions: E, rules: [{ conditions: [B], rules: [{ endpoint: { url: \"https://sts.{Region}.{PartitionResult#dualStackDnsSuffix}\", properties: v, headers: v }, [G]: h }], [G]: j }, { error: \"DualStack is enabled but this partition does not support DualStack\", [G]: k }], [G]: j }, w, { endpoint: { url: i, properties: v, headers: v }, [G]: h }], [G]: j }], [G]: j }, { error: \"Invalid Configuration: Missing Region\", [G]: k }] };\nexports.ruleSet = _data;\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AssumeRoleCommand: () => AssumeRoleCommand,\n AssumeRoleResponseFilterSensitiveLog: () => AssumeRoleResponseFilterSensitiveLog,\n AssumeRoleWithSAMLCommand: () => AssumeRoleWithSAMLCommand,\n AssumeRoleWithSAMLRequestFilterSensitiveLog: () => AssumeRoleWithSAMLRequestFilterSensitiveLog,\n AssumeRoleWithSAMLResponseFilterSensitiveLog: () => AssumeRoleWithSAMLResponseFilterSensitiveLog,\n AssumeRoleWithWebIdentityCommand: () => AssumeRoleWithWebIdentityCommand,\n AssumeRoleWithWebIdentityRequestFilterSensitiveLog: () => AssumeRoleWithWebIdentityRequestFilterSensitiveLog,\n AssumeRoleWithWebIdentityResponseFilterSensitiveLog: () => AssumeRoleWithWebIdentityResponseFilterSensitiveLog,\n ClientInputEndpointParameters: () => import_EndpointParameters9.ClientInputEndpointParameters,\n CredentialsFilterSensitiveLog: () => CredentialsFilterSensitiveLog,\n DecodeAuthorizationMessageCommand: () => DecodeAuthorizationMessageCommand,\n ExpiredTokenException: () => ExpiredTokenException,\n GetAccessKeyInfoCommand: () => GetAccessKeyInfoCommand,\n GetCallerIdentityCommand: () => GetCallerIdentityCommand,\n GetFederationTokenCommand: () => GetFederationTokenCommand,\n GetFederationTokenResponseFilterSensitiveLog: () => GetFederationTokenResponseFilterSensitiveLog,\n GetSessionTokenCommand: () => GetSessionTokenCommand,\n GetSessionTokenResponseFilterSensitiveLog: () => GetSessionTokenResponseFilterSensitiveLog,\n IDPCommunicationErrorException: () => IDPCommunicationErrorException,\n IDPRejectedClaimException: () => IDPRejectedClaimException,\n InvalidAuthorizationMessageException: () => InvalidAuthorizationMessageException,\n InvalidIdentityTokenException: () => InvalidIdentityTokenException,\n MalformedPolicyDocumentException: () => MalformedPolicyDocumentException,\n PackedPolicyTooLargeException: () => PackedPolicyTooLargeException,\n RegionDisabledException: () => RegionDisabledException,\n RuntimeExtension: () => import_runtimeExtensions.RuntimeExtension,\n STS: () => STS,\n STSServiceException: () => STSServiceException,\n decorateDefaultCredentialProvider: () => decorateDefaultCredentialProvider,\n getDefaultRoleAssumer: () => getDefaultRoleAssumer2,\n getDefaultRoleAssumerWithWebIdentity: () => getDefaultRoleAssumerWithWebIdentity2\n});\nmodule.exports = __toCommonJS(src_exports);\n__reExport(src_exports, require(\"././STSClient\"), module.exports);\n\n// src/STS.ts\n\n\n// src/commands/AssumeRoleCommand.ts\nvar import_middleware_endpoint = require(\"@smithy/middleware-endpoint\");\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\n\nvar import_types = require(\"@smithy/types\");\nvar import_EndpointParameters = require(\"./endpoint/EndpointParameters\");\n\n// src/models/models_0.ts\n\n\n// src/models/STSServiceException.ts\nvar import_smithy_client = require(\"@smithy/smithy-client\");\nvar _STSServiceException = class _STSServiceException extends import_smithy_client.ServiceException {\n /**\n * @internal\n */\n constructor(options) {\n super(options);\n Object.setPrototypeOf(this, _STSServiceException.prototype);\n }\n};\n__name(_STSServiceException, \"STSServiceException\");\nvar STSServiceException = _STSServiceException;\n\n// src/models/models_0.ts\nvar _ExpiredTokenException = class _ExpiredTokenException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"ExpiredTokenException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"ExpiredTokenException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _ExpiredTokenException.prototype);\n }\n};\n__name(_ExpiredTokenException, \"ExpiredTokenException\");\nvar ExpiredTokenException = _ExpiredTokenException;\nvar _MalformedPolicyDocumentException = class _MalformedPolicyDocumentException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"MalformedPolicyDocumentException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"MalformedPolicyDocumentException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _MalformedPolicyDocumentException.prototype);\n }\n};\n__name(_MalformedPolicyDocumentException, \"MalformedPolicyDocumentException\");\nvar MalformedPolicyDocumentException = _MalformedPolicyDocumentException;\nvar _PackedPolicyTooLargeException = class _PackedPolicyTooLargeException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"PackedPolicyTooLargeException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"PackedPolicyTooLargeException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _PackedPolicyTooLargeException.prototype);\n }\n};\n__name(_PackedPolicyTooLargeException, \"PackedPolicyTooLargeException\");\nvar PackedPolicyTooLargeException = _PackedPolicyTooLargeException;\nvar _RegionDisabledException = class _RegionDisabledException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"RegionDisabledException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"RegionDisabledException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _RegionDisabledException.prototype);\n }\n};\n__name(_RegionDisabledException, \"RegionDisabledException\");\nvar RegionDisabledException = _RegionDisabledException;\nvar _IDPRejectedClaimException = class _IDPRejectedClaimException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"IDPRejectedClaimException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"IDPRejectedClaimException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _IDPRejectedClaimException.prototype);\n }\n};\n__name(_IDPRejectedClaimException, \"IDPRejectedClaimException\");\nvar IDPRejectedClaimException = _IDPRejectedClaimException;\nvar _InvalidIdentityTokenException = class _InvalidIdentityTokenException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidIdentityTokenException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidIdentityTokenException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidIdentityTokenException.prototype);\n }\n};\n__name(_InvalidIdentityTokenException, \"InvalidIdentityTokenException\");\nvar InvalidIdentityTokenException = _InvalidIdentityTokenException;\nvar _IDPCommunicationErrorException = class _IDPCommunicationErrorException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"IDPCommunicationErrorException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"IDPCommunicationErrorException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _IDPCommunicationErrorException.prototype);\n }\n};\n__name(_IDPCommunicationErrorException, \"IDPCommunicationErrorException\");\nvar IDPCommunicationErrorException = _IDPCommunicationErrorException;\nvar _InvalidAuthorizationMessageException = class _InvalidAuthorizationMessageException extends STSServiceException {\n /**\n * @internal\n */\n constructor(opts) {\n super({\n name: \"InvalidAuthorizationMessageException\",\n $fault: \"client\",\n ...opts\n });\n this.name = \"InvalidAuthorizationMessageException\";\n this.$fault = \"client\";\n Object.setPrototypeOf(this, _InvalidAuthorizationMessageException.prototype);\n }\n};\n__name(_InvalidAuthorizationMessageException, \"InvalidAuthorizationMessageException\");\nvar InvalidAuthorizationMessageException = _InvalidAuthorizationMessageException;\nvar CredentialsFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.SecretAccessKey && { SecretAccessKey: import_smithy_client.SENSITIVE_STRING }\n}), \"CredentialsFilterSensitiveLog\");\nvar AssumeRoleResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Credentials && { Credentials: CredentialsFilterSensitiveLog(obj.Credentials) }\n}), \"AssumeRoleResponseFilterSensitiveLog\");\nvar AssumeRoleWithSAMLRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.SAMLAssertion && { SAMLAssertion: import_smithy_client.SENSITIVE_STRING }\n}), \"AssumeRoleWithSAMLRequestFilterSensitiveLog\");\nvar AssumeRoleWithSAMLResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Credentials && { Credentials: CredentialsFilterSensitiveLog(obj.Credentials) }\n}), \"AssumeRoleWithSAMLResponseFilterSensitiveLog\");\nvar AssumeRoleWithWebIdentityRequestFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.WebIdentityToken && { WebIdentityToken: import_smithy_client.SENSITIVE_STRING }\n}), \"AssumeRoleWithWebIdentityRequestFilterSensitiveLog\");\nvar AssumeRoleWithWebIdentityResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Credentials && { Credentials: CredentialsFilterSensitiveLog(obj.Credentials) }\n}), \"AssumeRoleWithWebIdentityResponseFilterSensitiveLog\");\nvar GetFederationTokenResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Credentials && { Credentials: CredentialsFilterSensitiveLog(obj.Credentials) }\n}), \"GetFederationTokenResponseFilterSensitiveLog\");\nvar GetSessionTokenResponseFilterSensitiveLog = /* @__PURE__ */ __name((obj) => ({\n ...obj,\n ...obj.Credentials && { Credentials: CredentialsFilterSensitiveLog(obj.Credentials) }\n}), \"GetSessionTokenResponseFilterSensitiveLog\");\n\n// src/protocols/Aws_query.ts\nvar import_core = require(\"@aws-sdk/core\");\nvar import_protocol_http = require(\"@smithy/protocol-http\");\n\nvar se_AssumeRoleCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_AssumeRoleRequest(input, context),\n [_A]: _AR,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_AssumeRoleCommand\");\nvar se_AssumeRoleWithSAMLCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_AssumeRoleWithSAMLRequest(input, context),\n [_A]: _ARWSAML,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_AssumeRoleWithSAMLCommand\");\nvar se_AssumeRoleWithWebIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_AssumeRoleWithWebIdentityRequest(input, context),\n [_A]: _ARWWI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_AssumeRoleWithWebIdentityCommand\");\nvar se_DecodeAuthorizationMessageCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_DecodeAuthorizationMessageRequest(input, context),\n [_A]: _DAM,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_DecodeAuthorizationMessageCommand\");\nvar se_GetAccessKeyInfoCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetAccessKeyInfoRequest(input, context),\n [_A]: _GAKI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetAccessKeyInfoCommand\");\nvar se_GetCallerIdentityCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetCallerIdentityRequest(input, context),\n [_A]: _GCI,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetCallerIdentityCommand\");\nvar se_GetFederationTokenCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetFederationTokenRequest(input, context),\n [_A]: _GFT,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetFederationTokenCommand\");\nvar se_GetSessionTokenCommand = /* @__PURE__ */ __name(async (input, context) => {\n const headers = SHARED_HEADERS;\n let body;\n body = buildFormUrlencodedString({\n ...se_GetSessionTokenRequest(input, context),\n [_A]: _GST,\n [_V]: _\n });\n return buildHttpRpcRequest(context, headers, \"/\", void 0, body);\n}, \"se_GetSessionTokenCommand\");\nvar de_AssumeRoleCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_AssumeRoleResponse(data.AssumeRoleResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_AssumeRoleCommand\");\nvar de_AssumeRoleWithSAMLCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_AssumeRoleWithSAMLResponse(data.AssumeRoleWithSAMLResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_AssumeRoleWithSAMLCommand\");\nvar de_AssumeRoleWithWebIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_AssumeRoleWithWebIdentityResponse(data.AssumeRoleWithWebIdentityResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_AssumeRoleWithWebIdentityCommand\");\nvar de_DecodeAuthorizationMessageCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_DecodeAuthorizationMessageResponse(data.DecodeAuthorizationMessageResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_DecodeAuthorizationMessageCommand\");\nvar de_GetAccessKeyInfoCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetAccessKeyInfoResponse(data.GetAccessKeyInfoResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetAccessKeyInfoCommand\");\nvar de_GetCallerIdentityCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetCallerIdentityResponse(data.GetCallerIdentityResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetCallerIdentityCommand\");\nvar de_GetFederationTokenCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetFederationTokenResponse(data.GetFederationTokenResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetFederationTokenCommand\");\nvar de_GetSessionTokenCommand = /* @__PURE__ */ __name(async (output, context) => {\n if (output.statusCode >= 300) {\n return de_CommandError(output, context);\n }\n const data = await (0, import_core.parseXmlBody)(output.body, context);\n let contents = {};\n contents = de_GetSessionTokenResponse(data.GetSessionTokenResult, context);\n const response = {\n $metadata: deserializeMetadata(output),\n ...contents\n };\n return response;\n}, \"de_GetSessionTokenCommand\");\nvar de_CommandError = /* @__PURE__ */ __name(async (output, context) => {\n const parsedOutput = {\n ...output,\n body: await (0, import_core.parseXmlErrorBody)(output.body, context)\n };\n const errorCode = loadQueryErrorCode(output, parsedOutput.body);\n switch (errorCode) {\n case \"ExpiredTokenException\":\n case \"com.amazonaws.sts#ExpiredTokenException\":\n throw await de_ExpiredTokenExceptionRes(parsedOutput, context);\n case \"MalformedPolicyDocument\":\n case \"com.amazonaws.sts#MalformedPolicyDocumentException\":\n throw await de_MalformedPolicyDocumentExceptionRes(parsedOutput, context);\n case \"PackedPolicyTooLarge\":\n case \"com.amazonaws.sts#PackedPolicyTooLargeException\":\n throw await de_PackedPolicyTooLargeExceptionRes(parsedOutput, context);\n case \"RegionDisabledException\":\n case \"com.amazonaws.sts#RegionDisabledException\":\n throw await de_RegionDisabledExceptionRes(parsedOutput, context);\n case \"IDPRejectedClaim\":\n case \"com.amazonaws.sts#IDPRejectedClaimException\":\n throw await de_IDPRejectedClaimExceptionRes(parsedOutput, context);\n case \"InvalidIdentityToken\":\n case \"com.amazonaws.sts#InvalidIdentityTokenException\":\n throw await de_InvalidIdentityTokenExceptionRes(parsedOutput, context);\n case \"IDPCommunicationError\":\n case \"com.amazonaws.sts#IDPCommunicationErrorException\":\n throw await de_IDPCommunicationErrorExceptionRes(parsedOutput, context);\n case \"InvalidAuthorizationMessageException\":\n case \"com.amazonaws.sts#InvalidAuthorizationMessageException\":\n throw await de_InvalidAuthorizationMessageExceptionRes(parsedOutput, context);\n default:\n const parsedBody = parsedOutput.body;\n return throwDefaultError({\n output,\n parsedBody: parsedBody.Error,\n errorCode\n });\n }\n}, \"de_CommandError\");\nvar de_ExpiredTokenExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_ExpiredTokenException(body.Error, context);\n const exception = new ExpiredTokenException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_ExpiredTokenExceptionRes\");\nvar de_IDPCommunicationErrorExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_IDPCommunicationErrorException(body.Error, context);\n const exception = new IDPCommunicationErrorException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_IDPCommunicationErrorExceptionRes\");\nvar de_IDPRejectedClaimExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_IDPRejectedClaimException(body.Error, context);\n const exception = new IDPRejectedClaimException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_IDPRejectedClaimExceptionRes\");\nvar de_InvalidAuthorizationMessageExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_InvalidAuthorizationMessageException(body.Error, context);\n const exception = new InvalidAuthorizationMessageException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidAuthorizationMessageExceptionRes\");\nvar de_InvalidIdentityTokenExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_InvalidIdentityTokenException(body.Error, context);\n const exception = new InvalidIdentityTokenException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_InvalidIdentityTokenExceptionRes\");\nvar de_MalformedPolicyDocumentExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_MalformedPolicyDocumentException(body.Error, context);\n const exception = new MalformedPolicyDocumentException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_MalformedPolicyDocumentExceptionRes\");\nvar de_PackedPolicyTooLargeExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_PackedPolicyTooLargeException(body.Error, context);\n const exception = new PackedPolicyTooLargeException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_PackedPolicyTooLargeExceptionRes\");\nvar de_RegionDisabledExceptionRes = /* @__PURE__ */ __name(async (parsedOutput, context) => {\n const body = parsedOutput.body;\n const deserialized = de_RegionDisabledException(body.Error, context);\n const exception = new RegionDisabledException({\n $metadata: deserializeMetadata(parsedOutput),\n ...deserialized\n });\n return (0, import_smithy_client.decorateServiceException)(exception, body);\n}, \"de_RegionDisabledExceptionRes\");\nvar se_AssumeRoleRequest = /* @__PURE__ */ __name((input, context) => {\n var _a2, _b, _c, _d;\n const entries = {};\n if (input[_RA] != null) {\n entries[_RA] = input[_RA];\n }\n if (input[_RSN] != null) {\n entries[_RSN] = input[_RSN];\n }\n if (input[_PA] != null) {\n const memberEntries = se_policyDescriptorListType(input[_PA], context);\n if (((_a2 = input[_PA]) == null ? void 0 : _a2.length) === 0) {\n entries.PolicyArns = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `PolicyArns.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_P] != null) {\n entries[_P] = input[_P];\n }\n if (input[_DS] != null) {\n entries[_DS] = input[_DS];\n }\n if (input[_T] != null) {\n const memberEntries = se_tagListType(input[_T], context);\n if (((_b = input[_T]) == null ? void 0 : _b.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_TTK] != null) {\n const memberEntries = se_tagKeyListType(input[_TTK], context);\n if (((_c = input[_TTK]) == null ? void 0 : _c.length) === 0) {\n entries.TransitiveTagKeys = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `TransitiveTagKeys.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_EI] != null) {\n entries[_EI] = input[_EI];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_TC] != null) {\n entries[_TC] = input[_TC];\n }\n if (input[_SI] != null) {\n entries[_SI] = input[_SI];\n }\n if (input[_PC] != null) {\n const memberEntries = se_ProvidedContextsListType(input[_PC], context);\n if (((_d = input[_PC]) == null ? void 0 : _d.length) === 0) {\n entries.ProvidedContexts = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `ProvidedContexts.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_AssumeRoleRequest\");\nvar se_AssumeRoleWithSAMLRequest = /* @__PURE__ */ __name((input, context) => {\n var _a2;\n const entries = {};\n if (input[_RA] != null) {\n entries[_RA] = input[_RA];\n }\n if (input[_PAr] != null) {\n entries[_PAr] = input[_PAr];\n }\n if (input[_SAMLA] != null) {\n entries[_SAMLA] = input[_SAMLA];\n }\n if (input[_PA] != null) {\n const memberEntries = se_policyDescriptorListType(input[_PA], context);\n if (((_a2 = input[_PA]) == null ? void 0 : _a2.length) === 0) {\n entries.PolicyArns = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `PolicyArns.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_P] != null) {\n entries[_P] = input[_P];\n }\n if (input[_DS] != null) {\n entries[_DS] = input[_DS];\n }\n return entries;\n}, \"se_AssumeRoleWithSAMLRequest\");\nvar se_AssumeRoleWithWebIdentityRequest = /* @__PURE__ */ __name((input, context) => {\n var _a2;\n const entries = {};\n if (input[_RA] != null) {\n entries[_RA] = input[_RA];\n }\n if (input[_RSN] != null) {\n entries[_RSN] = input[_RSN];\n }\n if (input[_WIT] != null) {\n entries[_WIT] = input[_WIT];\n }\n if (input[_PI] != null) {\n entries[_PI] = input[_PI];\n }\n if (input[_PA] != null) {\n const memberEntries = se_policyDescriptorListType(input[_PA], context);\n if (((_a2 = input[_PA]) == null ? void 0 : _a2.length) === 0) {\n entries.PolicyArns = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `PolicyArns.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_P] != null) {\n entries[_P] = input[_P];\n }\n if (input[_DS] != null) {\n entries[_DS] = input[_DS];\n }\n return entries;\n}, \"se_AssumeRoleWithWebIdentityRequest\");\nvar se_DecodeAuthorizationMessageRequest = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_EM] != null) {\n entries[_EM] = input[_EM];\n }\n return entries;\n}, \"se_DecodeAuthorizationMessageRequest\");\nvar se_GetAccessKeyInfoRequest = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_AKI] != null) {\n entries[_AKI] = input[_AKI];\n }\n return entries;\n}, \"se_GetAccessKeyInfoRequest\");\nvar se_GetCallerIdentityRequest = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n return entries;\n}, \"se_GetCallerIdentityRequest\");\nvar se_GetFederationTokenRequest = /* @__PURE__ */ __name((input, context) => {\n var _a2, _b;\n const entries = {};\n if (input[_N] != null) {\n entries[_N] = input[_N];\n }\n if (input[_P] != null) {\n entries[_P] = input[_P];\n }\n if (input[_PA] != null) {\n const memberEntries = se_policyDescriptorListType(input[_PA], context);\n if (((_a2 = input[_PA]) == null ? void 0 : _a2.length) === 0) {\n entries.PolicyArns = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `PolicyArns.${key}`;\n entries[loc] = value;\n });\n }\n if (input[_DS] != null) {\n entries[_DS] = input[_DS];\n }\n if (input[_T] != null) {\n const memberEntries = se_tagListType(input[_T], context);\n if (((_b = input[_T]) == null ? void 0 : _b.length) === 0) {\n entries.Tags = [];\n }\n Object.entries(memberEntries).forEach(([key, value]) => {\n const loc = `Tags.${key}`;\n entries[loc] = value;\n });\n }\n return entries;\n}, \"se_GetFederationTokenRequest\");\nvar se_GetSessionTokenRequest = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_DS] != null) {\n entries[_DS] = input[_DS];\n }\n if (input[_SN] != null) {\n entries[_SN] = input[_SN];\n }\n if (input[_TC] != null) {\n entries[_TC] = input[_TC];\n }\n return entries;\n}, \"se_GetSessionTokenRequest\");\nvar se_policyDescriptorListType = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_PolicyDescriptorType(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_policyDescriptorListType\");\nvar se_PolicyDescriptorType = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_a] != null) {\n entries[_a] = input[_a];\n }\n return entries;\n}, \"se_PolicyDescriptorType\");\nvar se_ProvidedContext = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_PAro] != null) {\n entries[_PAro] = input[_PAro];\n }\n if (input[_CA] != null) {\n entries[_CA] = input[_CA];\n }\n return entries;\n}, \"se_ProvidedContext\");\nvar se_ProvidedContextsListType = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_ProvidedContext(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_ProvidedContextsListType\");\nvar se_Tag = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n if (input[_K] != null) {\n entries[_K] = input[_K];\n }\n if (input[_Va] != null) {\n entries[_Va] = input[_Va];\n }\n return entries;\n}, \"se_Tag\");\nvar se_tagKeyListType = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n entries[`member.${counter}`] = entry;\n counter++;\n }\n return entries;\n}, \"se_tagKeyListType\");\nvar se_tagListType = /* @__PURE__ */ __name((input, context) => {\n const entries = {};\n let counter = 1;\n for (const entry of input) {\n if (entry === null) {\n continue;\n }\n const memberEntries = se_Tag(entry, context);\n Object.entries(memberEntries).forEach(([key, value]) => {\n entries[`member.${counter}.${key}`] = value;\n });\n counter++;\n }\n return entries;\n}, \"se_tagListType\");\nvar de_AssumedRoleUser = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_ARI] != null) {\n contents[_ARI] = (0, import_smithy_client.expectString)(output[_ARI]);\n }\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n return contents;\n}, \"de_AssumedRoleUser\");\nvar de_AssumeRoleResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_C] != null) {\n contents[_C] = de_Credentials(output[_C], context);\n }\n if (output[_ARU] != null) {\n contents[_ARU] = de_AssumedRoleUser(output[_ARU], context);\n }\n if (output[_PPS] != null) {\n contents[_PPS] = (0, import_smithy_client.strictParseInt32)(output[_PPS]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_AssumeRoleResponse\");\nvar de_AssumeRoleWithSAMLResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_C] != null) {\n contents[_C] = de_Credentials(output[_C], context);\n }\n if (output[_ARU] != null) {\n contents[_ARU] = de_AssumedRoleUser(output[_ARU], context);\n }\n if (output[_PPS] != null) {\n contents[_PPS] = (0, import_smithy_client.strictParseInt32)(output[_PPS]);\n }\n if (output[_S] != null) {\n contents[_S] = (0, import_smithy_client.expectString)(output[_S]);\n }\n if (output[_ST] != null) {\n contents[_ST] = (0, import_smithy_client.expectString)(output[_ST]);\n }\n if (output[_I] != null) {\n contents[_I] = (0, import_smithy_client.expectString)(output[_I]);\n }\n if (output[_Au] != null) {\n contents[_Au] = (0, import_smithy_client.expectString)(output[_Au]);\n }\n if (output[_NQ] != null) {\n contents[_NQ] = (0, import_smithy_client.expectString)(output[_NQ]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_AssumeRoleWithSAMLResponse\");\nvar de_AssumeRoleWithWebIdentityResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_C] != null) {\n contents[_C] = de_Credentials(output[_C], context);\n }\n if (output[_SFWIT] != null) {\n contents[_SFWIT] = (0, import_smithy_client.expectString)(output[_SFWIT]);\n }\n if (output[_ARU] != null) {\n contents[_ARU] = de_AssumedRoleUser(output[_ARU], context);\n }\n if (output[_PPS] != null) {\n contents[_PPS] = (0, import_smithy_client.strictParseInt32)(output[_PPS]);\n }\n if (output[_Pr] != null) {\n contents[_Pr] = (0, import_smithy_client.expectString)(output[_Pr]);\n }\n if (output[_Au] != null) {\n contents[_Au] = (0, import_smithy_client.expectString)(output[_Au]);\n }\n if (output[_SI] != null) {\n contents[_SI] = (0, import_smithy_client.expectString)(output[_SI]);\n }\n return contents;\n}, \"de_AssumeRoleWithWebIdentityResponse\");\nvar de_Credentials = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_AKI] != null) {\n contents[_AKI] = (0, import_smithy_client.expectString)(output[_AKI]);\n }\n if (output[_SAK] != null) {\n contents[_SAK] = (0, import_smithy_client.expectString)(output[_SAK]);\n }\n if (output[_STe] != null) {\n contents[_STe] = (0, import_smithy_client.expectString)(output[_STe]);\n }\n if (output[_E] != null) {\n contents[_E] = (0, import_smithy_client.expectNonNull)((0, import_smithy_client.parseRfc3339DateTimeWithOffset)(output[_E]));\n }\n return contents;\n}, \"de_Credentials\");\nvar de_DecodeAuthorizationMessageResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_DM] != null) {\n contents[_DM] = (0, import_smithy_client.expectString)(output[_DM]);\n }\n return contents;\n}, \"de_DecodeAuthorizationMessageResponse\");\nvar de_ExpiredTokenException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_ExpiredTokenException\");\nvar de_FederatedUser = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_FUI] != null) {\n contents[_FUI] = (0, import_smithy_client.expectString)(output[_FUI]);\n }\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n return contents;\n}, \"de_FederatedUser\");\nvar de_GetAccessKeyInfoResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_Ac] != null) {\n contents[_Ac] = (0, import_smithy_client.expectString)(output[_Ac]);\n }\n return contents;\n}, \"de_GetAccessKeyInfoResponse\");\nvar de_GetCallerIdentityResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_UI] != null) {\n contents[_UI] = (0, import_smithy_client.expectString)(output[_UI]);\n }\n if (output[_Ac] != null) {\n contents[_Ac] = (0, import_smithy_client.expectString)(output[_Ac]);\n }\n if (output[_Ar] != null) {\n contents[_Ar] = (0, import_smithy_client.expectString)(output[_Ar]);\n }\n return contents;\n}, \"de_GetCallerIdentityResponse\");\nvar de_GetFederationTokenResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_C] != null) {\n contents[_C] = de_Credentials(output[_C], context);\n }\n if (output[_FU] != null) {\n contents[_FU] = de_FederatedUser(output[_FU], context);\n }\n if (output[_PPS] != null) {\n contents[_PPS] = (0, import_smithy_client.strictParseInt32)(output[_PPS]);\n }\n return contents;\n}, \"de_GetFederationTokenResponse\");\nvar de_GetSessionTokenResponse = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_C] != null) {\n contents[_C] = de_Credentials(output[_C], context);\n }\n return contents;\n}, \"de_GetSessionTokenResponse\");\nvar de_IDPCommunicationErrorException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_IDPCommunicationErrorException\");\nvar de_IDPRejectedClaimException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_IDPRejectedClaimException\");\nvar de_InvalidAuthorizationMessageException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_InvalidAuthorizationMessageException\");\nvar de_InvalidIdentityTokenException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_InvalidIdentityTokenException\");\nvar de_MalformedPolicyDocumentException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_MalformedPolicyDocumentException\");\nvar de_PackedPolicyTooLargeException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_PackedPolicyTooLargeException\");\nvar de_RegionDisabledException = /* @__PURE__ */ __name((output, context) => {\n const contents = {};\n if (output[_m] != null) {\n contents[_m] = (0, import_smithy_client.expectString)(output[_m]);\n }\n return contents;\n}, \"de_RegionDisabledException\");\nvar deserializeMetadata = /* @__PURE__ */ __name((output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"]\n}), \"deserializeMetadata\");\nvar throwDefaultError = (0, import_smithy_client.withBaseException)(STSServiceException);\nvar buildHttpRpcRequest = /* @__PURE__ */ __name(async (context, headers, path, resolvedHostname, body) => {\n const { hostname, protocol = \"https\", port, path: basePath } = await context.endpoint();\n const contents = {\n protocol,\n hostname,\n port,\n method: \"POST\",\n path: basePath.endsWith(\"/\") ? basePath.slice(0, -1) + path : basePath + path,\n headers\n };\n if (resolvedHostname !== void 0) {\n contents.hostname = resolvedHostname;\n }\n if (body !== void 0) {\n contents.body = body;\n }\n return new import_protocol_http.HttpRequest(contents);\n}, \"buildHttpRpcRequest\");\nvar SHARED_HEADERS = {\n \"content-type\": \"application/x-www-form-urlencoded\"\n};\nvar _ = \"2011-06-15\";\nvar _A = \"Action\";\nvar _AKI = \"AccessKeyId\";\nvar _AR = \"AssumeRole\";\nvar _ARI = \"AssumedRoleId\";\nvar _ARU = \"AssumedRoleUser\";\nvar _ARWSAML = \"AssumeRoleWithSAML\";\nvar _ARWWI = \"AssumeRoleWithWebIdentity\";\nvar _Ac = \"Account\";\nvar _Ar = \"Arn\";\nvar _Au = \"Audience\";\nvar _C = \"Credentials\";\nvar _CA = \"ContextAssertion\";\nvar _DAM = \"DecodeAuthorizationMessage\";\nvar _DM = \"DecodedMessage\";\nvar _DS = \"DurationSeconds\";\nvar _E = \"Expiration\";\nvar _EI = \"ExternalId\";\nvar _EM = \"EncodedMessage\";\nvar _FU = \"FederatedUser\";\nvar _FUI = \"FederatedUserId\";\nvar _GAKI = \"GetAccessKeyInfo\";\nvar _GCI = \"GetCallerIdentity\";\nvar _GFT = \"GetFederationToken\";\nvar _GST = \"GetSessionToken\";\nvar _I = \"Issuer\";\nvar _K = \"Key\";\nvar _N = \"Name\";\nvar _NQ = \"NameQualifier\";\nvar _P = \"Policy\";\nvar _PA = \"PolicyArns\";\nvar _PAr = \"PrincipalArn\";\nvar _PAro = \"ProviderArn\";\nvar _PC = \"ProvidedContexts\";\nvar _PI = \"ProviderId\";\nvar _PPS = \"PackedPolicySize\";\nvar _Pr = \"Provider\";\nvar _RA = \"RoleArn\";\nvar _RSN = \"RoleSessionName\";\nvar _S = \"Subject\";\nvar _SAK = \"SecretAccessKey\";\nvar _SAMLA = \"SAMLAssertion\";\nvar _SFWIT = \"SubjectFromWebIdentityToken\";\nvar _SI = \"SourceIdentity\";\nvar _SN = \"SerialNumber\";\nvar _ST = \"SubjectType\";\nvar _STe = \"SessionToken\";\nvar _T = \"Tags\";\nvar _TC = \"TokenCode\";\nvar _TTK = \"TransitiveTagKeys\";\nvar _UI = \"UserId\";\nvar _V = \"Version\";\nvar _Va = \"Value\";\nvar _WIT = \"WebIdentityToken\";\nvar _a = \"arn\";\nvar _m = \"message\";\nvar buildFormUrlencodedString = /* @__PURE__ */ __name((formEntries) => Object.entries(formEntries).map(([key, value]) => (0, import_smithy_client.extendedEncodeURIComponent)(key) + \"=\" + (0, import_smithy_client.extendedEncodeURIComponent)(value)).join(\"&\"), \"buildFormUrlencodedString\");\nvar loadQueryErrorCode = /* @__PURE__ */ __name((output, data) => {\n var _a2;\n if (((_a2 = data.Error) == null ? void 0 : _a2.Code) !== void 0) {\n return data.Error.Code;\n }\n if (output.statusCode == 404) {\n return \"NotFound\";\n }\n}, \"loadQueryErrorCode\");\n\n// src/commands/AssumeRoleCommand.ts\nvar _AssumeRoleCommand = class _AssumeRoleCommand extends import_smithy_client.Command.classBuilder().ep({\n ...import_EndpointParameters.commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"AssumeRole\", {}).n(\"STSClient\", \"AssumeRoleCommand\").f(void 0, AssumeRoleResponseFilterSensitiveLog).ser(se_AssumeRoleCommand).de(de_AssumeRoleCommand).build() {\n};\n__name(_AssumeRoleCommand, \"AssumeRoleCommand\");\nvar AssumeRoleCommand = _AssumeRoleCommand;\n\n// src/commands/AssumeRoleWithSAMLCommand.ts\n\n\n\n\nvar import_EndpointParameters2 = require(\"./endpoint/EndpointParameters\");\nvar _AssumeRoleWithSAMLCommand = class _AssumeRoleWithSAMLCommand extends import_smithy_client.Command.classBuilder().ep({\n ...import_EndpointParameters2.commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"AssumeRoleWithSAML\", {}).n(\"STSClient\", \"AssumeRoleWithSAMLCommand\").f(AssumeRoleWithSAMLRequestFilterSensitiveLog, AssumeRoleWithSAMLResponseFilterSensitiveLog).ser(se_AssumeRoleWithSAMLCommand).de(de_AssumeRoleWithSAMLCommand).build() {\n};\n__name(_AssumeRoleWithSAMLCommand, \"AssumeRoleWithSAMLCommand\");\nvar AssumeRoleWithSAMLCommand = _AssumeRoleWithSAMLCommand;\n\n// src/commands/AssumeRoleWithWebIdentityCommand.ts\n\n\n\n\nvar import_EndpointParameters3 = require(\"./endpoint/EndpointParameters\");\nvar _AssumeRoleWithWebIdentityCommand = class _AssumeRoleWithWebIdentityCommand extends import_smithy_client.Command.classBuilder().ep({\n ...import_EndpointParameters3.commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"AssumeRoleWithWebIdentity\", {}).n(\"STSClient\", \"AssumeRoleWithWebIdentityCommand\").f(AssumeRoleWithWebIdentityRequestFilterSensitiveLog, AssumeRoleWithWebIdentityResponseFilterSensitiveLog).ser(se_AssumeRoleWithWebIdentityCommand).de(de_AssumeRoleWithWebIdentityCommand).build() {\n};\n__name(_AssumeRoleWithWebIdentityCommand, \"AssumeRoleWithWebIdentityCommand\");\nvar AssumeRoleWithWebIdentityCommand = _AssumeRoleWithWebIdentityCommand;\n\n// src/commands/DecodeAuthorizationMessageCommand.ts\n\n\n\n\nvar import_EndpointParameters4 = require(\"./endpoint/EndpointParameters\");\nvar _DecodeAuthorizationMessageCommand = class _DecodeAuthorizationMessageCommand extends import_smithy_client.Command.classBuilder().ep({\n ...import_EndpointParameters4.commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"DecodeAuthorizationMessage\", {}).n(\"STSClient\", \"DecodeAuthorizationMessageCommand\").f(void 0, void 0).ser(se_DecodeAuthorizationMessageCommand).de(de_DecodeAuthorizationMessageCommand).build() {\n};\n__name(_DecodeAuthorizationMessageCommand, \"DecodeAuthorizationMessageCommand\");\nvar DecodeAuthorizationMessageCommand = _DecodeAuthorizationMessageCommand;\n\n// src/commands/GetAccessKeyInfoCommand.ts\n\n\n\n\nvar import_EndpointParameters5 = require(\"./endpoint/EndpointParameters\");\nvar _GetAccessKeyInfoCommand = class _GetAccessKeyInfoCommand extends import_smithy_client.Command.classBuilder().ep({\n ...import_EndpointParameters5.commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"GetAccessKeyInfo\", {}).n(\"STSClient\", \"GetAccessKeyInfoCommand\").f(void 0, void 0).ser(se_GetAccessKeyInfoCommand).de(de_GetAccessKeyInfoCommand).build() {\n};\n__name(_GetAccessKeyInfoCommand, \"GetAccessKeyInfoCommand\");\nvar GetAccessKeyInfoCommand = _GetAccessKeyInfoCommand;\n\n// src/commands/GetCallerIdentityCommand.ts\n\n\n\n\nvar import_EndpointParameters6 = require(\"./endpoint/EndpointParameters\");\nvar _GetCallerIdentityCommand = class _GetCallerIdentityCommand extends import_smithy_client.Command.classBuilder().ep({\n ...import_EndpointParameters6.commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"GetCallerIdentity\", {}).n(\"STSClient\", \"GetCallerIdentityCommand\").f(void 0, void 0).ser(se_GetCallerIdentityCommand).de(de_GetCallerIdentityCommand).build() {\n};\n__name(_GetCallerIdentityCommand, \"GetCallerIdentityCommand\");\nvar GetCallerIdentityCommand = _GetCallerIdentityCommand;\n\n// src/commands/GetFederationTokenCommand.ts\n\n\n\n\nvar import_EndpointParameters7 = require(\"./endpoint/EndpointParameters\");\nvar _GetFederationTokenCommand = class _GetFederationTokenCommand extends import_smithy_client.Command.classBuilder().ep({\n ...import_EndpointParameters7.commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"GetFederationToken\", {}).n(\"STSClient\", \"GetFederationTokenCommand\").f(void 0, GetFederationTokenResponseFilterSensitiveLog).ser(se_GetFederationTokenCommand).de(de_GetFederationTokenCommand).build() {\n};\n__name(_GetFederationTokenCommand, \"GetFederationTokenCommand\");\nvar GetFederationTokenCommand = _GetFederationTokenCommand;\n\n// src/commands/GetSessionTokenCommand.ts\n\n\n\n\nvar import_EndpointParameters8 = require(\"./endpoint/EndpointParameters\");\nvar _GetSessionTokenCommand = class _GetSessionTokenCommand extends import_smithy_client.Command.classBuilder().ep({\n ...import_EndpointParameters8.commonParams\n}).m(function(Command, cs, config, o) {\n return [\n (0, import_middleware_serde.getSerdePlugin)(config, this.serialize, this.deserialize),\n (0, import_middleware_endpoint.getEndpointPlugin)(config, Command.getEndpointParameterInstructions())\n ];\n}).s(\"AWSSecurityTokenServiceV20110615\", \"GetSessionToken\", {}).n(\"STSClient\", \"GetSessionTokenCommand\").f(void 0, GetSessionTokenResponseFilterSensitiveLog).ser(se_GetSessionTokenCommand).de(de_GetSessionTokenCommand).build() {\n};\n__name(_GetSessionTokenCommand, \"GetSessionTokenCommand\");\nvar GetSessionTokenCommand = _GetSessionTokenCommand;\n\n// src/STS.ts\nvar import_STSClient = require(\"././STSClient\");\nvar commands = {\n AssumeRoleCommand,\n AssumeRoleWithSAMLCommand,\n AssumeRoleWithWebIdentityCommand,\n DecodeAuthorizationMessageCommand,\n GetAccessKeyInfoCommand,\n GetCallerIdentityCommand,\n GetFederationTokenCommand,\n GetSessionTokenCommand\n};\nvar _STS = class _STS extends import_STSClient.STSClient {\n};\n__name(_STS, \"STS\");\nvar STS = _STS;\n(0, import_smithy_client.createAggregatedClient)(commands, STS);\n\n// src/index.ts\nvar import_EndpointParameters9 = require(\"./endpoint/EndpointParameters\");\nvar import_runtimeExtensions = require(\"././runtimeExtensions\");\n\n// src/defaultStsRoleAssumers.ts\nvar ASSUME_ROLE_DEFAULT_REGION = \"us-east-1\";\nvar resolveRegion = /* @__PURE__ */ __name(async (_region, _parentRegion, credentialProviderLogger) => {\n var _a2;\n const region = typeof _region === \"function\" ? await _region() : _region;\n const parentRegion = typeof _parentRegion === \"function\" ? await _parentRegion() : _parentRegion;\n (_a2 = credentialProviderLogger == null ? void 0 : credentialProviderLogger.debug) == null ? void 0 : _a2.call(\n credentialProviderLogger,\n \"@aws-sdk/client-sts::resolveRegion\",\n \"accepting first of:\",\n `${region} (provider)`,\n `${parentRegion} (parent client)`,\n `${ASSUME_ROLE_DEFAULT_REGION} (STS default)`\n );\n return region ?? parentRegion ?? ASSUME_ROLE_DEFAULT_REGION;\n}, \"resolveRegion\");\nvar getDefaultRoleAssumer = /* @__PURE__ */ __name((stsOptions, stsClientCtor) => {\n let stsClient;\n let closureSourceCreds;\n return async (sourceCreds, params) => {\n var _a2, _b, _c;\n closureSourceCreds = sourceCreds;\n if (!stsClient) {\n const {\n logger = (_a2 = stsOptions == null ? void 0 : stsOptions.parentClientConfig) == null ? void 0 : _a2.logger,\n region,\n requestHandler = (_b = stsOptions == null ? void 0 : stsOptions.parentClientConfig) == null ? void 0 : _b.requestHandler,\n credentialProviderLogger\n } = stsOptions;\n const resolvedRegion = await resolveRegion(\n region,\n (_c = stsOptions == null ? void 0 : stsOptions.parentClientConfig) == null ? void 0 : _c.region,\n credentialProviderLogger\n );\n stsClient = new stsClientCtor({\n // A hack to make sts client uses the credential in current closure.\n credentialDefaultProvider: () => async () => closureSourceCreds,\n region: resolvedRegion,\n requestHandler,\n logger\n });\n }\n const { Credentials: Credentials2 } = await stsClient.send(new AssumeRoleCommand(params));\n if (!Credentials2 || !Credentials2.AccessKeyId || !Credentials2.SecretAccessKey) {\n throw new Error(`Invalid response from STS.assumeRole call with role ${params.RoleArn}`);\n }\n return {\n accessKeyId: Credentials2.AccessKeyId,\n secretAccessKey: Credentials2.SecretAccessKey,\n sessionToken: Credentials2.SessionToken,\n expiration: Credentials2.Expiration,\n // TODO(credentialScope): access normally when shape is updated.\n credentialScope: Credentials2.CredentialScope\n };\n };\n}, \"getDefaultRoleAssumer\");\nvar getDefaultRoleAssumerWithWebIdentity = /* @__PURE__ */ __name((stsOptions, stsClientCtor) => {\n let stsClient;\n return async (params) => {\n var _a2, _b, _c;\n if (!stsClient) {\n const {\n logger = (_a2 = stsOptions == null ? void 0 : stsOptions.parentClientConfig) == null ? void 0 : _a2.logger,\n region,\n requestHandler = (_b = stsOptions == null ? void 0 : stsOptions.parentClientConfig) == null ? void 0 : _b.requestHandler,\n credentialProviderLogger\n } = stsOptions;\n const resolvedRegion = await resolveRegion(\n region,\n (_c = stsOptions == null ? void 0 : stsOptions.parentClientConfig) == null ? void 0 : _c.region,\n credentialProviderLogger\n );\n stsClient = new stsClientCtor({\n region: resolvedRegion,\n requestHandler,\n logger\n });\n }\n const { Credentials: Credentials2 } = await stsClient.send(new AssumeRoleWithWebIdentityCommand(params));\n if (!Credentials2 || !Credentials2.AccessKeyId || !Credentials2.SecretAccessKey) {\n throw new Error(`Invalid response from STS.assumeRoleWithWebIdentity call with role ${params.RoleArn}`);\n }\n return {\n accessKeyId: Credentials2.AccessKeyId,\n secretAccessKey: Credentials2.SecretAccessKey,\n sessionToken: Credentials2.SessionToken,\n expiration: Credentials2.Expiration,\n // TODO(credentialScope): access normally when shape is updated.\n credentialScope: Credentials2.CredentialScope\n };\n };\n}, \"getDefaultRoleAssumerWithWebIdentity\");\n\n// src/defaultRoleAssumers.ts\nvar import_STSClient2 = require(\"././STSClient\");\nvar getCustomizableStsClientCtor = /* @__PURE__ */ __name((baseCtor, customizations) => {\n var _a2;\n if (!customizations)\n return baseCtor;\n else\n return _a2 = class extends baseCtor {\n constructor(config) {\n super(config);\n for (const customization of customizations) {\n this.middlewareStack.use(customization);\n }\n }\n }, __name(_a2, \"CustomizableSTSClient\"), _a2;\n}, \"getCustomizableStsClientCtor\");\nvar getDefaultRoleAssumer2 = /* @__PURE__ */ __name((stsOptions = {}, stsPlugins) => getDefaultRoleAssumer(stsOptions, getCustomizableStsClientCtor(import_STSClient2.STSClient, stsPlugins)), \"getDefaultRoleAssumer\");\nvar getDefaultRoleAssumerWithWebIdentity2 = /* @__PURE__ */ __name((stsOptions = {}, stsPlugins) => getDefaultRoleAssumerWithWebIdentity(stsOptions, getCustomizableStsClientCtor(import_STSClient2.STSClient, stsPlugins)), \"getDefaultRoleAssumerWithWebIdentity\");\nvar decorateDefaultCredentialProvider = /* @__PURE__ */ __name((provider) => (input) => provider({\n roleAssumer: getDefaultRoleAssumer2(input),\n roleAssumerWithWebIdentity: getDefaultRoleAssumerWithWebIdentity2(input),\n ...input\n}), \"decorateDefaultCredentialProvider\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n STSServiceException,\n __Client,\n STSClient,\n STS,\n $Command,\n AssumeRoleCommand,\n AssumeRoleWithSAMLCommand,\n AssumeRoleWithWebIdentityCommand,\n DecodeAuthorizationMessageCommand,\n GetAccessKeyInfoCommand,\n GetCallerIdentityCommand,\n GetFederationTokenCommand,\n GetSessionTokenCommand,\n ExpiredTokenException,\n MalformedPolicyDocumentException,\n PackedPolicyTooLargeException,\n RegionDisabledException,\n IDPRejectedClaimException,\n InvalidIdentityTokenException,\n IDPCommunicationErrorException,\n InvalidAuthorizationMessageException,\n CredentialsFilterSensitiveLog,\n AssumeRoleResponseFilterSensitiveLog,\n AssumeRoleWithSAMLRequestFilterSensitiveLog,\n AssumeRoleWithSAMLResponseFilterSensitiveLog,\n AssumeRoleWithWebIdentityRequestFilterSensitiveLog,\n AssumeRoleWithWebIdentityResponseFilterSensitiveLog,\n GetFederationTokenResponseFilterSensitiveLog,\n GetSessionTokenResponseFilterSensitiveLog,\n getDefaultRoleAssumer,\n getDefaultRoleAssumerWithWebIdentity,\n decorateDefaultCredentialProvider\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst tslib_1 = require(\"tslib\");\nconst package_json_1 = tslib_1.__importDefault(require(\"../package.json\"));\nconst core_1 = require(\"@aws-sdk/core\");\nconst credential_provider_node_1 = require(\"@aws-sdk/credential-provider-node\");\nconst util_user_agent_node_1 = require(\"@aws-sdk/util-user-agent-node\");\nconst config_resolver_1 = require(\"@smithy/config-resolver\");\nconst core_2 = require(\"@smithy/core\");\nconst hash_node_1 = require(\"@smithy/hash-node\");\nconst middleware_retry_1 = require(\"@smithy/middleware-retry\");\nconst node_config_provider_1 = require(\"@smithy/node-config-provider\");\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst util_body_length_node_1 = require(\"@smithy/util-body-length-node\");\nconst util_retry_1 = require(\"@smithy/util-retry\");\nconst runtimeConfig_shared_1 = require(\"./runtimeConfig.shared\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst util_defaults_mode_node_1 = require(\"@smithy/util-defaults-mode-node\");\nconst smithy_client_2 = require(\"@smithy/smithy-client\");\nconst getRuntimeConfig = (config) => {\n (0, smithy_client_2.emitWarningIfUnsupportedVersion)(process.version);\n const defaultsMode = (0, util_defaults_mode_node_1.resolveDefaultsModeConfig)(config);\n const defaultConfigProvider = () => defaultsMode().then(smithy_client_1.loadConfigsForDefaultMode);\n const clientSharedValues = (0, runtimeConfig_shared_1.getRuntimeConfig)(config);\n (0, core_1.emitWarningIfUnsupportedVersion)(process.version);\n return {\n ...clientSharedValues,\n ...config,\n runtime: \"node\",\n defaultsMode,\n bodyLengthChecker: config?.bodyLengthChecker ?? util_body_length_node_1.calculateBodyLength,\n credentialDefaultProvider: config?.credentialDefaultProvider ?? credential_provider_node_1.defaultProvider,\n defaultUserAgentProvider: config?.defaultUserAgentProvider ??\n (0, util_user_agent_node_1.defaultUserAgent)({ serviceId: clientSharedValues.serviceId, clientVersion: package_json_1.default.version }),\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\") ||\n (async (idProps) => await (0, credential_provider_node_1.defaultProvider)(idProps?.__config || {})()),\n signer: new core_1.AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new core_2.NoAuthSigner(),\n },\n ],\n maxAttempts: config?.maxAttempts ?? (0, node_config_provider_1.loadConfig)(middleware_retry_1.NODE_MAX_ATTEMPT_CONFIG_OPTIONS),\n region: config?.region ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_REGION_CONFIG_OPTIONS, config_resolver_1.NODE_REGION_CONFIG_FILE_OPTIONS),\n requestHandler: node_http_handler_1.NodeHttpHandler.create(config?.requestHandler ?? defaultConfigProvider),\n retryMode: config?.retryMode ??\n (0, node_config_provider_1.loadConfig)({\n ...middleware_retry_1.NODE_RETRY_MODE_CONFIG_OPTIONS,\n default: async () => (await defaultConfigProvider()).retryMode || util_retry_1.DEFAULT_RETRY_MODE,\n }),\n sha256: config?.sha256 ?? hash_node_1.Hash.bind(null, \"sha256\"),\n streamCollector: config?.streamCollector ?? node_http_handler_1.streamCollector,\n useDualstackEndpoint: config?.useDualstackEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS),\n useFipsEndpoint: config?.useFipsEndpoint ?? (0, node_config_provider_1.loadConfig)(config_resolver_1.NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS),\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getRuntimeConfig = void 0;\nconst core_1 = require(\"@aws-sdk/core\");\nconst core_2 = require(\"@smithy/core\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst url_parser_1 = require(\"@smithy/url-parser\");\nconst util_base64_1 = require(\"@smithy/util-base64\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst httpAuthSchemeProvider_1 = require(\"./auth/httpAuthSchemeProvider\");\nconst endpointResolver_1 = require(\"./endpoint/endpointResolver\");\nconst getRuntimeConfig = (config) => {\n return {\n apiVersion: \"2011-06-15\",\n base64Decoder: config?.base64Decoder ?? util_base64_1.fromBase64,\n base64Encoder: config?.base64Encoder ?? util_base64_1.toBase64,\n disableHostPrefix: config?.disableHostPrefix ?? false,\n endpointProvider: config?.endpointProvider ?? endpointResolver_1.defaultEndpointResolver,\n extensions: config?.extensions ?? [],\n httpAuthSchemeProvider: config?.httpAuthSchemeProvider ?? httpAuthSchemeProvider_1.defaultSTSHttpAuthSchemeProvider,\n httpAuthSchemes: config?.httpAuthSchemes ?? [\n {\n schemeId: \"aws.auth#sigv4\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"aws.auth#sigv4\"),\n signer: new core_1.AwsSdkSigV4Signer(),\n },\n {\n schemeId: \"smithy.api#noAuth\",\n identityProvider: (ipc) => ipc.getIdentityProvider(\"smithy.api#noAuth\") || (async () => ({})),\n signer: new core_2.NoAuthSigner(),\n },\n ],\n logger: config?.logger ?? new smithy_client_1.NoOpLogger(),\n serviceId: config?.serviceId ?? \"STS\",\n urlParser: config?.urlParser ?? url_parser_1.parseUrl,\n utf8Decoder: config?.utf8Decoder ?? util_utf8_1.fromUtf8,\n utf8Encoder: config?.utf8Encoder ?? util_utf8_1.toUtf8,\n };\n};\nexports.getRuntimeConfig = getRuntimeConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.resolveRuntimeExtensions = void 0;\nconst region_config_resolver_1 = require(\"@aws-sdk/region-config-resolver\");\nconst protocol_http_1 = require(\"@smithy/protocol-http\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst httpAuthExtensionConfiguration_1 = require(\"./auth/httpAuthExtensionConfiguration\");\nconst asPartial = (t) => t;\nconst resolveRuntimeExtensions = (runtimeConfig, extensions) => {\n const extensionConfiguration = {\n ...asPartial((0, region_config_resolver_1.getAwsRegionExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, smithy_client_1.getDefaultExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, protocol_http_1.getHttpHandlerExtensionConfiguration)(runtimeConfig)),\n ...asPartial((0, httpAuthExtensionConfiguration_1.getHttpAuthExtensionConfiguration)(runtimeConfig)),\n };\n extensions.forEach((extension) => extension.configure(extensionConfiguration));\n return {\n ...runtimeConfig,\n ...(0, region_config_resolver_1.resolveAwsRegionExtensionConfiguration)(extensionConfiguration),\n ...(0, smithy_client_1.resolveDefaultRuntimeConfig)(extensionConfiguration),\n ...(0, protocol_http_1.resolveHttpHandlerRuntimeConfig)(extensionConfiguration),\n ...(0, httpAuthExtensionConfiguration_1.resolveHttpAuthRuntimeConfig)(extensionConfiguration),\n };\n};\nexports.resolveRuntimeExtensions = resolveRuntimeExtensions;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AWSSDKSigV4Signer: () => AWSSDKSigV4Signer,\n AwsSdkSigV4Signer: () => AwsSdkSigV4Signer,\n _toBool: () => _toBool,\n _toNum: () => _toNum,\n _toStr: () => _toStr,\n awsExpectUnion: () => awsExpectUnion,\n emitWarningIfUnsupportedVersion: () => emitWarningIfUnsupportedVersion,\n loadRestJsonErrorCode: () => loadRestJsonErrorCode,\n loadRestXmlErrorCode: () => loadRestXmlErrorCode,\n parseJsonBody: () => parseJsonBody,\n parseJsonErrorBody: () => parseJsonErrorBody,\n parseXmlBody: () => parseXmlBody,\n parseXmlErrorBody: () => parseXmlErrorBody,\n resolveAWSSDKSigV4Config: () => resolveAWSSDKSigV4Config,\n resolveAwsSdkSigV4Config: () => resolveAwsSdkSigV4Config\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/client/emitWarningIfUnsupportedVersion.ts\nvar warningEmitted = false;\nvar emitWarningIfUnsupportedVersion = /* @__PURE__ */ __name((version) => {\n if (version && !warningEmitted && parseInt(version.substring(1, version.indexOf(\".\"))) < 16) {\n warningEmitted = true;\n }\n}, \"emitWarningIfUnsupportedVersion\");\n\n// src/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.ts\n\n\n// src/httpAuthSchemes/utils/getDateHeader.ts\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar getDateHeader = /* @__PURE__ */ __name((response) => {\n var _a, _b;\n return import_protocol_http.HttpResponse.isInstance(response) ? ((_a = response.headers) == null ? void 0 : _a.date) ?? ((_b = response.headers) == null ? void 0 : _b.Date) : void 0;\n}, \"getDateHeader\");\n\n// src/httpAuthSchemes/utils/getSkewCorrectedDate.ts\nvar getSkewCorrectedDate = /* @__PURE__ */ __name((systemClockOffset) => new Date(Date.now() + systemClockOffset), \"getSkewCorrectedDate\");\n\n// src/httpAuthSchemes/utils/isClockSkewed.ts\nvar isClockSkewed = /* @__PURE__ */ __name((clockTime, systemClockOffset) => Math.abs(getSkewCorrectedDate(systemClockOffset).getTime() - clockTime) >= 3e5, \"isClockSkewed\");\n\n// src/httpAuthSchemes/utils/getUpdatedSystemClockOffset.ts\nvar getUpdatedSystemClockOffset = /* @__PURE__ */ __name((clockTime, currentSystemClockOffset) => {\n const clockTimeInMs = Date.parse(clockTime);\n if (isClockSkewed(clockTimeInMs, currentSystemClockOffset)) {\n return clockTimeInMs - Date.now();\n }\n return currentSystemClockOffset;\n}, \"getUpdatedSystemClockOffset\");\n\n// src/httpAuthSchemes/aws_sdk/AwsSdkSigV4Signer.ts\nvar throwSigningPropertyError = /* @__PURE__ */ __name((name, property) => {\n if (!property) {\n throw new Error(`Property \\`${name}\\` is not resolved for AWS SDK SigV4Auth`);\n }\n return property;\n}, \"throwSigningPropertyError\");\nvar validateSigningProperties = /* @__PURE__ */ __name(async (signingProperties) => {\n var _a, _b, _c;\n const context = throwSigningPropertyError(\n \"context\",\n signingProperties.context\n );\n const config = throwSigningPropertyError(\"config\", signingProperties.config);\n const authScheme = (_c = (_b = (_a = context.endpointV2) == null ? void 0 : _a.properties) == null ? void 0 : _b.authSchemes) == null ? void 0 : _c[0];\n const signerFunction = throwSigningPropertyError(\n \"signer\",\n config.signer\n );\n const signer = await signerFunction(authScheme);\n const signingRegion = signingProperties == null ? void 0 : signingProperties.signingRegion;\n const signingName = signingProperties == null ? void 0 : signingProperties.signingName;\n return {\n config,\n signer,\n signingRegion,\n signingName\n };\n}, \"validateSigningProperties\");\nvar _AwsSdkSigV4Signer = class _AwsSdkSigV4Signer {\n async sign(httpRequest, identity, signingProperties) {\n if (!import_protocol_http.HttpRequest.isInstance(httpRequest)) {\n throw new Error(\"The request is not an instance of `HttpRequest` and cannot be signed\");\n }\n const { config, signer, signingRegion, signingName } = await validateSigningProperties(signingProperties);\n const signedRequest = await signer.sign(httpRequest, {\n signingDate: getSkewCorrectedDate(config.systemClockOffset),\n signingRegion,\n signingService: signingName\n });\n return signedRequest;\n }\n errorHandler(signingProperties) {\n return (error) => {\n const serverTime = error.ServerTime ?? getDateHeader(error.$response);\n if (serverTime) {\n const config = throwSigningPropertyError(\"config\", signingProperties.config);\n const initialSystemClockOffset = config.systemClockOffset;\n config.systemClockOffset = getUpdatedSystemClockOffset(serverTime, config.systemClockOffset);\n const clockSkewCorrected = config.systemClockOffset !== initialSystemClockOffset;\n if (clockSkewCorrected && error.$metadata) {\n error.$metadata.clockSkewCorrected = true;\n }\n }\n throw error;\n };\n }\n successHandler(httpResponse, signingProperties) {\n const dateHeader = getDateHeader(httpResponse);\n if (dateHeader) {\n const config = throwSigningPropertyError(\"config\", signingProperties.config);\n config.systemClockOffset = getUpdatedSystemClockOffset(dateHeader, config.systemClockOffset);\n }\n }\n};\n__name(_AwsSdkSigV4Signer, \"AwsSdkSigV4Signer\");\nvar AwsSdkSigV4Signer = _AwsSdkSigV4Signer;\nvar AWSSDKSigV4Signer = AwsSdkSigV4Signer;\n\n// src/httpAuthSchemes/aws_sdk/resolveAwsSdkSigV4Config.ts\nvar import_core = require(\"@smithy/core\");\nvar import_signature_v4 = require(\"@smithy/signature-v4\");\nvar resolveAwsSdkSigV4Config = /* @__PURE__ */ __name((config) => {\n let normalizedCreds;\n if (config.credentials) {\n normalizedCreds = (0, import_core.memoizeIdentityProvider)(config.credentials, import_core.isIdentityExpired, import_core.doesIdentityRequireRefresh);\n }\n if (!normalizedCreds) {\n if (config.credentialDefaultProvider) {\n normalizedCreds = (0, import_core.normalizeProvider)(\n config.credentialDefaultProvider(\n Object.assign({}, config, {\n parentClientConfig: config\n })\n )\n );\n } else {\n normalizedCreds = /* @__PURE__ */ __name(async () => {\n throw new Error(\"`credentials` is missing\");\n }, \"normalizedCreds\");\n }\n }\n const {\n // Default for signingEscapePath\n signingEscapePath = true,\n // Default for systemClockOffset\n systemClockOffset = config.systemClockOffset || 0,\n // No default for sha256 since it is platform dependent\n sha256\n } = config;\n let signer;\n if (config.signer) {\n signer = (0, import_core.normalizeProvider)(config.signer);\n } else if (config.regionInfoProvider) {\n signer = /* @__PURE__ */ __name(() => (0, import_core.normalizeProvider)(config.region)().then(\n async (region) => [\n await config.regionInfoProvider(region, {\n useFipsEndpoint: await config.useFipsEndpoint(),\n useDualstackEndpoint: await config.useDualstackEndpoint()\n }) || {},\n region\n ]\n ).then(([regionInfo, region]) => {\n const { signingRegion, signingService } = regionInfo;\n config.signingRegion = config.signingRegion || signingRegion || region;\n config.signingName = config.signingName || signingService || config.serviceId;\n const params = {\n ...config,\n credentials: normalizedCreds,\n region: config.signingRegion,\n service: config.signingName,\n sha256,\n uriEscapePath: signingEscapePath\n };\n const SignerCtor = config.signerConstructor || import_signature_v4.SignatureV4;\n return new SignerCtor(params);\n }), \"signer\");\n } else {\n signer = /* @__PURE__ */ __name(async (authScheme) => {\n authScheme = Object.assign(\n {},\n {\n name: \"sigv4\",\n signingName: config.signingName || config.defaultSigningName,\n signingRegion: await (0, import_core.normalizeProvider)(config.region)(),\n properties: {}\n },\n authScheme\n );\n const signingRegion = authScheme.signingRegion;\n const signingService = authScheme.signingName;\n config.signingRegion = config.signingRegion || signingRegion;\n config.signingName = config.signingName || signingService || config.serviceId;\n const params = {\n ...config,\n credentials: normalizedCreds,\n region: config.signingRegion,\n service: config.signingName,\n sha256,\n uriEscapePath: signingEscapePath\n };\n const SignerCtor = config.signerConstructor || import_signature_v4.SignatureV4;\n return new SignerCtor(params);\n }, \"signer\");\n }\n return {\n ...config,\n systemClockOffset,\n signingEscapePath,\n credentials: normalizedCreds,\n signer\n };\n}, \"resolveAwsSdkSigV4Config\");\nvar resolveAWSSDKSigV4Config = resolveAwsSdkSigV4Config;\n\n// src/protocols/coercing-serializers.ts\nvar _toStr = /* @__PURE__ */ __name((val) => {\n if (val == null) {\n return val;\n }\n if (typeof val === \"number\" || typeof val === \"bigint\") {\n const warning = new Error(`Received number ${val} where a string was expected.`);\n warning.name = \"Warning\";\n console.warn(warning);\n return String(val);\n }\n if (typeof val === \"boolean\") {\n const warning = new Error(`Received boolean ${val} where a string was expected.`);\n warning.name = \"Warning\";\n console.warn(warning);\n return String(val);\n }\n return val;\n}, \"_toStr\");\nvar _toBool = /* @__PURE__ */ __name((val) => {\n if (val == null) {\n return val;\n }\n if (typeof val === \"number\") {\n }\n if (typeof val === \"string\") {\n const lowercase = val.toLowerCase();\n if (val !== \"\" && lowercase !== \"false\" && lowercase !== \"true\") {\n const warning = new Error(`Received string \"${val}\" where a boolean was expected.`);\n warning.name = \"Warning\";\n console.warn(warning);\n }\n return val !== \"\" && lowercase !== \"false\";\n }\n return val;\n}, \"_toBool\");\nvar _toNum = /* @__PURE__ */ __name((val) => {\n if (val == null) {\n return val;\n }\n if (typeof val === \"boolean\") {\n }\n if (typeof val === \"string\") {\n const num = Number(val);\n if (num.toString() !== val) {\n const warning = new Error(`Received string \"${val}\" where a number was expected.`);\n warning.name = \"Warning\";\n console.warn(warning);\n return val;\n }\n return num;\n }\n return val;\n}, \"_toNum\");\n\n// src/protocols/json/awsExpectUnion.ts\nvar import_smithy_client = require(\"@smithy/smithy-client\");\nvar awsExpectUnion = /* @__PURE__ */ __name((value) => {\n if (value == null) {\n return void 0;\n }\n if (typeof value === \"object\" && \"__type\" in value) {\n delete value.__type;\n }\n return (0, import_smithy_client.expectUnion)(value);\n}, \"awsExpectUnion\");\n\n// src/protocols/common.ts\n\nvar collectBodyString = /* @__PURE__ */ __name((streamBody, context) => (0, import_smithy_client.collectBody)(streamBody, context).then((body) => context.utf8Encoder(body)), \"collectBodyString\");\n\n// src/protocols/json/parseJsonBody.ts\nvar parseJsonBody = /* @__PURE__ */ __name((streamBody, context) => collectBodyString(streamBody, context).then((encoded) => {\n if (encoded.length) {\n try {\n return JSON.parse(encoded);\n } catch (e) {\n if ((e == null ? void 0 : e.name) === \"SyntaxError\") {\n Object.defineProperty(e, \"$responseBodyText\", {\n value: encoded\n });\n }\n throw e;\n }\n }\n return {};\n}), \"parseJsonBody\");\nvar parseJsonErrorBody = /* @__PURE__ */ __name(async (errorBody, context) => {\n const value = await parseJsonBody(errorBody, context);\n value.message = value.message ?? value.Message;\n return value;\n}, \"parseJsonErrorBody\");\nvar loadRestJsonErrorCode = /* @__PURE__ */ __name((output, data) => {\n const findKey = /* @__PURE__ */ __name((object, key) => Object.keys(object).find((k) => k.toLowerCase() === key.toLowerCase()), \"findKey\");\n const sanitizeErrorCode = /* @__PURE__ */ __name((rawValue) => {\n let cleanValue = rawValue;\n if (typeof cleanValue === \"number\") {\n cleanValue = cleanValue.toString();\n }\n if (cleanValue.indexOf(\",\") >= 0) {\n cleanValue = cleanValue.split(\",\")[0];\n }\n if (cleanValue.indexOf(\":\") >= 0) {\n cleanValue = cleanValue.split(\":\")[0];\n }\n if (cleanValue.indexOf(\"#\") >= 0) {\n cleanValue = cleanValue.split(\"#\")[1];\n }\n return cleanValue;\n }, \"sanitizeErrorCode\");\n const headerKey = findKey(output.headers, \"x-amzn-errortype\");\n if (headerKey !== void 0) {\n return sanitizeErrorCode(output.headers[headerKey]);\n }\n if (data.code !== void 0) {\n return sanitizeErrorCode(data.code);\n }\n if (data[\"__type\"] !== void 0) {\n return sanitizeErrorCode(data[\"__type\"]);\n }\n}, \"loadRestJsonErrorCode\");\n\n// src/protocols/xml/parseXmlBody.ts\n\nvar import_fast_xml_parser = require(\"fast-xml-parser\");\nvar parseXmlBody = /* @__PURE__ */ __name((streamBody, context) => collectBodyString(streamBody, context).then((encoded) => {\n if (encoded.length) {\n const parser = new import_fast_xml_parser.XMLParser({\n attributeNamePrefix: \"\",\n htmlEntities: true,\n ignoreAttributes: false,\n ignoreDeclaration: true,\n parseTagValue: false,\n trimValues: false,\n tagValueProcessor: (_, val) => val.trim() === \"\" && val.includes(\"\\n\") ? \"\" : void 0\n });\n parser.addEntity(\"#xD\", \"\\r\");\n parser.addEntity(\"#10\", \"\\n\");\n let parsedObj;\n try {\n parsedObj = parser.parse(encoded, true);\n } catch (e) {\n if (e && typeof e === \"object\") {\n Object.defineProperty(e, \"$responseBodyText\", {\n value: encoded\n });\n }\n throw e;\n }\n const textNodeName = \"#text\";\n const key = Object.keys(parsedObj)[0];\n const parsedObjToReturn = parsedObj[key];\n if (parsedObjToReturn[textNodeName]) {\n parsedObjToReturn[key] = parsedObjToReturn[textNodeName];\n delete parsedObjToReturn[textNodeName];\n }\n return (0, import_smithy_client.getValueFromTextNode)(parsedObjToReturn);\n }\n return {};\n}), \"parseXmlBody\");\nvar parseXmlErrorBody = /* @__PURE__ */ __name(async (errorBody, context) => {\n const value = await parseXmlBody(errorBody, context);\n if (value.Error) {\n value.Error.message = value.Error.message ?? value.Error.Message;\n }\n return value;\n}, \"parseXmlErrorBody\");\nvar loadRestXmlErrorCode = /* @__PURE__ */ __name((output, data) => {\n var _a;\n if (((_a = data == null ? void 0 : data.Error) == null ? void 0 : _a.Code) !== void 0) {\n return data.Error.Code;\n }\n if ((data == null ? void 0 : data.Code) !== void 0) {\n return data.Code;\n }\n if (output.statusCode == 404) {\n return \"NotFound\";\n }\n}, \"loadRestXmlErrorCode\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n emitWarningIfUnsupportedVersion,\n AwsSdkSigV4Signer,\n AWSSDKSigV4Signer,\n resolveAwsSdkSigV4Config,\n resolveAWSSDKSigV4Config,\n _toStr,\n _toBool,\n _toNum,\n awsExpectUnion,\n parseJsonBody,\n parseJsonErrorBody,\n loadRestJsonErrorCode,\n parseXmlBody,\n parseXmlErrorBody,\n loadRestXmlErrorCode\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/loadCognitoIdentity.ts\nvar loadCognitoIdentity_exports = {};\n__export(loadCognitoIdentity_exports, {\n CognitoIdentityClient: () => import_client_cognito_identity.CognitoIdentityClient,\n GetCredentialsForIdentityCommand: () => import_client_cognito_identity.GetCredentialsForIdentityCommand,\n GetIdCommand: () => import_client_cognito_identity.GetIdCommand\n});\nvar import_client_cognito_identity;\nvar init_loadCognitoIdentity = __esm({\n \"src/loadCognitoIdentity.ts\"() {\n import_client_cognito_identity = require(\"@aws-sdk/client-cognito-identity\");\n }\n});\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromCognitoIdentity: () => fromCognitoIdentity,\n fromCognitoIdentityPool: () => fromCognitoIdentityPool\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromCognitoIdentity.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\n\n// src/resolveLogins.ts\nfunction resolveLogins(logins) {\n return Promise.all(\n Object.keys(logins).reduce((arr, name) => {\n const tokenOrProvider = logins[name];\n if (typeof tokenOrProvider === \"string\") {\n arr.push([name, tokenOrProvider]);\n } else {\n arr.push(tokenOrProvider().then((token) => [name, token]));\n }\n return arr;\n }, [])\n ).then(\n (resolvedPairs) => resolvedPairs.reduce((logins2, [key, value]) => {\n logins2[key] = value;\n return logins2;\n }, {})\n );\n}\n__name(resolveLogins, \"resolveLogins\");\n\n// src/fromCognitoIdentity.ts\nfunction fromCognitoIdentity(parameters) {\n return async () => {\n var _a, _b, _c;\n (_a = parameters.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-cognito-identity\", \"fromCognitoIdentity\");\n const { GetCredentialsForIdentityCommand: GetCredentialsForIdentityCommand2, CognitoIdentityClient: CognitoIdentityClient2 } = await Promise.resolve().then(() => (init_loadCognitoIdentity(), loadCognitoIdentity_exports));\n const {\n Credentials: {\n AccessKeyId = throwOnMissingAccessKeyId(),\n Expiration,\n SecretKey = throwOnMissingSecretKey(),\n SessionToken\n } = throwOnMissingCredentials()\n } = await (parameters.client ?? new CognitoIdentityClient2(\n Object.assign({}, parameters.clientConfig ?? {}, {\n region: ((_b = parameters.clientConfig) == null ? void 0 : _b.region) ?? ((_c = parameters.parentClientConfig) == null ? void 0 : _c.region)\n })\n )).send(\n new GetCredentialsForIdentityCommand2({\n CustomRoleArn: parameters.customRoleArn,\n IdentityId: parameters.identityId,\n Logins: parameters.logins ? await resolveLogins(parameters.logins) : void 0\n })\n );\n return {\n identityId: parameters.identityId,\n accessKeyId: AccessKeyId,\n secretAccessKey: SecretKey,\n sessionToken: SessionToken,\n expiration: Expiration\n };\n };\n}\n__name(fromCognitoIdentity, \"fromCognitoIdentity\");\nfunction throwOnMissingAccessKeyId() {\n throw new import_property_provider.CredentialsProviderError(\"Response from Amazon Cognito contained no access key ID\");\n}\n__name(throwOnMissingAccessKeyId, \"throwOnMissingAccessKeyId\");\nfunction throwOnMissingCredentials() {\n throw new import_property_provider.CredentialsProviderError(\"Response from Amazon Cognito contained no credentials\");\n}\n__name(throwOnMissingCredentials, \"throwOnMissingCredentials\");\nfunction throwOnMissingSecretKey() {\n throw new import_property_provider.CredentialsProviderError(\"Response from Amazon Cognito contained no secret key\");\n}\n__name(throwOnMissingSecretKey, \"throwOnMissingSecretKey\");\n\n// src/fromCognitoIdentityPool.ts\n\n\n// src/IndexedDbStorage.ts\nvar STORE_NAME = \"IdentityIds\";\nvar _IndexedDbStorage = class _IndexedDbStorage {\n constructor(dbName = \"aws:cognito-identity-ids\") {\n this.dbName = dbName;\n }\n getItem(key) {\n return this.withObjectStore(\"readonly\", (store) => {\n const req = store.get(key);\n return new Promise((resolve) => {\n req.onerror = () => resolve(null);\n req.onsuccess = () => resolve(req.result ? req.result.value : null);\n });\n }).catch(() => null);\n }\n removeItem(key) {\n return this.withObjectStore(\"readwrite\", (store) => {\n const req = store.delete(key);\n return new Promise((resolve, reject) => {\n req.onerror = () => reject(req.error);\n req.onsuccess = () => resolve();\n });\n });\n }\n setItem(id, value) {\n return this.withObjectStore(\"readwrite\", (store) => {\n const req = store.put({ id, value });\n return new Promise((resolve, reject) => {\n req.onerror = () => reject(req.error);\n req.onsuccess = () => resolve();\n });\n });\n }\n getDb() {\n const openDbRequest = self.indexedDB.open(this.dbName, 1);\n return new Promise((resolve, reject) => {\n openDbRequest.onsuccess = () => {\n resolve(openDbRequest.result);\n };\n openDbRequest.onerror = () => {\n reject(openDbRequest.error);\n };\n openDbRequest.onblocked = () => {\n reject(new Error(\"Unable to access DB\"));\n };\n openDbRequest.onupgradeneeded = () => {\n const db = openDbRequest.result;\n db.onerror = () => {\n reject(new Error(\"Failed to create object store\"));\n };\n db.createObjectStore(STORE_NAME, { keyPath: \"id\" });\n };\n });\n }\n withObjectStore(mode, action) {\n return this.getDb().then((db) => {\n const tx = db.transaction(STORE_NAME, mode);\n tx.oncomplete = () => db.close();\n return new Promise((resolve, reject) => {\n tx.onerror = () => reject(tx.error);\n resolve(action(tx.objectStore(STORE_NAME)));\n }).catch((err) => {\n db.close();\n throw err;\n });\n });\n }\n};\n__name(_IndexedDbStorage, \"IndexedDbStorage\");\nvar IndexedDbStorage = _IndexedDbStorage;\n\n// src/InMemoryStorage.ts\nvar _InMemoryStorage = class _InMemoryStorage {\n constructor(store = {}) {\n this.store = store;\n }\n getItem(key) {\n if (key in this.store) {\n return this.store[key];\n }\n return null;\n }\n removeItem(key) {\n delete this.store[key];\n }\n setItem(key, value) {\n this.store[key] = value;\n }\n};\n__name(_InMemoryStorage, \"InMemoryStorage\");\nvar InMemoryStorage = _InMemoryStorage;\n\n// src/localStorage.ts\nvar inMemoryStorage = new InMemoryStorage();\nfunction localStorage() {\n if (typeof self === \"object\" && self.indexedDB) {\n return new IndexedDbStorage();\n }\n if (typeof window === \"object\" && window.localStorage) {\n return window.localStorage;\n }\n return inMemoryStorage;\n}\n__name(localStorage, \"localStorage\");\n\n// src/fromCognitoIdentityPool.ts\nfunction fromCognitoIdentityPool({\n accountId,\n cache = localStorage(),\n client,\n clientConfig,\n customRoleArn,\n identityPoolId,\n logins,\n userIdentifier = !logins || Object.keys(logins).length === 0 ? \"ANONYMOUS\" : void 0,\n logger,\n parentClientConfig\n}) {\n logger == null ? void 0 : logger.debug(\"@aws-sdk/credential-provider-cognito-identity\", \"fromCognitoIdentity\");\n const cacheKey = userIdentifier ? `aws:cognito-identity-credentials:${identityPoolId}:${userIdentifier}` : void 0;\n let provider = /* @__PURE__ */ __name(async () => {\n const { GetIdCommand: GetIdCommand2, CognitoIdentityClient: CognitoIdentityClient2 } = await Promise.resolve().then(() => (init_loadCognitoIdentity(), loadCognitoIdentity_exports));\n const _client = client ?? new CognitoIdentityClient2(\n Object.assign({}, clientConfig ?? {}, { region: (clientConfig == null ? void 0 : clientConfig.region) ?? (parentClientConfig == null ? void 0 : parentClientConfig.region) })\n );\n let identityId = cacheKey && await cache.getItem(cacheKey);\n if (!identityId) {\n const { IdentityId = throwOnMissingId() } = await _client.send(\n new GetIdCommand2({\n AccountId: accountId,\n IdentityPoolId: identityPoolId,\n Logins: logins ? await resolveLogins(logins) : void 0\n })\n );\n identityId = IdentityId;\n if (cacheKey) {\n Promise.resolve(cache.setItem(cacheKey, identityId)).catch(() => {\n });\n }\n }\n provider = fromCognitoIdentity({\n client: _client,\n customRoleArn,\n logins,\n identityId\n });\n return provider();\n }, \"provider\");\n return () => provider().catch(async (err) => {\n if (cacheKey) {\n Promise.resolve(cache.removeItem(cacheKey)).catch(() => {\n });\n }\n throw err;\n });\n}\n__name(fromCognitoIdentityPool, \"fromCognitoIdentityPool\");\nfunction throwOnMissingId() {\n throw new import_property_provider.CredentialsProviderError(\"Response from Amazon Cognito contained no identity ID\");\n}\n__name(throwOnMissingId, \"throwOnMissingId\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromCognitoIdentity,\n fromCognitoIdentityPool\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n ENV_CREDENTIAL_SCOPE: () => ENV_CREDENTIAL_SCOPE,\n ENV_EXPIRATION: () => ENV_EXPIRATION,\n ENV_KEY: () => ENV_KEY,\n ENV_SECRET: () => ENV_SECRET,\n ENV_SESSION: () => ENV_SESSION,\n fromEnv: () => fromEnv\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromEnv.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar ENV_KEY = \"AWS_ACCESS_KEY_ID\";\nvar ENV_SECRET = \"AWS_SECRET_ACCESS_KEY\";\nvar ENV_SESSION = \"AWS_SESSION_TOKEN\";\nvar ENV_EXPIRATION = \"AWS_CREDENTIAL_EXPIRATION\";\nvar ENV_CREDENTIAL_SCOPE = \"AWS_CREDENTIAL_SCOPE\";\nvar fromEnv = /* @__PURE__ */ __name((init) => async () => {\n var _a;\n (_a = init == null ? void 0 : init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-env\", \"fromEnv\");\n const accessKeyId = process.env[ENV_KEY];\n const secretAccessKey = process.env[ENV_SECRET];\n const sessionToken = process.env[ENV_SESSION];\n const expiry = process.env[ENV_EXPIRATION];\n const credentialScope = process.env[ENV_CREDENTIAL_SCOPE];\n if (accessKeyId && secretAccessKey) {\n return {\n accessKeyId,\n secretAccessKey,\n ...sessionToken && { sessionToken },\n ...expiry && { expiration: new Date(expiry) },\n ...credentialScope && { credentialScope }\n };\n }\n throw new import_property_provider.CredentialsProviderError(\"Unable to find environment variable credentials.\");\n}, \"fromEnv\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n ENV_KEY,\n ENV_SECRET,\n ENV_SESSION,\n ENV_EXPIRATION,\n ENV_CREDENTIAL_SCOPE,\n fromEnv\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.checkUrl = void 0;\nconst property_provider_1 = require(\"@smithy/property-provider\");\nconst LOOPBACK_CIDR_IPv4 = \"127.0.0.0/8\";\nconst LOOPBACK_CIDR_IPv6 = \"::1/128\";\nconst ECS_CONTAINER_HOST = \"169.254.170.2\";\nconst EKS_CONTAINER_HOST_IPv4 = \"169.254.170.23\";\nconst EKS_CONTAINER_HOST_IPv6 = \"[fd00:ec2::23]\";\nconst checkUrl = (url) => {\n if (url.protocol === \"https:\") {\n return;\n }\n if (url.hostname === ECS_CONTAINER_HOST ||\n url.hostname === EKS_CONTAINER_HOST_IPv4 ||\n url.hostname === EKS_CONTAINER_HOST_IPv6) {\n return;\n }\n if (url.hostname.includes(\"[\")) {\n if (url.hostname === \"[::1]\" || url.hostname === \"[0000:0000:0000:0000:0000:0000:0000:0001]\") {\n return;\n }\n }\n else {\n if (url.hostname === \"localhost\") {\n return;\n }\n const ipComponents = url.hostname.split(\".\");\n const inRange = (component) => {\n const num = parseInt(component, 10);\n return 0 <= num && num <= 255;\n };\n if (ipComponents[0] === \"127\" &&\n inRange(ipComponents[1]) &&\n inRange(ipComponents[2]) &&\n inRange(ipComponents[3]) &&\n ipComponents.length === 4) {\n return;\n }\n }\n throw new property_provider_1.CredentialsProviderError(`URL not accepted. It must either be HTTPS or match one of the following:\n - loopback CIDR 127.0.0.0/8 or [::1/128]\n - ECS container host 169.254.170.2\n - EKS container host 169.254.170.23 or [fd00:ec2::23]`);\n};\nexports.checkUrl = checkUrl;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromHttp = void 0;\nconst tslib_1 = require(\"tslib\");\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst property_provider_1 = require(\"@smithy/property-provider\");\nconst promises_1 = tslib_1.__importDefault(require(\"fs/promises\"));\nconst checkUrl_1 = require(\"./checkUrl\");\nconst requestHelpers_1 = require(\"./requestHelpers\");\nconst retry_wrapper_1 = require(\"./retry-wrapper\");\nconst AWS_CONTAINER_CREDENTIALS_RELATIVE_URI = \"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI\";\nconst DEFAULT_LINK_LOCAL_HOST = \"http://169.254.170.2\";\nconst AWS_CONTAINER_CREDENTIALS_FULL_URI = \"AWS_CONTAINER_CREDENTIALS_FULL_URI\";\nconst AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE = \"AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE\";\nconst AWS_CONTAINER_AUTHORIZATION_TOKEN = \"AWS_CONTAINER_AUTHORIZATION_TOKEN\";\nconst fromHttp = (options) => {\n var _a, _b, _c, _d, _e, _f, _g, _h, _j;\n (_a = options.logger) === null || _a === void 0 ? void 0 : _a.debug(\"@aws-sdk/credential-provider-http\", \"fromHttp\");\n let host;\n const relative = (_b = options.awsContainerCredentialsRelativeUri) !== null && _b !== void 0 ? _b : process.env[AWS_CONTAINER_CREDENTIALS_RELATIVE_URI];\n const full = (_c = options.awsContainerCredentialsFullUri) !== null && _c !== void 0 ? _c : process.env[AWS_CONTAINER_CREDENTIALS_FULL_URI];\n const token = (_d = options.awsContainerAuthorizationToken) !== null && _d !== void 0 ? _d : process.env[AWS_CONTAINER_AUTHORIZATION_TOKEN];\n const tokenFile = (_e = options.awsContainerAuthorizationTokenFile) !== null && _e !== void 0 ? _e : process.env[AWS_CONTAINER_AUTHORIZATION_TOKEN_FILE];\n if (relative && full) {\n console.warn(\"AWS SDK HTTP credentials provider:\", \"you have set both awsContainerCredentialsRelativeUri and awsContainerCredentialsFullUri.\");\n console.warn(\"awsContainerCredentialsFullUri will take precedence.\");\n }\n if (token && tokenFile) {\n console.warn(\"AWS SDK HTTP credentials provider:\", \"you have set both awsContainerAuthorizationToken and awsContainerAuthorizationTokenFile.\");\n console.warn(\"awsContainerAuthorizationToken will take precedence.\");\n }\n if (full) {\n host = full;\n }\n else if (relative) {\n host = `${DEFAULT_LINK_LOCAL_HOST}${relative}`;\n }\n else {\n throw new property_provider_1.CredentialsProviderError(`No HTTP credential provider host provided.\nSet AWS_CONTAINER_CREDENTIALS_FULL_URI or AWS_CONTAINER_CREDENTIALS_RELATIVE_URI.`);\n }\n const url = new URL(host);\n (0, checkUrl_1.checkUrl)(url);\n const requestHandler = new node_http_handler_1.NodeHttpHandler({\n requestTimeout: (_f = options.timeout) !== null && _f !== void 0 ? _f : 1000,\n connectionTimeout: (_g = options.timeout) !== null && _g !== void 0 ? _g : 1000,\n });\n return (0, retry_wrapper_1.retryWrapper)(async () => {\n const request = (0, requestHelpers_1.createGetRequest)(url);\n if (token) {\n request.headers.Authorization = token;\n }\n else if (tokenFile) {\n request.headers.Authorization = (await promises_1.default.readFile(tokenFile)).toString();\n }\n try {\n const result = await requestHandler.handle(request);\n return (0, requestHelpers_1.getCredentials)(result.response);\n }\n catch (e) {\n throw new property_provider_1.CredentialsProviderError(String(e));\n }\n }, (_h = options.maxRetries) !== null && _h !== void 0 ? _h : 3, (_j = options.timeout) !== null && _j !== void 0 ? _j : 1000);\n};\nexports.fromHttp = fromHttp;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getCredentials = exports.createGetRequest = void 0;\nconst property_provider_1 = require(\"@smithy/property-provider\");\nconst protocol_http_1 = require(\"@smithy/protocol-http\");\nconst smithy_client_1 = require(\"@smithy/smithy-client\");\nconst util_stream_1 = require(\"@smithy/util-stream\");\nfunction createGetRequest(url) {\n return new protocol_http_1.HttpRequest({\n protocol: url.protocol,\n hostname: url.hostname,\n port: Number(url.port),\n path: url.pathname,\n query: Array.from(url.searchParams.entries()).reduce((acc, [k, v]) => {\n acc[k] = v;\n return acc;\n }, {}),\n fragment: url.hash,\n });\n}\nexports.createGetRequest = createGetRequest;\nasync function getCredentials(response) {\n var _a, _b;\n const contentType = (_b = (_a = response === null || response === void 0 ? void 0 : response.headers[\"content-type\"]) !== null && _a !== void 0 ? _a : response === null || response === void 0 ? void 0 : response.headers[\"Content-Type\"]) !== null && _b !== void 0 ? _b : \"\";\n if (!contentType.includes(\"json\")) {\n console.warn(\"HTTP credential provider response header content-type was not application/json. Observed: \" + contentType + \".\");\n }\n const stream = (0, util_stream_1.sdkStreamMixin)(response.body);\n const str = await stream.transformToString();\n if (response.statusCode === 200) {\n const parsed = JSON.parse(str);\n if (typeof parsed.AccessKeyId !== \"string\" ||\n typeof parsed.SecretAccessKey !== \"string\" ||\n typeof parsed.Token !== \"string\" ||\n typeof parsed.Expiration !== \"string\") {\n throw new property_provider_1.CredentialsProviderError(\"HTTP credential provider response not of the required format, an object matching: \" +\n \"{ AccessKeyId: string, SecretAccessKey: string, Token: string, Expiration: string(rfc3339) }\");\n }\n return {\n accessKeyId: parsed.AccessKeyId,\n secretAccessKey: parsed.SecretAccessKey,\n sessionToken: parsed.Token,\n expiration: (0, smithy_client_1.parseRfc3339DateTime)(parsed.Expiration),\n };\n }\n if (response.statusCode >= 400 && response.statusCode < 500) {\n let parsedBody = {};\n try {\n parsedBody = JSON.parse(str);\n }\n catch (e) { }\n throw Object.assign(new property_provider_1.CredentialsProviderError(`Server responded with status: ${response.statusCode}`), {\n Code: parsedBody.Code,\n Message: parsedBody.Message,\n });\n }\n throw new property_provider_1.CredentialsProviderError(`Server responded with status: ${response.statusCode}`);\n}\nexports.getCredentials = getCredentials;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.retryWrapper = void 0;\nconst retryWrapper = (toRetry, maxRetries, delayMs) => {\n return async () => {\n for (let i = 0; i < maxRetries; ++i) {\n try {\n return await toRetry();\n }\n catch (e) {\n await new Promise((resolve) => setTimeout(resolve, delayMs));\n }\n }\n return await toRetry();\n };\n};\nexports.retryWrapper = retryWrapper;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromHttp = void 0;\nvar fromHttp_1 = require(\"./fromHttp/fromHttp\");\nObject.defineProperty(exports, \"fromHttp\", { enumerable: true, get: function () { return fromHttp_1.fromHttp; } });\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromIni: () => fromIni\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromIni.ts\n\n\n// src/resolveProfileData.ts\n\n\n// src/resolveAssumeRoleCredentials.ts\n\nvar import_shared_ini_file_loader = require(\"@smithy/shared-ini-file-loader\");\n\n// src/resolveCredentialSource.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar resolveCredentialSource = /* @__PURE__ */ __name((credentialSource, profileName) => {\n const sourceProvidersMap = {\n EcsContainer: (options) => Promise.resolve().then(() => __toESM(require(\"@smithy/credential-provider-imds\"))).then(({ fromContainerMetadata }) => fromContainerMetadata(options)),\n Ec2InstanceMetadata: (options) => Promise.resolve().then(() => __toESM(require(\"@smithy/credential-provider-imds\"))).then(({ fromInstanceMetadata }) => fromInstanceMetadata(options)),\n Environment: (options) => Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-env\"))).then(({ fromEnv }) => fromEnv(options))\n };\n if (credentialSource in sourceProvidersMap) {\n return sourceProvidersMap[credentialSource];\n } else {\n throw new import_property_provider.CredentialsProviderError(\n `Unsupported credential source in profile ${profileName}. Got ${credentialSource}, expected EcsContainer or Ec2InstanceMetadata or Environment.`\n );\n }\n}, \"resolveCredentialSource\");\n\n// src/resolveAssumeRoleCredentials.ts\nvar isAssumeRoleProfile = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === \"object\" && typeof arg.role_arn === \"string\" && [\"undefined\", \"string\"].indexOf(typeof arg.role_session_name) > -1 && [\"undefined\", \"string\"].indexOf(typeof arg.external_id) > -1 && [\"undefined\", \"string\"].indexOf(typeof arg.mfa_serial) > -1 && (isAssumeRoleWithSourceProfile(arg) || isAssumeRoleWithProviderProfile(arg)), \"isAssumeRoleProfile\");\nvar isAssumeRoleWithSourceProfile = /* @__PURE__ */ __name((arg) => typeof arg.source_profile === \"string\" && typeof arg.credential_source === \"undefined\", \"isAssumeRoleWithSourceProfile\");\nvar isAssumeRoleWithProviderProfile = /* @__PURE__ */ __name((arg) => typeof arg.credential_source === \"string\" && typeof arg.source_profile === \"undefined\", \"isAssumeRoleWithProviderProfile\");\nvar resolveAssumeRoleCredentials = /* @__PURE__ */ __name(async (profileName, profiles, options, visitedProfiles = {}) => {\n var _a;\n (_a = options.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-ini\", \"resolveAssumeRoleCredentials (STS)\");\n const data = profiles[profileName];\n if (!options.roleAssumer) {\n const { getDefaultRoleAssumer } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/client-sts\")));\n options.roleAssumer = getDefaultRoleAssumer(\n {\n ...options.clientConfig,\n credentialProviderLogger: options.logger,\n parentClientConfig: options == null ? void 0 : options.parentClientConfig\n },\n options.clientPlugins\n );\n }\n const { source_profile } = data;\n if (source_profile && source_profile in visitedProfiles) {\n throw new import_property_provider.CredentialsProviderError(\n `Detected a cycle attempting to resolve credentials for profile ${(0, import_shared_ini_file_loader.getProfileName)(options)}. Profiles visited: ` + Object.keys(visitedProfiles).join(\", \"),\n false\n );\n }\n const sourceCredsProvider = source_profile ? resolveProfileData(source_profile, profiles, options, {\n ...visitedProfiles,\n [source_profile]: true\n }) : (await resolveCredentialSource(data.credential_source, profileName)(options))();\n const params = {\n RoleArn: data.role_arn,\n RoleSessionName: data.role_session_name || `aws-sdk-js-${Date.now()}`,\n ExternalId: data.external_id,\n DurationSeconds: parseInt(data.duration_seconds || \"3600\", 10)\n };\n const { mfa_serial } = data;\n if (mfa_serial) {\n if (!options.mfaCodeProvider) {\n throw new import_property_provider.CredentialsProviderError(\n `Profile ${profileName} requires multi-factor authentication, but no MFA code callback was provided.`,\n false\n );\n }\n params.SerialNumber = mfa_serial;\n params.TokenCode = await options.mfaCodeProvider(mfa_serial);\n }\n const sourceCreds = await sourceCredsProvider;\n return options.roleAssumer(sourceCreds, params);\n}, \"resolveAssumeRoleCredentials\");\n\n// src/resolveProcessCredentials.ts\nvar isProcessProfile = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === \"object\" && typeof arg.credential_process === \"string\", \"isProcessProfile\");\nvar resolveProcessCredentials = /* @__PURE__ */ __name(async (options, profile) => Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-process\"))).then(\n ({ fromProcess }) => fromProcess({\n ...options,\n profile\n })()\n), \"resolveProcessCredentials\");\n\n// src/resolveSsoCredentials.ts\nvar resolveSsoCredentials = /* @__PURE__ */ __name(async (profile, options = {}) => {\n const { fromSSO } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-sso\")));\n return fromSSO({\n profile,\n logger: options.logger\n })();\n}, \"resolveSsoCredentials\");\nvar isSsoProfile = /* @__PURE__ */ __name((arg) => arg && (typeof arg.sso_start_url === \"string\" || typeof arg.sso_account_id === \"string\" || typeof arg.sso_session === \"string\" || typeof arg.sso_region === \"string\" || typeof arg.sso_role_name === \"string\"), \"isSsoProfile\");\n\n// src/resolveStaticCredentials.ts\nvar isStaticCredsProfile = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === \"object\" && typeof arg.aws_access_key_id === \"string\" && typeof arg.aws_secret_access_key === \"string\" && [\"undefined\", \"string\"].indexOf(typeof arg.aws_session_token) > -1, \"isStaticCredsProfile\");\nvar resolveStaticCredentials = /* @__PURE__ */ __name((profile, options) => {\n var _a;\n (_a = options == null ? void 0 : options.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-ini\", \"resolveStaticCredentials\");\n return Promise.resolve({\n accessKeyId: profile.aws_access_key_id,\n secretAccessKey: profile.aws_secret_access_key,\n sessionToken: profile.aws_session_token,\n credentialScope: profile.aws_credential_scope\n });\n}, \"resolveStaticCredentials\");\n\n// src/resolveWebIdentityCredentials.ts\nvar isWebIdentityProfile = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === \"object\" && typeof arg.web_identity_token_file === \"string\" && typeof arg.role_arn === \"string\" && [\"undefined\", \"string\"].indexOf(typeof arg.role_session_name) > -1, \"isWebIdentityProfile\");\nvar resolveWebIdentityCredentials = /* @__PURE__ */ __name(async (profile, options) => Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-web-identity\"))).then(\n ({ fromTokenFile }) => fromTokenFile({\n webIdentityTokenFile: profile.web_identity_token_file,\n roleArn: profile.role_arn,\n roleSessionName: profile.role_session_name,\n roleAssumerWithWebIdentity: options.roleAssumerWithWebIdentity,\n logger: options.logger,\n parentClientConfig: options.parentClientConfig\n })()\n), \"resolveWebIdentityCredentials\");\n\n// src/resolveProfileData.ts\nvar resolveProfileData = /* @__PURE__ */ __name(async (profileName, profiles, options, visitedProfiles = {}) => {\n const data = profiles[profileName];\n if (Object.keys(visitedProfiles).length > 0 && isStaticCredsProfile(data)) {\n return resolveStaticCredentials(data, options);\n }\n if (isAssumeRoleProfile(data)) {\n return resolveAssumeRoleCredentials(profileName, profiles, options, visitedProfiles);\n }\n if (isStaticCredsProfile(data)) {\n return resolveStaticCredentials(data, options);\n }\n if (isWebIdentityProfile(data)) {\n return resolveWebIdentityCredentials(data, options);\n }\n if (isProcessProfile(data)) {\n return resolveProcessCredentials(options, profileName);\n }\n if (isSsoProfile(data)) {\n return await resolveSsoCredentials(profileName, options);\n }\n throw new import_property_provider.CredentialsProviderError(`Profile ${profileName} could not be found or parsed in shared credentials file.`);\n}, \"resolveProfileData\");\n\n// src/fromIni.ts\nvar fromIni = /* @__PURE__ */ __name((init = {}) => async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-ini\", \"fromIni\");\n const profiles = await (0, import_shared_ini_file_loader.parseKnownFiles)(init);\n return resolveProfileData((0, import_shared_ini_file_loader.getProfileName)(init), profiles, init);\n}, \"fromIni\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromIni\n});\n\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n credentialsTreatedAsExpired: () => credentialsTreatedAsExpired,\n credentialsWillNeedRefresh: () => credentialsWillNeedRefresh,\n defaultProvider: () => defaultProvider\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/defaultProvider.ts\nvar import_credential_provider_env = require(\"@aws-sdk/credential-provider-env\");\n\nvar import_shared_ini_file_loader = require(\"@smithy/shared-ini-file-loader\");\n\n// src/remoteProvider.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar ENV_IMDS_DISABLED = \"AWS_EC2_METADATA_DISABLED\";\nvar remoteProvider = /* @__PURE__ */ __name(async (init) => {\n var _a, _b;\n const { ENV_CMDS_FULL_URI, ENV_CMDS_RELATIVE_URI, fromContainerMetadata, fromInstanceMetadata } = await Promise.resolve().then(() => __toESM(require(\"@smithy/credential-provider-imds\")));\n if (process.env[ENV_CMDS_RELATIVE_URI] || process.env[ENV_CMDS_FULL_URI]) {\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node\", \"remoteProvider::fromHttp/fromContainerMetadata\");\n const { fromHttp } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-http\")));\n return (0, import_property_provider.chain)(fromHttp(init), fromContainerMetadata(init));\n }\n if (process.env[ENV_IMDS_DISABLED]) {\n return async () => {\n throw new import_property_provider.CredentialsProviderError(\"EC2 Instance Metadata Service access disabled\");\n };\n }\n (_b = init.logger) == null ? void 0 : _b.debug(\"@aws-sdk/credential-provider-node\", \"remoteProvider::fromInstanceMetadata\");\n return fromInstanceMetadata(init);\n}, \"remoteProvider\");\n\n// src/defaultProvider.ts\nvar defaultProvider = /* @__PURE__ */ __name((init = {}) => (0, import_property_provider.memoize)(\n (0, import_property_provider.chain)(\n ...init.profile || process.env[import_shared_ini_file_loader.ENV_PROFILE] ? [] : [\n async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node\", \"defaultProvider::fromEnv\");\n return (0, import_credential_provider_env.fromEnv)(init)();\n }\n ],\n async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node\", \"defaultProvider::fromSSO\");\n const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init;\n if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) {\n throw new import_property_provider.CredentialsProviderError(\n \"Skipping SSO provider in default chain (inputs do not include SSO fields).\"\n );\n }\n const { fromSSO } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-sso\")));\n return fromSSO(init)();\n },\n async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node\", \"defaultProvider::fromIni\");\n const { fromIni } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-ini\")));\n return fromIni(init)();\n },\n async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node\", \"defaultProvider::fromProcess\");\n const { fromProcess } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-process\")));\n return fromProcess(init)();\n },\n async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node\", \"defaultProvider::fromTokenFile\");\n const { fromTokenFile } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/credential-provider-web-identity\")));\n return fromTokenFile(init)();\n },\n async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-node\", \"defaultProvider::remoteProvider\");\n return (await remoteProvider(init))();\n },\n async () => {\n throw new import_property_provider.CredentialsProviderError(\"Could not load credentials from any providers\", false);\n }\n ),\n credentialsTreatedAsExpired,\n credentialsWillNeedRefresh\n), \"defaultProvider\");\nvar credentialsWillNeedRefresh = /* @__PURE__ */ __name((credentials) => (credentials == null ? void 0 : credentials.expiration) !== void 0, \"credentialsWillNeedRefresh\");\nvar credentialsTreatedAsExpired = /* @__PURE__ */ __name((credentials) => (credentials == null ? void 0 : credentials.expiration) !== void 0 && credentials.expiration.getTime() - Date.now() < 3e5, \"credentialsTreatedAsExpired\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n defaultProvider,\n credentialsWillNeedRefresh,\n credentialsTreatedAsExpired\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromProcess: () => fromProcess\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromProcess.ts\nvar import_shared_ini_file_loader = require(\"@smithy/shared-ini-file-loader\");\n\n// src/resolveProcessCredentials.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar import_child_process = require(\"child_process\");\nvar import_util = require(\"util\");\n\n// src/getValidatedProcessCredentials.ts\nvar getValidatedProcessCredentials = /* @__PURE__ */ __name((profileName, data) => {\n if (data.Version !== 1) {\n throw Error(`Profile ${profileName} credential_process did not return Version 1.`);\n }\n if (data.AccessKeyId === void 0 || data.SecretAccessKey === void 0) {\n throw Error(`Profile ${profileName} credential_process returned invalid credentials.`);\n }\n if (data.Expiration) {\n const currentTime = /* @__PURE__ */ new Date();\n const expireTime = new Date(data.Expiration);\n if (expireTime < currentTime) {\n throw Error(`Profile ${profileName} credential_process returned expired credentials.`);\n }\n }\n return {\n accessKeyId: data.AccessKeyId,\n secretAccessKey: data.SecretAccessKey,\n ...data.SessionToken && { sessionToken: data.SessionToken },\n ...data.Expiration && { expiration: new Date(data.Expiration) },\n ...data.CredentialScope && { credentialScope: data.CredentialScope }\n };\n}, \"getValidatedProcessCredentials\");\n\n// src/resolveProcessCredentials.ts\nvar resolveProcessCredentials = /* @__PURE__ */ __name(async (profileName, profiles) => {\n const profile = profiles[profileName];\n if (profiles[profileName]) {\n const credentialProcess = profile[\"credential_process\"];\n if (credentialProcess !== void 0) {\n const execPromise = (0, import_util.promisify)(import_child_process.exec);\n try {\n const { stdout } = await execPromise(credentialProcess);\n let data;\n try {\n data = JSON.parse(stdout.trim());\n } catch {\n throw Error(`Profile ${profileName} credential_process returned invalid JSON.`);\n }\n return getValidatedProcessCredentials(profileName, data);\n } catch (error) {\n throw new import_property_provider.CredentialsProviderError(error.message);\n }\n } else {\n throw new import_property_provider.CredentialsProviderError(`Profile ${profileName} did not contain credential_process.`);\n }\n } else {\n throw new import_property_provider.CredentialsProviderError(`Profile ${profileName} could not be found in shared credentials file.`);\n }\n}, \"resolveProcessCredentials\");\n\n// src/fromProcess.ts\nvar fromProcess = /* @__PURE__ */ __name((init = {}) => async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-process\", \"fromProcess\");\n const profiles = await (0, import_shared_ini_file_loader.parseKnownFiles)(init);\n return resolveProcessCredentials((0, import_shared_ini_file_loader.getProfileName)(init), profiles);\n}, \"fromProcess\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromProcess\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __esm = (fn, res) => function __init() {\n return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;\n};\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/loadSso.ts\nvar loadSso_exports = {};\n__export(loadSso_exports, {\n GetRoleCredentialsCommand: () => import_client_sso.GetRoleCredentialsCommand,\n SSOClient: () => import_client_sso.SSOClient\n});\nvar import_client_sso;\nvar init_loadSso = __esm({\n \"src/loadSso.ts\"() {\n import_client_sso = require(\"@aws-sdk/client-sso\");\n }\n});\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromSSO: () => fromSSO,\n isSsoProfile: () => isSsoProfile,\n validateSsoProfile: () => validateSsoProfile\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromSSO.ts\n\n\n\n// src/isSsoProfile.ts\nvar isSsoProfile = /* @__PURE__ */ __name((arg) => arg && (typeof arg.sso_start_url === \"string\" || typeof arg.sso_account_id === \"string\" || typeof arg.sso_session === \"string\" || typeof arg.sso_region === \"string\" || typeof arg.sso_role_name === \"string\"), \"isSsoProfile\");\n\n// src/resolveSSOCredentials.ts\nvar import_token_providers = require(\"@aws-sdk/token-providers\");\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar import_shared_ini_file_loader = require(\"@smithy/shared-ini-file-loader\");\nvar SHOULD_FAIL_CREDENTIAL_CHAIN = false;\nvar resolveSSOCredentials = /* @__PURE__ */ __name(async ({\n ssoStartUrl,\n ssoSession,\n ssoAccountId,\n ssoRegion,\n ssoRoleName,\n ssoClient,\n clientConfig,\n profile\n}) => {\n let token;\n const refreshMessage = `To refresh this SSO session run aws sso login with the corresponding profile.`;\n if (ssoSession) {\n try {\n const _token = await (0, import_token_providers.fromSso)({ profile })();\n token = {\n accessToken: _token.token,\n expiresAt: new Date(_token.expiration).toISOString()\n };\n } catch (e) {\n throw new import_property_provider.CredentialsProviderError(e.message, SHOULD_FAIL_CREDENTIAL_CHAIN);\n }\n } else {\n try {\n token = await (0, import_shared_ini_file_loader.getSSOTokenFromFile)(ssoStartUrl);\n } catch (e) {\n throw new import_property_provider.CredentialsProviderError(\n `The SSO session associated with this profile is invalid. ${refreshMessage}`,\n SHOULD_FAIL_CREDENTIAL_CHAIN\n );\n }\n }\n if (new Date(token.expiresAt).getTime() - Date.now() <= 0) {\n throw new import_property_provider.CredentialsProviderError(\n `The SSO session associated with this profile has expired. ${refreshMessage}`,\n SHOULD_FAIL_CREDENTIAL_CHAIN\n );\n }\n const { accessToken } = token;\n const { SSOClient: SSOClient2, GetRoleCredentialsCommand: GetRoleCredentialsCommand2 } = await Promise.resolve().then(() => (init_loadSso(), loadSso_exports));\n const sso = ssoClient || new SSOClient2(\n Object.assign({}, clientConfig ?? {}, {\n region: (clientConfig == null ? void 0 : clientConfig.region) ?? ssoRegion\n })\n );\n let ssoResp;\n try {\n ssoResp = await sso.send(\n new GetRoleCredentialsCommand2({\n accountId: ssoAccountId,\n roleName: ssoRoleName,\n accessToken\n })\n );\n } catch (e) {\n throw import_property_provider.CredentialsProviderError.from(e, SHOULD_FAIL_CREDENTIAL_CHAIN);\n }\n const { roleCredentials: { accessKeyId, secretAccessKey, sessionToken, expiration, credentialScope } = {} } = ssoResp;\n if (!accessKeyId || !secretAccessKey || !sessionToken || !expiration) {\n throw new import_property_provider.CredentialsProviderError(\"SSO returns an invalid temporary credential.\", SHOULD_FAIL_CREDENTIAL_CHAIN);\n }\n return { accessKeyId, secretAccessKey, sessionToken, expiration: new Date(expiration), credentialScope };\n}, \"resolveSSOCredentials\");\n\n// src/validateSsoProfile.ts\n\nvar validateSsoProfile = /* @__PURE__ */ __name((profile) => {\n const { sso_start_url, sso_account_id, sso_region, sso_role_name } = profile;\n if (!sso_start_url || !sso_account_id || !sso_region || !sso_role_name) {\n throw new import_property_provider.CredentialsProviderError(\n `Profile is configured with invalid SSO credentials. Required parameters \"sso_account_id\", \"sso_region\", \"sso_role_name\", \"sso_start_url\". Got ${Object.keys(profile).join(\n \", \"\n )}\nReference: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-sso.html`,\n false\n );\n }\n return profile;\n}, \"validateSsoProfile\");\n\n// src/fromSSO.ts\nvar fromSSO = /* @__PURE__ */ __name((init = {}) => async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/credential-provider-sso\", \"fromSSO\");\n const { ssoStartUrl, ssoAccountId, ssoRegion, ssoRoleName, ssoSession } = init;\n const { ssoClient } = init;\n const profileName = (0, import_shared_ini_file_loader.getProfileName)(init);\n if (!ssoStartUrl && !ssoAccountId && !ssoRegion && !ssoRoleName && !ssoSession) {\n const profiles = await (0, import_shared_ini_file_loader.parseKnownFiles)(init);\n const profile = profiles[profileName];\n if (!profile) {\n throw new import_property_provider.CredentialsProviderError(`Profile ${profileName} was not found.`);\n }\n if (!isSsoProfile(profile)) {\n throw new import_property_provider.CredentialsProviderError(`Profile ${profileName} is not configured with SSO credentials.`);\n }\n if (profile == null ? void 0 : profile.sso_session) {\n const ssoSessions = await (0, import_shared_ini_file_loader.loadSsoSessionData)(init);\n const session = ssoSessions[profile.sso_session];\n const conflictMsg = ` configurations in profile ${profileName} and sso-session ${profile.sso_session}`;\n if (ssoRegion && ssoRegion !== session.sso_region) {\n throw new import_property_provider.CredentialsProviderError(`Conflicting SSO region` + conflictMsg, false);\n }\n if (ssoStartUrl && ssoStartUrl !== session.sso_start_url) {\n throw new import_property_provider.CredentialsProviderError(`Conflicting SSO start_url` + conflictMsg, false);\n }\n profile.sso_region = session.sso_region;\n profile.sso_start_url = session.sso_start_url;\n }\n const { sso_start_url, sso_account_id, sso_region, sso_role_name, sso_session } = validateSsoProfile(profile);\n return resolveSSOCredentials({\n ssoStartUrl: sso_start_url,\n ssoSession: sso_session,\n ssoAccountId: sso_account_id,\n ssoRegion: sso_region,\n ssoRoleName: sso_role_name,\n ssoClient,\n clientConfig: init.clientConfig,\n profile: profileName\n });\n } else if (!ssoStartUrl || !ssoAccountId || !ssoRegion || !ssoRoleName) {\n throw new import_property_provider.CredentialsProviderError(\n 'Incomplete configuration. The fromSSO() argument hash must include \"ssoStartUrl\", \"ssoAccountId\", \"ssoRegion\", \"ssoRoleName\"'\n );\n } else {\n return resolveSSOCredentials({\n ssoStartUrl,\n ssoSession,\n ssoAccountId,\n ssoRegion,\n ssoRoleName,\n ssoClient,\n clientConfig: init.clientConfig,\n profile: profileName\n });\n }\n}, \"fromSSO\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromSSO,\n isSsoProfile,\n validateSsoProfile\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromTokenFile = void 0;\nconst property_provider_1 = require(\"@smithy/property-provider\");\nconst fs_1 = require(\"fs\");\nconst fromWebToken_1 = require(\"./fromWebToken\");\nconst ENV_TOKEN_FILE = \"AWS_WEB_IDENTITY_TOKEN_FILE\";\nconst ENV_ROLE_ARN = \"AWS_ROLE_ARN\";\nconst ENV_ROLE_SESSION_NAME = \"AWS_ROLE_SESSION_NAME\";\nconst fromTokenFile = (init = {}) => async () => {\n var _a, _b, _c, _d;\n (_a = init.logger) === null || _a === void 0 ? void 0 : _a.debug(\"@aws-sdk/credential-provider-web-identity\", \"fromTokenFile\");\n const webIdentityTokenFile = (_b = init === null || init === void 0 ? void 0 : init.webIdentityTokenFile) !== null && _b !== void 0 ? _b : process.env[ENV_TOKEN_FILE];\n const roleArn = (_c = init === null || init === void 0 ? void 0 : init.roleArn) !== null && _c !== void 0 ? _c : process.env[ENV_ROLE_ARN];\n const roleSessionName = (_d = init === null || init === void 0 ? void 0 : init.roleSessionName) !== null && _d !== void 0 ? _d : process.env[ENV_ROLE_SESSION_NAME];\n if (!webIdentityTokenFile || !roleArn) {\n throw new property_provider_1.CredentialsProviderError(\"Web identity configuration not specified\");\n }\n return (0, fromWebToken_1.fromWebToken)({\n ...init,\n webIdentityToken: (0, fs_1.readFileSync)(webIdentityTokenFile, { encoding: \"ascii\" }),\n roleArn,\n roleSessionName,\n })();\n};\nexports.fromTokenFile = fromTokenFile;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromWebToken = void 0;\nconst fromWebToken = (init) => async () => {\n var _a;\n (_a = init.logger) === null || _a === void 0 ? void 0 : _a.debug(\"@aws-sdk/credential-provider-web-identity\", \"fromWebToken\");\n const { roleArn, roleSessionName, webIdentityToken, providerId, policyArns, policy, durationSeconds } = init;\n let { roleAssumerWithWebIdentity } = init;\n if (!roleAssumerWithWebIdentity) {\n const { getDefaultRoleAssumerWithWebIdentity } = await Promise.resolve().then(() => __importStar(require(\"@aws-sdk/client-sts\")));\n roleAssumerWithWebIdentity = getDefaultRoleAssumerWithWebIdentity({\n ...init.clientConfig,\n credentialProviderLogger: init.logger,\n parentClientConfig: init.parentClientConfig,\n }, init.clientPlugins);\n }\n return roleAssumerWithWebIdentity({\n RoleArn: roleArn,\n RoleSessionName: roleSessionName !== null && roleSessionName !== void 0 ? roleSessionName : `aws-sdk-js-session-${Date.now()}`,\n WebIdentityToken: webIdentityToken,\n ProviderId: providerId,\n PolicyArns: policyArns,\n Policy: policy,\n DurationSeconds: durationSeconds,\n });\n};\nexports.fromWebToken = fromWebToken;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\nmodule.exports = __toCommonJS(src_exports);\n__reExport(src_exports, require(\"././fromTokenFile\"), module.exports);\n__reExport(src_exports, require(\"././fromWebToken\"), module.exports);\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromTokenFile,\n fromWebToken\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromCognitoIdentity = void 0;\nconst credential_provider_cognito_identity_1 = require(\"@aws-sdk/credential-provider-cognito-identity\");\nconst fromCognitoIdentity = (options) => (0, credential_provider_cognito_identity_1.fromCognitoIdentity)({\n ...options,\n});\nexports.fromCognitoIdentity = fromCognitoIdentity;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromCognitoIdentityPool = void 0;\nconst credential_provider_cognito_identity_1 = require(\"@aws-sdk/credential-provider-cognito-identity\");\nconst fromCognitoIdentityPool = (options) => (0, credential_provider_cognito_identity_1.fromCognitoIdentityPool)({\n ...options,\n});\nexports.fromCognitoIdentityPool = fromCognitoIdentityPool;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromContainerMetadata = void 0;\nconst credential_provider_imds_1 = require(\"@smithy/credential-provider-imds\");\nconst fromContainerMetadata = (init) => {\n var _a;\n (_a = init === null || init === void 0 ? void 0 : init.logger) === null || _a === void 0 ? void 0 : _a.debug(\"@smithy/credential-provider-imds\", \"fromContainerMetadata\");\n return (0, credential_provider_imds_1.fromContainerMetadata)(init);\n};\nexports.fromContainerMetadata = fromContainerMetadata;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromEnv = void 0;\nconst credential_provider_env_1 = require(\"@aws-sdk/credential-provider-env\");\nconst fromEnv = (init) => (0, credential_provider_env_1.fromEnv)(init);\nexports.fromEnv = fromEnv;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromIni = void 0;\nconst credential_provider_ini_1 = require(\"@aws-sdk/credential-provider-ini\");\nconst fromIni = (init = {}) => (0, credential_provider_ini_1.fromIni)({\n ...init,\n});\nexports.fromIni = fromIni;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromInstanceMetadata = void 0;\nconst credential_provider_imds_1 = require(\"@smithy/credential-provider-imds\");\nconst fromInstanceMetadata = (init) => {\n var _a;\n (_a = init === null || init === void 0 ? void 0 : init.logger) === null || _a === void 0 ? void 0 : _a.debug(\"@smithy/credential-provider-imds\", \"fromInstanceMetadata\");\n return (0, credential_provider_imds_1.fromInstanceMetadata)(init);\n};\nexports.fromInstanceMetadata = fromInstanceMetadata;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromNodeProviderChain = void 0;\nconst credential_provider_node_1 = require(\"@aws-sdk/credential-provider-node\");\nconst fromNodeProviderChain = (init = {}) => (0, credential_provider_node_1.defaultProvider)({\n ...init,\n});\nexports.fromNodeProviderChain = fromNodeProviderChain;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromProcess = void 0;\nconst credential_provider_process_1 = require(\"@aws-sdk/credential-provider-process\");\nconst fromProcess = (init) => (0, credential_provider_process_1.fromProcess)(init);\nexports.fromProcess = fromProcess;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromSSO = void 0;\nconst credential_provider_sso_1 = require(\"@aws-sdk/credential-provider-sso\");\nconst fromSSO = (init = {}) => {\n return (0, credential_provider_sso_1.fromSSO)({ ...init });\n};\nexports.fromSSO = fromSSO;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromTemporaryCredentials = void 0;\nconst property_provider_1 = require(\"@smithy/property-provider\");\nconst fromTemporaryCredentials = (options) => {\n let stsClient;\n return async () => {\n var _a, _b;\n (_a = options.logger) === null || _a === void 0 ? void 0 : _a.debug(\"@aws-sdk/credential-providers\", \"fromTemporaryCredentials (STS)\");\n const params = { ...options.params, RoleSessionName: (_b = options.params.RoleSessionName) !== null && _b !== void 0 ? _b : \"aws-sdk-js-\" + Date.now() };\n if (params === null || params === void 0 ? void 0 : params.SerialNumber) {\n if (!options.mfaCodeProvider) {\n throw new property_provider_1.CredentialsProviderError(`Temporary credential requires multi-factor authentication,` + ` but no MFA code callback was provided.`, false);\n }\n params.TokenCode = await options.mfaCodeProvider(params === null || params === void 0 ? void 0 : params.SerialNumber);\n }\n const { AssumeRoleCommand, STSClient } = await Promise.resolve().then(() => __importStar(require(\"./loadSts\")));\n if (!stsClient)\n stsClient = new STSClient({ ...options.clientConfig, credentials: options.masterCredentials });\n if (options.clientPlugins) {\n for (const plugin of options.clientPlugins) {\n stsClient.middlewareStack.use(plugin);\n }\n }\n const { Credentials } = await stsClient.send(new AssumeRoleCommand(params));\n if (!Credentials || !Credentials.AccessKeyId || !Credentials.SecretAccessKey) {\n throw new property_provider_1.CredentialsProviderError(`Invalid response from STS.assumeRole call with role ${params.RoleArn}`);\n }\n return {\n accessKeyId: Credentials.AccessKeyId,\n secretAccessKey: Credentials.SecretAccessKey,\n sessionToken: Credentials.SessionToken,\n expiration: Credentials.Expiration,\n credentialScope: Credentials.CredentialScope,\n };\n };\n};\nexports.fromTemporaryCredentials = fromTemporaryCredentials;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromTokenFile = void 0;\nconst credential_provider_web_identity_1 = require(\"@aws-sdk/credential-provider-web-identity\");\nconst fromTokenFile = (init = {}) => (0, credential_provider_web_identity_1.fromTokenFile)({\n ...init,\n});\nexports.fromTokenFile = fromTokenFile;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromWebToken = void 0;\nconst credential_provider_web_identity_1 = require(\"@aws-sdk/credential-provider-web-identity\");\nconst fromWebToken = (init) => (0, credential_provider_web_identity_1.fromWebToken)({\n ...init,\n});\nexports.fromWebToken = fromWebToken;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromHttp = void 0;\nconst tslib_1 = require(\"tslib\");\ntslib_1.__exportStar(require(\"./fromCognitoIdentity\"), exports);\ntslib_1.__exportStar(require(\"./fromCognitoIdentityPool\"), exports);\ntslib_1.__exportStar(require(\"./fromContainerMetadata\"), exports);\ntslib_1.__exportStar(require(\"./fromEnv\"), exports);\nvar credential_provider_http_1 = require(\"@aws-sdk/credential-provider-http\");\nObject.defineProperty(exports, \"fromHttp\", { enumerable: true, get: function () { return credential_provider_http_1.fromHttp; } });\ntslib_1.__exportStar(require(\"./fromIni\"), exports);\ntslib_1.__exportStar(require(\"./fromInstanceMetadata\"), exports);\ntslib_1.__exportStar(require(\"./fromNodeProviderChain\"), exports);\ntslib_1.__exportStar(require(\"./fromProcess\"), exports);\ntslib_1.__exportStar(require(\"./fromSSO\"), exports);\ntslib_1.__exportStar(require(\"./fromTemporaryCredentials\"), exports);\ntslib_1.__exportStar(require(\"./fromTokenFile\"), exports);\ntslib_1.__exportStar(require(\"./fromWebToken\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.STSClient = exports.AssumeRoleCommand = void 0;\nconst client_sts_1 = require(\"@aws-sdk/client-sts\");\nObject.defineProperty(exports, \"AssumeRoleCommand\", { enumerable: true, get: function () { return client_sts_1.AssumeRoleCommand; } });\nObject.defineProperty(exports, \"STSClient\", { enumerable: true, get: function () { return client_sts_1.STSClient; } });\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n getHostHeaderPlugin: () => getHostHeaderPlugin,\n hostHeaderMiddleware: () => hostHeaderMiddleware,\n hostHeaderMiddlewareOptions: () => hostHeaderMiddlewareOptions,\n resolveHostHeaderConfig: () => resolveHostHeaderConfig\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nfunction resolveHostHeaderConfig(input) {\n return input;\n}\n__name(resolveHostHeaderConfig, \"resolveHostHeaderConfig\");\nvar hostHeaderMiddleware = /* @__PURE__ */ __name((options) => (next) => async (args) => {\n if (!import_protocol_http.HttpRequest.isInstance(args.request))\n return next(args);\n const { request } = args;\n const { handlerProtocol = \"\" } = options.requestHandler.metadata || {};\n if (handlerProtocol.indexOf(\"h2\") >= 0 && !request.headers[\":authority\"]) {\n delete request.headers[\"host\"];\n request.headers[\":authority\"] = request.hostname + (request.port ? \":\" + request.port : \"\");\n } else if (!request.headers[\"host\"]) {\n let host = request.hostname;\n if (request.port != null)\n host += `:${request.port}`;\n request.headers[\"host\"] = host;\n }\n return next(args);\n}, \"hostHeaderMiddleware\");\nvar hostHeaderMiddlewareOptions = {\n name: \"hostHeaderMiddleware\",\n step: \"build\",\n priority: \"low\",\n tags: [\"HOST\"],\n override: true\n};\nvar getHostHeaderPlugin = /* @__PURE__ */ __name((options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(hostHeaderMiddleware(options), hostHeaderMiddlewareOptions);\n }\n}), \"getHostHeaderPlugin\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n resolveHostHeaderConfig,\n hostHeaderMiddleware,\n hostHeaderMiddlewareOptions,\n getHostHeaderPlugin\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n getLoggerPlugin: () => getLoggerPlugin,\n loggerMiddleware: () => loggerMiddleware,\n loggerMiddlewareOptions: () => loggerMiddlewareOptions\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/loggerMiddleware.ts\nvar loggerMiddleware = /* @__PURE__ */ __name(() => (next, context) => async (args) => {\n var _a, _b;\n try {\n const response = await next(args);\n const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context;\n const { overrideInputFilterSensitiveLog, overrideOutputFilterSensitiveLog } = dynamoDbDocumentClientOptions;\n const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog;\n const outputFilterSensitiveLog = overrideOutputFilterSensitiveLog ?? context.outputFilterSensitiveLog;\n const { $metadata, ...outputWithoutMetadata } = response.output;\n (_a = logger == null ? void 0 : logger.info) == null ? void 0 : _a.call(logger, {\n clientName,\n commandName,\n input: inputFilterSensitiveLog(args.input),\n output: outputFilterSensitiveLog(outputWithoutMetadata),\n metadata: $metadata\n });\n return response;\n } catch (error) {\n const { clientName, commandName, logger, dynamoDbDocumentClientOptions = {} } = context;\n const { overrideInputFilterSensitiveLog } = dynamoDbDocumentClientOptions;\n const inputFilterSensitiveLog = overrideInputFilterSensitiveLog ?? context.inputFilterSensitiveLog;\n (_b = logger == null ? void 0 : logger.error) == null ? void 0 : _b.call(logger, {\n clientName,\n commandName,\n input: inputFilterSensitiveLog(args.input),\n error,\n metadata: error.$metadata\n });\n throw error;\n }\n}, \"loggerMiddleware\");\nvar loggerMiddlewareOptions = {\n name: \"loggerMiddleware\",\n tags: [\"LOGGER\"],\n step: \"initialize\",\n override: true\n};\nvar getLoggerPlugin = /* @__PURE__ */ __name((options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(loggerMiddleware(), loggerMiddlewareOptions);\n }\n}), \"getLoggerPlugin\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n loggerMiddleware,\n loggerMiddlewareOptions,\n getLoggerPlugin\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n addRecursionDetectionMiddlewareOptions: () => addRecursionDetectionMiddlewareOptions,\n getRecursionDetectionPlugin: () => getRecursionDetectionPlugin,\n recursionDetectionMiddleware: () => recursionDetectionMiddleware\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar TRACE_ID_HEADER_NAME = \"X-Amzn-Trace-Id\";\nvar ENV_LAMBDA_FUNCTION_NAME = \"AWS_LAMBDA_FUNCTION_NAME\";\nvar ENV_TRACE_ID = \"_X_AMZN_TRACE_ID\";\nvar recursionDetectionMiddleware = /* @__PURE__ */ __name((options) => (next) => async (args) => {\n const { request } = args;\n if (!import_protocol_http.HttpRequest.isInstance(request) || options.runtime !== \"node\" || request.headers.hasOwnProperty(TRACE_ID_HEADER_NAME)) {\n return next(args);\n }\n const functionName = process.env[ENV_LAMBDA_FUNCTION_NAME];\n const traceId = process.env[ENV_TRACE_ID];\n const nonEmptyString = /* @__PURE__ */ __name((str) => typeof str === \"string\" && str.length > 0, \"nonEmptyString\");\n if (nonEmptyString(functionName) && nonEmptyString(traceId)) {\n request.headers[TRACE_ID_HEADER_NAME] = traceId;\n }\n return next({\n ...args,\n request\n });\n}, \"recursionDetectionMiddleware\");\nvar addRecursionDetectionMiddlewareOptions = {\n step: \"build\",\n tags: [\"RECURSION_DETECTION\"],\n name: \"recursionDetectionMiddleware\",\n override: true,\n priority: \"low\"\n};\nvar getRecursionDetectionPlugin = /* @__PURE__ */ __name((options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(recursionDetectionMiddleware(options), addRecursionDetectionMiddlewareOptions);\n }\n}), \"getRecursionDetectionPlugin\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n recursionDetectionMiddleware,\n addRecursionDetectionMiddlewareOptions,\n getRecursionDetectionPlugin\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n getUserAgentMiddlewareOptions: () => getUserAgentMiddlewareOptions,\n getUserAgentPlugin: () => getUserAgentPlugin,\n resolveUserAgentConfig: () => resolveUserAgentConfig,\n userAgentMiddleware: () => userAgentMiddleware\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/configurations.ts\nfunction resolveUserAgentConfig(input) {\n return {\n ...input,\n customUserAgent: typeof input.customUserAgent === \"string\" ? [[input.customUserAgent]] : input.customUserAgent\n };\n}\n__name(resolveUserAgentConfig, \"resolveUserAgentConfig\");\n\n// src/user-agent-middleware.ts\nvar import_util_endpoints = require(\"@aws-sdk/util-endpoints\");\nvar import_protocol_http = require(\"@smithy/protocol-http\");\n\n// src/constants.ts\nvar USER_AGENT = \"user-agent\";\nvar X_AMZ_USER_AGENT = \"x-amz-user-agent\";\nvar SPACE = \" \";\nvar UA_NAME_SEPARATOR = \"/\";\nvar UA_NAME_ESCAPE_REGEX = /[^\\!\\$\\%\\&\\'\\*\\+\\-\\.\\^\\_\\`\\|\\~\\d\\w]/g;\nvar UA_VALUE_ESCAPE_REGEX = /[^\\!\\$\\%\\&\\'\\*\\+\\-\\.\\^\\_\\`\\|\\~\\d\\w\\#]/g;\nvar UA_ESCAPE_CHAR = \"-\";\n\n// src/user-agent-middleware.ts\nvar userAgentMiddleware = /* @__PURE__ */ __name((options) => (next, context) => async (args) => {\n var _a, _b;\n const { request } = args;\n if (!import_protocol_http.HttpRequest.isInstance(request))\n return next(args);\n const { headers } = request;\n const userAgent = ((_a = context == null ? void 0 : context.userAgent) == null ? void 0 : _a.map(escapeUserAgent)) || [];\n const defaultUserAgent = (await options.defaultUserAgentProvider()).map(escapeUserAgent);\n const customUserAgent = ((_b = options == null ? void 0 : options.customUserAgent) == null ? void 0 : _b.map(escapeUserAgent)) || [];\n const prefix = (0, import_util_endpoints.getUserAgentPrefix)();\n const sdkUserAgentValue = (prefix ? [prefix] : []).concat([...defaultUserAgent, ...userAgent, ...customUserAgent]).join(SPACE);\n const normalUAValue = [\n ...defaultUserAgent.filter((section) => section.startsWith(\"aws-sdk-\")),\n ...customUserAgent\n ].join(SPACE);\n if (options.runtime !== \"browser\") {\n if (normalUAValue) {\n headers[X_AMZ_USER_AGENT] = headers[X_AMZ_USER_AGENT] ? `${headers[USER_AGENT]} ${normalUAValue}` : normalUAValue;\n }\n headers[USER_AGENT] = sdkUserAgentValue;\n } else {\n headers[X_AMZ_USER_AGENT] = sdkUserAgentValue;\n }\n return next({\n ...args,\n request\n });\n}, \"userAgentMiddleware\");\nvar escapeUserAgent = /* @__PURE__ */ __name((userAgentPair) => {\n var _a;\n const name = userAgentPair[0].split(UA_NAME_SEPARATOR).map((part) => part.replace(UA_NAME_ESCAPE_REGEX, UA_ESCAPE_CHAR)).join(UA_NAME_SEPARATOR);\n const version = (_a = userAgentPair[1]) == null ? void 0 : _a.replace(UA_VALUE_ESCAPE_REGEX, UA_ESCAPE_CHAR);\n const prefixSeparatorIndex = name.indexOf(UA_NAME_SEPARATOR);\n const prefix = name.substring(0, prefixSeparatorIndex);\n let uaName = name.substring(prefixSeparatorIndex + 1);\n if (prefix === \"api\") {\n uaName = uaName.toLowerCase();\n }\n return [prefix, uaName, version].filter((item) => item && item.length > 0).reduce((acc, item, index) => {\n switch (index) {\n case 0:\n return item;\n case 1:\n return `${acc}/${item}`;\n default:\n return `${acc}#${item}`;\n }\n }, \"\");\n}, \"escapeUserAgent\");\nvar getUserAgentMiddlewareOptions = {\n name: \"getUserAgentMiddleware\",\n step: \"build\",\n priority: \"low\",\n tags: [\"SET_USER_AGENT\", \"USER_AGENT\"],\n override: true\n};\nvar getUserAgentPlugin = /* @__PURE__ */ __name((config) => ({\n applyToStack: (clientStack) => {\n clientStack.add(userAgentMiddleware(config), getUserAgentMiddlewareOptions);\n }\n}), \"getUserAgentPlugin\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n resolveUserAgentConfig,\n userAgentMiddleware,\n getUserAgentMiddlewareOptions,\n getUserAgentPlugin\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n NODE_REGION_CONFIG_FILE_OPTIONS: () => NODE_REGION_CONFIG_FILE_OPTIONS,\n NODE_REGION_CONFIG_OPTIONS: () => NODE_REGION_CONFIG_OPTIONS,\n REGION_ENV_NAME: () => REGION_ENV_NAME,\n REGION_INI_NAME: () => REGION_INI_NAME,\n getAwsRegionExtensionConfiguration: () => getAwsRegionExtensionConfiguration,\n resolveAwsRegionExtensionConfiguration: () => resolveAwsRegionExtensionConfiguration,\n resolveRegionConfig: () => resolveRegionConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/extensions/index.ts\nvar getAwsRegionExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n let runtimeConfigRegion = /* @__PURE__ */ __name(async () => {\n if (runtimeConfig.region === void 0) {\n throw new Error(\"Region is missing from runtimeConfig\");\n }\n const region = runtimeConfig.region;\n if (typeof region === \"string\") {\n return region;\n }\n return region();\n }, \"runtimeConfigRegion\");\n return {\n setRegion(region) {\n runtimeConfigRegion = region;\n },\n region() {\n return runtimeConfigRegion;\n }\n };\n}, \"getAwsRegionExtensionConfiguration\");\nvar resolveAwsRegionExtensionConfiguration = /* @__PURE__ */ __name((awsRegionExtensionConfiguration) => {\n return {\n region: awsRegionExtensionConfiguration.region()\n };\n}, \"resolveAwsRegionExtensionConfiguration\");\n\n// src/regionConfig/config.ts\nvar REGION_ENV_NAME = \"AWS_REGION\";\nvar REGION_INI_NAME = \"region\";\nvar NODE_REGION_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[REGION_ENV_NAME],\n configFileSelector: (profile) => profile[REGION_INI_NAME],\n default: () => {\n throw new Error(\"Region is missing\");\n }\n};\nvar NODE_REGION_CONFIG_FILE_OPTIONS = {\n preferredFile: \"credentials\"\n};\n\n// src/regionConfig/isFipsRegion.ts\nvar isFipsRegion = /* @__PURE__ */ __name((region) => typeof region === \"string\" && (region.startsWith(\"fips-\") || region.endsWith(\"-fips\")), \"isFipsRegion\");\n\n// src/regionConfig/getRealRegion.ts\nvar getRealRegion = /* @__PURE__ */ __name((region) => isFipsRegion(region) ? [\"fips-aws-global\", \"aws-fips\"].includes(region) ? \"us-east-1\" : region.replace(/fips-(dkr-|prod-)?|-fips/, \"\") : region, \"getRealRegion\");\n\n// src/regionConfig/resolveRegionConfig.ts\nvar resolveRegionConfig = /* @__PURE__ */ __name((input) => {\n const { region, useFipsEndpoint } = input;\n if (!region) {\n throw new Error(\"Region is missing\");\n }\n return {\n ...input,\n region: async () => {\n if (typeof region === \"string\") {\n return getRealRegion(region);\n }\n const providedRegion = await region();\n return getRealRegion(providedRegion);\n },\n useFipsEndpoint: async () => {\n const providedRegion = typeof region === \"string\" ? region : await region();\n if (isFipsRegion(providedRegion)) {\n return true;\n }\n return typeof useFipsEndpoint !== \"function\" ? Promise.resolve(!!useFipsEndpoint) : useFipsEndpoint();\n }\n };\n}, \"resolveRegionConfig\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n getAwsRegionExtensionConfiguration,\n resolveAwsRegionExtensionConfiguration,\n REGION_ENV_NAME,\n REGION_INI_NAME,\n NODE_REGION_CONFIG_OPTIONS,\n NODE_REGION_CONFIG_FILE_OPTIONS,\n resolveRegionConfig\n});\n\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromSso: () => fromSso,\n fromStatic: () => fromStatic,\n nodeProvider: () => nodeProvider\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromSso.ts\n\n\n\n// src/constants.ts\nvar EXPIRE_WINDOW_MS = 5 * 60 * 1e3;\nvar REFRESH_MESSAGE = `To refresh this SSO session run 'aws sso login' with the corresponding profile.`;\n\n// src/getSsoOidcClient.ts\nvar ssoOidcClientsHash = {};\nvar getSsoOidcClient = /* @__PURE__ */ __name(async (ssoRegion) => {\n const { SSOOIDCClient } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/client-sso-oidc\")));\n if (ssoOidcClientsHash[ssoRegion]) {\n return ssoOidcClientsHash[ssoRegion];\n }\n const ssoOidcClient = new SSOOIDCClient({ region: ssoRegion });\n ssoOidcClientsHash[ssoRegion] = ssoOidcClient;\n return ssoOidcClient;\n}, \"getSsoOidcClient\");\n\n// src/getNewSsoOidcToken.ts\nvar getNewSsoOidcToken = /* @__PURE__ */ __name(async (ssoToken, ssoRegion) => {\n const { CreateTokenCommand } = await Promise.resolve().then(() => __toESM(require(\"@aws-sdk/client-sso-oidc\")));\n const ssoOidcClient = await getSsoOidcClient(ssoRegion);\n return ssoOidcClient.send(\n new CreateTokenCommand({\n clientId: ssoToken.clientId,\n clientSecret: ssoToken.clientSecret,\n refreshToken: ssoToken.refreshToken,\n grantType: \"refresh_token\"\n })\n );\n}, \"getNewSsoOidcToken\");\n\n// src/validateTokenExpiry.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar validateTokenExpiry = /* @__PURE__ */ __name((token) => {\n if (token.expiration && token.expiration.getTime() < Date.now()) {\n throw new import_property_provider.TokenProviderError(`Token is expired. ${REFRESH_MESSAGE}`, false);\n }\n}, \"validateTokenExpiry\");\n\n// src/validateTokenKey.ts\n\nvar validateTokenKey = /* @__PURE__ */ __name((key, value, forRefresh = false) => {\n if (typeof value === \"undefined\") {\n throw new import_property_provider.TokenProviderError(\n `Value not present for '${key}' in SSO Token${forRefresh ? \". Cannot refresh\" : \"\"}. ${REFRESH_MESSAGE}`,\n false\n );\n }\n}, \"validateTokenKey\");\n\n// src/writeSSOTokenToFile.ts\nvar import_shared_ini_file_loader = require(\"@smithy/shared-ini-file-loader\");\nvar import_fs = require(\"fs\");\nvar { writeFile } = import_fs.promises;\nvar writeSSOTokenToFile = /* @__PURE__ */ __name((id, ssoToken) => {\n const tokenFilepath = (0, import_shared_ini_file_loader.getSSOTokenFilepath)(id);\n const tokenString = JSON.stringify(ssoToken, null, 2);\n return writeFile(tokenFilepath, tokenString);\n}, \"writeSSOTokenToFile\");\n\n// src/fromSso.ts\nvar lastRefreshAttemptTime = /* @__PURE__ */ new Date(0);\nvar fromSso = /* @__PURE__ */ __name((init = {}) => async () => {\n var _a;\n (_a = init.logger) == null ? void 0 : _a.debug(\"@aws-sdk/token-providers\", \"fromSso\");\n const profiles = await (0, import_shared_ini_file_loader.parseKnownFiles)(init);\n const profileName = (0, import_shared_ini_file_loader.getProfileName)(init);\n const profile = profiles[profileName];\n if (!profile) {\n throw new import_property_provider.TokenProviderError(`Profile '${profileName}' could not be found in shared credentials file.`, false);\n } else if (!profile[\"sso_session\"]) {\n throw new import_property_provider.TokenProviderError(`Profile '${profileName}' is missing required property 'sso_session'.`);\n }\n const ssoSessionName = profile[\"sso_session\"];\n const ssoSessions = await (0, import_shared_ini_file_loader.loadSsoSessionData)(init);\n const ssoSession = ssoSessions[ssoSessionName];\n if (!ssoSession) {\n throw new import_property_provider.TokenProviderError(\n `Sso session '${ssoSessionName}' could not be found in shared credentials file.`,\n false\n );\n }\n for (const ssoSessionRequiredKey of [\"sso_start_url\", \"sso_region\"]) {\n if (!ssoSession[ssoSessionRequiredKey]) {\n throw new import_property_provider.TokenProviderError(\n `Sso session '${ssoSessionName}' is missing required property '${ssoSessionRequiredKey}'.`,\n false\n );\n }\n }\n const ssoStartUrl = ssoSession[\"sso_start_url\"];\n const ssoRegion = ssoSession[\"sso_region\"];\n let ssoToken;\n try {\n ssoToken = await (0, import_shared_ini_file_loader.getSSOTokenFromFile)(ssoSessionName);\n } catch (e) {\n throw new import_property_provider.TokenProviderError(\n `The SSO session token associated with profile=${profileName} was not found or is invalid. ${REFRESH_MESSAGE}`,\n false\n );\n }\n validateTokenKey(\"accessToken\", ssoToken.accessToken);\n validateTokenKey(\"expiresAt\", ssoToken.expiresAt);\n const { accessToken, expiresAt } = ssoToken;\n const existingToken = { token: accessToken, expiration: new Date(expiresAt) };\n if (existingToken.expiration.getTime() - Date.now() > EXPIRE_WINDOW_MS) {\n return existingToken;\n }\n if (Date.now() - lastRefreshAttemptTime.getTime() < 30 * 1e3) {\n validateTokenExpiry(existingToken);\n return existingToken;\n }\n validateTokenKey(\"clientId\", ssoToken.clientId, true);\n validateTokenKey(\"clientSecret\", ssoToken.clientSecret, true);\n validateTokenKey(\"refreshToken\", ssoToken.refreshToken, true);\n try {\n lastRefreshAttemptTime.setTime(Date.now());\n const newSsoOidcToken = await getNewSsoOidcToken(ssoToken, ssoRegion);\n validateTokenKey(\"accessToken\", newSsoOidcToken.accessToken);\n validateTokenKey(\"expiresIn\", newSsoOidcToken.expiresIn);\n const newTokenExpiration = new Date(Date.now() + newSsoOidcToken.expiresIn * 1e3);\n try {\n await writeSSOTokenToFile(ssoSessionName, {\n ...ssoToken,\n accessToken: newSsoOidcToken.accessToken,\n expiresAt: newTokenExpiration.toISOString(),\n refreshToken: newSsoOidcToken.refreshToken\n });\n } catch (error) {\n }\n return {\n token: newSsoOidcToken.accessToken,\n expiration: newTokenExpiration\n };\n } catch (error) {\n validateTokenExpiry(existingToken);\n return existingToken;\n }\n}, \"fromSso\");\n\n// src/fromStatic.ts\n\nvar fromStatic = /* @__PURE__ */ __name(({ token, logger }) => async () => {\n logger == null ? void 0 : logger.debug(\"@aws-sdk/token-providers\", \"fromStatic\");\n if (!token || !token.token) {\n throw new import_property_provider.TokenProviderError(`Please pass a valid token to fromStatic`, false);\n }\n return token;\n}, \"fromStatic\");\n\n// src/nodeProvider.ts\n\nvar nodeProvider = /* @__PURE__ */ __name((init = {}) => (0, import_property_provider.memoize)(\n (0, import_property_provider.chain)(fromSso(init), async () => {\n throw new import_property_provider.TokenProviderError(\"Could not load token from any providers\", false);\n }),\n (token) => token.expiration !== void 0 && token.expiration.getTime() - Date.now() < 3e5,\n (token) => token.expiration !== void 0\n), \"nodeProvider\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromSso,\n fromStatic,\n nodeProvider\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n ConditionObject: () => import_util_endpoints.ConditionObject,\n DeprecatedObject: () => import_util_endpoints.DeprecatedObject,\n EndpointError: () => import_util_endpoints.EndpointError,\n EndpointObject: () => import_util_endpoints.EndpointObject,\n EndpointObjectHeaders: () => import_util_endpoints.EndpointObjectHeaders,\n EndpointObjectProperties: () => import_util_endpoints.EndpointObjectProperties,\n EndpointParams: () => import_util_endpoints.EndpointParams,\n EndpointResolverOptions: () => import_util_endpoints.EndpointResolverOptions,\n EndpointRuleObject: () => import_util_endpoints.EndpointRuleObject,\n ErrorRuleObject: () => import_util_endpoints.ErrorRuleObject,\n EvaluateOptions: () => import_util_endpoints.EvaluateOptions,\n Expression: () => import_util_endpoints.Expression,\n FunctionArgv: () => import_util_endpoints.FunctionArgv,\n FunctionObject: () => import_util_endpoints.FunctionObject,\n FunctionReturn: () => import_util_endpoints.FunctionReturn,\n ParameterObject: () => import_util_endpoints.ParameterObject,\n ReferenceObject: () => import_util_endpoints.ReferenceObject,\n ReferenceRecord: () => import_util_endpoints.ReferenceRecord,\n RuleSetObject: () => import_util_endpoints.RuleSetObject,\n RuleSetRules: () => import_util_endpoints.RuleSetRules,\n TreeRuleObject: () => import_util_endpoints.TreeRuleObject,\n awsEndpointFunctions: () => awsEndpointFunctions,\n getUserAgentPrefix: () => getUserAgentPrefix,\n isIpAddress: () => import_util_endpoints.isIpAddress,\n partition: () => partition,\n resolveEndpoint: () => import_util_endpoints.resolveEndpoint,\n setPartitionInfo: () => setPartitionInfo,\n useDefaultPartitionInfo: () => useDefaultPartitionInfo\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/aws.ts\n\n\n// src/lib/aws/isVirtualHostableS3Bucket.ts\n\n\n// src/lib/isIpAddress.ts\nvar import_util_endpoints = require(\"@smithy/util-endpoints\");\n\n// src/lib/aws/isVirtualHostableS3Bucket.ts\nvar isVirtualHostableS3Bucket = /* @__PURE__ */ __name((value, allowSubDomains = false) => {\n if (allowSubDomains) {\n for (const label of value.split(\".\")) {\n if (!isVirtualHostableS3Bucket(label)) {\n return false;\n }\n }\n return true;\n }\n if (!(0, import_util_endpoints.isValidHostLabel)(value)) {\n return false;\n }\n if (value.length < 3 || value.length > 63) {\n return false;\n }\n if (value !== value.toLowerCase()) {\n return false;\n }\n if ((0, import_util_endpoints.isIpAddress)(value)) {\n return false;\n }\n return true;\n}, \"isVirtualHostableS3Bucket\");\n\n// src/lib/aws/parseArn.ts\nvar parseArn = /* @__PURE__ */ __name((value) => {\n const segments = value.split(\":\");\n if (segments.length < 6)\n return null;\n const [arn, partition2, service, region, accountId, ...resourceId] = segments;\n if (arn !== \"arn\" || partition2 === \"\" || service === \"\" || resourceId[0] === \"\")\n return null;\n return {\n partition: partition2,\n service,\n region,\n accountId,\n resourceId: resourceId[0].includes(\"/\") ? resourceId[0].split(\"/\") : resourceId\n };\n}, \"parseArn\");\n\n// src/lib/aws/partitions.json\nvar partitions_default = {\n partitions: [{\n id: \"aws\",\n outputs: {\n dnsSuffix: \"amazonaws.com\",\n dualStackDnsSuffix: \"api.aws\",\n implicitGlobalRegion: \"us-east-1\",\n name: \"aws\",\n supportsDualStack: true,\n supportsFIPS: true\n },\n regionRegex: \"^(us|eu|ap|sa|ca|me|af|il)\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {\n \"af-south-1\": {\n description: \"Africa (Cape Town)\"\n },\n \"ap-east-1\": {\n description: \"Asia Pacific (Hong Kong)\"\n },\n \"ap-northeast-1\": {\n description: \"Asia Pacific (Tokyo)\"\n },\n \"ap-northeast-2\": {\n description: \"Asia Pacific (Seoul)\"\n },\n \"ap-northeast-3\": {\n description: \"Asia Pacific (Osaka)\"\n },\n \"ap-south-1\": {\n description: \"Asia Pacific (Mumbai)\"\n },\n \"ap-south-2\": {\n description: \"Asia Pacific (Hyderabad)\"\n },\n \"ap-southeast-1\": {\n description: \"Asia Pacific (Singapore)\"\n },\n \"ap-southeast-2\": {\n description: \"Asia Pacific (Sydney)\"\n },\n \"ap-southeast-3\": {\n description: \"Asia Pacific (Jakarta)\"\n },\n \"ap-southeast-4\": {\n description: \"Asia Pacific (Melbourne)\"\n },\n \"aws-global\": {\n description: \"AWS Standard global region\"\n },\n \"ca-central-1\": {\n description: \"Canada (Central)\"\n },\n \"ca-west-1\": {\n description: \"Canada West (Calgary)\"\n },\n \"eu-central-1\": {\n description: \"Europe (Frankfurt)\"\n },\n \"eu-central-2\": {\n description: \"Europe (Zurich)\"\n },\n \"eu-north-1\": {\n description: \"Europe (Stockholm)\"\n },\n \"eu-south-1\": {\n description: \"Europe (Milan)\"\n },\n \"eu-south-2\": {\n description: \"Europe (Spain)\"\n },\n \"eu-west-1\": {\n description: \"Europe (Ireland)\"\n },\n \"eu-west-2\": {\n description: \"Europe (London)\"\n },\n \"eu-west-3\": {\n description: \"Europe (Paris)\"\n },\n \"il-central-1\": {\n description: \"Israel (Tel Aviv)\"\n },\n \"me-central-1\": {\n description: \"Middle East (UAE)\"\n },\n \"me-south-1\": {\n description: \"Middle East (Bahrain)\"\n },\n \"sa-east-1\": {\n description: \"South America (Sao Paulo)\"\n },\n \"us-east-1\": {\n description: \"US East (N. Virginia)\"\n },\n \"us-east-2\": {\n description: \"US East (Ohio)\"\n },\n \"us-west-1\": {\n description: \"US West (N. California)\"\n },\n \"us-west-2\": {\n description: \"US West (Oregon)\"\n }\n }\n }, {\n id: \"aws-cn\",\n outputs: {\n dnsSuffix: \"amazonaws.com.cn\",\n dualStackDnsSuffix: \"api.amazonwebservices.com.cn\",\n implicitGlobalRegion: \"cn-northwest-1\",\n name: \"aws-cn\",\n supportsDualStack: true,\n supportsFIPS: true\n },\n regionRegex: \"^cn\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {\n \"aws-cn-global\": {\n description: \"AWS China global region\"\n },\n \"cn-north-1\": {\n description: \"China (Beijing)\"\n },\n \"cn-northwest-1\": {\n description: \"China (Ningxia)\"\n }\n }\n }, {\n id: \"aws-us-gov\",\n outputs: {\n dnsSuffix: \"amazonaws.com\",\n dualStackDnsSuffix: \"api.aws\",\n implicitGlobalRegion: \"us-gov-west-1\",\n name: \"aws-us-gov\",\n supportsDualStack: true,\n supportsFIPS: true\n },\n regionRegex: \"^us\\\\-gov\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {\n \"aws-us-gov-global\": {\n description: \"AWS GovCloud (US) global region\"\n },\n \"us-gov-east-1\": {\n description: \"AWS GovCloud (US-East)\"\n },\n \"us-gov-west-1\": {\n description: \"AWS GovCloud (US-West)\"\n }\n }\n }, {\n id: \"aws-iso\",\n outputs: {\n dnsSuffix: \"c2s.ic.gov\",\n dualStackDnsSuffix: \"c2s.ic.gov\",\n implicitGlobalRegion: \"us-iso-east-1\",\n name: \"aws-iso\",\n supportsDualStack: false,\n supportsFIPS: true\n },\n regionRegex: \"^us\\\\-iso\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {\n \"aws-iso-global\": {\n description: \"AWS ISO (US) global region\"\n },\n \"us-iso-east-1\": {\n description: \"US ISO East\"\n },\n \"us-iso-west-1\": {\n description: \"US ISO WEST\"\n }\n }\n }, {\n id: \"aws-iso-b\",\n outputs: {\n dnsSuffix: \"sc2s.sgov.gov\",\n dualStackDnsSuffix: \"sc2s.sgov.gov\",\n implicitGlobalRegion: \"us-isob-east-1\",\n name: \"aws-iso-b\",\n supportsDualStack: false,\n supportsFIPS: true\n },\n regionRegex: \"^us\\\\-isob\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {\n \"aws-iso-b-global\": {\n description: \"AWS ISOB (US) global region\"\n },\n \"us-isob-east-1\": {\n description: \"US ISOB East (Ohio)\"\n }\n }\n }, {\n id: \"aws-iso-e\",\n outputs: {\n dnsSuffix: \"cloud.adc-e.uk\",\n dualStackDnsSuffix: \"cloud.adc-e.uk\",\n implicitGlobalRegion: \"eu-isoe-west-1\",\n name: \"aws-iso-e\",\n supportsDualStack: false,\n supportsFIPS: true\n },\n regionRegex: \"^eu\\\\-isoe\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {}\n }, {\n id: \"aws-iso-f\",\n outputs: {\n dnsSuffix: \"csp.hci.ic.gov\",\n dualStackDnsSuffix: \"csp.hci.ic.gov\",\n implicitGlobalRegion: \"us-isof-south-1\",\n name: \"aws-iso-f\",\n supportsDualStack: false,\n supportsFIPS: true\n },\n regionRegex: \"^us\\\\-isof\\\\-\\\\w+\\\\-\\\\d+$\",\n regions: {}\n }],\n version: \"1.1\"\n};\n\n// src/lib/aws/partition.ts\nvar selectedPartitionsInfo = partitions_default;\nvar selectedUserAgentPrefix = \"\";\nvar partition = /* @__PURE__ */ __name((value) => {\n const { partitions } = selectedPartitionsInfo;\n for (const partition2 of partitions) {\n const { regions, outputs } = partition2;\n for (const [region, regionData] of Object.entries(regions)) {\n if (region === value) {\n return {\n ...outputs,\n ...regionData\n };\n }\n }\n }\n for (const partition2 of partitions) {\n const { regionRegex, outputs } = partition2;\n if (new RegExp(regionRegex).test(value)) {\n return {\n ...outputs\n };\n }\n }\n const DEFAULT_PARTITION = partitions.find((partition2) => partition2.id === \"aws\");\n if (!DEFAULT_PARTITION) {\n throw new Error(\n \"Provided region was not found in the partition array or regex, and default partition with id 'aws' doesn't exist.\"\n );\n }\n return {\n ...DEFAULT_PARTITION.outputs\n };\n}, \"partition\");\nvar setPartitionInfo = /* @__PURE__ */ __name((partitionsInfo, userAgentPrefix = \"\") => {\n selectedPartitionsInfo = partitionsInfo;\n selectedUserAgentPrefix = userAgentPrefix;\n}, \"setPartitionInfo\");\nvar useDefaultPartitionInfo = /* @__PURE__ */ __name(() => {\n setPartitionInfo(partitions_default, \"\");\n}, \"useDefaultPartitionInfo\");\nvar getUserAgentPrefix = /* @__PURE__ */ __name(() => selectedUserAgentPrefix, \"getUserAgentPrefix\");\n\n// src/aws.ts\nvar awsEndpointFunctions = {\n isVirtualHostableS3Bucket,\n parseArn,\n partition\n};\nimport_util_endpoints.customEndpointFunctions.aws = awsEndpointFunctions;\n\n// src/resolveEndpoint.ts\n\n\n// src/types/EndpointError.ts\n\n\n// src/types/EndpointRuleObject.ts\n\n\n// src/types/ErrorRuleObject.ts\n\n\n// src/types/RuleSetObject.ts\n\n\n// src/types/TreeRuleObject.ts\n\n\n// src/types/shared.ts\n\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n awsEndpointFunctions,\n partition,\n setPartitionInfo,\n useDefaultPartitionInfo,\n getUserAgentPrefix,\n isIpAddress,\n resolveEndpoint,\n EndpointError\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n UA_APP_ID_ENV_NAME: () => UA_APP_ID_ENV_NAME,\n UA_APP_ID_INI_NAME: () => UA_APP_ID_INI_NAME,\n crtAvailability: () => crtAvailability,\n defaultUserAgent: () => defaultUserAgent\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_node_config_provider = require(\"@smithy/node-config-provider\");\nvar import_os = require(\"os\");\nvar import_process = require(\"process\");\n\n// src/crt-availability.ts\nvar crtAvailability = {\n isCrtAvailable: false\n};\n\n// src/is-crt-available.ts\nvar isCrtAvailable = /* @__PURE__ */ __name(() => {\n if (crtAvailability.isCrtAvailable) {\n return [\"md/crt-avail\"];\n }\n return null;\n}, \"isCrtAvailable\");\n\n// src/index.ts\nvar UA_APP_ID_ENV_NAME = \"AWS_SDK_UA_APP_ID\";\nvar UA_APP_ID_INI_NAME = \"sdk-ua-app-id\";\nvar defaultUserAgent = /* @__PURE__ */ __name(({ serviceId, clientVersion }) => {\n const sections = [\n // sdk-metadata\n [\"aws-sdk-js\", clientVersion],\n // ua-metadata\n [\"ua\", \"2.0\"],\n // os-metadata\n [`os/${(0, import_os.platform)()}`, (0, import_os.release)()],\n // language-metadata\n // ECMAScript edition doesn't matter in JS, so no version needed.\n [\"lang/js\"],\n [\"md/nodejs\", `${import_process.versions.node}`]\n ];\n const crtAvailable = isCrtAvailable();\n if (crtAvailable) {\n sections.push(crtAvailable);\n }\n if (serviceId) {\n sections.push([`api/${serviceId}`, clientVersion]);\n }\n if (import_process.env.AWS_EXECUTION_ENV) {\n sections.push([`exec-env/${import_process.env.AWS_EXECUTION_ENV}`]);\n }\n const appIdPromise = (0, import_node_config_provider.loadConfig)({\n environmentVariableSelector: (env2) => env2[UA_APP_ID_ENV_NAME],\n configFileSelector: (profile) => profile[UA_APP_ID_INI_NAME],\n default: void 0\n })();\n let resolvedUserAgent = void 0;\n return async () => {\n if (!resolvedUserAgent) {\n const appId = await appIdPromise;\n resolvedUserAgent = appId ? [...sections, [`app/${appId}`]] : [...sections];\n }\n return resolvedUserAgent;\n };\n}, \"defaultUserAgent\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n crtAvailability,\n UA_APP_ID_ENV_NAME,\n UA_APP_ID_INI_NAME,\n defaultUserAgent\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Database = void 0;\nconst entity_1 = require(\"./entity\");\nconst relationship_1 = require(\"./relationship\");\nclass Database {\n static entitiesOnly(entities) {\n return new Database(entities, relationship_1.NO_RELATIONSHIPS);\n }\n constructor(entities, relationships) {\n this.idCtr = 0;\n this.schema = {\n ...entities,\n ...relationships({\n relationship: (fromKey, toKey) => (0, relationship_1.relationshipCollection)((id) => this.get(fromKey, id), (id) => this.get(toKey, id)),\n }),\n };\n }\n id() {\n return `${this.idCtr++}`;\n }\n /**\n * Allocate an ID and store\n */\n allocate(key, entity) {\n return this.store(key, this.e(entity));\n }\n /**\n * Store with a preallocated ID\n */\n store(key, entity) {\n const coll = this.schema[key];\n coll.add(entity);\n return entity;\n }\n /**\n * Get an entity by key\n */\n get(key, id) {\n const coll = this.schema[key];\n const ret = coll.entities.get(typeof id === 'string' ? id : id.$ref);\n if (!ret) {\n throw new Error(`No such ${String(key)}: ${id}`);\n }\n return ret;\n }\n /**\n * All entities of a given type\n */\n all(key) {\n const coll = this.schema[key];\n return Array.from(coll.entities.values());\n }\n /**\n * Lookup an entity by index\n */\n lookup(key, index, lookup, value) {\n const coll = this.schema[key];\n const ids = coll.indexes[index].lookups[lookup](value);\n return addOnlyMethod(ids.map((id) => coll.entities.get(id)), `${String(key)} with ${String(index)} ${String(lookup)} ${JSON.stringify(value)}`);\n }\n /**\n * Allocate an ID and store if the entity does not yet exist\n */\n findOrAllocate(key, index, lookup, entity) {\n const res = this.lookup(key, index, lookup, entity[index]);\n if (res.length) {\n return res.only();\n }\n return this.allocate(key, entity);\n }\n link(key, from, to, attributes) {\n const col = this.schema[key];\n col.add(from, to, attributes);\n }\n /**\n * Follow a link\n */\n follow(key, from) {\n var _a;\n const col = this.schema[key];\n const toLinks = (_a = col.forward.get(from.$id)) !== null && _a !== void 0 ? _a : [];\n const ret = toLinks.map((i) => ({ entity: col.toColl(i.$id), ...removeId(i) }));\n return addOnlyMethod(ret, `${String(key)} from ${from}`);\n }\n /**\n * Follow incoming links backwards\n */\n incoming(key, to) {\n var _a;\n const col = this.schema[key];\n const fromIds = (_a = col.backward.get(to.$id)) !== null && _a !== void 0 ? _a : [];\n const ret = fromIds.map((i) => ({ entity: col.fromColl(i.$id), ...removeId(i) }));\n return addOnlyMethod(ret, `${String(key)} to ${to}`);\n }\n e(entity) {\n return {\n $id: this.id(),\n ...entity,\n };\n }\n /**\n * Turn the current database collection into something that can be stored.\n */\n save() {\n return {\n idCtr: this.idCtr,\n schema: dehydrate(this.schema),\n };\n function dehydrate(x) {\n if ((0, entity_1.isEntityCollection)(x)) {\n return x.dehydrate();\n }\n if ((0, relationship_1.isRelationshipCollection)(x)) {\n return x.dehydrate();\n }\n if (Array.isArray(x)) {\n return x.map(dehydrate);\n }\n if (!!x && typeof x === 'object') {\n return Object.fromEntries(Object.entries(x).map(([k, v]) => [k, dehydrate(v)]));\n }\n return x;\n }\n }\n load(db) {\n this.idCtr = db.idCtr;\n hydrate(this.schema, db.schema);\n function hydrate(proto, x) {\n if ((0, entity_1.isEntityCollection)(proto)) {\n proto.hydrateFrom(x);\n }\n if ((0, relationship_1.isRelationshipCollection)(proto)) {\n proto.hydrateFrom(x);\n }\n if (Array.isArray(x)) {\n x.forEach(hydrate);\n }\n if (!!proto && typeof proto === 'object' && !!x && typeof x === 'object') {\n for (const [k, v] of Object.entries(proto)) {\n hydrate(v, x[k]);\n }\n }\n }\n }\n}\nexports.Database = Database;\nfunction removeId(x) {\n const ret = { ...x };\n delete ret.$id;\n return ret;\n}\nfunction addOnlyMethod(xs, description) {\n return Object.defineProperties(xs, {\n only: {\n enumerable: false,\n value: () => {\n if (xs.length !== 1) {\n throw new Error(`Expected exactly 1 ${description}, found ${xs.length}`);\n }\n return xs[0];\n },\n },\n });\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvZGF0YWJhc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQXVHO0FBQ3ZHLGlEQU13QjtBQVN4QixNQUFhLFFBQVE7SUFDWixNQUFNLENBQUMsWUFBWSxDQUFvQixRQUFZO1FBQ3hELE9BQU8sSUFBSSxRQUFRLENBQUMsUUFBUSxFQUFFLCtCQUFnQixDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUtELFlBQVksUUFBWSxFQUFFLGFBQWtEO1FBRnBFLFVBQUssR0FBRyxDQUFDLENBQUM7UUFHaEIsSUFBSSxDQUFDLE1BQU0sR0FBRztZQUNaLEdBQUcsUUFBUTtZQUNYLEdBQUcsYUFBYSxDQUFDO2dCQUNmLFlBQVksRUFBRSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUMvQixJQUFBLHFDQUFzQixFQUNwQixDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLEVBQzdCLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FDNUI7YUFDSixDQUFDO1NBQ0gsQ0FBQztJQUNKLENBQUM7SUFFTSxFQUFFO1FBQ1AsT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDO0lBQzNCLENBQUM7SUFFRDs7T0FFRztJQUNJLFFBQVEsQ0FBcUIsR0FBTSxFQUFFLE1BQWdDO1FBQzFFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7T0FFRztJQUNJLEtBQUssQ0FBcUIsR0FBTSxFQUFFLE1BQXlCO1FBQ2hFLE1BQU0sSUFBSSxHQUEwQixJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBUSxDQUFD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bnQiOlsiaW1wb3J0IHsgRW50aXR5LCBFbnRpdHlDb2xsZWN0aW9uLCBFbnRpdHlJbmRleCwgaXNFbnRpdHlDb2xsZWN0aW9uLCBQbGFpbiwgUmVmZXJlbmNlIH0gZnJvbSAnLi9lbnRpdHknO1xuaW1wb3J0IHtcbiAgaXNSZWxhdGlvbnNoaXBDb2xsZWN0aW9uLFxuICBOT19SRUxBVElPTlNISVBTLFxuICBSZWxhdGlvbnNoaXAsXG4gIHJlbGF0aW9uc2hpcENvbGxlY3Rpb24sXG4gIFJlbGF0aW9uc2hpcENvbGxlY3Rpb24sXG59IGZyb20gJy4vcmVsYXRpb25zaGlwJztcblxuZXhwb3J0IGludGVyZmFjZSBSZWxhdGlvbnNoaXBzQnVpbGRlcjxFUyBleHRlbmRzIG9iamVjdD4ge1xuICByZWxhdGlvbnNoaXA8UiBleHRlbmRzIFJlbGF0aW9uc2hpcDxhbnksIGFueSwgYW55Pj4oXG4gICAgZnJvbUtleTogS2V5c0ZvcjxFUywgRW50aXR5Q29sbGVjdGlvbjxSWydmcm9tJ10sIGFueT4+LFxuICAgIHRvS2V5OiBLZXlzRm9yPEVTLCBFbnRpdHlDb2xsZWN0aW9uPFJbJ3RvJ10sIGFueT4+LFxuICApOiBSZWxhdGlvbnNoaXBDb2xsZWN0aW9uPFI+O1xufVxuXG5leHBvcnQgY2xhc3MgRGF0YWJhc2U8RVMgZXh0ZW5kcyBvYmplY3QsIFJTIGV4dGVuZHMgb2JqZWN0PiB7XG4gIHB1YmxpYyBzdGF0aWMgZW50aXRpZXNPbmx5PEVTIGV4dGVuZHMgb2JqZWN0PihlbnRpdGllczogRVMpOiBEYXRhYmFzZTxFUywge30+IHtcbiAgICByZXR1cm4gbmV3IERhdGFiYXNlKGVudGl0aWVzLCBOT19SRUxBVElPTlNISVBTKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2NoZW1hOiBFUyAmIFJTO1xuICBwcml2YXRlIGlkQ3RyID0gMDtcblxuICBjb25zdHJ1Y3RvcihlbnRpdGllczogRVMsIHJlbGF0aW9uc2hpcHM6ICh4OiBSZWxhdGlvbnNoaXBzQnVpbGRlcjxFUz4pID0+IFJTKSB7XG4gICAgdGhpcy5zY2hlbWEgPSB7XG4gICAgICAuLi5lbnRpdGllcyxcbiAgICAgIC4uLnJlbGF0aW9uc2hpcHMoe1xuICAgICAgICByZWxhdGlvbnNoaXA6IChmcm9tS2V5LCB0b0tleSkgPT5cbiAgICAgICAgICByZWxhdGlvbnNoaXBDb2xsZWN0aW9uKFxuICAgICAgICAgICAgKGlkKSA9PiB0aGlzLmdldChmcm9tS2V5LCBpZCksXG4gICAgICAgICAgICAoaWQpID0+IHRoaXMuZ2V0KHRvS2V5LCBpZCksXG4gICAgICAgICAgKSxcbiAgICAgIH0pLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgaWQoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuaWRDdHIrK31gO1xuICB9XG5cbiAgLyoqXG4gICAqIEFsbG9jYXRlIGFuIElEIGFuZCBzdG9yZVxuICAgKi9cbiAgcHVibGljIGFsbG9jYXRlPEsgZXh0ZW5kcyBrZXlvZiBFUz4oa2V5OiBLLCBlbnRpdHk6IFBsYWluPEVudGl0eVR5cGU8RVNbS10+Pik6IEVudGl0eVR5cGU8RVNbS10+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9yZShrZXksIHRoaXMuZShlbnRpdHkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTdG9yZSB3aXRoIGEgcHJlYWxsb2NhdGVkIElEXG4gICAqL1xuICBwdWJsaWMgc3RvcmU8SyBleHRlbmRzIGtleW9mIEVTPihrZXk6IEssIGVudGl0eTogRW50aXR5VHlwZTxFU1tLXT4pOiBFbnRpdHlUeXBlPEVTW0tdPiB7XG4gICAgY29uc3QgY29sbDogRW50aXR5Q29sbGVjdGlvbjxhbnk+ID0gdGhpcy5zY2hlbWFba2V5XSBhcyBhbnk7XG4gICAgY29sbC5hZGQoZW50aXR5KTtcbiAgICByZXR1cm4gZW50aXR5IGFzIGFueTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgYW4gZW50aXR5IGJ5IGtleVxuICAgKi9cbiAgcHVibGljIGdldDxLIGV4dGVuZHMga2V5b2YgRVM+KGtleTogSywgaWQ6IHN0cmluZyB8IFJlZmVyZW5jZTxFbnRpdHlUeXBlPEVTW0tdPj4pOiBFbnRpdHlUeXBlPEVTW0tdPiB7XG4gICAgY29uc3QgY29sbDogRW50aXR5Q29sbGVjdGlvbjxhbnk+ID0gdGhpcy5zY2hlbWFba2V5XSBhcyBhbnk7XG4gICAgY29uc3QgcmV0ID0gY29sbC5lbnRpdGllcy5nZXQodHlwZW9mIGlkID09PSAnc3RyaW5nJyA/IGlkIDogaWQuJHJlZik7XG4gICAgaWYgKCFyZXQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gc3VjaCAke1N0cmluZyhrZXkpfTogJHtpZH1gKTtcbiAgICB9XG4gICAgcmV0dXJuIHJldDtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbGwgZW50aXRpZXMgb2YgYSBnaXZlbiB0eXBlXG4gICAqL1xuICBwdWJsaWMgYWxsPEsgZXh0ZW5kcyBrZXlvZiBFUz4oa2V5OiBLKTogQXJyYXk8RW50aXR5VHlwZTxFU1tLXT4+IHtcbiAgICBjb25zdCBjb2xsOiBFbnRpdHlDb2xsZWN0aW9uPGFueT4gPSB0aGlzLnNjaGVtYVtrZXldIGFzIGFueTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShjb2xsLmVudGl0aWVzLnZhbHVlcygpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb29rdXAgYW4gZW50aXR5IGJ5IGluZGV4XG4gICAqL1xuICBwdWJsaWMgbG9va3VwPEsgZXh0ZW5kcyBrZXlvZiBFUywgSSBleHRlbmRzIEluZGV4TmFtZXNPZjxFU1tLXT4+KFxuICAgIGtleTogSyxcbiAgICBpbmRleDogSSxcbiAgICBsb29rdXA6IEluZGV4T2Y8RVNbS10sIEk+Wydsb29rdXBzJ10sXG4gICAgdmFsdWU6IEluZGV4T2Y8RVNbS10sIEk+Wyd2YWx1ZVR5cGUnXSxcbiAgKTogUmljaFJlYWRvbmx5QXJyYXk8RW50aXR5VHlwZTxFU1tLXT4+IHtcbiAgICBjb25zdCBjb2xsOiBFbnRpdHlDb2xsZWN0aW9uPGFueT4gPSB0aGlzLnNjaGVtYVtrZXldIGFzIGFueTtcbiAgICBjb25zdCBpZHMgPSAoY29sbC5pbmRleGVzIGFzIGFueSlbaW5kZXhdLmxvb2t1cHNbbG9va3VwXSh2YWx1ZSk7XG4gICAgcmV0dXJuIGFkZE9ubHlNZXRob2QoXG4gICAgICBpZHMubWFwKChpZDogc3RyaW5nKSA9PiBjb2xsLmVudGl0aWVzLmdldChpZCkpLFxuICAgICAgYCR7U3RyaW5nKGtleSl9IHdpdGggJHtTdHJpbmcoaW5kZXgpfSAke1N0cmluZyhsb29rdXApfSAke0pTT04uc3RyaW5naWZ5KHZhbHVlKX1gLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWxsb2NhdGUgYW4gSUQgYW5kIHN0b3JlIGlmIHRoZSBlbnRpdHkgZG9lcyBub3QgeWV0IGV4aXN0XG4gICAqL1xuICBwdWJsaWMgZmluZE9yQWxsb2NhdGU8SyBleHRlbmRzIGtleW9mIEVTLCBJIGV4dGVuZHMga2V5b2YgUGxhaW48RW50aXR5VHlwZTxFU1tLXT4+ICYgSW5kZXhOYW1lc09mPEVTW0tdPj4oXG4gICAga2V5OiBLLFxuICAgIGluZGV4OiBJLFxuICAgIGxvb2t1cDogSW5kZXhPZjxFU1tLXSwgST5bJ2xvb2t1cHMnXSxcbiAgICBlbnRpdHk6IFBsYWluPEVudGl0eVR5cGU8RVNbS10+PixcbiAgKTogRW50aXR5VHlwZTxFU1tLXT4ge1xuICAgIGNvbnN0IHJlcyA9IHRoaXMubG9va3VwKGtleSwgaW5kZXgsIGxvb2t1cCwgZW50aXR5W2luZGV4XSk7XG4gICAgaWYgKHJlcy5sZW5ndGgpIHtcbiAgICAgIHJldHVybiByZXMub25seSgpO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5hbGxvY2F0ZShrZXksIGVudGl0eSk7XG4gIH1cblxuICAvKipcbiAgICogUmVjb3JkIGEgcmVsYXRpb25zaGlwIGJldHdlZW4gdHdvIGVudGl0aWVzXG4gICAqXG4gICAqIE92ZXJsb2FkIHRvIGFjY291bnQgZm9yIHdoZXRoZXIgd2UgaGF2ZSBhdHRyaWJ1dGVzIG9yIG5vdC5cbiAgICovXG4gIHB1YmxpYyBsaW5rPEsgZXh0ZW5kcyBSZWxXQXR0cnM8UlM+PihcbiAgICBrZXk6IEssXG4gICAgZnJvbTogUmVsVHlwZTxSU1tLXT5bJ2Zyb20nXSxcbiAgICB0bzogUmVsVHlwZTxSU1tLXT5bJ3RvJ10sXG4gICAgYXR0cmlidXRlczogUmVsVHlwZTxSU1tLXT5bJ2F0dHInXSxcbiAgKTogdm9pZDtcbiAgcHVibGljIGxpbms8SyBleHRlbmRzIFJlbFdvQXR0cnM8UlM+PihrZXk6IEssIGZyb206IFJlbFR5cGU8UlNbS10+Wydmcm9tJ10sIHRvOiBSZWxUeXBlPFJTW0tdPlsndG8nXSk6IHZvaWQ7XG4gIHB1YmxpYyBsaW5rPEsgZXh0ZW5kcyBrZXlvZiBSUz4oXG4gICAga2V5OiBLLFxuICAgIGZyb206IFJlbFR5cGU8UlNbS10+Wydmcm9tJ10sXG4gICAgdG86IFJlbFR5cGU8UlNbS10+Wyd0byddLFxuICAgIGF0dHJpYnV0ZXM/OiBSZWxUeXBlPFJTW0tdPlsnYXR0ciddLFxuICApIHtcbiAgICBjb25zdCBjb2w6IFJlbGF0aW9uc2hpcENvbGxlY3Rpb248YW55PiA9IHRoaXMuc2NoZW1hW2tleV0gYXMgYW55O1xuICAgIGNvbC5hZGQoZnJvbSwgdG8sIGF0dHJpYnV0ZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZvbGxvdyBhIGxpbmtcbiAgICovXG4gIHB1YmxpYyBmb2xsb3c8SyBleHRlbmRzIGtleW9mIFJTPihcbiAgICBrZXk6IEssXG4gICAgZnJvbTogUmVsVHlwZTxSU1tLXT5bJ2Zyb20nXSxcbiAgKTogUmljaFJlYWRvbmx5QXJyYXk8TGluazxSZWxUeXBlPFJTW0tdPlsndG8nXSwgUmVsVHlwZTxSU1tLXT5bJ2F0dHInXT4+IHtcbiAgICBjb25zdCBjb2w6IFJlbGF0aW9uc2hpcENvbGxlY3Rpb248YW55PiA9IHRoaXMuc2NoZW1hW2tleV0gYXMgYW55O1xuICAgIGNvbnN0IHRvTGlua3MgPSBjb2wuZm9yd2FyZC5nZXQoZnJvbS4kaWQpID8/IFtdO1xuICAgIGNvbnN0IHJldCA9IHRvTGlua3MubWFwKChpKSA9PiAoeyBlbnRpdHk6IGNvbC50b0NvbGwoaS4kaWQpLCAuLi5yZW1vdmVJZChpKSB9IGFzIGFueSkpO1xuXG4gICAgcmV0dXJuIGFkZE9ubHlNZXRob2QocmV0LCBgJHtTdHJpbmcoa2V5KX0gZnJvbSAke2Zyb219YCk7XG4gIH1cblxuICAvKipcbiAgICogRm9sbG93IGluY29taW5nIGxpbmtzIGJhY2t3YXJkc1xuICAgKi9cbiAgcHVibGljIGluY29taW5nPEsgZXh0ZW5kcyBrZXlvZiBSUz4oXG4gICAga2V5OiBLLFxuICAgIHRvOiBSZWxUeXBlPFJTW0tdPlsndG8nXSxcbiAgKTogUmljaFJlYWRvbmx5QXJyYXk8TGluazxSZWxUeXBlPFJTW0tdPlsnZnJvbSddLCBSZWxUeXBlPFJTW0tdPlsnYXR0ciddPj4ge1xuICAgIGNvbnN0IGNvbDogUmVsYXRpb25zaGlwQ29sbGVjdGlvbjxhbnk+ID0gdGhpcy5zY2hlbWFba2V5XSBhcyBhbnk7XG4gICAgY29uc3QgZnJvbUlkcyA9IGNvbC5iYWNrd2FyZC5nZXQodG8uJGlkKSA/PyBbXTtcbiAgICBjb25zdCByZXQgPSBmcm9tSWRzLm1hcCgoaSkgPT4gKHsgZW50aXR5OiBjb2wuZnJvbUNvbGwoaS4kaWQpLCAuLi5yZW1vdmVJZChpKSB9IGFzIGFueSkpO1xuXG4gICAgcmV0dXJuIGFkZE9ubHlNZXRob2QocmV0LCBgJHtTdHJpbmcoa2V5KX0gdG8gJHt0b31gKTtcbiAgfVxuXG4gIHB1YmxpYyBlPEUgZXh0ZW5kcyBFbnRpdHk+KGVudGl0eTogUGxhaW48RT4pOiBFIHtcbiAgICByZXR1cm4ge1xuICAgICAgJGlkOiB0aGlzLmlkKCksXG4gICAgICAuLi5lbnRpdHksXG4gICAgfSBhcyBhbnk7XG4gIH1cblxuICAvKipcbiAgICogVHVybiB0aGUgY3VycmVudCBkYXRhYmFzZSBjb2xsZWN0aW9uIGludG8gc29tZXRoaW5nIHRoYXQgY2FuIGJlIHN0b3JlZC5cbiAgICovXG4gIHB1YmxpYyBzYXZlKCk6IERlaHlkcmF0ZWREYXRhYmFzZSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGlkQ3RyOiB0aGlzLmlkQ3RyLFxuICAgICAgc2NoZW1hOiBkZWh5ZHJhdGUodGhpcy5zY2hlbWEpLFxuICAgIH07XG5cbiAgICBmdW5jdGlvbiBkZWh5ZHJhdGUoeDogdW5rbm93bik6IGFueSB7XG4gICAgICBpZiAoaXNFbnRpdHlDb2xsZWN0aW9uKHgpKSB7XG4gICAgICAgIHJldHVybiB4LmRlaHlkcmF0ZSgpO1xuICAgICAgfVxuICAgICAgaWYgKGlzUmVsYXRpb25zaGlwQ29sbGVjdGlvbih4KSkge1xuICAgICAgICByZXR1cm4geC5kZWh5ZHJhdGUoKTtcbiAgICAgIH1cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHgpKSB7XG4gICAgICAgIHJldHVybiB4Lm1hcChkZWh5ZHJhdGUpO1xuICAgICAgfVxuICAgICAgaWYgKCEheCAmJiB0eXBlb2YgeCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5mcm9tRW50cmllcyhPYmplY3QuZW50cmllcyh4KS5tYXAoKFtrLCB2XSkgPT4gW2ssIGRlaHlkcmF0ZSh2KV0pKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB4O1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBsb2FkKGRiOiBEZWh5ZHJhdGVkRGF0YWJhc2UpIHtcbiAgICB0aGlzLmlkQ3RyID0gZGIuaWRDdHI7XG4gICAgaHlkcmF0ZSh0aGlzLnNjaGVtYSwgZGIuc2NoZW1hKTtcblxuICAgIGZ1bmN0aW9uIGh5ZHJhdGUocHJvdG86IHVua25vd24sIHg6IHVua25vd24pOiB2b2lkIHtcbiAgICAgIGlmIChpc0VudGl0eUNvbGxlY3Rpb24ocHJvdG8pKSB7XG4gICAgICAgIHByb3RvLmh5ZHJhdGVGcm9tKHgpO1xuICAgICAgfVxuICAgICAgaWYgKGlzUmVsYXRpb25zaGlwQ29sbGVjdGlvbihwcm90bykpIHtcbiAgICAgICAgcHJvdG8uaHlkcmF0ZUZyb20oeCk7XG4gICAgICB9XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh4KSkge1xuICAgICAgICB4LmZvckVhY2goaHlkcmF0ZSk7XG4gICAgICB9XG4gICAgICBpZiAoISFwcm90byAmJiB0eXBlb2YgcHJvdG8gPT09ICdvYmplY3QnICYmICEheCAmJiB0eXBlb2YgeCA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgZm9yIChjb25zdCBbaywgdl0gb2YgT2JqZWN0LmVudHJpZXMocHJvdG8pKSB7XG4gICAgICAgICAgaHlkcmF0ZSh2LCAoeCBhcyBhbnkpW2tdKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5pbnRlcmZhY2UgRGVoeWRyYXRlZERhdGFiYXNlIHtcbiAgcmVhZG9ubHkgaWRDdHI6IG51bWJlcjtcbiAgcmVhZG9ubHkgc2NoZW1hOiBhbnk7XG59XG5cbmZ1bmN0aW9uIHJlbW92ZUlkPEEgZXh0ZW5kcyBvYmplY3Q+KHg6IEEpOiBPbWl0PEEsICckaWQnPiB7XG4gIGNvbnN0IHJldCA9IHsgLi4ueCB9O1xuICBkZWxldGUgKHJldCBhcyBhbnkpLiRpZDtcbiAgcmV0dXJuIHJldDtcbn1cblxuZXhwb3J0IHR5cGUgTGluazxFLCBBPiA9IHsgcmVhZG9ubHkgZW50aXR5OiBFIH0gJiBBO1xuXG50eXBlIFJlbFdBdHRyczxSUz4gPSB7IFtLIGluIGtleW9mIFJTXToge30gZXh0ZW5kcyBSZWxUeXBlPFJTW0tdPlsnYXR0ciddID8gbmV2ZXIgOiBLIH1ba2V5b2YgUlNdO1xudHlwZSBSZWxXb0F0dHJzPFJTPiA9IHsgW0sgaW4ga2V5b2YgUlNdOiB7fSBleHRlbmRzIFJlbFR5cGU8UlNbS10+WydhdHRyJ10gPyBLIDogbmV2ZXIgfVtrZXlvZiBSU107XG5cbi8vIE5lY2Vzc2FyeSBiZWNhdXNlIHRoaXMgdHlwZSBtaWdodCBiZSBhIHVuaW9uXG50eXBlIEluZGV4TmFtZXNPZjxBPiA9IEEgZXh0ZW5kcyBFbnRpdHlDb2xsZWN0aW9uPGFueT4gPyBLZXlzT2ZVbmlvbjxBWydpbmRleGVzJ10+IDogbmV2ZXI7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBwcmV0dGllci9wcmV0dGllclxudHlwZSBJbmRleE9mPEVDLCBJIGV4dGVuZHMgSW5kZXhOYW1lc09mPEVDPj4gPVxuICBFQyBleHRlbmRzIEVudGl0eUNvbGxlY3Rpb248YW55PlxuICA/IEVDWydpbmRleGVzJ11bSV0gZXh0ZW5kcyBFbnRpdHlJbmRleDxhbnksIGluZmVyIEluZGV4VHlwZT5cbiAgICA/IHtcbiAgICAgICAgdmFsdWVUeXBlOiBJbmRleFR5cGU7XG4gICAgICAgIGxvb2t1cHM6IGtleW9mIEVDWydpbmRleGVzJ11bSV1bJ2xvb2t1cHMnXTtcbiAgICAgIH1cbiAgICA6IG5ldmVyXG4gIDogbmV2ZXI7XG5cbnR5cGUgRW50aXR5VHlwZTxBPiA9IEEgZXh0ZW5kcyBFbnRpdHlDb2xsZWN0aW9uPGluZmVyIEI+ID8gQiA6IG5ldmVyO1xuXG50eXBlIFJlbFR5cGU8QT4gPSBBIGV4dGVuZHMgUmVsYXRpb25zaGlwQ29sbGVjdGlvbjxpbmZlciBSPiA/IFIgOiBuZXZlcjtcblxudHlwZSBSZXNvbHZlVW5pb248VD4gPSBUIGV4dGVuZHMgVCA/IFQgOiBuZXZlcjtcblxudHlwZSBLZXlzT2ZVbmlvbjxUPiA9IGtleW9mIFJlc29sdmVVbmlvbjxUPjtcblxuZXhwb3J0IHR5cGUgRW50aXRpZXNPZjxEQj4gPSBEQiBleHRlbmRzIERhdGFiYXNlPGluZmVyIEVTLCBhbnk+ID8geyBbayBpbiBrZXlvZiBFU106IEVudGl0eVR5cGU8RVNba10+IH0gOiB7fTtcblxuZXhwb3J0IGludGVyZmFjZSBSaWNoUmVhZG9ubHlBcnJheTxBPiBleHRlbmRzIFJlYWRvbmx5QXJyYXk8QT4ge1xuICAvKipcbiAgICogUmV0dXJuIHRoZSBmaXJzdCBhbmQgb25seSBlbGVtZW50LCB0aHJvd2luZyBpZiB0aGVyZSBhcmUgIT0gMSBlbGVtZW50c1xuICAgKi9cbiAgb25seSgpOiBBO1xufVxuXG5mdW5jdGlvbiBhZGRPbmx5TWV0aG9kPEE+KHhzOiBBW10sIGRlc2NyaXB0aW9uOiBzdHJpbmcpOiBSaWNoUmVhZG9ubHlBcnJheTxBPiB7XG4gIHJldHVybiBPYmplY3QuZGVmaW5lUHJvcGVydGllcyh4cywge1xuICAgIG9ubHk6IHtcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgdmFsdWU6ICgpID0+IHtcbiAgICAgICAgaWYgKHhzLmxlbmd0aCAhPT0gMSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgZXhhY3RseSAxICR7ZGVzY3JpcHRpb259LCBmb3VuZCAke3hzLmxlbmd0aH1gKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4geHNbMF07XG4gICAgICB9LFxuICAgIH0sXG4gIH0pIGFzIGFueTtcbn1cblxuLyoqXG4gKiBSZXR1cm4gdGhlIGtleXMgb2YgYW4gb2JqZWN0IHRoYXQgbWFwIHRvIGEgcGFydGljdWxhciB0eXBlXG4gKi9cbnR5cGUgS2V5c0ZvcjxPIGV4dGVuZHMgb2JqZWN0LCBUPiA9IHsgW2sgaW4ga2V5b2YgT106IE9ba10gZXh0ZW5kcyBUID8gayA6IG5ldmVyIH1ba2V5b2YgT107XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.optionalCmp = exports.numberCmp = exports.stringCmp = exports.ref = exports.isEntityCollection = exports.calculatedIndex = exports.fieldIndex = exports.entityCollection = void 0;\nconst sorted_map_1 = require(\"./sorted-map\");\nfunction entityCollection() {\n const entities = new Map();\n const _indexes = {};\n function add(x) {\n entities.set(x.$id, x);\n for (const index of Object.values(_indexes)) {\n // FIXME: why can't we type this?\n index.add(x);\n }\n }\n return {\n type: 'entities',\n entities,\n indexes: _indexes,\n add,\n dehydrate: () => ({\n type: 'entities',\n entities: Array.from(validatePlainObjects(entities).values()),\n }),\n hydrateFrom: (x) => {\n entities.clear();\n for (const e of Object.values(x.entities)) {\n add(e);\n }\n },\n index(indexes) {\n // This limitation exists purely because I couldn't type it otherwise.\n // Declaring a return type of `EntityCollection` would make a lot\n // of our other type inspection code stop working (the union is hard to pick\n // apart). Since adding indexes in multiple goes is not really a use case,\n // the simpler solution is just to type it as if we replaced all indexes\n // and add a runtime check to make sure the types aren't lying.\n if (Object.keys(_indexes).length > 0) {\n throw new Error('You may only call .index() once on a new collection');\n }\n Object.assign(_indexes, indexes);\n return this;\n },\n };\n}\nexports.entityCollection = entityCollection;\n/**\n * An index that uses the value of an entity's field\n */\nfunction fieldIndex(propName, comparator) {\n return calculatedIndex((x) => x[propName], comparator);\n}\nexports.fieldIndex = fieldIndex;\n/**\n * An index that is calculated based on a function applied to an entity\n */\nfunction calculatedIndex(fn, comparator) {\n const index = [];\n return {\n add: (x) => sorted_map_1.sortedMap.add(index, comparator, fn(x), x.$id),\n lookups: {\n equals: (value) => sorted_map_1.sortedMap.findAll(index, comparator, value),\n },\n index,\n };\n}\nexports.calculatedIndex = calculatedIndex;\nfunction isEntityCollection(x) {\n return typeof x === 'object' && !!x && x.type === 'entities';\n}\nexports.isEntityCollection = isEntityCollection;\nfunction validatePlainObjects(xs) {\n for (const x of xs.values()) {\n if (x.constructor !== Object) {\n throw new Error(`Entities should be plain-text objects, got instance of ${x.constructor}`);\n }\n }\n return xs;\n}\nfunction ref(x) {\n return typeof x === 'string' ? { $ref: x } : { $ref: x.$id };\n}\nexports.ref = ref;\n/**\n * Determines whether two strings are equivalent in the current or specified locale.\n */\nfunction stringCmp(a, b) {\n return a.localeCompare(b);\n}\nexports.stringCmp = stringCmp;\n/**\n * Determines whether two numbers are equivalent.\n */\nfunction numberCmp(a, b) {\n return a - b;\n}\nexports.numberCmp = numberCmp;\n/**\n * Creates a comparator to determine equivalent of two values, using a given comparator, but allows values to be optional.\n *\n * @param frontOrder If `true`, returns so that undefined values are ordered at the front. If `false`, undefined values are ordered at the back.\n */\nfunction optionalCmp(cmp, frontOrder = true) {\n return (a, b) => {\n if (a == undefined && b != undefined) {\n return frontOrder ? -1 : 1;\n }\n if (a != undefined && b == undefined) {\n return frontOrder ? 1 : -1;\n }\n if (a == undefined && b == undefined) {\n return 0;\n }\n return cmp(a, b);\n };\n}\nexports.optionalCmp = optionalCmp;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW50aXR5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2VudGl0eS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBeUQ7QUE0RXpELFNBQWdCLGdCQUFnQjtJQUM5QixNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBYSxDQUFDO0lBQ3RDLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUVwQixTQUFTLEdBQUcsQ0FBQyxDQUFJO1FBQ2YsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUMzQyxpQ0FBaUM7WUFDaEMsS0FBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN2QjtJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLFVBQVU7UUFDaEIsUUFBUTtRQUNSLE9BQU8sRUFBRSxRQUFlO1FBQ3hCLEdBQUc7UUFDSCxTQUFTLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztZQUNoQixJQUFJLEVBQUUsVUFBVTtZQUNoQixRQUFRLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztTQUM5RCxDQUFDO1FBQ0YsV0FBVyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDakIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ2pCLEtBQUssTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUU7Z0JBQ3pDLEdBQUcsQ0FBQyxDQUFRLENBQUMsQ0FBQzthQUNmO1FBQ0gsQ0FBQztRQUNELEtBQUssQ0FBQyxPQUFPO1lBQ1gsc0VBQXNFO1lBQ3RFLDRFQUE0RTtZQUM1RSw0RUFBNEU7WUFDNUUsMEVBQTBFO1lB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U0FBUyxFQUFFO1lBQ3BDLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQzVCO1FBQ0QsSUFBSSxDQUFDLElBQUksU0FBUyxJQUFJLENBQUMsSUFBSSxTQUFTLEVBQUU7WUFDcEMsT0FBTyxDQUFDLENBQUM7U0FDVjtRQUVELE9BQU8sR0FBRyxDQUFDLENBQUUsRUFBRSxDQUFFLENBQUMsQ0FBQztJQUNyQixDQUFDLENBQUM7QUFDSixDQUFDO0FBZEQsa0NBY0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzb3J0ZWRNYXAsIFNvcnRlZE11bHRpTWFwIH0gZnJvbSAnLi9zb3J0ZWQtbWFwJztcblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHkge1xuICByZWFkb25seSAkaWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgUGxhaW48RSBleHRlbmRzIEVudGl0eT4gPSBPbWl0PEUsICckaWQnPjtcblxudHlwZSBJbmRleGVzPEEgZXh0ZW5kcyBFbnRpdHk+ID0geyBbSyBpbiBQcm9wZXJ0eUtleV06IEVudGl0eUluZGV4PEEsIGFueT4gfTtcblxuZXhwb3J0IGludGVyZmFjZSBFbnRpdHlDb2xsZWN0aW9uPEEgZXh0ZW5kcyBFbnRpdHksIEkgZXh0ZW5kcyBJbmRleGVzPEVudGl0eT4gPSB7fT4ge1xuICByZWFkb25seSB0eXBlOiAnZW50aXRpZXMnO1xuICByZWFkb25seSBlbnRpdGllczogTWFwPHN0cmluZywgQT47XG4gIHJlYWRvbmx5IGluZGV4ZXM6IEk7XG5cbiAgYWRkKHg6IEEpOiB2b2lkO1xuICBkZWh5ZHJhdGUoKTogYW55O1xuICBoeWRyYXRlRnJvbSh4OiBhbnkpOiB2b2lkO1xuXG4gIC8qKlxuICAgKiBBZGQgaW5kZXhlcyB0byB0aGlzIGNvbGxlY3Rpb25cbiAgICpcbiAgICogQ3JlYXRpbmcgYW4gaW5kZXhlZCBjb2xsZWN0aW9uIGlzIGEgdHdvLXN0ZXAgb3BlcmF0aW9uIHNvIHRoYXQgd2UgY2FuIHNwZWNpZnkgdGhlXG4gICAqIEVudGl0eSB0eXBlLCBidXQgaW5mZXIgdGhlIGluZGV4IHR5cGVzIChUeXBlU2NyaXB0IGRvZXMgbm90IGFsbG93IGJvdGggc3BlY2lmeWluZyBBTkRcbiAgICogaW5mZXJyaW5nIGdlbmVyaWMgYXJndW1lbnRzIGluIGEgc2luZ2xlIGNhbGwpLlxuICAgKi9cbiAgaW5kZXg8SUkgZXh0ZW5kcyBJbmRleGVzPEE+PihpbmRleGVzOiBJSSk6IEVudGl0eUNvbGxlY3Rpb248QSwgSUk+O1xufVxuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgaW5kZXggb2JqZWN0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eUluZGV4PEEgZXh0ZW5kcyBFbnRpdHksIEluZGV4VHlwZT4ge1xuICAvKipcbiAgICogVGhlIGxvb2t1cHMgdGhhdCB0aGUgaW5kZXhlZCBmaWVsZCB0eXBlIGFmZm9yZHNcbiAgICpcbiAgICogRm9yIGV4YW1wbGUsICdlcXVhbHMnLCAnbGVzc1RoYW4nLCAncHJlZml4JywgZXRjLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9va3VwczogSW5kZXhMb29rdXBzPEluZGV4VHlwZT47XG5cbiAgLyoqXG4gICAqIFRoZSBpbmRleCBkYXRhIHN0b3JlXG4gICAqL1xuICByZWFkb25seSBpbmRleDogU29ydGVkTXVsdGlNYXA8SW5kZXhUeXBlLCBzdHJpbmc+O1xuXG4gIC8qKlxuICAgKiBBZGQgYW4gZW50aXR5IHRvIHRoZSBpbmRleFxuICAgKi9cbiAgYWRkKHg6IEEpOiB2b2lkO1xufVxuXG4vKipcbiAqIE1hcCBhIHR5cGUgdGhlIHR5cGVzIG9mIGxvb2t1cHMgd2UgY2FuIGRvIG9uIHRoYXQgdHlwZVxuICovXG5leHBvcnQgdHlwZSBJbmRleExvb2t1cHM8UD4gPSBbUF0gZXh0ZW5kcyBbc3RyaW5nXVxuICA/IFN0cmluZ0luZGV4TG9va3Vwc1xuICA6IFtQXSBleHRlbmRzIFtzdHJpbmcgfCB1bmRlZmluZWRdXG4gID8gT3B0aW9uYWxTdHJpbmdJbmRleExvb2t1cHNcbiAgOiB7fTtcblxuLyoqXG4gKiBBbGwgdGhlIGxvb2t1cHMgb24gJ3N0cmluZycgdHlwZXNcbiAqXG4gKiBXZSBjdXJyZW50bHkgb25seSBoYXZlICdlcXVhbHMnIGJ1dCB3ZSBjb3VsZCBoYXZlIG1vcmUgOilcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdHJpbmdJbmRleExvb2t1cHMge1xuICBlcXVhbHMoeDogc3RyaW5nKTogc3RyaW5nW107XG59XG5cbi8qKlxuICogQWxsIHRoZSBsb29rdXBzIG9uICdzdHJpbmcgfCB1bmRlZmluZWQnIHR5cGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW9uYWxTdHJpbmdJbmRleExvb2t1cHMge1xuICBlcXVhbHMoeDogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nW107XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlbnRpdHlDb2xsZWN0aW9uPEEgZXh0ZW5kcyBFbnRpdHk+KCk6IEVudGl0eUNvbGxlY3Rpb248QSwge30+IHtcbiAgY29uc3QgZW50aXRpZXMgPSBuZXcgTWFwPHN0cmluZywgQT4oKTtcbiAgY29uc3QgX2luZGV4ZXMgPSB7fTtcblxuICBmdW5jdGlvbiBhZGQoeDogQSkge1xuICAgIGVudGl0aWVzLnNldCh4LiRpZCwgeCk7XG4gICAgZm9yIChjb25zdCBpbmRleCBvZiBPYmplY3QudmFsdWVzKF9pbmRleGVzKSkge1xuICAgICAgLy8gRklYTUU6IHdoeSBjYW4ndCB3ZSB0eXBlIHRoaXM/XG4gICAgICAoaW5kZXggYXMgYW55KS5hZGQoeCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnZW50aXRpZXMnLFxuICAgIGVudGl0aWVzLFxuICAgIGluZGV4ZXM6IF9pbmRleGVzIGFzIGFueSxcbiAgICBhZGQsXG4gICAgZGVoeWRyYXRlOiAoKSA9PiAoe1xuICAgICAgdHlwZTogJ2VudGl0aWVzJyxcbiAgICAgIGVudGl0aWVzOiBBcnJheS5mcm9tKHZhbGlkYXRlUGxhaW5PYmplY3RzKGVudGl0aWVzKS52YWx1ZXMoKSksXG4gICAgfSksXG4gICAgaHlkcmF0ZUZyb206ICh4KSA9PiB7XG4gICAgICBlbnRpdGllcy5jbGVhcigpO1xuICAgICAgZm9yIChjb25zdCBlIG9mIE9iamVjdC52YWx1ZXMoeC5lbnRpdGllcykpIHtcbiAgICAgICAgYWRkKGUgYXMgYW55KTtcbiAgICAgIH1cbiAgICB9LFxuICAgIGluZGV4KGluZGV4ZXMpIHtcbiAgICAgIC8vIFRoaXMgbGltaXRhdGlvbiBleGlzdHMgcHVyZWx5IGJlY2F1c2UgSSBjb3VsZG4ndCB0eXBlIGl0IG90aGVyd2lzZS5cbiAgICAgIC8vIERlY2xhcmluZyBhIHJldHVybiB0eXBlIG9mIGBFbnRpdHlDb2xsZWN0aW9uPEEsIEkgfCBJST5gIHdvdWxkIG1ha2UgYSBsb3RcbiAgICAgIC8vIG9mIG91ciBvdGhlciB0eXBlIGluc3BlY3Rpb24gY29kZSBzdG9wIHdvcmtpbmcgKHRoZSB1bmlvbiBpcyBoYXJkIHRvIHBpY2tcbiAgICAgIC8vIGFwYXJ0KS4gU2luY2UgYWRkaW5nIGluZGV4ZXMgaW4gbXVsdGlwbGUgZ29lcyBpcyBub3QgcmVhbGx5IGEgdXNlIGNhc2UsXG4gICAgICAvLyB0aGUgc2ltcGxlciBzb2x1dGlvbiBpcyBqdXN0IHRvIHR5cGUgaXQgYXMgaWYgd2UgcmVwbGFjZWQgYWxsIGluZGV4ZXNcbiAgICAgIC8vIGFuZCBhZGQgYSBydW50aW1lIGNoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgdHlwZXMgYXJlbid0IGx5aW5nLlxuICAgICAgaWYgKE9iamVjdC5rZXlzKF9pbmRleGVzKS5sZW5ndGggPiAwKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG1heSBvbmx5IGNhbGwgLmluZGV4KCkgb25jZSBvbiBhIG5ldyBjb2xsZWN0aW9uJyk7XG4gICAgICB9XG4gICAgICBPYmplY3QuYXNzaWduKF9pbmRleGVzLCBpbmRleGVzKTtcbiAgICAgIHJldHVybiB0aGlzIGFzIGFueTtcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqIEFuIGluZGV4IHRoYXQgdXNlcyB0aGUgdmFsdWUgb2YgYW4gZW50aXR5J3MgZmllbGRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpZWxkSW5kZXg8QSBleHRlbmRzIEVudGl0eSwgUCBleHRlbmRzIGtleW9mIEE+KFxuICBwcm9wTmFtZTogUCxcbiAgY29tcGFyYXRvcjogc29ydGVkTWFwLkNvbXBhcmF0b3I8QVtQXT4sXG4pOiBFbnRpdHlJbmRleDxBLCBBW1BdPiB7XG4gIHJldHVybiBjYWxjdWxhdGVkSW5kZXgoKHgpID0+IHhbcHJvcE5hbWVdLCBjb21wYXJhdG9yKTtcbn1cblxuLyoqXG4gKiBBbiBpbmRleCB0aGF0IGlzIGNhbGN1bGF0ZWQgYmFzZWQgb24gYSBmdW5jdGlvbiBhcHBsaWVkIHRvIGFuIGVudGl0eVxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlZEluZGV4PEEgZXh0ZW5kcyBFbnRpdHksIEI+KGZuOiAoeDogQSkgPT4gQiwgY29tcGFyYXRvcjogc29ydGVkTWFwLkNvbXBhcmF0b3I8Qj4pIHtcbiAgY29uc3QgaW5kZXg6IFNvcnRlZE11bHRpTWFwPEIsIHN0cmluZz4gPSBbXTtcbiAgcmV0dXJuIHtcbiAgICBhZGQ6ICh4OiBBKSA9PiBzb3J0ZWRNYXAuYWRkKGluZGV4LCBjb21wYXJhdG9yLCBmbih4KSwgeC4kaWQpLFxuICAgIGxvb2t1cHM6IHtcbiAgICAgIGVxdWFsczogKHZhbHVlOiBCKSA9PiBzb3J0ZWRNYXAuZmluZEFsbChpbmRleCwgY29tcGFyYXRvciwgdmFsdWUpLFxuICAgIH0gYXMgYW55LFxuICAgIGluZGV4LFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFbnRpdHlDb2xsZWN0aW9uKHg6IHVua25vd24pOiB4IGlzIEVudGl0eUNvbGxlY3Rpb248YW55PiB7XG4gIHJldHVybiB0eXBlb2YgeCA9PT0gJ29iamVjdCcgJiYgISF4ICYmICh4IGFzIGFueSkudHlwZSA9PT0gJ2VudGl0aWVzJztcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVQbGFpbk9iamVjdHM8QSBleHRlbmRzIG9iamVjdD4oeHM6IE1hcDxzdHJpbmcsIEE+KTogTWFwPHN0cmluZywgQT4ge1xuICBmb3IgKGNvbnN0IHggb2YgeHMudmFsdWVzKCkpIHtcbiAgICBpZiAoeC5jb25zdHJ1Y3RvciAhPT0gT2JqZWN0KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVudGl0aWVzIHNob3VsZCBiZSBwbGFpbi10ZXh0IG9iamVjdHMsIGdvdCBpbnN0YW5jZSBvZiAke3guY29uc3RydWN0b3J9YCk7XG4gICAgfVxuICB9XG4gIHJldHVybiB4cztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWZlcmVuY2U8RSBleHRlbmRzIEVudGl0eT4ge1xuICByZWFkb25seSAkcmVmOiBFWyckaWQnXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlZjxFIGV4dGVuZHMgRW50aXR5Pih4OiBFIHwgc3RyaW5nKTogUmVmZXJlbmNlPEU+IHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSAnc3RyaW5nJyA/IHsgJHJlZjogeCB9IDogeyAkcmVmOiB4LiRpZCB9O1xufVxuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciB0d28gc3RyaW5ncyBhcmUgZXF1aXZhbGVudCBpbiB0aGUgY3VycmVudCBvciBzcGVjaWZpZWQgbG9jYWxlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gc3RyaW5nQ21wKGE6IHN0cmluZywgYjogc3RyaW5nKTogbnVtYmVyIHtcbiAgcmV0dXJuIGEubG9jYWxlQ29tcGFyZShiKTtcbn1cblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgdHdvIG51bWJlcnMgYXJlIGVxdWl2YWxlbnQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBudW1iZXJDbXAoYTogbnVtYmVyLCBiOiBudW1iZXIpOiBudW1iZXIge1xuICByZXR1cm4gYSAtIGI7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGNvbXBhcmF0b3IgdG8gZGV0ZXJtaW5lIGVxdWl2YWxlbnQgb2YgdHdvIHZhbHVlcywgdXNpbmcgYSBnaXZlbiBjb21wYXJhdG9yLCBidXQgYWxsb3dzIHZhbHVlcyB0byBiZSBvcHRpb25hbC5cbiAqXG4gKiBAcGFyYW0gZnJvbnRPcmRlciBJZiBgdHJ1ZWAsIHJldHVybnMgc28gdGhhdCB1bmRlZmluZWQgdmFsdWVzIGFyZSBvcmRlcmVkIGF0IHRoZSBmcm9udC4gSWYgYGZhbHNlYCwgdW5kZWZpbmVkIHZhbHVlcyBhcmUgb3JkZXJlZCBhdCB0aGUgYmFjay5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG9wdGlvbmFsQ21wPEE+KGNtcDogKGE6IEEsIGI6IEEpID0+IG51bWJlciwgZnJvbnRPcmRlciA9IHRydWUpIHtcbiAgcmV0dXJuIChhOiBBIHwgdW5kZWZpbmVkLCBiOiBBIHwgdW5kZWZpbmVkKSA9PiB7XG4gICAgaWYgKGEgPT0gdW5kZWZpbmVkICYmIGIgIT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZnJvbnRPcmRlciA/IC0xIDogMTtcbiAgICB9XG4gICAgaWYgKGEgIT0gdW5kZWZpbmVkICYmIGIgPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZnJvbnRPcmRlciA/IDEgOiAtMTtcbiAgICB9XG4gICAgaWYgKGEgPT0gdW5kZWZpbmVkICYmIGIgPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gMDtcbiAgICB9XG5cbiAgICByZXR1cm4gY21wKGEhLCBiISk7XG4gIH07XG59XG4iXX0=","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./entity\"), exports);\n__exportStar(require(\"./relationship\"), exports);\n__exportStar(require(\"./database\"), exports);\n__exportStar(require(\"./invariant\"), exports);\n__exportStar(require(\"./result\"), exports);\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF5QjtBQUN6QixpREFBK0I7QUFDL0IsNkNBQTJCO0FBQzNCLDhDQUE0QjtBQUM1QiwyQ0FBeUIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2VudGl0eSc7XG5leHBvcnQgKiBmcm9tICcuL3JlbGF0aW9uc2hpcCc7XG5leHBvcnQgKiBmcm9tICcuL2RhdGFiYXNlJztcbmV4cG9ydCAqIGZyb20gJy4vaW52YXJpYW50JztcbmV4cG9ydCAqIGZyb20gJy4vcmVzdWx0JztcbiJdfQ==","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.impliesU = exports.implies = exports.evolutionInvariant = void 0;\nfunction evolutionInvariant(description, pred) {\n // TODO: Find a way\n Array.isArray(description);\n Array.isArray(pred);\n}\nexports.evolutionInvariant = evolutionInvariant;\nfunction implies(x, y) {\n return !x || y;\n}\nexports.implies = implies;\n/**\n * Implies, but treats 'undefined' as 'false'\n */\nfunction impliesU(x, y) {\n return !x || !!y;\n}\nexports.impliesU = impliesU;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW52YXJpYW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2ludmFyaWFudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSxTQUFnQixrQkFBa0IsQ0FBSSxXQUFtQixFQUFFLElBQStCO0lBQ3hGLG1CQUFtQjtJQUNuQixLQUFLLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQzNCLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEIsQ0FBQztBQUpELGdEQUlDO0FBRUQsU0FBZ0IsT0FBTyxDQUFDLENBQVUsRUFBRSxDQUFVO0lBQzVDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pCLENBQUM7QUFGRCwwQkFFQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsUUFBUSxDQUFDLENBQXNCLEVBQUUsQ0FBc0I7SUFDckUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ25CLENBQUM7QUFGRCw0QkFFQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEludmFyaWFudCA9IHZvaWQ7XG5cbmV4cG9ydCB0eXBlIEV2b2x1dGlvbkludmFyaWFudFByZWQ8QT4gPSAocHJldmlvdXM6IEEsIGN1cnJlbnQ6IEEpID0+IGJvb2xlYW47XG5cbmV4cG9ydCBmdW5jdGlvbiBldm9sdXRpb25JbnZhcmlhbnQ8QT4oZGVzY3JpcHRpb246IHN0cmluZywgcHJlZDogRXZvbHV0aW9uSW52YXJpYW50UHJlZDxBPik6IEludmFyaWFudCB7XG4gIC8vIFRPRE86IEZpbmQgYSB3YXlcbiAgQXJyYXkuaXNBcnJheShkZXNjcmlwdGlvbik7XG4gIEFycmF5LmlzQXJyYXkocHJlZCk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpbXBsaWVzKHg6IGJvb2xlYW4sIHk6IGJvb2xlYW4pIHtcbiAgcmV0dXJuICF4IHx8IHk7XG59XG5cbi8qKlxuICogSW1wbGllcywgYnV0IHRyZWF0cyAndW5kZWZpbmVkJyBhcyAnZmFsc2UnXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbXBsaWVzVSh4OiBib29sZWFuIHwgdW5kZWZpbmVkLCB5OiBib29sZWFuIHwgdW5kZWZpbmVkKSB7XG4gIHJldHVybiAheCB8fCAhIXk7XG59XG4iXX0=","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isRelationshipCollection = exports.relationshipCollection = exports.NO_RELATIONSHIPS = void 0;\nconst NO_RELATIONSHIPS = () => ({});\nexports.NO_RELATIONSHIPS = NO_RELATIONSHIPS;\nfunction relationshipCollection(fromField, toField) {\n const forward = new Map();\n const backward = new Map();\n function add(fromId, toId, attrs) {\n let f = forward.get(fromId);\n if (!f) {\n f = [];\n forward.set(fromId, f);\n }\n let b = backward.get(toId);\n if (!b) {\n b = [];\n backward.set(toId, b);\n }\n // Behaves like a set, only add new relationship if it is structurally distinct\n const forwardRel = { $id: toId, ...attrs };\n const forwardRelStr = JSON.stringify(forwardRel);\n const existingRelationship = f.find((x) => JSON.stringify(x) === forwardRelStr);\n if (!existingRelationship) {\n f.push(forwardRel);\n b.push({ $id: fromId, ...attrs });\n }\n }\n return {\n type: 'rel',\n fromColl: fromField,\n toColl: toField,\n forward,\n backward,\n add(from, to, attributes) {\n add(from.$id, to.$id, attributes);\n },\n dehydrate() {\n return {\n type: 'rel',\n forward: Object.fromEntries(forward.entries()),\n };\n },\n hydrateFrom(x) {\n forward.clear();\n backward.clear();\n for (const [fromId, targets] of Object.entries(x.forward)) {\n for (const target of targets) {\n add(fromId, target.$id, removeId(target));\n }\n }\n },\n };\n}\nexports.relationshipCollection = relationshipCollection;\nfunction isRelationshipCollection(x) {\n return typeof x === 'object' && !!x && x.type === 'rel';\n}\nexports.isRelationshipCollection = isRelationshipCollection;\nfunction removeId(x) {\n const ret = { ...x };\n delete ret.$id;\n return ret;\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVsYXRpb25zaGlwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JlbGF0aW9uc2hpcC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUE2Qk8sTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQTlCLFFBQUEsZ0JBQWdCLG9CQUFjO0FBRTNDLFNBQWdCLHNCQUFzQixDQUNwQyxTQUF3QixFQUN4QixPQUFvQjtJQUVwQixNQUFNLE9BQU8sR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztJQUNuRCxNQUFNLFFBQVEsR0FBRyxJQUFJLEdBQUcsRUFBMkIsQ0FBQztJQUVwRCxTQUFTLEdBQUcsQ0FBQyxNQUFjLEVBQUUsSUFBWSxFQUFFLEtBQVU7UUFDbkQsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUM1QixJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ04sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNQLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3hCO1FBQ0QsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMzQixJQUFJLENBQUMsQ0FBQyxFQUFFO1lBQ04sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNQLFFBQVEsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3ZCO1FBRUQsK0VBQStFO1FBQy9FLE1BQU0sVUFBVSxHQUFHLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEtBQUssRUFBRSxDQUFDO1FBQzNDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDakQsTUFBTSxvQkFBb0IsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxLQUFLLGFBQWEsQ0FBQyxDQUFDO1FBRWhGLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUN6QixDQUFDLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ25CLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUMsQ0FBQztTQUNuQztJQUNILENBQUM7SUFFRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLEtBQUs7UUFDWCxRQUFRLEVBQUUsU0FBUztRQUNuQixNQUFNLEVBQUUsT0FBTztRQUNmLE9BQU87UUFDUCxRQUFRO1FBQ1IsR0FBRyxDQUFDLElBQVksRUFBRSxFQUFVLEVBQUUsVUFBZTtZQUMzQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFDRCxTQUFTO1lBQ1AsT0FBTztnQkFDTCxJQUFJLEVBQUUsS0FBSztnQkFDWCxPQUFPLEVBQUUsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7YUFDL0MsQ0FBQztRQUNKLENBQUM7UUFDRCxXQUFXLENBQUMsQ0FBTTtZQUNoQixPQUFPLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDaEIsUUFBUSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBRWpCLEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsRUFBRTtnQkFDekQsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUEwQixFQUFFO29CQUMvQyxHQUFHLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7aUJBQzNDO2FBQ0Y7UUFDSCxDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUF4REQsd0RBd0RDO0FBRUQsU0FBZ0Isd0JBQXdCLENBQUMsQ0FBVTtJQUNqRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFLLENBQVMsQ0FBQyxJQUFJLEtBQUssS0FBSyxDQUFDO0FBQ25FLENBQUM7QUFGRCw0REFFQztBQUVELFNBQVMsUUFBUSxDQUFtQixDQUFJO0lBQ3RDLE1BQU0sR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztJQUNyQixPQUFRLEdBQVcsQ0FBQyxHQUFHLENBQUM7SUFDeEIsT0FBTyxHQUFHLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5LCBFbnRpdHlDb2xsZWN0aW9uIH0gZnJvbSAnLi9lbnRpdHknO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlbGF0aW9uc2hpcDxGcm9tIGV4dGVuZHMgRW50aXR5LCBUbyBleHRlbmRzIEVudGl0eSwgQXR0cmlidXRlcyA9IHt9PiB7XG4gIHJlYWRvbmx5IGZyb206IEZyb207XG4gIHJlYWRvbmx5IHRvOiBUbztcbiAgcmVhZG9ubHkgYXR0cjogQXR0cmlidXRlcztcbn1cblxudHlwZSBGcm9tR2V0dGVyPFIgZXh0ZW5kcyBSZWxhdGlvbnNoaXA8YW55LCBhbnksIGFueT4+ID0gKGlkOiBzdHJpbmcpID0+IFJbJ2Zyb20nXTtcbnR5cGUgVG9HZXR0ZXI8UiBleHRlbmRzIFJlbGF0aW9uc2hpcDxhbnksIGFueSwgYW55Pj4gPSAoaWQ6IHN0cmluZykgPT4gUlsndG8nXTtcblxuZXhwb3J0IGludGVyZmFjZSBSZWxhdGlvbnNoaXBDb2xsZWN0aW9uPFIgZXh0ZW5kcyBSZWxhdGlvbnNoaXA8YW55LCBhbnksIGFueT4+IHtcbiAgcmVhZG9ubHkgdHlwZTogJ3JlbCc7XG4gIHJlYWRvbmx5IGZyb21Db2xsOiBGcm9tR2V0dGVyPFI+O1xuICByZWFkb25seSB0b0NvbGw6IFRvR2V0dGVyPFI+O1xuICByZWFkb25seSBmb3J3YXJkOiBNYXA8c3RyaW5nLCBSZWw8UlsnYXR0ciddPltdPjtcbiAgcmVhZG9ubHkgYmFja3dhcmQ6IE1hcDxzdHJpbmcsIFJlbDxSWydhdHRyJ10+W10+O1xuXG4gIGFkZChmcm9tOiBSWydmcm9tJ10sIHRvOiBSWyd0byddLCBhdHRyaWJ1dGVzOiBSWydhdHRyJ10pOiB2b2lkO1xuICBkZWh5ZHJhdGUoKTogYW55O1xuICBoeWRyYXRlRnJvbSh4OiBhbnkpOiB2b2lkO1xufVxuXG5leHBvcnQgdHlwZSBSZWw8QXR0cmlidXRlcz4gPSB7IHJlYWRvbmx5ICRpZDogc3RyaW5nIH0gJiBBdHRyaWJ1dGVzO1xuXG5leHBvcnQgdHlwZSBLZXlGb3JFbnRpdHlDb2xsZWN0aW9uPFMsIEUgZXh0ZW5kcyBFbnRpdHk+ID0ge1xuICBbSyBpbiBrZXlvZiBTXTogU1tLXSBleHRlbmRzIEVudGl0eUNvbGxlY3Rpb248RT4gPyBLIDogbmV2ZXI7XG59W2tleW9mIFNdO1xuXG5leHBvcnQgY29uc3QgTk9fUkVMQVRJT05TSElQUyA9ICgpID0+ICh7fSk7XG5cbmV4cG9ydCBmdW5jdGlvbiByZWxhdGlvbnNoaXBDb2xsZWN0aW9uPFIgZXh0ZW5kcyBSZWxhdGlvbnNoaXA8YW55LCBhbnksIGFueT4+KFxuICBmcm9tRmllbGQ6IEZyb21HZXR0ZXI8Uj4sXG4gIHRvRmllbGQ6IFRvR2V0dGVyPFI+LFxuKTogUmVsYXRpb25zaGlwQ29sbGVjdGlvbjxSPiB7XG4gIGNvbnN0IGZvcndhcmQgPSBuZXcgTWFwPHN0cmluZywgQXJyYXk8UmVsPGFueT4+PigpO1xuICBjb25zdCBiYWNrd2FyZCA9IG5ldyBNYXA8c3RyaW5nLCBBcnJheTxSZWw8YW55Pj4+KCk7XG5cbiAgZnVuY3Rpb24gYWRkKGZyb21JZDogc3RyaW5nLCB0b0lkOiBzdHJpbmcsIGF0dHJzOiBhbnkpIHtcbiAgICBsZXQgZiA9IGZvcndhcmQuZ2V0KGZyb21JZCk7XG4gICAgaWYgKCFmKSB7XG4gICAgICBmID0gW107XG4gICAgICBmb3J3YXJkLnNldChmcm9tSWQsIGYpO1xuICAgIH1cbiAgICBsZXQgYiA9IGJhY2t3YXJkLmdldCh0b0lkKTtcbiAgICBpZiAoIWIpIHtcbiAgICAgIGIgPSBbXTtcbiAgICAgIGJhY2t3YXJkLnNldCh0b0lkLCBiKTtcbiAgICB9XG5cbiAgICAvLyBCZWhhdmVzIGxpa2UgYSBzZXQsIG9ubHkgYWRkIG5ldyByZWxhdGlvbnNoaXAgaWYgaXQgaXMgc3RydWN0dXJhbGx5IGRpc3RpbmN0XG4gICAgY29uc3QgZm9yd2FyZFJlbCA9IHsgJGlkOiB0b0lkLCAuLi5hdHRycyB9O1xuICAgIGNvbnN0IGZvcndhcmRSZWxTdHIgPSBKU09OLnN0cmluZ2lmeShmb3J3YXJkUmVsKTtcbiAgICBjb25zdCBleGlzdGluZ1JlbGF0aW9uc2hpcCA9IGYuZmluZCgoeCkgPT4gSlNPTi5zdHJpbmdpZnkoeCkgPT09IGZvcndhcmRSZWxTdHIpO1xuXG4gICAgaWYgKCFleGlzdGluZ1JlbGF0aW9uc2hpcCkge1xuICAgICAgZi5wdXNoKGZvcndhcmRSZWwpO1xuICAgICAgYi5wdXNoKHsgJGlkOiBmcm9tSWQsIC4uLmF0dHJzIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdHlwZTogJ3JlbCcsXG4gICAgZnJvbUNvbGw6IGZyb21GaWVsZCxcbiAgICB0b0NvbGw6IHRvRmllbGQsXG4gICAgZm9yd2FyZCxcbiAgICBiYWNrd2FyZCxcbiAgICBhZGQoZnJvbTogRW50aXR5LCB0bzogRW50aXR5LCBhdHRyaWJ1dGVzOiBhbnkpIHtcbiAgICAgIGFkZChmcm9tLiRpZCwgdG8uJGlkLCBhdHRyaWJ1dGVzKTtcbiAgICB9LFxuICAgIGRlaHlkcmF0ZSgpOiBhbnkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogJ3JlbCcsXG4gICAgICAgIGZvcndhcmQ6IE9iamVjdC5mcm9tRW50cmllcyhmb3J3YXJkLmVudHJpZXMoKSksXG4gICAgICB9O1xuICAgIH0sXG4gICAgaHlkcmF0ZUZyb20oeDogYW55KTogdm9pZCB7XG4gICAgICBmb3J3YXJkLmNsZWFyKCk7XG4gICAgICBiYWNrd2FyZC5jbGVhcigpO1xuXG4gICAgICBmb3IgKGNvbnN0IFtmcm9tSWQsIHRhcmdldHNdIG9mIE9iamVjdC5lbnRyaWVzKHguZm9yd2FyZCkpIHtcbiAgICAgICAgZm9yIChjb25zdCB0YXJnZXQgb2YgdGFyZ2V0cyBhcyBBcnJheTxSZWw8YW55Pj4pIHtcbiAgICAgICAgICBhZGQoZnJvbUlkLCB0YXJnZXQuJGlkLCByZW1vdmVJZCh0YXJnZXQpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1JlbGF0aW9uc2hpcENvbGxlY3Rpb24oeDogdW5rbm93bik6IHggaXMgUmVsYXRpb25zaGlwQ29sbGVjdGlvbjxhbnk+IHtcbiAgcmV0dXJuIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiAhIXggJiYgKHggYXMgYW55KS50eXBlID09PSAncmVsJztcbn1cblxuZnVuY3Rpb24gcmVtb3ZlSWQ8QSBleHRlbmRzIG9iamVjdD4oeDogQSk6IE9taXQ8QSwgJyRpZCc+IHtcbiAgY29uc3QgcmV0ID0geyAuLi54IH07XG4gIGRlbGV0ZSAocmV0IGFzIGFueSkuJGlkO1xuICByZXR1cm4gcmV0O1xufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.liftUndefined = exports.liftResult = exports.locateFailure = exports.chain = exports.using = exports.tryCatch = exports.assertSuccess = exports.errorFrom = exports.errorMessage = exports.unpackOr = exports.unpack = exports.isSuccess = exports.isFailure = exports.failure = void 0;\n// Ensures you must use `fail()` to construct an instance of type Failure\nconst errorSym = Symbol('error');\nfunction mkLocate(prefix) {\n const ret = (error) => failure(`${prefix}: ${error}`);\n ret.in = (prefix2) => mkLocate(`${prefix}: ${prefix2}`);\n ret.locate = locateFailure(prefix);\n return ret;\n}\nfunction failure(error) {\n return { [errorSym]: error };\n}\nexports.failure = failure;\nfailure.in = (prefix) => mkLocate(prefix);\nfailure.locate = (x) => x;\nfunction isFailure(x) {\n return !!x && typeof x === 'object' && x[errorSym];\n}\nexports.isFailure = isFailure;\nfunction isSuccess(x) {\n return !isFailure(x);\n}\nexports.isSuccess = isSuccess;\nfunction unpack(x) {\n if (isFailure(x)) {\n throw new Error(`unpack: ${x[errorSym]}`);\n }\n return x;\n}\nexports.unpack = unpack;\nfunction unpackOr(x, def) {\n return (isFailure(x) ? def : x);\n}\nexports.unpackOr = unpackOr;\nfunction errorMessage(x) {\n return x[errorSym];\n}\nexports.errorMessage = errorMessage;\nfunction errorFrom(x) {\n return new Error(errorMessage(x));\n}\nexports.errorFrom = errorFrom;\nfunction assertSuccess(x) {\n if (isFailure(x)) {\n throw errorFrom(x);\n }\n}\nexports.assertSuccess = assertSuccess;\nfunction tryCatch(failOrBlock, maybeBlock) {\n const block = (maybeBlock !== null && maybeBlock !== void 0 ? maybeBlock : failOrBlock);\n const f = (maybeBlock ? failOrBlock : failure);\n try {\n return block();\n }\n catch (e) {\n return f(`Error: ${e.message}\\n${e.stack}`);\n }\n}\nexports.tryCatch = tryCatch;\nfunction using(value, block) {\n if (isFailure(value)) {\n return value;\n }\n return block(value);\n}\nexports.using = using;\nfunction chain(value, ...fns) {\n for (const fn of fns) {\n if (isFailure(value)) {\n return value;\n }\n value = fn(value);\n }\n return value;\n}\nexports.chain = chain;\n/* eslint-enable prettier/prettier */\n/**\n * Make a function that will prepend a prefix to error messages\n *\n * This is one way to be specific about the location where errors originate, by prefixing\n * errors as the call stack unwinds.\n *\n * A different method is to pass in a modified failure function using `failure.in(...)`,\n * to build the error message as the call stack deepens.\n */\nfunction locateFailure(prefix) {\n return (x) => (isFailure(x) ? failure(`${prefix}: ${x[errorSym]}`) : x);\n}\nexports.locateFailure = locateFailure;\nfunction liftResult(xs) {\n const failures = Array.isArray(xs) ? xs.filter(isFailure) : Object.values(xs).filter(isFailure);\n if (failures.length > 0) {\n return failure(failures.map(errorMessage).join(', '));\n }\n return xs;\n}\nexports.liftResult = liftResult;\nfunction liftUndefined(valueOrFunction) {\n if (typeof valueOrFunction === 'function') {\n return (...args) => {\n const value = valueOrFunction(...args);\n return value !== undefined ? value : failure('value is undefined');\n };\n }\n return valueOrFunction !== undefined ? valueOrFunction : failure('value is undefined');\n}\nexports.liftUndefined = liftUndefined;\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzdWx0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3Jlc3VsdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5RUFBeUU7QUFDekUsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBYWpDLFNBQVMsUUFBUSxDQUFDLE1BQWM7SUFDOUIsTUFBTSxHQUFHLEdBQVMsQ0FBQyxLQUFhLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxHQUFHLE1BQU0sS0FBSyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3BFLEdBQUcsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxPQUFlLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxHQUFHLE1BQU0sS0FBSyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQ2hFLEdBQUcsQ0FBQyxNQUFNLEdBQUcsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25DLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQztBQUlELFNBQWdCLE9BQU8sQ0FBQyxLQUFhO0lBQ25DLE9BQU8sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBQy9CLENBQUM7QUFGRCwwQkFFQztBQUNELE9BQU8sQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFjLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNsRCxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUksQ0FBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFeEMsU0FBZ0IsU0FBUyxDQUFJLENBQVk7SUFDdkMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxLQUFLLFFBQVEsSUFBSyxDQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDOUQsQ0FBQztBQUZELDhCQUVDO0FBRUQsU0FBZ0IsU0FBUyxDQUFJLENBQVk7SUFDdkMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN2QixDQUFD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LENBQUMsU0FBUyxDQUFDLENBQUM7SUFDaEcsSUFBSSxRQUFRLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtRQUN2QixPQUFPLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0tBQ3ZEO0lBQ0QsT0FBTyxFQUFTLENBQUM7QUFDbkIsQ0FBQztBQVJELGdDQVFDO0FBT0QsU0FBZ0IsYUFBYSxDQUFDLGVBQW9CO0lBQ2hELElBQUksT0FBTyxlQUFlLEtBQUssVUFBVSxFQUFFO1FBQ3pDLE9BQU8sQ0FBQyxHQUFHLElBQVcsRUFBRSxFQUFFO1lBQ3hCLE1BQU0sS0FBSyxHQUFHLGVBQWUsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDO1lBQ3ZDLE9BQU8sS0FBSyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNyRSxDQUFDLENBQUM7S0FDSDtJQUNELE9BQU8sZUFBZSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUN6RixDQUFDO0FBUkQsc0NBUUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBFbnN1cmVzIHlvdSBtdXN0IHVzZSBgZmFpbCgpYCB0byBjb25zdHJ1Y3QgYW4gaW5zdGFuY2Ugb2YgdHlwZSBGYWlsdXJlXG5jb25zdCBlcnJvclN5bSA9IFN5bWJvbCgnZXJyb3InKTtcblxuZXhwb3J0IHR5cGUgUmVzdWx0PEE+ID0gQSB8IEZhaWx1cmU7XG5leHBvcnQgaW50ZXJmYWNlIEZhaWx1cmUge1xuICByZWFkb25seSBbZXJyb3JTeW1dOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmFpbCB7XG4gIChlcnJvcjogc3RyaW5nKTogRmFpbHVyZTtcbiAgaW4ocHJlZml4OiBzdHJpbmcpOiBGYWlsO1xuICBsb2NhdGU8QT4oeDogUmVzdWx0PEE+KTogUmVzdWx0PEE+O1xufVxuXG5mdW5jdGlvbiBta0xvY2F0ZShwcmVmaXg6IHN0cmluZyk6IEZhaWwge1xuICBjb25zdCByZXQ6IEZhaWwgPSAoZXJyb3I6IHN0cmluZykgPT4gZmFpbHVyZShgJHtwcmVmaXh9OiAke2Vycm9yfWApO1xuICByZXQuaW4gPSAocHJlZml4Mjogc3RyaW5nKSA9PiBta0xvY2F0ZShgJHtwcmVmaXh9OiAke3ByZWZpeDJ9YCk7XG4gIHJldC5sb2NhdGUgPSBsb2NhdGVGYWlsdXJlKHByZWZpeCk7XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgZmFpbHVyZSBleHRlbmRzIEZhaWwge31cblxuZXhwb3J0IGZ1bmN0aW9uIGZhaWx1cmUoZXJyb3I6IHN0cmluZyk6IEZhaWx1cmUge1xuICByZXR1cm4geyBbZXJyb3JTeW1dOiBlcnJvciB9O1xufVxuZmFpbHVyZS5pbiA9IChwcmVmaXg6IHN0cmluZykgPT4gbWtMb2NhdGUocHJlZml4KTtcbmZhaWx1cmUubG9jYXRlID0gPEE+KHg6IFJlc3VsdDxBPikgPT4geDtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzRmFpbHVyZTxBPih4OiBSZXN1bHQ8QT4pOiB4IGlzIEZhaWx1cmUge1xuICByZXR1cm4gISF4ICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiAoeCBhcyBhbnkpW2Vycm9yU3ltXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU3VjY2VzczxBPih4OiBSZXN1bHQ8QT4pOiB4IGlzIEEge1xuICByZXR1cm4gIWlzRmFpbHVyZSh4KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVucGFjazxBPih4OiBSZXN1bHQ8QT4pOiBBIHtcbiAgaWYgKGlzRmFpbHVyZSh4KSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgdW5wYWNrOiAke3hbZXJyb3JTeW1dfWApO1xuICB9XG4gIHJldHVybiB4O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdW5wYWNrT3I8QSwgQj4oeDogUmVzdWx0PEE+LCBkZWY6IEIpOiBCIGV4dGVuZHMgQSA/IEEgOiBBIHwgQiB7XG4gIHJldHVybiAoaXNGYWlsdXJlKHgpID8gZGVmIDogeCkgYXMgYW55O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXJyb3JNZXNzYWdlKHg6IEZhaWx1cmUpOiBzdHJpbmcge1xuICByZXR1cm4geFtlcnJvclN5bV07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBlcnJvckZyb20oeDogRmFpbHVyZSk6IEVycm9yIHtcbiAgcmV0dXJuIG5ldyBFcnJvcihlcnJvck1lc3NhZ2UoeCkpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXNzZXJ0U3VjY2VzczxBPih4OiBSZXN1bHQ8QT4pOiBhc3NlcnRzIHggaXMgQTtcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRTdWNjZXNzKHg6IEZhaWx1cmUpOiBuZXZlcjtcbmV4cG9ydCBmdW5jdGlvbiBhc3NlcnRTdWNjZXNzKHg6IEZhaWx1cmUpOiB2b2lkIHtcbiAgaWYgKGlzRmFpbHVyZSh4KSkge1xuICAgIHRocm93IGVycm9yRnJvbSh4KTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdHJ5Q2F0Y2g8QT4oYmxvY2s6ICgpID0+IEEpOiBSZXN1bHQ8QT47XG5leHBvcnQgZnVuY3Rpb24gdHJ5Q2F0Y2g8QT4oZmFpbEZuOiBGYWlsLCBibG9jazogKCkgPT4gQSk6IFJlc3VsdDxBPjtcbmV4cG9ydCBmdW5jdGlvbiB0cnlDYXRjaDxBPihmYWlsT3JCbG9jazogRmFpbCB8ICgoKSA9PiBBKSwgbWF5YmVCbG9jaz86ICgpID0+IEEpOiBSZXN1bHQ8QT4ge1xuICBjb25zdCBibG9jazogKCkgPT4gQSA9IChtYXliZUJsb2NrID8/IGZhaWxPckJsb2NrKSBhcyBhbnk7XG4gIGNvbnN0IGY6IEZhaWwgPSAobWF5YmVCbG9jayA/IGZhaWxPckJsb2NrIDogZmFpbHVyZSkgYXMgYW55O1xuXG4gIHRyeSB7XG4gICAgcmV0dXJuIGJsb2NrKCk7XG4gIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgIHJldHVybiBmKGBFcnJvcjogJHtlLm1lc3NhZ2V9XFxuJHtlLnN0YWNrfWApO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2luZzxBLCBCPih2YWx1ZTogUmVzdWx0PEE+LCBibG9jazogKHg6IEEpID0+IFJlc3VsdDxCPik6IFJlc3VsdDxCPiB7XG4gIGlmIChpc0ZhaWx1cmUodmFsdWUpKSB7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG4gIHJldHVybiBibG9jayh2YWx1ZSk7XG59XG5cbi8qKlxuICogTGlrZSAndXNpbmcnLCBidXQgY2FuIHRha2UgYW55IG51bWJlciBvZiBmdW5jdGlvbnNcbiAqL1xuLyogZXNsaW50LWRpc2FibGUgcHJldHRpZXIvcHJldHRpZXIgKi9cbmV4cG9ydCBmdW5jdGlvbiBjaGFpbjxBLCBCPih2YWx1ZTogUmVzdWx0PEE+LCBiMDogKHg6IEEpID0+IFJlc3VsdDxCPik6IFJlc3VsdDxCPjtcbmV4cG9ydCBmdW5jdGlvbiBjaGFpbjxBLCBCLCBDPih2YWx1ZTogUmVzdWx0PEE+LCBiMDogKHg6IEEpID0+IFJlc3VsdDxCPiwgYjE6ICh4OiBCKSA9PiBSZXN1bHQ8Qz4pOiBSZXN1bHQ8Qz47XG5leHBvcnQgZnVuY3Rpb24gY2hhaW48QSwgQiwgQywgRD4odmFsdWU6IFJlc3VsdDxBPiwgYjA6ICh4OiBBKSA9PiBSZXN1bHQ8Qj4sIGIxOiAoeDogQikgPT4gUmVzdWx0PEM+LCBiMjogKHg6IEMpID0+IFJlc3VsdDxEPik6IFJlc3VsdDxEPjtcbmV4cG9ydCBmdW5jdGlvbiBjaGFpbjxBLCBCLCBDLCBELCBFPih2YWx1ZTogUmVzdWx0PEE+LCBiMDogKHg6IEEpID0+IFJlc3VsdDxCPiwgYjE6ICh4OiBCKSA9PiBSZXN1bHQ8Qz4sIGIyOiAoeDogQykgPT4gUmVzdWx0PEQ+LCBiMzogKHg6IEQpID0+IFJlc3VsdDxFPik6IFJlc3VsdDxFPjtcbmV4cG9ydCBmdW5jdGlvbiBjaGFpbjxBLCBCLCBDLCBELCBFLCBGPih2YWx1ZTogUmVzdWx0PEE+LCBiMDogKHg6IEEpID0+IFJlc3VsdDxCPiwgYjE6ICh4OiBCKSA9PiBSZXN1bHQ8Qz4sIGIyOiAoeDogQykgPT4gUmVzdWx0PEQ+LCBiMzogKHg6IEQpID0+IFJlc3VsdDxFPiwgYjQ6ICh4OiBFKSA9PiBSZXN1bHQ8Rj4pOiBSZXN1bHQ8Rj47XG5leHBvcnQgZnVuY3Rpb24gY2hhaW48QSwgQiwgQywgRCwgRSwgRiwgRz4odmFsdWU6IFJlc3VsdDxBPiwgYjA6ICh4OiBBKSA9PiBSZXN1bHQ8Qj4sIGIxOiAoeDogQikgPT4gUmVzdWx0PEM+LCBiMjogKHg6IEMpID0+IFJlc3VsdDxEPiwgYjM6ICh4OiBEKSA9PiBSZXN1bHQ8RT4sIGI0OiAoeDogRSkgPT4gUmVzdWx0PEY+LCBiNTogKHg6IEYpID0+IFJlc3VsdDxHPik6IFJlc3VsdDxHPjtcbmV4cG9ydCBmdW5jdGlvbiBjaGFpbih2YWx1ZTogUmVzdWx0PGFueT4sIC4uLmZuczogQXJyYXk8KHg6IGFueSkgPT4gUmVzdWx0PGFueT4+KTogUmVzdWx0PGFueT4ge1xuICBmb3IgKGNvbnN0IGZuIG9mIGZucykge1xuICAgIGlmIChpc0ZhaWx1cmUodmFsdWUpKSB7XG4gICAgICByZXR1cm4gdmFsdWU7XG4gICAgfVxuICAgIHZhbHVlID0gZm4odmFsdWUpO1xuICB9XG4gIHJldHVybiB2YWx1ZTtcbn1cbi8qIGVzbGludC1lbmFibGUgcHJldHRpZXIvcHJldHRpZXIgKi9cblxuLyoqXG4gKiBNYWtlIGEgZnVuY3Rpb24gdGhhdCB3aWxsIHByZXBlbmQgYSBwcmVmaXggdG8gZXJyb3IgbWVzc2FnZXNcbiAqXG4gKiBUaGlzIGlzIG9uZSB3YXkgdG8gYmUgc3BlY2lmaWMgYWJvdXQgdGhlIGxvY2F0aW9uIHdoZXJlIGVycm9ycyBvcmlnaW5hdGUsIGJ5IHByZWZpeGluZ1xuICogZXJyb3JzIGFzIHRoZSBjYWxsIHN0YWNrIHVud2luZHMuXG4gKlxuICogQSBkaWZmZXJlbnQgbWV0aG9kIGlzIHRvIHBhc3MgaW4gYSBtb2RpZmllZCBmYWlsdXJlIGZ1bmN0aW9uIHVzaW5nIGBmYWlsdXJlLmluKC4uLilgLFxuICogdG8gYnVpbGQgdGhlIGVycm9yIG1lc3NhZ2UgYXMgdGhlIGNhbGwgc3RhY2sgZGVlcGVucy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGxvY2F0ZUZhaWx1cmUocHJlZml4OiBzdHJpbmcpIHtcbiAgcmV0dXJuIDxBPih4OiBSZXN1bHQ8QT4pOiBSZXN1bHQ8QT4gPT4gKGlzRmFpbHVyZSh4KSA/IGZhaWx1cmUoYCR7cHJlZml4fTogJHt4W2Vycm9yU3ltXX1gKSA6IHgpO1xufVxuXG5leHBvcnQgdHlwZSBGYWlsdXJlcyA9IEFycmF5PEZhaWx1cmU+O1xuXG5leHBvcnQgZnVuY3Rpb24gbGlmdFJlc3VsdDxBPih4czogUmVjb3JkPHN0cmluZywgUmVzdWx0PEE+Pik6IFJlc3VsdDxSZWNvcmQ8c3RyaW5nLCBBPj47XG5leHBvcnQgZnVuY3Rpb24gbGlmdFJlc3VsdDxBPih4czogQXJyYXk8UmVzdWx0PEE+Pik6IFJlc3VsdDxBcnJheTxBPj47XG5leHBvcnQgZnVuY3Rpb24gbGlmdFJlc3VsdDxBPihcbiAgeHM6IFJlY29yZDxzdHJpbmcsIFJlc3VsdDxBPj4gfCBBcnJheTxSZXN1bHQ8QT4+LFxuKTogUmVzdWx0PFJlY29yZDxzdHJpbmcsIEE+PiB8IFJlc3VsdDxBcnJheTxBPj4ge1xuICBjb25zdCBmYWlsdXJlcyA9IEFycmF5LmlzQXJyYXkoeHMpID8geHMuZmlsdGVyKGlzRmFpbHVyZSkgOiBPYmplY3QudmFsdWVzKHhzKS5maWx0ZXIoaXNGYWlsdXJlKTtcbiAgaWYgKGZhaWx1cmVzLmxlbmd0aCA+IDApIHtcbiAgICByZXR1cm4gZmFpbHVyZShmYWlsdXJlcy5tYXAoZXJyb3JNZXNzYWdlKS5qb2luKCcsICcpKTtcbiAgfVxuICByZXR1cm4geHMgYXMgYW55O1xufVxuXG4vKipcbiAqIExpZnQgYSB2YWx1ZSB0aGF0IGNhbiBiZSAndW5kZWZpbmVkJyB0byBhIHJlc3VsdCwgb3IgYSBmdW5jdGlvbiB0aGF0IGNhbiByZXR1cm4gdW5kZWZpbmVkLlxuICovXG5leHBvcnQgZnVuY3Rpb24gbGlmdFVuZGVmaW5lZDxBPih2OiBBIHwgdW5kZWZpbmVkKTogUmVzdWx0PE5vbk51bGxhYmxlPEE+PjtcbmV4cG9ydCBmdW5jdGlvbiBsaWZ0VW5kZWZpbmVkPEEsIEYgZXh0ZW5kcyAoLi4uYXJnczogYW55W10pID0+IEE+KHY6IEYpOiAoeDogUGFyYW1ldGVyczxGPikgPT4gUmVzdWx0PE5vbk51bGxhYmxlPEE+PjtcbmV4cG9ydCBmdW5jdGlvbiBsaWZ0VW5kZWZpbmVkKHZhbHVlT3JGdW5jdGlvbjogYW55KTogYW55IHtcbiAgaWYgKHR5cGVvZiB2YWx1ZU9yRnVuY3Rpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHZhbHVlT3JGdW5jdGlvbiguLi5hcmdzKTtcbiAgICAgIHJldHVybiB2YWx1ZSAhPT0gdW5kZWZpbmVkID8gdmFsdWUgOiBmYWlsdXJlKCd2YWx1ZSBpcyB1bmRlZmluZWQnKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiB2YWx1ZU9yRnVuY3Rpb24gIT09IHVuZGVmaW5lZCA/IHZhbHVlT3JGdW5jdGlvbiA6IGZhaWx1cmUoJ3ZhbHVlIGlzIHVuZGVmaW5lZCcpO1xufVxuIl19","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sortedMap = void 0;\n/**\n * A sorted map that may contain the same key multiple times\n *\n * Stored as a sorted array of [key, value] pairs, using binary search to locate\n * entries.\n */\nvar sortedMap;\n(function (sortedMap) {\n function add(map, cmp, key, value) {\n const i = lowerBound(map, cmp, key);\n map.splice(i, 0, [key, value]);\n }\n sortedMap.add = add;\n function find(map, cmp, key) {\n const i = lowerBound(map, cmp, key);\n if (i === map.length) {\n return undefined;\n }\n const [foundKey, value] = map[i];\n return cmp(foundKey, key) === 0 ? value : undefined;\n }\n sortedMap.find = find;\n function findAll(map, cmp, key) {\n let i = lowerBound(map, cmp, key);\n const ret = [];\n while (i < map.length && cmp(map[i][0], key) === 0) {\n ret.push(map[i][1]);\n i += 1;\n }\n return ret;\n }\n sortedMap.findAll = findAll;\n /**\n * Return the index to the first element in the the sorted map\n *\n * @see https://en.cppreference.com/w/cpp/algorithm/lower_bound#Version_2\n */\n function lowerBound(map, cmp, key) {\n let first = 0;\n let count = map.length;\n while (count > 0) {\n let it = first;\n let step = Math.floor(count / 2);\n it += step;\n if (cmp(map[it][0], key) < 0) {\n first = ++it;\n count -= step + 1;\n }\n else {\n count = step;\n }\n }\n return first;\n }\n})(sortedMap = exports.sortedMap || (exports.sortedMap = {}));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydGVkLW1hcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9zb3J0ZWQtbWFwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOzs7OztHQUtHO0FBQ0gsSUFBaUIsU0FBUyxDQXNEekI7QUF0REQsV0FBaUIsU0FBUztJQUd4QixTQUFnQixHQUFHLENBQU8sR0FBeUIsRUFBRSxHQUFrQixFQUFFLEdBQU0sRUFBRSxLQUFRO1FBQ3ZGLE1BQU0sQ0FBQyxHQUFHLFVBQVUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFIZSxhQUFHLE1BR2xCLENBQUE7SUFFRCxTQUFnQixJQUFJLENBQU8sR0FBeUIsRUFBRSxHQUFrQixFQUFFLEdBQU07UUFDOUUsTUFBTSxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDcEMsSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLE1BQU0sRUFBRTtZQUNwQixPQUFPLFNBQVMsQ0FBQztTQUNsQjtRQUVELE1BQU0sQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sR0FBRyxDQUFDLFFBQVEsRUFBRSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQ3RELENBQUM7SUFSZSxjQUFJLE9BUW5CLENBQUE7SUFFRCxTQUFnQixPQUFPLENBQU8sR0FBeUIsRUFBRSxHQUFrQixFQUFFLEdBQU07UUFDakYsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFFbEMsTUFBTSxHQUFHLEdBQUcsRUFBRSxDQUFDO1FBQ2YsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRTtZQUNsRCxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDUjtRQUVELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQztJQVZlLGlCQUFPLFVBVXRCLENBQUE7SUFFRDs7OztPQUlHO0lBQ0gsU0FBUyxVQUFVLENBQU8sR0FBeUIsRUFBRSxHQUFrQixFQUFFLEdBQU07UUFDN0UsSUFBSSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ2QsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztRQUV2QixPQUFPLEtBQUssR0FBRyxDQUFDLEVBQUU7WUFDaEIsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDO1lBQ2YsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7WUFDakMsRUFBRSxJQUFJLElBQUksQ0FBQztZQUVYLElBQUksR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUU7Z0JBQzVCLEtBQUssR0FBRyxFQUFFLEVBQUUsQ0FBQztnQkFDYixLQUFLLElBQUksSUFBSSxHQUFHLENBQUMsQ0FBQzthQUNuQjtpQkFBTTtnQkFDTCxLQUFLLEdBQUcsSUFBSSxDQUFDO2FBQ2Q7U0FDRjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztBQUNILENBQUMsRUF0RGdCLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBc0R6QiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIFNvcnRlZE11bHRpTWFwPEEsIEI+ID0gQXJyYXk8W0EsIEJdPjtcblxuLyoqXG4gKiBBIHNvcnRlZCBtYXAgdGhhdCBtYXkgY29udGFpbiB0aGUgc2FtZSBrZXkgbXVsdGlwbGUgdGltZXNcbiAqXG4gKiBTdG9yZWQgYXMgYSBzb3J0ZWQgYXJyYXkgb2YgW2tleSwgdmFsdWVdIHBhaXJzLCB1c2luZyBiaW5hcnkgc2VhcmNoIHRvIGxvY2F0ZVxuICogZW50cmllcy5cbiAqL1xuZXhwb3J0IG5hbWVzcGFjZSBzb3J0ZWRNYXAge1xuICBleHBvcnQgdHlwZSBDb21wYXJhdG9yPEE+ID0gKGE6IEEsIGI6IEEpID0+IG51bWJlcjtcblxuICBleHBvcnQgZnVuY3Rpb24gYWRkPEEsIEI+KG1hcDogU29ydGVkTXVsdGlNYXA8QSwgQj4sIGNtcDogQ29tcGFyYXRvcjxBPiwga2V5OiBBLCB2YWx1ZTogQikge1xuICAgIGNvbnN0IGkgPSBsb3dlckJvdW5kKG1hcCwgY21wLCBrZXkpO1xuICAgIG1hcC5zcGxpY2UoaSwgMCwgW2tleSwgdmFsdWVdKTtcbiAgfVxuXG4gIGV4cG9ydCBmdW5jdGlvbiBmaW5kPEEsIEI+KG1hcDogU29ydGVkTXVsdGlNYXA8QSwgQj4sIGNtcDogQ29tcGFyYXRvcjxBPiwga2V5OiBBKTogQiB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgaSA9IGxvd2VyQm91bmQobWFwLCBjbXAsIGtleSk7XG4gICAgaWYgKGkgPT09IG1hcC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3QgW2ZvdW5kS2V5LCB2YWx1ZV0gPSBtYXBbaV07XG4gICAgcmV0dXJuIGNtcChmb3VuZEtleSwga2V5KSA9PT0gMCA/IHZhbHVlIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZXhwb3J0IGZ1bmN0aW9uIGZpbmRBbGw8QSwgQj4obWFwOiBTb3J0ZWRNdWx0aU1hcDxBLCBCPiwgY21wOiBDb21wYXJhdG9yPEE+LCBrZXk6IEEpOiBCW10ge1xuICAgIGxldCBpID0gbG93ZXJCb3VuZChtYXAsIGNtcCwga2V5KTtcblxuICAgIGNvbnN0IHJldCA9IFtdO1xuICAgIHdoaWxlIChpIDwgbWFwLmxlbmd0aCAmJiBjbXAobWFwW2ldWzBdLCBrZXkpID09PSAwKSB7XG4gICAgICByZXQucHVzaChtYXBbaV1bMV0pO1xuICAgICAgaSArPSAxO1xuICAgIH1cblxuICAgIHJldHVybiByZXQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBpbmRleCB0byB0aGUgZmlyc3QgZWxlbWVudCBpbiB0aGUgdGhlIHNvcnRlZCBtYXBcbiAgICpcbiAgICogQHNlZSBodHRwczovL2VuLmNwcHJlZmVyZW5jZS5jb20vdy9jcHAvYWxnb3JpdGhtL2xvd2VyX2JvdW5kI1ZlcnNpb25fMlxuICAgKi9cbiAgZnVuY3Rpb24gbG93ZXJCb3VuZDxBLCBCPihtYXA6IFNvcnRlZE11bHRpTWFwPEEsIEI+LCBjbXA6IENvbXBhcmF0b3I8QT4sIGtleTogQSk6IG51bWJlciB7XG4gICAgbGV0IGZpcnN0ID0gMDtcbiAgICBsZXQgY291bnQgPSBtYXAubGVuZ3RoO1xuXG4gICAgd2hpbGUgKGNvdW50ID4gMCkge1xuICAgICAgbGV0IGl0ID0gZmlyc3Q7XG4gICAgICBsZXQgc3RlcCA9IE1hdGguZmxvb3IoY291bnQgLyAyKTtcbiAgICAgIGl0ICs9IHN0ZXA7XG5cbiAgICAgIGlmIChjbXAobWFwW2l0XVswXSwga2V5KSA8IDApIHtcbiAgICAgICAgZmlyc3QgPSArK2l0O1xuICAgICAgICBjb3VudCAtPSBzdGVwICsgMTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvdW50ID0gc3RlcDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmlyc3Q7XG4gIH1cbn1cbiJdfQ==","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n createTokenAuth: () => createTokenAuth\n});\nmodule.exports = __toCommonJS(dist_src_exports);\n\n// pkg/dist-src/auth.js\nvar REGEX_IS_INSTALLATION_LEGACY = /^v1\\./;\nvar REGEX_IS_INSTALLATION = /^ghs_/;\nvar REGEX_IS_USER_TO_SERVER = /^ghu_/;\nasync function auth(token) {\n const isApp = token.split(/\\./).length === 3;\n const isInstallation = REGEX_IS_INSTALLATION_LEGACY.test(token) || REGEX_IS_INSTALLATION.test(token);\n const isUserToServer = REGEX_IS_USER_TO_SERVER.test(token);\n const tokenType = isApp ? \"app\" : isInstallation ? \"installation\" : isUserToServer ? \"user-to-server\" : \"oauth\";\n return {\n type: \"token\",\n token,\n tokenType\n };\n}\n\n// pkg/dist-src/with-authorization-prefix.js\nfunction withAuthorizationPrefix(token) {\n if (token.split(/\\./).length === 3) {\n return `bearer ${token}`;\n }\n return `token ${token}`;\n}\n\n// pkg/dist-src/hook.js\nasync function hook(token, request, route, parameters) {\n const endpoint = request.endpoint.merge(\n route,\n parameters\n );\n endpoint.headers.authorization = withAuthorizationPrefix(token);\n return request(endpoint);\n}\n\n// pkg/dist-src/index.js\nvar createTokenAuth = function createTokenAuth2(token) {\n if (!token) {\n throw new Error(\"[@octokit/auth-token] No token passed to createTokenAuth\");\n }\n if (typeof token !== \"string\") {\n throw new Error(\n \"[@octokit/auth-token] Token passed to createTokenAuth is not a string\"\n );\n }\n token = token.replace(/^(token|bearer) +/i, \"\");\n return Object.assign(auth.bind(null, token), {\n hook: hook.bind(null, token)\n });\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n createTokenAuth\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n Octokit: () => Octokit\n});\nmodule.exports = __toCommonJS(dist_src_exports);\nvar import_universal_user_agent = require(\"universal-user-agent\");\nvar import_before_after_hook = require(\"before-after-hook\");\nvar import_request = require(\"@octokit/request\");\nvar import_graphql = require(\"@octokit/graphql\");\nvar import_auth_token = require(\"@octokit/auth-token\");\n\n// pkg/dist-src/version.js\nvar VERSION = \"5.2.0\";\n\n// pkg/dist-src/index.js\nvar noop = () => {\n};\nvar consoleWarn = console.warn.bind(console);\nvar consoleError = console.error.bind(console);\nvar userAgentTrail = `octokit-core.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`;\nvar Octokit = class {\n static {\n this.VERSION = VERSION;\n }\n static defaults(defaults) {\n const OctokitWithDefaults = class extends this {\n constructor(...args) {\n const options = args[0] || {};\n if (typeof defaults === \"function\") {\n super(defaults(options));\n return;\n }\n super(\n Object.assign(\n {},\n defaults,\n options,\n options.userAgent && defaults.userAgent ? {\n userAgent: `${options.userAgent} ${defaults.userAgent}`\n } : null\n )\n );\n }\n };\n return OctokitWithDefaults;\n }\n static {\n this.plugins = [];\n }\n /**\n * Attach a plugin (or many) to your Octokit instance.\n *\n * @example\n * const API = Octokit.plugin(plugin1, plugin2, plugin3, ...)\n */\n static plugin(...newPlugins) {\n const currentPlugins = this.plugins;\n const NewOctokit = class extends this {\n static {\n this.plugins = currentPlugins.concat(\n newPlugins.filter((plugin) => !currentPlugins.includes(plugin))\n );\n }\n };\n return NewOctokit;\n }\n constructor(options = {}) {\n const hook = new import_before_after_hook.Collection();\n const requestDefaults = {\n baseUrl: import_request.request.endpoint.DEFAULTS.baseUrl,\n headers: {},\n request: Object.assign({}, options.request, {\n // @ts-ignore internal usage only, no need to type\n hook: hook.bind(null, \"request\")\n }),\n mediaType: {\n previews: [],\n format: \"\"\n }\n };\n requestDefaults.headers[\"user-agent\"] = options.userAgent ? `${options.userAgent} ${userAgentTrail}` : userAgentTrail;\n if (options.baseUrl) {\n requestDefaults.baseUrl = options.baseUrl;\n }\n if (options.previews) {\n requestDefaults.mediaType.previews = options.previews;\n }\n if (options.timeZone) {\n requestDefaults.headers[\"time-zone\"] = options.timeZone;\n }\n this.request = import_request.request.defaults(requestDefaults);\n this.graphql = (0, import_graphql.withCustomRequest)(this.request).defaults(requestDefaults);\n this.log = Object.assign(\n {\n debug: noop,\n info: noop,\n warn: consoleWarn,\n error: consoleError\n },\n options.log\n );\n this.hook = hook;\n if (!options.authStrategy) {\n if (!options.auth) {\n this.auth = async () => ({\n type: \"unauthenticated\"\n });\n } else {\n const auth = (0, import_auth_token.createTokenAuth)(options.auth);\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n } else {\n const { authStrategy, ...otherOptions } = options;\n const auth = authStrategy(\n Object.assign(\n {\n request: this.request,\n log: this.log,\n // we pass the current octokit instance as well as its constructor options\n // to allow for authentication strategies that return a new octokit instance\n // that shares the same internal state as the current one. The original\n // requirement for this was the \"event-octokit\" authentication strategy\n // of https://github.com/probot/octokit-auth-probot.\n octokit: this,\n octokitOptions: otherOptions\n },\n options.auth\n )\n );\n hook.wrap(\"request\", auth.hook);\n this.auth = auth;\n }\n const classConstructor = this.constructor;\n for (let i = 0; i < classConstructor.plugins.length; ++i) {\n Object.assign(this, classConstructor.plugins[i](this, options));\n }\n }\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n Octokit\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n endpoint: () => endpoint\n});\nmodule.exports = __toCommonJS(dist_src_exports);\n\n// pkg/dist-src/defaults.js\nvar import_universal_user_agent = require(\"universal-user-agent\");\n\n// pkg/dist-src/version.js\nvar VERSION = \"9.0.5\";\n\n// pkg/dist-src/defaults.js\nvar userAgent = `octokit-endpoint.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`;\nvar DEFAULTS = {\n method: \"GET\",\n baseUrl: \"https://api.github.com\",\n headers: {\n accept: \"application/vnd.github.v3+json\",\n \"user-agent\": userAgent\n },\n mediaType: {\n format: \"\"\n }\n};\n\n// pkg/dist-src/util/lowercase-keys.js\nfunction lowercaseKeys(object) {\n if (!object) {\n return {};\n }\n return Object.keys(object).reduce((newObj, key) => {\n newObj[key.toLowerCase()] = object[key];\n return newObj;\n }, {});\n}\n\n// pkg/dist-src/util/is-plain-object.js\nfunction isPlainObject(value) {\n if (typeof value !== \"object\" || value === null)\n return false;\n if (Object.prototype.toString.call(value) !== \"[object Object]\")\n return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null)\n return true;\n const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\n\n// pkg/dist-src/util/merge-deep.js\nfunction mergeDeep(defaults, options) {\n const result = Object.assign({}, defaults);\n Object.keys(options).forEach((key) => {\n if (isPlainObject(options[key])) {\n if (!(key in defaults))\n Object.assign(result, { [key]: options[key] });\n else\n result[key] = mergeDeep(defaults[key], options[key]);\n } else {\n Object.assign(result, { [key]: options[key] });\n }\n });\n return result;\n}\n\n// pkg/dist-src/util/remove-undefined-properties.js\nfunction removeUndefinedProperties(obj) {\n for (const key in obj) {\n if (obj[key] === void 0) {\n delete obj[key];\n }\n }\n return obj;\n}\n\n// pkg/dist-src/merge.js\nfunction merge(defaults, route, options) {\n if (typeof route === \"string\") {\n let [method, url] = route.split(\" \");\n options = Object.assign(url ? { method, url } : { url: method }, options);\n } else {\n options = Object.assign({}, route);\n }\n options.headers = lowercaseKeys(options.headers);\n removeUndefinedProperties(options);\n removeUndefinedProperties(options.headers);\n const mergedOptions = mergeDeep(defaults || {}, options);\n if (options.url === \"/graphql\") {\n if (defaults && defaults.mediaType.previews?.length) {\n mergedOptions.mediaType.previews = defaults.mediaType.previews.filter(\n (preview) => !mergedOptions.mediaType.previews.includes(preview)\n ).concat(mergedOptions.mediaType.previews);\n }\n mergedOptions.mediaType.previews = (mergedOptions.mediaType.previews || []).map((preview) => preview.replace(/-preview/, \"\"));\n }\n return mergedOptions;\n}\n\n// pkg/dist-src/util/add-query-parameters.js\nfunction addQueryParameters(url, parameters) {\n const separator = /\\?/.test(url) ? \"&\" : \"?\";\n const names = Object.keys(parameters);\n if (names.length === 0) {\n return url;\n }\n return url + separator + names.map((name) => {\n if (name === \"q\") {\n return \"q=\" + parameters.q.split(\"+\").map(encodeURIComponent).join(\"+\");\n }\n return `${name}=${encodeURIComponent(parameters[name])}`;\n }).join(\"&\");\n}\n\n// pkg/dist-src/util/extract-url-variable-names.js\nvar urlVariableRegex = /\\{[^}]+\\}/g;\nfunction removeNonChars(variableName) {\n return variableName.replace(/^\\W+|\\W+$/g, \"\").split(/,/);\n}\nfunction extractUrlVariableNames(url) {\n const matches = url.match(urlVariableRegex);\n if (!matches) {\n return [];\n }\n return matches.map(removeNonChars).reduce((a, b) => a.concat(b), []);\n}\n\n// pkg/dist-src/util/omit.js\nfunction omit(object, keysToOmit) {\n const result = { __proto__: null };\n for (const key of Object.keys(object)) {\n if (keysToOmit.indexOf(key) === -1) {\n result[key] = object[key];\n }\n }\n return result;\n}\n\n// pkg/dist-src/util/url-template.js\nfunction encodeReserved(str) {\n return str.split(/(%[0-9A-Fa-f]{2})/g).map(function(part) {\n if (!/%[0-9A-Fa-f]/.test(part)) {\n part = encodeURI(part).replace(/%5B/g, \"[\").replace(/%5D/g, \"]\");\n }\n return part;\n }).join(\"\");\n}\nfunction encodeUnreserved(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\nfunction encodeValue(operator, value, key) {\n value = operator === \"+\" || operator === \"#\" ? encodeReserved(value) : encodeUnreserved(value);\n if (key) {\n return encodeUnreserved(key) + \"=\" + value;\n } else {\n return value;\n }\n}\nfunction isDefined(value) {\n return value !== void 0 && value !== null;\n}\nfunction isKeyOperator(operator) {\n return operator === \";\" || operator === \"&\" || operator === \"?\";\n}\nfunction getValues(context, operator, key, modifier) {\n var value = context[key], result = [];\n if (isDefined(value) && value !== \"\") {\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n value = value.toString();\n if (modifier && modifier !== \"*\") {\n value = value.substring(0, parseInt(modifier, 10));\n }\n result.push(\n encodeValue(operator, value, isKeyOperator(operator) ? key : \"\")\n );\n } else {\n if (modifier === \"*\") {\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function(value2) {\n result.push(\n encodeValue(operator, value2, isKeyOperator(operator) ? key : \"\")\n );\n });\n } else {\n Object.keys(value).forEach(function(k) {\n if (isDefined(value[k])) {\n result.push(encodeValue(operator, value[k], k));\n }\n });\n }\n } else {\n const tmp = [];\n if (Array.isArray(value)) {\n value.filter(isDefined).forEach(function(value2) {\n tmp.push(encodeValue(operator, value2));\n });\n } else {\n Object.keys(value).forEach(function(k) {\n if (isDefined(value[k])) {\n tmp.push(encodeUnreserved(k));\n tmp.push(encodeValue(operator, value[k].toString()));\n }\n });\n }\n if (isKeyOperator(operator)) {\n result.push(encodeUnreserved(key) + \"=\" + tmp.join(\",\"));\n } else if (tmp.length !== 0) {\n result.push(tmp.join(\",\"));\n }\n }\n }\n } else {\n if (operator === \";\") {\n if (isDefined(value)) {\n result.push(encodeUnreserved(key));\n }\n } else if (value === \"\" && (operator === \"&\" || operator === \"?\")) {\n result.push(encodeUnreserved(key) + \"=\");\n } else if (value === \"\") {\n result.push(\"\");\n }\n }\n return result;\n}\nfunction parseUrl(template) {\n return {\n expand: expand.bind(null, template)\n };\n}\nfunction expand(template, context) {\n var operators = [\"+\", \"#\", \".\", \"/\", \";\", \"?\", \"&\"];\n template = template.replace(\n /\\{([^\\{\\}]+)\\}|([^\\{\\}]+)/g,\n function(_, expression, literal) {\n if (expression) {\n let operator = \"\";\n const values = [];\n if (operators.indexOf(expression.charAt(0)) !== -1) {\n operator = expression.charAt(0);\n expression = expression.substr(1);\n }\n expression.split(/,/g).forEach(function(variable) {\n var tmp = /([^:\\*]*)(?::(\\d+)|(\\*))?/.exec(variable);\n values.push(getValues(context, operator, tmp[1], tmp[2] || tmp[3]));\n });\n if (operator && operator !== \"+\") {\n var separator = \",\";\n if (operator === \"?\") {\n separator = \"&\";\n } else if (operator !== \"#\") {\n separator = operator;\n }\n return (values.length !== 0 ? operator : \"\") + values.join(separator);\n } else {\n return values.join(\",\");\n }\n } else {\n return encodeReserved(literal);\n }\n }\n );\n if (template === \"/\") {\n return template;\n } else {\n return template.replace(/\\/$/, \"\");\n }\n}\n\n// pkg/dist-src/parse.js\nfunction parse(options) {\n let method = options.method.toUpperCase();\n let url = (options.url || \"/\").replace(/:([a-z]\\w+)/g, \"{$1}\");\n let headers = Object.assign({}, options.headers);\n let body;\n let parameters = omit(options, [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"mediaType\"\n ]);\n const urlVariableNames = extractUrlVariableNames(url);\n url = parseUrl(url).expand(parameters);\n if (!/^http/.test(url)) {\n url = options.baseUrl + url;\n }\n const omittedParameters = Object.keys(options).filter((option) => urlVariableNames.includes(option)).concat(\"baseUrl\");\n const remainingParameters = omit(parameters, omittedParameters);\n const isBinaryRequest = /application\\/octet-stream/i.test(headers.accept);\n if (!isBinaryRequest) {\n if (options.mediaType.format) {\n headers.accept = headers.accept.split(/,/).map(\n (format) => format.replace(\n /application\\/vnd(\\.\\w+)(\\.v3)?(\\.\\w+)?(\\+json)?$/,\n `application/vnd$1$2.${options.mediaType.format}`\n )\n ).join(\",\");\n }\n if (url.endsWith(\"/graphql\")) {\n if (options.mediaType.previews?.length) {\n const previewsFromAcceptHeader = headers.accept.match(/[\\w-]+(?=-preview)/g) || [];\n headers.accept = previewsFromAcceptHeader.concat(options.mediaType.previews).map((preview) => {\n const format = options.mediaType.format ? `.${options.mediaType.format}` : \"+json\";\n return `application/vnd.github.${preview}-preview${format}`;\n }).join(\",\");\n }\n }\n }\n if ([\"GET\", \"HEAD\"].includes(method)) {\n url = addQueryParameters(url, remainingParameters);\n } else {\n if (\"data\" in remainingParameters) {\n body = remainingParameters.data;\n } else {\n if (Object.keys(remainingParameters).length) {\n body = remainingParameters;\n }\n }\n }\n if (!headers[\"content-type\"] && typeof body !== \"undefined\") {\n headers[\"content-type\"] = \"application/json; charset=utf-8\";\n }\n if ([\"PATCH\", \"PUT\"].includes(method) && typeof body === \"undefined\") {\n body = \"\";\n }\n return Object.assign(\n { method, url, headers },\n typeof body !== \"undefined\" ? { body } : null,\n options.request ? { request: options.request } : null\n );\n}\n\n// pkg/dist-src/endpoint-with-defaults.js\nfunction endpointWithDefaults(defaults, route, options) {\n return parse(merge(defaults, route, options));\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(oldDefaults, newDefaults) {\n const DEFAULTS2 = merge(oldDefaults, newDefaults);\n const endpoint2 = endpointWithDefaults.bind(null, DEFAULTS2);\n return Object.assign(endpoint2, {\n DEFAULTS: DEFAULTS2,\n defaults: withDefaults.bind(null, DEFAULTS2),\n merge: merge.bind(null, DEFAULTS2),\n parse\n });\n}\n\n// pkg/dist-src/index.js\nvar endpoint = withDefaults(null, DEFAULTS);\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n endpoint\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n GraphqlResponseError: () => GraphqlResponseError,\n graphql: () => graphql2,\n withCustomRequest: () => withCustomRequest\n});\nmodule.exports = __toCommonJS(dist_src_exports);\nvar import_request3 = require(\"@octokit/request\");\nvar import_universal_user_agent = require(\"universal-user-agent\");\n\n// pkg/dist-src/version.js\nvar VERSION = \"7.1.0\";\n\n// pkg/dist-src/with-defaults.js\nvar import_request2 = require(\"@octokit/request\");\n\n// pkg/dist-src/graphql.js\nvar import_request = require(\"@octokit/request\");\n\n// pkg/dist-src/error.js\nfunction _buildMessageForResponseErrors(data) {\n return `Request failed due to following response errors:\n` + data.errors.map((e) => ` - ${e.message}`).join(\"\\n\");\n}\nvar GraphqlResponseError = class extends Error {\n constructor(request2, headers, response) {\n super(_buildMessageForResponseErrors(response));\n this.request = request2;\n this.headers = headers;\n this.response = response;\n this.name = \"GraphqlResponseError\";\n this.errors = response.errors;\n this.data = response.data;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n }\n};\n\n// pkg/dist-src/graphql.js\nvar NON_VARIABLE_OPTIONS = [\n \"method\",\n \"baseUrl\",\n \"url\",\n \"headers\",\n \"request\",\n \"query\",\n \"mediaType\"\n];\nvar FORBIDDEN_VARIABLE_OPTIONS = [\"query\", \"method\", \"url\"];\nvar GHES_V3_SUFFIX_REGEX = /\\/api\\/v3\\/?$/;\nfunction graphql(request2, query, options) {\n if (options) {\n if (typeof query === \"string\" && \"query\" in options) {\n return Promise.reject(\n new Error(`[@octokit/graphql] \"query\" cannot be used as variable name`)\n );\n }\n for (const key in options) {\n if (!FORBIDDEN_VARIABLE_OPTIONS.includes(key))\n continue;\n return Promise.reject(\n new Error(\n `[@octokit/graphql] \"${key}\" cannot be used as variable name`\n )\n );\n }\n }\n const parsedOptions = typeof query === \"string\" ? Object.assign({ query }, options) : query;\n const requestOptions = Object.keys(\n parsedOptions\n ).reduce((result, key) => {\n if (NON_VARIABLE_OPTIONS.includes(key)) {\n result[key] = parsedOptions[key];\n return result;\n }\n if (!result.variables) {\n result.variables = {};\n }\n result.variables[key] = parsedOptions[key];\n return result;\n }, {});\n const baseUrl = parsedOptions.baseUrl || request2.endpoint.DEFAULTS.baseUrl;\n if (GHES_V3_SUFFIX_REGEX.test(baseUrl)) {\n requestOptions.url = baseUrl.replace(GHES_V3_SUFFIX_REGEX, \"/api/graphql\");\n }\n return request2(requestOptions).then((response) => {\n if (response.data.errors) {\n const headers = {};\n for (const key of Object.keys(response.headers)) {\n headers[key] = response.headers[key];\n }\n throw new GraphqlResponseError(\n requestOptions,\n headers,\n response.data\n );\n }\n return response.data.data;\n });\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(request2, newDefaults) {\n const newRequest = request2.defaults(newDefaults);\n const newApi = (query, options) => {\n return graphql(newRequest, query, options);\n };\n return Object.assign(newApi, {\n defaults: withDefaults.bind(null, newRequest),\n endpoint: newRequest.endpoint\n });\n}\n\n// pkg/dist-src/index.js\nvar graphql2 = withDefaults(import_request3.request, {\n headers: {\n \"user-agent\": `octokit-graphql.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`\n },\n method: \"POST\",\n url: \"/graphql\"\n});\nfunction withCustomRequest(customRequest) {\n return withDefaults(customRequest, {\n method: \"POST\",\n url: \"/graphql\"\n });\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n GraphqlResponseError,\n graphql,\n withCustomRequest\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n composePaginateRest: () => composePaginateRest,\n isPaginatingEndpoint: () => isPaginatingEndpoint,\n paginateRest: () => paginateRest,\n paginatingEndpoints: () => paginatingEndpoints\n});\nmodule.exports = __toCommonJS(dist_src_exports);\n\n// pkg/dist-src/version.js\nvar VERSION = \"9.2.1\";\n\n// pkg/dist-src/normalize-paginated-list-response.js\nfunction normalizePaginatedListResponse(response) {\n if (!response.data) {\n return {\n ...response,\n data: []\n };\n }\n const responseNeedsNormalization = \"total_count\" in response.data && !(\"url\" in response.data);\n if (!responseNeedsNormalization)\n return response;\n const incompleteResults = response.data.incomplete_results;\n const repositorySelection = response.data.repository_selection;\n const totalCount = response.data.total_count;\n delete response.data.incomplete_results;\n delete response.data.repository_selection;\n delete response.data.total_count;\n const namespaceKey = Object.keys(response.data)[0];\n const data = response.data[namespaceKey];\n response.data = data;\n if (typeof incompleteResults !== \"undefined\") {\n response.data.incomplete_results = incompleteResults;\n }\n if (typeof repositorySelection !== \"undefined\") {\n response.data.repository_selection = repositorySelection;\n }\n response.data.total_count = totalCount;\n return response;\n}\n\n// pkg/dist-src/iterator.js\nfunction iterator(octokit, route, parameters) {\n const options = typeof route === \"function\" ? route.endpoint(parameters) : octokit.request.endpoint(route, parameters);\n const requestMethod = typeof route === \"function\" ? route : octokit.request;\n const method = options.method;\n const headers = options.headers;\n let url = options.url;\n return {\n [Symbol.asyncIterator]: () => ({\n async next() {\n if (!url)\n return { done: true };\n try {\n const response = await requestMethod({ method, url, headers });\n const normalizedResponse = normalizePaginatedListResponse(response);\n url = ((normalizedResponse.headers.link || \"\").match(\n /<([^>]+)>;\\s*rel=\"next\"/\n ) || [])[1];\n return { value: normalizedResponse };\n } catch (error) {\n if (error.status !== 409)\n throw error;\n url = \"\";\n return {\n value: {\n status: 200,\n headers: {},\n data: []\n }\n };\n }\n }\n })\n };\n}\n\n// pkg/dist-src/paginate.js\nfunction paginate(octokit, route, parameters, mapFn) {\n if (typeof parameters === \"function\") {\n mapFn = parameters;\n parameters = void 0;\n }\n return gather(\n octokit,\n [],\n iterator(octokit, route, parameters)[Symbol.asyncIterator](),\n mapFn\n );\n}\nfunction gather(octokit, results, iterator2, mapFn) {\n return iterator2.next().then((result) => {\n if (result.done) {\n return results;\n }\n let earlyExit = false;\n function done() {\n earlyExit = true;\n }\n results = results.concat(\n mapFn ? mapFn(result.value, done) : result.value.data\n );\n if (earlyExit) {\n return results;\n }\n return gather(octokit, results, iterator2, mapFn);\n });\n}\n\n// pkg/dist-src/compose-paginate.js\nvar composePaginateRest = Object.assign(paginate, {\n iterator\n});\n\n// pkg/dist-src/generated/paginating-endpoints.js\nvar paginatingEndpoints = [\n \"GET /advisories\",\n \"GET /app/hook/deliveries\",\n \"GET /app/installation-requests\",\n \"GET /app/installations\",\n \"GET /assignments/{assignment_id}/accepted_assignments\",\n \"GET /classrooms\",\n \"GET /classrooms/{classroom_id}/assignments\",\n \"GET /enterprises/{enterprise}/dependabot/alerts\",\n \"GET /enterprises/{enterprise}/secret-scanning/alerts\",\n \"GET /events\",\n \"GET /gists\",\n \"GET /gists/public\",\n \"GET /gists/starred\",\n \"GET /gists/{gist_id}/comments\",\n \"GET /gists/{gist_id}/commits\",\n \"GET /gists/{gist_id}/forks\",\n \"GET /installation/repositories\",\n \"GET /issues\",\n \"GET /licenses\",\n \"GET /marketplace_listing/plans\",\n \"GET /marketplace_listing/plans/{plan_id}/accounts\",\n \"GET /marketplace_listing/stubbed/plans\",\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\",\n \"GET /networks/{owner}/{repo}/events\",\n \"GET /notifications\",\n \"GET /organizations\",\n \"GET /orgs/{org}/actions/cache/usage-by-repository\",\n \"GET /orgs/{org}/actions/permissions/repositories\",\n \"GET /orgs/{org}/actions/runners\",\n \"GET /orgs/{org}/actions/secrets\",\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/actions/variables\",\n \"GET /orgs/{org}/actions/variables/{name}/repositories\",\n \"GET /orgs/{org}/blocks\",\n \"GET /orgs/{org}/code-scanning/alerts\",\n \"GET /orgs/{org}/codespaces\",\n \"GET /orgs/{org}/codespaces/secrets\",\n \"GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/copilot/billing/seats\",\n \"GET /orgs/{org}/dependabot/alerts\",\n \"GET /orgs/{org}/dependabot/secrets\",\n \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\",\n \"GET /orgs/{org}/events\",\n \"GET /orgs/{org}/failed_invitations\",\n \"GET /orgs/{org}/hooks\",\n \"GET /orgs/{org}/hooks/{hook_id}/deliveries\",\n \"GET /orgs/{org}/installations\",\n \"GET /orgs/{org}/invitations\",\n \"GET /orgs/{org}/invitations/{invitation_id}/teams\",\n \"GET /orgs/{org}/issues\",\n \"GET /orgs/{org}/members\",\n \"GET /orgs/{org}/members/{username}/codespaces\",\n \"GET /orgs/{org}/migrations\",\n \"GET /orgs/{org}/migrations/{migration_id}/repositories\",\n \"GET /orgs/{org}/organization-roles/{role_id}/teams\",\n \"GET /orgs/{org}/organization-roles/{role_id}/users\",\n \"GET /orgs/{org}/outside_collaborators\",\n \"GET /orgs/{org}/packages\",\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n \"GET /orgs/{org}/personal-access-token-requests\",\n \"GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories\",\n \"GET /orgs/{org}/personal-access-tokens\",\n \"GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories\",\n \"GET /orgs/{org}/projects\",\n \"GET /orgs/{org}/properties/values\",\n \"GET /orgs/{org}/public_members\",\n \"GET /orgs/{org}/repos\",\n \"GET /orgs/{org}/rulesets\",\n \"GET /orgs/{org}/rulesets/rule-suites\",\n \"GET /orgs/{org}/secret-scanning/alerts\",\n \"GET /orgs/{org}/security-advisories\",\n \"GET /orgs/{org}/teams\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\",\n \"GET /orgs/{org}/teams/{team_slug}/invitations\",\n \"GET /orgs/{org}/teams/{team_slug}/members\",\n \"GET /orgs/{org}/teams/{team_slug}/projects\",\n \"GET /orgs/{org}/teams/{team_slug}/repos\",\n \"GET /orgs/{org}/teams/{team_slug}/teams\",\n \"GET /projects/columns/{column_id}/cards\",\n \"GET /projects/{project_id}/collaborators\",\n \"GET /projects/{project_id}/columns\",\n \"GET /repos/{owner}/{repo}/actions/artifacts\",\n \"GET /repos/{owner}/{repo}/actions/caches\",\n \"GET /repos/{owner}/{repo}/actions/organization-secrets\",\n \"GET /repos/{owner}/{repo}/actions/organization-variables\",\n \"GET /repos/{owner}/{repo}/actions/runners\",\n \"GET /repos/{owner}/{repo}/actions/runs\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\",\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\",\n \"GET /repos/{owner}/{repo}/actions/secrets\",\n \"GET /repos/{owner}/{repo}/actions/variables\",\n \"GET /repos/{owner}/{repo}/actions/workflows\",\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\",\n \"GET /repos/{owner}/{repo}/activity\",\n \"GET /repos/{owner}/{repo}/assignees\",\n \"GET /repos/{owner}/{repo}/branches\",\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\",\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\",\n \"GET /repos/{owner}/{repo}/code-scanning/alerts\",\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n \"GET /repos/{owner}/{repo}/code-scanning/analyses\",\n \"GET /repos/{owner}/{repo}/codespaces\",\n \"GET /repos/{owner}/{repo}/codespaces/devcontainers\",\n \"GET /repos/{owner}/{repo}/codespaces/secrets\",\n \"GET /repos/{owner}/{repo}/collaborators\",\n \"GET /repos/{owner}/{repo}/comments\",\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/commits\",\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\",\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/status\",\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\",\n \"GET /repos/{owner}/{repo}/contributors\",\n \"GET /repos/{owner}/{repo}/dependabot/alerts\",\n \"GET /repos/{owner}/{repo}/dependabot/secrets\",\n \"GET /repos/{owner}/{repo}/deployments\",\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\",\n \"GET /repos/{owner}/{repo}/environments\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\",\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps\",\n \"GET /repos/{owner}/{repo}/events\",\n \"GET /repos/{owner}/{repo}/forks\",\n \"GET /repos/{owner}/{repo}/hooks\",\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\",\n \"GET /repos/{owner}/{repo}/invitations\",\n \"GET /repos/{owner}/{repo}/issues\",\n \"GET /repos/{owner}/{repo}/issues/comments\",\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/issues/events\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/events\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\",\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\",\n \"GET /repos/{owner}/{repo}/keys\",\n \"GET /repos/{owner}/{repo}/labels\",\n \"GET /repos/{owner}/{repo}/milestones\",\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\",\n \"GET /repos/{owner}/{repo}/notifications\",\n \"GET /repos/{owner}/{repo}/pages/builds\",\n \"GET /repos/{owner}/{repo}/projects\",\n \"GET /repos/{owner}/{repo}/pulls\",\n \"GET /repos/{owner}/{repo}/pulls/comments\",\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\",\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\",\n \"GET /repos/{owner}/{repo}/releases\",\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\",\n \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\",\n \"GET /repos/{owner}/{repo}/rules/branches/{branch}\",\n \"GET /repos/{owner}/{repo}/rulesets\",\n \"GET /repos/{owner}/{repo}/rulesets/rule-suites\",\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts\",\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\",\n \"GET /repos/{owner}/{repo}/security-advisories\",\n \"GET /repos/{owner}/{repo}/stargazers\",\n \"GET /repos/{owner}/{repo}/subscribers\",\n \"GET /repos/{owner}/{repo}/tags\",\n \"GET /repos/{owner}/{repo}/teams\",\n \"GET /repos/{owner}/{repo}/topics\",\n \"GET /repositories\",\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets\",\n \"GET /repositories/{repository_id}/environments/{environment_name}/variables\",\n \"GET /search/code\",\n \"GET /search/commits\",\n \"GET /search/issues\",\n \"GET /search/labels\",\n \"GET /search/repositories\",\n \"GET /search/topics\",\n \"GET /search/users\",\n \"GET /teams/{team_id}/discussions\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/comments\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/comments/{comment_number}/reactions\",\n \"GET /teams/{team_id}/discussions/{discussion_number}/reactions\",\n \"GET /teams/{team_id}/invitations\",\n \"GET /teams/{team_id}/members\",\n \"GET /teams/{team_id}/projects\",\n \"GET /teams/{team_id}/repos\",\n \"GET /teams/{team_id}/teams\",\n \"GET /user/blocks\",\n \"GET /user/codespaces\",\n \"GET /user/codespaces/secrets\",\n \"GET /user/emails\",\n \"GET /user/followers\",\n \"GET /user/following\",\n \"GET /user/gpg_keys\",\n \"GET /user/installations\",\n \"GET /user/installations/{installation_id}/repositories\",\n \"GET /user/issues\",\n \"GET /user/keys\",\n \"GET /user/marketplace_purchases\",\n \"GET /user/marketplace_purchases/stubbed\",\n \"GET /user/memberships/orgs\",\n \"GET /user/migrations\",\n \"GET /user/migrations/{migration_id}/repositories\",\n \"GET /user/orgs\",\n \"GET /user/packages\",\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n \"GET /user/public_emails\",\n \"GET /user/repos\",\n \"GET /user/repository_invitations\",\n \"GET /user/social_accounts\",\n \"GET /user/ssh_signing_keys\",\n \"GET /user/starred\",\n \"GET /user/subscriptions\",\n \"GET /user/teams\",\n \"GET /users\",\n \"GET /users/{username}/events\",\n \"GET /users/{username}/events/orgs/{org}\",\n \"GET /users/{username}/events/public\",\n \"GET /users/{username}/followers\",\n \"GET /users/{username}/following\",\n \"GET /users/{username}/gists\",\n \"GET /users/{username}/gpg_keys\",\n \"GET /users/{username}/keys\",\n \"GET /users/{username}/orgs\",\n \"GET /users/{username}/packages\",\n \"GET /users/{username}/projects\",\n \"GET /users/{username}/received_events\",\n \"GET /users/{username}/received_events/public\",\n \"GET /users/{username}/repos\",\n \"GET /users/{username}/social_accounts\",\n \"GET /users/{username}/ssh_signing_keys\",\n \"GET /users/{username}/starred\",\n \"GET /users/{username}/subscriptions\"\n];\n\n// pkg/dist-src/paginating-endpoints.js\nfunction isPaginatingEndpoint(arg) {\n if (typeof arg === \"string\") {\n return paginatingEndpoints.includes(arg);\n } else {\n return false;\n }\n}\n\n// pkg/dist-src/index.js\nfunction paginateRest(octokit) {\n return {\n paginate: Object.assign(paginate.bind(null, octokit), {\n iterator: iterator.bind(null, octokit)\n })\n };\n}\npaginateRest.VERSION = VERSION;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n composePaginateRest,\n isPaginatingEndpoint,\n paginateRest,\n paginatingEndpoints\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n legacyRestEndpointMethods: () => legacyRestEndpointMethods,\n restEndpointMethods: () => restEndpointMethods\n});\nmodule.exports = __toCommonJS(dist_src_exports);\n\n// pkg/dist-src/version.js\nvar VERSION = \"10.4.1\";\n\n// pkg/dist-src/generated/endpoints.js\nvar Endpoints = {\n actions: {\n addCustomLabelsToSelfHostedRunnerForOrg: [\n \"POST /orgs/{org}/actions/runners/{runner_id}/labels\"\n ],\n addCustomLabelsToSelfHostedRunnerForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n ],\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n addSelectedRepoToOrgVariable: [\n \"PUT /orgs/{org}/actions/variables/{name}/repositories/{repository_id}\"\n ],\n approveWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/approve\"\n ],\n cancelWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/cancel\"\n ],\n createEnvironmentVariable: [\n \"POST /repositories/{repository_id}/environments/{environment_name}/variables\"\n ],\n createOrUpdateEnvironmentSecret: [\n \"PUT /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"\n ],\n createOrUpdateOrgSecret: [\"PUT /orgs/{org}/actions/secrets/{secret_name}\"],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/actions/secrets/{secret_name}\"\n ],\n createOrgVariable: [\"POST /orgs/{org}/actions/variables\"],\n createRegistrationTokenForOrg: [\n \"POST /orgs/{org}/actions/runners/registration-token\"\n ],\n createRegistrationTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/registration-token\"\n ],\n createRemoveTokenForOrg: [\"POST /orgs/{org}/actions/runners/remove-token\"],\n createRemoveTokenForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/remove-token\"\n ],\n createRepoVariable: [\"POST /repos/{owner}/{repo}/actions/variables\"],\n createWorkflowDispatch: [\n \"POST /repos/{owner}/{repo}/actions/workflows/{workflow_id}/dispatches\"\n ],\n deleteActionsCacheById: [\n \"DELETE /repos/{owner}/{repo}/actions/caches/{cache_id}\"\n ],\n deleteActionsCacheByKey: [\n \"DELETE /repos/{owner}/{repo}/actions/caches{?key,ref}\"\n ],\n deleteArtifact: [\n \"DELETE /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"\n ],\n deleteEnvironmentSecret: [\n \"DELETE /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"\n ],\n deleteEnvironmentVariable: [\n \"DELETE /repositories/{repository_id}/environments/{environment_name}/variables/{name}\"\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/actions/secrets/{secret_name}\"],\n deleteOrgVariable: [\"DELETE /orgs/{org}/actions/variables/{name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/actions/secrets/{secret_name}\"\n ],\n deleteRepoVariable: [\n \"DELETE /repos/{owner}/{repo}/actions/variables/{name}\"\n ],\n deleteSelfHostedRunnerFromOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}\"\n ],\n deleteSelfHostedRunnerFromRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}\"\n ],\n deleteWorkflowRun: [\"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n deleteWorkflowRunLogs: [\n \"DELETE /repos/{owner}/{repo}/actions/runs/{run_id}/logs\"\n ],\n disableSelectedRepositoryGithubActionsOrganization: [\n \"DELETE /orgs/{org}/actions/permissions/repositories/{repository_id}\"\n ],\n disableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/disable\"\n ],\n downloadArtifact: [\n \"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}/{archive_format}\"\n ],\n downloadJobLogsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs\"\n ],\n downloadWorkflowRunAttemptLogs: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/logs\"\n ],\n downloadWorkflowRunLogs: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/logs\"\n ],\n enableSelectedRepositoryGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories/{repository_id}\"\n ],\n enableWorkflow: [\n \"PUT /repos/{owner}/{repo}/actions/workflows/{workflow_id}/enable\"\n ],\n forceCancelWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/force-cancel\"\n ],\n generateRunnerJitconfigForOrg: [\n \"POST /orgs/{org}/actions/runners/generate-jitconfig\"\n ],\n generateRunnerJitconfigForRepo: [\n \"POST /repos/{owner}/{repo}/actions/runners/generate-jitconfig\"\n ],\n getActionsCacheList: [\"GET /repos/{owner}/{repo}/actions/caches\"],\n getActionsCacheUsage: [\"GET /repos/{owner}/{repo}/actions/cache/usage\"],\n getActionsCacheUsageByRepoForOrg: [\n \"GET /orgs/{org}/actions/cache/usage-by-repository\"\n ],\n getActionsCacheUsageForOrg: [\"GET /orgs/{org}/actions/cache/usage\"],\n getAllowedActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/selected-actions\"\n ],\n getAllowedActionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/selected-actions\"\n ],\n getArtifact: [\"GET /repos/{owner}/{repo}/actions/artifacts/{artifact_id}\"],\n getCustomOidcSubClaimForRepo: [\n \"GET /repos/{owner}/{repo}/actions/oidc/customization/sub\"\n ],\n getEnvironmentPublicKey: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets/public-key\"\n ],\n getEnvironmentSecret: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets/{secret_name}\"\n ],\n getEnvironmentVariable: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/variables/{name}\"\n ],\n getGithubActionsDefaultWorkflowPermissionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/workflow\"\n ],\n getGithubActionsDefaultWorkflowPermissionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/workflow\"\n ],\n getGithubActionsPermissionsOrganization: [\n \"GET /orgs/{org}/actions/permissions\"\n ],\n getGithubActionsPermissionsRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions\"\n ],\n getJobForWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/jobs/{job_id}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/actions/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/actions/secrets/{secret_name}\"],\n getOrgVariable: [\"GET /orgs/{org}/actions/variables/{name}\"],\n getPendingDeploymentsForRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\"\n ],\n getRepoPermissions: [\n \"GET /repos/{owner}/{repo}/actions/permissions\",\n {},\n { renamed: [\"actions\", \"getGithubActionsPermissionsRepository\"] }\n ],\n getRepoPublicKey: [\"GET /repos/{owner}/{repo}/actions/secrets/public-key\"],\n getRepoSecret: [\"GET /repos/{owner}/{repo}/actions/secrets/{secret_name}\"],\n getRepoVariable: [\"GET /repos/{owner}/{repo}/actions/variables/{name}\"],\n getReviewsForRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/approvals\"\n ],\n getSelfHostedRunnerForOrg: [\"GET /orgs/{org}/actions/runners/{runner_id}\"],\n getSelfHostedRunnerForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}\"\n ],\n getWorkflow: [\"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}\"],\n getWorkflowAccessToRepository: [\n \"GET /repos/{owner}/{repo}/actions/permissions/access\"\n ],\n getWorkflowRun: [\"GET /repos/{owner}/{repo}/actions/runs/{run_id}\"],\n getWorkflowRunAttempt: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}\"\n ],\n getWorkflowRunUsage: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/timing\"\n ],\n getWorkflowUsage: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/timing\"\n ],\n listArtifactsForRepo: [\"GET /repos/{owner}/{repo}/actions/artifacts\"],\n listEnvironmentSecrets: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/secrets\"\n ],\n listEnvironmentVariables: [\n \"GET /repositories/{repository_id}/environments/{environment_name}/variables\"\n ],\n listJobsForWorkflowRun: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/jobs\"\n ],\n listJobsForWorkflowRunAttempt: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/attempts/{attempt_number}/jobs\"\n ],\n listLabelsForSelfHostedRunnerForOrg: [\n \"GET /orgs/{org}/actions/runners/{runner_id}/labels\"\n ],\n listLabelsForSelfHostedRunnerForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n ],\n listOrgSecrets: [\"GET /orgs/{org}/actions/secrets\"],\n listOrgVariables: [\"GET /orgs/{org}/actions/variables\"],\n listRepoOrganizationSecrets: [\n \"GET /repos/{owner}/{repo}/actions/organization-secrets\"\n ],\n listRepoOrganizationVariables: [\n \"GET /repos/{owner}/{repo}/actions/organization-variables\"\n ],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/actions/secrets\"],\n listRepoVariables: [\"GET /repos/{owner}/{repo}/actions/variables\"],\n listRepoWorkflows: [\"GET /repos/{owner}/{repo}/actions/workflows\"],\n listRunnerApplicationsForOrg: [\"GET /orgs/{org}/actions/runners/downloads\"],\n listRunnerApplicationsForRepo: [\n \"GET /repos/{owner}/{repo}/actions/runners/downloads\"\n ],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/actions/secrets/{secret_name}/repositories\"\n ],\n listSelectedReposForOrgVariable: [\n \"GET /orgs/{org}/actions/variables/{name}/repositories\"\n ],\n listSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"GET /orgs/{org}/actions/permissions/repositories\"\n ],\n listSelfHostedRunnersForOrg: [\"GET /orgs/{org}/actions/runners\"],\n listSelfHostedRunnersForRepo: [\"GET /repos/{owner}/{repo}/actions/runners\"],\n listWorkflowRunArtifacts: [\n \"GET /repos/{owner}/{repo}/actions/runs/{run_id}/artifacts\"\n ],\n listWorkflowRuns: [\n \"GET /repos/{owner}/{repo}/actions/workflows/{workflow_id}/runs\"\n ],\n listWorkflowRunsForRepo: [\"GET /repos/{owner}/{repo}/actions/runs\"],\n reRunJobForWorkflowRun: [\n \"POST /repos/{owner}/{repo}/actions/jobs/{job_id}/rerun\"\n ],\n reRunWorkflow: [\"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun\"],\n reRunWorkflowFailedJobs: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/rerun-failed-jobs\"\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels\"\n ],\n removeAllCustomLabelsFromSelfHostedRunnerForRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n ],\n removeCustomLabelFromSelfHostedRunnerForOrg: [\n \"DELETE /orgs/{org}/actions/runners/{runner_id}/labels/{name}\"\n ],\n removeCustomLabelFromSelfHostedRunnerForRepo: [\n \"DELETE /repos/{owner}/{repo}/actions/runners/{runner_id}/labels/{name}\"\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/actions/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n removeSelectedRepoFromOrgVariable: [\n \"DELETE /orgs/{org}/actions/variables/{name}/repositories/{repository_id}\"\n ],\n reviewCustomGatesForRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/deployment_protection_rule\"\n ],\n reviewPendingDeploymentsForRun: [\n \"POST /repos/{owner}/{repo}/actions/runs/{run_id}/pending_deployments\"\n ],\n setAllowedActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/selected-actions\"\n ],\n setAllowedActionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/selected-actions\"\n ],\n setCustomLabelsForSelfHostedRunnerForOrg: [\n \"PUT /orgs/{org}/actions/runners/{runner_id}/labels\"\n ],\n setCustomLabelsForSelfHostedRunnerForRepo: [\n \"PUT /repos/{owner}/{repo}/actions/runners/{runner_id}/labels\"\n ],\n setCustomOidcSubClaimForRepo: [\n \"PUT /repos/{owner}/{repo}/actions/oidc/customization/sub\"\n ],\n setGithubActionsDefaultWorkflowPermissionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/workflow\"\n ],\n setGithubActionsDefaultWorkflowPermissionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/workflow\"\n ],\n setGithubActionsPermissionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions\"\n ],\n setGithubActionsPermissionsRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions\"\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/actions/secrets/{secret_name}/repositories\"\n ],\n setSelectedReposForOrgVariable: [\n \"PUT /orgs/{org}/actions/variables/{name}/repositories\"\n ],\n setSelectedRepositoriesEnabledGithubActionsOrganization: [\n \"PUT /orgs/{org}/actions/permissions/repositories\"\n ],\n setWorkflowAccessToRepository: [\n \"PUT /repos/{owner}/{repo}/actions/permissions/access\"\n ],\n updateEnvironmentVariable: [\n \"PATCH /repositories/{repository_id}/environments/{environment_name}/variables/{name}\"\n ],\n updateOrgVariable: [\"PATCH /orgs/{org}/actions/variables/{name}\"],\n updateRepoVariable: [\n \"PATCH /repos/{owner}/{repo}/actions/variables/{name}\"\n ]\n },\n activity: {\n checkRepoIsStarredByAuthenticatedUser: [\"GET /user/starred/{owner}/{repo}\"],\n deleteRepoSubscription: [\"DELETE /repos/{owner}/{repo}/subscription\"],\n deleteThreadSubscription: [\n \"DELETE /notifications/threads/{thread_id}/subscription\"\n ],\n getFeeds: [\"GET /feeds\"],\n getRepoSubscription: [\"GET /repos/{owner}/{repo}/subscription\"],\n getThread: [\"GET /notifications/threads/{thread_id}\"],\n getThreadSubscriptionForAuthenticatedUser: [\n \"GET /notifications/threads/{thread_id}/subscription\"\n ],\n listEventsForAuthenticatedUser: [\"GET /users/{username}/events\"],\n listNotificationsForAuthenticatedUser: [\"GET /notifications\"],\n listOrgEventsForAuthenticatedUser: [\n \"GET /users/{username}/events/orgs/{org}\"\n ],\n listPublicEvents: [\"GET /events\"],\n listPublicEventsForRepoNetwork: [\"GET /networks/{owner}/{repo}/events\"],\n listPublicEventsForUser: [\"GET /users/{username}/events/public\"],\n listPublicOrgEvents: [\"GET /orgs/{org}/events\"],\n listReceivedEventsForUser: [\"GET /users/{username}/received_events\"],\n listReceivedPublicEventsForUser: [\n \"GET /users/{username}/received_events/public\"\n ],\n listRepoEvents: [\"GET /repos/{owner}/{repo}/events\"],\n listRepoNotificationsForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/notifications\"\n ],\n listReposStarredByAuthenticatedUser: [\"GET /user/starred\"],\n listReposStarredByUser: [\"GET /users/{username}/starred\"],\n listReposWatchedByUser: [\"GET /users/{username}/subscriptions\"],\n listStargazersForRepo: [\"GET /repos/{owner}/{repo}/stargazers\"],\n listWatchedReposForAuthenticatedUser: [\"GET /user/subscriptions\"],\n listWatchersForRepo: [\"GET /repos/{owner}/{repo}/subscribers\"],\n markNotificationsAsRead: [\"PUT /notifications\"],\n markRepoNotificationsAsRead: [\"PUT /repos/{owner}/{repo}/notifications\"],\n markThreadAsDone: [\"DELETE /notifications/threads/{thread_id}\"],\n markThreadAsRead: [\"PATCH /notifications/threads/{thread_id}\"],\n setRepoSubscription: [\"PUT /repos/{owner}/{repo}/subscription\"],\n setThreadSubscription: [\n \"PUT /notifications/threads/{thread_id}/subscription\"\n ],\n starRepoForAuthenticatedUser: [\"PUT /user/starred/{owner}/{repo}\"],\n unstarRepoForAuthenticatedUser: [\"DELETE /user/starred/{owner}/{repo}\"]\n },\n apps: {\n addRepoToInstallation: [\n \"PUT /user/installations/{installation_id}/repositories/{repository_id}\",\n {},\n { renamed: [\"apps\", \"addRepoToInstallationForAuthenticatedUser\"] }\n ],\n addRepoToInstallationForAuthenticatedUser: [\n \"PUT /user/installations/{installation_id}/repositories/{repository_id}\"\n ],\n checkToken: [\"POST /applications/{client_id}/token\"],\n createFromManifest: [\"POST /app-manifests/{code}/conversions\"],\n createInstallationAccessToken: [\n \"POST /app/installations/{installation_id}/access_tokens\"\n ],\n deleteAuthorization: [\"DELETE /applications/{client_id}/grant\"],\n deleteInstallation: [\"DELETE /app/installations/{installation_id}\"],\n deleteToken: [\"DELETE /applications/{client_id}/token\"],\n getAuthenticated: [\"GET /app\"],\n getBySlug: [\"GET /apps/{app_slug}\"],\n getInstallation: [\"GET /app/installations/{installation_id}\"],\n getOrgInstallation: [\"GET /orgs/{org}/installation\"],\n getRepoInstallation: [\"GET /repos/{owner}/{repo}/installation\"],\n getSubscriptionPlanForAccount: [\n \"GET /marketplace_listing/accounts/{account_id}\"\n ],\n getSubscriptionPlanForAccountStubbed: [\n \"GET /marketplace_listing/stubbed/accounts/{account_id}\"\n ],\n getUserInstallation: [\"GET /users/{username}/installation\"],\n getWebhookConfigForApp: [\"GET /app/hook/config\"],\n getWebhookDelivery: [\"GET /app/hook/deliveries/{delivery_id}\"],\n listAccountsForPlan: [\"GET /marketplace_listing/plans/{plan_id}/accounts\"],\n listAccountsForPlanStubbed: [\n \"GET /marketplace_listing/stubbed/plans/{plan_id}/accounts\"\n ],\n listInstallationReposForAuthenticatedUser: [\n \"GET /user/installations/{installation_id}/repositories\"\n ],\n listInstallationRequestsForAuthenticatedApp: [\n \"GET /app/installation-requests\"\n ],\n listInstallations: [\"GET /app/installations\"],\n listInstallationsForAuthenticatedUser: [\"GET /user/installations\"],\n listPlans: [\"GET /marketplace_listing/plans\"],\n listPlansStubbed: [\"GET /marketplace_listing/stubbed/plans\"],\n listReposAccessibleToInstallation: [\"GET /installation/repositories\"],\n listSubscriptionsForAuthenticatedUser: [\"GET /user/marketplace_purchases\"],\n listSubscriptionsForAuthenticatedUserStubbed: [\n \"GET /user/marketplace_purchases/stubbed\"\n ],\n listWebhookDeliveries: [\"GET /app/hook/deliveries\"],\n redeliverWebhookDelivery: [\n \"POST /app/hook/deliveries/{delivery_id}/attempts\"\n ],\n removeRepoFromInstallation: [\n \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\",\n {},\n { renamed: [\"apps\", \"removeRepoFromInstallationForAuthenticatedUser\"] }\n ],\n removeRepoFromInstallationForAuthenticatedUser: [\n \"DELETE /user/installations/{installation_id}/repositories/{repository_id}\"\n ],\n resetToken: [\"PATCH /applications/{client_id}/token\"],\n revokeInstallationAccessToken: [\"DELETE /installation/token\"],\n scopeToken: [\"POST /applications/{client_id}/token/scoped\"],\n suspendInstallation: [\"PUT /app/installations/{installation_id}/suspended\"],\n unsuspendInstallation: [\n \"DELETE /app/installations/{installation_id}/suspended\"\n ],\n updateWebhookConfigForApp: [\"PATCH /app/hook/config\"]\n },\n billing: {\n getGithubActionsBillingOrg: [\"GET /orgs/{org}/settings/billing/actions\"],\n getGithubActionsBillingUser: [\n \"GET /users/{username}/settings/billing/actions\"\n ],\n getGithubPackagesBillingOrg: [\"GET /orgs/{org}/settings/billing/packages\"],\n getGithubPackagesBillingUser: [\n \"GET /users/{username}/settings/billing/packages\"\n ],\n getSharedStorageBillingOrg: [\n \"GET /orgs/{org}/settings/billing/shared-storage\"\n ],\n getSharedStorageBillingUser: [\n \"GET /users/{username}/settings/billing/shared-storage\"\n ]\n },\n checks: {\n create: [\"POST /repos/{owner}/{repo}/check-runs\"],\n createSuite: [\"POST /repos/{owner}/{repo}/check-suites\"],\n get: [\"GET /repos/{owner}/{repo}/check-runs/{check_run_id}\"],\n getSuite: [\"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}\"],\n listAnnotations: [\n \"GET /repos/{owner}/{repo}/check-runs/{check_run_id}/annotations\"\n ],\n listForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-runs\"],\n listForSuite: [\n \"GET /repos/{owner}/{repo}/check-suites/{check_suite_id}/check-runs\"\n ],\n listSuitesForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/check-suites\"],\n rerequestRun: [\n \"POST /repos/{owner}/{repo}/check-runs/{check_run_id}/rerequest\"\n ],\n rerequestSuite: [\n \"POST /repos/{owner}/{repo}/check-suites/{check_suite_id}/rerequest\"\n ],\n setSuitesPreferences: [\n \"PATCH /repos/{owner}/{repo}/check-suites/preferences\"\n ],\n update: [\"PATCH /repos/{owner}/{repo}/check-runs/{check_run_id}\"]\n },\n codeScanning: {\n deleteAnalysis: [\n \"DELETE /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}{?confirm_delete}\"\n ],\n getAlert: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\",\n {},\n { renamedParameters: { alert_id: \"alert_number\" } }\n ],\n getAnalysis: [\n \"GET /repos/{owner}/{repo}/code-scanning/analyses/{analysis_id}\"\n ],\n getCodeqlDatabase: [\n \"GET /repos/{owner}/{repo}/code-scanning/codeql/databases/{language}\"\n ],\n getDefaultSetup: [\"GET /repos/{owner}/{repo}/code-scanning/default-setup\"],\n getSarif: [\"GET /repos/{owner}/{repo}/code-scanning/sarifs/{sarif_id}\"],\n listAlertInstances: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\"\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/code-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/code-scanning/alerts\"],\n listAlertsInstances: [\n \"GET /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}/instances\",\n {},\n { renamed: [\"codeScanning\", \"listAlertInstances\"] }\n ],\n listCodeqlDatabases: [\n \"GET /repos/{owner}/{repo}/code-scanning/codeql/databases\"\n ],\n listRecentAnalyses: [\"GET /repos/{owner}/{repo}/code-scanning/analyses\"],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/code-scanning/alerts/{alert_number}\"\n ],\n updateDefaultSetup: [\n \"PATCH /repos/{owner}/{repo}/code-scanning/default-setup\"\n ],\n uploadSarif: [\"POST /repos/{owner}/{repo}/code-scanning/sarifs\"]\n },\n codesOfConduct: {\n getAllCodesOfConduct: [\"GET /codes_of_conduct\"],\n getConductCode: [\"GET /codes_of_conduct/{key}\"]\n },\n codespaces: {\n addRepositoryForSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n checkPermissionsForDevcontainer: [\n \"GET /repos/{owner}/{repo}/codespaces/permissions_check\"\n ],\n codespaceMachinesForAuthenticatedUser: [\n \"GET /user/codespaces/{codespace_name}/machines\"\n ],\n createForAuthenticatedUser: [\"POST /user/codespaces\"],\n createOrUpdateOrgSecret: [\n \"PUT /orgs/{org}/codespaces/secrets/{secret_name}\"\n ],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"\n ],\n createOrUpdateSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}\"\n ],\n createWithPrForAuthenticatedUser: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/codespaces\"\n ],\n createWithRepoForAuthenticatedUser: [\n \"POST /repos/{owner}/{repo}/codespaces\"\n ],\n deleteForAuthenticatedUser: [\"DELETE /user/codespaces/{codespace_name}\"],\n deleteFromOrganization: [\n \"DELETE /orgs/{org}/members/{username}/codespaces/{codespace_name}\"\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/codespaces/secrets/{secret_name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"\n ],\n deleteSecretForAuthenticatedUser: [\n \"DELETE /user/codespaces/secrets/{secret_name}\"\n ],\n exportForAuthenticatedUser: [\n \"POST /user/codespaces/{codespace_name}/exports\"\n ],\n getCodespacesForUserInOrg: [\n \"GET /orgs/{org}/members/{username}/codespaces\"\n ],\n getExportDetailsForAuthenticatedUser: [\n \"GET /user/codespaces/{codespace_name}/exports/{export_id}\"\n ],\n getForAuthenticatedUser: [\"GET /user/codespaces/{codespace_name}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/codespaces/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/codespaces/secrets/{secret_name}\"],\n getPublicKeyForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/public-key\"\n ],\n getRepoPublicKey: [\n \"GET /repos/{owner}/{repo}/codespaces/secrets/public-key\"\n ],\n getRepoSecret: [\n \"GET /repos/{owner}/{repo}/codespaces/secrets/{secret_name}\"\n ],\n getSecretForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/{secret_name}\"\n ],\n listDevcontainersInRepositoryForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/devcontainers\"\n ],\n listForAuthenticatedUser: [\"GET /user/codespaces\"],\n listInOrganization: [\n \"GET /orgs/{org}/codespaces\",\n {},\n { renamedParameters: { org_id: \"org\" } }\n ],\n listInRepositoryForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces\"\n ],\n listOrgSecrets: [\"GET /orgs/{org}/codespaces/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/codespaces/secrets\"],\n listRepositoriesForSecretForAuthenticatedUser: [\n \"GET /user/codespaces/secrets/{secret_name}/repositories\"\n ],\n listSecretsForAuthenticatedUser: [\"GET /user/codespaces/secrets\"],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/codespaces/secrets/{secret_name}/repositories\"\n ],\n preFlightWithRepoForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/new\"\n ],\n publishForAuthenticatedUser: [\n \"POST /user/codespaces/{codespace_name}/publish\"\n ],\n removeRepositoryForSecretForAuthenticatedUser: [\n \"DELETE /user/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/codespaces/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n repoMachinesForAuthenticatedUser: [\n \"GET /repos/{owner}/{repo}/codespaces/machines\"\n ],\n setRepositoriesForSecretForAuthenticatedUser: [\n \"PUT /user/codespaces/secrets/{secret_name}/repositories\"\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/codespaces/secrets/{secret_name}/repositories\"\n ],\n startForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/start\"],\n stopForAuthenticatedUser: [\"POST /user/codespaces/{codespace_name}/stop\"],\n stopInOrganization: [\n \"POST /orgs/{org}/members/{username}/codespaces/{codespace_name}/stop\"\n ],\n updateForAuthenticatedUser: [\"PATCH /user/codespaces/{codespace_name}\"]\n },\n copilot: {\n addCopilotSeatsForTeams: [\n \"POST /orgs/{org}/copilot/billing/selected_teams\"\n ],\n addCopilotSeatsForUsers: [\n \"POST /orgs/{org}/copilot/billing/selected_users\"\n ],\n cancelCopilotSeatAssignmentForTeams: [\n \"DELETE /orgs/{org}/copilot/billing/selected_teams\"\n ],\n cancelCopilotSeatAssignmentForUsers: [\n \"DELETE /orgs/{org}/copilot/billing/selected_users\"\n ],\n getCopilotOrganizationDetails: [\"GET /orgs/{org}/copilot/billing\"],\n getCopilotSeatDetailsForUser: [\n \"GET /orgs/{org}/members/{username}/copilot\"\n ],\n listCopilotSeats: [\"GET /orgs/{org}/copilot/billing/seats\"]\n },\n dependabot: {\n addSelectedRepoToOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n createOrUpdateOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}\"\n ],\n createOrUpdateRepoSecret: [\n \"PUT /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"\n ],\n deleteOrgSecret: [\"DELETE /orgs/{org}/dependabot/secrets/{secret_name}\"],\n deleteRepoSecret: [\n \"DELETE /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"\n ],\n getAlert: [\"GET /repos/{owner}/{repo}/dependabot/alerts/{alert_number}\"],\n getOrgPublicKey: [\"GET /orgs/{org}/dependabot/secrets/public-key\"],\n getOrgSecret: [\"GET /orgs/{org}/dependabot/secrets/{secret_name}\"],\n getRepoPublicKey: [\n \"GET /repos/{owner}/{repo}/dependabot/secrets/public-key\"\n ],\n getRepoSecret: [\n \"GET /repos/{owner}/{repo}/dependabot/secrets/{secret_name}\"\n ],\n listAlertsForEnterprise: [\n \"GET /enterprises/{enterprise}/dependabot/alerts\"\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/dependabot/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/dependabot/alerts\"],\n listOrgSecrets: [\"GET /orgs/{org}/dependabot/secrets\"],\n listRepoSecrets: [\"GET /repos/{owner}/{repo}/dependabot/secrets\"],\n listSelectedReposForOrgSecret: [\n \"GET /orgs/{org}/dependabot/secrets/{secret_name}/repositories\"\n ],\n removeSelectedRepoFromOrgSecret: [\n \"DELETE /orgs/{org}/dependabot/secrets/{secret_name}/repositories/{repository_id}\"\n ],\n setSelectedReposForOrgSecret: [\n \"PUT /orgs/{org}/dependabot/secrets/{secret_name}/repositories\"\n ],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/dependabot/alerts/{alert_number}\"\n ]\n },\n dependencyGraph: {\n createRepositorySnapshot: [\n \"POST /repos/{owner}/{repo}/dependency-graph/snapshots\"\n ],\n diffRange: [\n \"GET /repos/{owner}/{repo}/dependency-graph/compare/{basehead}\"\n ],\n exportSbom: [\"GET /repos/{owner}/{repo}/dependency-graph/sbom\"]\n },\n emojis: { get: [\"GET /emojis\"] },\n gists: {\n checkIsStarred: [\"GET /gists/{gist_id}/star\"],\n create: [\"POST /gists\"],\n createComment: [\"POST /gists/{gist_id}/comments\"],\n delete: [\"DELETE /gists/{gist_id}\"],\n deleteComment: [\"DELETE /gists/{gist_id}/comments/{comment_id}\"],\n fork: [\"POST /gists/{gist_id}/forks\"],\n get: [\"GET /gists/{gist_id}\"],\n getComment: [\"GET /gists/{gist_id}/comments/{comment_id}\"],\n getRevision: [\"GET /gists/{gist_id}/{sha}\"],\n list: [\"GET /gists\"],\n listComments: [\"GET /gists/{gist_id}/comments\"],\n listCommits: [\"GET /gists/{gist_id}/commits\"],\n listForUser: [\"GET /users/{username}/gists\"],\n listForks: [\"GET /gists/{gist_id}/forks\"],\n listPublic: [\"GET /gists/public\"],\n listStarred: [\"GET /gists/starred\"],\n star: [\"PUT /gists/{gist_id}/star\"],\n unstar: [\"DELETE /gists/{gist_id}/star\"],\n update: [\"PATCH /gists/{gist_id}\"],\n updateComment: [\"PATCH /gists/{gist_id}/comments/{comment_id}\"]\n },\n git: {\n createBlob: [\"POST /repos/{owner}/{repo}/git/blobs\"],\n createCommit: [\"POST /repos/{owner}/{repo}/git/commits\"],\n createRef: [\"POST /repos/{owner}/{repo}/git/refs\"],\n createTag: [\"POST /repos/{owner}/{repo}/git/tags\"],\n createTree: [\"POST /repos/{owner}/{repo}/git/trees\"],\n deleteRef: [\"DELETE /repos/{owner}/{repo}/git/refs/{ref}\"],\n getBlob: [\"GET /repos/{owner}/{repo}/git/blobs/{file_sha}\"],\n getCommit: [\"GET /repos/{owner}/{repo}/git/commits/{commit_sha}\"],\n getRef: [\"GET /repos/{owner}/{repo}/git/ref/{ref}\"],\n getTag: [\"GET /repos/{owner}/{repo}/git/tags/{tag_sha}\"],\n getTree: [\"GET /repos/{owner}/{repo}/git/trees/{tree_sha}\"],\n listMatchingRefs: [\"GET /repos/{owner}/{repo}/git/matching-refs/{ref}\"],\n updateRef: [\"PATCH /repos/{owner}/{repo}/git/refs/{ref}\"]\n },\n gitignore: {\n getAllTemplates: [\"GET /gitignore/templates\"],\n getTemplate: [\"GET /gitignore/templates/{name}\"]\n },\n interactions: {\n getRestrictionsForAuthenticatedUser: [\"GET /user/interaction-limits\"],\n getRestrictionsForOrg: [\"GET /orgs/{org}/interaction-limits\"],\n getRestrictionsForRepo: [\"GET /repos/{owner}/{repo}/interaction-limits\"],\n getRestrictionsForYourPublicRepos: [\n \"GET /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"getRestrictionsForAuthenticatedUser\"] }\n ],\n removeRestrictionsForAuthenticatedUser: [\"DELETE /user/interaction-limits\"],\n removeRestrictionsForOrg: [\"DELETE /orgs/{org}/interaction-limits\"],\n removeRestrictionsForRepo: [\n \"DELETE /repos/{owner}/{repo}/interaction-limits\"\n ],\n removeRestrictionsForYourPublicRepos: [\n \"DELETE /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"removeRestrictionsForAuthenticatedUser\"] }\n ],\n setRestrictionsForAuthenticatedUser: [\"PUT /user/interaction-limits\"],\n setRestrictionsForOrg: [\"PUT /orgs/{org}/interaction-limits\"],\n setRestrictionsForRepo: [\"PUT /repos/{owner}/{repo}/interaction-limits\"],\n setRestrictionsForYourPublicRepos: [\n \"PUT /user/interaction-limits\",\n {},\n { renamed: [\"interactions\", \"setRestrictionsForAuthenticatedUser\"] }\n ]\n },\n issues: {\n addAssignees: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/assignees\"\n ],\n addLabels: [\"POST /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n checkUserCanBeAssigned: [\"GET /repos/{owner}/{repo}/assignees/{assignee}\"],\n checkUserCanBeAssignedToIssue: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/assignees/{assignee}\"\n ],\n create: [\"POST /repos/{owner}/{repo}/issues\"],\n createComment: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/comments\"\n ],\n createLabel: [\"POST /repos/{owner}/{repo}/labels\"],\n createMilestone: [\"POST /repos/{owner}/{repo}/milestones\"],\n deleteComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}\"\n ],\n deleteLabel: [\"DELETE /repos/{owner}/{repo}/labels/{name}\"],\n deleteMilestone: [\n \"DELETE /repos/{owner}/{repo}/milestones/{milestone_number}\"\n ],\n get: [\"GET /repos/{owner}/{repo}/issues/{issue_number}\"],\n getComment: [\"GET /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n getEvent: [\"GET /repos/{owner}/{repo}/issues/events/{event_id}\"],\n getLabel: [\"GET /repos/{owner}/{repo}/labels/{name}\"],\n getMilestone: [\"GET /repos/{owner}/{repo}/milestones/{milestone_number}\"],\n list: [\"GET /issues\"],\n listAssignees: [\"GET /repos/{owner}/{repo}/assignees\"],\n listComments: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/comments\"],\n listCommentsForRepo: [\"GET /repos/{owner}/{repo}/issues/comments\"],\n listEvents: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/events\"],\n listEventsForRepo: [\"GET /repos/{owner}/{repo}/issues/events\"],\n listEventsForTimeline: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/timeline\"\n ],\n listForAuthenticatedUser: [\"GET /user/issues\"],\n listForOrg: [\"GET /orgs/{org}/issues\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/issues\"],\n listLabelsForMilestone: [\n \"GET /repos/{owner}/{repo}/milestones/{milestone_number}/labels\"\n ],\n listLabelsForRepo: [\"GET /repos/{owner}/{repo}/labels\"],\n listLabelsOnIssue: [\n \"GET /repos/{owner}/{repo}/issues/{issue_number}/labels\"\n ],\n listMilestones: [\"GET /repos/{owner}/{repo}/milestones\"],\n lock: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n removeAllLabels: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels\"\n ],\n removeAssignees: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/assignees\"\n ],\n removeLabel: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/labels/{name}\"\n ],\n setLabels: [\"PUT /repos/{owner}/{repo}/issues/{issue_number}/labels\"],\n unlock: [\"DELETE /repos/{owner}/{repo}/issues/{issue_number}/lock\"],\n update: [\"PATCH /repos/{owner}/{repo}/issues/{issue_number}\"],\n updateComment: [\"PATCH /repos/{owner}/{repo}/issues/comments/{comment_id}\"],\n updateLabel: [\"PATCH /repos/{owner}/{repo}/labels/{name}\"],\n updateMilestone: [\n \"PATCH /repos/{owner}/{repo}/milestones/{milestone_number}\"\n ]\n },\n licenses: {\n get: [\"GET /licenses/{license}\"],\n getAllCommonlyUsed: [\"GET /licenses\"],\n getForRepo: [\"GET /repos/{owner}/{repo}/license\"]\n },\n markdown: {\n render: [\"POST /markdown\"],\n renderRaw: [\n \"POST /markdown/raw\",\n { headers: { \"content-type\": \"text/plain; charset=utf-8\" } }\n ]\n },\n meta: {\n get: [\"GET /meta\"],\n getAllVersions: [\"GET /versions\"],\n getOctocat: [\"GET /octocat\"],\n getZen: [\"GET /zen\"],\n root: [\"GET /\"]\n },\n migrations: {\n cancelImport: [\n \"DELETE /repos/{owner}/{repo}/import\",\n {},\n {\n deprecated: \"octokit.rest.migrations.cancelImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#cancel-an-import\"\n }\n ],\n deleteArchiveForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/archive\"\n ],\n deleteArchiveForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/archive\"\n ],\n downloadArchiveForOrg: [\n \"GET /orgs/{org}/migrations/{migration_id}/archive\"\n ],\n getArchiveForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}/archive\"\n ],\n getCommitAuthors: [\n \"GET /repos/{owner}/{repo}/import/authors\",\n {},\n {\n deprecated: \"octokit.rest.migrations.getCommitAuthors() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-commit-authors\"\n }\n ],\n getImportStatus: [\n \"GET /repos/{owner}/{repo}/import\",\n {},\n {\n deprecated: \"octokit.rest.migrations.getImportStatus() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-an-import-status\"\n }\n ],\n getLargeFiles: [\n \"GET /repos/{owner}/{repo}/import/large_files\",\n {},\n {\n deprecated: \"octokit.rest.migrations.getLargeFiles() is deprecated, see https://docs.github.com/rest/migrations/source-imports#get-large-files\"\n }\n ],\n getStatusForAuthenticatedUser: [\"GET /user/migrations/{migration_id}\"],\n getStatusForOrg: [\"GET /orgs/{org}/migrations/{migration_id}\"],\n listForAuthenticatedUser: [\"GET /user/migrations\"],\n listForOrg: [\"GET /orgs/{org}/migrations\"],\n listReposForAuthenticatedUser: [\n \"GET /user/migrations/{migration_id}/repositories\"\n ],\n listReposForOrg: [\"GET /orgs/{org}/migrations/{migration_id}/repositories\"],\n listReposForUser: [\n \"GET /user/migrations/{migration_id}/repositories\",\n {},\n { renamed: [\"migrations\", \"listReposForAuthenticatedUser\"] }\n ],\n mapCommitAuthor: [\n \"PATCH /repos/{owner}/{repo}/import/authors/{author_id}\",\n {},\n {\n deprecated: \"octokit.rest.migrations.mapCommitAuthor() is deprecated, see https://docs.github.com/rest/migrations/source-imports#map-a-commit-author\"\n }\n ],\n setLfsPreference: [\n \"PATCH /repos/{owner}/{repo}/import/lfs\",\n {},\n {\n deprecated: \"octokit.rest.migrations.setLfsPreference() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-git-lfs-preference\"\n }\n ],\n startForAuthenticatedUser: [\"POST /user/migrations\"],\n startForOrg: [\"POST /orgs/{org}/migrations\"],\n startImport: [\n \"PUT /repos/{owner}/{repo}/import\",\n {},\n {\n deprecated: \"octokit.rest.migrations.startImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#start-an-import\"\n }\n ],\n unlockRepoForAuthenticatedUser: [\n \"DELETE /user/migrations/{migration_id}/repos/{repo_name}/lock\"\n ],\n unlockRepoForOrg: [\n \"DELETE /orgs/{org}/migrations/{migration_id}/repos/{repo_name}/lock\"\n ],\n updateImport: [\n \"PATCH /repos/{owner}/{repo}/import\",\n {},\n {\n deprecated: \"octokit.rest.migrations.updateImport() is deprecated, see https://docs.github.com/rest/migrations/source-imports#update-an-import\"\n }\n ]\n },\n oidc: {\n getOidcCustomSubTemplateForOrg: [\n \"GET /orgs/{org}/actions/oidc/customization/sub\"\n ],\n updateOidcCustomSubTemplateForOrg: [\n \"PUT /orgs/{org}/actions/oidc/customization/sub\"\n ]\n },\n orgs: {\n addSecurityManagerTeam: [\n \"PUT /orgs/{org}/security-managers/teams/{team_slug}\"\n ],\n assignTeamToOrgRole: [\n \"PUT /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}\"\n ],\n assignUserToOrgRole: [\n \"PUT /orgs/{org}/organization-roles/users/{username}/{role_id}\"\n ],\n blockUser: [\"PUT /orgs/{org}/blocks/{username}\"],\n cancelInvitation: [\"DELETE /orgs/{org}/invitations/{invitation_id}\"],\n checkBlockedUser: [\"GET /orgs/{org}/blocks/{username}\"],\n checkMembershipForUser: [\"GET /orgs/{org}/members/{username}\"],\n checkPublicMembershipForUser: [\"GET /orgs/{org}/public_members/{username}\"],\n convertMemberToOutsideCollaborator: [\n \"PUT /orgs/{org}/outside_collaborators/{username}\"\n ],\n createCustomOrganizationRole: [\"POST /orgs/{org}/organization-roles\"],\n createInvitation: [\"POST /orgs/{org}/invitations\"],\n createOrUpdateCustomProperties: [\"PATCH /orgs/{org}/properties/schema\"],\n createOrUpdateCustomPropertiesValuesForRepos: [\n \"PATCH /orgs/{org}/properties/values\"\n ],\n createOrUpdateCustomProperty: [\n \"PUT /orgs/{org}/properties/schema/{custom_property_name}\"\n ],\n createWebhook: [\"POST /orgs/{org}/hooks\"],\n delete: [\"DELETE /orgs/{org}\"],\n deleteCustomOrganizationRole: [\n \"DELETE /orgs/{org}/organization-roles/{role_id}\"\n ],\n deleteWebhook: [\"DELETE /orgs/{org}/hooks/{hook_id}\"],\n enableOrDisableSecurityProductOnAllOrgRepos: [\n \"POST /orgs/{org}/{security_product}/{enablement}\"\n ],\n get: [\"GET /orgs/{org}\"],\n getAllCustomProperties: [\"GET /orgs/{org}/properties/schema\"],\n getCustomProperty: [\n \"GET /orgs/{org}/properties/schema/{custom_property_name}\"\n ],\n getMembershipForAuthenticatedUser: [\"GET /user/memberships/orgs/{org}\"],\n getMembershipForUser: [\"GET /orgs/{org}/memberships/{username}\"],\n getOrgRole: [\"GET /orgs/{org}/organization-roles/{role_id}\"],\n getWebhook: [\"GET /orgs/{org}/hooks/{hook_id}\"],\n getWebhookConfigForOrg: [\"GET /orgs/{org}/hooks/{hook_id}/config\"],\n getWebhookDelivery: [\n \"GET /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}\"\n ],\n list: [\"GET /organizations\"],\n listAppInstallations: [\"GET /orgs/{org}/installations\"],\n listBlockedUsers: [\"GET /orgs/{org}/blocks\"],\n listCustomPropertiesValuesForRepos: [\"GET /orgs/{org}/properties/values\"],\n listFailedInvitations: [\"GET /orgs/{org}/failed_invitations\"],\n listForAuthenticatedUser: [\"GET /user/orgs\"],\n listForUser: [\"GET /users/{username}/orgs\"],\n listInvitationTeams: [\"GET /orgs/{org}/invitations/{invitation_id}/teams\"],\n listMembers: [\"GET /orgs/{org}/members\"],\n listMembershipsForAuthenticatedUser: [\"GET /user/memberships/orgs\"],\n listOrgRoleTeams: [\"GET /orgs/{org}/organization-roles/{role_id}/teams\"],\n listOrgRoleUsers: [\"GET /orgs/{org}/organization-roles/{role_id}/users\"],\n listOrgRoles: [\"GET /orgs/{org}/organization-roles\"],\n listOrganizationFineGrainedPermissions: [\n \"GET /orgs/{org}/organization-fine-grained-permissions\"\n ],\n listOutsideCollaborators: [\"GET /orgs/{org}/outside_collaborators\"],\n listPatGrantRepositories: [\n \"GET /orgs/{org}/personal-access-tokens/{pat_id}/repositories\"\n ],\n listPatGrantRequestRepositories: [\n \"GET /orgs/{org}/personal-access-token-requests/{pat_request_id}/repositories\"\n ],\n listPatGrantRequests: [\"GET /orgs/{org}/personal-access-token-requests\"],\n listPatGrants: [\"GET /orgs/{org}/personal-access-tokens\"],\n listPendingInvitations: [\"GET /orgs/{org}/invitations\"],\n listPublicMembers: [\"GET /orgs/{org}/public_members\"],\n listSecurityManagerTeams: [\"GET /orgs/{org}/security-managers\"],\n listWebhookDeliveries: [\"GET /orgs/{org}/hooks/{hook_id}/deliveries\"],\n listWebhooks: [\"GET /orgs/{org}/hooks\"],\n patchCustomOrganizationRole: [\n \"PATCH /orgs/{org}/organization-roles/{role_id}\"\n ],\n pingWebhook: [\"POST /orgs/{org}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\n \"POST /orgs/{org}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\"\n ],\n removeCustomProperty: [\n \"DELETE /orgs/{org}/properties/schema/{custom_property_name}\"\n ],\n removeMember: [\"DELETE /orgs/{org}/members/{username}\"],\n removeMembershipForUser: [\"DELETE /orgs/{org}/memberships/{username}\"],\n removeOutsideCollaborator: [\n \"DELETE /orgs/{org}/outside_collaborators/{username}\"\n ],\n removePublicMembershipForAuthenticatedUser: [\n \"DELETE /orgs/{org}/public_members/{username}\"\n ],\n removeSecurityManagerTeam: [\n \"DELETE /orgs/{org}/security-managers/teams/{team_slug}\"\n ],\n reviewPatGrantRequest: [\n \"POST /orgs/{org}/personal-access-token-requests/{pat_request_id}\"\n ],\n reviewPatGrantRequestsInBulk: [\n \"POST /orgs/{org}/personal-access-token-requests\"\n ],\n revokeAllOrgRolesTeam: [\n \"DELETE /orgs/{org}/organization-roles/teams/{team_slug}\"\n ],\n revokeAllOrgRolesUser: [\n \"DELETE /orgs/{org}/organization-roles/users/{username}\"\n ],\n revokeOrgRoleTeam: [\n \"DELETE /orgs/{org}/organization-roles/teams/{team_slug}/{role_id}\"\n ],\n revokeOrgRoleUser: [\n \"DELETE /orgs/{org}/organization-roles/users/{username}/{role_id}\"\n ],\n setMembershipForUser: [\"PUT /orgs/{org}/memberships/{username}\"],\n setPublicMembershipForAuthenticatedUser: [\n \"PUT /orgs/{org}/public_members/{username}\"\n ],\n unblockUser: [\"DELETE /orgs/{org}/blocks/{username}\"],\n update: [\"PATCH /orgs/{org}\"],\n updateMembershipForAuthenticatedUser: [\n \"PATCH /user/memberships/orgs/{org}\"\n ],\n updatePatAccess: [\"POST /orgs/{org}/personal-access-tokens/{pat_id}\"],\n updatePatAccesses: [\"POST /orgs/{org}/personal-access-tokens\"],\n updateWebhook: [\"PATCH /orgs/{org}/hooks/{hook_id}\"],\n updateWebhookConfigForOrg: [\"PATCH /orgs/{org}/hooks/{hook_id}/config\"]\n },\n packages: {\n deletePackageForAuthenticatedUser: [\n \"DELETE /user/packages/{package_type}/{package_name}\"\n ],\n deletePackageForOrg: [\n \"DELETE /orgs/{org}/packages/{package_type}/{package_name}\"\n ],\n deletePackageForUser: [\n \"DELETE /users/{username}/packages/{package_type}/{package_name}\"\n ],\n deletePackageVersionForAuthenticatedUser: [\n \"DELETE /user/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n deletePackageVersionForOrg: [\n \"DELETE /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n deletePackageVersionForUser: [\n \"DELETE /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n getAllPackageVersionsForAPackageOwnedByAnOrg: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\",\n {},\n { renamed: [\"packages\", \"getAllPackageVersionsForPackageOwnedByOrg\"] }\n ],\n getAllPackageVersionsForAPackageOwnedByTheAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions\",\n {},\n {\n renamed: [\n \"packages\",\n \"getAllPackageVersionsForPackageOwnedByAuthenticatedUser\"\n ]\n }\n ],\n getAllPackageVersionsForPackageOwnedByAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions\"\n ],\n getAllPackageVersionsForPackageOwnedByOrg: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions\"\n ],\n getAllPackageVersionsForPackageOwnedByUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}/versions\"\n ],\n getPackageForAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}\"\n ],\n getPackageForOrganization: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}\"\n ],\n getPackageForUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}\"\n ],\n getPackageVersionForAuthenticatedUser: [\n \"GET /user/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n getPackageVersionForOrganization: [\n \"GET /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n getPackageVersionForUser: [\n \"GET /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}\"\n ],\n listDockerMigrationConflictingPackagesForAuthenticatedUser: [\n \"GET /user/docker/conflicts\"\n ],\n listDockerMigrationConflictingPackagesForOrganization: [\n \"GET /orgs/{org}/docker/conflicts\"\n ],\n listDockerMigrationConflictingPackagesForUser: [\n \"GET /users/{username}/docker/conflicts\"\n ],\n listPackagesForAuthenticatedUser: [\"GET /user/packages\"],\n listPackagesForOrganization: [\"GET /orgs/{org}/packages\"],\n listPackagesForUser: [\"GET /users/{username}/packages\"],\n restorePackageForAuthenticatedUser: [\n \"POST /user/packages/{package_type}/{package_name}/restore{?token}\"\n ],\n restorePackageForOrg: [\n \"POST /orgs/{org}/packages/{package_type}/{package_name}/restore{?token}\"\n ],\n restorePackageForUser: [\n \"POST /users/{username}/packages/{package_type}/{package_name}/restore{?token}\"\n ],\n restorePackageVersionForAuthenticatedUser: [\n \"POST /user/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"\n ],\n restorePackageVersionForOrg: [\n \"POST /orgs/{org}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"\n ],\n restorePackageVersionForUser: [\n \"POST /users/{username}/packages/{package_type}/{package_name}/versions/{package_version_id}/restore\"\n ]\n },\n projects: {\n addCollaborator: [\"PUT /projects/{project_id}/collaborators/{username}\"],\n createCard: [\"POST /projects/columns/{column_id}/cards\"],\n createColumn: [\"POST /projects/{project_id}/columns\"],\n createForAuthenticatedUser: [\"POST /user/projects\"],\n createForOrg: [\"POST /orgs/{org}/projects\"],\n createForRepo: [\"POST /repos/{owner}/{repo}/projects\"],\n delete: [\"DELETE /projects/{project_id}\"],\n deleteCard: [\"DELETE /projects/columns/cards/{card_id}\"],\n deleteColumn: [\"DELETE /projects/columns/{column_id}\"],\n get: [\"GET /projects/{project_id}\"],\n getCard: [\"GET /projects/columns/cards/{card_id}\"],\n getColumn: [\"GET /projects/columns/{column_id}\"],\n getPermissionForUser: [\n \"GET /projects/{project_id}/collaborators/{username}/permission\"\n ],\n listCards: [\"GET /projects/columns/{column_id}/cards\"],\n listCollaborators: [\"GET /projects/{project_id}/collaborators\"],\n listColumns: [\"GET /projects/{project_id}/columns\"],\n listForOrg: [\"GET /orgs/{org}/projects\"],\n listForRepo: [\"GET /repos/{owner}/{repo}/projects\"],\n listForUser: [\"GET /users/{username}/projects\"],\n moveCard: [\"POST /projects/columns/cards/{card_id}/moves\"],\n moveColumn: [\"POST /projects/columns/{column_id}/moves\"],\n removeCollaborator: [\n \"DELETE /projects/{project_id}/collaborators/{username}\"\n ],\n update: [\"PATCH /projects/{project_id}\"],\n updateCard: [\"PATCH /projects/columns/cards/{card_id}\"],\n updateColumn: [\"PATCH /projects/columns/{column_id}\"]\n },\n pulls: {\n checkIfMerged: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n create: [\"POST /repos/{owner}/{repo}/pulls\"],\n createReplyForReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments/{comment_id}/replies\"\n ],\n createReview: [\"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n createReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/comments\"\n ],\n deletePendingReview: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"\n ],\n deleteReviewComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}\"\n ],\n dismissReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/dismissals\"\n ],\n get: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}\"],\n getReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"\n ],\n getReviewComment: [\"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}\"],\n list: [\"GET /repos/{owner}/{repo}/pulls\"],\n listCommentsForReview: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/comments\"\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/commits\"],\n listFiles: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/files\"],\n listRequestedReviewers: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"\n ],\n listReviewComments: [\n \"GET /repos/{owner}/{repo}/pulls/{pull_number}/comments\"\n ],\n listReviewCommentsForRepo: [\"GET /repos/{owner}/{repo}/pulls/comments\"],\n listReviews: [\"GET /repos/{owner}/{repo}/pulls/{pull_number}/reviews\"],\n merge: [\"PUT /repos/{owner}/{repo}/pulls/{pull_number}/merge\"],\n removeRequestedReviewers: [\n \"DELETE /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"\n ],\n requestReviewers: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/requested_reviewers\"\n ],\n submitReview: [\n \"POST /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}/events\"\n ],\n update: [\"PATCH /repos/{owner}/{repo}/pulls/{pull_number}\"],\n updateBranch: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/update-branch\"\n ],\n updateReview: [\n \"PUT /repos/{owner}/{repo}/pulls/{pull_number}/reviews/{review_id}\"\n ],\n updateReviewComment: [\n \"PATCH /repos/{owner}/{repo}/pulls/comments/{comment_id}\"\n ]\n },\n rateLimit: { get: [\"GET /rate_limit\"] },\n reactions: {\n createForCommitComment: [\n \"POST /repos/{owner}/{repo}/comments/{comment_id}/reactions\"\n ],\n createForIssue: [\n \"POST /repos/{owner}/{repo}/issues/{issue_number}/reactions\"\n ],\n createForIssueComment: [\n \"POST /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\"\n ],\n createForPullRequestReviewComment: [\n \"POST /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\"\n ],\n createForRelease: [\n \"POST /repos/{owner}/{repo}/releases/{release_id}/reactions\"\n ],\n createForTeamDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\"\n ],\n createForTeamDiscussionInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\"\n ],\n deleteForCommitComment: [\n \"DELETE /repos/{owner}/{repo}/comments/{comment_id}/reactions/{reaction_id}\"\n ],\n deleteForIssue: [\n \"DELETE /repos/{owner}/{repo}/issues/{issue_number}/reactions/{reaction_id}\"\n ],\n deleteForIssueComment: [\n \"DELETE /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions/{reaction_id}\"\n ],\n deleteForPullRequestComment: [\n \"DELETE /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions/{reaction_id}\"\n ],\n deleteForRelease: [\n \"DELETE /repos/{owner}/{repo}/releases/{release_id}/reactions/{reaction_id}\"\n ],\n deleteForTeamDiscussion: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions/{reaction_id}\"\n ],\n deleteForTeamDiscussionComment: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions/{reaction_id}\"\n ],\n listForCommitComment: [\n \"GET /repos/{owner}/{repo}/comments/{comment_id}/reactions\"\n ],\n listForIssue: [\"GET /repos/{owner}/{repo}/issues/{issue_number}/reactions\"],\n listForIssueComment: [\n \"GET /repos/{owner}/{repo}/issues/comments/{comment_id}/reactions\"\n ],\n listForPullRequestReviewComment: [\n \"GET /repos/{owner}/{repo}/pulls/comments/{comment_id}/reactions\"\n ],\n listForRelease: [\n \"GET /repos/{owner}/{repo}/releases/{release_id}/reactions\"\n ],\n listForTeamDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}/reactions\"\n ],\n listForTeamDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/reactions\"\n ]\n },\n repos: {\n acceptInvitation: [\n \"PATCH /user/repository_invitations/{invitation_id}\",\n {},\n { renamed: [\"repos\", \"acceptInvitationForAuthenticatedUser\"] }\n ],\n acceptInvitationForAuthenticatedUser: [\n \"PATCH /user/repository_invitations/{invitation_id}\"\n ],\n addAppAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" }\n ],\n addCollaborator: [\"PUT /repos/{owner}/{repo}/collaborators/{username}\"],\n addStatusCheckContexts: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" }\n ],\n addTeamAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" }\n ],\n addUserAccessRestrictions: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" }\n ],\n cancelPagesDeployment: [\n \"POST /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}/cancel\"\n ],\n checkAutomatedSecurityFixes: [\n \"GET /repos/{owner}/{repo}/automated-security-fixes\"\n ],\n checkCollaborator: [\"GET /repos/{owner}/{repo}/collaborators/{username}\"],\n checkVulnerabilityAlerts: [\n \"GET /repos/{owner}/{repo}/vulnerability-alerts\"\n ],\n codeownersErrors: [\"GET /repos/{owner}/{repo}/codeowners/errors\"],\n compareCommits: [\"GET /repos/{owner}/{repo}/compare/{base}...{head}\"],\n compareCommitsWithBasehead: [\n \"GET /repos/{owner}/{repo}/compare/{basehead}\"\n ],\n createAutolink: [\"POST /repos/{owner}/{repo}/autolinks\"],\n createCommitComment: [\n \"POST /repos/{owner}/{repo}/commits/{commit_sha}/comments\"\n ],\n createCommitSignatureProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"\n ],\n createCommitStatus: [\"POST /repos/{owner}/{repo}/statuses/{sha}\"],\n createDeployKey: [\"POST /repos/{owner}/{repo}/keys\"],\n createDeployment: [\"POST /repos/{owner}/{repo}/deployments\"],\n createDeploymentBranchPolicy: [\n \"POST /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\"\n ],\n createDeploymentProtectionRule: [\n \"POST /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules\"\n ],\n createDeploymentStatus: [\n \"POST /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\"\n ],\n createDispatchEvent: [\"POST /repos/{owner}/{repo}/dispatches\"],\n createForAuthenticatedUser: [\"POST /user/repos\"],\n createFork: [\"POST /repos/{owner}/{repo}/forks\"],\n createInOrg: [\"POST /orgs/{org}/repos\"],\n createOrUpdateCustomPropertiesValues: [\n \"PATCH /repos/{owner}/{repo}/properties/values\"\n ],\n createOrUpdateEnvironment: [\n \"PUT /repos/{owner}/{repo}/environments/{environment_name}\"\n ],\n createOrUpdateFileContents: [\"PUT /repos/{owner}/{repo}/contents/{path}\"],\n createOrgRuleset: [\"POST /orgs/{org}/rulesets\"],\n createPagesDeployment: [\"POST /repos/{owner}/{repo}/pages/deployments\"],\n createPagesSite: [\"POST /repos/{owner}/{repo}/pages\"],\n createRelease: [\"POST /repos/{owner}/{repo}/releases\"],\n createRepoRuleset: [\"POST /repos/{owner}/{repo}/rulesets\"],\n createTagProtection: [\"POST /repos/{owner}/{repo}/tags/protection\"],\n createUsingTemplate: [\n \"POST /repos/{template_owner}/{template_repo}/generate\"\n ],\n createWebhook: [\"POST /repos/{owner}/{repo}/hooks\"],\n declineInvitation: [\n \"DELETE /user/repository_invitations/{invitation_id}\",\n {},\n { renamed: [\"repos\", \"declineInvitationForAuthenticatedUser\"] }\n ],\n declineInvitationForAuthenticatedUser: [\n \"DELETE /user/repository_invitations/{invitation_id}\"\n ],\n delete: [\"DELETE /repos/{owner}/{repo}\"],\n deleteAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\"\n ],\n deleteAdminBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"\n ],\n deleteAnEnvironment: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}\"\n ],\n deleteAutolink: [\"DELETE /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n deleteBranchProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection\"\n ],\n deleteCommitComment: [\"DELETE /repos/{owner}/{repo}/comments/{comment_id}\"],\n deleteCommitSignatureProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"\n ],\n deleteDeployKey: [\"DELETE /repos/{owner}/{repo}/keys/{key_id}\"],\n deleteDeployment: [\n \"DELETE /repos/{owner}/{repo}/deployments/{deployment_id}\"\n ],\n deleteDeploymentBranchPolicy: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\"\n ],\n deleteFile: [\"DELETE /repos/{owner}/{repo}/contents/{path}\"],\n deleteInvitation: [\n \"DELETE /repos/{owner}/{repo}/invitations/{invitation_id}\"\n ],\n deleteOrgRuleset: [\"DELETE /orgs/{org}/rulesets/{ruleset_id}\"],\n deletePagesSite: [\"DELETE /repos/{owner}/{repo}/pages\"],\n deletePullRequestReviewProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"\n ],\n deleteRelease: [\"DELETE /repos/{owner}/{repo}/releases/{release_id}\"],\n deleteReleaseAsset: [\n \"DELETE /repos/{owner}/{repo}/releases/assets/{asset_id}\"\n ],\n deleteRepoRuleset: [\"DELETE /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n deleteTagProtection: [\n \"DELETE /repos/{owner}/{repo}/tags/protection/{tag_protection_id}\"\n ],\n deleteWebhook: [\"DELETE /repos/{owner}/{repo}/hooks/{hook_id}\"],\n disableAutomatedSecurityFixes: [\n \"DELETE /repos/{owner}/{repo}/automated-security-fixes\"\n ],\n disableDeploymentProtectionRule: [\n \"DELETE /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}\"\n ],\n disablePrivateVulnerabilityReporting: [\n \"DELETE /repos/{owner}/{repo}/private-vulnerability-reporting\"\n ],\n disableVulnerabilityAlerts: [\n \"DELETE /repos/{owner}/{repo}/vulnerability-alerts\"\n ],\n downloadArchive: [\n \"GET /repos/{owner}/{repo}/zipball/{ref}\",\n {},\n { renamed: [\"repos\", \"downloadZipballArchive\"] }\n ],\n downloadTarballArchive: [\"GET /repos/{owner}/{repo}/tarball/{ref}\"],\n downloadZipballArchive: [\"GET /repos/{owner}/{repo}/zipball/{ref}\"],\n enableAutomatedSecurityFixes: [\n \"PUT /repos/{owner}/{repo}/automated-security-fixes\"\n ],\n enablePrivateVulnerabilityReporting: [\n \"PUT /repos/{owner}/{repo}/private-vulnerability-reporting\"\n ],\n enableVulnerabilityAlerts: [\n \"PUT /repos/{owner}/{repo}/vulnerability-alerts\"\n ],\n generateReleaseNotes: [\n \"POST /repos/{owner}/{repo}/releases/generate-notes\"\n ],\n get: [\"GET /repos/{owner}/{repo}\"],\n getAccessRestrictions: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions\"\n ],\n getAdminBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"\n ],\n getAllDeploymentProtectionRules: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules\"\n ],\n getAllEnvironments: [\"GET /repos/{owner}/{repo}/environments\"],\n getAllStatusCheckContexts: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\"\n ],\n getAllTopics: [\"GET /repos/{owner}/{repo}/topics\"],\n getAppsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\"\n ],\n getAutolink: [\"GET /repos/{owner}/{repo}/autolinks/{autolink_id}\"],\n getBranch: [\"GET /repos/{owner}/{repo}/branches/{branch}\"],\n getBranchProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection\"\n ],\n getBranchRules: [\"GET /repos/{owner}/{repo}/rules/branches/{branch}\"],\n getClones: [\"GET /repos/{owner}/{repo}/traffic/clones\"],\n getCodeFrequencyStats: [\"GET /repos/{owner}/{repo}/stats/code_frequency\"],\n getCollaboratorPermissionLevel: [\n \"GET /repos/{owner}/{repo}/collaborators/{username}/permission\"\n ],\n getCombinedStatusForRef: [\"GET /repos/{owner}/{repo}/commits/{ref}/status\"],\n getCommit: [\"GET /repos/{owner}/{repo}/commits/{ref}\"],\n getCommitActivityStats: [\"GET /repos/{owner}/{repo}/stats/commit_activity\"],\n getCommitComment: [\"GET /repos/{owner}/{repo}/comments/{comment_id}\"],\n getCommitSignatureProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_signatures\"\n ],\n getCommunityProfileMetrics: [\"GET /repos/{owner}/{repo}/community/profile\"],\n getContent: [\"GET /repos/{owner}/{repo}/contents/{path}\"],\n getContributorsStats: [\"GET /repos/{owner}/{repo}/stats/contributors\"],\n getCustomDeploymentProtectionRule: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/{protection_rule_id}\"\n ],\n getCustomPropertiesValues: [\"GET /repos/{owner}/{repo}/properties/values\"],\n getDeployKey: [\"GET /repos/{owner}/{repo}/keys/{key_id}\"],\n getDeployment: [\"GET /repos/{owner}/{repo}/deployments/{deployment_id}\"],\n getDeploymentBranchPolicy: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\"\n ],\n getDeploymentStatus: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses/{status_id}\"\n ],\n getEnvironment: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}\"\n ],\n getLatestPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/latest\"],\n getLatestRelease: [\"GET /repos/{owner}/{repo}/releases/latest\"],\n getOrgRuleSuite: [\"GET /orgs/{org}/rulesets/rule-suites/{rule_suite_id}\"],\n getOrgRuleSuites: [\"GET /orgs/{org}/rulesets/rule-suites\"],\n getOrgRuleset: [\"GET /orgs/{org}/rulesets/{ruleset_id}\"],\n getOrgRulesets: [\"GET /orgs/{org}/rulesets\"],\n getPages: [\"GET /repos/{owner}/{repo}/pages\"],\n getPagesBuild: [\"GET /repos/{owner}/{repo}/pages/builds/{build_id}\"],\n getPagesDeployment: [\n \"GET /repos/{owner}/{repo}/pages/deployments/{pages_deployment_id}\"\n ],\n getPagesHealthCheck: [\"GET /repos/{owner}/{repo}/pages/health\"],\n getParticipationStats: [\"GET /repos/{owner}/{repo}/stats/participation\"],\n getPullRequestReviewProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"\n ],\n getPunchCardStats: [\"GET /repos/{owner}/{repo}/stats/punch_card\"],\n getReadme: [\"GET /repos/{owner}/{repo}/readme\"],\n getReadmeInDirectory: [\"GET /repos/{owner}/{repo}/readme/{dir}\"],\n getRelease: [\"GET /repos/{owner}/{repo}/releases/{release_id}\"],\n getReleaseAsset: [\"GET /repos/{owner}/{repo}/releases/assets/{asset_id}\"],\n getReleaseByTag: [\"GET /repos/{owner}/{repo}/releases/tags/{tag}\"],\n getRepoRuleSuite: [\n \"GET /repos/{owner}/{repo}/rulesets/rule-suites/{rule_suite_id}\"\n ],\n getRepoRuleSuites: [\"GET /repos/{owner}/{repo}/rulesets/rule-suites\"],\n getRepoRuleset: [\"GET /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n getRepoRulesets: [\"GET /repos/{owner}/{repo}/rulesets\"],\n getStatusChecksProtection: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"\n ],\n getTeamsWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\"\n ],\n getTopPaths: [\"GET /repos/{owner}/{repo}/traffic/popular/paths\"],\n getTopReferrers: [\"GET /repos/{owner}/{repo}/traffic/popular/referrers\"],\n getUsersWithAccessToProtectedBranch: [\n \"GET /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\"\n ],\n getViews: [\"GET /repos/{owner}/{repo}/traffic/views\"],\n getWebhook: [\"GET /repos/{owner}/{repo}/hooks/{hook_id}\"],\n getWebhookConfigForRepo: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/config\"\n ],\n getWebhookDelivery: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}\"\n ],\n listActivities: [\"GET /repos/{owner}/{repo}/activity\"],\n listAutolinks: [\"GET /repos/{owner}/{repo}/autolinks\"],\n listBranches: [\"GET /repos/{owner}/{repo}/branches\"],\n listBranchesForHeadCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/branches-where-head\"\n ],\n listCollaborators: [\"GET /repos/{owner}/{repo}/collaborators\"],\n listCommentsForCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/comments\"\n ],\n listCommitCommentsForRepo: [\"GET /repos/{owner}/{repo}/comments\"],\n listCommitStatusesForRef: [\n \"GET /repos/{owner}/{repo}/commits/{ref}/statuses\"\n ],\n listCommits: [\"GET /repos/{owner}/{repo}/commits\"],\n listContributors: [\"GET /repos/{owner}/{repo}/contributors\"],\n listCustomDeploymentRuleIntegrations: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment_protection_rules/apps\"\n ],\n listDeployKeys: [\"GET /repos/{owner}/{repo}/keys\"],\n listDeploymentBranchPolicies: [\n \"GET /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies\"\n ],\n listDeploymentStatuses: [\n \"GET /repos/{owner}/{repo}/deployments/{deployment_id}/statuses\"\n ],\n listDeployments: [\"GET /repos/{owner}/{repo}/deployments\"],\n listForAuthenticatedUser: [\"GET /user/repos\"],\n listForOrg: [\"GET /orgs/{org}/repos\"],\n listForUser: [\"GET /users/{username}/repos\"],\n listForks: [\"GET /repos/{owner}/{repo}/forks\"],\n listInvitations: [\"GET /repos/{owner}/{repo}/invitations\"],\n listInvitationsForAuthenticatedUser: [\"GET /user/repository_invitations\"],\n listLanguages: [\"GET /repos/{owner}/{repo}/languages\"],\n listPagesBuilds: [\"GET /repos/{owner}/{repo}/pages/builds\"],\n listPublic: [\"GET /repositories\"],\n listPullRequestsAssociatedWithCommit: [\n \"GET /repos/{owner}/{repo}/commits/{commit_sha}/pulls\"\n ],\n listReleaseAssets: [\n \"GET /repos/{owner}/{repo}/releases/{release_id}/assets\"\n ],\n listReleases: [\"GET /repos/{owner}/{repo}/releases\"],\n listTagProtection: [\"GET /repos/{owner}/{repo}/tags/protection\"],\n listTags: [\"GET /repos/{owner}/{repo}/tags\"],\n listTeams: [\"GET /repos/{owner}/{repo}/teams\"],\n listWebhookDeliveries: [\n \"GET /repos/{owner}/{repo}/hooks/{hook_id}/deliveries\"\n ],\n listWebhooks: [\"GET /repos/{owner}/{repo}/hooks\"],\n merge: [\"POST /repos/{owner}/{repo}/merges\"],\n mergeUpstream: [\"POST /repos/{owner}/{repo}/merge-upstream\"],\n pingWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/pings\"],\n redeliverWebhookDelivery: [\n \"POST /repos/{owner}/{repo}/hooks/{hook_id}/deliveries/{delivery_id}/attempts\"\n ],\n removeAppAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" }\n ],\n removeCollaborator: [\n \"DELETE /repos/{owner}/{repo}/collaborators/{username}\"\n ],\n removeStatusCheckContexts: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" }\n ],\n removeStatusCheckProtection: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"\n ],\n removeTeamAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" }\n ],\n removeUserAccessRestrictions: [\n \"DELETE /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" }\n ],\n renameBranch: [\"POST /repos/{owner}/{repo}/branches/{branch}/rename\"],\n replaceAllTopics: [\"PUT /repos/{owner}/{repo}/topics\"],\n requestPagesBuild: [\"POST /repos/{owner}/{repo}/pages/builds\"],\n setAdminBranchProtection: [\n \"POST /repos/{owner}/{repo}/branches/{branch}/protection/enforce_admins\"\n ],\n setAppAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/apps\",\n {},\n { mapToData: \"apps\" }\n ],\n setStatusCheckContexts: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks/contexts\",\n {},\n { mapToData: \"contexts\" }\n ],\n setTeamAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/teams\",\n {},\n { mapToData: \"teams\" }\n ],\n setUserAccessRestrictions: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection/restrictions/users\",\n {},\n { mapToData: \"users\" }\n ],\n testPushWebhook: [\"POST /repos/{owner}/{repo}/hooks/{hook_id}/tests\"],\n transfer: [\"POST /repos/{owner}/{repo}/transfer\"],\n update: [\"PATCH /repos/{owner}/{repo}\"],\n updateBranchProtection: [\n \"PUT /repos/{owner}/{repo}/branches/{branch}/protection\"\n ],\n updateCommitComment: [\"PATCH /repos/{owner}/{repo}/comments/{comment_id}\"],\n updateDeploymentBranchPolicy: [\n \"PUT /repos/{owner}/{repo}/environments/{environment_name}/deployment-branch-policies/{branch_policy_id}\"\n ],\n updateInformationAboutPagesSite: [\"PUT /repos/{owner}/{repo}/pages\"],\n updateInvitation: [\n \"PATCH /repos/{owner}/{repo}/invitations/{invitation_id}\"\n ],\n updateOrgRuleset: [\"PUT /orgs/{org}/rulesets/{ruleset_id}\"],\n updatePullRequestReviewProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_pull_request_reviews\"\n ],\n updateRelease: [\"PATCH /repos/{owner}/{repo}/releases/{release_id}\"],\n updateReleaseAsset: [\n \"PATCH /repos/{owner}/{repo}/releases/assets/{asset_id}\"\n ],\n updateRepoRuleset: [\"PUT /repos/{owner}/{repo}/rulesets/{ruleset_id}\"],\n updateStatusCheckPotection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\",\n {},\n { renamed: [\"repos\", \"updateStatusCheckProtection\"] }\n ],\n updateStatusCheckProtection: [\n \"PATCH /repos/{owner}/{repo}/branches/{branch}/protection/required_status_checks\"\n ],\n updateWebhook: [\"PATCH /repos/{owner}/{repo}/hooks/{hook_id}\"],\n updateWebhookConfigForRepo: [\n \"PATCH /repos/{owner}/{repo}/hooks/{hook_id}/config\"\n ],\n uploadReleaseAsset: [\n \"POST /repos/{owner}/{repo}/releases/{release_id}/assets{?name,label}\",\n { baseUrl: \"https://uploads.github.com\" }\n ]\n },\n search: {\n code: [\"GET /search/code\"],\n commits: [\"GET /search/commits\"],\n issuesAndPullRequests: [\"GET /search/issues\"],\n labels: [\"GET /search/labels\"],\n repos: [\"GET /search/repositories\"],\n topics: [\"GET /search/topics\"],\n users: [\"GET /search/users\"]\n },\n secretScanning: {\n getAlert: [\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\"\n ],\n listAlertsForEnterprise: [\n \"GET /enterprises/{enterprise}/secret-scanning/alerts\"\n ],\n listAlertsForOrg: [\"GET /orgs/{org}/secret-scanning/alerts\"],\n listAlertsForRepo: [\"GET /repos/{owner}/{repo}/secret-scanning/alerts\"],\n listLocationsForAlert: [\n \"GET /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}/locations\"\n ],\n updateAlert: [\n \"PATCH /repos/{owner}/{repo}/secret-scanning/alerts/{alert_number}\"\n ]\n },\n securityAdvisories: {\n createFork: [\n \"POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/forks\"\n ],\n createPrivateVulnerabilityReport: [\n \"POST /repos/{owner}/{repo}/security-advisories/reports\"\n ],\n createRepositoryAdvisory: [\n \"POST /repos/{owner}/{repo}/security-advisories\"\n ],\n createRepositoryAdvisoryCveRequest: [\n \"POST /repos/{owner}/{repo}/security-advisories/{ghsa_id}/cve\"\n ],\n getGlobalAdvisory: [\"GET /advisories/{ghsa_id}\"],\n getRepositoryAdvisory: [\n \"GET /repos/{owner}/{repo}/security-advisories/{ghsa_id}\"\n ],\n listGlobalAdvisories: [\"GET /advisories\"],\n listOrgRepositoryAdvisories: [\"GET /orgs/{org}/security-advisories\"],\n listRepositoryAdvisories: [\"GET /repos/{owner}/{repo}/security-advisories\"],\n updateRepositoryAdvisory: [\n \"PATCH /repos/{owner}/{repo}/security-advisories/{ghsa_id}\"\n ]\n },\n teams: {\n addOrUpdateMembershipForUserInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/memberships/{username}\"\n ],\n addOrUpdateProjectPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/projects/{project_id}\"\n ],\n addOrUpdateRepoPermissionsInOrg: [\n \"PUT /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"\n ],\n checkPermissionsForProjectInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/projects/{project_id}\"\n ],\n checkPermissionsForRepoInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"\n ],\n create: [\"POST /orgs/{org}/teams\"],\n createDiscussionCommentInOrg: [\n \"POST /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\"\n ],\n createDiscussionInOrg: [\"POST /orgs/{org}/teams/{team_slug}/discussions\"],\n deleteDiscussionCommentInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"\n ],\n deleteDiscussionInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"\n ],\n deleteInOrg: [\"DELETE /orgs/{org}/teams/{team_slug}\"],\n getByName: [\"GET /orgs/{org}/teams/{team_slug}\"],\n getDiscussionCommentInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"\n ],\n getDiscussionInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"\n ],\n getMembershipForUserInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/memberships/{username}\"\n ],\n list: [\"GET /orgs/{org}/teams\"],\n listChildInOrg: [\"GET /orgs/{org}/teams/{team_slug}/teams\"],\n listDiscussionCommentsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments\"\n ],\n listDiscussionsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/discussions\"],\n listForAuthenticatedUser: [\"GET /user/teams\"],\n listMembersInOrg: [\"GET /orgs/{org}/teams/{team_slug}/members\"],\n listPendingInvitationsInOrg: [\n \"GET /orgs/{org}/teams/{team_slug}/invitations\"\n ],\n listProjectsInOrg: [\"GET /orgs/{org}/teams/{team_slug}/projects\"],\n listReposInOrg: [\"GET /orgs/{org}/teams/{team_slug}/repos\"],\n removeMembershipForUserInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/memberships/{username}\"\n ],\n removeProjectInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/projects/{project_id}\"\n ],\n removeRepoInOrg: [\n \"DELETE /orgs/{org}/teams/{team_slug}/repos/{owner}/{repo}\"\n ],\n updateDiscussionCommentInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}/comments/{comment_number}\"\n ],\n updateDiscussionInOrg: [\n \"PATCH /orgs/{org}/teams/{team_slug}/discussions/{discussion_number}\"\n ],\n updateInOrg: [\"PATCH /orgs/{org}/teams/{team_slug}\"]\n },\n users: {\n addEmailForAuthenticated: [\n \"POST /user/emails\",\n {},\n { renamed: [\"users\", \"addEmailForAuthenticatedUser\"] }\n ],\n addEmailForAuthenticatedUser: [\"POST /user/emails\"],\n addSocialAccountForAuthenticatedUser: [\"POST /user/social_accounts\"],\n block: [\"PUT /user/blocks/{username}\"],\n checkBlocked: [\"GET /user/blocks/{username}\"],\n checkFollowingForUser: [\"GET /users/{username}/following/{target_user}\"],\n checkPersonIsFollowedByAuthenticated: [\"GET /user/following/{username}\"],\n createGpgKeyForAuthenticated: [\n \"POST /user/gpg_keys\",\n {},\n { renamed: [\"users\", \"createGpgKeyForAuthenticatedUser\"] }\n ],\n createGpgKeyForAuthenticatedUser: [\"POST /user/gpg_keys\"],\n createPublicSshKeyForAuthenticated: [\n \"POST /user/keys\",\n {},\n { renamed: [\"users\", \"createPublicSshKeyForAuthenticatedUser\"] }\n ],\n createPublicSshKeyForAuthenticatedUser: [\"POST /user/keys\"],\n createSshSigningKeyForAuthenticatedUser: [\"POST /user/ssh_signing_keys\"],\n deleteEmailForAuthenticated: [\n \"DELETE /user/emails\",\n {},\n { renamed: [\"users\", \"deleteEmailForAuthenticatedUser\"] }\n ],\n deleteEmailForAuthenticatedUser: [\"DELETE /user/emails\"],\n deleteGpgKeyForAuthenticated: [\n \"DELETE /user/gpg_keys/{gpg_key_id}\",\n {},\n { renamed: [\"users\", \"deleteGpgKeyForAuthenticatedUser\"] }\n ],\n deleteGpgKeyForAuthenticatedUser: [\"DELETE /user/gpg_keys/{gpg_key_id}\"],\n deletePublicSshKeyForAuthenticated: [\n \"DELETE /user/keys/{key_id}\",\n {},\n { renamed: [\"users\", \"deletePublicSshKeyForAuthenticatedUser\"] }\n ],\n deletePublicSshKeyForAuthenticatedUser: [\"DELETE /user/keys/{key_id}\"],\n deleteSocialAccountForAuthenticatedUser: [\"DELETE /user/social_accounts\"],\n deleteSshSigningKeyForAuthenticatedUser: [\n \"DELETE /user/ssh_signing_keys/{ssh_signing_key_id}\"\n ],\n follow: [\"PUT /user/following/{username}\"],\n getAuthenticated: [\"GET /user\"],\n getByUsername: [\"GET /users/{username}\"],\n getContextForUser: [\"GET /users/{username}/hovercard\"],\n getGpgKeyForAuthenticated: [\n \"GET /user/gpg_keys/{gpg_key_id}\",\n {},\n { renamed: [\"users\", \"getGpgKeyForAuthenticatedUser\"] }\n ],\n getGpgKeyForAuthenticatedUser: [\"GET /user/gpg_keys/{gpg_key_id}\"],\n getPublicSshKeyForAuthenticated: [\n \"GET /user/keys/{key_id}\",\n {},\n { renamed: [\"users\", \"getPublicSshKeyForAuthenticatedUser\"] }\n ],\n getPublicSshKeyForAuthenticatedUser: [\"GET /user/keys/{key_id}\"],\n getSshSigningKeyForAuthenticatedUser: [\n \"GET /user/ssh_signing_keys/{ssh_signing_key_id}\"\n ],\n list: [\"GET /users\"],\n listBlockedByAuthenticated: [\n \"GET /user/blocks\",\n {},\n { renamed: [\"users\", \"listBlockedByAuthenticatedUser\"] }\n ],\n listBlockedByAuthenticatedUser: [\"GET /user/blocks\"],\n listEmailsForAuthenticated: [\n \"GET /user/emails\",\n {},\n { renamed: [\"users\", \"listEmailsForAuthenticatedUser\"] }\n ],\n listEmailsForAuthenticatedUser: [\"GET /user/emails\"],\n listFollowedByAuthenticated: [\n \"GET /user/following\",\n {},\n { renamed: [\"users\", \"listFollowedByAuthenticatedUser\"] }\n ],\n listFollowedByAuthenticatedUser: [\"GET /user/following\"],\n listFollowersForAuthenticatedUser: [\"GET /user/followers\"],\n listFollowersForUser: [\"GET /users/{username}/followers\"],\n listFollowingForUser: [\"GET /users/{username}/following\"],\n listGpgKeysForAuthenticated: [\n \"GET /user/gpg_keys\",\n {},\n { renamed: [\"users\", \"listGpgKeysForAuthenticatedUser\"] }\n ],\n listGpgKeysForAuthenticatedUser: [\"GET /user/gpg_keys\"],\n listGpgKeysForUser: [\"GET /users/{username}/gpg_keys\"],\n listPublicEmailsForAuthenticated: [\n \"GET /user/public_emails\",\n {},\n { renamed: [\"users\", \"listPublicEmailsForAuthenticatedUser\"] }\n ],\n listPublicEmailsForAuthenticatedUser: [\"GET /user/public_emails\"],\n listPublicKeysForUser: [\"GET /users/{username}/keys\"],\n listPublicSshKeysForAuthenticated: [\n \"GET /user/keys\",\n {},\n { renamed: [\"users\", \"listPublicSshKeysForAuthenticatedUser\"] }\n ],\n listPublicSshKeysForAuthenticatedUser: [\"GET /user/keys\"],\n listSocialAccountsForAuthenticatedUser: [\"GET /user/social_accounts\"],\n listSocialAccountsForUser: [\"GET /users/{username}/social_accounts\"],\n listSshSigningKeysForAuthenticatedUser: [\"GET /user/ssh_signing_keys\"],\n listSshSigningKeysForUser: [\"GET /users/{username}/ssh_signing_keys\"],\n setPrimaryEmailVisibilityForAuthenticated: [\n \"PATCH /user/email/visibility\",\n {},\n { renamed: [\"users\", \"setPrimaryEmailVisibilityForAuthenticatedUser\"] }\n ],\n setPrimaryEmailVisibilityForAuthenticatedUser: [\n \"PATCH /user/email/visibility\"\n ],\n unblock: [\"DELETE /user/blocks/{username}\"],\n unfollow: [\"DELETE /user/following/{username}\"],\n updateAuthenticated: [\"PATCH /user\"]\n }\n};\nvar endpoints_default = Endpoints;\n\n// pkg/dist-src/endpoints-to-methods.js\nvar endpointMethodsMap = /* @__PURE__ */ new Map();\nfor (const [scope, endpoints] of Object.entries(endpoints_default)) {\n for (const [methodName, endpoint] of Object.entries(endpoints)) {\n const [route, defaults, decorations] = endpoint;\n const [method, url] = route.split(/ /);\n const endpointDefaults = Object.assign(\n {\n method,\n url\n },\n defaults\n );\n if (!endpointMethodsMap.has(scope)) {\n endpointMethodsMap.set(scope, /* @__PURE__ */ new Map());\n }\n endpointMethodsMap.get(scope).set(methodName, {\n scope,\n methodName,\n endpointDefaults,\n decorations\n });\n }\n}\nvar handler = {\n has({ scope }, methodName) {\n return endpointMethodsMap.get(scope).has(methodName);\n },\n getOwnPropertyDescriptor(target, methodName) {\n return {\n value: this.get(target, methodName),\n // ensures method is in the cache\n configurable: true,\n writable: true,\n enumerable: true\n };\n },\n defineProperty(target, methodName, descriptor) {\n Object.defineProperty(target.cache, methodName, descriptor);\n return true;\n },\n deleteProperty(target, methodName) {\n delete target.cache[methodName];\n return true;\n },\n ownKeys({ scope }) {\n return [...endpointMethodsMap.get(scope).keys()];\n },\n set(target, methodName, value) {\n return target.cache[methodName] = value;\n },\n get({ octokit, scope, cache }, methodName) {\n if (cache[methodName]) {\n return cache[methodName];\n }\n const method = endpointMethodsMap.get(scope).get(methodName);\n if (!method) {\n return void 0;\n }\n const { endpointDefaults, decorations } = method;\n if (decorations) {\n cache[methodName] = decorate(\n octokit,\n scope,\n methodName,\n endpointDefaults,\n decorations\n );\n } else {\n cache[methodName] = octokit.request.defaults(endpointDefaults);\n }\n return cache[methodName];\n }\n};\nfunction endpointsToMethods(octokit) {\n const newMethods = {};\n for (const scope of endpointMethodsMap.keys()) {\n newMethods[scope] = new Proxy({ octokit, scope, cache: {} }, handler);\n }\n return newMethods;\n}\nfunction decorate(octokit, scope, methodName, defaults, decorations) {\n const requestWithDefaults = octokit.request.defaults(defaults);\n function withDecorations(...args) {\n let options = requestWithDefaults.endpoint.merge(...args);\n if (decorations.mapToData) {\n options = Object.assign({}, options, {\n data: options[decorations.mapToData],\n [decorations.mapToData]: void 0\n });\n return requestWithDefaults(options);\n }\n if (decorations.renamed) {\n const [newScope, newMethodName] = decorations.renamed;\n octokit.log.warn(\n `octokit.${scope}.${methodName}() has been renamed to octokit.${newScope}.${newMethodName}()`\n );\n }\n if (decorations.deprecated) {\n octokit.log.warn(decorations.deprecated);\n }\n if (decorations.renamedParameters) {\n const options2 = requestWithDefaults.endpoint.merge(...args);\n for (const [name, alias] of Object.entries(\n decorations.renamedParameters\n )) {\n if (name in options2) {\n octokit.log.warn(\n `\"${name}\" parameter is deprecated for \"octokit.${scope}.${methodName}()\". Use \"${alias}\" instead`\n );\n if (!(alias in options2)) {\n options2[alias] = options2[name];\n }\n delete options2[name];\n }\n }\n return requestWithDefaults(options2);\n }\n return requestWithDefaults(...args);\n }\n return Object.assign(withDecorations, requestWithDefaults);\n}\n\n// pkg/dist-src/index.js\nfunction restEndpointMethods(octokit) {\n const api = endpointsToMethods(octokit);\n return {\n rest: api\n };\n}\nrestEndpointMethods.VERSION = VERSION;\nfunction legacyRestEndpointMethods(octokit) {\n const api = endpointsToMethods(octokit);\n return {\n ...api,\n rest: api\n };\n}\nlegacyRestEndpointMethods.VERSION = VERSION;\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n legacyRestEndpointMethods,\n restEndpointMethods\n});\n","\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n RequestError: () => RequestError\n});\nmodule.exports = __toCommonJS(dist_src_exports);\nvar import_deprecation = require(\"deprecation\");\nvar import_once = __toESM(require(\"once\"));\nvar logOnceCode = (0, import_once.default)((deprecation) => console.warn(deprecation));\nvar logOnceHeaders = (0, import_once.default)((deprecation) => console.warn(deprecation));\nvar RequestError = class extends Error {\n constructor(message, statusCode, options) {\n super(message);\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n this.name = \"HttpError\";\n this.status = statusCode;\n let headers;\n if (\"headers\" in options && typeof options.headers !== \"undefined\") {\n headers = options.headers;\n }\n if (\"response\" in options) {\n this.response = options.response;\n headers = options.response.headers;\n }\n const requestCopy = Object.assign({}, options.request);\n if (options.request.headers.authorization) {\n requestCopy.headers = Object.assign({}, options.request.headers, {\n authorization: options.request.headers.authorization.replace(\n / .*$/,\n \" [REDACTED]\"\n )\n });\n }\n requestCopy.url = requestCopy.url.replace(/\\bclient_secret=\\w+/g, \"client_secret=[REDACTED]\").replace(/\\baccess_token=\\w+/g, \"access_token=[REDACTED]\");\n this.request = requestCopy;\n Object.defineProperty(this, \"code\", {\n get() {\n logOnceCode(\n new import_deprecation.Deprecation(\n \"[@octokit/request-error] `error.code` is deprecated, use `error.status`.\"\n )\n );\n return statusCode;\n }\n });\n Object.defineProperty(this, \"headers\", {\n get() {\n logOnceHeaders(\n new import_deprecation.Deprecation(\n \"[@octokit/request-error] `error.headers` is deprecated, use `error.response.headers`.\"\n )\n );\n return headers || {};\n }\n });\n }\n};\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n RequestError\n});\n","\"use strict\";\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// pkg/dist-src/index.js\nvar dist_src_exports = {};\n__export(dist_src_exports, {\n request: () => request\n});\nmodule.exports = __toCommonJS(dist_src_exports);\nvar import_endpoint = require(\"@octokit/endpoint\");\nvar import_universal_user_agent = require(\"universal-user-agent\");\n\n// pkg/dist-src/version.js\nvar VERSION = \"8.4.0\";\n\n// pkg/dist-src/is-plain-object.js\nfunction isPlainObject(value) {\n if (typeof value !== \"object\" || value === null)\n return false;\n if (Object.prototype.toString.call(value) !== \"[object Object]\")\n return false;\n const proto = Object.getPrototypeOf(value);\n if (proto === null)\n return true;\n const Ctor = Object.prototype.hasOwnProperty.call(proto, \"constructor\") && proto.constructor;\n return typeof Ctor === \"function\" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);\n}\n\n// pkg/dist-src/fetch-wrapper.js\nvar import_request_error = require(\"@octokit/request-error\");\n\n// pkg/dist-src/get-buffer-response.js\nfunction getBufferResponse(response) {\n return response.arrayBuffer();\n}\n\n// pkg/dist-src/fetch-wrapper.js\nfunction fetchWrapper(requestOptions) {\n var _a, _b, _c, _d;\n const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console;\n const parseSuccessResponseBody = ((_a = requestOptions.request) == null ? void 0 : _a.parseSuccessResponseBody) !== false;\n if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {\n requestOptions.body = JSON.stringify(requestOptions.body);\n }\n let headers = {};\n let status;\n let url;\n let { fetch } = globalThis;\n if ((_b = requestOptions.request) == null ? void 0 : _b.fetch) {\n fetch = requestOptions.request.fetch;\n }\n if (!fetch) {\n throw new Error(\n \"fetch is not set. Please pass a fetch implementation as new Octokit({ request: { fetch }}). Learn more at https://github.com/octokit/octokit.js/#fetch-missing\"\n );\n }\n return fetch(requestOptions.url, {\n method: requestOptions.method,\n body: requestOptions.body,\n redirect: (_c = requestOptions.request) == null ? void 0 : _c.redirect,\n headers: requestOptions.headers,\n signal: (_d = requestOptions.request) == null ? void 0 : _d.signal,\n // duplex must be set if request.body is ReadableStream or Async Iterables.\n // See https://fetch.spec.whatwg.org/#dom-requestinit-duplex.\n ...requestOptions.body && { duplex: \"half\" }\n }).then(async (response) => {\n url = response.url;\n status = response.status;\n for (const keyAndValue of response.headers) {\n headers[keyAndValue[0]] = keyAndValue[1];\n }\n if (\"deprecation\" in headers) {\n const matches = headers.link && headers.link.match(/<([^>]+)>; rel=\"deprecation\"/);\n const deprecationLink = matches && matches.pop();\n log.warn(\n `[@octokit/request] \"${requestOptions.method} ${requestOptions.url}\" is deprecated. It is scheduled to be removed on ${headers.sunset}${deprecationLink ? `. See ${deprecationLink}` : \"\"}`\n );\n }\n if (status === 204 || status === 205) {\n return;\n }\n if (requestOptions.method === \"HEAD\") {\n if (status < 400) {\n return;\n }\n throw new import_request_error.RequestError(response.statusText, status, {\n response: {\n url,\n status,\n headers,\n data: void 0\n },\n request: requestOptions\n });\n }\n if (status === 304) {\n throw new import_request_error.RequestError(\"Not modified\", status, {\n response: {\n url,\n status,\n headers,\n data: await getResponseData(response)\n },\n request: requestOptions\n });\n }\n if (status >= 400) {\n const data = await getResponseData(response);\n const error = new import_request_error.RequestError(toErrorMessage(data), status, {\n response: {\n url,\n status,\n headers,\n data\n },\n request: requestOptions\n });\n throw error;\n }\n return parseSuccessResponseBody ? await getResponseData(response) : response.body;\n }).then((data) => {\n return {\n status,\n url,\n headers,\n data\n };\n }).catch((error) => {\n if (error instanceof import_request_error.RequestError)\n throw error;\n else if (error.name === \"AbortError\")\n throw error;\n let message = error.message;\n if (error.name === \"TypeError\" && \"cause\" in error) {\n if (error.cause instanceof Error) {\n message = error.cause.message;\n } else if (typeof error.cause === \"string\") {\n message = error.cause;\n }\n }\n throw new import_request_error.RequestError(message, 500, {\n request: requestOptions\n });\n });\n}\nasync function getResponseData(response) {\n const contentType = response.headers.get(\"content-type\");\n if (/application\\/json/.test(contentType)) {\n return response.json().catch(() => response.text()).catch(() => \"\");\n }\n if (!contentType || /^text\\/|charset=utf-8$/.test(contentType)) {\n return response.text();\n }\n return getBufferResponse(response);\n}\nfunction toErrorMessage(data) {\n if (typeof data === \"string\")\n return data;\n let suffix;\n if (\"documentation_url\" in data) {\n suffix = ` - ${data.documentation_url}`;\n } else {\n suffix = \"\";\n }\n if (\"message\" in data) {\n if (Array.isArray(data.errors)) {\n return `${data.message}: ${data.errors.map(JSON.stringify).join(\", \")}${suffix}`;\n }\n return `${data.message}${suffix}`;\n }\n return `Unknown error: ${JSON.stringify(data)}`;\n}\n\n// pkg/dist-src/with-defaults.js\nfunction withDefaults(oldEndpoint, newDefaults) {\n const endpoint2 = oldEndpoint.defaults(newDefaults);\n const newApi = function(route, parameters) {\n const endpointOptions = endpoint2.merge(route, parameters);\n if (!endpointOptions.request || !endpointOptions.request.hook) {\n return fetchWrapper(endpoint2.parse(endpointOptions));\n }\n const request2 = (route2, parameters2) => {\n return fetchWrapper(\n endpoint2.parse(endpoint2.merge(route2, parameters2))\n );\n };\n Object.assign(request2, {\n endpoint: endpoint2,\n defaults: withDefaults.bind(null, endpoint2)\n });\n return endpointOptions.request.hook(request2, endpointOptions);\n };\n return Object.assign(newApi, {\n endpoint: endpoint2,\n defaults: withDefaults.bind(null, endpoint2)\n });\n}\n\n// pkg/dist-src/index.js\nvar request = withDefaults(import_endpoint.endpoint, {\n headers: {\n \"user-agent\": `octokit-request.js/${VERSION} ${(0, import_universal_user_agent.getUserAgent)()}`\n }\n});\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n request\n});\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n CONFIG_USE_DUALSTACK_ENDPOINT: () => CONFIG_USE_DUALSTACK_ENDPOINT,\n CONFIG_USE_FIPS_ENDPOINT: () => CONFIG_USE_FIPS_ENDPOINT,\n DEFAULT_USE_DUALSTACK_ENDPOINT: () => DEFAULT_USE_DUALSTACK_ENDPOINT,\n DEFAULT_USE_FIPS_ENDPOINT: () => DEFAULT_USE_FIPS_ENDPOINT,\n ENV_USE_DUALSTACK_ENDPOINT: () => ENV_USE_DUALSTACK_ENDPOINT,\n ENV_USE_FIPS_ENDPOINT: () => ENV_USE_FIPS_ENDPOINT,\n NODE_REGION_CONFIG_FILE_OPTIONS: () => NODE_REGION_CONFIG_FILE_OPTIONS,\n NODE_REGION_CONFIG_OPTIONS: () => NODE_REGION_CONFIG_OPTIONS,\n NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS: () => NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS,\n NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS: () => NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS,\n REGION_ENV_NAME: () => REGION_ENV_NAME,\n REGION_INI_NAME: () => REGION_INI_NAME,\n getRegionInfo: () => getRegionInfo,\n resolveCustomEndpointsConfig: () => resolveCustomEndpointsConfig,\n resolveEndpointsConfig: () => resolveEndpointsConfig,\n resolveRegionConfig: () => resolveRegionConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/endpointsConfig/NodeUseDualstackEndpointConfigOptions.ts\nvar import_util_config_provider = require(\"@smithy/util-config-provider\");\nvar ENV_USE_DUALSTACK_ENDPOINT = \"AWS_USE_DUALSTACK_ENDPOINT\";\nvar CONFIG_USE_DUALSTACK_ENDPOINT = \"use_dualstack_endpoint\";\nvar DEFAULT_USE_DUALSTACK_ENDPOINT = false;\nvar NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => (0, import_util_config_provider.booleanSelector)(env, ENV_USE_DUALSTACK_ENDPOINT, import_util_config_provider.SelectorType.ENV),\n configFileSelector: (profile) => (0, import_util_config_provider.booleanSelector)(profile, CONFIG_USE_DUALSTACK_ENDPOINT, import_util_config_provider.SelectorType.CONFIG),\n default: false\n};\n\n// src/endpointsConfig/NodeUseFipsEndpointConfigOptions.ts\n\nvar ENV_USE_FIPS_ENDPOINT = \"AWS_USE_FIPS_ENDPOINT\";\nvar CONFIG_USE_FIPS_ENDPOINT = \"use_fips_endpoint\";\nvar DEFAULT_USE_FIPS_ENDPOINT = false;\nvar NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => (0, import_util_config_provider.booleanSelector)(env, ENV_USE_FIPS_ENDPOINT, import_util_config_provider.SelectorType.ENV),\n configFileSelector: (profile) => (0, import_util_config_provider.booleanSelector)(profile, CONFIG_USE_FIPS_ENDPOINT, import_util_config_provider.SelectorType.CONFIG),\n default: false\n};\n\n// src/endpointsConfig/resolveCustomEndpointsConfig.ts\nvar import_util_middleware = require(\"@smithy/util-middleware\");\nvar resolveCustomEndpointsConfig = /* @__PURE__ */ __name((input) => {\n const { endpoint, urlParser } = input;\n return {\n ...input,\n tls: input.tls ?? true,\n endpoint: (0, import_util_middleware.normalizeProvider)(typeof endpoint === \"string\" ? urlParser(endpoint) : endpoint),\n isCustomEndpoint: true,\n useDualstackEndpoint: (0, import_util_middleware.normalizeProvider)(input.useDualstackEndpoint ?? false)\n };\n}, \"resolveCustomEndpointsConfig\");\n\n// src/endpointsConfig/resolveEndpointsConfig.ts\n\n\n// src/endpointsConfig/utils/getEndpointFromRegion.ts\nvar getEndpointFromRegion = /* @__PURE__ */ __name(async (input) => {\n const { tls = true } = input;\n const region = await input.region();\n const dnsHostRegex = new RegExp(/^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$/);\n if (!dnsHostRegex.test(region)) {\n throw new Error(\"Invalid region in client config\");\n }\n const useDualstackEndpoint = await input.useDualstackEndpoint();\n const useFipsEndpoint = await input.useFipsEndpoint();\n const { hostname } = await input.regionInfoProvider(region, { useDualstackEndpoint, useFipsEndpoint }) ?? {};\n if (!hostname) {\n throw new Error(\"Cannot resolve hostname from client config\");\n }\n return input.urlParser(`${tls ? \"https:\" : \"http:\"}//${hostname}`);\n}, \"getEndpointFromRegion\");\n\n// src/endpointsConfig/resolveEndpointsConfig.ts\nvar resolveEndpointsConfig = /* @__PURE__ */ __name((input) => {\n const useDualstackEndpoint = (0, import_util_middleware.normalizeProvider)(input.useDualstackEndpoint ?? false);\n const { endpoint, useFipsEndpoint, urlParser } = input;\n return {\n ...input,\n tls: input.tls ?? true,\n endpoint: endpoint ? (0, import_util_middleware.normalizeProvider)(typeof endpoint === \"string\" ? urlParser(endpoint) : endpoint) : () => getEndpointFromRegion({ ...input, useDualstackEndpoint, useFipsEndpoint }),\n isCustomEndpoint: !!endpoint,\n useDualstackEndpoint\n };\n}, \"resolveEndpointsConfig\");\n\n// src/regionConfig/config.ts\nvar REGION_ENV_NAME = \"AWS_REGION\";\nvar REGION_INI_NAME = \"region\";\nvar NODE_REGION_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[REGION_ENV_NAME],\n configFileSelector: (profile) => profile[REGION_INI_NAME],\n default: () => {\n throw new Error(\"Region is missing\");\n }\n};\nvar NODE_REGION_CONFIG_FILE_OPTIONS = {\n preferredFile: \"credentials\"\n};\n\n// src/regionConfig/isFipsRegion.ts\nvar isFipsRegion = /* @__PURE__ */ __name((region) => typeof region === \"string\" && (region.startsWith(\"fips-\") || region.endsWith(\"-fips\")), \"isFipsRegion\");\n\n// src/regionConfig/getRealRegion.ts\nvar getRealRegion = /* @__PURE__ */ __name((region) => isFipsRegion(region) ? [\"fips-aws-global\", \"aws-fips\"].includes(region) ? \"us-east-1\" : region.replace(/fips-(dkr-|prod-)?|-fips/, \"\") : region, \"getRealRegion\");\n\n// src/regionConfig/resolveRegionConfig.ts\nvar resolveRegionConfig = /* @__PURE__ */ __name((input) => {\n const { region, useFipsEndpoint } = input;\n if (!region) {\n throw new Error(\"Region is missing\");\n }\n return {\n ...input,\n region: async () => {\n if (typeof region === \"string\") {\n return getRealRegion(region);\n }\n const providedRegion = await region();\n return getRealRegion(providedRegion);\n },\n useFipsEndpoint: async () => {\n const providedRegion = typeof region === \"string\" ? region : await region();\n if (isFipsRegion(providedRegion)) {\n return true;\n }\n return typeof useFipsEndpoint !== \"function\" ? Promise.resolve(!!useFipsEndpoint) : useFipsEndpoint();\n }\n };\n}, \"resolveRegionConfig\");\n\n// src/regionInfo/getHostnameFromVariants.ts\nvar getHostnameFromVariants = /* @__PURE__ */ __name((variants = [], { useFipsEndpoint, useDualstackEndpoint }) => {\n var _a;\n return (_a = variants.find(\n ({ tags }) => useFipsEndpoint === tags.includes(\"fips\") && useDualstackEndpoint === tags.includes(\"dualstack\")\n )) == null ? void 0 : _a.hostname;\n}, \"getHostnameFromVariants\");\n\n// src/regionInfo/getResolvedHostname.ts\nvar getResolvedHostname = /* @__PURE__ */ __name((resolvedRegion, { regionHostname, partitionHostname }) => regionHostname ? regionHostname : partitionHostname ? partitionHostname.replace(\"{region}\", resolvedRegion) : void 0, \"getResolvedHostname\");\n\n// src/regionInfo/getResolvedPartition.ts\nvar getResolvedPartition = /* @__PURE__ */ __name((region, { partitionHash }) => Object.keys(partitionHash || {}).find((key) => partitionHash[key].regions.includes(region)) ?? \"aws\", \"getResolvedPartition\");\n\n// src/regionInfo/getResolvedSigningRegion.ts\nvar getResolvedSigningRegion = /* @__PURE__ */ __name((hostname, { signingRegion, regionRegex, useFipsEndpoint }) => {\n if (signingRegion) {\n return signingRegion;\n } else if (useFipsEndpoint) {\n const regionRegexJs = regionRegex.replace(\"\\\\\\\\\", \"\\\\\").replace(/^\\^/g, \"\\\\.\").replace(/\\$$/g, \"\\\\.\");\n const regionRegexmatchArray = hostname.match(regionRegexJs);\n if (regionRegexmatchArray) {\n return regionRegexmatchArray[0].slice(1, -1);\n }\n }\n}, \"getResolvedSigningRegion\");\n\n// src/regionInfo/getRegionInfo.ts\nvar getRegionInfo = /* @__PURE__ */ __name((region, {\n useFipsEndpoint = false,\n useDualstackEndpoint = false,\n signingService,\n regionHash,\n partitionHash\n}) => {\n var _a, _b, _c, _d, _e;\n const partition = getResolvedPartition(region, { partitionHash });\n const resolvedRegion = region in regionHash ? region : ((_a = partitionHash[partition]) == null ? void 0 : _a.endpoint) ?? region;\n const hostnameOptions = { useFipsEndpoint, useDualstackEndpoint };\n const regionHostname = getHostnameFromVariants((_b = regionHash[resolvedRegion]) == null ? void 0 : _b.variants, hostnameOptions);\n const partitionHostname = getHostnameFromVariants((_c = partitionHash[partition]) == null ? void 0 : _c.variants, hostnameOptions);\n const hostname = getResolvedHostname(resolvedRegion, { regionHostname, partitionHostname });\n if (hostname === void 0) {\n throw new Error(`Endpoint resolution failed for: ${{ resolvedRegion, useFipsEndpoint, useDualstackEndpoint }}`);\n }\n const signingRegion = getResolvedSigningRegion(hostname, {\n signingRegion: (_d = regionHash[resolvedRegion]) == null ? void 0 : _d.signingRegion,\n regionRegex: partitionHash[partition].regionRegex,\n useFipsEndpoint\n });\n return {\n partition,\n signingService,\n hostname,\n ...signingRegion && { signingRegion },\n ...((_e = regionHash[resolvedRegion]) == null ? void 0 : _e.signingService) && {\n signingService: regionHash[resolvedRegion].signingService\n }\n };\n}, \"getRegionInfo\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n ENV_USE_DUALSTACK_ENDPOINT,\n CONFIG_USE_DUALSTACK_ENDPOINT,\n DEFAULT_USE_DUALSTACK_ENDPOINT,\n NODE_USE_DUALSTACK_ENDPOINT_CONFIG_OPTIONS,\n ENV_USE_FIPS_ENDPOINT,\n CONFIG_USE_FIPS_ENDPOINT,\n DEFAULT_USE_FIPS_ENDPOINT,\n NODE_USE_FIPS_ENDPOINT_CONFIG_OPTIONS,\n resolveCustomEndpointsConfig,\n resolveEndpointsConfig,\n REGION_ENV_NAME,\n REGION_INI_NAME,\n NODE_REGION_CONFIG_OPTIONS,\n NODE_REGION_CONFIG_FILE_OPTIONS,\n resolveRegionConfig,\n getRegionInfo\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n DefaultIdentityProviderConfig: () => DefaultIdentityProviderConfig,\n EXPIRATION_MS: () => EXPIRATION_MS,\n HttpApiKeyAuthSigner: () => HttpApiKeyAuthSigner,\n HttpBearerAuthSigner: () => HttpBearerAuthSigner,\n NoAuthSigner: () => NoAuthSigner,\n RequestBuilder: () => RequestBuilder,\n createIsIdentityExpiredFunction: () => createIsIdentityExpiredFunction,\n createPaginator: () => createPaginator,\n doesIdentityRequireRefresh: () => doesIdentityRequireRefresh,\n getHttpAuthSchemeEndpointRuleSetPlugin: () => getHttpAuthSchemeEndpointRuleSetPlugin,\n getHttpAuthSchemePlugin: () => getHttpAuthSchemePlugin,\n getHttpSigningPlugin: () => getHttpSigningPlugin,\n getSmithyContext: () => getSmithyContext3,\n httpAuthSchemeEndpointRuleSetMiddlewareOptions: () => httpAuthSchemeEndpointRuleSetMiddlewareOptions,\n httpAuthSchemeMiddleware: () => httpAuthSchemeMiddleware,\n httpAuthSchemeMiddlewareOptions: () => httpAuthSchemeMiddlewareOptions,\n httpSigningMiddleware: () => httpSigningMiddleware,\n httpSigningMiddlewareOptions: () => httpSigningMiddlewareOptions,\n isIdentityExpired: () => isIdentityExpired,\n memoizeIdentityProvider: () => memoizeIdentityProvider,\n normalizeProvider: () => normalizeProvider,\n requestBuilder: () => requestBuilder\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/middleware-http-auth-scheme/httpAuthSchemeMiddleware.ts\nvar import_util_middleware = require(\"@smithy/util-middleware\");\nfunction convertHttpAuthSchemesToMap(httpAuthSchemes) {\n const map = /* @__PURE__ */ new Map();\n for (const scheme of httpAuthSchemes) {\n map.set(scheme.schemeId, scheme);\n }\n return map;\n}\n__name(convertHttpAuthSchemesToMap, \"convertHttpAuthSchemesToMap\");\nvar httpAuthSchemeMiddleware = /* @__PURE__ */ __name((config, mwOptions) => (next, context) => async (args) => {\n var _a;\n const options = config.httpAuthSchemeProvider(\n await mwOptions.httpAuthSchemeParametersProvider(config, context, args.input)\n );\n const authSchemes = convertHttpAuthSchemesToMap(config.httpAuthSchemes);\n const smithyContext = (0, import_util_middleware.getSmithyContext)(context);\n const failureReasons = [];\n for (const option of options) {\n const scheme = authSchemes.get(option.schemeId);\n if (!scheme) {\n failureReasons.push(`HttpAuthScheme \\`${option.schemeId}\\` was not enabled for this service.`);\n continue;\n }\n const identityProvider = scheme.identityProvider(await mwOptions.identityProviderConfigProvider(config));\n if (!identityProvider) {\n failureReasons.push(`HttpAuthScheme \\`${option.schemeId}\\` did not have an IdentityProvider configured.`);\n continue;\n }\n const { identityProperties = {}, signingProperties = {} } = ((_a = option.propertiesExtractor) == null ? void 0 : _a.call(option, config, context)) || {};\n option.identityProperties = Object.assign(option.identityProperties || {}, identityProperties);\n option.signingProperties = Object.assign(option.signingProperties || {}, signingProperties);\n smithyContext.selectedHttpAuthScheme = {\n httpAuthOption: option,\n identity: await identityProvider(option.identityProperties),\n signer: scheme.signer\n };\n break;\n }\n if (!smithyContext.selectedHttpAuthScheme) {\n throw new Error(failureReasons.join(\"\\n\"));\n }\n return next(args);\n}, \"httpAuthSchemeMiddleware\");\n\n// src/middleware-http-auth-scheme/getHttpAuthSchemeEndpointRuleSetPlugin.ts\nvar import_middleware_endpoint = require(\"@smithy/middleware-endpoint\");\nvar httpAuthSchemeEndpointRuleSetMiddlewareOptions = {\n step: \"serialize\",\n tags: [\"HTTP_AUTH_SCHEME\"],\n name: \"httpAuthSchemeMiddleware\",\n override: true,\n relation: \"before\",\n toMiddleware: import_middleware_endpoint.endpointMiddlewareOptions.name\n};\nvar getHttpAuthSchemeEndpointRuleSetPlugin = /* @__PURE__ */ __name((config, {\n httpAuthSchemeParametersProvider,\n identityProviderConfigProvider\n}) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(\n httpAuthSchemeMiddleware(config, {\n httpAuthSchemeParametersProvider,\n identityProviderConfigProvider\n }),\n httpAuthSchemeEndpointRuleSetMiddlewareOptions\n );\n }\n}), \"getHttpAuthSchemeEndpointRuleSetPlugin\");\n\n// src/middleware-http-auth-scheme/getHttpAuthSchemePlugin.ts\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\nvar httpAuthSchemeMiddlewareOptions = {\n step: \"serialize\",\n tags: [\"HTTP_AUTH_SCHEME\"],\n name: \"httpAuthSchemeMiddleware\",\n override: true,\n relation: \"before\",\n toMiddleware: import_middleware_serde.serializerMiddlewareOption.name\n};\nvar getHttpAuthSchemePlugin = /* @__PURE__ */ __name((config, {\n httpAuthSchemeParametersProvider,\n identityProviderConfigProvider\n}) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(\n httpAuthSchemeMiddleware(config, {\n httpAuthSchemeParametersProvider,\n identityProviderConfigProvider\n }),\n httpAuthSchemeMiddlewareOptions\n );\n }\n}), \"getHttpAuthSchemePlugin\");\n\n// src/middleware-http-signing/httpSigningMiddleware.ts\nvar import_protocol_http = require(\"@smithy/protocol-http\");\n\nvar defaultErrorHandler = /* @__PURE__ */ __name((signingProperties) => (error) => {\n throw error;\n}, \"defaultErrorHandler\");\nvar defaultSuccessHandler = /* @__PURE__ */ __name((httpResponse, signingProperties) => {\n}, \"defaultSuccessHandler\");\nvar httpSigningMiddleware = /* @__PURE__ */ __name((config) => (next, context) => async (args) => {\n if (!import_protocol_http.HttpRequest.isInstance(args.request)) {\n return next(args);\n }\n const smithyContext = (0, import_util_middleware.getSmithyContext)(context);\n const scheme = smithyContext.selectedHttpAuthScheme;\n if (!scheme) {\n throw new Error(`No HttpAuthScheme was selected: unable to sign request`);\n }\n const {\n httpAuthOption: { signingProperties = {} },\n identity,\n signer\n } = scheme;\n const output = await next({\n ...args,\n request: await signer.sign(args.request, identity, signingProperties)\n }).catch((signer.errorHandler || defaultErrorHandler)(signingProperties));\n (signer.successHandler || defaultSuccessHandler)(output.response, signingProperties);\n return output;\n}, \"httpSigningMiddleware\");\n\n// src/middleware-http-signing/getHttpSigningMiddleware.ts\nvar import_middleware_retry = require(\"@smithy/middleware-retry\");\nvar httpSigningMiddlewareOptions = {\n step: \"finalizeRequest\",\n tags: [\"HTTP_SIGNING\"],\n name: \"httpSigningMiddleware\",\n aliases: [\"apiKeyMiddleware\", \"tokenMiddleware\", \"awsAuthMiddleware\"],\n override: true,\n relation: \"after\",\n toMiddleware: import_middleware_retry.retryMiddlewareOptions.name\n};\nvar getHttpSigningPlugin = /* @__PURE__ */ __name((config) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(httpSigningMiddleware(config), httpSigningMiddlewareOptions);\n }\n}), \"getHttpSigningPlugin\");\n\n// src/util-identity-and-auth/DefaultIdentityProviderConfig.ts\nvar _DefaultIdentityProviderConfig = class _DefaultIdentityProviderConfig {\n /**\n * Creates an IdentityProviderConfig with a record of scheme IDs to identity providers.\n *\n * @param config scheme IDs and identity providers to configure\n */\n constructor(config) {\n this.authSchemes = /* @__PURE__ */ new Map();\n for (const [key, value] of Object.entries(config)) {\n if (value !== void 0) {\n this.authSchemes.set(key, value);\n }\n }\n }\n getIdentityProvider(schemeId) {\n return this.authSchemes.get(schemeId);\n }\n};\n__name(_DefaultIdentityProviderConfig, \"DefaultIdentityProviderConfig\");\nvar DefaultIdentityProviderConfig = _DefaultIdentityProviderConfig;\n\n// src/util-identity-and-auth/httpAuthSchemes/httpApiKeyAuth.ts\nvar import_types = require(\"@smithy/types\");\nvar _HttpApiKeyAuthSigner = class _HttpApiKeyAuthSigner {\n async sign(httpRequest, identity, signingProperties) {\n if (!signingProperties) {\n throw new Error(\n \"request could not be signed with `apiKey` since the `name` and `in` signer properties are missing\"\n );\n }\n if (!signingProperties.name) {\n throw new Error(\"request could not be signed with `apiKey` since the `name` signer property is missing\");\n }\n if (!signingProperties.in) {\n throw new Error(\"request could not be signed with `apiKey` since the `in` signer property is missing\");\n }\n if (!identity.apiKey) {\n throw new Error(\"request could not be signed with `apiKey` since the `apiKey` is not defined\");\n }\n const clonedRequest = httpRequest.clone();\n if (signingProperties.in === import_types.HttpApiKeyAuthLocation.QUERY) {\n clonedRequest.query[signingProperties.name] = identity.apiKey;\n } else if (signingProperties.in === import_types.HttpApiKeyAuthLocation.HEADER) {\n clonedRequest.headers[signingProperties.name] = signingProperties.scheme ? `${signingProperties.scheme} ${identity.apiKey}` : identity.apiKey;\n } else {\n throw new Error(\n \"request can only be signed with `apiKey` locations `query` or `header`, but found: `\" + signingProperties.in + \"`\"\n );\n }\n return clonedRequest;\n }\n};\n__name(_HttpApiKeyAuthSigner, \"HttpApiKeyAuthSigner\");\nvar HttpApiKeyAuthSigner = _HttpApiKeyAuthSigner;\n\n// src/util-identity-and-auth/httpAuthSchemes/httpBearerAuth.ts\nvar _HttpBearerAuthSigner = class _HttpBearerAuthSigner {\n async sign(httpRequest, identity, signingProperties) {\n const clonedRequest = httpRequest.clone();\n if (!identity.token) {\n throw new Error(\"request could not be signed with `token` since the `token` is not defined\");\n }\n clonedRequest.headers[\"Authorization\"] = `Bearer ${identity.token}`;\n return clonedRequest;\n }\n};\n__name(_HttpBearerAuthSigner, \"HttpBearerAuthSigner\");\nvar HttpBearerAuthSigner = _HttpBearerAuthSigner;\n\n// src/util-identity-and-auth/httpAuthSchemes/noAuth.ts\nvar _NoAuthSigner = class _NoAuthSigner {\n async sign(httpRequest, identity, signingProperties) {\n return httpRequest;\n }\n};\n__name(_NoAuthSigner, \"NoAuthSigner\");\nvar NoAuthSigner = _NoAuthSigner;\n\n// src/util-identity-and-auth/memoizeIdentityProvider.ts\nvar createIsIdentityExpiredFunction = /* @__PURE__ */ __name((expirationMs) => (identity) => doesIdentityRequireRefresh(identity) && identity.expiration.getTime() - Date.now() < expirationMs, \"createIsIdentityExpiredFunction\");\nvar EXPIRATION_MS = 3e5;\nvar isIdentityExpired = createIsIdentityExpiredFunction(EXPIRATION_MS);\nvar doesIdentityRequireRefresh = /* @__PURE__ */ __name((identity) => identity.expiration !== void 0, \"doesIdentityRequireRefresh\");\nvar memoizeIdentityProvider = /* @__PURE__ */ __name((provider, isExpired, requiresRefresh) => {\n if (provider === void 0) {\n return void 0;\n }\n const normalizedProvider = typeof provider !== \"function\" ? async () => Promise.resolve(provider) : provider;\n let resolved;\n let pending;\n let hasResult;\n let isConstant = false;\n const coalesceProvider = /* @__PURE__ */ __name(async (options) => {\n if (!pending) {\n pending = normalizedProvider(options);\n }\n try {\n resolved = await pending;\n hasResult = true;\n isConstant = false;\n } finally {\n pending = void 0;\n }\n return resolved;\n }, \"coalesceProvider\");\n if (isExpired === void 0) {\n return async (options) => {\n if (!hasResult || (options == null ? void 0 : options.forceRefresh)) {\n resolved = await coalesceProvider(options);\n }\n return resolved;\n };\n }\n return async (options) => {\n if (!hasResult || (options == null ? void 0 : options.forceRefresh)) {\n resolved = await coalesceProvider(options);\n }\n if (isConstant) {\n return resolved;\n }\n if (!requiresRefresh(resolved)) {\n isConstant = true;\n return resolved;\n }\n if (isExpired(resolved)) {\n await coalesceProvider(options);\n return resolved;\n }\n return resolved;\n };\n}, \"memoizeIdentityProvider\");\n\n// src/getSmithyContext.ts\n\nvar getSmithyContext3 = /* @__PURE__ */ __name((context) => context[import_types.SMITHY_CONTEXT_KEY] || (context[import_types.SMITHY_CONTEXT_KEY] = {}), \"getSmithyContext\");\n\n// src/normalizeProvider.ts\nvar normalizeProvider = /* @__PURE__ */ __name((input) => {\n if (typeof input === \"function\")\n return input;\n const promisified = Promise.resolve(input);\n return () => promisified;\n}, \"normalizeProvider\");\n\n// src/protocols/requestBuilder.ts\n\nvar import_smithy_client = require(\"@smithy/smithy-client\");\nfunction requestBuilder(input, context) {\n return new RequestBuilder(input, context);\n}\n__name(requestBuilder, \"requestBuilder\");\nvar _RequestBuilder = class _RequestBuilder {\n constructor(input, context) {\n this.input = input;\n this.context = context;\n this.query = {};\n this.method = \"\";\n this.headers = {};\n this.path = \"\";\n this.body = null;\n this.hostname = \"\";\n this.resolvePathStack = [];\n }\n async build() {\n const { hostname, protocol = \"https\", port, path: basePath } = await this.context.endpoint();\n this.path = basePath;\n for (const resolvePath of this.resolvePathStack) {\n resolvePath(this.path);\n }\n return new import_protocol_http.HttpRequest({\n protocol,\n hostname: this.hostname || hostname,\n port,\n method: this.method,\n path: this.path,\n query: this.query,\n body: this.body,\n headers: this.headers\n });\n }\n /**\n * Brevity setter for \"hostname\".\n */\n hn(hostname) {\n this.hostname = hostname;\n return this;\n }\n /**\n * Brevity initial builder for \"basepath\".\n */\n bp(uriLabel) {\n this.resolvePathStack.push((basePath) => {\n this.path = `${(basePath == null ? void 0 : basePath.endsWith(\"/\")) ? basePath.slice(0, -1) : basePath || \"\"}` + uriLabel;\n });\n return this;\n }\n /**\n * Brevity incremental builder for \"path\".\n */\n p(memberName, labelValueProvider, uriLabel, isGreedyLabel) {\n this.resolvePathStack.push((path) => {\n this.path = (0, import_smithy_client.resolvedPath)(path, this.input, memberName, labelValueProvider, uriLabel, isGreedyLabel);\n });\n return this;\n }\n /**\n * Brevity setter for \"headers\".\n */\n h(headers) {\n this.headers = headers;\n return this;\n }\n /**\n * Brevity setter for \"query\".\n */\n q(query) {\n this.query = query;\n return this;\n }\n /**\n * Brevity setter for \"body\".\n */\n b(body) {\n this.body = body;\n return this;\n }\n /**\n * Brevity setter for \"method\".\n */\n m(method) {\n this.method = method;\n return this;\n }\n};\n__name(_RequestBuilder, \"RequestBuilder\");\nvar RequestBuilder = _RequestBuilder;\n\n// src/pagination/createPaginator.ts\nvar makePagedClientRequest = /* @__PURE__ */ __name(async (CommandCtor, client, input, ...args) => {\n return await client.send(new CommandCtor(input), ...args);\n}, \"makePagedClientRequest\");\nfunction createPaginator(ClientCtor, CommandCtor, inputTokenName, outputTokenName, pageSizeTokenName) {\n return /* @__PURE__ */ __name(async function* paginateOperation(config, input, ...additionalArguments) {\n let token = config.startingToken || void 0;\n let hasNext = true;\n let page;\n while (hasNext) {\n input[inputTokenName] = token;\n if (pageSizeTokenName) {\n input[pageSizeTokenName] = input[pageSizeTokenName] ?? config.pageSize;\n }\n if (config.client instanceof ClientCtor) {\n page = await makePagedClientRequest(CommandCtor, config.client, input, ...additionalArguments);\n } else {\n throw new Error(`Invalid client, expected instance of ${ClientCtor.name}`);\n }\n yield page;\n const prevToken = token;\n token = get(page, outputTokenName);\n hasNext = !!(token && (!config.stopOnSameToken || token !== prevToken));\n }\n return void 0;\n }, \"paginateOperation\");\n}\n__name(createPaginator, \"createPaginator\");\nvar get = /* @__PURE__ */ __name((fromObject, path) => {\n let cursor = fromObject;\n const pathComponents = path.split(\".\");\n for (const step of pathComponents) {\n if (!cursor || typeof cursor !== \"object\") {\n return void 0;\n }\n cursor = cursor[step];\n }\n return cursor;\n}, \"get\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n createPaginator,\n httpAuthSchemeMiddleware,\n httpAuthSchemeEndpointRuleSetMiddlewareOptions,\n getHttpAuthSchemeEndpointRuleSetPlugin,\n httpAuthSchemeMiddlewareOptions,\n getHttpAuthSchemePlugin,\n httpSigningMiddleware,\n httpSigningMiddlewareOptions,\n getHttpSigningPlugin,\n DefaultIdentityProviderConfig,\n HttpApiKeyAuthSigner,\n HttpBearerAuthSigner,\n NoAuthSigner,\n createIsIdentityExpiredFunction,\n EXPIRATION_MS,\n isIdentityExpired,\n doesIdentityRequireRefresh,\n memoizeIdentityProvider,\n getSmithyContext,\n normalizeProvider,\n requestBuilder,\n RequestBuilder\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n DEFAULT_MAX_RETRIES: () => DEFAULT_MAX_RETRIES,\n DEFAULT_TIMEOUT: () => DEFAULT_TIMEOUT,\n ENV_CMDS_AUTH_TOKEN: () => ENV_CMDS_AUTH_TOKEN,\n ENV_CMDS_FULL_URI: () => ENV_CMDS_FULL_URI,\n ENV_CMDS_RELATIVE_URI: () => ENV_CMDS_RELATIVE_URI,\n Endpoint: () => Endpoint,\n fromContainerMetadata: () => fromContainerMetadata,\n fromInstanceMetadata: () => fromInstanceMetadata,\n getInstanceMetadataEndpoint: () => getInstanceMetadataEndpoint,\n httpRequest: () => httpRequest,\n providerConfigFromInit: () => providerConfigFromInit\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromContainerMetadata.ts\n\nvar import_url = require(\"url\");\n\n// src/remoteProvider/httpRequest.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar import_buffer = require(\"buffer\");\nvar import_http = require(\"http\");\nfunction httpRequest(options) {\n return new Promise((resolve, reject) => {\n var _a;\n const req = (0, import_http.request)({\n method: \"GET\",\n ...options,\n // Node.js http module doesn't accept hostname with square brackets\n // Refs: https://github.com/nodejs/node/issues/39738\n hostname: (_a = options.hostname) == null ? void 0 : _a.replace(/^\\[(.+)\\]$/, \"$1\")\n });\n req.on(\"error\", (err) => {\n reject(Object.assign(new import_property_provider.ProviderError(\"Unable to connect to instance metadata service\"), err));\n req.destroy();\n });\n req.on(\"timeout\", () => {\n reject(new import_property_provider.ProviderError(\"TimeoutError from instance metadata service\"));\n req.destroy();\n });\n req.on(\"response\", (res) => {\n const { statusCode = 400 } = res;\n if (statusCode < 200 || 300 <= statusCode) {\n reject(\n Object.assign(new import_property_provider.ProviderError(\"Error response received from instance metadata service\"), { statusCode })\n );\n req.destroy();\n }\n const chunks = [];\n res.on(\"data\", (chunk) => {\n chunks.push(chunk);\n });\n res.on(\"end\", () => {\n resolve(import_buffer.Buffer.concat(chunks));\n req.destroy();\n });\n });\n req.end();\n });\n}\n__name(httpRequest, \"httpRequest\");\n\n// src/remoteProvider/ImdsCredentials.ts\nvar isImdsCredentials = /* @__PURE__ */ __name((arg) => Boolean(arg) && typeof arg === \"object\" && typeof arg.AccessKeyId === \"string\" && typeof arg.SecretAccessKey === \"string\" && typeof arg.Token === \"string\" && typeof arg.Expiration === \"string\", \"isImdsCredentials\");\nvar fromImdsCredentials = /* @__PURE__ */ __name((creds) => ({\n accessKeyId: creds.AccessKeyId,\n secretAccessKey: creds.SecretAccessKey,\n sessionToken: creds.Token,\n expiration: new Date(creds.Expiration)\n}), \"fromImdsCredentials\");\n\n// src/remoteProvider/RemoteProviderInit.ts\nvar DEFAULT_TIMEOUT = 1e3;\nvar DEFAULT_MAX_RETRIES = 0;\nvar providerConfigFromInit = /* @__PURE__ */ __name(({\n maxRetries = DEFAULT_MAX_RETRIES,\n timeout = DEFAULT_TIMEOUT\n}) => ({ maxRetries, timeout }), \"providerConfigFromInit\");\n\n// src/remoteProvider/retry.ts\nvar retry = /* @__PURE__ */ __name((toRetry, maxRetries) => {\n let promise = toRetry();\n for (let i = 0; i < maxRetries; i++) {\n promise = promise.catch(toRetry);\n }\n return promise;\n}, \"retry\");\n\n// src/fromContainerMetadata.ts\nvar ENV_CMDS_FULL_URI = \"AWS_CONTAINER_CREDENTIALS_FULL_URI\";\nvar ENV_CMDS_RELATIVE_URI = \"AWS_CONTAINER_CREDENTIALS_RELATIVE_URI\";\nvar ENV_CMDS_AUTH_TOKEN = \"AWS_CONTAINER_AUTHORIZATION_TOKEN\";\nvar fromContainerMetadata = /* @__PURE__ */ __name((init = {}) => {\n const { timeout, maxRetries } = providerConfigFromInit(init);\n return () => retry(async () => {\n const requestOptions = await getCmdsUri();\n const credsResponse = JSON.parse(await requestFromEcsImds(timeout, requestOptions));\n if (!isImdsCredentials(credsResponse)) {\n throw new import_property_provider.CredentialsProviderError(\"Invalid response received from instance metadata service.\");\n }\n return fromImdsCredentials(credsResponse);\n }, maxRetries);\n}, \"fromContainerMetadata\");\nvar requestFromEcsImds = /* @__PURE__ */ __name(async (timeout, options) => {\n if (process.env[ENV_CMDS_AUTH_TOKEN]) {\n options.headers = {\n ...options.headers,\n Authorization: process.env[ENV_CMDS_AUTH_TOKEN]\n };\n }\n const buffer = await httpRequest({\n ...options,\n timeout\n });\n return buffer.toString();\n}, \"requestFromEcsImds\");\nvar CMDS_IP = \"169.254.170.2\";\nvar GREENGRASS_HOSTS = {\n localhost: true,\n \"127.0.0.1\": true\n};\nvar GREENGRASS_PROTOCOLS = {\n \"http:\": true,\n \"https:\": true\n};\nvar getCmdsUri = /* @__PURE__ */ __name(async () => {\n if (process.env[ENV_CMDS_RELATIVE_URI]) {\n return {\n hostname: CMDS_IP,\n path: process.env[ENV_CMDS_RELATIVE_URI]\n };\n }\n if (process.env[ENV_CMDS_FULL_URI]) {\n const parsed = (0, import_url.parse)(process.env[ENV_CMDS_FULL_URI]);\n if (!parsed.hostname || !(parsed.hostname in GREENGRASS_HOSTS)) {\n throw new import_property_provider.CredentialsProviderError(\n `${parsed.hostname} is not a valid container metadata service hostname`,\n false\n );\n }\n if (!parsed.protocol || !(parsed.protocol in GREENGRASS_PROTOCOLS)) {\n throw new import_property_provider.CredentialsProviderError(\n `${parsed.protocol} is not a valid container metadata service protocol`,\n false\n );\n }\n return {\n ...parsed,\n port: parsed.port ? parseInt(parsed.port, 10) : void 0\n };\n }\n throw new import_property_provider.CredentialsProviderError(\n `The container metadata credential provider cannot be used unless the ${ENV_CMDS_RELATIVE_URI} or ${ENV_CMDS_FULL_URI} environment variable is set`,\n false\n );\n}, \"getCmdsUri\");\n\n// src/fromInstanceMetadata.ts\n\n\n\n// src/error/InstanceMetadataV1FallbackError.ts\n\nvar _InstanceMetadataV1FallbackError = class _InstanceMetadataV1FallbackError extends import_property_provider.CredentialsProviderError {\n constructor(message, tryNextLink = true) {\n super(message, tryNextLink);\n this.tryNextLink = tryNextLink;\n this.name = \"InstanceMetadataV1FallbackError\";\n Object.setPrototypeOf(this, _InstanceMetadataV1FallbackError.prototype);\n }\n};\n__name(_InstanceMetadataV1FallbackError, \"InstanceMetadataV1FallbackError\");\nvar InstanceMetadataV1FallbackError = _InstanceMetadataV1FallbackError;\n\n// src/utils/getInstanceMetadataEndpoint.ts\nvar import_node_config_provider = require(\"@smithy/node-config-provider\");\nvar import_url_parser = require(\"@smithy/url-parser\");\n\n// src/config/Endpoint.ts\nvar Endpoint = /* @__PURE__ */ ((Endpoint2) => {\n Endpoint2[\"IPv4\"] = \"http://169.254.169.254\";\n Endpoint2[\"IPv6\"] = \"http://[fd00:ec2::254]\";\n return Endpoint2;\n})(Endpoint || {});\n\n// src/config/EndpointConfigOptions.ts\nvar ENV_ENDPOINT_NAME = \"AWS_EC2_METADATA_SERVICE_ENDPOINT\";\nvar CONFIG_ENDPOINT_NAME = \"ec2_metadata_service_endpoint\";\nvar ENDPOINT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[ENV_ENDPOINT_NAME],\n configFileSelector: (profile) => profile[CONFIG_ENDPOINT_NAME],\n default: void 0\n};\n\n// src/config/EndpointMode.ts\nvar EndpointMode = /* @__PURE__ */ ((EndpointMode2) => {\n EndpointMode2[\"IPv4\"] = \"IPv4\";\n EndpointMode2[\"IPv6\"] = \"IPv6\";\n return EndpointMode2;\n})(EndpointMode || {});\n\n// src/config/EndpointModeConfigOptions.ts\nvar ENV_ENDPOINT_MODE_NAME = \"AWS_EC2_METADATA_SERVICE_ENDPOINT_MODE\";\nvar CONFIG_ENDPOINT_MODE_NAME = \"ec2_metadata_service_endpoint_mode\";\nvar ENDPOINT_MODE_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[ENV_ENDPOINT_MODE_NAME],\n configFileSelector: (profile) => profile[CONFIG_ENDPOINT_MODE_NAME],\n default: \"IPv4\" /* IPv4 */\n};\n\n// src/utils/getInstanceMetadataEndpoint.ts\nvar getInstanceMetadataEndpoint = /* @__PURE__ */ __name(async () => (0, import_url_parser.parseUrl)(await getFromEndpointConfig() || await getFromEndpointModeConfig()), \"getInstanceMetadataEndpoint\");\nvar getFromEndpointConfig = /* @__PURE__ */ __name(async () => (0, import_node_config_provider.loadConfig)(ENDPOINT_CONFIG_OPTIONS)(), \"getFromEndpointConfig\");\nvar getFromEndpointModeConfig = /* @__PURE__ */ __name(async () => {\n const endpointMode = await (0, import_node_config_provider.loadConfig)(ENDPOINT_MODE_CONFIG_OPTIONS)();\n switch (endpointMode) {\n case \"IPv4\" /* IPv4 */:\n return \"http://169.254.169.254\" /* IPv4 */;\n case \"IPv6\" /* IPv6 */:\n return \"http://[fd00:ec2::254]\" /* IPv6 */;\n default:\n throw new Error(`Unsupported endpoint mode: ${endpointMode}. Select from ${Object.values(EndpointMode)}`);\n }\n}, \"getFromEndpointModeConfig\");\n\n// src/utils/getExtendedInstanceMetadataCredentials.ts\nvar STATIC_STABILITY_REFRESH_INTERVAL_SECONDS = 5 * 60;\nvar STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS = 5 * 60;\nvar STATIC_STABILITY_DOC_URL = \"https://docs.aws.amazon.com/sdkref/latest/guide/feature-static-credentials.html\";\nvar getExtendedInstanceMetadataCredentials = /* @__PURE__ */ __name((credentials, logger) => {\n const refreshInterval = STATIC_STABILITY_REFRESH_INTERVAL_SECONDS + Math.floor(Math.random() * STATIC_STABILITY_REFRESH_INTERVAL_JITTER_WINDOW_SECONDS);\n const newExpiration = new Date(Date.now() + refreshInterval * 1e3);\n logger.warn(\n `Attempting credential expiration extension due to a credential service availability issue. A refresh of these credentials will be attempted after ${new Date(newExpiration)}.\nFor more information, please visit: ` + STATIC_STABILITY_DOC_URL\n );\n const originalExpiration = credentials.originalExpiration ?? credentials.expiration;\n return {\n ...credentials,\n ...originalExpiration ? { originalExpiration } : {},\n expiration: newExpiration\n };\n}, \"getExtendedInstanceMetadataCredentials\");\n\n// src/utils/staticStabilityProvider.ts\nvar staticStabilityProvider = /* @__PURE__ */ __name((provider, options = {}) => {\n const logger = (options == null ? void 0 : options.logger) || console;\n let pastCredentials;\n return async () => {\n let credentials;\n try {\n credentials = await provider();\n if (credentials.expiration && credentials.expiration.getTime() < Date.now()) {\n credentials = getExtendedInstanceMetadataCredentials(credentials, logger);\n }\n } catch (e) {\n if (pastCredentials) {\n logger.warn(\"Credential renew failed: \", e);\n credentials = getExtendedInstanceMetadataCredentials(pastCredentials, logger);\n } else {\n throw e;\n }\n }\n pastCredentials = credentials;\n return credentials;\n };\n}, \"staticStabilityProvider\");\n\n// src/fromInstanceMetadata.ts\nvar IMDS_PATH = \"/latest/meta-data/iam/security-credentials/\";\nvar IMDS_TOKEN_PATH = \"/latest/api/token\";\nvar AWS_EC2_METADATA_V1_DISABLED = \"AWS_EC2_METADATA_V1_DISABLED\";\nvar PROFILE_AWS_EC2_METADATA_V1_DISABLED = \"ec2_metadata_v1_disabled\";\nvar X_AWS_EC2_METADATA_TOKEN = \"x-aws-ec2-metadata-token\";\nvar fromInstanceMetadata = /* @__PURE__ */ __name((init = {}) => staticStabilityProvider(getInstanceImdsProvider(init), { logger: init.logger }), \"fromInstanceMetadata\");\nvar getInstanceImdsProvider = /* @__PURE__ */ __name((init) => {\n let disableFetchToken = false;\n const { logger, profile } = init;\n const { timeout, maxRetries } = providerConfigFromInit(init);\n const getCredentials = /* @__PURE__ */ __name(async (maxRetries2, options) => {\n var _a;\n const isImdsV1Fallback = disableFetchToken || ((_a = options.headers) == null ? void 0 : _a[X_AWS_EC2_METADATA_TOKEN]) == null;\n if (isImdsV1Fallback) {\n let fallbackBlockedFromProfile = false;\n let fallbackBlockedFromProcessEnv = false;\n const configValue = await (0, import_node_config_provider.loadConfig)(\n {\n environmentVariableSelector: (env) => {\n const envValue = env[AWS_EC2_METADATA_V1_DISABLED];\n fallbackBlockedFromProcessEnv = !!envValue && envValue !== \"false\";\n if (envValue === void 0) {\n throw new import_property_provider.CredentialsProviderError(\n `${AWS_EC2_METADATA_V1_DISABLED} not set in env, checking config file next.`\n );\n }\n return fallbackBlockedFromProcessEnv;\n },\n configFileSelector: (profile2) => {\n const profileValue = profile2[PROFILE_AWS_EC2_METADATA_V1_DISABLED];\n fallbackBlockedFromProfile = !!profileValue && profileValue !== \"false\";\n return fallbackBlockedFromProfile;\n },\n default: false\n },\n {\n profile\n }\n )();\n if (init.ec2MetadataV1Disabled || configValue) {\n const causes = [];\n if (init.ec2MetadataV1Disabled)\n causes.push(\"credential provider initialization (runtime option ec2MetadataV1Disabled)\");\n if (fallbackBlockedFromProfile)\n causes.push(`config file profile (${PROFILE_AWS_EC2_METADATA_V1_DISABLED})`);\n if (fallbackBlockedFromProcessEnv)\n causes.push(`process environment variable (${AWS_EC2_METADATA_V1_DISABLED})`);\n throw new InstanceMetadataV1FallbackError(\n `AWS EC2 Metadata v1 fallback has been blocked by AWS SDK configuration in the following: [${causes.join(\n \", \"\n )}].`\n );\n }\n }\n const imdsProfile = (await retry(async () => {\n let profile2;\n try {\n profile2 = await getProfile(options);\n } catch (err) {\n if (err.statusCode === 401) {\n disableFetchToken = false;\n }\n throw err;\n }\n return profile2;\n }, maxRetries2)).trim();\n return retry(async () => {\n let creds;\n try {\n creds = await getCredentialsFromProfile(imdsProfile, options);\n } catch (err) {\n if (err.statusCode === 401) {\n disableFetchToken = false;\n }\n throw err;\n }\n return creds;\n }, maxRetries2);\n }, \"getCredentials\");\n return async () => {\n const endpoint = await getInstanceMetadataEndpoint();\n if (disableFetchToken) {\n logger == null ? void 0 : logger.debug(\"AWS SDK Instance Metadata\", \"using v1 fallback (no token fetch)\");\n return getCredentials(maxRetries, { ...endpoint, timeout });\n } else {\n let token;\n try {\n token = (await getMetadataToken({ ...endpoint, timeout })).toString();\n } catch (error) {\n if ((error == null ? void 0 : error.statusCode) === 400) {\n throw Object.assign(error, {\n message: \"EC2 Metadata token request returned error\"\n });\n } else if (error.message === \"TimeoutError\" || [403, 404, 405].includes(error.statusCode)) {\n disableFetchToken = true;\n }\n logger == null ? void 0 : logger.debug(\"AWS SDK Instance Metadata\", \"using v1 fallback (initial)\");\n return getCredentials(maxRetries, { ...endpoint, timeout });\n }\n return getCredentials(maxRetries, {\n ...endpoint,\n headers: {\n [X_AWS_EC2_METADATA_TOKEN]: token\n },\n timeout\n });\n }\n };\n}, \"getInstanceImdsProvider\");\nvar getMetadataToken = /* @__PURE__ */ __name(async (options) => httpRequest({\n ...options,\n path: IMDS_TOKEN_PATH,\n method: \"PUT\",\n headers: {\n \"x-aws-ec2-metadata-token-ttl-seconds\": \"21600\"\n }\n}), \"getMetadataToken\");\nvar getProfile = /* @__PURE__ */ __name(async (options) => (await httpRequest({ ...options, path: IMDS_PATH })).toString(), \"getProfile\");\nvar getCredentialsFromProfile = /* @__PURE__ */ __name(async (profile, options) => {\n const credsResponse = JSON.parse(\n (await httpRequest({\n ...options,\n path: IMDS_PATH + profile\n })).toString()\n );\n if (!isImdsCredentials(credsResponse)) {\n throw new import_property_provider.CredentialsProviderError(\"Invalid response received from instance metadata service.\");\n }\n return fromImdsCredentials(credsResponse);\n}, \"getCredentialsFromProfile\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n httpRequest,\n getInstanceMetadataEndpoint,\n Endpoint,\n ENV_CMDS_FULL_URI,\n ENV_CMDS_RELATIVE_URI,\n ENV_CMDS_AUTH_TOKEN,\n fromContainerMetadata,\n fromInstanceMetadata,\n DEFAULT_TIMEOUT,\n DEFAULT_MAX_RETRIES,\n providerConfigFromInit\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n Hash: () => Hash\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_util_buffer_from = require(\"@smithy/util-buffer-from\");\nvar import_util_utf8 = require(\"@smithy/util-utf8\");\nvar import_buffer = require(\"buffer\");\nvar import_crypto = require(\"crypto\");\nvar _Hash = class _Hash {\n constructor(algorithmIdentifier, secret) {\n this.algorithmIdentifier = algorithmIdentifier;\n this.secret = secret;\n this.reset();\n }\n update(toHash, encoding) {\n this.hash.update((0, import_util_utf8.toUint8Array)(castSourceData(toHash, encoding)));\n }\n digest() {\n return Promise.resolve(this.hash.digest());\n }\n reset() {\n this.hash = this.secret ? (0, import_crypto.createHmac)(this.algorithmIdentifier, castSourceData(this.secret)) : (0, import_crypto.createHash)(this.algorithmIdentifier);\n }\n};\n__name(_Hash, \"Hash\");\nvar Hash = _Hash;\nfunction castSourceData(toCast, encoding) {\n if (import_buffer.Buffer.isBuffer(toCast)) {\n return toCast;\n }\n if (typeof toCast === \"string\") {\n return (0, import_util_buffer_from.fromString)(toCast, encoding);\n }\n if (ArrayBuffer.isView(toCast)) {\n return (0, import_util_buffer_from.fromArrayBuffer)(toCast.buffer, toCast.byteOffset, toCast.byteLength);\n }\n return (0, import_util_buffer_from.fromArrayBuffer)(toCast);\n}\n__name(castSourceData, \"castSourceData\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n Hash\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n isArrayBuffer: () => isArrayBuffer\n});\nmodule.exports = __toCommonJS(src_exports);\nvar isArrayBuffer = /* @__PURE__ */ __name((arg) => typeof ArrayBuffer === \"function\" && arg instanceof ArrayBuffer || Object.prototype.toString.call(arg) === \"[object ArrayBuffer]\", \"isArrayBuffer\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n isArrayBuffer\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n contentLengthMiddleware: () => contentLengthMiddleware,\n contentLengthMiddlewareOptions: () => contentLengthMiddlewareOptions,\n getContentLengthPlugin: () => getContentLengthPlugin\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar CONTENT_LENGTH_HEADER = \"content-length\";\nfunction contentLengthMiddleware(bodyLengthChecker) {\n return (next) => async (args) => {\n const request = args.request;\n if (import_protocol_http.HttpRequest.isInstance(request)) {\n const { body, headers } = request;\n if (body && Object.keys(headers).map((str) => str.toLowerCase()).indexOf(CONTENT_LENGTH_HEADER) === -1) {\n try {\n const length = bodyLengthChecker(body);\n request.headers = {\n ...request.headers,\n [CONTENT_LENGTH_HEADER]: String(length)\n };\n } catch (error) {\n }\n }\n }\n return next({\n ...args,\n request\n });\n };\n}\n__name(contentLengthMiddleware, \"contentLengthMiddleware\");\nvar contentLengthMiddlewareOptions = {\n step: \"build\",\n tags: [\"SET_CONTENT_LENGTH\", \"CONTENT_LENGTH\"],\n name: \"contentLengthMiddleware\",\n override: true\n};\nvar getContentLengthPlugin = /* @__PURE__ */ __name((options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(contentLengthMiddleware(options.bodyLengthChecker), contentLengthMiddlewareOptions);\n }\n}), \"getContentLengthPlugin\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n contentLengthMiddleware,\n contentLengthMiddlewareOptions,\n getContentLengthPlugin\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEndpointFromConfig = void 0;\nconst node_config_provider_1 = require(\"@smithy/node-config-provider\");\nconst getEndpointUrlConfig_1 = require(\"./getEndpointUrlConfig\");\nconst getEndpointFromConfig = async (serviceId) => (0, node_config_provider_1.loadConfig)((0, getEndpointUrlConfig_1.getEndpointUrlConfig)(serviceId))();\nexports.getEndpointFromConfig = getEndpointFromConfig;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getEndpointUrlConfig = void 0;\nconst shared_ini_file_loader_1 = require(\"@smithy/shared-ini-file-loader\");\nconst ENV_ENDPOINT_URL = \"AWS_ENDPOINT_URL\";\nconst CONFIG_ENDPOINT_URL = \"endpoint_url\";\nconst getEndpointUrlConfig = (serviceId) => ({\n environmentVariableSelector: (env) => {\n const serviceSuffixParts = serviceId.split(\" \").map((w) => w.toUpperCase());\n const serviceEndpointUrl = env[[ENV_ENDPOINT_URL, ...serviceSuffixParts].join(\"_\")];\n if (serviceEndpointUrl)\n return serviceEndpointUrl;\n const endpointUrl = env[ENV_ENDPOINT_URL];\n if (endpointUrl)\n return endpointUrl;\n return undefined;\n },\n configFileSelector: (profile, config) => {\n if (config && profile.services) {\n const servicesSection = config[[\"services\", profile.services].join(shared_ini_file_loader_1.CONFIG_PREFIX_SEPARATOR)];\n if (servicesSection) {\n const servicePrefixParts = serviceId.split(\" \").map((w) => w.toLowerCase());\n const endpointUrl = servicesSection[[servicePrefixParts.join(\"_\"), CONFIG_ENDPOINT_URL].join(shared_ini_file_loader_1.CONFIG_PREFIX_SEPARATOR)];\n if (endpointUrl)\n return endpointUrl;\n }\n }\n const endpointUrl = profile[CONFIG_ENDPOINT_URL];\n if (endpointUrl)\n return endpointUrl;\n return undefined;\n },\n default: undefined,\n});\nexports.getEndpointUrlConfig = getEndpointUrlConfig;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n endpointMiddleware: () => endpointMiddleware,\n endpointMiddlewareOptions: () => endpointMiddlewareOptions,\n getEndpointFromInstructions: () => getEndpointFromInstructions,\n getEndpointPlugin: () => getEndpointPlugin,\n resolveEndpointConfig: () => resolveEndpointConfig,\n resolveParams: () => resolveParams,\n toEndpointV1: () => toEndpointV1\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/service-customizations/s3.ts\nvar resolveParamsForS3 = /* @__PURE__ */ __name(async (endpointParams) => {\n const bucket = (endpointParams == null ? void 0 : endpointParams.Bucket) || \"\";\n if (typeof endpointParams.Bucket === \"string\") {\n endpointParams.Bucket = bucket.replace(/#/g, encodeURIComponent(\"#\")).replace(/\\?/g, encodeURIComponent(\"?\"));\n }\n if (isArnBucketName(bucket)) {\n if (endpointParams.ForcePathStyle === true) {\n throw new Error(\"Path-style addressing cannot be used with ARN buckets\");\n }\n } else if (!isDnsCompatibleBucketName(bucket) || bucket.indexOf(\".\") !== -1 && !String(endpointParams.Endpoint).startsWith(\"http:\") || bucket.toLowerCase() !== bucket || bucket.length < 3) {\n endpointParams.ForcePathStyle = true;\n }\n if (endpointParams.DisableMultiRegionAccessPoints) {\n endpointParams.disableMultiRegionAccessPoints = true;\n endpointParams.DisableMRAP = true;\n }\n return endpointParams;\n}, \"resolveParamsForS3\");\nvar DOMAIN_PATTERN = /^[a-z0-9][a-z0-9\\.\\-]{1,61}[a-z0-9]$/;\nvar IP_ADDRESS_PATTERN = /(\\d+\\.){3}\\d+/;\nvar DOTS_PATTERN = /\\.\\./;\nvar isDnsCompatibleBucketName = /* @__PURE__ */ __name((bucketName) => DOMAIN_PATTERN.test(bucketName) && !IP_ADDRESS_PATTERN.test(bucketName) && !DOTS_PATTERN.test(bucketName), \"isDnsCompatibleBucketName\");\nvar isArnBucketName = /* @__PURE__ */ __name((bucketName) => {\n const [arn, partition, service, , , bucket] = bucketName.split(\":\");\n const isArn = arn === \"arn\" && bucketName.split(\":\").length >= 6;\n const isValidArn = Boolean(isArn && partition && service && bucket);\n if (isArn && !isValidArn) {\n throw new Error(`Invalid ARN: ${bucketName} was an invalid ARN.`);\n }\n return isValidArn;\n}, \"isArnBucketName\");\n\n// src/adaptors/createConfigValueProvider.ts\nvar createConfigValueProvider = /* @__PURE__ */ __name((configKey, canonicalEndpointParamKey, config) => {\n const configProvider = /* @__PURE__ */ __name(async () => {\n const configValue = config[configKey] ?? config[canonicalEndpointParamKey];\n if (typeof configValue === \"function\") {\n return configValue();\n }\n return configValue;\n }, \"configProvider\");\n if (configKey === \"credentialScope\" || canonicalEndpointParamKey === \"CredentialScope\") {\n return async () => {\n const credentials = typeof config.credentials === \"function\" ? await config.credentials() : config.credentials;\n const configValue = (credentials == null ? void 0 : credentials.credentialScope) ?? (credentials == null ? void 0 : credentials.CredentialScope);\n return configValue;\n };\n }\n if (configKey === \"endpoint\" || canonicalEndpointParamKey === \"endpoint\") {\n return async () => {\n const endpoint = await configProvider();\n if (endpoint && typeof endpoint === \"object\") {\n if (\"url\" in endpoint) {\n return endpoint.url.href;\n }\n if (\"hostname\" in endpoint) {\n const { protocol, hostname, port, path } = endpoint;\n return `${protocol}//${hostname}${port ? \":\" + port : \"\"}${path}`;\n }\n }\n return endpoint;\n };\n }\n return configProvider;\n}, \"createConfigValueProvider\");\n\n// src/adaptors/getEndpointFromInstructions.ts\nvar import_getEndpointFromConfig = require(\"./adaptors/getEndpointFromConfig\");\n\n// src/adaptors/toEndpointV1.ts\nvar import_url_parser = require(\"@smithy/url-parser\");\nvar toEndpointV1 = /* @__PURE__ */ __name((endpoint) => {\n if (typeof endpoint === \"object\") {\n if (\"url\" in endpoint) {\n return (0, import_url_parser.parseUrl)(endpoint.url);\n }\n return endpoint;\n }\n return (0, import_url_parser.parseUrl)(endpoint);\n}, \"toEndpointV1\");\n\n// src/adaptors/getEndpointFromInstructions.ts\nvar getEndpointFromInstructions = /* @__PURE__ */ __name(async (commandInput, instructionsSupplier, clientConfig, context) => {\n if (!clientConfig.endpoint) {\n const endpointFromConfig = await (0, import_getEndpointFromConfig.getEndpointFromConfig)(clientConfig.serviceId || \"\");\n if (endpointFromConfig) {\n clientConfig.endpoint = () => Promise.resolve(toEndpointV1(endpointFromConfig));\n }\n }\n const endpointParams = await resolveParams(commandInput, instructionsSupplier, clientConfig);\n if (typeof clientConfig.endpointProvider !== \"function\") {\n throw new Error(\"config.endpointProvider is not set.\");\n }\n const endpoint = clientConfig.endpointProvider(endpointParams, context);\n return endpoint;\n}, \"getEndpointFromInstructions\");\nvar resolveParams = /* @__PURE__ */ __name(async (commandInput, instructionsSupplier, clientConfig) => {\n var _a;\n const endpointParams = {};\n const instructions = ((_a = instructionsSupplier == null ? void 0 : instructionsSupplier.getEndpointParameterInstructions) == null ? void 0 : _a.call(instructionsSupplier)) || {};\n for (const [name, instruction] of Object.entries(instructions)) {\n switch (instruction.type) {\n case \"staticContextParams\":\n endpointParams[name] = instruction.value;\n break;\n case \"contextParams\":\n endpointParams[name] = commandInput[instruction.name];\n break;\n case \"clientContextParams\":\n case \"builtInParams\":\n endpointParams[name] = await createConfigValueProvider(instruction.name, name, clientConfig)();\n break;\n default:\n throw new Error(\"Unrecognized endpoint parameter instruction: \" + JSON.stringify(instruction));\n }\n }\n if (Object.keys(instructions).length === 0) {\n Object.assign(endpointParams, clientConfig);\n }\n if (String(clientConfig.serviceId).toLowerCase() === \"s3\") {\n await resolveParamsForS3(endpointParams);\n }\n return endpointParams;\n}, \"resolveParams\");\n\n// src/endpointMiddleware.ts\nvar import_util_middleware = require(\"@smithy/util-middleware\");\nvar endpointMiddleware = /* @__PURE__ */ __name(({\n config,\n instructions\n}) => {\n return (next, context) => async (args) => {\n var _a, _b, _c;\n const endpoint = await getEndpointFromInstructions(\n args.input,\n {\n getEndpointParameterInstructions() {\n return instructions;\n }\n },\n { ...config },\n context\n );\n context.endpointV2 = endpoint;\n context.authSchemes = (_a = endpoint.properties) == null ? void 0 : _a.authSchemes;\n const authScheme = (_b = context.authSchemes) == null ? void 0 : _b[0];\n if (authScheme) {\n context[\"signing_region\"] = authScheme.signingRegion;\n context[\"signing_service\"] = authScheme.signingName;\n const smithyContext = (0, import_util_middleware.getSmithyContext)(context);\n const httpAuthOption = (_c = smithyContext == null ? void 0 : smithyContext.selectedHttpAuthScheme) == null ? void 0 : _c.httpAuthOption;\n if (httpAuthOption) {\n httpAuthOption.signingProperties = Object.assign(\n httpAuthOption.signingProperties || {},\n {\n signing_region: authScheme.signingRegion,\n signingRegion: authScheme.signingRegion,\n signing_service: authScheme.signingName,\n signingName: authScheme.signingName,\n signingRegionSet: authScheme.signingRegionSet\n },\n authScheme.properties\n );\n }\n }\n return next({\n ...args\n });\n };\n}, \"endpointMiddleware\");\n\n// src/getEndpointPlugin.ts\nvar import_middleware_serde = require(\"@smithy/middleware-serde\");\nvar endpointMiddlewareOptions = {\n step: \"serialize\",\n tags: [\"ENDPOINT_PARAMETERS\", \"ENDPOINT_V2\", \"ENDPOINT\"],\n name: \"endpointV2Middleware\",\n override: true,\n relation: \"before\",\n toMiddleware: import_middleware_serde.serializerMiddlewareOption.name\n};\nvar getEndpointPlugin = /* @__PURE__ */ __name((config, instructions) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(\n endpointMiddleware({\n config,\n instructions\n }),\n endpointMiddlewareOptions\n );\n }\n}), \"getEndpointPlugin\");\n\n// src/resolveEndpointConfig.ts\n\nvar resolveEndpointConfig = /* @__PURE__ */ __name((input) => {\n const tls = input.tls ?? true;\n const { endpoint } = input;\n const customEndpointProvider = endpoint != null ? async () => toEndpointV1(await (0, import_util_middleware.normalizeProvider)(endpoint)()) : void 0;\n const isCustomEndpoint = !!endpoint;\n return {\n ...input,\n endpoint: customEndpointProvider,\n tls,\n isCustomEndpoint,\n useDualstackEndpoint: (0, import_util_middleware.normalizeProvider)(input.useDualstackEndpoint ?? false),\n useFipsEndpoint: (0, import_util_middleware.normalizeProvider)(input.useFipsEndpoint ?? false)\n };\n}, \"resolveEndpointConfig\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n getEndpointFromInstructions,\n resolveParams,\n toEndpointV1,\n endpointMiddleware,\n endpointMiddlewareOptions,\n getEndpointPlugin,\n resolveEndpointConfig\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AdaptiveRetryStrategy: () => AdaptiveRetryStrategy,\n CONFIG_MAX_ATTEMPTS: () => CONFIG_MAX_ATTEMPTS,\n CONFIG_RETRY_MODE: () => CONFIG_RETRY_MODE,\n ENV_MAX_ATTEMPTS: () => ENV_MAX_ATTEMPTS,\n ENV_RETRY_MODE: () => ENV_RETRY_MODE,\n NODE_MAX_ATTEMPT_CONFIG_OPTIONS: () => NODE_MAX_ATTEMPT_CONFIG_OPTIONS,\n NODE_RETRY_MODE_CONFIG_OPTIONS: () => NODE_RETRY_MODE_CONFIG_OPTIONS,\n StandardRetryStrategy: () => StandardRetryStrategy,\n defaultDelayDecider: () => defaultDelayDecider,\n defaultRetryDecider: () => defaultRetryDecider,\n getOmitRetryHeadersPlugin: () => getOmitRetryHeadersPlugin,\n getRetryAfterHint: () => getRetryAfterHint,\n getRetryPlugin: () => getRetryPlugin,\n omitRetryHeadersMiddleware: () => omitRetryHeadersMiddleware,\n omitRetryHeadersMiddlewareOptions: () => omitRetryHeadersMiddlewareOptions,\n resolveRetryConfig: () => resolveRetryConfig,\n retryMiddleware: () => retryMiddleware,\n retryMiddlewareOptions: () => retryMiddlewareOptions\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/AdaptiveRetryStrategy.ts\n\n\n// src/StandardRetryStrategy.ts\nvar import_protocol_http = require(\"@smithy/protocol-http\");\n\n\nvar import_uuid = require(\"uuid\");\n\n// src/defaultRetryQuota.ts\nvar import_util_retry = require(\"@smithy/util-retry\");\nvar getDefaultRetryQuota = /* @__PURE__ */ __name((initialRetryTokens, options) => {\n const MAX_CAPACITY = initialRetryTokens;\n const noRetryIncrement = (options == null ? void 0 : options.noRetryIncrement) ?? import_util_retry.NO_RETRY_INCREMENT;\n const retryCost = (options == null ? void 0 : options.retryCost) ?? import_util_retry.RETRY_COST;\n const timeoutRetryCost = (options == null ? void 0 : options.timeoutRetryCost) ?? import_util_retry.TIMEOUT_RETRY_COST;\n let availableCapacity = initialRetryTokens;\n const getCapacityAmount = /* @__PURE__ */ __name((error) => error.name === \"TimeoutError\" ? timeoutRetryCost : retryCost, \"getCapacityAmount\");\n const hasRetryTokens = /* @__PURE__ */ __name((error) => getCapacityAmount(error) <= availableCapacity, \"hasRetryTokens\");\n const retrieveRetryTokens = /* @__PURE__ */ __name((error) => {\n if (!hasRetryTokens(error)) {\n throw new Error(\"No retry token available\");\n }\n const capacityAmount = getCapacityAmount(error);\n availableCapacity -= capacityAmount;\n return capacityAmount;\n }, \"retrieveRetryTokens\");\n const releaseRetryTokens = /* @__PURE__ */ __name((capacityReleaseAmount) => {\n availableCapacity += capacityReleaseAmount ?? noRetryIncrement;\n availableCapacity = Math.min(availableCapacity, MAX_CAPACITY);\n }, \"releaseRetryTokens\");\n return Object.freeze({\n hasRetryTokens,\n retrieveRetryTokens,\n releaseRetryTokens\n });\n}, \"getDefaultRetryQuota\");\n\n// src/delayDecider.ts\n\nvar defaultDelayDecider = /* @__PURE__ */ __name((delayBase, attempts) => Math.floor(Math.min(import_util_retry.MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase)), \"defaultDelayDecider\");\n\n// src/retryDecider.ts\nvar import_service_error_classification = require(\"@smithy/service-error-classification\");\nvar defaultRetryDecider = /* @__PURE__ */ __name((error) => {\n if (!error) {\n return false;\n }\n return (0, import_service_error_classification.isRetryableByTrait)(error) || (0, import_service_error_classification.isClockSkewError)(error) || (0, import_service_error_classification.isThrottlingError)(error) || (0, import_service_error_classification.isTransientError)(error);\n}, \"defaultRetryDecider\");\n\n// src/util.ts\nvar asSdkError = /* @__PURE__ */ __name((error) => {\n if (error instanceof Error)\n return error;\n if (error instanceof Object)\n return Object.assign(new Error(), error);\n if (typeof error === \"string\")\n return new Error(error);\n return new Error(`AWS SDK error wrapper for ${error}`);\n}, \"asSdkError\");\n\n// src/StandardRetryStrategy.ts\nvar _StandardRetryStrategy = class _StandardRetryStrategy {\n constructor(maxAttemptsProvider, options) {\n this.maxAttemptsProvider = maxAttemptsProvider;\n this.mode = import_util_retry.RETRY_MODES.STANDARD;\n this.retryDecider = (options == null ? void 0 : options.retryDecider) ?? defaultRetryDecider;\n this.delayDecider = (options == null ? void 0 : options.delayDecider) ?? defaultDelayDecider;\n this.retryQuota = (options == null ? void 0 : options.retryQuota) ?? getDefaultRetryQuota(import_util_retry.INITIAL_RETRY_TOKENS);\n }\n shouldRetry(error, attempts, maxAttempts) {\n return attempts < maxAttempts && this.retryDecider(error) && this.retryQuota.hasRetryTokens(error);\n }\n async getMaxAttempts() {\n let maxAttempts;\n try {\n maxAttempts = await this.maxAttemptsProvider();\n } catch (error) {\n maxAttempts = import_util_retry.DEFAULT_MAX_ATTEMPTS;\n }\n return maxAttempts;\n }\n async retry(next, args, options) {\n let retryTokenAmount;\n let attempts = 0;\n let totalDelay = 0;\n const maxAttempts = await this.getMaxAttempts();\n const { request } = args;\n if (import_protocol_http.HttpRequest.isInstance(request)) {\n request.headers[import_util_retry.INVOCATION_ID_HEADER] = (0, import_uuid.v4)();\n }\n while (true) {\n try {\n if (import_protocol_http.HttpRequest.isInstance(request)) {\n request.headers[import_util_retry.REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`;\n }\n if (options == null ? void 0 : options.beforeRequest) {\n await options.beforeRequest();\n }\n const { response, output } = await next(args);\n if (options == null ? void 0 : options.afterRequest) {\n options.afterRequest(response);\n }\n this.retryQuota.releaseRetryTokens(retryTokenAmount);\n output.$metadata.attempts = attempts + 1;\n output.$metadata.totalRetryDelay = totalDelay;\n return { response, output };\n } catch (e) {\n const err = asSdkError(e);\n attempts++;\n if (this.shouldRetry(err, attempts, maxAttempts)) {\n retryTokenAmount = this.retryQuota.retrieveRetryTokens(err);\n const delayFromDecider = this.delayDecider(\n (0, import_service_error_classification.isThrottlingError)(err) ? import_util_retry.THROTTLING_RETRY_DELAY_BASE : import_util_retry.DEFAULT_RETRY_DELAY_BASE,\n attempts\n );\n const delayFromResponse = getDelayFromRetryAfterHeader(err.$response);\n const delay = Math.max(delayFromResponse || 0, delayFromDecider);\n totalDelay += delay;\n await new Promise((resolve) => setTimeout(resolve, delay));\n continue;\n }\n if (!err.$metadata) {\n err.$metadata = {};\n }\n err.$metadata.attempts = attempts;\n err.$metadata.totalRetryDelay = totalDelay;\n throw err;\n }\n }\n }\n};\n__name(_StandardRetryStrategy, \"StandardRetryStrategy\");\nvar StandardRetryStrategy = _StandardRetryStrategy;\nvar getDelayFromRetryAfterHeader = /* @__PURE__ */ __name((response) => {\n if (!import_protocol_http.HttpResponse.isInstance(response))\n return;\n const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === \"retry-after\");\n if (!retryAfterHeaderName)\n return;\n const retryAfter = response.headers[retryAfterHeaderName];\n const retryAfterSeconds = Number(retryAfter);\n if (!Number.isNaN(retryAfterSeconds))\n return retryAfterSeconds * 1e3;\n const retryAfterDate = new Date(retryAfter);\n return retryAfterDate.getTime() - Date.now();\n}, \"getDelayFromRetryAfterHeader\");\n\n// src/AdaptiveRetryStrategy.ts\nvar _AdaptiveRetryStrategy = class _AdaptiveRetryStrategy extends StandardRetryStrategy {\n constructor(maxAttemptsProvider, options) {\n const { rateLimiter, ...superOptions } = options ?? {};\n super(maxAttemptsProvider, superOptions);\n this.rateLimiter = rateLimiter ?? new import_util_retry.DefaultRateLimiter();\n this.mode = import_util_retry.RETRY_MODES.ADAPTIVE;\n }\n async retry(next, args) {\n return super.retry(next, args, {\n beforeRequest: async () => {\n return this.rateLimiter.getSendToken();\n },\n afterRequest: (response) => {\n this.rateLimiter.updateClientSendingRate(response);\n }\n });\n }\n};\n__name(_AdaptiveRetryStrategy, \"AdaptiveRetryStrategy\");\nvar AdaptiveRetryStrategy = _AdaptiveRetryStrategy;\n\n// src/configurations.ts\nvar import_util_middleware = require(\"@smithy/util-middleware\");\n\nvar ENV_MAX_ATTEMPTS = \"AWS_MAX_ATTEMPTS\";\nvar CONFIG_MAX_ATTEMPTS = \"max_attempts\";\nvar NODE_MAX_ATTEMPT_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => {\n const value = env[ENV_MAX_ATTEMPTS];\n if (!value)\n return void 0;\n const maxAttempt = parseInt(value);\n if (Number.isNaN(maxAttempt)) {\n throw new Error(`Environment variable ${ENV_MAX_ATTEMPTS} mast be a number, got \"${value}\"`);\n }\n return maxAttempt;\n },\n configFileSelector: (profile) => {\n const value = profile[CONFIG_MAX_ATTEMPTS];\n if (!value)\n return void 0;\n const maxAttempt = parseInt(value);\n if (Number.isNaN(maxAttempt)) {\n throw new Error(`Shared config file entry ${CONFIG_MAX_ATTEMPTS} mast be a number, got \"${value}\"`);\n }\n return maxAttempt;\n },\n default: import_util_retry.DEFAULT_MAX_ATTEMPTS\n};\nvar resolveRetryConfig = /* @__PURE__ */ __name((input) => {\n const { retryStrategy } = input;\n const maxAttempts = (0, import_util_middleware.normalizeProvider)(input.maxAttempts ?? import_util_retry.DEFAULT_MAX_ATTEMPTS);\n return {\n ...input,\n maxAttempts,\n retryStrategy: async () => {\n if (retryStrategy) {\n return retryStrategy;\n }\n const retryMode = await (0, import_util_middleware.normalizeProvider)(input.retryMode)();\n if (retryMode === import_util_retry.RETRY_MODES.ADAPTIVE) {\n return new import_util_retry.AdaptiveRetryStrategy(maxAttempts);\n }\n return new import_util_retry.StandardRetryStrategy(maxAttempts);\n }\n };\n}, \"resolveRetryConfig\");\nvar ENV_RETRY_MODE = \"AWS_RETRY_MODE\";\nvar CONFIG_RETRY_MODE = \"retry_mode\";\nvar NODE_RETRY_MODE_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => env[ENV_RETRY_MODE],\n configFileSelector: (profile) => profile[CONFIG_RETRY_MODE],\n default: import_util_retry.DEFAULT_RETRY_MODE\n};\n\n// src/omitRetryHeadersMiddleware.ts\n\n\nvar omitRetryHeadersMiddleware = /* @__PURE__ */ __name(() => (next) => async (args) => {\n const { request } = args;\n if (import_protocol_http.HttpRequest.isInstance(request)) {\n delete request.headers[import_util_retry.INVOCATION_ID_HEADER];\n delete request.headers[import_util_retry.REQUEST_HEADER];\n }\n return next(args);\n}, \"omitRetryHeadersMiddleware\");\nvar omitRetryHeadersMiddlewareOptions = {\n name: \"omitRetryHeadersMiddleware\",\n tags: [\"RETRY\", \"HEADERS\", \"OMIT_RETRY_HEADERS\"],\n relation: \"before\",\n toMiddleware: \"awsAuthMiddleware\",\n override: true\n};\nvar getOmitRetryHeadersPlugin = /* @__PURE__ */ __name((options) => ({\n applyToStack: (clientStack) => {\n clientStack.addRelativeTo(omitRetryHeadersMiddleware(), omitRetryHeadersMiddlewareOptions);\n }\n}), \"getOmitRetryHeadersPlugin\");\n\n// src/retryMiddleware.ts\n\n\nvar import_smithy_client = require(\"@smithy/smithy-client\");\n\n\nvar import_isStreamingPayload = require(\"./isStreamingPayload/isStreamingPayload\");\nvar retryMiddleware = /* @__PURE__ */ __name((options) => (next, context) => async (args) => {\n var _a;\n let retryStrategy = await options.retryStrategy();\n const maxAttempts = await options.maxAttempts();\n if (isRetryStrategyV2(retryStrategy)) {\n retryStrategy = retryStrategy;\n let retryToken = await retryStrategy.acquireInitialRetryToken(context[\"partition_id\"]);\n let lastError = new Error();\n let attempts = 0;\n let totalRetryDelay = 0;\n const { request } = args;\n const isRequest = import_protocol_http.HttpRequest.isInstance(request);\n if (isRequest) {\n request.headers[import_util_retry.INVOCATION_ID_HEADER] = (0, import_uuid.v4)();\n }\n while (true) {\n try {\n if (isRequest) {\n request.headers[import_util_retry.REQUEST_HEADER] = `attempt=${attempts + 1}; max=${maxAttempts}`;\n }\n const { response, output } = await next(args);\n retryStrategy.recordSuccess(retryToken);\n output.$metadata.attempts = attempts + 1;\n output.$metadata.totalRetryDelay = totalRetryDelay;\n return { response, output };\n } catch (e) {\n const retryErrorInfo = getRetryErrorInfo(e);\n lastError = asSdkError(e);\n if (isRequest && (0, import_isStreamingPayload.isStreamingPayload)(request)) {\n (_a = context.logger instanceof import_smithy_client.NoOpLogger ? console : context.logger) == null ? void 0 : _a.warn(\n \"An error was encountered in a non-retryable streaming request.\"\n );\n throw lastError;\n }\n try {\n retryToken = await retryStrategy.refreshRetryTokenForRetry(retryToken, retryErrorInfo);\n } catch (refreshError) {\n if (!lastError.$metadata) {\n lastError.$metadata = {};\n }\n lastError.$metadata.attempts = attempts + 1;\n lastError.$metadata.totalRetryDelay = totalRetryDelay;\n throw lastError;\n }\n attempts = retryToken.getRetryCount();\n const delay = retryToken.getRetryDelay();\n totalRetryDelay += delay;\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n }\n } else {\n retryStrategy = retryStrategy;\n if (retryStrategy == null ? void 0 : retryStrategy.mode)\n context.userAgent = [...context.userAgent || [], [\"cfg/retry-mode\", retryStrategy.mode]];\n return retryStrategy.retry(next, args);\n }\n}, \"retryMiddleware\");\nvar isRetryStrategyV2 = /* @__PURE__ */ __name((retryStrategy) => typeof retryStrategy.acquireInitialRetryToken !== \"undefined\" && typeof retryStrategy.refreshRetryTokenForRetry !== \"undefined\" && typeof retryStrategy.recordSuccess !== \"undefined\", \"isRetryStrategyV2\");\nvar getRetryErrorInfo = /* @__PURE__ */ __name((error) => {\n const errorInfo = {\n error,\n errorType: getRetryErrorType(error)\n };\n const retryAfterHint = getRetryAfterHint(error.$response);\n if (retryAfterHint) {\n errorInfo.retryAfterHint = retryAfterHint;\n }\n return errorInfo;\n}, \"getRetryErrorInfo\");\nvar getRetryErrorType = /* @__PURE__ */ __name((error) => {\n if ((0, import_service_error_classification.isThrottlingError)(error))\n return \"THROTTLING\";\n if ((0, import_service_error_classification.isTransientError)(error))\n return \"TRANSIENT\";\n if ((0, import_service_error_classification.isServerError)(error))\n return \"SERVER_ERROR\";\n return \"CLIENT_ERROR\";\n}, \"getRetryErrorType\");\nvar retryMiddlewareOptions = {\n name: \"retryMiddleware\",\n tags: [\"RETRY\"],\n step: \"finalizeRequest\",\n priority: \"high\",\n override: true\n};\nvar getRetryPlugin = /* @__PURE__ */ __name((options) => ({\n applyToStack: (clientStack) => {\n clientStack.add(retryMiddleware(options), retryMiddlewareOptions);\n }\n}), \"getRetryPlugin\");\nvar getRetryAfterHint = /* @__PURE__ */ __name((response) => {\n if (!import_protocol_http.HttpResponse.isInstance(response))\n return;\n const retryAfterHeaderName = Object.keys(response.headers).find((key) => key.toLowerCase() === \"retry-after\");\n if (!retryAfterHeaderName)\n return;\n const retryAfter = response.headers[retryAfterHeaderName];\n const retryAfterSeconds = Number(retryAfter);\n if (!Number.isNaN(retryAfterSeconds))\n return new Date(retryAfterSeconds * 1e3);\n const retryAfterDate = new Date(retryAfter);\n return retryAfterDate;\n}, \"getRetryAfterHint\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n AdaptiveRetryStrategy,\n StandardRetryStrategy,\n ENV_MAX_ATTEMPTS,\n CONFIG_MAX_ATTEMPTS,\n NODE_MAX_ATTEMPT_CONFIG_OPTIONS,\n resolveRetryConfig,\n ENV_RETRY_MODE,\n CONFIG_RETRY_MODE,\n NODE_RETRY_MODE_CONFIG_OPTIONS,\n defaultDelayDecider,\n omitRetryHeadersMiddleware,\n omitRetryHeadersMiddlewareOptions,\n getOmitRetryHeadersPlugin,\n defaultRetryDecider,\n retryMiddleware,\n retryMiddlewareOptions,\n getRetryPlugin,\n getRetryAfterHint\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isStreamingPayload = void 0;\nconst stream_1 = require(\"stream\");\nconst isStreamingPayload = (request) => (request === null || request === void 0 ? void 0 : request.body) instanceof stream_1.Readable ||\n (typeof ReadableStream !== \"undefined\" && (request === null || request === void 0 ? void 0 : request.body) instanceof ReadableStream);\nexports.isStreamingPayload = isStreamingPayload;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function () {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function () {\n return _parse.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function () {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function () {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function () {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function () {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function () {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function () {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function () {\n return _version.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction md5(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('md5').update(bytes).digest();\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar _default = {\n randomUUID: _crypto.default.randomUUID\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\n\nfunction rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n _crypto.default.randomFillSync(rnds8Pool);\n\n poolPtr = 0;\n }\n\n return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction sha1(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('sha1').update(bytes).digest();\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nexports.unsafeStringify = unsafeStringify;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nfunction unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]];\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.unsafeStringify)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.URL = exports.DNS = void 0;\nexports.default = v35;\n\nvar _stringify = require(\"./stringify.js\");\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _native = _interopRequireDefault(require(\"./native.js\"));\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n if (_native.default.randomUUID && !buf && !options) {\n return _native.default.randomUUID();\n }\n\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.slice(14, 15), 16);\n}\n\nvar _default = version;\nexports.default = _default;","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n deserializerMiddleware: () => deserializerMiddleware,\n deserializerMiddlewareOption: () => deserializerMiddlewareOption,\n getSerdePlugin: () => getSerdePlugin,\n serializerMiddleware: () => serializerMiddleware,\n serializerMiddlewareOption: () => serializerMiddlewareOption\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/deserializerMiddleware.ts\nvar deserializerMiddleware = /* @__PURE__ */ __name((options, deserializer) => (next, context) => async (args) => {\n const { response } = await next(args);\n try {\n const parsed = await deserializer(response, options);\n return {\n response,\n output: parsed\n };\n } catch (error) {\n Object.defineProperty(error, \"$response\", {\n value: response\n });\n if (!(\"$metadata\" in error)) {\n const hint = `Deserialization error: to see the raw response, inspect the hidden field {error}.$response on this object.`;\n error.message += \"\\n \" + hint;\n if (typeof error.$responseBodyText !== \"undefined\") {\n if (error.$response) {\n error.$response.body = error.$responseBodyText;\n }\n }\n }\n throw error;\n }\n}, \"deserializerMiddleware\");\n\n// src/serializerMiddleware.ts\nvar serializerMiddleware = /* @__PURE__ */ __name((options, serializer) => (next, context) => async (args) => {\n var _a;\n const endpoint = ((_a = context.endpointV2) == null ? void 0 : _a.url) && options.urlParser ? async () => options.urlParser(context.endpointV2.url) : options.endpoint;\n if (!endpoint) {\n throw new Error(\"No valid endpoint provider available.\");\n }\n const request = await serializer(args.input, { ...options, endpoint });\n return next({\n ...args,\n request\n });\n}, \"serializerMiddleware\");\n\n// src/serdePlugin.ts\nvar deserializerMiddlewareOption = {\n name: \"deserializerMiddleware\",\n step: \"deserialize\",\n tags: [\"DESERIALIZER\"],\n override: true\n};\nvar serializerMiddlewareOption = {\n name: \"serializerMiddleware\",\n step: \"serialize\",\n tags: [\"SERIALIZER\"],\n override: true\n};\nfunction getSerdePlugin(config, serializer, deserializer) {\n return {\n applyToStack: (commandStack) => {\n commandStack.add(deserializerMiddleware(config, deserializer), deserializerMiddlewareOption);\n commandStack.add(serializerMiddleware(config, serializer), serializerMiddlewareOption);\n }\n };\n}\n__name(getSerdePlugin, \"getSerdePlugin\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n deserializerMiddleware,\n deserializerMiddlewareOption,\n serializerMiddlewareOption,\n getSerdePlugin,\n serializerMiddleware\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n constructStack: () => constructStack\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/MiddlewareStack.ts\nvar getAllAliases = /* @__PURE__ */ __name((name, aliases) => {\n const _aliases = [];\n if (name) {\n _aliases.push(name);\n }\n if (aliases) {\n for (const alias of aliases) {\n _aliases.push(alias);\n }\n }\n return _aliases;\n}, \"getAllAliases\");\nvar getMiddlewareNameWithAliases = /* @__PURE__ */ __name((name, aliases) => {\n return `${name || \"anonymous\"}${aliases && aliases.length > 0 ? ` (a.k.a. ${aliases.join(\",\")})` : \"\"}`;\n}, \"getMiddlewareNameWithAliases\");\nvar constructStack = /* @__PURE__ */ __name(() => {\n let absoluteEntries = [];\n let relativeEntries = [];\n let identifyOnResolve = false;\n const entriesNameSet = /* @__PURE__ */ new Set();\n const sort = /* @__PURE__ */ __name((entries) => entries.sort(\n (a, b) => stepWeights[b.step] - stepWeights[a.step] || priorityWeights[b.priority || \"normal\"] - priorityWeights[a.priority || \"normal\"]\n ), \"sort\");\n const removeByName = /* @__PURE__ */ __name((toRemove) => {\n let isRemoved = false;\n const filterCb = /* @__PURE__ */ __name((entry) => {\n const aliases = getAllAliases(entry.name, entry.aliases);\n if (aliases.includes(toRemove)) {\n isRemoved = true;\n for (const alias of aliases) {\n entriesNameSet.delete(alias);\n }\n return false;\n }\n return true;\n }, \"filterCb\");\n absoluteEntries = absoluteEntries.filter(filterCb);\n relativeEntries = relativeEntries.filter(filterCb);\n return isRemoved;\n }, \"removeByName\");\n const removeByReference = /* @__PURE__ */ __name((toRemove) => {\n let isRemoved = false;\n const filterCb = /* @__PURE__ */ __name((entry) => {\n if (entry.middleware === toRemove) {\n isRemoved = true;\n for (const alias of getAllAliases(entry.name, entry.aliases)) {\n entriesNameSet.delete(alias);\n }\n return false;\n }\n return true;\n }, \"filterCb\");\n absoluteEntries = absoluteEntries.filter(filterCb);\n relativeEntries = relativeEntries.filter(filterCb);\n return isRemoved;\n }, \"removeByReference\");\n const cloneTo = /* @__PURE__ */ __name((toStack) => {\n var _a;\n absoluteEntries.forEach((entry) => {\n toStack.add(entry.middleware, { ...entry });\n });\n relativeEntries.forEach((entry) => {\n toStack.addRelativeTo(entry.middleware, { ...entry });\n });\n (_a = toStack.identifyOnResolve) == null ? void 0 : _a.call(toStack, stack.identifyOnResolve());\n return toStack;\n }, \"cloneTo\");\n const expandRelativeMiddlewareList = /* @__PURE__ */ __name((from) => {\n const expandedMiddlewareList = [];\n from.before.forEach((entry) => {\n if (entry.before.length === 0 && entry.after.length === 0) {\n expandedMiddlewareList.push(entry);\n } else {\n expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry));\n }\n });\n expandedMiddlewareList.push(from);\n from.after.reverse().forEach((entry) => {\n if (entry.before.length === 0 && entry.after.length === 0) {\n expandedMiddlewareList.push(entry);\n } else {\n expandedMiddlewareList.push(...expandRelativeMiddlewareList(entry));\n }\n });\n return expandedMiddlewareList;\n }, \"expandRelativeMiddlewareList\");\n const getMiddlewareList = /* @__PURE__ */ __name((debug = false) => {\n const normalizedAbsoluteEntries = [];\n const normalizedRelativeEntries = [];\n const normalizedEntriesNameMap = {};\n absoluteEntries.forEach((entry) => {\n const normalizedEntry = {\n ...entry,\n before: [],\n after: []\n };\n for (const alias of getAllAliases(normalizedEntry.name, normalizedEntry.aliases)) {\n normalizedEntriesNameMap[alias] = normalizedEntry;\n }\n normalizedAbsoluteEntries.push(normalizedEntry);\n });\n relativeEntries.forEach((entry) => {\n const normalizedEntry = {\n ...entry,\n before: [],\n after: []\n };\n for (const alias of getAllAliases(normalizedEntry.name, normalizedEntry.aliases)) {\n normalizedEntriesNameMap[alias] = normalizedEntry;\n }\n normalizedRelativeEntries.push(normalizedEntry);\n });\n normalizedRelativeEntries.forEach((entry) => {\n if (entry.toMiddleware) {\n const toMiddleware = normalizedEntriesNameMap[entry.toMiddleware];\n if (toMiddleware === void 0) {\n if (debug) {\n return;\n }\n throw new Error(\n `${entry.toMiddleware} is not found when adding ${getMiddlewareNameWithAliases(entry.name, entry.aliases)} middleware ${entry.relation} ${entry.toMiddleware}`\n );\n }\n if (entry.relation === \"after\") {\n toMiddleware.after.push(entry);\n }\n if (entry.relation === \"before\") {\n toMiddleware.before.push(entry);\n }\n }\n });\n const mainChain = sort(normalizedAbsoluteEntries).map(expandRelativeMiddlewareList).reduce((wholeList, expandedMiddlewareList) => {\n wholeList.push(...expandedMiddlewareList);\n return wholeList;\n }, []);\n return mainChain;\n }, \"getMiddlewareList\");\n const stack = {\n add: (middleware, options = {}) => {\n const { name, override, aliases: _aliases } = options;\n const entry = {\n step: \"initialize\",\n priority: \"normal\",\n middleware,\n ...options\n };\n const aliases = getAllAliases(name, _aliases);\n if (aliases.length > 0) {\n if (aliases.some((alias) => entriesNameSet.has(alias))) {\n if (!override)\n throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name, _aliases)}'`);\n for (const alias of aliases) {\n const toOverrideIndex = absoluteEntries.findIndex(\n (entry2) => {\n var _a;\n return entry2.name === alias || ((_a = entry2.aliases) == null ? void 0 : _a.some((a) => a === alias));\n }\n );\n if (toOverrideIndex === -1) {\n continue;\n }\n const toOverride = absoluteEntries[toOverrideIndex];\n if (toOverride.step !== entry.step || entry.priority !== toOverride.priority) {\n throw new Error(\n `\"${getMiddlewareNameWithAliases(toOverride.name, toOverride.aliases)}\" middleware with ${toOverride.priority} priority in ${toOverride.step} step cannot be overridden by \"${getMiddlewareNameWithAliases(name, _aliases)}\" middleware with ${entry.priority} priority in ${entry.step} step.`\n );\n }\n absoluteEntries.splice(toOverrideIndex, 1);\n }\n }\n for (const alias of aliases) {\n entriesNameSet.add(alias);\n }\n }\n absoluteEntries.push(entry);\n },\n addRelativeTo: (middleware, options) => {\n const { name, override, aliases: _aliases } = options;\n const entry = {\n middleware,\n ...options\n };\n const aliases = getAllAliases(name, _aliases);\n if (aliases.length > 0) {\n if (aliases.some((alias) => entriesNameSet.has(alias))) {\n if (!override)\n throw new Error(`Duplicate middleware name '${getMiddlewareNameWithAliases(name, _aliases)}'`);\n for (const alias of aliases) {\n const toOverrideIndex = relativeEntries.findIndex(\n (entry2) => {\n var _a;\n return entry2.name === alias || ((_a = entry2.aliases) == null ? void 0 : _a.some((a) => a === alias));\n }\n );\n if (toOverrideIndex === -1) {\n continue;\n }\n const toOverride = relativeEntries[toOverrideIndex];\n if (toOverride.toMiddleware !== entry.toMiddleware || toOverride.relation !== entry.relation) {\n throw new Error(\n `\"${getMiddlewareNameWithAliases(toOverride.name, toOverride.aliases)}\" middleware ${toOverride.relation} \"${toOverride.toMiddleware}\" middleware cannot be overridden by \"${getMiddlewareNameWithAliases(name, _aliases)}\" middleware ${entry.relation} \"${entry.toMiddleware}\" middleware.`\n );\n }\n relativeEntries.splice(toOverrideIndex, 1);\n }\n }\n for (const alias of aliases) {\n entriesNameSet.add(alias);\n }\n }\n relativeEntries.push(entry);\n },\n clone: () => cloneTo(constructStack()),\n use: (plugin) => {\n plugin.applyToStack(stack);\n },\n remove: (toRemove) => {\n if (typeof toRemove === \"string\")\n return removeByName(toRemove);\n else\n return removeByReference(toRemove);\n },\n removeByTag: (toRemove) => {\n let isRemoved = false;\n const filterCb = /* @__PURE__ */ __name((entry) => {\n const { tags, name, aliases: _aliases } = entry;\n if (tags && tags.includes(toRemove)) {\n const aliases = getAllAliases(name, _aliases);\n for (const alias of aliases) {\n entriesNameSet.delete(alias);\n }\n isRemoved = true;\n return false;\n }\n return true;\n }, \"filterCb\");\n absoluteEntries = absoluteEntries.filter(filterCb);\n relativeEntries = relativeEntries.filter(filterCb);\n return isRemoved;\n },\n concat: (from) => {\n var _a;\n const cloned = cloneTo(constructStack());\n cloned.use(from);\n cloned.identifyOnResolve(\n identifyOnResolve || cloned.identifyOnResolve() || (((_a = from.identifyOnResolve) == null ? void 0 : _a.call(from)) ?? false)\n );\n return cloned;\n },\n applyToStack: cloneTo,\n identify: () => {\n return getMiddlewareList(true).map((mw) => {\n const step = mw.step ?? mw.relation + \" \" + mw.toMiddleware;\n return getMiddlewareNameWithAliases(mw.name, mw.aliases) + \" - \" + step;\n });\n },\n identifyOnResolve(toggle) {\n if (typeof toggle === \"boolean\")\n identifyOnResolve = toggle;\n return identifyOnResolve;\n },\n resolve: (handler, context) => {\n for (const middleware of getMiddlewareList().map((entry) => entry.middleware).reverse()) {\n handler = middleware(handler, context);\n }\n if (identifyOnResolve) {\n console.log(stack.identify());\n }\n return handler;\n }\n };\n return stack;\n}, \"constructStack\");\nvar stepWeights = {\n initialize: 5,\n serialize: 4,\n build: 3,\n finalizeRequest: 2,\n deserialize: 1\n};\nvar priorityWeights = {\n high: 3,\n normal: 2,\n low: 1\n};\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n constructStack\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n loadConfig: () => loadConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/configLoader.ts\n\n\n// src/fromEnv.ts\nvar import_property_provider = require(\"@smithy/property-provider\");\nvar fromEnv = /* @__PURE__ */ __name((envVarSelector) => async () => {\n try {\n const config = envVarSelector(process.env);\n if (config === void 0) {\n throw new Error();\n }\n return config;\n } catch (e) {\n throw new import_property_provider.CredentialsProviderError(\n e.message || `Cannot load config from environment variables with getter: ${envVarSelector}`\n );\n }\n}, \"fromEnv\");\n\n// src/fromSharedConfigFiles.ts\n\nvar import_shared_ini_file_loader = require(\"@smithy/shared-ini-file-loader\");\nvar fromSharedConfigFiles = /* @__PURE__ */ __name((configSelector, { preferredFile = \"config\", ...init } = {}) => async () => {\n const profile = (0, import_shared_ini_file_loader.getProfileName)(init);\n const { configFile, credentialsFile } = await (0, import_shared_ini_file_loader.loadSharedConfigFiles)(init);\n const profileFromCredentials = credentialsFile[profile] || {};\n const profileFromConfig = configFile[profile] || {};\n const mergedProfile = preferredFile === \"config\" ? { ...profileFromCredentials, ...profileFromConfig } : { ...profileFromConfig, ...profileFromCredentials };\n try {\n const cfgFile = preferredFile === \"config\" ? configFile : credentialsFile;\n const configValue = configSelector(mergedProfile, cfgFile);\n if (configValue === void 0) {\n throw new Error();\n }\n return configValue;\n } catch (e) {\n throw new import_property_provider.CredentialsProviderError(\n e.message || `Cannot load config for profile ${profile} in SDK configuration files with getter: ${configSelector}`\n );\n }\n}, \"fromSharedConfigFiles\");\n\n// src/fromStatic.ts\n\nvar isFunction = /* @__PURE__ */ __name((func) => typeof func === \"function\", \"isFunction\");\nvar fromStatic = /* @__PURE__ */ __name((defaultValue) => isFunction(defaultValue) ? async () => await defaultValue() : (0, import_property_provider.fromStatic)(defaultValue), \"fromStatic\");\n\n// src/configLoader.ts\nvar loadConfig = /* @__PURE__ */ __name(({ environmentVariableSelector, configFileSelector, default: defaultValue }, configuration = {}) => (0, import_property_provider.memoize)(\n (0, import_property_provider.chain)(\n fromEnv(environmentVariableSelector),\n fromSharedConfigFiles(configFileSelector, configuration),\n fromStatic(defaultValue)\n )\n), \"loadConfig\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n loadConfig\n});\n\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n DEFAULT_REQUEST_TIMEOUT: () => DEFAULT_REQUEST_TIMEOUT,\n NodeHttp2Handler: () => NodeHttp2Handler,\n NodeHttpHandler: () => NodeHttpHandler,\n streamCollector: () => streamCollector\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/node-http-handler.ts\nvar import_protocol_http = require(\"@smithy/protocol-http\");\nvar import_querystring_builder = require(\"@smithy/querystring-builder\");\nvar import_http = require(\"http\");\nvar import_https = require(\"https\");\n\n// src/constants.ts\nvar NODEJS_TIMEOUT_ERROR_CODES = [\"ECONNRESET\", \"EPIPE\", \"ETIMEDOUT\"];\n\n// src/get-transformed-headers.ts\nvar getTransformedHeaders = /* @__PURE__ */ __name((headers) => {\n const transformedHeaders = {};\n for (const name of Object.keys(headers)) {\n const headerValues = headers[name];\n transformedHeaders[name] = Array.isArray(headerValues) ? headerValues.join(\",\") : headerValues;\n }\n return transformedHeaders;\n}, \"getTransformedHeaders\");\n\n// src/set-connection-timeout.ts\nvar setConnectionTimeout = /* @__PURE__ */ __name((request, reject, timeoutInMs = 0) => {\n if (!timeoutInMs) {\n return;\n }\n const timeoutId = setTimeout(() => {\n request.destroy();\n reject(\n Object.assign(new Error(`Socket timed out without establishing a connection within ${timeoutInMs} ms`), {\n name: \"TimeoutError\"\n })\n );\n }, timeoutInMs);\n request.on(\"socket\", (socket) => {\n if (socket.connecting) {\n socket.on(\"connect\", () => {\n clearTimeout(timeoutId);\n });\n } else {\n clearTimeout(timeoutId);\n }\n });\n}, \"setConnectionTimeout\");\n\n// src/set-socket-keep-alive.ts\nvar setSocketKeepAlive = /* @__PURE__ */ __name((request, { keepAlive, keepAliveMsecs }) => {\n if (keepAlive !== true) {\n return;\n }\n request.on(\"socket\", (socket) => {\n socket.setKeepAlive(keepAlive, keepAliveMsecs || 0);\n });\n}, \"setSocketKeepAlive\");\n\n// src/set-socket-timeout.ts\nvar setSocketTimeout = /* @__PURE__ */ __name((request, reject, timeoutInMs = 0) => {\n request.setTimeout(timeoutInMs, () => {\n request.destroy();\n reject(Object.assign(new Error(`Connection timed out after ${timeoutInMs} ms`), { name: \"TimeoutError\" }));\n });\n}, \"setSocketTimeout\");\n\n// src/write-request-body.ts\nvar import_stream = require(\"stream\");\nvar MIN_WAIT_TIME = 1e3;\nasync function writeRequestBody(httpRequest, request, maxContinueTimeoutMs = MIN_WAIT_TIME) {\n const headers = request.headers ?? {};\n const expect = headers[\"Expect\"] || headers[\"expect\"];\n let timeoutId = -1;\n let hasError = false;\n if (expect === \"100-continue\") {\n await Promise.race([\n new Promise((resolve) => {\n timeoutId = Number(setTimeout(resolve, Math.max(MIN_WAIT_TIME, maxContinueTimeoutMs)));\n }),\n new Promise((resolve) => {\n httpRequest.on(\"continue\", () => {\n clearTimeout(timeoutId);\n resolve();\n });\n httpRequest.on(\"error\", () => {\n hasError = true;\n clearTimeout(timeoutId);\n resolve();\n });\n })\n ]);\n }\n if (!hasError) {\n writeBody(httpRequest, request.body);\n }\n}\n__name(writeRequestBody, \"writeRequestBody\");\nfunction writeBody(httpRequest, body) {\n if (body instanceof import_stream.Readable) {\n body.pipe(httpRequest);\n return;\n }\n if (body) {\n if (Buffer.isBuffer(body) || typeof body === \"string\") {\n httpRequest.end(body);\n return;\n }\n const uint8 = body;\n if (typeof uint8 === \"object\" && uint8.buffer && typeof uint8.byteOffset === \"number\" && typeof uint8.byteLength === \"number\") {\n httpRequest.end(Buffer.from(uint8.buffer, uint8.byteOffset, uint8.byteLength));\n return;\n }\n httpRequest.end(Buffer.from(body));\n return;\n }\n httpRequest.end();\n}\n__name(writeBody, \"writeBody\");\n\n// src/node-http-handler.ts\nvar DEFAULT_REQUEST_TIMEOUT = 0;\nvar _NodeHttpHandler = class _NodeHttpHandler {\n constructor(options) {\n this.socketWarningTimestamp = 0;\n // Node http handler is hard-coded to http/1.1: https://github.com/nodejs/node/blob/ff5664b83b89c55e4ab5d5f60068fb457f1f5872/lib/_http_server.js#L286\n this.metadata = { handlerProtocol: \"http/1.1\" };\n this.configProvider = new Promise((resolve, reject) => {\n if (typeof options === \"function\") {\n options().then((_options) => {\n resolve(this.resolveDefaultConfig(_options));\n }).catch(reject);\n } else {\n resolve(this.resolveDefaultConfig(options));\n }\n });\n }\n /**\n * @returns the input if it is an HttpHandler of any class,\n * or instantiates a new instance of this handler.\n */\n static create(instanceOrOptions) {\n if (typeof (instanceOrOptions == null ? void 0 : instanceOrOptions.handle) === \"function\") {\n return instanceOrOptions;\n }\n return new _NodeHttpHandler(instanceOrOptions);\n }\n /**\n * @internal\n *\n * @param agent - http(s) agent in use by the NodeHttpHandler instance.\n * @returns timestamp of last emitted warning.\n */\n static checkSocketUsage(agent, socketWarningTimestamp) {\n var _a, _b;\n const { sockets, requests, maxSockets } = agent;\n if (typeof maxSockets !== \"number\" || maxSockets === Infinity) {\n return socketWarningTimestamp;\n }\n const interval = 15e3;\n if (Date.now() - interval < socketWarningTimestamp) {\n return socketWarningTimestamp;\n }\n if (sockets && requests) {\n for (const origin in sockets) {\n const socketsInUse = ((_a = sockets[origin]) == null ? void 0 : _a.length) ?? 0;\n const requestsEnqueued = ((_b = requests[origin]) == null ? void 0 : _b.length) ?? 0;\n if (socketsInUse >= maxSockets && requestsEnqueued >= 2 * maxSockets) {\n console.warn(\n \"@smithy/node-http-handler:WARN\",\n `socket usage at capacity=${socketsInUse} and ${requestsEnqueued} additional requests are enqueued.`,\n \"See https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/node-configuring-maxsockets.html\",\n \"or increase socketAcquisitionWarningTimeout=(millis) in the NodeHttpHandler config.\"\n );\n return Date.now();\n }\n }\n }\n return socketWarningTimestamp;\n }\n resolveDefaultConfig(options) {\n const { requestTimeout, connectionTimeout, socketTimeout, httpAgent, httpsAgent } = options || {};\n const keepAlive = true;\n const maxSockets = 50;\n return {\n connectionTimeout,\n requestTimeout: requestTimeout ?? socketTimeout,\n httpAgent: (() => {\n if (httpAgent instanceof import_http.Agent || typeof (httpAgent == null ? void 0 : httpAgent.destroy) === \"function\") {\n return httpAgent;\n }\n return new import_http.Agent({ keepAlive, maxSockets, ...httpAgent });\n })(),\n httpsAgent: (() => {\n if (httpsAgent instanceof import_https.Agent || typeof (httpsAgent == null ? void 0 : httpsAgent.destroy) === \"function\") {\n return httpsAgent;\n }\n return new import_https.Agent({ keepAlive, maxSockets, ...httpsAgent });\n })()\n };\n }\n destroy() {\n var _a, _b, _c, _d;\n (_b = (_a = this.config) == null ? void 0 : _a.httpAgent) == null ? void 0 : _b.destroy();\n (_d = (_c = this.config) == null ? void 0 : _c.httpsAgent) == null ? void 0 : _d.destroy();\n }\n async handle(request, { abortSignal } = {}) {\n if (!this.config) {\n this.config = await this.configProvider;\n }\n let socketCheckTimeoutId;\n return new Promise((_resolve, _reject) => {\n let writeRequestBodyPromise = void 0;\n const resolve = /* @__PURE__ */ __name(async (arg) => {\n await writeRequestBodyPromise;\n clearTimeout(socketCheckTimeoutId);\n _resolve(arg);\n }, \"resolve\");\n const reject = /* @__PURE__ */ __name(async (arg) => {\n await writeRequestBodyPromise;\n _reject(arg);\n }, \"reject\");\n if (!this.config) {\n throw new Error(\"Node HTTP request handler config is not resolved\");\n }\n if (abortSignal == null ? void 0 : abortSignal.aborted) {\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n reject(abortError);\n return;\n }\n const isSSL = request.protocol === \"https:\";\n const agent = isSSL ? this.config.httpsAgent : this.config.httpAgent;\n socketCheckTimeoutId = setTimeout(() => {\n this.socketWarningTimestamp = _NodeHttpHandler.checkSocketUsage(agent, this.socketWarningTimestamp);\n }, this.config.socketAcquisitionWarningTimeout ?? (this.config.requestTimeout ?? 2e3) + (this.config.connectionTimeout ?? 1e3));\n const queryString = (0, import_querystring_builder.buildQueryString)(request.query || {});\n let auth = void 0;\n if (request.username != null || request.password != null) {\n const username = request.username ?? \"\";\n const password = request.password ?? \"\";\n auth = `${username}:${password}`;\n }\n let path = request.path;\n if (queryString) {\n path += `?${queryString}`;\n }\n if (request.fragment) {\n path += `#${request.fragment}`;\n }\n const nodeHttpsOptions = {\n headers: request.headers,\n host: request.hostname,\n method: request.method,\n path,\n port: request.port,\n agent,\n auth\n };\n const requestFunc = isSSL ? import_https.request : import_http.request;\n const req = requestFunc(nodeHttpsOptions, (res) => {\n const httpResponse = new import_protocol_http.HttpResponse({\n statusCode: res.statusCode || -1,\n reason: res.statusMessage,\n headers: getTransformedHeaders(res.headers),\n body: res\n });\n resolve({ response: httpResponse });\n });\n req.on(\"error\", (err) => {\n if (NODEJS_TIMEOUT_ERROR_CODES.includes(err.code)) {\n reject(Object.assign(err, { name: \"TimeoutError\" }));\n } else {\n reject(err);\n }\n });\n setConnectionTimeout(req, reject, this.config.connectionTimeout);\n setSocketTimeout(req, reject, this.config.requestTimeout);\n if (abortSignal) {\n abortSignal.onabort = () => {\n req.abort();\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n reject(abortError);\n };\n }\n const httpAgent = nodeHttpsOptions.agent;\n if (typeof httpAgent === \"object\" && \"keepAlive\" in httpAgent) {\n setSocketKeepAlive(req, {\n // @ts-expect-error keepAlive is not public on httpAgent.\n keepAlive: httpAgent.keepAlive,\n // @ts-expect-error keepAliveMsecs is not public on httpAgent.\n keepAliveMsecs: httpAgent.keepAliveMsecs\n });\n }\n writeRequestBodyPromise = writeRequestBody(req, request, this.config.requestTimeout).catch(_reject);\n });\n }\n updateHttpClientConfig(key, value) {\n this.config = void 0;\n this.configProvider = this.configProvider.then((config) => {\n return {\n ...config,\n [key]: value\n };\n });\n }\n httpHandlerConfigs() {\n return this.config ?? {};\n }\n};\n__name(_NodeHttpHandler, \"NodeHttpHandler\");\nvar NodeHttpHandler = _NodeHttpHandler;\n\n// src/node-http2-handler.ts\n\n\nvar import_http22 = require(\"http2\");\n\n// src/node-http2-connection-manager.ts\nvar import_http2 = __toESM(require(\"http2\"));\n\n// src/node-http2-connection-pool.ts\nvar _NodeHttp2ConnectionPool = class _NodeHttp2ConnectionPool {\n constructor(sessions) {\n this.sessions = [];\n this.sessions = sessions ?? [];\n }\n poll() {\n if (this.sessions.length > 0) {\n return this.sessions.shift();\n }\n }\n offerLast(session) {\n this.sessions.push(session);\n }\n contains(session) {\n return this.sessions.includes(session);\n }\n remove(session) {\n this.sessions = this.sessions.filter((s) => s !== session);\n }\n [Symbol.iterator]() {\n return this.sessions[Symbol.iterator]();\n }\n destroy(connection) {\n for (const session of this.sessions) {\n if (session === connection) {\n if (!session.destroyed) {\n session.destroy();\n }\n }\n }\n }\n};\n__name(_NodeHttp2ConnectionPool, \"NodeHttp2ConnectionPool\");\nvar NodeHttp2ConnectionPool = _NodeHttp2ConnectionPool;\n\n// src/node-http2-connection-manager.ts\nvar _NodeHttp2ConnectionManager = class _NodeHttp2ConnectionManager {\n constructor(config) {\n this.sessionCache = /* @__PURE__ */ new Map();\n this.config = config;\n if (this.config.maxConcurrency && this.config.maxConcurrency <= 0) {\n throw new RangeError(\"maxConcurrency must be greater than zero.\");\n }\n }\n lease(requestContext, connectionConfiguration) {\n const url = this.getUrlString(requestContext);\n const existingPool = this.sessionCache.get(url);\n if (existingPool) {\n const existingSession = existingPool.poll();\n if (existingSession && !this.config.disableConcurrency) {\n return existingSession;\n }\n }\n const session = import_http2.default.connect(url);\n if (this.config.maxConcurrency) {\n session.settings({ maxConcurrentStreams: this.config.maxConcurrency }, (err) => {\n if (err) {\n throw new Error(\n \"Fail to set maxConcurrentStreams to \" + this.config.maxConcurrency + \"when creating new session for \" + requestContext.destination.toString()\n );\n }\n });\n }\n session.unref();\n const destroySessionCb = /* @__PURE__ */ __name(() => {\n session.destroy();\n this.deleteSession(url, session);\n }, \"destroySessionCb\");\n session.on(\"goaway\", destroySessionCb);\n session.on(\"error\", destroySessionCb);\n session.on(\"frameError\", destroySessionCb);\n session.on(\"close\", () => this.deleteSession(url, session));\n if (connectionConfiguration.requestTimeout) {\n session.setTimeout(connectionConfiguration.requestTimeout, destroySessionCb);\n }\n const connectionPool = this.sessionCache.get(url) || new NodeHttp2ConnectionPool();\n connectionPool.offerLast(session);\n this.sessionCache.set(url, connectionPool);\n return session;\n }\n /**\n * Delete a session from the connection pool.\n * @param authority The authority of the session to delete.\n * @param session The session to delete.\n */\n deleteSession(authority, session) {\n const existingConnectionPool = this.sessionCache.get(authority);\n if (!existingConnectionPool) {\n return;\n }\n if (!existingConnectionPool.contains(session)) {\n return;\n }\n existingConnectionPool.remove(session);\n this.sessionCache.set(authority, existingConnectionPool);\n }\n release(requestContext, session) {\n var _a;\n const cacheKey = this.getUrlString(requestContext);\n (_a = this.sessionCache.get(cacheKey)) == null ? void 0 : _a.offerLast(session);\n }\n destroy() {\n for (const [key, connectionPool] of this.sessionCache) {\n for (const session of connectionPool) {\n if (!session.destroyed) {\n session.destroy();\n }\n connectionPool.remove(session);\n }\n this.sessionCache.delete(key);\n }\n }\n setMaxConcurrentStreams(maxConcurrentStreams) {\n if (this.config.maxConcurrency && this.config.maxConcurrency <= 0) {\n throw new RangeError(\"maxConcurrentStreams must be greater than zero.\");\n }\n this.config.maxConcurrency = maxConcurrentStreams;\n }\n setDisableConcurrentStreams(disableConcurrentStreams) {\n this.config.disableConcurrency = disableConcurrentStreams;\n }\n getUrlString(request) {\n return request.destination.toString();\n }\n};\n__name(_NodeHttp2ConnectionManager, \"NodeHttp2ConnectionManager\");\nvar NodeHttp2ConnectionManager = _NodeHttp2ConnectionManager;\n\n// src/node-http2-handler.ts\nvar _NodeHttp2Handler = class _NodeHttp2Handler {\n constructor(options) {\n this.metadata = { handlerProtocol: \"h2\" };\n this.connectionManager = new NodeHttp2ConnectionManager({});\n this.configProvider = new Promise((resolve, reject) => {\n if (typeof options === \"function\") {\n options().then((opts) => {\n resolve(opts || {});\n }).catch(reject);\n } else {\n resolve(options || {});\n }\n });\n }\n /**\n * @returns the input if it is an HttpHandler of any class,\n * or instantiates a new instance of this handler.\n */\n static create(instanceOrOptions) {\n if (typeof (instanceOrOptions == null ? void 0 : instanceOrOptions.handle) === \"function\") {\n return instanceOrOptions;\n }\n return new _NodeHttp2Handler(instanceOrOptions);\n }\n destroy() {\n this.connectionManager.destroy();\n }\n async handle(request, { abortSignal } = {}) {\n if (!this.config) {\n this.config = await this.configProvider;\n this.connectionManager.setDisableConcurrentStreams(this.config.disableConcurrentStreams || false);\n if (this.config.maxConcurrentStreams) {\n this.connectionManager.setMaxConcurrentStreams(this.config.maxConcurrentStreams);\n }\n }\n const { requestTimeout, disableConcurrentStreams } = this.config;\n return new Promise((_resolve, _reject) => {\n var _a;\n let fulfilled = false;\n let writeRequestBodyPromise = void 0;\n const resolve = /* @__PURE__ */ __name(async (arg) => {\n await writeRequestBodyPromise;\n _resolve(arg);\n }, \"resolve\");\n const reject = /* @__PURE__ */ __name(async (arg) => {\n await writeRequestBodyPromise;\n _reject(arg);\n }, \"reject\");\n if (abortSignal == null ? void 0 : abortSignal.aborted) {\n fulfilled = true;\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n reject(abortError);\n return;\n }\n const { hostname, method, port, protocol, query } = request;\n let auth = \"\";\n if (request.username != null || request.password != null) {\n const username = request.username ?? \"\";\n const password = request.password ?? \"\";\n auth = `${username}:${password}@`;\n }\n const authority = `${protocol}//${auth}${hostname}${port ? `:${port}` : \"\"}`;\n const requestContext = { destination: new URL(authority) };\n const session = this.connectionManager.lease(requestContext, {\n requestTimeout: (_a = this.config) == null ? void 0 : _a.sessionTimeout,\n disableConcurrentStreams: disableConcurrentStreams || false\n });\n const rejectWithDestroy = /* @__PURE__ */ __name((err) => {\n if (disableConcurrentStreams) {\n this.destroySession(session);\n }\n fulfilled = true;\n reject(err);\n }, \"rejectWithDestroy\");\n const queryString = (0, import_querystring_builder.buildQueryString)(query || {});\n let path = request.path;\n if (queryString) {\n path += `?${queryString}`;\n }\n if (request.fragment) {\n path += `#${request.fragment}`;\n }\n const req = session.request({\n ...request.headers,\n [import_http22.constants.HTTP2_HEADER_PATH]: path,\n [import_http22.constants.HTTP2_HEADER_METHOD]: method\n });\n session.ref();\n req.on(\"response\", (headers) => {\n const httpResponse = new import_protocol_http.HttpResponse({\n statusCode: headers[\":status\"] || -1,\n headers: getTransformedHeaders(headers),\n body: req\n });\n fulfilled = true;\n resolve({ response: httpResponse });\n if (disableConcurrentStreams) {\n session.close();\n this.connectionManager.deleteSession(authority, session);\n }\n });\n if (requestTimeout) {\n req.setTimeout(requestTimeout, () => {\n req.close();\n const timeoutError = new Error(`Stream timed out because of no activity for ${requestTimeout} ms`);\n timeoutError.name = \"TimeoutError\";\n rejectWithDestroy(timeoutError);\n });\n }\n if (abortSignal) {\n abortSignal.onabort = () => {\n req.close();\n const abortError = new Error(\"Request aborted\");\n abortError.name = \"AbortError\";\n rejectWithDestroy(abortError);\n };\n }\n req.on(\"frameError\", (type, code, id) => {\n rejectWithDestroy(new Error(`Frame type id ${type} in stream id ${id} has failed with code ${code}.`));\n });\n req.on(\"error\", rejectWithDestroy);\n req.on(\"aborted\", () => {\n rejectWithDestroy(\n new Error(`HTTP/2 stream is abnormally aborted in mid-communication with result code ${req.rstCode}.`)\n );\n });\n req.on(\"close\", () => {\n session.unref();\n if (disableConcurrentStreams) {\n session.destroy();\n }\n if (!fulfilled) {\n rejectWithDestroy(new Error(\"Unexpected error: http2 request did not get a response\"));\n }\n });\n writeRequestBodyPromise = writeRequestBody(req, request, requestTimeout);\n });\n }\n updateHttpClientConfig(key, value) {\n this.config = void 0;\n this.configProvider = this.configProvider.then((config) => {\n return {\n ...config,\n [key]: value\n };\n });\n }\n httpHandlerConfigs() {\n return this.config ?? {};\n }\n /**\n * Destroys a session.\n * @param session The session to destroy.\n */\n destroySession(session) {\n if (!session.destroyed) {\n session.destroy();\n }\n }\n};\n__name(_NodeHttp2Handler, \"NodeHttp2Handler\");\nvar NodeHttp2Handler = _NodeHttp2Handler;\n\n// src/stream-collector/collector.ts\n\nvar _Collector = class _Collector extends import_stream.Writable {\n constructor() {\n super(...arguments);\n this.bufferedBytes = [];\n }\n _write(chunk, encoding, callback) {\n this.bufferedBytes.push(chunk);\n callback();\n }\n};\n__name(_Collector, \"Collector\");\nvar Collector = _Collector;\n\n// src/stream-collector/index.ts\nvar streamCollector = /* @__PURE__ */ __name((stream) => new Promise((resolve, reject) => {\n const collector = new Collector();\n stream.pipe(collector);\n stream.on(\"error\", (err) => {\n collector.end();\n reject(err);\n });\n collector.on(\"error\", reject);\n collector.on(\"finish\", function() {\n const bytes = new Uint8Array(Buffer.concat(this.bufferedBytes));\n resolve(bytes);\n });\n}), \"streamCollector\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n DEFAULT_REQUEST_TIMEOUT,\n NodeHttpHandler,\n NodeHttp2Handler,\n streamCollector\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n CredentialsProviderError: () => CredentialsProviderError,\n ProviderError: () => ProviderError,\n TokenProviderError: () => TokenProviderError,\n chain: () => chain,\n fromStatic: () => fromStatic,\n memoize: () => memoize\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/ProviderError.ts\nvar _ProviderError = class _ProviderError extends Error {\n constructor(message, tryNextLink = true) {\n super(message);\n this.tryNextLink = tryNextLink;\n this.name = \"ProviderError\";\n Object.setPrototypeOf(this, _ProviderError.prototype);\n }\n static from(error, tryNextLink = true) {\n return Object.assign(new this(error.message, tryNextLink), error);\n }\n};\n__name(_ProviderError, \"ProviderError\");\nvar ProviderError = _ProviderError;\n\n// src/CredentialsProviderError.ts\nvar _CredentialsProviderError = class _CredentialsProviderError extends ProviderError {\n constructor(message, tryNextLink = true) {\n super(message, tryNextLink);\n this.tryNextLink = tryNextLink;\n this.name = \"CredentialsProviderError\";\n Object.setPrototypeOf(this, _CredentialsProviderError.prototype);\n }\n};\n__name(_CredentialsProviderError, \"CredentialsProviderError\");\nvar CredentialsProviderError = _CredentialsProviderError;\n\n// src/TokenProviderError.ts\nvar _TokenProviderError = class _TokenProviderError extends ProviderError {\n constructor(message, tryNextLink = true) {\n super(message, tryNextLink);\n this.tryNextLink = tryNextLink;\n this.name = \"TokenProviderError\";\n Object.setPrototypeOf(this, _TokenProviderError.prototype);\n }\n};\n__name(_TokenProviderError, \"TokenProviderError\");\nvar TokenProviderError = _TokenProviderError;\n\n// src/chain.ts\nvar chain = /* @__PURE__ */ __name((...providers) => async () => {\n if (providers.length === 0) {\n throw new ProviderError(\"No providers in chain\");\n }\n let lastProviderError;\n for (const provider of providers) {\n try {\n const credentials = await provider();\n return credentials;\n } catch (err) {\n lastProviderError = err;\n if (err == null ? void 0 : err.tryNextLink) {\n continue;\n }\n throw err;\n }\n }\n throw lastProviderError;\n}, \"chain\");\n\n// src/fromStatic.ts\nvar fromStatic = /* @__PURE__ */ __name((staticValue) => () => Promise.resolve(staticValue), \"fromStatic\");\n\n// src/memoize.ts\nvar memoize = /* @__PURE__ */ __name((provider, isExpired, requiresRefresh) => {\n let resolved;\n let pending;\n let hasResult;\n let isConstant = false;\n const coalesceProvider = /* @__PURE__ */ __name(async () => {\n if (!pending) {\n pending = provider();\n }\n try {\n resolved = await pending;\n hasResult = true;\n isConstant = false;\n } finally {\n pending = void 0;\n }\n return resolved;\n }, \"coalesceProvider\");\n if (isExpired === void 0) {\n return async (options) => {\n if (!hasResult || (options == null ? void 0 : options.forceRefresh)) {\n resolved = await coalesceProvider();\n }\n return resolved;\n };\n }\n return async (options) => {\n if (!hasResult || (options == null ? void 0 : options.forceRefresh)) {\n resolved = await coalesceProvider();\n }\n if (isConstant) {\n return resolved;\n }\n if (requiresRefresh && !requiresRefresh(resolved)) {\n isConstant = true;\n return resolved;\n }\n if (isExpired(resolved)) {\n await coalesceProvider();\n return resolved;\n }\n return resolved;\n };\n}, \"memoize\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n CredentialsProviderError,\n ProviderError,\n TokenProviderError,\n chain,\n fromStatic,\n memoize\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n Field: () => Field,\n Fields: () => Fields,\n HttpRequest: () => HttpRequest,\n HttpResponse: () => HttpResponse,\n getHttpHandlerExtensionConfiguration: () => getHttpHandlerExtensionConfiguration,\n isValidHostname: () => isValidHostname,\n resolveHttpHandlerRuntimeConfig: () => resolveHttpHandlerRuntimeConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/extensions/httpExtensionConfiguration.ts\nvar getHttpHandlerExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n let httpHandler = runtimeConfig.httpHandler;\n return {\n setHttpHandler(handler) {\n httpHandler = handler;\n },\n httpHandler() {\n return httpHandler;\n },\n updateHttpClientConfig(key, value) {\n httpHandler.updateHttpClientConfig(key, value);\n },\n httpHandlerConfigs() {\n return httpHandler.httpHandlerConfigs();\n }\n };\n}, \"getHttpHandlerExtensionConfiguration\");\nvar resolveHttpHandlerRuntimeConfig = /* @__PURE__ */ __name((httpHandlerExtensionConfiguration) => {\n return {\n httpHandler: httpHandlerExtensionConfiguration.httpHandler()\n };\n}, \"resolveHttpHandlerRuntimeConfig\");\n\n// src/Field.ts\nvar import_types = require(\"@smithy/types\");\nvar _Field = class _Field {\n constructor({ name, kind = import_types.FieldPosition.HEADER, values = [] }) {\n this.name = name;\n this.kind = kind;\n this.values = values;\n }\n /**\n * Appends a value to the field.\n *\n * @param value The value to append.\n */\n add(value) {\n this.values.push(value);\n }\n /**\n * Overwrite existing field values.\n *\n * @param values The new field values.\n */\n set(values) {\n this.values = values;\n }\n /**\n * Remove all matching entries from list.\n *\n * @param value Value to remove.\n */\n remove(value) {\n this.values = this.values.filter((v) => v !== value);\n }\n /**\n * Get comma-delimited string.\n *\n * @returns String representation of {@link Field}.\n */\n toString() {\n return this.values.map((v) => v.includes(\",\") || v.includes(\" \") ? `\"${v}\"` : v).join(\", \");\n }\n /**\n * Get string values as a list\n *\n * @returns Values in {@link Field} as a list.\n */\n get() {\n return this.values;\n }\n};\n__name(_Field, \"Field\");\nvar Field = _Field;\n\n// src/Fields.ts\nvar _Fields = class _Fields {\n constructor({ fields = [], encoding = \"utf-8\" }) {\n this.entries = {};\n fields.forEach(this.setField.bind(this));\n this.encoding = encoding;\n }\n /**\n * Set entry for a {@link Field} name. The `name`\n * attribute will be used to key the collection.\n *\n * @param field The {@link Field} to set.\n */\n setField(field) {\n this.entries[field.name.toLowerCase()] = field;\n }\n /**\n * Retrieve {@link Field} entry by name.\n *\n * @param name The name of the {@link Field} entry\n * to retrieve\n * @returns The {@link Field} if it exists.\n */\n getField(name) {\n return this.entries[name.toLowerCase()];\n }\n /**\n * Delete entry from collection.\n *\n * @param name Name of the entry to delete.\n */\n removeField(name) {\n delete this.entries[name.toLowerCase()];\n }\n /**\n * Helper function for retrieving specific types of fields.\n * Used to grab all headers or all trailers.\n *\n * @param kind {@link FieldPosition} of entries to retrieve.\n * @returns The {@link Field} entries with the specified\n * {@link FieldPosition}.\n */\n getByType(kind) {\n return Object.values(this.entries).filter((field) => field.kind === kind);\n }\n};\n__name(_Fields, \"Fields\");\nvar Fields = _Fields;\n\n// src/httpRequest.ts\nvar _HttpRequest = class _HttpRequest {\n constructor(options) {\n this.method = options.method || \"GET\";\n this.hostname = options.hostname || \"localhost\";\n this.port = options.port;\n this.query = options.query || {};\n this.headers = options.headers || {};\n this.body = options.body;\n this.protocol = options.protocol ? options.protocol.slice(-1) !== \":\" ? `${options.protocol}:` : options.protocol : \"https:\";\n this.path = options.path ? options.path.charAt(0) !== \"/\" ? `/${options.path}` : options.path : \"/\";\n this.username = options.username;\n this.password = options.password;\n this.fragment = options.fragment;\n }\n static isInstance(request) {\n if (!request)\n return false;\n const req = request;\n return \"method\" in req && \"protocol\" in req && \"hostname\" in req && \"path\" in req && typeof req[\"query\"] === \"object\" && typeof req[\"headers\"] === \"object\";\n }\n clone() {\n const cloned = new _HttpRequest({\n ...this,\n headers: { ...this.headers }\n });\n if (cloned.query)\n cloned.query = cloneQuery(cloned.query);\n return cloned;\n }\n};\n__name(_HttpRequest, \"HttpRequest\");\nvar HttpRequest = _HttpRequest;\nfunction cloneQuery(query) {\n return Object.keys(query).reduce((carry, paramName) => {\n const param = query[paramName];\n return {\n ...carry,\n [paramName]: Array.isArray(param) ? [...param] : param\n };\n }, {});\n}\n__name(cloneQuery, \"cloneQuery\");\n\n// src/httpResponse.ts\nvar _HttpResponse = class _HttpResponse {\n constructor(options) {\n this.statusCode = options.statusCode;\n this.reason = options.reason;\n this.headers = options.headers || {};\n this.body = options.body;\n }\n static isInstance(response) {\n if (!response)\n return false;\n const resp = response;\n return typeof resp.statusCode === \"number\" && typeof resp.headers === \"object\";\n }\n};\n__name(_HttpResponse, \"HttpResponse\");\nvar HttpResponse = _HttpResponse;\n\n// src/isValidHostname.ts\nfunction isValidHostname(hostname) {\n const hostPattern = /^[a-z0-9][a-z0-9\\.\\-]*[a-z0-9]$/;\n return hostPattern.test(hostname);\n}\n__name(isValidHostname, \"isValidHostname\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n getHttpHandlerExtensionConfiguration,\n resolveHttpHandlerRuntimeConfig,\n Field,\n Fields,\n HttpRequest,\n HttpResponse,\n isValidHostname\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n buildQueryString: () => buildQueryString\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_util_uri_escape = require(\"@smithy/util-uri-escape\");\nfunction buildQueryString(query) {\n const parts = [];\n for (let key of Object.keys(query).sort()) {\n const value = query[key];\n key = (0, import_util_uri_escape.escapeUri)(key);\n if (Array.isArray(value)) {\n for (let i = 0, iLen = value.length; i < iLen; i++) {\n parts.push(`${key}=${(0, import_util_uri_escape.escapeUri)(value[i])}`);\n }\n } else {\n let qsEntry = key;\n if (value || typeof value === \"string\") {\n qsEntry += `=${(0, import_util_uri_escape.escapeUri)(value)}`;\n }\n parts.push(qsEntry);\n }\n }\n return parts.join(\"&\");\n}\n__name(buildQueryString, \"buildQueryString\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n buildQueryString\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n parseQueryString: () => parseQueryString\n});\nmodule.exports = __toCommonJS(src_exports);\nfunction parseQueryString(querystring) {\n const query = {};\n querystring = querystring.replace(/^\\?/, \"\");\n if (querystring) {\n for (const pair of querystring.split(\"&\")) {\n let [key, value = null] = pair.split(\"=\");\n key = decodeURIComponent(key);\n if (value) {\n value = decodeURIComponent(value);\n }\n if (!(key in query)) {\n query[key] = value;\n } else if (Array.isArray(query[key])) {\n query[key].push(value);\n } else {\n query[key] = [query[key], value];\n }\n }\n }\n return query;\n}\n__name(parseQueryString, \"parseQueryString\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n parseQueryString\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n isClockSkewCorrectedError: () => isClockSkewCorrectedError,\n isClockSkewError: () => isClockSkewError,\n isRetryableByTrait: () => isRetryableByTrait,\n isServerError: () => isServerError,\n isThrottlingError: () => isThrottlingError,\n isTransientError: () => isTransientError\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/constants.ts\nvar CLOCK_SKEW_ERROR_CODES = [\n \"AuthFailure\",\n \"InvalidSignatureException\",\n \"RequestExpired\",\n \"RequestInTheFuture\",\n \"RequestTimeTooSkewed\",\n \"SignatureDoesNotMatch\"\n];\nvar THROTTLING_ERROR_CODES = [\n \"BandwidthLimitExceeded\",\n \"EC2ThrottledException\",\n \"LimitExceededException\",\n \"PriorRequestNotComplete\",\n \"ProvisionedThroughputExceededException\",\n \"RequestLimitExceeded\",\n \"RequestThrottled\",\n \"RequestThrottledException\",\n \"SlowDown\",\n \"ThrottledException\",\n \"Throttling\",\n \"ThrottlingException\",\n \"TooManyRequestsException\",\n \"TransactionInProgressException\"\n // DynamoDB\n];\nvar TRANSIENT_ERROR_CODES = [\"TimeoutError\", \"RequestTimeout\", \"RequestTimeoutException\"];\nvar TRANSIENT_ERROR_STATUS_CODES = [500, 502, 503, 504];\nvar NODEJS_TIMEOUT_ERROR_CODES = [\"ECONNRESET\", \"ECONNREFUSED\", \"EPIPE\", \"ETIMEDOUT\"];\n\n// src/index.ts\nvar isRetryableByTrait = /* @__PURE__ */ __name((error) => error.$retryable !== void 0, \"isRetryableByTrait\");\nvar isClockSkewError = /* @__PURE__ */ __name((error) => CLOCK_SKEW_ERROR_CODES.includes(error.name), \"isClockSkewError\");\nvar isClockSkewCorrectedError = /* @__PURE__ */ __name((error) => {\n var _a;\n return (_a = error.$metadata) == null ? void 0 : _a.clockSkewCorrected;\n}, \"isClockSkewCorrectedError\");\nvar isThrottlingError = /* @__PURE__ */ __name((error) => {\n var _a, _b;\n return ((_a = error.$metadata) == null ? void 0 : _a.httpStatusCode) === 429 || THROTTLING_ERROR_CODES.includes(error.name) || ((_b = error.$retryable) == null ? void 0 : _b.throttling) == true;\n}, \"isThrottlingError\");\nvar isTransientError = /* @__PURE__ */ __name((error) => {\n var _a;\n return isClockSkewCorrectedError(error) || TRANSIENT_ERROR_CODES.includes(error.name) || NODEJS_TIMEOUT_ERROR_CODES.includes((error == null ? void 0 : error.code) || \"\") || TRANSIENT_ERROR_STATUS_CODES.includes(((_a = error.$metadata) == null ? void 0 : _a.httpStatusCode) || 0);\n}, \"isTransientError\");\nvar isServerError = /* @__PURE__ */ __name((error) => {\n var _a;\n if (((_a = error.$metadata) == null ? void 0 : _a.httpStatusCode) !== void 0) {\n const statusCode = error.$metadata.httpStatusCode;\n if (500 <= statusCode && statusCode <= 599 && !isTransientError(error)) {\n return true;\n }\n return false;\n }\n return false;\n}, \"isServerError\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n isRetryableByTrait,\n isClockSkewError,\n isClockSkewCorrectedError,\n isThrottlingError,\n isTransientError,\n isServerError\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getHomeDir = void 0;\nconst os_1 = require(\"os\");\nconst path_1 = require(\"path\");\nconst homeDirCache = {};\nconst getHomeDirCacheKey = () => {\n if (process && process.geteuid) {\n return `${process.geteuid()}`;\n }\n return \"DEFAULT\";\n};\nconst getHomeDir = () => {\n const { HOME, USERPROFILE, HOMEPATH, HOMEDRIVE = `C:${path_1.sep}` } = process.env;\n if (HOME)\n return HOME;\n if (USERPROFILE)\n return USERPROFILE;\n if (HOMEPATH)\n return `${HOMEDRIVE}${HOMEPATH}`;\n const homeDirCacheKey = getHomeDirCacheKey();\n if (!homeDirCache[homeDirCacheKey])\n homeDirCache[homeDirCacheKey] = (0, os_1.homedir)();\n return homeDirCache[homeDirCacheKey];\n};\nexports.getHomeDir = getHomeDir;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSSOTokenFilepath = void 0;\nconst crypto_1 = require(\"crypto\");\nconst path_1 = require(\"path\");\nconst getHomeDir_1 = require(\"./getHomeDir\");\nconst getSSOTokenFilepath = (id) => {\n const hasher = (0, crypto_1.createHash)(\"sha1\");\n const cacheName = hasher.update(id).digest(\"hex\");\n return (0, path_1.join)((0, getHomeDir_1.getHomeDir)(), \".aws\", \"sso\", \"cache\", `${cacheName}.json`);\n};\nexports.getSSOTokenFilepath = getSSOTokenFilepath;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSSOTokenFromFile = void 0;\nconst fs_1 = require(\"fs\");\nconst getSSOTokenFilepath_1 = require(\"./getSSOTokenFilepath\");\nconst { readFile } = fs_1.promises;\nconst getSSOTokenFromFile = async (id) => {\n const ssoTokenFilepath = (0, getSSOTokenFilepath_1.getSSOTokenFilepath)(id);\n const ssoTokenText = await readFile(ssoTokenFilepath, \"utf8\");\n return JSON.parse(ssoTokenText);\n};\nexports.getSSOTokenFromFile = getSSOTokenFromFile;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n CONFIG_PREFIX_SEPARATOR: () => CONFIG_PREFIX_SEPARATOR,\n DEFAULT_PROFILE: () => DEFAULT_PROFILE,\n ENV_PROFILE: () => ENV_PROFILE,\n getProfileName: () => getProfileName,\n loadSharedConfigFiles: () => loadSharedConfigFiles,\n loadSsoSessionData: () => loadSsoSessionData,\n parseKnownFiles: () => parseKnownFiles\n});\nmodule.exports = __toCommonJS(src_exports);\n__reExport(src_exports, require(\"././getHomeDir\"), module.exports);\n\n// src/getProfileName.ts\nvar ENV_PROFILE = \"AWS_PROFILE\";\nvar DEFAULT_PROFILE = \"default\";\nvar getProfileName = /* @__PURE__ */ __name((init) => init.profile || process.env[ENV_PROFILE] || DEFAULT_PROFILE, \"getProfileName\");\n\n// src/index.ts\n__reExport(src_exports, require(\"././getSSOTokenFilepath\"), module.exports);\n__reExport(src_exports, require(\"././getSSOTokenFromFile\"), module.exports);\n\n// src/getConfigData.ts\nvar import_types = require(\"@smithy/types\");\nvar getConfigData = /* @__PURE__ */ __name((data) => Object.entries(data).filter(([key]) => {\n const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR);\n if (indexOfSeparator === -1) {\n return false;\n }\n return Object.values(import_types.IniSectionType).includes(key.substring(0, indexOfSeparator));\n}).reduce(\n (acc, [key, value]) => {\n const indexOfSeparator = key.indexOf(CONFIG_PREFIX_SEPARATOR);\n const updatedKey = key.substring(0, indexOfSeparator) === import_types.IniSectionType.PROFILE ? key.substring(indexOfSeparator + 1) : key;\n acc[updatedKey] = value;\n return acc;\n },\n {\n // Populate default profile, if present.\n ...data.default && { default: data.default }\n }\n), \"getConfigData\");\n\n// src/getConfigFilepath.ts\nvar import_path = require(\"path\");\nvar import_getHomeDir = require(\"././getHomeDir\");\nvar ENV_CONFIG_PATH = \"AWS_CONFIG_FILE\";\nvar getConfigFilepath = /* @__PURE__ */ __name(() => process.env[ENV_CONFIG_PATH] || (0, import_path.join)((0, import_getHomeDir.getHomeDir)(), \".aws\", \"config\"), \"getConfigFilepath\");\n\n// src/getCredentialsFilepath.ts\n\nvar import_getHomeDir2 = require(\"././getHomeDir\");\nvar ENV_CREDENTIALS_PATH = \"AWS_SHARED_CREDENTIALS_FILE\";\nvar getCredentialsFilepath = /* @__PURE__ */ __name(() => process.env[ENV_CREDENTIALS_PATH] || (0, import_path.join)((0, import_getHomeDir2.getHomeDir)(), \".aws\", \"credentials\"), \"getCredentialsFilepath\");\n\n// src/parseIni.ts\n\nvar prefixKeyRegex = /^([\\w-]+)\\s([\"'])?([\\w-@\\+\\.%:/]+)\\2$/;\nvar profileNameBlockList = [\"__proto__\", \"profile __proto__\"];\nvar parseIni = /* @__PURE__ */ __name((iniData) => {\n const map = {};\n let currentSection;\n let currentSubSection;\n for (const iniLine of iniData.split(/\\r?\\n/)) {\n const trimmedLine = iniLine.split(/(^|\\s)[;#]/)[0].trim();\n const isSection = trimmedLine[0] === \"[\" && trimmedLine[trimmedLine.length - 1] === \"]\";\n if (isSection) {\n currentSection = void 0;\n currentSubSection = void 0;\n const sectionName = trimmedLine.substring(1, trimmedLine.length - 1);\n const matches = prefixKeyRegex.exec(sectionName);\n if (matches) {\n const [, prefix, , name] = matches;\n if (Object.values(import_types.IniSectionType).includes(prefix)) {\n currentSection = [prefix, name].join(CONFIG_PREFIX_SEPARATOR);\n }\n } else {\n currentSection = sectionName;\n }\n if (profileNameBlockList.includes(sectionName)) {\n throw new Error(`Found invalid profile name \"${sectionName}\"`);\n }\n } else if (currentSection) {\n const indexOfEqualsSign = trimmedLine.indexOf(\"=\");\n if (![0, -1].includes(indexOfEqualsSign)) {\n const [name, value] = [\n trimmedLine.substring(0, indexOfEqualsSign).trim(),\n trimmedLine.substring(indexOfEqualsSign + 1).trim()\n ];\n if (value === \"\") {\n currentSubSection = name;\n } else {\n if (currentSubSection && iniLine.trimStart() === iniLine) {\n currentSubSection = void 0;\n }\n map[currentSection] = map[currentSection] || {};\n const key = currentSubSection ? [currentSubSection, name].join(CONFIG_PREFIX_SEPARATOR) : name;\n map[currentSection][key] = value;\n }\n }\n }\n }\n return map;\n}, \"parseIni\");\n\n// src/loadSharedConfigFiles.ts\nvar import_slurpFile = require(\"././slurpFile\");\nvar swallowError = /* @__PURE__ */ __name(() => ({}), \"swallowError\");\nvar CONFIG_PREFIX_SEPARATOR = \".\";\nvar loadSharedConfigFiles = /* @__PURE__ */ __name(async (init = {}) => {\n const { filepath = getCredentialsFilepath(), configFilepath = getConfigFilepath() } = init;\n const parsedFiles = await Promise.all([\n (0, import_slurpFile.slurpFile)(configFilepath, {\n ignoreCache: init.ignoreCache\n }).then(parseIni).then(getConfigData).catch(swallowError),\n (0, import_slurpFile.slurpFile)(filepath, {\n ignoreCache: init.ignoreCache\n }).then(parseIni).catch(swallowError)\n ]);\n return {\n configFile: parsedFiles[0],\n credentialsFile: parsedFiles[1]\n };\n}, \"loadSharedConfigFiles\");\n\n// src/getSsoSessionData.ts\n\nvar getSsoSessionData = /* @__PURE__ */ __name((data) => Object.entries(data).filter(([key]) => key.startsWith(import_types.IniSectionType.SSO_SESSION + CONFIG_PREFIX_SEPARATOR)).reduce((acc, [key, value]) => ({ ...acc, [key.substring(key.indexOf(CONFIG_PREFIX_SEPARATOR) + 1)]: value }), {}), \"getSsoSessionData\");\n\n// src/loadSsoSessionData.ts\nvar import_slurpFile2 = require(\"././slurpFile\");\nvar swallowError2 = /* @__PURE__ */ __name(() => ({}), \"swallowError\");\nvar loadSsoSessionData = /* @__PURE__ */ __name(async (init = {}) => (0, import_slurpFile2.slurpFile)(init.configFilepath ?? getConfigFilepath()).then(parseIni).then(getSsoSessionData).catch(swallowError2), \"loadSsoSessionData\");\n\n// src/mergeConfigFiles.ts\nvar mergeConfigFiles = /* @__PURE__ */ __name((...files) => {\n const merged = {};\n for (const file of files) {\n for (const [key, values] of Object.entries(file)) {\n if (merged[key] !== void 0) {\n Object.assign(merged[key], values);\n } else {\n merged[key] = values;\n }\n }\n }\n return merged;\n}, \"mergeConfigFiles\");\n\n// src/parseKnownFiles.ts\nvar parseKnownFiles = /* @__PURE__ */ __name(async (init) => {\n const parsedFiles = await loadSharedConfigFiles(init);\n return mergeConfigFiles(parsedFiles.configFile, parsedFiles.credentialsFile);\n}, \"parseKnownFiles\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n getHomeDir,\n ENV_PROFILE,\n DEFAULT_PROFILE,\n getProfileName,\n getSSOTokenFilepath,\n getSSOTokenFromFile,\n CONFIG_PREFIX_SEPARATOR,\n loadSharedConfigFiles,\n loadSsoSessionData,\n parseKnownFiles\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.slurpFile = void 0;\nconst fs_1 = require(\"fs\");\nconst { readFile } = fs_1.promises;\nconst filePromisesHash = {};\nconst slurpFile = (path, options) => {\n if (!filePromisesHash[path] || (options === null || options === void 0 ? void 0 : options.ignoreCache)) {\n filePromisesHash[path] = readFile(path, \"utf8\");\n }\n return filePromisesHash[path];\n};\nexports.slurpFile = slurpFile;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n SignatureV4: () => SignatureV4,\n clearCredentialCache: () => clearCredentialCache,\n createScope: () => createScope,\n getCanonicalHeaders: () => getCanonicalHeaders,\n getCanonicalQuery: () => getCanonicalQuery,\n getPayloadHash: () => getPayloadHash,\n getSigningKey: () => getSigningKey,\n moveHeadersToQuery: () => moveHeadersToQuery,\n prepareRequest: () => prepareRequest\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/SignatureV4.ts\n\nvar import_util_middleware = require(\"@smithy/util-middleware\");\n\nvar import_util_utf84 = require(\"@smithy/util-utf8\");\n\n// src/constants.ts\nvar ALGORITHM_QUERY_PARAM = \"X-Amz-Algorithm\";\nvar CREDENTIAL_QUERY_PARAM = \"X-Amz-Credential\";\nvar AMZ_DATE_QUERY_PARAM = \"X-Amz-Date\";\nvar SIGNED_HEADERS_QUERY_PARAM = \"X-Amz-SignedHeaders\";\nvar EXPIRES_QUERY_PARAM = \"X-Amz-Expires\";\nvar SIGNATURE_QUERY_PARAM = \"X-Amz-Signature\";\nvar TOKEN_QUERY_PARAM = \"X-Amz-Security-Token\";\nvar AUTH_HEADER = \"authorization\";\nvar AMZ_DATE_HEADER = AMZ_DATE_QUERY_PARAM.toLowerCase();\nvar DATE_HEADER = \"date\";\nvar GENERATED_HEADERS = [AUTH_HEADER, AMZ_DATE_HEADER, DATE_HEADER];\nvar SIGNATURE_HEADER = SIGNATURE_QUERY_PARAM.toLowerCase();\nvar SHA256_HEADER = \"x-amz-content-sha256\";\nvar TOKEN_HEADER = TOKEN_QUERY_PARAM.toLowerCase();\nvar ALWAYS_UNSIGNABLE_HEADERS = {\n authorization: true,\n \"cache-control\": true,\n connection: true,\n expect: true,\n from: true,\n \"keep-alive\": true,\n \"max-forwards\": true,\n pragma: true,\n referer: true,\n te: true,\n trailer: true,\n \"transfer-encoding\": true,\n upgrade: true,\n \"user-agent\": true,\n \"x-amzn-trace-id\": true\n};\nvar PROXY_HEADER_PATTERN = /^proxy-/;\nvar SEC_HEADER_PATTERN = /^sec-/;\nvar ALGORITHM_IDENTIFIER = \"AWS4-HMAC-SHA256\";\nvar EVENT_ALGORITHM_IDENTIFIER = \"AWS4-HMAC-SHA256-PAYLOAD\";\nvar UNSIGNED_PAYLOAD = \"UNSIGNED-PAYLOAD\";\nvar MAX_CACHE_SIZE = 50;\nvar KEY_TYPE_IDENTIFIER = \"aws4_request\";\nvar MAX_PRESIGNED_TTL = 60 * 60 * 24 * 7;\n\n// src/credentialDerivation.ts\nvar import_util_hex_encoding = require(\"@smithy/util-hex-encoding\");\nvar import_util_utf8 = require(\"@smithy/util-utf8\");\nvar signingKeyCache = {};\nvar cacheQueue = [];\nvar createScope = /* @__PURE__ */ __name((shortDate, region, service) => `${shortDate}/${region}/${service}/${KEY_TYPE_IDENTIFIER}`, \"createScope\");\nvar getSigningKey = /* @__PURE__ */ __name(async (sha256Constructor, credentials, shortDate, region, service) => {\n const credsHash = await hmac(sha256Constructor, credentials.secretAccessKey, credentials.accessKeyId);\n const cacheKey = `${shortDate}:${region}:${service}:${(0, import_util_hex_encoding.toHex)(credsHash)}:${credentials.sessionToken}`;\n if (cacheKey in signingKeyCache) {\n return signingKeyCache[cacheKey];\n }\n cacheQueue.push(cacheKey);\n while (cacheQueue.length > MAX_CACHE_SIZE) {\n delete signingKeyCache[cacheQueue.shift()];\n }\n let key = `AWS4${credentials.secretAccessKey}`;\n for (const signable of [shortDate, region, service, KEY_TYPE_IDENTIFIER]) {\n key = await hmac(sha256Constructor, key, signable);\n }\n return signingKeyCache[cacheKey] = key;\n}, \"getSigningKey\");\nvar clearCredentialCache = /* @__PURE__ */ __name(() => {\n cacheQueue.length = 0;\n Object.keys(signingKeyCache).forEach((cacheKey) => {\n delete signingKeyCache[cacheKey];\n });\n}, \"clearCredentialCache\");\nvar hmac = /* @__PURE__ */ __name((ctor, secret, data) => {\n const hash = new ctor(secret);\n hash.update((0, import_util_utf8.toUint8Array)(data));\n return hash.digest();\n}, \"hmac\");\n\n// src/getCanonicalHeaders.ts\nvar getCanonicalHeaders = /* @__PURE__ */ __name(({ headers }, unsignableHeaders, signableHeaders) => {\n const canonical = {};\n for (const headerName of Object.keys(headers).sort()) {\n if (headers[headerName] == void 0) {\n continue;\n }\n const canonicalHeaderName = headerName.toLowerCase();\n if (canonicalHeaderName in ALWAYS_UNSIGNABLE_HEADERS || (unsignableHeaders == null ? void 0 : unsignableHeaders.has(canonicalHeaderName)) || PROXY_HEADER_PATTERN.test(canonicalHeaderName) || SEC_HEADER_PATTERN.test(canonicalHeaderName)) {\n if (!signableHeaders || signableHeaders && !signableHeaders.has(canonicalHeaderName)) {\n continue;\n }\n }\n canonical[canonicalHeaderName] = headers[headerName].trim().replace(/\\s+/g, \" \");\n }\n return canonical;\n}, \"getCanonicalHeaders\");\n\n// src/getCanonicalQuery.ts\nvar import_util_uri_escape = require(\"@smithy/util-uri-escape\");\nvar getCanonicalQuery = /* @__PURE__ */ __name(({ query = {} }) => {\n const keys = [];\n const serialized = {};\n for (const key of Object.keys(query).sort()) {\n if (key.toLowerCase() === SIGNATURE_HEADER) {\n continue;\n }\n keys.push(key);\n const value = query[key];\n if (typeof value === \"string\") {\n serialized[key] = `${(0, import_util_uri_escape.escapeUri)(key)}=${(0, import_util_uri_escape.escapeUri)(value)}`;\n } else if (Array.isArray(value)) {\n serialized[key] = value.slice(0).reduce(\n (encoded, value2) => encoded.concat([`${(0, import_util_uri_escape.escapeUri)(key)}=${(0, import_util_uri_escape.escapeUri)(value2)}`]),\n []\n ).sort().join(\"&\");\n }\n }\n return keys.map((key) => serialized[key]).filter((serialized2) => serialized2).join(\"&\");\n}, \"getCanonicalQuery\");\n\n// src/getPayloadHash.ts\nvar import_is_array_buffer = require(\"@smithy/is-array-buffer\");\n\nvar import_util_utf82 = require(\"@smithy/util-utf8\");\nvar getPayloadHash = /* @__PURE__ */ __name(async ({ headers, body }, hashConstructor) => {\n for (const headerName of Object.keys(headers)) {\n if (headerName.toLowerCase() === SHA256_HEADER) {\n return headers[headerName];\n }\n }\n if (body == void 0) {\n return \"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855\";\n } else if (typeof body === \"string\" || ArrayBuffer.isView(body) || (0, import_is_array_buffer.isArrayBuffer)(body)) {\n const hashCtor = new hashConstructor();\n hashCtor.update((0, import_util_utf82.toUint8Array)(body));\n return (0, import_util_hex_encoding.toHex)(await hashCtor.digest());\n }\n return UNSIGNED_PAYLOAD;\n}, \"getPayloadHash\");\n\n// src/HeaderFormatter.ts\n\nvar import_util_utf83 = require(\"@smithy/util-utf8\");\nvar _HeaderFormatter = class _HeaderFormatter {\n format(headers) {\n const chunks = [];\n for (const headerName of Object.keys(headers)) {\n const bytes = (0, import_util_utf83.fromUtf8)(headerName);\n chunks.push(Uint8Array.from([bytes.byteLength]), bytes, this.formatHeaderValue(headers[headerName]));\n }\n const out = new Uint8Array(chunks.reduce((carry, bytes) => carry + bytes.byteLength, 0));\n let position = 0;\n for (const chunk of chunks) {\n out.set(chunk, position);\n position += chunk.byteLength;\n }\n return out;\n }\n formatHeaderValue(header) {\n switch (header.type) {\n case \"boolean\":\n return Uint8Array.from([header.value ? 0 /* boolTrue */ : 1 /* boolFalse */]);\n case \"byte\":\n return Uint8Array.from([2 /* byte */, header.value]);\n case \"short\":\n const shortView = new DataView(new ArrayBuffer(3));\n shortView.setUint8(0, 3 /* short */);\n shortView.setInt16(1, header.value, false);\n return new Uint8Array(shortView.buffer);\n case \"integer\":\n const intView = new DataView(new ArrayBuffer(5));\n intView.setUint8(0, 4 /* integer */);\n intView.setInt32(1, header.value, false);\n return new Uint8Array(intView.buffer);\n case \"long\":\n const longBytes = new Uint8Array(9);\n longBytes[0] = 5 /* long */;\n longBytes.set(header.value.bytes, 1);\n return longBytes;\n case \"binary\":\n const binView = new DataView(new ArrayBuffer(3 + header.value.byteLength));\n binView.setUint8(0, 6 /* byteArray */);\n binView.setUint16(1, header.value.byteLength, false);\n const binBytes = new Uint8Array(binView.buffer);\n binBytes.set(header.value, 3);\n return binBytes;\n case \"string\":\n const utf8Bytes = (0, import_util_utf83.fromUtf8)(header.value);\n const strView = new DataView(new ArrayBuffer(3 + utf8Bytes.byteLength));\n strView.setUint8(0, 7 /* string */);\n strView.setUint16(1, utf8Bytes.byteLength, false);\n const strBytes = new Uint8Array(strView.buffer);\n strBytes.set(utf8Bytes, 3);\n return strBytes;\n case \"timestamp\":\n const tsBytes = new Uint8Array(9);\n tsBytes[0] = 8 /* timestamp */;\n tsBytes.set(Int64.fromNumber(header.value.valueOf()).bytes, 1);\n return tsBytes;\n case \"uuid\":\n if (!UUID_PATTERN.test(header.value)) {\n throw new Error(`Invalid UUID received: ${header.value}`);\n }\n const uuidBytes = new Uint8Array(17);\n uuidBytes[0] = 9 /* uuid */;\n uuidBytes.set((0, import_util_hex_encoding.fromHex)(header.value.replace(/\\-/g, \"\")), 1);\n return uuidBytes;\n }\n }\n};\n__name(_HeaderFormatter, \"HeaderFormatter\");\nvar HeaderFormatter = _HeaderFormatter;\nvar UUID_PATTERN = /^[a-f0-9]{8}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{4}-[a-f0-9]{12}$/;\nvar _Int64 = class _Int64 {\n constructor(bytes) {\n this.bytes = bytes;\n if (bytes.byteLength !== 8) {\n throw new Error(\"Int64 buffers must be exactly 8 bytes\");\n }\n }\n static fromNumber(number) {\n if (number > 9223372036854776e3 || number < -9223372036854776e3) {\n throw new Error(`${number} is too large (or, if negative, too small) to represent as an Int64`);\n }\n const bytes = new Uint8Array(8);\n for (let i = 7, remaining = Math.abs(Math.round(number)); i > -1 && remaining > 0; i--, remaining /= 256) {\n bytes[i] = remaining;\n }\n if (number < 0) {\n negate(bytes);\n }\n return new _Int64(bytes);\n }\n /**\n * Called implicitly by infix arithmetic operators.\n */\n valueOf() {\n const bytes = this.bytes.slice(0);\n const negative = bytes[0] & 128;\n if (negative) {\n negate(bytes);\n }\n return parseInt((0, import_util_hex_encoding.toHex)(bytes), 16) * (negative ? -1 : 1);\n }\n toString() {\n return String(this.valueOf());\n }\n};\n__name(_Int64, \"Int64\");\nvar Int64 = _Int64;\nfunction negate(bytes) {\n for (let i = 0; i < 8; i++) {\n bytes[i] ^= 255;\n }\n for (let i = 7; i > -1; i--) {\n bytes[i]++;\n if (bytes[i] !== 0)\n break;\n }\n}\n__name(negate, \"negate\");\n\n// src/headerUtil.ts\nvar hasHeader = /* @__PURE__ */ __name((soughtHeader, headers) => {\n soughtHeader = soughtHeader.toLowerCase();\n for (const headerName of Object.keys(headers)) {\n if (soughtHeader === headerName.toLowerCase()) {\n return true;\n }\n }\n return false;\n}, \"hasHeader\");\n\n// src/cloneRequest.ts\nvar cloneRequest = /* @__PURE__ */ __name(({ headers, query, ...rest }) => ({\n ...rest,\n headers: { ...headers },\n query: query ? cloneQuery(query) : void 0\n}), \"cloneRequest\");\nvar cloneQuery = /* @__PURE__ */ __name((query) => Object.keys(query).reduce((carry, paramName) => {\n const param = query[paramName];\n return {\n ...carry,\n [paramName]: Array.isArray(param) ? [...param] : param\n };\n}, {}), \"cloneQuery\");\n\n// src/moveHeadersToQuery.ts\nvar moveHeadersToQuery = /* @__PURE__ */ __name((request, options = {}) => {\n var _a;\n const { headers, query = {} } = typeof request.clone === \"function\" ? request.clone() : cloneRequest(request);\n for (const name of Object.keys(headers)) {\n const lname = name.toLowerCase();\n if (lname.slice(0, 6) === \"x-amz-\" && !((_a = options.unhoistableHeaders) == null ? void 0 : _a.has(lname))) {\n query[name] = headers[name];\n delete headers[name];\n }\n }\n return {\n ...request,\n headers,\n query\n };\n}, \"moveHeadersToQuery\");\n\n// src/prepareRequest.ts\nvar prepareRequest = /* @__PURE__ */ __name((request) => {\n request = typeof request.clone === \"function\" ? request.clone() : cloneRequest(request);\n for (const headerName of Object.keys(request.headers)) {\n if (GENERATED_HEADERS.indexOf(headerName.toLowerCase()) > -1) {\n delete request.headers[headerName];\n }\n }\n return request;\n}, \"prepareRequest\");\n\n// src/utilDate.ts\nvar iso8601 = /* @__PURE__ */ __name((time) => toDate(time).toISOString().replace(/\\.\\d{3}Z$/, \"Z\"), \"iso8601\");\nvar toDate = /* @__PURE__ */ __name((time) => {\n if (typeof time === \"number\") {\n return new Date(time * 1e3);\n }\n if (typeof time === \"string\") {\n if (Number(time)) {\n return new Date(Number(time) * 1e3);\n }\n return new Date(time);\n }\n return time;\n}, \"toDate\");\n\n// src/SignatureV4.ts\nvar _SignatureV4 = class _SignatureV4 {\n constructor({\n applyChecksum,\n credentials,\n region,\n service,\n sha256,\n uriEscapePath = true\n }) {\n this.headerFormatter = new HeaderFormatter();\n this.service = service;\n this.sha256 = sha256;\n this.uriEscapePath = uriEscapePath;\n this.applyChecksum = typeof applyChecksum === \"boolean\" ? applyChecksum : true;\n this.regionProvider = (0, import_util_middleware.normalizeProvider)(region);\n this.credentialProvider = (0, import_util_middleware.normalizeProvider)(credentials);\n }\n async presign(originalRequest, options = {}) {\n const {\n signingDate = /* @__PURE__ */ new Date(),\n expiresIn = 3600,\n unsignableHeaders,\n unhoistableHeaders,\n signableHeaders,\n signingRegion,\n signingService\n } = options;\n const credentials = await this.credentialProvider();\n this.validateResolvedCredentials(credentials);\n const region = signingRegion ?? await this.regionProvider();\n const { longDate, shortDate } = formatDate(signingDate);\n if (expiresIn > MAX_PRESIGNED_TTL) {\n return Promise.reject(\n \"Signature version 4 presigned URLs must have an expiration date less than one week in the future\"\n );\n }\n const scope = createScope(shortDate, region, signingService ?? this.service);\n const request = moveHeadersToQuery(prepareRequest(originalRequest), { unhoistableHeaders });\n if (credentials.sessionToken) {\n request.query[TOKEN_QUERY_PARAM] = credentials.sessionToken;\n }\n request.query[ALGORITHM_QUERY_PARAM] = ALGORITHM_IDENTIFIER;\n request.query[CREDENTIAL_QUERY_PARAM] = `${credentials.accessKeyId}/${scope}`;\n request.query[AMZ_DATE_QUERY_PARAM] = longDate;\n request.query[EXPIRES_QUERY_PARAM] = expiresIn.toString(10);\n const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders);\n request.query[SIGNED_HEADERS_QUERY_PARAM] = getCanonicalHeaderList(canonicalHeaders);\n request.query[SIGNATURE_QUERY_PARAM] = await this.getSignature(\n longDate,\n scope,\n this.getSigningKey(credentials, region, shortDate, signingService),\n this.createCanonicalRequest(request, canonicalHeaders, await getPayloadHash(originalRequest, this.sha256))\n );\n return request;\n }\n async sign(toSign, options) {\n if (typeof toSign === \"string\") {\n return this.signString(toSign, options);\n } else if (toSign.headers && toSign.payload) {\n return this.signEvent(toSign, options);\n } else if (toSign.message) {\n return this.signMessage(toSign, options);\n } else {\n return this.signRequest(toSign, options);\n }\n }\n async signEvent({ headers, payload }, { signingDate = /* @__PURE__ */ new Date(), priorSignature, signingRegion, signingService }) {\n const region = signingRegion ?? await this.regionProvider();\n const { shortDate, longDate } = formatDate(signingDate);\n const scope = createScope(shortDate, region, signingService ?? this.service);\n const hashedPayload = await getPayloadHash({ headers: {}, body: payload }, this.sha256);\n const hash = new this.sha256();\n hash.update(headers);\n const hashedHeaders = (0, import_util_hex_encoding.toHex)(await hash.digest());\n const stringToSign = [\n EVENT_ALGORITHM_IDENTIFIER,\n longDate,\n scope,\n priorSignature,\n hashedHeaders,\n hashedPayload\n ].join(\"\\n\");\n return this.signString(stringToSign, { signingDate, signingRegion: region, signingService });\n }\n async signMessage(signableMessage, { signingDate = /* @__PURE__ */ new Date(), signingRegion, signingService }) {\n const promise = this.signEvent(\n {\n headers: this.headerFormatter.format(signableMessage.message.headers),\n payload: signableMessage.message.body\n },\n {\n signingDate,\n signingRegion,\n signingService,\n priorSignature: signableMessage.priorSignature\n }\n );\n return promise.then((signature) => {\n return { message: signableMessage.message, signature };\n });\n }\n async signString(stringToSign, { signingDate = /* @__PURE__ */ new Date(), signingRegion, signingService } = {}) {\n const credentials = await this.credentialProvider();\n this.validateResolvedCredentials(credentials);\n const region = signingRegion ?? await this.regionProvider();\n const { shortDate } = formatDate(signingDate);\n const hash = new this.sha256(await this.getSigningKey(credentials, region, shortDate, signingService));\n hash.update((0, import_util_utf84.toUint8Array)(stringToSign));\n return (0, import_util_hex_encoding.toHex)(await hash.digest());\n }\n async signRequest(requestToSign, {\n signingDate = /* @__PURE__ */ new Date(),\n signableHeaders,\n unsignableHeaders,\n signingRegion,\n signingService\n } = {}) {\n const credentials = await this.credentialProvider();\n this.validateResolvedCredentials(credentials);\n const region = signingRegion ?? await this.regionProvider();\n const request = prepareRequest(requestToSign);\n const { longDate, shortDate } = formatDate(signingDate);\n const scope = createScope(shortDate, region, signingService ?? this.service);\n request.headers[AMZ_DATE_HEADER] = longDate;\n if (credentials.sessionToken) {\n request.headers[TOKEN_HEADER] = credentials.sessionToken;\n }\n const payloadHash = await getPayloadHash(request, this.sha256);\n if (!hasHeader(SHA256_HEADER, request.headers) && this.applyChecksum) {\n request.headers[SHA256_HEADER] = payloadHash;\n }\n const canonicalHeaders = getCanonicalHeaders(request, unsignableHeaders, signableHeaders);\n const signature = await this.getSignature(\n longDate,\n scope,\n this.getSigningKey(credentials, region, shortDate, signingService),\n this.createCanonicalRequest(request, canonicalHeaders, payloadHash)\n );\n request.headers[AUTH_HEADER] = `${ALGORITHM_IDENTIFIER} Credential=${credentials.accessKeyId}/${scope}, SignedHeaders=${getCanonicalHeaderList(canonicalHeaders)}, Signature=${signature}`;\n return request;\n }\n createCanonicalRequest(request, canonicalHeaders, payloadHash) {\n const sortedHeaders = Object.keys(canonicalHeaders).sort();\n return `${request.method}\n${this.getCanonicalPath(request)}\n${getCanonicalQuery(request)}\n${sortedHeaders.map((name) => `${name}:${canonicalHeaders[name]}`).join(\"\\n\")}\n\n${sortedHeaders.join(\";\")}\n${payloadHash}`;\n }\n async createStringToSign(longDate, credentialScope, canonicalRequest) {\n const hash = new this.sha256();\n hash.update((0, import_util_utf84.toUint8Array)(canonicalRequest));\n const hashedRequest = await hash.digest();\n return `${ALGORITHM_IDENTIFIER}\n${longDate}\n${credentialScope}\n${(0, import_util_hex_encoding.toHex)(hashedRequest)}`;\n }\n getCanonicalPath({ path }) {\n if (this.uriEscapePath) {\n const normalizedPathSegments = [];\n for (const pathSegment of path.split(\"/\")) {\n if ((pathSegment == null ? void 0 : pathSegment.length) === 0)\n continue;\n if (pathSegment === \".\")\n continue;\n if (pathSegment === \"..\") {\n normalizedPathSegments.pop();\n } else {\n normalizedPathSegments.push(pathSegment);\n }\n }\n const normalizedPath = `${(path == null ? void 0 : path.startsWith(\"/\")) ? \"/\" : \"\"}${normalizedPathSegments.join(\"/\")}${normalizedPathSegments.length > 0 && (path == null ? void 0 : path.endsWith(\"/\")) ? \"/\" : \"\"}`;\n const doubleEncoded = (0, import_util_uri_escape.escapeUri)(normalizedPath);\n return doubleEncoded.replace(/%2F/g, \"/\");\n }\n return path;\n }\n async getSignature(longDate, credentialScope, keyPromise, canonicalRequest) {\n const stringToSign = await this.createStringToSign(longDate, credentialScope, canonicalRequest);\n const hash = new this.sha256(await keyPromise);\n hash.update((0, import_util_utf84.toUint8Array)(stringToSign));\n return (0, import_util_hex_encoding.toHex)(await hash.digest());\n }\n getSigningKey(credentials, region, shortDate, service) {\n return getSigningKey(this.sha256, credentials, shortDate, region, service || this.service);\n }\n validateResolvedCredentials(credentials) {\n if (typeof credentials !== \"object\" || // @ts-expect-error: Property 'accessKeyId' does not exist on type 'object'.ts(2339)\n typeof credentials.accessKeyId !== \"string\" || // @ts-expect-error: Property 'secretAccessKey' does not exist on type 'object'.ts(2339)\n typeof credentials.secretAccessKey !== \"string\") {\n throw new Error(\"Resolved credential object is not valid\");\n }\n }\n};\n__name(_SignatureV4, \"SignatureV4\");\nvar SignatureV4 = _SignatureV4;\nvar formatDate = /* @__PURE__ */ __name((now) => {\n const longDate = iso8601(now).replace(/[\\-:]/g, \"\");\n return {\n longDate,\n shortDate: longDate.slice(0, 8)\n };\n}, \"formatDate\");\nvar getCanonicalHeaderList = /* @__PURE__ */ __name((headers) => Object.keys(headers).sort().join(\";\"), \"getCanonicalHeaderList\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n getCanonicalHeaders,\n getCanonicalQuery,\n getPayloadHash,\n moveHeadersToQuery,\n prepareRequest,\n SignatureV4,\n createScope,\n getSigningKey,\n clearCredentialCache\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n Client: () => Client,\n Command: () => Command,\n LazyJsonString: () => LazyJsonString,\n NoOpLogger: () => NoOpLogger,\n SENSITIVE_STRING: () => SENSITIVE_STRING,\n ServiceException: () => ServiceException,\n StringWrapper: () => StringWrapper,\n _json: () => _json,\n collectBody: () => collectBody,\n convertMap: () => convertMap,\n createAggregatedClient: () => createAggregatedClient,\n dateToUtcString: () => dateToUtcString,\n decorateServiceException: () => decorateServiceException,\n emitWarningIfUnsupportedVersion: () => emitWarningIfUnsupportedVersion,\n expectBoolean: () => expectBoolean,\n expectByte: () => expectByte,\n expectFloat32: () => expectFloat32,\n expectInt: () => expectInt,\n expectInt32: () => expectInt32,\n expectLong: () => expectLong,\n expectNonNull: () => expectNonNull,\n expectNumber: () => expectNumber,\n expectObject: () => expectObject,\n expectShort: () => expectShort,\n expectString: () => expectString,\n expectUnion: () => expectUnion,\n extendedEncodeURIComponent: () => extendedEncodeURIComponent,\n getArrayIfSingleItem: () => getArrayIfSingleItem,\n getDefaultClientConfiguration: () => getDefaultClientConfiguration,\n getDefaultExtensionConfiguration: () => getDefaultExtensionConfiguration,\n getValueFromTextNode: () => getValueFromTextNode,\n handleFloat: () => handleFloat,\n limitedParseDouble: () => limitedParseDouble,\n limitedParseFloat: () => limitedParseFloat,\n limitedParseFloat32: () => limitedParseFloat32,\n loadConfigsForDefaultMode: () => loadConfigsForDefaultMode,\n logger: () => logger,\n map: () => map,\n parseBoolean: () => parseBoolean,\n parseEpochTimestamp: () => parseEpochTimestamp,\n parseRfc3339DateTime: () => parseRfc3339DateTime,\n parseRfc3339DateTimeWithOffset: () => parseRfc3339DateTimeWithOffset,\n parseRfc7231DateTime: () => parseRfc7231DateTime,\n resolveDefaultRuntimeConfig: () => resolveDefaultRuntimeConfig,\n resolvedPath: () => resolvedPath,\n serializeFloat: () => serializeFloat,\n splitEvery: () => splitEvery,\n strictParseByte: () => strictParseByte,\n strictParseDouble: () => strictParseDouble,\n strictParseFloat: () => strictParseFloat,\n strictParseFloat32: () => strictParseFloat32,\n strictParseInt: () => strictParseInt,\n strictParseInt32: () => strictParseInt32,\n strictParseLong: () => strictParseLong,\n strictParseShort: () => strictParseShort,\n take: () => take,\n throwDefaultError: () => throwDefaultError,\n withBaseException: () => withBaseException\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/NoOpLogger.ts\nvar _NoOpLogger = class _NoOpLogger {\n trace() {\n }\n debug() {\n }\n info() {\n }\n warn() {\n }\n error() {\n }\n};\n__name(_NoOpLogger, \"NoOpLogger\");\nvar NoOpLogger = _NoOpLogger;\n\n// src/client.ts\nvar import_middleware_stack = require(\"@smithy/middleware-stack\");\nvar _Client = class _Client {\n constructor(config) {\n this.middlewareStack = (0, import_middleware_stack.constructStack)();\n this.config = config;\n }\n send(command, optionsOrCb, cb) {\n const options = typeof optionsOrCb !== \"function\" ? optionsOrCb : void 0;\n const callback = typeof optionsOrCb === \"function\" ? optionsOrCb : cb;\n const handler = command.resolveMiddleware(this.middlewareStack, this.config, options);\n if (callback) {\n handler(command).then(\n (result) => callback(null, result.output),\n (err) => callback(err)\n ).catch(\n // prevent any errors thrown in the callback from triggering an\n // unhandled promise rejection\n () => {\n }\n );\n } else {\n return handler(command).then((result) => result.output);\n }\n }\n destroy() {\n if (this.config.requestHandler.destroy)\n this.config.requestHandler.destroy();\n }\n};\n__name(_Client, \"Client\");\nvar Client = _Client;\n\n// src/collect-stream-body.ts\nvar import_util_stream = require(\"@smithy/util-stream\");\nvar collectBody = /* @__PURE__ */ __name(async (streamBody = new Uint8Array(), context) => {\n if (streamBody instanceof Uint8Array) {\n return import_util_stream.Uint8ArrayBlobAdapter.mutate(streamBody);\n }\n if (!streamBody) {\n return import_util_stream.Uint8ArrayBlobAdapter.mutate(new Uint8Array());\n }\n const fromContext = context.streamCollector(streamBody);\n return import_util_stream.Uint8ArrayBlobAdapter.mutate(await fromContext);\n}, \"collectBody\");\n\n// src/command.ts\n\nvar import_types = require(\"@smithy/types\");\nvar _Command = class _Command {\n constructor() {\n this.middlewareStack = (0, import_middleware_stack.constructStack)();\n }\n /**\n * Factory for Command ClassBuilder.\n * @internal\n */\n static classBuilder() {\n return new ClassBuilder();\n }\n /**\n * @internal\n */\n resolveMiddlewareWithContext(clientStack, configuration, options, {\n middlewareFn,\n clientName,\n commandName,\n inputFilterSensitiveLog,\n outputFilterSensitiveLog,\n smithyContext,\n additionalContext,\n CommandCtor\n }) {\n for (const mw of middlewareFn.bind(this)(CommandCtor, clientStack, configuration, options)) {\n this.middlewareStack.use(mw);\n }\n const stack = clientStack.concat(this.middlewareStack);\n const { logger: logger2 } = configuration;\n const handlerExecutionContext = {\n logger: logger2,\n clientName,\n commandName,\n inputFilterSensitiveLog,\n outputFilterSensitiveLog,\n [import_types.SMITHY_CONTEXT_KEY]: {\n ...smithyContext\n },\n ...additionalContext\n };\n const { requestHandler } = configuration;\n return stack.resolve(\n (request) => requestHandler.handle(request.request, options || {}),\n handlerExecutionContext\n );\n }\n};\n__name(_Command, \"Command\");\nvar Command = _Command;\nvar _ClassBuilder = class _ClassBuilder {\n constructor() {\n this._init = () => {\n };\n this._ep = {};\n this._middlewareFn = () => [];\n this._commandName = \"\";\n this._clientName = \"\";\n this._additionalContext = {};\n this._smithyContext = {};\n this._inputFilterSensitiveLog = (_) => _;\n this._outputFilterSensitiveLog = (_) => _;\n this._serializer = null;\n this._deserializer = null;\n }\n /**\n * Optional init callback.\n */\n init(cb) {\n this._init = cb;\n }\n /**\n * Set the endpoint parameter instructions.\n */\n ep(endpointParameterInstructions) {\n this._ep = endpointParameterInstructions;\n return this;\n }\n /**\n * Add any number of middleware.\n */\n m(middlewareSupplier) {\n this._middlewareFn = middlewareSupplier;\n return this;\n }\n /**\n * Set the initial handler execution context Smithy field.\n */\n s(service, operation, smithyContext = {}) {\n this._smithyContext = {\n service,\n operation,\n ...smithyContext\n };\n return this;\n }\n /**\n * Set the initial handler execution context.\n */\n c(additionalContext = {}) {\n this._additionalContext = additionalContext;\n return this;\n }\n /**\n * Set constant string identifiers for the operation.\n */\n n(clientName, commandName) {\n this._clientName = clientName;\n this._commandName = commandName;\n return this;\n }\n /**\n * Set the input and output sensistive log filters.\n */\n f(inputFilter = (_) => _, outputFilter = (_) => _) {\n this._inputFilterSensitiveLog = inputFilter;\n this._outputFilterSensitiveLog = outputFilter;\n return this;\n }\n /**\n * Sets the serializer.\n */\n ser(serializer) {\n this._serializer = serializer;\n return this;\n }\n /**\n * Sets the deserializer.\n */\n de(deserializer) {\n this._deserializer = deserializer;\n return this;\n }\n /**\n * @returns a Command class with the classBuilder properties.\n */\n build() {\n var _a;\n const closure = this;\n let CommandRef;\n return CommandRef = (_a = class extends Command {\n /**\n * @public\n */\n constructor(...[input]) {\n super();\n /**\n * @internal\n */\n // @ts-ignore used in middlewareFn closure.\n this.serialize = closure._serializer;\n /**\n * @internal\n */\n // @ts-ignore used in middlewareFn closure.\n this.deserialize = closure._deserializer;\n this.input = input ?? {};\n closure._init(this);\n }\n /**\n * @public\n */\n static getEndpointParameterInstructions() {\n return closure._ep;\n }\n /**\n * @internal\n */\n resolveMiddleware(stack, configuration, options) {\n return this.resolveMiddlewareWithContext(stack, configuration, options, {\n CommandCtor: CommandRef,\n middlewareFn: closure._middlewareFn,\n clientName: closure._clientName,\n commandName: closure._commandName,\n inputFilterSensitiveLog: closure._inputFilterSensitiveLog,\n outputFilterSensitiveLog: closure._outputFilterSensitiveLog,\n smithyContext: closure._smithyContext,\n additionalContext: closure._additionalContext\n });\n }\n }, __name(_a, \"CommandRef\"), _a);\n }\n};\n__name(_ClassBuilder, \"ClassBuilder\");\nvar ClassBuilder = _ClassBuilder;\n\n// src/constants.ts\nvar SENSITIVE_STRING = \"***SensitiveInformation***\";\n\n// src/create-aggregated-client.ts\nvar createAggregatedClient = /* @__PURE__ */ __name((commands, Client2) => {\n for (const command of Object.keys(commands)) {\n const CommandCtor = commands[command];\n const methodImpl = /* @__PURE__ */ __name(async function(args, optionsOrCb, cb) {\n const command2 = new CommandCtor(args);\n if (typeof optionsOrCb === \"function\") {\n this.send(command2, optionsOrCb);\n } else if (typeof cb === \"function\") {\n if (typeof optionsOrCb !== \"object\")\n throw new Error(`Expected http options but got ${typeof optionsOrCb}`);\n this.send(command2, optionsOrCb || {}, cb);\n } else {\n return this.send(command2, optionsOrCb);\n }\n }, \"methodImpl\");\n const methodName = (command[0].toLowerCase() + command.slice(1)).replace(/Command$/, \"\");\n Client2.prototype[methodName] = methodImpl;\n }\n}, \"createAggregatedClient\");\n\n// src/parse-utils.ts\nvar parseBoolean = /* @__PURE__ */ __name((value) => {\n switch (value) {\n case \"true\":\n return true;\n case \"false\":\n return false;\n default:\n throw new Error(`Unable to parse boolean value \"${value}\"`);\n }\n}, \"parseBoolean\");\nvar expectBoolean = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value === \"number\") {\n if (value === 0 || value === 1) {\n logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`));\n }\n if (value === 0) {\n return false;\n }\n if (value === 1) {\n return true;\n }\n }\n if (typeof value === \"string\") {\n const lower = value.toLowerCase();\n if (lower === \"false\" || lower === \"true\") {\n logger.warn(stackTraceWarning(`Expected boolean, got ${typeof value}: ${value}`));\n }\n if (lower === \"false\") {\n return false;\n }\n if (lower === \"true\") {\n return true;\n }\n }\n if (typeof value === \"boolean\") {\n return value;\n }\n throw new TypeError(`Expected boolean, got ${typeof value}: ${value}`);\n}, \"expectBoolean\");\nvar expectNumber = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value === \"string\") {\n const parsed = parseFloat(value);\n if (!Number.isNaN(parsed)) {\n if (String(parsed) !== String(value)) {\n logger.warn(stackTraceWarning(`Expected number but observed string: ${value}`));\n }\n return parsed;\n }\n }\n if (typeof value === \"number\") {\n return value;\n }\n throw new TypeError(`Expected number, got ${typeof value}: ${value}`);\n}, \"expectNumber\");\nvar MAX_FLOAT = Math.ceil(2 ** 127 * (2 - 2 ** -23));\nvar expectFloat32 = /* @__PURE__ */ __name((value) => {\n const expected = expectNumber(value);\n if (expected !== void 0 && !Number.isNaN(expected) && expected !== Infinity && expected !== -Infinity) {\n if (Math.abs(expected) > MAX_FLOAT) {\n throw new TypeError(`Expected 32-bit float, got ${value}`);\n }\n }\n return expected;\n}, \"expectFloat32\");\nvar expectLong = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (Number.isInteger(value) && !Number.isNaN(value)) {\n return value;\n }\n throw new TypeError(`Expected integer, got ${typeof value}: ${value}`);\n}, \"expectLong\");\nvar expectInt = expectLong;\nvar expectInt32 = /* @__PURE__ */ __name((value) => expectSizedInt(value, 32), \"expectInt32\");\nvar expectShort = /* @__PURE__ */ __name((value) => expectSizedInt(value, 16), \"expectShort\");\nvar expectByte = /* @__PURE__ */ __name((value) => expectSizedInt(value, 8), \"expectByte\");\nvar expectSizedInt = /* @__PURE__ */ __name((value, size) => {\n const expected = expectLong(value);\n if (expected !== void 0 && castInt(expected, size) !== expected) {\n throw new TypeError(`Expected ${size}-bit integer, got ${value}`);\n }\n return expected;\n}, \"expectSizedInt\");\nvar castInt = /* @__PURE__ */ __name((value, size) => {\n switch (size) {\n case 32:\n return Int32Array.of(value)[0];\n case 16:\n return Int16Array.of(value)[0];\n case 8:\n return Int8Array.of(value)[0];\n }\n}, \"castInt\");\nvar expectNonNull = /* @__PURE__ */ __name((value, location) => {\n if (value === null || value === void 0) {\n if (location) {\n throw new TypeError(`Expected a non-null value for ${location}`);\n }\n throw new TypeError(\"Expected a non-null value\");\n }\n return value;\n}, \"expectNonNull\");\nvar expectObject = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value === \"object\" && !Array.isArray(value)) {\n return value;\n }\n const receivedType = Array.isArray(value) ? \"array\" : typeof value;\n throw new TypeError(`Expected object, got ${receivedType}: ${value}`);\n}, \"expectObject\");\nvar expectString = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value === \"string\") {\n return value;\n }\n if ([\"boolean\", \"number\", \"bigint\"].includes(typeof value)) {\n logger.warn(stackTraceWarning(`Expected string, got ${typeof value}: ${value}`));\n return String(value);\n }\n throw new TypeError(`Expected string, got ${typeof value}: ${value}`);\n}, \"expectString\");\nvar expectUnion = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n const asObject = expectObject(value);\n const setKeys = Object.entries(asObject).filter(([, v]) => v != null).map(([k]) => k);\n if (setKeys.length === 0) {\n throw new TypeError(`Unions must have exactly one non-null member. None were found.`);\n }\n if (setKeys.length > 1) {\n throw new TypeError(`Unions must have exactly one non-null member. Keys ${setKeys} were not null.`);\n }\n return asObject;\n}, \"expectUnion\");\nvar strictParseDouble = /* @__PURE__ */ __name((value) => {\n if (typeof value == \"string\") {\n return expectNumber(parseNumber(value));\n }\n return expectNumber(value);\n}, \"strictParseDouble\");\nvar strictParseFloat = strictParseDouble;\nvar strictParseFloat32 = /* @__PURE__ */ __name((value) => {\n if (typeof value == \"string\") {\n return expectFloat32(parseNumber(value));\n }\n return expectFloat32(value);\n}, \"strictParseFloat32\");\nvar NUMBER_REGEX = /(-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][+-]?\\d+)?)|(-?Infinity)|(NaN)/g;\nvar parseNumber = /* @__PURE__ */ __name((value) => {\n const matches = value.match(NUMBER_REGEX);\n if (matches === null || matches[0].length !== value.length) {\n throw new TypeError(`Expected real number, got implicit NaN`);\n }\n return parseFloat(value);\n}, \"parseNumber\");\nvar limitedParseDouble = /* @__PURE__ */ __name((value) => {\n if (typeof value == \"string\") {\n return parseFloatString(value);\n }\n return expectNumber(value);\n}, \"limitedParseDouble\");\nvar handleFloat = limitedParseDouble;\nvar limitedParseFloat = limitedParseDouble;\nvar limitedParseFloat32 = /* @__PURE__ */ __name((value) => {\n if (typeof value == \"string\") {\n return parseFloatString(value);\n }\n return expectFloat32(value);\n}, \"limitedParseFloat32\");\nvar parseFloatString = /* @__PURE__ */ __name((value) => {\n switch (value) {\n case \"NaN\":\n return NaN;\n case \"Infinity\":\n return Infinity;\n case \"-Infinity\":\n return -Infinity;\n default:\n throw new Error(`Unable to parse float value: ${value}`);\n }\n}, \"parseFloatString\");\nvar strictParseLong = /* @__PURE__ */ __name((value) => {\n if (typeof value === \"string\") {\n return expectLong(parseNumber(value));\n }\n return expectLong(value);\n}, \"strictParseLong\");\nvar strictParseInt = strictParseLong;\nvar strictParseInt32 = /* @__PURE__ */ __name((value) => {\n if (typeof value === \"string\") {\n return expectInt32(parseNumber(value));\n }\n return expectInt32(value);\n}, \"strictParseInt32\");\nvar strictParseShort = /* @__PURE__ */ __name((value) => {\n if (typeof value === \"string\") {\n return expectShort(parseNumber(value));\n }\n return expectShort(value);\n}, \"strictParseShort\");\nvar strictParseByte = /* @__PURE__ */ __name((value) => {\n if (typeof value === \"string\") {\n return expectByte(parseNumber(value));\n }\n return expectByte(value);\n}, \"strictParseByte\");\nvar stackTraceWarning = /* @__PURE__ */ __name((message) => {\n return String(new TypeError(message).stack || message).split(\"\\n\").slice(0, 5).filter((s) => !s.includes(\"stackTraceWarning\")).join(\"\\n\");\n}, \"stackTraceWarning\");\nvar logger = {\n warn: console.warn\n};\n\n// src/date-utils.ts\nvar DAYS = [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"];\nvar MONTHS = [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"];\nfunction dateToUtcString(date) {\n const year = date.getUTCFullYear();\n const month = date.getUTCMonth();\n const dayOfWeek = date.getUTCDay();\n const dayOfMonthInt = date.getUTCDate();\n const hoursInt = date.getUTCHours();\n const minutesInt = date.getUTCMinutes();\n const secondsInt = date.getUTCSeconds();\n const dayOfMonthString = dayOfMonthInt < 10 ? `0${dayOfMonthInt}` : `${dayOfMonthInt}`;\n const hoursString = hoursInt < 10 ? `0${hoursInt}` : `${hoursInt}`;\n const minutesString = minutesInt < 10 ? `0${minutesInt}` : `${minutesInt}`;\n const secondsString = secondsInt < 10 ? `0${secondsInt}` : `${secondsInt}`;\n return `${DAYS[dayOfWeek]}, ${dayOfMonthString} ${MONTHS[month]} ${year} ${hoursString}:${minutesString}:${secondsString} GMT`;\n}\n__name(dateToUtcString, \"dateToUtcString\");\nvar RFC3339 = new RegExp(/^(\\d{4})-(\\d{2})-(\\d{2})[tT](\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))?[zZ]$/);\nvar parseRfc3339DateTime = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value !== \"string\") {\n throw new TypeError(\"RFC-3339 date-times must be expressed as strings\");\n }\n const match = RFC3339.exec(value);\n if (!match) {\n throw new TypeError(\"Invalid RFC-3339 date-time value\");\n }\n const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds] = match;\n const year = strictParseShort(stripLeadingZeroes(yearStr));\n const month = parseDateValue(monthStr, \"month\", 1, 12);\n const day = parseDateValue(dayStr, \"day\", 1, 31);\n return buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds });\n}, \"parseRfc3339DateTime\");\nvar RFC3339_WITH_OFFSET = new RegExp(\n /^(\\d{4})-(\\d{2})-(\\d{2})[tT](\\d{2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))?(([-+]\\d{2}\\:\\d{2})|[zZ])$/\n);\nvar parseRfc3339DateTimeWithOffset = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value !== \"string\") {\n throw new TypeError(\"RFC-3339 date-times must be expressed as strings\");\n }\n const match = RFC3339_WITH_OFFSET.exec(value);\n if (!match) {\n throw new TypeError(\"Invalid RFC-3339 date-time value\");\n }\n const [_, yearStr, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, offsetStr] = match;\n const year = strictParseShort(stripLeadingZeroes(yearStr));\n const month = parseDateValue(monthStr, \"month\", 1, 12);\n const day = parseDateValue(dayStr, \"day\", 1, 31);\n const date = buildDate(year, month, day, { hours, minutes, seconds, fractionalMilliseconds });\n if (offsetStr.toUpperCase() != \"Z\") {\n date.setTime(date.getTime() - parseOffsetToMilliseconds(offsetStr));\n }\n return date;\n}, \"parseRfc3339DateTimeWithOffset\");\nvar IMF_FIXDATE = new RegExp(\n /^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun), (\\d{2}) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) (\\d{4}) (\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))? GMT$/\n);\nvar RFC_850_DATE = new RegExp(\n /^(?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday), (\\d{2})-(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)-(\\d{2}) (\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))? GMT$/\n);\nvar ASC_TIME = new RegExp(\n /^(?:Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) ( [1-9]|\\d{2}) (\\d{1,2}):(\\d{2}):(\\d{2})(?:\\.(\\d+))? (\\d{4})$/\n);\nvar parseRfc7231DateTime = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n if (typeof value !== \"string\") {\n throw new TypeError(\"RFC-7231 date-times must be expressed as strings\");\n }\n let match = IMF_FIXDATE.exec(value);\n if (match) {\n const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match;\n return buildDate(\n strictParseShort(stripLeadingZeroes(yearStr)),\n parseMonthByShortName(monthStr),\n parseDateValue(dayStr, \"day\", 1, 31),\n { hours, minutes, seconds, fractionalMilliseconds }\n );\n }\n match = RFC_850_DATE.exec(value);\n if (match) {\n const [_, dayStr, monthStr, yearStr, hours, minutes, seconds, fractionalMilliseconds] = match;\n return adjustRfc850Year(\n buildDate(parseTwoDigitYear(yearStr), parseMonthByShortName(monthStr), parseDateValue(dayStr, \"day\", 1, 31), {\n hours,\n minutes,\n seconds,\n fractionalMilliseconds\n })\n );\n }\n match = ASC_TIME.exec(value);\n if (match) {\n const [_, monthStr, dayStr, hours, minutes, seconds, fractionalMilliseconds, yearStr] = match;\n return buildDate(\n strictParseShort(stripLeadingZeroes(yearStr)),\n parseMonthByShortName(monthStr),\n parseDateValue(dayStr.trimLeft(), \"day\", 1, 31),\n { hours, minutes, seconds, fractionalMilliseconds }\n );\n }\n throw new TypeError(\"Invalid RFC-7231 date-time value\");\n}, \"parseRfc7231DateTime\");\nvar parseEpochTimestamp = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return void 0;\n }\n let valueAsDouble;\n if (typeof value === \"number\") {\n valueAsDouble = value;\n } else if (typeof value === \"string\") {\n valueAsDouble = strictParseDouble(value);\n } else {\n throw new TypeError(\"Epoch timestamps must be expressed as floating point numbers or their string representation\");\n }\n if (Number.isNaN(valueAsDouble) || valueAsDouble === Infinity || valueAsDouble === -Infinity) {\n throw new TypeError(\"Epoch timestamps must be valid, non-Infinite, non-NaN numerics\");\n }\n return new Date(Math.round(valueAsDouble * 1e3));\n}, \"parseEpochTimestamp\");\nvar buildDate = /* @__PURE__ */ __name((year, month, day, time) => {\n const adjustedMonth = month - 1;\n validateDayOfMonth(year, adjustedMonth, day);\n return new Date(\n Date.UTC(\n year,\n adjustedMonth,\n day,\n parseDateValue(time.hours, \"hour\", 0, 23),\n parseDateValue(time.minutes, \"minute\", 0, 59),\n // seconds can go up to 60 for leap seconds\n parseDateValue(time.seconds, \"seconds\", 0, 60),\n parseMilliseconds(time.fractionalMilliseconds)\n )\n );\n}, \"buildDate\");\nvar parseTwoDigitYear = /* @__PURE__ */ __name((value) => {\n const thisYear = (/* @__PURE__ */ new Date()).getUTCFullYear();\n const valueInThisCentury = Math.floor(thisYear / 100) * 100 + strictParseShort(stripLeadingZeroes(value));\n if (valueInThisCentury < thisYear) {\n return valueInThisCentury + 100;\n }\n return valueInThisCentury;\n}, \"parseTwoDigitYear\");\nvar FIFTY_YEARS_IN_MILLIS = 50 * 365 * 24 * 60 * 60 * 1e3;\nvar adjustRfc850Year = /* @__PURE__ */ __name((input) => {\n if (input.getTime() - (/* @__PURE__ */ new Date()).getTime() > FIFTY_YEARS_IN_MILLIS) {\n return new Date(\n Date.UTC(\n input.getUTCFullYear() - 100,\n input.getUTCMonth(),\n input.getUTCDate(),\n input.getUTCHours(),\n input.getUTCMinutes(),\n input.getUTCSeconds(),\n input.getUTCMilliseconds()\n )\n );\n }\n return input;\n}, \"adjustRfc850Year\");\nvar parseMonthByShortName = /* @__PURE__ */ __name((value) => {\n const monthIdx = MONTHS.indexOf(value);\n if (monthIdx < 0) {\n throw new TypeError(`Invalid month: ${value}`);\n }\n return monthIdx + 1;\n}, \"parseMonthByShortName\");\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nvar validateDayOfMonth = /* @__PURE__ */ __name((year, month, day) => {\n let maxDays = DAYS_IN_MONTH[month];\n if (month === 1 && isLeapYear(year)) {\n maxDays = 29;\n }\n if (day > maxDays) {\n throw new TypeError(`Invalid day for ${MONTHS[month]} in ${year}: ${day}`);\n }\n}, \"validateDayOfMonth\");\nvar isLeapYear = /* @__PURE__ */ __name((year) => {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n}, \"isLeapYear\");\nvar parseDateValue = /* @__PURE__ */ __name((value, type, lower, upper) => {\n const dateVal = strictParseByte(stripLeadingZeroes(value));\n if (dateVal < lower || dateVal > upper) {\n throw new TypeError(`${type} must be between ${lower} and ${upper}, inclusive`);\n }\n return dateVal;\n}, \"parseDateValue\");\nvar parseMilliseconds = /* @__PURE__ */ __name((value) => {\n if (value === null || value === void 0) {\n return 0;\n }\n return strictParseFloat32(\"0.\" + value) * 1e3;\n}, \"parseMilliseconds\");\nvar parseOffsetToMilliseconds = /* @__PURE__ */ __name((value) => {\n const directionStr = value[0];\n let direction = 1;\n if (directionStr == \"+\") {\n direction = 1;\n } else if (directionStr == \"-\") {\n direction = -1;\n } else {\n throw new TypeError(`Offset direction, ${directionStr}, must be \"+\" or \"-\"`);\n }\n const hour = Number(value.substring(1, 3));\n const minute = Number(value.substring(4, 6));\n return direction * (hour * 60 + minute) * 60 * 1e3;\n}, \"parseOffsetToMilliseconds\");\nvar stripLeadingZeroes = /* @__PURE__ */ __name((value) => {\n let idx = 0;\n while (idx < value.length - 1 && value.charAt(idx) === \"0\") {\n idx++;\n }\n if (idx === 0) {\n return value;\n }\n return value.slice(idx);\n}, \"stripLeadingZeroes\");\n\n// src/exceptions.ts\nvar _ServiceException = class _ServiceException extends Error {\n constructor(options) {\n super(options.message);\n Object.setPrototypeOf(this, _ServiceException.prototype);\n this.name = options.name;\n this.$fault = options.$fault;\n this.$metadata = options.$metadata;\n }\n};\n__name(_ServiceException, \"ServiceException\");\nvar ServiceException = _ServiceException;\nvar decorateServiceException = /* @__PURE__ */ __name((exception, additions = {}) => {\n Object.entries(additions).filter(([, v]) => v !== void 0).forEach(([k, v]) => {\n if (exception[k] == void 0 || exception[k] === \"\") {\n exception[k] = v;\n }\n });\n const message = exception.message || exception.Message || \"UnknownError\";\n exception.message = message;\n delete exception.Message;\n return exception;\n}, \"decorateServiceException\");\n\n// src/default-error-handler.ts\nvar throwDefaultError = /* @__PURE__ */ __name(({ output, parsedBody, exceptionCtor, errorCode }) => {\n const $metadata = deserializeMetadata(output);\n const statusCode = $metadata.httpStatusCode ? $metadata.httpStatusCode + \"\" : void 0;\n const response = new exceptionCtor({\n name: (parsedBody == null ? void 0 : parsedBody.code) || (parsedBody == null ? void 0 : parsedBody.Code) || errorCode || statusCode || \"UnknownError\",\n $fault: \"client\",\n $metadata\n });\n throw decorateServiceException(response, parsedBody);\n}, \"throwDefaultError\");\nvar withBaseException = /* @__PURE__ */ __name((ExceptionCtor) => {\n return ({ output, parsedBody, errorCode }) => {\n throwDefaultError({ output, parsedBody, exceptionCtor: ExceptionCtor, errorCode });\n };\n}, \"withBaseException\");\nvar deserializeMetadata = /* @__PURE__ */ __name((output) => ({\n httpStatusCode: output.statusCode,\n requestId: output.headers[\"x-amzn-requestid\"] ?? output.headers[\"x-amzn-request-id\"] ?? output.headers[\"x-amz-request-id\"],\n extendedRequestId: output.headers[\"x-amz-id-2\"],\n cfId: output.headers[\"x-amz-cf-id\"]\n}), \"deserializeMetadata\");\n\n// src/defaults-mode.ts\nvar loadConfigsForDefaultMode = /* @__PURE__ */ __name((mode) => {\n switch (mode) {\n case \"standard\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 3100\n };\n case \"in-region\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 1100\n };\n case \"cross-region\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 3100\n };\n case \"mobile\":\n return {\n retryMode: \"standard\",\n connectionTimeout: 3e4\n };\n default:\n return {};\n }\n}, \"loadConfigsForDefaultMode\");\n\n// src/emitWarningIfUnsupportedVersion.ts\nvar warningEmitted = false;\nvar emitWarningIfUnsupportedVersion = /* @__PURE__ */ __name((version) => {\n if (version && !warningEmitted && parseInt(version.substring(1, version.indexOf(\".\"))) < 14) {\n warningEmitted = true;\n }\n}, \"emitWarningIfUnsupportedVersion\");\n\n// src/extensions/checksum.ts\n\nvar getChecksumConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const checksumAlgorithms = [];\n for (const id in import_types.AlgorithmId) {\n const algorithmId = import_types.AlgorithmId[id];\n if (runtimeConfig[algorithmId] === void 0) {\n continue;\n }\n checksumAlgorithms.push({\n algorithmId: () => algorithmId,\n checksumConstructor: () => runtimeConfig[algorithmId]\n });\n }\n return {\n _checksumAlgorithms: checksumAlgorithms,\n addChecksumAlgorithm(algo) {\n this._checksumAlgorithms.push(algo);\n },\n checksumAlgorithms() {\n return this._checksumAlgorithms;\n }\n };\n}, \"getChecksumConfiguration\");\nvar resolveChecksumRuntimeConfig = /* @__PURE__ */ __name((clientConfig) => {\n const runtimeConfig = {};\n clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {\n runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor();\n });\n return runtimeConfig;\n}, \"resolveChecksumRuntimeConfig\");\n\n// src/extensions/retry.ts\nvar getRetryConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n let _retryStrategy = runtimeConfig.retryStrategy;\n return {\n setRetryStrategy(retryStrategy) {\n _retryStrategy = retryStrategy;\n },\n retryStrategy() {\n return _retryStrategy;\n }\n };\n}, \"getRetryConfiguration\");\nvar resolveRetryRuntimeConfig = /* @__PURE__ */ __name((retryStrategyConfiguration) => {\n const runtimeConfig = {};\n runtimeConfig.retryStrategy = retryStrategyConfiguration.retryStrategy();\n return runtimeConfig;\n}, \"resolveRetryRuntimeConfig\");\n\n// src/extensions/defaultExtensionConfiguration.ts\nvar getDefaultExtensionConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n return {\n ...getChecksumConfiguration(runtimeConfig),\n ...getRetryConfiguration(runtimeConfig)\n };\n}, \"getDefaultExtensionConfiguration\");\nvar getDefaultClientConfiguration = getDefaultExtensionConfiguration;\nvar resolveDefaultRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n ...resolveChecksumRuntimeConfig(config),\n ...resolveRetryRuntimeConfig(config)\n };\n}, \"resolveDefaultRuntimeConfig\");\n\n// src/extended-encode-uri-component.ts\nfunction extendedEncodeURIComponent(str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function(c) {\n return \"%\" + c.charCodeAt(0).toString(16).toUpperCase();\n });\n}\n__name(extendedEncodeURIComponent, \"extendedEncodeURIComponent\");\n\n// src/get-array-if-single-item.ts\nvar getArrayIfSingleItem = /* @__PURE__ */ __name((mayBeArray) => Array.isArray(mayBeArray) ? mayBeArray : [mayBeArray], \"getArrayIfSingleItem\");\n\n// src/get-value-from-text-node.ts\nvar getValueFromTextNode = /* @__PURE__ */ __name((obj) => {\n const textNodeName = \"#text\";\n for (const key in obj) {\n if (obj.hasOwnProperty(key) && obj[key][textNodeName] !== void 0) {\n obj[key] = obj[key][textNodeName];\n } else if (typeof obj[key] === \"object\" && obj[key] !== null) {\n obj[key] = getValueFromTextNode(obj[key]);\n }\n }\n return obj;\n}, \"getValueFromTextNode\");\n\n// src/lazy-json.ts\nvar StringWrapper = /* @__PURE__ */ __name(function() {\n const Class = Object.getPrototypeOf(this).constructor;\n const Constructor = Function.bind.apply(String, [null, ...arguments]);\n const instance = new Constructor();\n Object.setPrototypeOf(instance, Class.prototype);\n return instance;\n}, \"StringWrapper\");\nStringWrapper.prototype = Object.create(String.prototype, {\n constructor: {\n value: StringWrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n});\nObject.setPrototypeOf(StringWrapper, String);\nvar _LazyJsonString = class _LazyJsonString extends StringWrapper {\n deserializeJSON() {\n return JSON.parse(super.toString());\n }\n toJSON() {\n return super.toString();\n }\n static fromObject(object) {\n if (object instanceof _LazyJsonString) {\n return object;\n } else if (object instanceof String || typeof object === \"string\") {\n return new _LazyJsonString(object);\n }\n return new _LazyJsonString(JSON.stringify(object));\n }\n};\n__name(_LazyJsonString, \"LazyJsonString\");\nvar LazyJsonString = _LazyJsonString;\n\n// src/object-mapping.ts\nfunction map(arg0, arg1, arg2) {\n let target;\n let filter;\n let instructions;\n if (typeof arg1 === \"undefined\" && typeof arg2 === \"undefined\") {\n target = {};\n instructions = arg0;\n } else {\n target = arg0;\n if (typeof arg1 === \"function\") {\n filter = arg1;\n instructions = arg2;\n return mapWithFilter(target, filter, instructions);\n } else {\n instructions = arg1;\n }\n }\n for (const key of Object.keys(instructions)) {\n if (!Array.isArray(instructions[key])) {\n target[key] = instructions[key];\n continue;\n }\n applyInstruction(target, null, instructions, key);\n }\n return target;\n}\n__name(map, \"map\");\nvar convertMap = /* @__PURE__ */ __name((target) => {\n const output = {};\n for (const [k, v] of Object.entries(target || {})) {\n output[k] = [, v];\n }\n return output;\n}, \"convertMap\");\nvar take = /* @__PURE__ */ __name((source, instructions) => {\n const out = {};\n for (const key in instructions) {\n applyInstruction(out, source, instructions, key);\n }\n return out;\n}, \"take\");\nvar mapWithFilter = /* @__PURE__ */ __name((target, filter, instructions) => {\n return map(\n target,\n Object.entries(instructions).reduce(\n (_instructions, [key, value]) => {\n if (Array.isArray(value)) {\n _instructions[key] = value;\n } else {\n if (typeof value === \"function\") {\n _instructions[key] = [filter, value()];\n } else {\n _instructions[key] = [filter, value];\n }\n }\n return _instructions;\n },\n {}\n )\n );\n}, \"mapWithFilter\");\nvar applyInstruction = /* @__PURE__ */ __name((target, source, instructions, targetKey) => {\n if (source !== null) {\n let instruction = instructions[targetKey];\n if (typeof instruction === \"function\") {\n instruction = [, instruction];\n }\n const [filter2 = nonNullish, valueFn = pass, sourceKey = targetKey] = instruction;\n if (typeof filter2 === \"function\" && filter2(source[sourceKey]) || typeof filter2 !== \"function\" && !!filter2) {\n target[targetKey] = valueFn(source[sourceKey]);\n }\n return;\n }\n let [filter, value] = instructions[targetKey];\n if (typeof value === \"function\") {\n let _value;\n const defaultFilterPassed = filter === void 0 && (_value = value()) != null;\n const customFilterPassed = typeof filter === \"function\" && !!filter(void 0) || typeof filter !== \"function\" && !!filter;\n if (defaultFilterPassed) {\n target[targetKey] = _value;\n } else if (customFilterPassed) {\n target[targetKey] = value();\n }\n } else {\n const defaultFilterPassed = filter === void 0 && value != null;\n const customFilterPassed = typeof filter === \"function\" && !!filter(value) || typeof filter !== \"function\" && !!filter;\n if (defaultFilterPassed || customFilterPassed) {\n target[targetKey] = value;\n }\n }\n}, \"applyInstruction\");\nvar nonNullish = /* @__PURE__ */ __name((_) => _ != null, \"nonNullish\");\nvar pass = /* @__PURE__ */ __name((_) => _, \"pass\");\n\n// src/resolve-path.ts\nvar resolvedPath = /* @__PURE__ */ __name((resolvedPath2, input, memberName, labelValueProvider, uriLabel, isGreedyLabel) => {\n if (input != null && input[memberName] !== void 0) {\n const labelValue = labelValueProvider();\n if (labelValue.length <= 0) {\n throw new Error(\"Empty value provided for input HTTP label: \" + memberName + \".\");\n }\n resolvedPath2 = resolvedPath2.replace(\n uriLabel,\n isGreedyLabel ? labelValue.split(\"/\").map((segment) => extendedEncodeURIComponent(segment)).join(\"/\") : extendedEncodeURIComponent(labelValue)\n );\n } else {\n throw new Error(\"No value provided for input HTTP label: \" + memberName + \".\");\n }\n return resolvedPath2;\n}, \"resolvedPath\");\n\n// src/ser-utils.ts\nvar serializeFloat = /* @__PURE__ */ __name((value) => {\n if (value !== value) {\n return \"NaN\";\n }\n switch (value) {\n case Infinity:\n return \"Infinity\";\n case -Infinity:\n return \"-Infinity\";\n default:\n return value;\n }\n}, \"serializeFloat\");\n\n// src/serde-json.ts\nvar _json = /* @__PURE__ */ __name((obj) => {\n if (obj == null) {\n return {};\n }\n if (Array.isArray(obj)) {\n return obj.filter((_) => _ != null).map(_json);\n }\n if (typeof obj === \"object\") {\n const target = {};\n for (const key of Object.keys(obj)) {\n if (obj[key] == null) {\n continue;\n }\n target[key] = _json(obj[key]);\n }\n return target;\n }\n return obj;\n}, \"_json\");\n\n// src/split-every.ts\nfunction splitEvery(value, delimiter, numDelimiters) {\n if (numDelimiters <= 0 || !Number.isInteger(numDelimiters)) {\n throw new Error(\"Invalid number of delimiters (\" + numDelimiters + \") for splitEvery.\");\n }\n const segments = value.split(delimiter);\n if (numDelimiters === 1) {\n return segments;\n }\n const compoundSegments = [];\n let currentSegment = \"\";\n for (let i = 0; i < segments.length; i++) {\n if (currentSegment === \"\") {\n currentSegment = segments[i];\n } else {\n currentSegment += delimiter + segments[i];\n }\n if ((i + 1) % numDelimiters === 0) {\n compoundSegments.push(currentSegment);\n currentSegment = \"\";\n }\n }\n if (currentSegment !== \"\") {\n compoundSegments.push(currentSegment);\n }\n return compoundSegments;\n}\n__name(splitEvery, \"splitEvery\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n NoOpLogger,\n Client,\n collectBody,\n Command,\n SENSITIVE_STRING,\n createAggregatedClient,\n dateToUtcString,\n parseRfc3339DateTime,\n parseRfc3339DateTimeWithOffset,\n parseRfc7231DateTime,\n parseEpochTimestamp,\n throwDefaultError,\n withBaseException,\n loadConfigsForDefaultMode,\n emitWarningIfUnsupportedVersion,\n getDefaultExtensionConfiguration,\n getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig,\n ServiceException,\n decorateServiceException,\n extendedEncodeURIComponent,\n getArrayIfSingleItem,\n getValueFromTextNode,\n StringWrapper,\n LazyJsonString,\n map,\n convertMap,\n take,\n parseBoolean,\n expectBoolean,\n expectNumber,\n expectFloat32,\n expectLong,\n expectInt,\n expectInt32,\n expectShort,\n expectByte,\n expectNonNull,\n expectObject,\n expectString,\n expectUnion,\n strictParseDouble,\n strictParseFloat,\n strictParseFloat32,\n limitedParseDouble,\n handleFloat,\n limitedParseFloat,\n limitedParseFloat32,\n strictParseLong,\n strictParseInt,\n strictParseInt32,\n strictParseShort,\n strictParseByte,\n logger,\n resolvedPath,\n serializeFloat,\n _json,\n splitEvery\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AlgorithmId: () => AlgorithmId,\n EndpointURLScheme: () => EndpointURLScheme,\n FieldPosition: () => FieldPosition,\n HttpApiKeyAuthLocation: () => HttpApiKeyAuthLocation,\n HttpAuthLocation: () => HttpAuthLocation,\n IniSectionType: () => IniSectionType,\n RequestHandlerProtocol: () => RequestHandlerProtocol,\n SMITHY_CONTEXT_KEY: () => SMITHY_CONTEXT_KEY,\n getDefaultClientConfiguration: () => getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig: () => resolveDefaultRuntimeConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/auth/auth.ts\nvar HttpAuthLocation = /* @__PURE__ */ ((HttpAuthLocation2) => {\n HttpAuthLocation2[\"HEADER\"] = \"header\";\n HttpAuthLocation2[\"QUERY\"] = \"query\";\n return HttpAuthLocation2;\n})(HttpAuthLocation || {});\n\n// src/auth/HttpApiKeyAuth.ts\nvar HttpApiKeyAuthLocation = /* @__PURE__ */ ((HttpApiKeyAuthLocation2) => {\n HttpApiKeyAuthLocation2[\"HEADER\"] = \"header\";\n HttpApiKeyAuthLocation2[\"QUERY\"] = \"query\";\n return HttpApiKeyAuthLocation2;\n})(HttpApiKeyAuthLocation || {});\n\n// src/endpoint.ts\nvar EndpointURLScheme = /* @__PURE__ */ ((EndpointURLScheme2) => {\n EndpointURLScheme2[\"HTTP\"] = \"http\";\n EndpointURLScheme2[\"HTTPS\"] = \"https\";\n return EndpointURLScheme2;\n})(EndpointURLScheme || {});\n\n// src/extensions/checksum.ts\nvar AlgorithmId = /* @__PURE__ */ ((AlgorithmId2) => {\n AlgorithmId2[\"MD5\"] = \"md5\";\n AlgorithmId2[\"CRC32\"] = \"crc32\";\n AlgorithmId2[\"CRC32C\"] = \"crc32c\";\n AlgorithmId2[\"SHA1\"] = \"sha1\";\n AlgorithmId2[\"SHA256\"] = \"sha256\";\n return AlgorithmId2;\n})(AlgorithmId || {});\nvar getChecksumConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n const checksumAlgorithms = [];\n if (runtimeConfig.sha256 !== void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"sha256\" /* SHA256 */,\n checksumConstructor: () => runtimeConfig.sha256\n });\n }\n if (runtimeConfig.md5 != void 0) {\n checksumAlgorithms.push({\n algorithmId: () => \"md5\" /* MD5 */,\n checksumConstructor: () => runtimeConfig.md5\n });\n }\n return {\n _checksumAlgorithms: checksumAlgorithms,\n addChecksumAlgorithm(algo) {\n this._checksumAlgorithms.push(algo);\n },\n checksumAlgorithms() {\n return this._checksumAlgorithms;\n }\n };\n}, \"getChecksumConfiguration\");\nvar resolveChecksumRuntimeConfig = /* @__PURE__ */ __name((clientConfig) => {\n const runtimeConfig = {};\n clientConfig.checksumAlgorithms().forEach((checksumAlgorithm) => {\n runtimeConfig[checksumAlgorithm.algorithmId()] = checksumAlgorithm.checksumConstructor();\n });\n return runtimeConfig;\n}, \"resolveChecksumRuntimeConfig\");\n\n// src/extensions/defaultClientConfiguration.ts\nvar getDefaultClientConfiguration = /* @__PURE__ */ __name((runtimeConfig) => {\n return {\n ...getChecksumConfiguration(runtimeConfig)\n };\n}, \"getDefaultClientConfiguration\");\nvar resolveDefaultRuntimeConfig = /* @__PURE__ */ __name((config) => {\n return {\n ...resolveChecksumRuntimeConfig(config)\n };\n}, \"resolveDefaultRuntimeConfig\");\n\n// src/http.ts\nvar FieldPosition = /* @__PURE__ */ ((FieldPosition2) => {\n FieldPosition2[FieldPosition2[\"HEADER\"] = 0] = \"HEADER\";\n FieldPosition2[FieldPosition2[\"TRAILER\"] = 1] = \"TRAILER\";\n return FieldPosition2;\n})(FieldPosition || {});\n\n// src/middleware.ts\nvar SMITHY_CONTEXT_KEY = \"__smithy_context\";\n\n// src/profile.ts\nvar IniSectionType = /* @__PURE__ */ ((IniSectionType2) => {\n IniSectionType2[\"PROFILE\"] = \"profile\";\n IniSectionType2[\"SSO_SESSION\"] = \"sso-session\";\n IniSectionType2[\"SERVICES\"] = \"services\";\n return IniSectionType2;\n})(IniSectionType || {});\n\n// src/transfer.ts\nvar RequestHandlerProtocol = /* @__PURE__ */ ((RequestHandlerProtocol2) => {\n RequestHandlerProtocol2[\"HTTP_0_9\"] = \"http/0.9\";\n RequestHandlerProtocol2[\"HTTP_1_0\"] = \"http/1.0\";\n RequestHandlerProtocol2[\"TDS_8_0\"] = \"tds/8.0\";\n return RequestHandlerProtocol2;\n})(RequestHandlerProtocol || {});\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n HttpAuthLocation,\n HttpApiKeyAuthLocation,\n EndpointURLScheme,\n AlgorithmId,\n getDefaultClientConfiguration,\n resolveDefaultRuntimeConfig,\n FieldPosition,\n SMITHY_CONTEXT_KEY,\n IniSectionType,\n RequestHandlerProtocol\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n parseUrl: () => parseUrl\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_querystring_parser = require(\"@smithy/querystring-parser\");\nvar parseUrl = /* @__PURE__ */ __name((url) => {\n if (typeof url === \"string\") {\n return parseUrl(new URL(url));\n }\n const { hostname, pathname, port, protocol, search } = url;\n let query;\n if (search) {\n query = (0, import_querystring_parser.parseQueryString)(search);\n }\n return {\n hostname,\n port: port ? parseInt(port) : void 0,\n protocol,\n path: pathname,\n query\n };\n}, \"parseUrl\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n parseUrl\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fromBase64 = void 0;\nconst util_buffer_from_1 = require(\"@smithy/util-buffer-from\");\nconst BASE64_REGEX = /^[A-Za-z0-9+/]*={0,2}$/;\nconst fromBase64 = (input) => {\n if ((input.length * 3) % 4 !== 0) {\n throw new TypeError(`Incorrect padding on base64 string.`);\n }\n if (!BASE64_REGEX.exec(input)) {\n throw new TypeError(`Invalid base64 string.`);\n }\n const buffer = (0, util_buffer_from_1.fromString)(input, \"base64\");\n return new Uint8Array(buffer.buffer, buffer.byteOffset, buffer.byteLength);\n};\nexports.fromBase64 = fromBase64;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\nmodule.exports = __toCommonJS(src_exports);\n__reExport(src_exports, require(\"././fromBase64\"), module.exports);\n__reExport(src_exports, require(\"././toBase64\"), module.exports);\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromBase64,\n toBase64\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.toBase64 = void 0;\nconst util_buffer_from_1 = require(\"@smithy/util-buffer-from\");\nconst util_utf8_1 = require(\"@smithy/util-utf8\");\nconst toBase64 = (_input) => {\n let input;\n if (typeof _input === \"string\") {\n input = (0, util_utf8_1.fromUtf8)(_input);\n }\n else {\n input = _input;\n }\n if (typeof input !== \"object\" || typeof input.byteOffset !== \"number\" || typeof input.byteLength !== \"number\") {\n throw new Error(\"@smithy/util-base64: toBase64 encoder function only accepts string | Uint8Array.\");\n }\n return (0, util_buffer_from_1.fromArrayBuffer)(input.buffer, input.byteOffset, input.byteLength).toString(\"base64\");\n};\nexports.toBase64 = toBase64;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n calculateBodyLength: () => calculateBodyLength\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/calculateBodyLength.ts\nvar import_fs = require(\"fs\");\nvar calculateBodyLength = /* @__PURE__ */ __name((body) => {\n if (!body) {\n return 0;\n }\n if (typeof body === \"string\") {\n return Buffer.byteLength(body);\n } else if (typeof body.byteLength === \"number\") {\n return body.byteLength;\n } else if (typeof body.size === \"number\") {\n return body.size;\n } else if (typeof body.start === \"number\" && typeof body.end === \"number\") {\n return body.end + 1 - body.start;\n } else if (typeof body.path === \"string\" || Buffer.isBuffer(body.path)) {\n return (0, import_fs.lstatSync)(body.path).size;\n } else if (typeof body.fd === \"number\") {\n return (0, import_fs.fstatSync)(body.fd).size;\n }\n throw new Error(`Body Length computation failed for ${body}`);\n}, \"calculateBodyLength\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n calculateBodyLength\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromArrayBuffer: () => fromArrayBuffer,\n fromString: () => fromString\n});\nmodule.exports = __toCommonJS(src_exports);\nvar import_is_array_buffer = require(\"@smithy/is-array-buffer\");\nvar import_buffer = require(\"buffer\");\nvar fromArrayBuffer = /* @__PURE__ */ __name((input, offset = 0, length = input.byteLength - offset) => {\n if (!(0, import_is_array_buffer.isArrayBuffer)(input)) {\n throw new TypeError(`The \"input\" argument must be ArrayBuffer. Received type ${typeof input} (${input})`);\n }\n return import_buffer.Buffer.from(input, offset, length);\n}, \"fromArrayBuffer\");\nvar fromString = /* @__PURE__ */ __name((input, encoding) => {\n if (typeof input !== \"string\") {\n throw new TypeError(`The \"input\" argument must be of type string. Received type ${typeof input} (${input})`);\n }\n return encoding ? import_buffer.Buffer.from(input, encoding) : import_buffer.Buffer.from(input);\n}, \"fromString\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromArrayBuffer,\n fromString\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n SelectorType: () => SelectorType,\n booleanSelector: () => booleanSelector,\n numberSelector: () => numberSelector\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/booleanSelector.ts\nvar booleanSelector = /* @__PURE__ */ __name((obj, key, type) => {\n if (!(key in obj))\n return void 0;\n if (obj[key] === \"true\")\n return true;\n if (obj[key] === \"false\")\n return false;\n throw new Error(`Cannot load ${type} \"${key}\". Expected \"true\" or \"false\", got ${obj[key]}.`);\n}, \"booleanSelector\");\n\n// src/numberSelector.ts\nvar numberSelector = /* @__PURE__ */ __name((obj, key, type) => {\n if (!(key in obj))\n return void 0;\n const numberValue = parseInt(obj[key], 10);\n if (Number.isNaN(numberValue)) {\n throw new TypeError(`Cannot load ${type} '${key}'. Expected number, got '${obj[key]}'.`);\n }\n return numberValue;\n}, \"numberSelector\");\n\n// src/types.ts\nvar SelectorType = /* @__PURE__ */ ((SelectorType2) => {\n SelectorType2[\"ENV\"] = \"env\";\n SelectorType2[\"CONFIG\"] = \"shared config entry\";\n return SelectorType2;\n})(SelectorType || {});\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n booleanSelector,\n numberSelector,\n SelectorType\n});\n\n","var __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n // If the importer is in node compatibility mode or this is not an ESM\n // file that has been converted to a CommonJS file using a Babel-\n // compatible transform (i.e. \"__esModule\" has not been set), then set\n // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n resolveDefaultsModeConfig: () => resolveDefaultsModeConfig\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/resolveDefaultsModeConfig.ts\nvar import_config_resolver = require(\"@smithy/config-resolver\");\nvar import_node_config_provider = require(\"@smithy/node-config-provider\");\nvar import_property_provider = require(\"@smithy/property-provider\");\n\n// src/constants.ts\nvar AWS_EXECUTION_ENV = \"AWS_EXECUTION_ENV\";\nvar AWS_REGION_ENV = \"AWS_REGION\";\nvar AWS_DEFAULT_REGION_ENV = \"AWS_DEFAULT_REGION\";\nvar ENV_IMDS_DISABLED = \"AWS_EC2_METADATA_DISABLED\";\nvar DEFAULTS_MODE_OPTIONS = [\"in-region\", \"cross-region\", \"mobile\", \"standard\", \"legacy\"];\nvar IMDS_REGION_PATH = \"/latest/meta-data/placement/region\";\n\n// src/defaultsModeConfig.ts\nvar AWS_DEFAULTS_MODE_ENV = \"AWS_DEFAULTS_MODE\";\nvar AWS_DEFAULTS_MODE_CONFIG = \"defaults_mode\";\nvar NODE_DEFAULTS_MODE_CONFIG_OPTIONS = {\n environmentVariableSelector: (env) => {\n return env[AWS_DEFAULTS_MODE_ENV];\n },\n configFileSelector: (profile) => {\n return profile[AWS_DEFAULTS_MODE_CONFIG];\n },\n default: \"legacy\"\n};\n\n// src/resolveDefaultsModeConfig.ts\nvar resolveDefaultsModeConfig = /* @__PURE__ */ __name(({\n region = (0, import_node_config_provider.loadConfig)(import_config_resolver.NODE_REGION_CONFIG_OPTIONS),\n defaultsMode = (0, import_node_config_provider.loadConfig)(NODE_DEFAULTS_MODE_CONFIG_OPTIONS)\n} = {}) => (0, import_property_provider.memoize)(async () => {\n const mode = typeof defaultsMode === \"function\" ? await defaultsMode() : defaultsMode;\n switch (mode == null ? void 0 : mode.toLowerCase()) {\n case \"auto\":\n return resolveNodeDefaultsModeAuto(region);\n case \"in-region\":\n case \"cross-region\":\n case \"mobile\":\n case \"standard\":\n case \"legacy\":\n return Promise.resolve(mode == null ? void 0 : mode.toLocaleLowerCase());\n case void 0:\n return Promise.resolve(\"legacy\");\n default:\n throw new Error(\n `Invalid parameter for \"defaultsMode\", expect ${DEFAULTS_MODE_OPTIONS.join(\", \")}, got ${mode}`\n );\n }\n}), \"resolveDefaultsModeConfig\");\nvar resolveNodeDefaultsModeAuto = /* @__PURE__ */ __name(async (clientRegion) => {\n if (clientRegion) {\n const resolvedRegion = typeof clientRegion === \"function\" ? await clientRegion() : clientRegion;\n const inferredRegion = await inferPhysicalRegion();\n if (!inferredRegion) {\n return \"standard\";\n }\n if (resolvedRegion === inferredRegion) {\n return \"in-region\";\n } else {\n return \"cross-region\";\n }\n }\n return \"standard\";\n}, \"resolveNodeDefaultsModeAuto\");\nvar inferPhysicalRegion = /* @__PURE__ */ __name(async () => {\n if (process.env[AWS_EXECUTION_ENV] && (process.env[AWS_REGION_ENV] || process.env[AWS_DEFAULT_REGION_ENV])) {\n return process.env[AWS_REGION_ENV] ?? process.env[AWS_DEFAULT_REGION_ENV];\n }\n if (!process.env[ENV_IMDS_DISABLED]) {\n try {\n const { getInstanceMetadataEndpoint, httpRequest } = await Promise.resolve().then(() => __toESM(require(\"@smithy/credential-provider-imds\")));\n const endpoint = await getInstanceMetadataEndpoint();\n return (await httpRequest({ ...endpoint, path: IMDS_REGION_PATH })).toString();\n } catch (e) {\n }\n }\n}, \"inferPhysicalRegion\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n resolveDefaultsModeConfig\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n EndpointError: () => EndpointError,\n customEndpointFunctions: () => customEndpointFunctions,\n isIpAddress: () => isIpAddress,\n isValidHostLabel: () => isValidHostLabel,\n resolveEndpoint: () => resolveEndpoint\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/lib/isIpAddress.ts\nvar IP_V4_REGEX = new RegExp(\n `^(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)(?:\\\\.(?:25[0-5]|2[0-4]\\\\d|1\\\\d\\\\d|[1-9]\\\\d|\\\\d)){3}$`\n);\nvar isIpAddress = /* @__PURE__ */ __name((value) => IP_V4_REGEX.test(value) || value.startsWith(\"[\") && value.endsWith(\"]\"), \"isIpAddress\");\n\n// src/lib/isValidHostLabel.ts\nvar VALID_HOST_LABEL_REGEX = new RegExp(`^(?!.*-$)(?!-)[a-zA-Z0-9-]{1,63}$`);\nvar isValidHostLabel = /* @__PURE__ */ __name((value, allowSubDomains = false) => {\n if (!allowSubDomains) {\n return VALID_HOST_LABEL_REGEX.test(value);\n }\n const labels = value.split(\".\");\n for (const label of labels) {\n if (!isValidHostLabel(label)) {\n return false;\n }\n }\n return true;\n}, \"isValidHostLabel\");\n\n// src/utils/customEndpointFunctions.ts\nvar customEndpointFunctions = {};\n\n// src/debug/debugId.ts\nvar debugId = \"endpoints\";\n\n// src/debug/toDebugString.ts\nfunction toDebugString(input) {\n if (typeof input !== \"object\" || input == null) {\n return input;\n }\n if (\"ref\" in input) {\n return `$${toDebugString(input.ref)}`;\n }\n if (\"fn\" in input) {\n return `${input.fn}(${(input.argv || []).map(toDebugString).join(\", \")})`;\n }\n return JSON.stringify(input, null, 2);\n}\n__name(toDebugString, \"toDebugString\");\n\n// src/types/EndpointError.ts\nvar _EndpointError = class _EndpointError extends Error {\n constructor(message) {\n super(message);\n this.name = \"EndpointError\";\n }\n};\n__name(_EndpointError, \"EndpointError\");\nvar EndpointError = _EndpointError;\n\n// src/lib/booleanEquals.ts\nvar booleanEquals = /* @__PURE__ */ __name((value1, value2) => value1 === value2, \"booleanEquals\");\n\n// src/lib/getAttrPathList.ts\nvar getAttrPathList = /* @__PURE__ */ __name((path) => {\n const parts = path.split(\".\");\n const pathList = [];\n for (const part of parts) {\n const squareBracketIndex = part.indexOf(\"[\");\n if (squareBracketIndex !== -1) {\n if (part.indexOf(\"]\") !== part.length - 1) {\n throw new EndpointError(`Path: '${path}' does not end with ']'`);\n }\n const arrayIndex = part.slice(squareBracketIndex + 1, -1);\n if (Number.isNaN(parseInt(arrayIndex))) {\n throw new EndpointError(`Invalid array index: '${arrayIndex}' in path: '${path}'`);\n }\n if (squareBracketIndex !== 0) {\n pathList.push(part.slice(0, squareBracketIndex));\n }\n pathList.push(arrayIndex);\n } else {\n pathList.push(part);\n }\n }\n return pathList;\n}, \"getAttrPathList\");\n\n// src/lib/getAttr.ts\nvar getAttr = /* @__PURE__ */ __name((value, path) => getAttrPathList(path).reduce((acc, index) => {\n if (typeof acc !== \"object\") {\n throw new EndpointError(`Index '${index}' in '${path}' not found in '${JSON.stringify(value)}'`);\n } else if (Array.isArray(acc)) {\n return acc[parseInt(index)];\n }\n return acc[index];\n}, value), \"getAttr\");\n\n// src/lib/isSet.ts\nvar isSet = /* @__PURE__ */ __name((value) => value != null, \"isSet\");\n\n// src/lib/not.ts\nvar not = /* @__PURE__ */ __name((value) => !value, \"not\");\n\n// src/lib/parseURL.ts\nvar import_types3 = require(\"@smithy/types\");\nvar DEFAULT_PORTS = {\n [import_types3.EndpointURLScheme.HTTP]: 80,\n [import_types3.EndpointURLScheme.HTTPS]: 443\n};\nvar parseURL = /* @__PURE__ */ __name((value) => {\n const whatwgURL = (() => {\n try {\n if (value instanceof URL) {\n return value;\n }\n if (typeof value === \"object\" && \"hostname\" in value) {\n const { hostname: hostname2, port, protocol: protocol2 = \"\", path = \"\", query = {} } = value;\n const url = new URL(`${protocol2}//${hostname2}${port ? `:${port}` : \"\"}${path}`);\n url.search = Object.entries(query).map(([k, v]) => `${k}=${v}`).join(\"&\");\n return url;\n }\n return new URL(value);\n } catch (error) {\n return null;\n }\n })();\n if (!whatwgURL) {\n console.error(`Unable to parse ${JSON.stringify(value)} as a whatwg URL.`);\n return null;\n }\n const urlString = whatwgURL.href;\n const { host, hostname, pathname, protocol, search } = whatwgURL;\n if (search) {\n return null;\n }\n const scheme = protocol.slice(0, -1);\n if (!Object.values(import_types3.EndpointURLScheme).includes(scheme)) {\n return null;\n }\n const isIp = isIpAddress(hostname);\n const inputContainsDefaultPort = urlString.includes(`${host}:${DEFAULT_PORTS[scheme]}`) || typeof value === \"string\" && value.includes(`${host}:${DEFAULT_PORTS[scheme]}`);\n const authority = `${host}${inputContainsDefaultPort ? `:${DEFAULT_PORTS[scheme]}` : ``}`;\n return {\n scheme,\n authority,\n path: pathname,\n normalizedPath: pathname.endsWith(\"/\") ? pathname : `${pathname}/`,\n isIp\n };\n}, \"parseURL\");\n\n// src/lib/stringEquals.ts\nvar stringEquals = /* @__PURE__ */ __name((value1, value2) => value1 === value2, \"stringEquals\");\n\n// src/lib/substring.ts\nvar substring = /* @__PURE__ */ __name((input, start, stop, reverse) => {\n if (start >= stop || input.length < stop) {\n return null;\n }\n if (!reverse) {\n return input.substring(start, stop);\n }\n return input.substring(input.length - stop, input.length - start);\n}, \"substring\");\n\n// src/lib/uriEncode.ts\nvar uriEncode = /* @__PURE__ */ __name((value) => encodeURIComponent(value).replace(/[!*'()]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`), \"uriEncode\");\n\n// src/utils/endpointFunctions.ts\nvar endpointFunctions = {\n booleanEquals,\n getAttr,\n isSet,\n isValidHostLabel,\n not,\n parseURL,\n stringEquals,\n substring,\n uriEncode\n};\n\n// src/utils/evaluateTemplate.ts\nvar evaluateTemplate = /* @__PURE__ */ __name((template, options) => {\n const evaluatedTemplateArr = [];\n const templateContext = {\n ...options.endpointParams,\n ...options.referenceRecord\n };\n let currentIndex = 0;\n while (currentIndex < template.length) {\n const openingBraceIndex = template.indexOf(\"{\", currentIndex);\n if (openingBraceIndex === -1) {\n evaluatedTemplateArr.push(template.slice(currentIndex));\n break;\n }\n evaluatedTemplateArr.push(template.slice(currentIndex, openingBraceIndex));\n const closingBraceIndex = template.indexOf(\"}\", openingBraceIndex);\n if (closingBraceIndex === -1) {\n evaluatedTemplateArr.push(template.slice(openingBraceIndex));\n break;\n }\n if (template[openingBraceIndex + 1] === \"{\" && template[closingBraceIndex + 1] === \"}\") {\n evaluatedTemplateArr.push(template.slice(openingBraceIndex + 1, closingBraceIndex));\n currentIndex = closingBraceIndex + 2;\n }\n const parameterName = template.substring(openingBraceIndex + 1, closingBraceIndex);\n if (parameterName.includes(\"#\")) {\n const [refName, attrName] = parameterName.split(\"#\");\n evaluatedTemplateArr.push(getAttr(templateContext[refName], attrName));\n } else {\n evaluatedTemplateArr.push(templateContext[parameterName]);\n }\n currentIndex = closingBraceIndex + 1;\n }\n return evaluatedTemplateArr.join(\"\");\n}, \"evaluateTemplate\");\n\n// src/utils/getReferenceValue.ts\nvar getReferenceValue = /* @__PURE__ */ __name(({ ref }, options) => {\n const referenceRecord = {\n ...options.endpointParams,\n ...options.referenceRecord\n };\n return referenceRecord[ref];\n}, \"getReferenceValue\");\n\n// src/utils/evaluateExpression.ts\nvar evaluateExpression = /* @__PURE__ */ __name((obj, keyName, options) => {\n if (typeof obj === \"string\") {\n return evaluateTemplate(obj, options);\n } else if (obj[\"fn\"]) {\n return callFunction(obj, options);\n } else if (obj[\"ref\"]) {\n return getReferenceValue(obj, options);\n }\n throw new EndpointError(`'${keyName}': ${String(obj)} is not a string, function or reference.`);\n}, \"evaluateExpression\");\n\n// src/utils/callFunction.ts\nvar callFunction = /* @__PURE__ */ __name(({ fn, argv }, options) => {\n const evaluatedArgs = argv.map(\n (arg) => [\"boolean\", \"number\"].includes(typeof arg) ? arg : evaluateExpression(arg, \"arg\", options)\n );\n const fnSegments = fn.split(\".\");\n if (fnSegments[0] in customEndpointFunctions && fnSegments[1] != null) {\n return customEndpointFunctions[fnSegments[0]][fnSegments[1]](...evaluatedArgs);\n }\n return endpointFunctions[fn](...evaluatedArgs);\n}, \"callFunction\");\n\n// src/utils/evaluateCondition.ts\nvar evaluateCondition = /* @__PURE__ */ __name(({ assign, ...fnArgs }, options) => {\n var _a, _b;\n if (assign && assign in options.referenceRecord) {\n throw new EndpointError(`'${assign}' is already defined in Reference Record.`);\n }\n const value = callFunction(fnArgs, options);\n (_b = (_a = options.logger) == null ? void 0 : _a.debug) == null ? void 0 : _b.call(_a, debugId, `evaluateCondition: ${toDebugString(fnArgs)} = ${toDebugString(value)}`);\n return {\n result: value === \"\" ? true : !!value,\n ...assign != null && { toAssign: { name: assign, value } }\n };\n}, \"evaluateCondition\");\n\n// src/utils/evaluateConditions.ts\nvar evaluateConditions = /* @__PURE__ */ __name((conditions = [], options) => {\n var _a, _b;\n const conditionsReferenceRecord = {};\n for (const condition of conditions) {\n const { result, toAssign } = evaluateCondition(condition, {\n ...options,\n referenceRecord: {\n ...options.referenceRecord,\n ...conditionsReferenceRecord\n }\n });\n if (!result) {\n return { result };\n }\n if (toAssign) {\n conditionsReferenceRecord[toAssign.name] = toAssign.value;\n (_b = (_a = options.logger) == null ? void 0 : _a.debug) == null ? void 0 : _b.call(_a, debugId, `assign: ${toAssign.name} := ${toDebugString(toAssign.value)}`);\n }\n }\n return { result: true, referenceRecord: conditionsReferenceRecord };\n}, \"evaluateConditions\");\n\n// src/utils/getEndpointHeaders.ts\nvar getEndpointHeaders = /* @__PURE__ */ __name((headers, options) => Object.entries(headers).reduce(\n (acc, [headerKey, headerVal]) => ({\n ...acc,\n [headerKey]: headerVal.map((headerValEntry) => {\n const processedExpr = evaluateExpression(headerValEntry, \"Header value entry\", options);\n if (typeof processedExpr !== \"string\") {\n throw new EndpointError(`Header '${headerKey}' value '${processedExpr}' is not a string`);\n }\n return processedExpr;\n })\n }),\n {}\n), \"getEndpointHeaders\");\n\n// src/utils/getEndpointProperty.ts\nvar getEndpointProperty = /* @__PURE__ */ __name((property, options) => {\n if (Array.isArray(property)) {\n return property.map((propertyEntry) => getEndpointProperty(propertyEntry, options));\n }\n switch (typeof property) {\n case \"string\":\n return evaluateTemplate(property, options);\n case \"object\":\n if (property === null) {\n throw new EndpointError(`Unexpected endpoint property: ${property}`);\n }\n return getEndpointProperties(property, options);\n case \"boolean\":\n return property;\n default:\n throw new EndpointError(`Unexpected endpoint property type: ${typeof property}`);\n }\n}, \"getEndpointProperty\");\n\n// src/utils/getEndpointProperties.ts\nvar getEndpointProperties = /* @__PURE__ */ __name((properties, options) => Object.entries(properties).reduce(\n (acc, [propertyKey, propertyVal]) => ({\n ...acc,\n [propertyKey]: getEndpointProperty(propertyVal, options)\n }),\n {}\n), \"getEndpointProperties\");\n\n// src/utils/getEndpointUrl.ts\nvar getEndpointUrl = /* @__PURE__ */ __name((endpointUrl, options) => {\n const expression = evaluateExpression(endpointUrl, \"Endpoint URL\", options);\n if (typeof expression === \"string\") {\n try {\n return new URL(expression);\n } catch (error) {\n console.error(`Failed to construct URL with ${expression}`, error);\n throw error;\n }\n }\n throw new EndpointError(`Endpoint URL must be a string, got ${typeof expression}`);\n}, \"getEndpointUrl\");\n\n// src/utils/evaluateEndpointRule.ts\nvar evaluateEndpointRule = /* @__PURE__ */ __name((endpointRule, options) => {\n var _a, _b;\n const { conditions, endpoint } = endpointRule;\n const { result, referenceRecord } = evaluateConditions(conditions, options);\n if (!result) {\n return;\n }\n const endpointRuleOptions = {\n ...options,\n referenceRecord: { ...options.referenceRecord, ...referenceRecord }\n };\n const { url, properties, headers } = endpoint;\n (_b = (_a = options.logger) == null ? void 0 : _a.debug) == null ? void 0 : _b.call(_a, debugId, `Resolving endpoint from template: ${toDebugString(endpoint)}`);\n return {\n ...headers != void 0 && {\n headers: getEndpointHeaders(headers, endpointRuleOptions)\n },\n ...properties != void 0 && {\n properties: getEndpointProperties(properties, endpointRuleOptions)\n },\n url: getEndpointUrl(url, endpointRuleOptions)\n };\n}, \"evaluateEndpointRule\");\n\n// src/utils/evaluateErrorRule.ts\nvar evaluateErrorRule = /* @__PURE__ */ __name((errorRule, options) => {\n const { conditions, error } = errorRule;\n const { result, referenceRecord } = evaluateConditions(conditions, options);\n if (!result) {\n return;\n }\n throw new EndpointError(\n evaluateExpression(error, \"Error\", {\n ...options,\n referenceRecord: { ...options.referenceRecord, ...referenceRecord }\n })\n );\n}, \"evaluateErrorRule\");\n\n// src/utils/evaluateTreeRule.ts\nvar evaluateTreeRule = /* @__PURE__ */ __name((treeRule, options) => {\n const { conditions, rules } = treeRule;\n const { result, referenceRecord } = evaluateConditions(conditions, options);\n if (!result) {\n return;\n }\n return evaluateRules(rules, {\n ...options,\n referenceRecord: { ...options.referenceRecord, ...referenceRecord }\n });\n}, \"evaluateTreeRule\");\n\n// src/utils/evaluateRules.ts\nvar evaluateRules = /* @__PURE__ */ __name((rules, options) => {\n for (const rule of rules) {\n if (rule.type === \"endpoint\") {\n const endpointOrUndefined = evaluateEndpointRule(rule, options);\n if (endpointOrUndefined) {\n return endpointOrUndefined;\n }\n } else if (rule.type === \"error\") {\n evaluateErrorRule(rule, options);\n } else if (rule.type === \"tree\") {\n const endpointOrUndefined = evaluateTreeRule(rule, options);\n if (endpointOrUndefined) {\n return endpointOrUndefined;\n }\n } else {\n throw new EndpointError(`Unknown endpoint rule: ${rule}`);\n }\n }\n throw new EndpointError(`Rules evaluation failed`);\n}, \"evaluateRules\");\n\n// src/resolveEndpoint.ts\nvar resolveEndpoint = /* @__PURE__ */ __name((ruleSetObject, options) => {\n var _a, _b, _c, _d, _e;\n const { endpointParams, logger } = options;\n const { parameters, rules } = ruleSetObject;\n (_b = (_a = options.logger) == null ? void 0 : _a.debug) == null ? void 0 : _b.call(_a, `${debugId} Initial EndpointParams: ${toDebugString(endpointParams)}`);\n const paramsWithDefault = Object.entries(parameters).filter(([, v]) => v.default != null).map(([k, v]) => [k, v.default]);\n if (paramsWithDefault.length > 0) {\n for (const [paramKey, paramDefaultValue] of paramsWithDefault) {\n endpointParams[paramKey] = endpointParams[paramKey] ?? paramDefaultValue;\n }\n }\n const requiredParams = Object.entries(parameters).filter(([, v]) => v.required).map(([k]) => k);\n for (const requiredParam of requiredParams) {\n if (endpointParams[requiredParam] == null) {\n throw new EndpointError(`Missing required parameter: '${requiredParam}'`);\n }\n }\n const endpoint = evaluateRules(rules, { endpointParams, logger, referenceRecord: {} });\n if ((_c = options.endpointParams) == null ? void 0 : _c.Endpoint) {\n try {\n const givenEndpoint = new URL(options.endpointParams.Endpoint);\n const { protocol, port } = givenEndpoint;\n endpoint.url.protocol = protocol;\n endpoint.url.port = port;\n } catch (e) {\n }\n }\n (_e = (_d = options.logger) == null ? void 0 : _d.debug) == null ? void 0 : _e.call(_d, `${debugId} Resolved endpoint: ${toDebugString(endpoint)}`);\n return endpoint;\n}, \"resolveEndpoint\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n isIpAddress,\n isValidHostLabel,\n customEndpointFunctions,\n resolveEndpoint,\n EndpointError\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromHex: () => fromHex,\n toHex: () => toHex\n});\nmodule.exports = __toCommonJS(src_exports);\nvar SHORT_TO_HEX = {};\nvar HEX_TO_SHORT = {};\nfor (let i = 0; i < 256; i++) {\n let encodedByte = i.toString(16).toLowerCase();\n if (encodedByte.length === 1) {\n encodedByte = `0${encodedByte}`;\n }\n SHORT_TO_HEX[i] = encodedByte;\n HEX_TO_SHORT[encodedByte] = i;\n}\nfunction fromHex(encoded) {\n if (encoded.length % 2 !== 0) {\n throw new Error(\"Hex encoded strings must have an even number length\");\n }\n const out = new Uint8Array(encoded.length / 2);\n for (let i = 0; i < encoded.length; i += 2) {\n const encodedByte = encoded.slice(i, i + 2).toLowerCase();\n if (encodedByte in HEX_TO_SHORT) {\n out[i / 2] = HEX_TO_SHORT[encodedByte];\n } else {\n throw new Error(`Cannot decode unrecognized sequence ${encodedByte} as hexadecimal`);\n }\n }\n return out;\n}\n__name(fromHex, \"fromHex\");\nfunction toHex(bytes) {\n let out = \"\";\n for (let i = 0; i < bytes.byteLength; i++) {\n out += SHORT_TO_HEX[bytes[i]];\n }\n return out;\n}\n__name(toHex, \"toHex\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromHex,\n toHex\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n getSmithyContext: () => getSmithyContext,\n normalizeProvider: () => normalizeProvider\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/getSmithyContext.ts\nvar import_types = require(\"@smithy/types\");\nvar getSmithyContext = /* @__PURE__ */ __name((context) => context[import_types.SMITHY_CONTEXT_KEY] || (context[import_types.SMITHY_CONTEXT_KEY] = {}), \"getSmithyContext\");\n\n// src/normalizeProvider.ts\nvar normalizeProvider = /* @__PURE__ */ __name((input) => {\n if (typeof input === \"function\")\n return input;\n const promisified = Promise.resolve(input);\n return () => promisified;\n}, \"normalizeProvider\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n getSmithyContext,\n normalizeProvider\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n AdaptiveRetryStrategy: () => AdaptiveRetryStrategy,\n ConfiguredRetryStrategy: () => ConfiguredRetryStrategy,\n DEFAULT_MAX_ATTEMPTS: () => DEFAULT_MAX_ATTEMPTS,\n DEFAULT_RETRY_DELAY_BASE: () => DEFAULT_RETRY_DELAY_BASE,\n DEFAULT_RETRY_MODE: () => DEFAULT_RETRY_MODE,\n DefaultRateLimiter: () => DefaultRateLimiter,\n INITIAL_RETRY_TOKENS: () => INITIAL_RETRY_TOKENS,\n INVOCATION_ID_HEADER: () => INVOCATION_ID_HEADER,\n MAXIMUM_RETRY_DELAY: () => MAXIMUM_RETRY_DELAY,\n NO_RETRY_INCREMENT: () => NO_RETRY_INCREMENT,\n REQUEST_HEADER: () => REQUEST_HEADER,\n RETRY_COST: () => RETRY_COST,\n RETRY_MODES: () => RETRY_MODES,\n StandardRetryStrategy: () => StandardRetryStrategy,\n THROTTLING_RETRY_DELAY_BASE: () => THROTTLING_RETRY_DELAY_BASE,\n TIMEOUT_RETRY_COST: () => TIMEOUT_RETRY_COST\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/config.ts\nvar RETRY_MODES = /* @__PURE__ */ ((RETRY_MODES2) => {\n RETRY_MODES2[\"STANDARD\"] = \"standard\";\n RETRY_MODES2[\"ADAPTIVE\"] = \"adaptive\";\n return RETRY_MODES2;\n})(RETRY_MODES || {});\nvar DEFAULT_MAX_ATTEMPTS = 3;\nvar DEFAULT_RETRY_MODE = \"standard\" /* STANDARD */;\n\n// src/DefaultRateLimiter.ts\nvar import_service_error_classification = require(\"@smithy/service-error-classification\");\nvar _DefaultRateLimiter = class _DefaultRateLimiter {\n constructor(options) {\n // Pre-set state variables\n this.currentCapacity = 0;\n this.enabled = false;\n this.lastMaxRate = 0;\n this.measuredTxRate = 0;\n this.requestCount = 0;\n this.lastTimestamp = 0;\n this.timeWindow = 0;\n this.beta = (options == null ? void 0 : options.beta) ?? 0.7;\n this.minCapacity = (options == null ? void 0 : options.minCapacity) ?? 1;\n this.minFillRate = (options == null ? void 0 : options.minFillRate) ?? 0.5;\n this.scaleConstant = (options == null ? void 0 : options.scaleConstant) ?? 0.4;\n this.smooth = (options == null ? void 0 : options.smooth) ?? 0.8;\n const currentTimeInSeconds = this.getCurrentTimeInSeconds();\n this.lastThrottleTime = currentTimeInSeconds;\n this.lastTxRateBucket = Math.floor(this.getCurrentTimeInSeconds());\n this.fillRate = this.minFillRate;\n this.maxCapacity = this.minCapacity;\n }\n getCurrentTimeInSeconds() {\n return Date.now() / 1e3;\n }\n async getSendToken() {\n return this.acquireTokenBucket(1);\n }\n async acquireTokenBucket(amount) {\n if (!this.enabled) {\n return;\n }\n this.refillTokenBucket();\n if (amount > this.currentCapacity) {\n const delay = (amount - this.currentCapacity) / this.fillRate * 1e3;\n await new Promise((resolve) => setTimeout(resolve, delay));\n }\n this.currentCapacity = this.currentCapacity - amount;\n }\n refillTokenBucket() {\n const timestamp = this.getCurrentTimeInSeconds();\n if (!this.lastTimestamp) {\n this.lastTimestamp = timestamp;\n return;\n }\n const fillAmount = (timestamp - this.lastTimestamp) * this.fillRate;\n this.currentCapacity = Math.min(this.maxCapacity, this.currentCapacity + fillAmount);\n this.lastTimestamp = timestamp;\n }\n updateClientSendingRate(response) {\n let calculatedRate;\n this.updateMeasuredRate();\n if ((0, import_service_error_classification.isThrottlingError)(response)) {\n const rateToUse = !this.enabled ? this.measuredTxRate : Math.min(this.measuredTxRate, this.fillRate);\n this.lastMaxRate = rateToUse;\n this.calculateTimeWindow();\n this.lastThrottleTime = this.getCurrentTimeInSeconds();\n calculatedRate = this.cubicThrottle(rateToUse);\n this.enableTokenBucket();\n } else {\n this.calculateTimeWindow();\n calculatedRate = this.cubicSuccess(this.getCurrentTimeInSeconds());\n }\n const newRate = Math.min(calculatedRate, 2 * this.measuredTxRate);\n this.updateTokenBucketRate(newRate);\n }\n calculateTimeWindow() {\n this.timeWindow = this.getPrecise(Math.pow(this.lastMaxRate * (1 - this.beta) / this.scaleConstant, 1 / 3));\n }\n cubicThrottle(rateToUse) {\n return this.getPrecise(rateToUse * this.beta);\n }\n cubicSuccess(timestamp) {\n return this.getPrecise(\n this.scaleConstant * Math.pow(timestamp - this.lastThrottleTime - this.timeWindow, 3) + this.lastMaxRate\n );\n }\n enableTokenBucket() {\n this.enabled = true;\n }\n updateTokenBucketRate(newRate) {\n this.refillTokenBucket();\n this.fillRate = Math.max(newRate, this.minFillRate);\n this.maxCapacity = Math.max(newRate, this.minCapacity);\n this.currentCapacity = Math.min(this.currentCapacity, this.maxCapacity);\n }\n updateMeasuredRate() {\n const t = this.getCurrentTimeInSeconds();\n const timeBucket = Math.floor(t * 2) / 2;\n this.requestCount++;\n if (timeBucket > this.lastTxRateBucket) {\n const currentRate = this.requestCount / (timeBucket - this.lastTxRateBucket);\n this.measuredTxRate = this.getPrecise(currentRate * this.smooth + this.measuredTxRate * (1 - this.smooth));\n this.requestCount = 0;\n this.lastTxRateBucket = timeBucket;\n }\n }\n getPrecise(num) {\n return parseFloat(num.toFixed(8));\n }\n};\n__name(_DefaultRateLimiter, \"DefaultRateLimiter\");\nvar DefaultRateLimiter = _DefaultRateLimiter;\n\n// src/constants.ts\nvar DEFAULT_RETRY_DELAY_BASE = 100;\nvar MAXIMUM_RETRY_DELAY = 20 * 1e3;\nvar THROTTLING_RETRY_DELAY_BASE = 500;\nvar INITIAL_RETRY_TOKENS = 500;\nvar RETRY_COST = 5;\nvar TIMEOUT_RETRY_COST = 10;\nvar NO_RETRY_INCREMENT = 1;\nvar INVOCATION_ID_HEADER = \"amz-sdk-invocation-id\";\nvar REQUEST_HEADER = \"amz-sdk-request\";\n\n// src/defaultRetryBackoffStrategy.ts\nvar getDefaultRetryBackoffStrategy = /* @__PURE__ */ __name(() => {\n let delayBase = DEFAULT_RETRY_DELAY_BASE;\n const computeNextBackoffDelay = /* @__PURE__ */ __name((attempts) => {\n return Math.floor(Math.min(MAXIMUM_RETRY_DELAY, Math.random() * 2 ** attempts * delayBase));\n }, \"computeNextBackoffDelay\");\n const setDelayBase = /* @__PURE__ */ __name((delay) => {\n delayBase = delay;\n }, \"setDelayBase\");\n return {\n computeNextBackoffDelay,\n setDelayBase\n };\n}, \"getDefaultRetryBackoffStrategy\");\n\n// src/defaultRetryToken.ts\nvar createDefaultRetryToken = /* @__PURE__ */ __name(({\n retryDelay,\n retryCount,\n retryCost\n}) => {\n const getRetryCount = /* @__PURE__ */ __name(() => retryCount, \"getRetryCount\");\n const getRetryDelay = /* @__PURE__ */ __name(() => Math.min(MAXIMUM_RETRY_DELAY, retryDelay), \"getRetryDelay\");\n const getRetryCost = /* @__PURE__ */ __name(() => retryCost, \"getRetryCost\");\n return {\n getRetryCount,\n getRetryDelay,\n getRetryCost\n };\n}, \"createDefaultRetryToken\");\n\n// src/StandardRetryStrategy.ts\nvar _StandardRetryStrategy = class _StandardRetryStrategy {\n constructor(maxAttempts) {\n this.maxAttempts = maxAttempts;\n this.mode = \"standard\" /* STANDARD */;\n this.capacity = INITIAL_RETRY_TOKENS;\n this.retryBackoffStrategy = getDefaultRetryBackoffStrategy();\n this.maxAttemptsProvider = typeof maxAttempts === \"function\" ? maxAttempts : async () => maxAttempts;\n }\n async acquireInitialRetryToken(retryTokenScope) {\n return createDefaultRetryToken({\n retryDelay: DEFAULT_RETRY_DELAY_BASE,\n retryCount: 0\n });\n }\n async refreshRetryTokenForRetry(token, errorInfo) {\n const maxAttempts = await this.getMaxAttempts();\n if (this.shouldRetry(token, errorInfo, maxAttempts)) {\n const errorType = errorInfo.errorType;\n this.retryBackoffStrategy.setDelayBase(\n errorType === \"THROTTLING\" ? THROTTLING_RETRY_DELAY_BASE : DEFAULT_RETRY_DELAY_BASE\n );\n const delayFromErrorType = this.retryBackoffStrategy.computeNextBackoffDelay(token.getRetryCount());\n const retryDelay = errorInfo.retryAfterHint ? Math.max(errorInfo.retryAfterHint.getTime() - Date.now() || 0, delayFromErrorType) : delayFromErrorType;\n const capacityCost = this.getCapacityCost(errorType);\n this.capacity -= capacityCost;\n return createDefaultRetryToken({\n retryDelay,\n retryCount: token.getRetryCount() + 1,\n retryCost: capacityCost\n });\n }\n throw new Error(\"No retry token available\");\n }\n recordSuccess(token) {\n this.capacity = Math.max(INITIAL_RETRY_TOKENS, this.capacity + (token.getRetryCost() ?? NO_RETRY_INCREMENT));\n }\n /**\n * @returns the current available retry capacity.\n *\n * This number decreases when retries are executed and refills when requests or retries succeed.\n */\n getCapacity() {\n return this.capacity;\n }\n async getMaxAttempts() {\n try {\n return await this.maxAttemptsProvider();\n } catch (error) {\n console.warn(`Max attempts provider could not resolve. Using default of ${DEFAULT_MAX_ATTEMPTS}`);\n return DEFAULT_MAX_ATTEMPTS;\n }\n }\n shouldRetry(tokenToRenew, errorInfo, maxAttempts) {\n const attempts = tokenToRenew.getRetryCount() + 1;\n return attempts < maxAttempts && this.capacity >= this.getCapacityCost(errorInfo.errorType) && this.isRetryableError(errorInfo.errorType);\n }\n getCapacityCost(errorType) {\n return errorType === \"TRANSIENT\" ? TIMEOUT_RETRY_COST : RETRY_COST;\n }\n isRetryableError(errorType) {\n return errorType === \"THROTTLING\" || errorType === \"TRANSIENT\";\n }\n};\n__name(_StandardRetryStrategy, \"StandardRetryStrategy\");\nvar StandardRetryStrategy = _StandardRetryStrategy;\n\n// src/AdaptiveRetryStrategy.ts\nvar _AdaptiveRetryStrategy = class _AdaptiveRetryStrategy {\n constructor(maxAttemptsProvider, options) {\n this.maxAttemptsProvider = maxAttemptsProvider;\n this.mode = \"adaptive\" /* ADAPTIVE */;\n const { rateLimiter } = options ?? {};\n this.rateLimiter = rateLimiter ?? new DefaultRateLimiter();\n this.standardRetryStrategy = new StandardRetryStrategy(maxAttemptsProvider);\n }\n async acquireInitialRetryToken(retryTokenScope) {\n await this.rateLimiter.getSendToken();\n return this.standardRetryStrategy.acquireInitialRetryToken(retryTokenScope);\n }\n async refreshRetryTokenForRetry(tokenToRenew, errorInfo) {\n this.rateLimiter.updateClientSendingRate(errorInfo);\n return this.standardRetryStrategy.refreshRetryTokenForRetry(tokenToRenew, errorInfo);\n }\n recordSuccess(token) {\n this.rateLimiter.updateClientSendingRate({});\n this.standardRetryStrategy.recordSuccess(token);\n }\n};\n__name(_AdaptiveRetryStrategy, \"AdaptiveRetryStrategy\");\nvar AdaptiveRetryStrategy = _AdaptiveRetryStrategy;\n\n// src/ConfiguredRetryStrategy.ts\nvar _ConfiguredRetryStrategy = class _ConfiguredRetryStrategy extends StandardRetryStrategy {\n /**\n * @param maxAttempts - the maximum number of retry attempts allowed.\n * e.g., if set to 3, then 4 total requests are possible.\n * @param computeNextBackoffDelay - a millisecond delay for each retry or a function that takes the retry attempt\n * and returns the delay.\n *\n * @example exponential backoff.\n * ```js\n * new Client({\n * retryStrategy: new ConfiguredRetryStrategy(3, (attempt) => attempt ** 2)\n * });\n * ```\n * @example constant delay.\n * ```js\n * new Client({\n * retryStrategy: new ConfiguredRetryStrategy(3, 2000)\n * });\n * ```\n */\n constructor(maxAttempts, computeNextBackoffDelay = DEFAULT_RETRY_DELAY_BASE) {\n super(typeof maxAttempts === \"function\" ? maxAttempts : async () => maxAttempts);\n if (typeof computeNextBackoffDelay === \"number\") {\n this.computeNextBackoffDelay = () => computeNextBackoffDelay;\n } else {\n this.computeNextBackoffDelay = computeNextBackoffDelay;\n }\n }\n async refreshRetryTokenForRetry(tokenToRenew, errorInfo) {\n const token = await super.refreshRetryTokenForRetry(tokenToRenew, errorInfo);\n token.getRetryDelay = () => this.computeNextBackoffDelay(token.getRetryCount());\n return token;\n }\n};\n__name(_ConfiguredRetryStrategy, \"ConfiguredRetryStrategy\");\nvar ConfiguredRetryStrategy = _ConfiguredRetryStrategy;\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n AdaptiveRetryStrategy,\n ConfiguredRetryStrategy,\n DefaultRateLimiter,\n StandardRetryStrategy,\n RETRY_MODES,\n DEFAULT_MAX_ATTEMPTS,\n DEFAULT_RETRY_MODE,\n DEFAULT_RETRY_DELAY_BASE,\n MAXIMUM_RETRY_DELAY,\n THROTTLING_RETRY_DELAY_BASE,\n INITIAL_RETRY_TOKENS,\n RETRY_COST,\n TIMEOUT_RETRY_COST,\n NO_RETRY_INCREMENT,\n INVOCATION_ID_HEADER,\n REQUEST_HEADER\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getAwsChunkedEncodingStream = void 0;\nconst stream_1 = require(\"stream\");\nconst getAwsChunkedEncodingStream = (readableStream, options) => {\n const { base64Encoder, bodyLengthChecker, checksumAlgorithmFn, checksumLocationName, streamHasher } = options;\n const checksumRequired = base64Encoder !== undefined &&\n checksumAlgorithmFn !== undefined &&\n checksumLocationName !== undefined &&\n streamHasher !== undefined;\n const digest = checksumRequired ? streamHasher(checksumAlgorithmFn, readableStream) : undefined;\n const awsChunkedEncodingStream = new stream_1.Readable({ read: () => { } });\n readableStream.on(\"data\", (data) => {\n const length = bodyLengthChecker(data) || 0;\n awsChunkedEncodingStream.push(`${length.toString(16)}\\r\\n`);\n awsChunkedEncodingStream.push(data);\n awsChunkedEncodingStream.push(\"\\r\\n\");\n });\n readableStream.on(\"end\", async () => {\n awsChunkedEncodingStream.push(`0\\r\\n`);\n if (checksumRequired) {\n const checksum = base64Encoder(await digest);\n awsChunkedEncodingStream.push(`${checksumLocationName}:${checksum}\\r\\n`);\n awsChunkedEncodingStream.push(`\\r\\n`);\n }\n awsChunkedEncodingStream.push(null);\n });\n return awsChunkedEncodingStream;\n};\nexports.getAwsChunkedEncodingStream = getAwsChunkedEncodingStream;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, \"default\"), secondTarget && __copyProps(secondTarget, mod, \"default\"));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n Uint8ArrayBlobAdapter: () => Uint8ArrayBlobAdapter\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/blob/transforms.ts\nvar import_util_base64 = require(\"@smithy/util-base64\");\nvar import_util_utf8 = require(\"@smithy/util-utf8\");\nfunction transformToString(payload, encoding = \"utf-8\") {\n if (encoding === \"base64\") {\n return (0, import_util_base64.toBase64)(payload);\n }\n return (0, import_util_utf8.toUtf8)(payload);\n}\n__name(transformToString, \"transformToString\");\nfunction transformFromString(str, encoding) {\n if (encoding === \"base64\") {\n return Uint8ArrayBlobAdapter.mutate((0, import_util_base64.fromBase64)(str));\n }\n return Uint8ArrayBlobAdapter.mutate((0, import_util_utf8.fromUtf8)(str));\n}\n__name(transformFromString, \"transformFromString\");\n\n// src/blob/Uint8ArrayBlobAdapter.ts\nvar _Uint8ArrayBlobAdapter = class _Uint8ArrayBlobAdapter extends Uint8Array {\n /**\n * @param source - such as a string or Stream.\n * @returns a new Uint8ArrayBlobAdapter extending Uint8Array.\n */\n static fromString(source, encoding = \"utf-8\") {\n switch (typeof source) {\n case \"string\":\n return transformFromString(source, encoding);\n default:\n throw new Error(`Unsupported conversion from ${typeof source} to Uint8ArrayBlobAdapter.`);\n }\n }\n /**\n * @param source - Uint8Array to be mutated.\n * @returns the same Uint8Array but with prototype switched to Uint8ArrayBlobAdapter.\n */\n static mutate(source) {\n Object.setPrototypeOf(source, _Uint8ArrayBlobAdapter.prototype);\n return source;\n }\n /**\n * @param encoding - default 'utf-8'.\n * @returns the blob as string.\n */\n transformToString(encoding = \"utf-8\") {\n return transformToString(this, encoding);\n }\n};\n__name(_Uint8ArrayBlobAdapter, \"Uint8ArrayBlobAdapter\");\nvar Uint8ArrayBlobAdapter = _Uint8ArrayBlobAdapter;\n\n// src/index.ts\n__reExport(src_exports, require(\"././getAwsChunkedEncodingStream\"), module.exports);\n__reExport(src_exports, require(\"././sdk-stream-mixin\"), module.exports);\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n Uint8ArrayBlobAdapter,\n getAwsChunkedEncodingStream,\n sdkStreamMixin\n});\n\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.sdkStreamMixin = void 0;\nconst node_http_handler_1 = require(\"@smithy/node-http-handler\");\nconst util_buffer_from_1 = require(\"@smithy/util-buffer-from\");\nconst stream_1 = require(\"stream\");\nconst util_1 = require(\"util\");\nconst ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED = \"The stream has already been transformed.\";\nconst sdkStreamMixin = (stream) => {\n var _a, _b;\n if (!(stream instanceof stream_1.Readable)) {\n const name = ((_b = (_a = stream === null || stream === void 0 ? void 0 : stream.__proto__) === null || _a === void 0 ? void 0 : _a.constructor) === null || _b === void 0 ? void 0 : _b.name) || stream;\n throw new Error(`Unexpected stream implementation, expect Stream.Readable instance, got ${name}`);\n }\n let transformed = false;\n const transformToByteArray = async () => {\n if (transformed) {\n throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED);\n }\n transformed = true;\n return await (0, node_http_handler_1.streamCollector)(stream);\n };\n return Object.assign(stream, {\n transformToByteArray,\n transformToString: async (encoding) => {\n const buf = await transformToByteArray();\n if (encoding === undefined || Buffer.isEncoding(encoding)) {\n return (0, util_buffer_from_1.fromArrayBuffer)(buf.buffer, buf.byteOffset, buf.byteLength).toString(encoding);\n }\n else {\n const decoder = new util_1.TextDecoder(encoding);\n return decoder.decode(buf);\n }\n },\n transformToWebStream: () => {\n if (transformed) {\n throw new Error(ERR_MSG_STREAM_HAS_BEEN_TRANSFORMED);\n }\n if (stream.readableFlowing !== null) {\n throw new Error(\"The stream has been consumed by other callbacks.\");\n }\n if (typeof stream_1.Readable.toWeb !== \"function\") {\n throw new Error(\"Readable.toWeb() is not supported. Please make sure you are using Node.js >= 17.0.0, or polyfill is available.\");\n }\n transformed = true;\n return stream_1.Readable.toWeb(stream);\n },\n });\n};\nexports.sdkStreamMixin = sdkStreamMixin;\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n escapeUri: () => escapeUri,\n escapeUriPath: () => escapeUriPath\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/escape-uri.ts\nvar escapeUri = /* @__PURE__ */ __name((uri) => (\n // AWS percent-encodes some extra non-standard characters in a URI\n encodeURIComponent(uri).replace(/[!'()*]/g, hexEncode)\n), \"escapeUri\");\nvar hexEncode = /* @__PURE__ */ __name((c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`, \"hexEncode\");\n\n// src/escape-uri-path.ts\nvar escapeUriPath = /* @__PURE__ */ __name((uri) => uri.split(\"/\").map(escapeUri).join(\"/\"), \"escapeUriPath\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n escapeUri,\n escapeUriPath\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n fromUtf8: () => fromUtf8,\n toUint8Array: () => toUint8Array,\n toUtf8: () => toUtf8\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/fromUtf8.ts\nvar import_util_buffer_from = require(\"@smithy/util-buffer-from\");\nvar fromUtf8 = /* @__PURE__ */ __name((input) => {\n const buf = (0, import_util_buffer_from.fromString)(input, \"utf8\");\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n}, \"fromUtf8\");\n\n// src/toUint8Array.ts\nvar toUint8Array = /* @__PURE__ */ __name((data) => {\n if (typeof data === \"string\") {\n return fromUtf8(data);\n }\n if (ArrayBuffer.isView(data)) {\n return new Uint8Array(data.buffer, data.byteOffset, data.byteLength / Uint8Array.BYTES_PER_ELEMENT);\n }\n return new Uint8Array(data);\n}, \"toUint8Array\");\n\n// src/toUtf8.ts\n\nvar toUtf8 = /* @__PURE__ */ __name((input) => {\n if (typeof input === \"string\") {\n return input;\n }\n if (typeof input !== \"object\" || typeof input.byteOffset !== \"number\" || typeof input.byteLength !== \"number\") {\n throw new Error(\"@smithy/util-utf8: toUtf8 encoder function only accepts string | Uint8Array.\");\n }\n return (0, import_util_buffer_from.fromArrayBuffer)(input.buffer, input.byteOffset, input.byteLength).toString(\"utf8\");\n}, \"toUtf8\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n fromUtf8,\n toUint8Array,\n toUtf8\n});\n\n","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __name = (target, value) => __defProp(target, \"name\", { value, configurable: true });\nvar __export = (target, all) => {\n for (var name in all)\n __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n if (from && typeof from === \"object\" || typeof from === \"function\") {\n for (let key of __getOwnPropNames(from))\n if (!__hasOwnProp.call(to, key) && key !== except)\n __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n }\n return to;\n};\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar src_exports = {};\n__export(src_exports, {\n WaiterState: () => WaiterState,\n checkExceptions: () => checkExceptions,\n createWaiter: () => createWaiter,\n waiterServiceDefaults: () => waiterServiceDefaults\n});\nmodule.exports = __toCommonJS(src_exports);\n\n// src/utils/sleep.ts\nvar sleep = /* @__PURE__ */ __name((seconds) => {\n return new Promise((resolve) => setTimeout(resolve, seconds * 1e3));\n}, \"sleep\");\n\n// src/waiter.ts\nvar waiterServiceDefaults = {\n minDelay: 2,\n maxDelay: 120\n};\nvar WaiterState = /* @__PURE__ */ ((WaiterState2) => {\n WaiterState2[\"ABORTED\"] = \"ABORTED\";\n WaiterState2[\"FAILURE\"] = \"FAILURE\";\n WaiterState2[\"SUCCESS\"] = \"SUCCESS\";\n WaiterState2[\"RETRY\"] = \"RETRY\";\n WaiterState2[\"TIMEOUT\"] = \"TIMEOUT\";\n return WaiterState2;\n})(WaiterState || {});\nvar checkExceptions = /* @__PURE__ */ __name((result) => {\n if (result.state === \"ABORTED\" /* ABORTED */) {\n const abortError = new Error(\n `${JSON.stringify({\n ...result,\n reason: \"Request was aborted\"\n })}`\n );\n abortError.name = \"AbortError\";\n throw abortError;\n } else if (result.state === \"TIMEOUT\" /* TIMEOUT */) {\n const timeoutError = new Error(\n `${JSON.stringify({\n ...result,\n reason: \"Waiter has timed out\"\n })}`\n );\n timeoutError.name = \"TimeoutError\";\n throw timeoutError;\n } else if (result.state !== \"SUCCESS\" /* SUCCESS */) {\n throw new Error(`${JSON.stringify({ result })}`);\n }\n return result;\n}, \"checkExceptions\");\n\n// src/poller.ts\nvar exponentialBackoffWithJitter = /* @__PURE__ */ __name((minDelay, maxDelay, attemptCeiling, attempt) => {\n if (attempt > attemptCeiling)\n return maxDelay;\n const delay = minDelay * 2 ** (attempt - 1);\n return randomInRange(minDelay, delay);\n}, \"exponentialBackoffWithJitter\");\nvar randomInRange = /* @__PURE__ */ __name((min, max) => min + Math.random() * (max - min), \"randomInRange\");\nvar runPolling = /* @__PURE__ */ __name(async ({ minDelay, maxDelay, maxWaitTime, abortController, client, abortSignal }, input, acceptorChecks) => {\n var _a;\n const { state, reason } = await acceptorChecks(client, input);\n if (state !== \"RETRY\" /* RETRY */) {\n return { state, reason };\n }\n let currentAttempt = 1;\n const waitUntil = Date.now() + maxWaitTime * 1e3;\n const attemptCeiling = Math.log(maxDelay / minDelay) / Math.log(2) + 1;\n while (true) {\n if (((_a = abortController == null ? void 0 : abortController.signal) == null ? void 0 : _a.aborted) || (abortSignal == null ? void 0 : abortSignal.aborted)) {\n return { state: \"ABORTED\" /* ABORTED */ };\n }\n const delay = exponentialBackoffWithJitter(minDelay, maxDelay, attemptCeiling, currentAttempt);\n if (Date.now() + delay * 1e3 > waitUntil) {\n return { state: \"TIMEOUT\" /* TIMEOUT */ };\n }\n await sleep(delay);\n const { state: state2, reason: reason2 } = await acceptorChecks(client, input);\n if (state2 !== \"RETRY\" /* RETRY */) {\n return { state: state2, reason: reason2 };\n }\n currentAttempt += 1;\n }\n}, \"runPolling\");\n\n// src/utils/validate.ts\nvar validateWaiterOptions = /* @__PURE__ */ __name((options) => {\n if (options.maxWaitTime < 1) {\n throw new Error(`WaiterConfiguration.maxWaitTime must be greater than 0`);\n } else if (options.minDelay < 1) {\n throw new Error(`WaiterConfiguration.minDelay must be greater than 0`);\n } else if (options.maxDelay < 1) {\n throw new Error(`WaiterConfiguration.maxDelay must be greater than 0`);\n } else if (options.maxWaitTime <= options.minDelay) {\n throw new Error(\n `WaiterConfiguration.maxWaitTime [${options.maxWaitTime}] must be greater than WaiterConfiguration.minDelay [${options.minDelay}] for this waiter`\n );\n } else if (options.maxDelay < options.minDelay) {\n throw new Error(\n `WaiterConfiguration.maxDelay [${options.maxDelay}] must be greater than WaiterConfiguration.minDelay [${options.minDelay}] for this waiter`\n );\n }\n}, \"validateWaiterOptions\");\n\n// src/createWaiter.ts\nvar abortTimeout = /* @__PURE__ */ __name(async (abortSignal) => {\n return new Promise((resolve) => {\n abortSignal.onabort = () => resolve({ state: \"ABORTED\" /* ABORTED */ });\n });\n}, \"abortTimeout\");\nvar createWaiter = /* @__PURE__ */ __name(async (options, input, acceptorChecks) => {\n const params = {\n ...waiterServiceDefaults,\n ...options\n };\n validateWaiterOptions(params);\n const exitConditions = [runPolling(params, input, acceptorChecks)];\n if (options.abortController) {\n exitConditions.push(abortTimeout(options.abortController.signal));\n }\n if (options.abortSignal) {\n exitConditions.push(abortTimeout(options.abortSignal));\n }\n return Promise.race(exitConditions);\n}, \"createWaiter\");\n// Annotate the CommonJS export names for ESM import in node:\n\n0 && (module.exports = {\n createWaiter,\n waiterServiceDefaults,\n WaiterState,\n checkExceptions\n});\n\n","'use strict';\n\nmodule.exports = ({onlyFirst = false} = {}) => {\n\tconst pattern = [\n\t\t'[\\\\u001B\\\\u009B][[\\\\]()#;?]*(?:(?:(?:(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]+)*|[a-zA-Z\\\\d]+(?:;[-a-zA-Z\\\\d\\\\/#&.:=?%@~_]*)*)?\\\\u0007)',\n\t\t'(?:(?:\\\\d{1,4}(?:;\\\\d{0,4})*)?[\\\\dA-PR-TZcf-ntqry=><~]))'\n\t].join('|');\n\n\treturn new RegExp(pattern, onlyFirst ? undefined : 'g');\n};\n","'use strict';\n\nconst wrapAnsi16 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${code + offset}m`;\n};\n\nconst wrapAnsi256 = (fn, offset) => (...args) => {\n\tconst code = fn(...args);\n\treturn `\\u001B[${38 + offset};5;${code}m`;\n};\n\nconst wrapAnsi16m = (fn, offset) => (...args) => {\n\tconst rgb = fn(...args);\n\treturn `\\u001B[${38 + offset};2;${rgb[0]};${rgb[1]};${rgb[2]}m`;\n};\n\nconst ansi2ansi = n => n;\nconst rgb2rgb = (r, g, b) => [r, g, b];\n\nconst setLazyProperty = (object, property, get) => {\n\tObject.defineProperty(object, property, {\n\t\tget: () => {\n\t\t\tconst value = get();\n\n\t\t\tObject.defineProperty(object, property, {\n\t\t\t\tvalue,\n\t\t\t\tenumerable: true,\n\t\t\t\tconfigurable: true\n\t\t\t});\n\n\t\t\treturn value;\n\t\t},\n\t\tenumerable: true,\n\t\tconfigurable: true\n\t});\n};\n\n/** @type {typeof import('color-convert')} */\nlet colorConvert;\nconst makeDynamicStyles = (wrap, targetSpace, identity, isBackground) => {\n\tif (colorConvert === undefined) {\n\t\tcolorConvert = require('color-convert');\n\t}\n\n\tconst offset = isBackground ? 10 : 0;\n\tconst styles = {};\n\n\tfor (const [sourceSpace, suite] of Object.entries(colorConvert)) {\n\t\tconst name = sourceSpace === 'ansi16' ? 'ansi' : sourceSpace;\n\t\tif (sourceSpace === targetSpace) {\n\t\t\tstyles[name] = wrap(identity, offset);\n\t\t} else if (typeof suite === 'object') {\n\t\t\tstyles[name] = wrap(suite[targetSpace], offset);\n\t\t}\n\t}\n\n\treturn styles;\n};\n\nfunction assembleStyles() {\n\tconst codes = new Map();\n\tconst styles = {\n\t\tmodifier: {\n\t\t\treset: [0, 0],\n\t\t\t// 21 isn't widely supported and 22 does the same thing\n\t\t\tbold: [1, 22],\n\t\t\tdim: [2, 22],\n\t\t\titalic: [3, 23],\n\t\t\tunderline: [4, 24],\n\t\t\tinverse: [7, 27],\n\t\t\thidden: [8, 28],\n\t\t\tstrikethrough: [9, 29]\n\t\t},\n\t\tcolor: {\n\t\t\tblack: [30, 39],\n\t\t\tred: [31, 39],\n\t\t\tgreen: [32, 39],\n\t\t\tyellow: [33, 39],\n\t\t\tblue: [34, 39],\n\t\t\tmagenta: [35, 39],\n\t\t\tcyan: [36, 39],\n\t\t\twhite: [37, 39],\n\n\t\t\t// Bright color\n\t\t\tblackBright: [90, 39],\n\t\t\tredBright: [91, 39],\n\t\t\tgreenBright: [92, 39],\n\t\t\tyellowBright: [93, 39],\n\t\t\tblueBright: [94, 39],\n\t\t\tmagentaBright: [95, 39],\n\t\t\tcyanBright: [96, 39],\n\t\t\twhiteBright: [97, 39]\n\t\t},\n\t\tbgColor: {\n\t\t\tbgBlack: [40, 49],\n\t\t\tbgRed: [41, 49],\n\t\t\tbgGreen: [42, 49],\n\t\t\tbgYellow: [43, 49],\n\t\t\tbgBlue: [44, 49],\n\t\t\tbgMagenta: [45, 49],\n\t\t\tbgCyan: [46, 49],\n\t\t\tbgWhite: [47, 49],\n\n\t\t\t// Bright color\n\t\t\tbgBlackBright: [100, 49],\n\t\t\tbgRedBright: [101, 49],\n\t\t\tbgGreenBright: [102, 49],\n\t\t\tbgYellowBright: [103, 49],\n\t\t\tbgBlueBright: [104, 49],\n\t\t\tbgMagentaBright: [105, 49],\n\t\t\tbgCyanBright: [106, 49],\n\t\t\tbgWhiteBright: [107, 49]\n\t\t}\n\t};\n\n\t// Alias bright black as gray (and grey)\n\tstyles.color.gray = styles.color.blackBright;\n\tstyles.bgColor.bgGray = styles.bgColor.bgBlackBright;\n\tstyles.color.grey = styles.color.blackBright;\n\tstyles.bgColor.bgGrey = styles.bgColor.bgBlackBright;\n\n\tfor (const [groupName, group] of Object.entries(styles)) {\n\t\tfor (const [styleName, style] of Object.entries(group)) {\n\t\t\tstyles[styleName] = {\n\t\t\t\topen: `\\u001B[${style[0]}m`,\n\t\t\t\tclose: `\\u001B[${style[1]}m`\n\t\t\t};\n\n\t\t\tgroup[styleName] = styles[styleName];\n\n\t\t\tcodes.set(style[0], style[1]);\n\t\t}\n\n\t\tObject.defineProperty(styles, groupName, {\n\t\t\tvalue: group,\n\t\t\tenumerable: false\n\t\t});\n\t}\n\n\tObject.defineProperty(styles, 'codes', {\n\t\tvalue: codes,\n\t\tenumerable: false\n\t});\n\n\tstyles.color.close = '\\u001B[39m';\n\tstyles.bgColor.close = '\\u001B[49m';\n\n\tsetLazyProperty(styles.color, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, false));\n\tsetLazyProperty(styles.color, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, false));\n\tsetLazyProperty(styles.bgColor, 'ansi', () => makeDynamicStyles(wrapAnsi16, 'ansi16', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi256', () => makeDynamicStyles(wrapAnsi256, 'ansi256', ansi2ansi, true));\n\tsetLazyProperty(styles.bgColor, 'ansi16m', () => makeDynamicStyles(wrapAnsi16m, 'rgb', rgb2rgb, true));\n\n\treturn styles;\n}\n\n// Make the export immutable\nObject.defineProperty(module, 'exports', {\n\tenumerable: true,\n\tget: assembleStyles\n});\n","'use strict';\nconst regex = '[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]';\n\nconst astralRegex = options => options && options.exact ? new RegExp(`^${regex}$`) : new RegExp(regex, 'g');\n\nmodule.exports = astralRegex;\n","var register = require(\"./lib/register\");\nvar addHook = require(\"./lib/add\");\nvar removeHook = require(\"./lib/remove\");\n\n// bind with array of arguments: https://stackoverflow.com/a/21792913\nvar bind = Function.bind;\nvar bindable = bind.bind(bind);\n\nfunction bindApi(hook, state, name) {\n var removeHookRef = bindable(removeHook, null).apply(\n null,\n name ? [state, name] : [state]\n );\n hook.api = { remove: removeHookRef };\n hook.remove = removeHookRef;\n [\"before\", \"error\", \"after\", \"wrap\"].forEach(function (kind) {\n var args = name ? [state, kind, name] : [state, kind];\n hook[kind] = hook.api[kind] = bindable(addHook, null).apply(null, args);\n });\n}\n\nfunction HookSingular() {\n var singularHookName = \"h\";\n var singularHookState = {\n registry: {},\n };\n var singularHook = register.bind(null, singularHookState, singularHookName);\n bindApi(singularHook, singularHookState, singularHookName);\n return singularHook;\n}\n\nfunction HookCollection() {\n var state = {\n registry: {},\n };\n\n var hook = register.bind(null, state);\n bindApi(hook, state);\n\n return hook;\n}\n\nvar collectionHookDeprecationMessageDisplayed = false;\nfunction Hook() {\n if (!collectionHookDeprecationMessageDisplayed) {\n console.warn(\n '[before-after-hook]: \"Hook()\" repurposing warning, use \"Hook.Collection()\". Read more: https://git.io/upgrade-before-after-hook-to-1.4'\n );\n collectionHookDeprecationMessageDisplayed = true;\n }\n return HookCollection();\n}\n\nHook.Singular = HookSingular.bind();\nHook.Collection = HookCollection.bind();\n\nmodule.exports = Hook;\n// expose constructors as a named property for TypeScript\nmodule.exports.Hook = Hook;\nmodule.exports.Singular = Hook.Singular;\nmodule.exports.Collection = Hook.Collection;\n","module.exports = addHook;\n\nfunction addHook(state, kind, name, hook) {\n var orig = hook;\n if (!state.registry[name]) {\n state.registry[name] = [];\n }\n\n if (kind === \"before\") {\n hook = function (method, options) {\n return Promise.resolve()\n .then(orig.bind(null, options))\n .then(method.bind(null, options));\n };\n }\n\n if (kind === \"after\") {\n hook = function (method, options) {\n var result;\n return Promise.resolve()\n .then(method.bind(null, options))\n .then(function (result_) {\n result = result_;\n return orig(result, options);\n })\n .then(function () {\n return result;\n });\n };\n }\n\n if (kind === \"error\") {\n hook = function (method, options) {\n return Promise.resolve()\n .then(method.bind(null, options))\n .catch(function (error) {\n return orig(error, options);\n });\n };\n }\n\n state.registry[name].push({\n hook: hook,\n orig: orig,\n });\n}\n","module.exports = register;\n\nfunction register(state, name, method, options) {\n if (typeof method !== \"function\") {\n throw new Error(\"method for before hook must be a function\");\n }\n\n if (!options) {\n options = {};\n }\n\n if (Array.isArray(name)) {\n return name.reverse().reduce(function (callback, name) {\n return register.bind(null, state, name, callback, options);\n }, method)();\n }\n\n return Promise.resolve().then(function () {\n if (!state.registry[name]) {\n return method(options);\n }\n\n return state.registry[name].reduce(function (method, registered) {\n return registered.hook.bind(null, method, options);\n }, method)();\n });\n}\n","module.exports = removeHook;\n\nfunction removeHook(state, name, method) {\n if (!state.registry[name]) {\n return;\n }\n\n var index = state.registry[name]\n .map(function (registered) {\n return registered.orig;\n })\n .indexOf(method);\n\n if (index === -1) {\n return;\n }\n\n state.registry[name].splice(index, 1);\n}\n","'use strict';\nconst ansiStyles = require('ansi-styles');\nconst {stdout: stdoutColor, stderr: stderrColor} = require('supports-color');\nconst {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n} = require('./util');\n\nconst {isArray} = Array;\n\n// `supportsColor.level` → `ansiStyles.color[name]` mapping\nconst levelMapping = [\n\t'ansi',\n\t'ansi',\n\t'ansi256',\n\t'ansi16m'\n];\n\nconst styles = Object.create(null);\n\nconst applyOptions = (object, options = {}) => {\n\tif (options.level && !(Number.isInteger(options.level) && options.level >= 0 && options.level <= 3)) {\n\t\tthrow new Error('The `level` option should be an integer from 0 to 3');\n\t}\n\n\t// Detect level if not set manually\n\tconst colorLevel = stdoutColor ? stdoutColor.level : 0;\n\tobject.level = options.level === undefined ? colorLevel : options.level;\n};\n\nclass ChalkClass {\n\tconstructor(options) {\n\t\t// eslint-disable-next-line no-constructor-return\n\t\treturn chalkFactory(options);\n\t}\n}\n\nconst chalkFactory = options => {\n\tconst chalk = {};\n\tapplyOptions(chalk, options);\n\n\tchalk.template = (...arguments_) => chalkTag(chalk.template, ...arguments_);\n\n\tObject.setPrototypeOf(chalk, Chalk.prototype);\n\tObject.setPrototypeOf(chalk.template, chalk);\n\n\tchalk.template.constructor = () => {\n\t\tthrow new Error('`chalk.constructor()` is deprecated. Use `new chalk.Instance()` instead.');\n\t};\n\n\tchalk.template.Instance = ChalkClass;\n\n\treturn chalk.template;\n};\n\nfunction Chalk(options) {\n\treturn chalkFactory(options);\n}\n\nfor (const [styleName, style] of Object.entries(ansiStyles)) {\n\tstyles[styleName] = {\n\t\tget() {\n\t\t\tconst builder = createBuilder(this, createStyler(style.open, style.close, this._styler), this._isEmpty);\n\t\t\tObject.defineProperty(this, styleName, {value: builder});\n\t\t\treturn builder;\n\t\t}\n\t};\n}\n\nstyles.visible = {\n\tget() {\n\t\tconst builder = createBuilder(this, this._styler, true);\n\t\tObject.defineProperty(this, 'visible', {value: builder});\n\t\treturn builder;\n\t}\n};\n\nconst usedModels = ['rgb', 'hex', 'keyword', 'hsl', 'hsv', 'hwb', 'ansi', 'ansi256'];\n\nfor (const model of usedModels) {\n\tstyles[model] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.color[levelMapping[level]][model](...arguments_), ansiStyles.color.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nfor (const model of usedModels) {\n\tconst bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);\n\tstyles[bgModel] = {\n\t\tget() {\n\t\t\tconst {level} = this;\n\t\t\treturn function (...arguments_) {\n\t\t\t\tconst styler = createStyler(ansiStyles.bgColor[levelMapping[level]][model](...arguments_), ansiStyles.bgColor.close, this._styler);\n\t\t\t\treturn createBuilder(this, styler, this._isEmpty);\n\t\t\t};\n\t\t}\n\t};\n}\n\nconst proto = Object.defineProperties(() => {}, {\n\t...styles,\n\tlevel: {\n\t\tenumerable: true,\n\t\tget() {\n\t\t\treturn this._generator.level;\n\t\t},\n\t\tset(level) {\n\t\t\tthis._generator.level = level;\n\t\t}\n\t}\n});\n\nconst createStyler = (open, close, parent) => {\n\tlet openAll;\n\tlet closeAll;\n\tif (parent === undefined) {\n\t\topenAll = open;\n\t\tcloseAll = close;\n\t} else {\n\t\topenAll = parent.openAll + open;\n\t\tcloseAll = close + parent.closeAll;\n\t}\n\n\treturn {\n\t\topen,\n\t\tclose,\n\t\topenAll,\n\t\tcloseAll,\n\t\tparent\n\t};\n};\n\nconst createBuilder = (self, _styler, _isEmpty) => {\n\tconst builder = (...arguments_) => {\n\t\tif (isArray(arguments_[0]) && isArray(arguments_[0].raw)) {\n\t\t\t// Called as a template literal, for example: chalk.red`2 + 3 = {bold ${2+3}}`\n\t\t\treturn applyStyle(builder, chalkTag(builder, ...arguments_));\n\t\t}\n\n\t\t// Single argument is hot path, implicit coercion is faster than anything\n\t\t// eslint-disable-next-line no-implicit-coercion\n\t\treturn applyStyle(builder, (arguments_.length === 1) ? ('' + arguments_[0]) : arguments_.join(' '));\n\t};\n\n\t// We alter the prototype because we must return a function, but there is\n\t// no way to create a function with a different prototype\n\tObject.setPrototypeOf(builder, proto);\n\n\tbuilder._generator = self;\n\tbuilder._styler = _styler;\n\tbuilder._isEmpty = _isEmpty;\n\n\treturn builder;\n};\n\nconst applyStyle = (self, string) => {\n\tif (self.level <= 0 || !string) {\n\t\treturn self._isEmpty ? '' : string;\n\t}\n\n\tlet styler = self._styler;\n\n\tif (styler === undefined) {\n\t\treturn string;\n\t}\n\n\tconst {openAll, closeAll} = styler;\n\tif (string.indexOf('\\u001B') !== -1) {\n\t\twhile (styler !== undefined) {\n\t\t\t// Replace any instances already present with a re-opening code\n\t\t\t// otherwise only the part of the string until said closing code\n\t\t\t// will be colored, and the rest will simply be 'plain'.\n\t\t\tstring = stringReplaceAll(string, styler.close, styler.open);\n\n\t\t\tstyler = styler.parent;\n\t\t}\n\t}\n\n\t// We can move both next actions out of loop, because remaining actions in loop won't have\n\t// any/visible effect on parts we add here. Close the styling before a linebreak and reopen\n\t// after next line to fix a bleed issue on macOS: https://github.com/chalk/chalk/pull/92\n\tconst lfIndex = string.indexOf('\\n');\n\tif (lfIndex !== -1) {\n\t\tstring = stringEncaseCRLFWithFirstIndex(string, closeAll, openAll, lfIndex);\n\t}\n\n\treturn openAll + string + closeAll;\n};\n\nlet template;\nconst chalkTag = (chalk, ...strings) => {\n\tconst [firstString] = strings;\n\n\tif (!isArray(firstString) || !isArray(firstString.raw)) {\n\t\t// If chalk() was called by itself or with a string,\n\t\t// return the string itself as a string.\n\t\treturn strings.join(' ');\n\t}\n\n\tconst arguments_ = strings.slice(1);\n\tconst parts = [firstString.raw[0]];\n\n\tfor (let i = 1; i < firstString.length; i++) {\n\t\tparts.push(\n\t\t\tString(arguments_[i - 1]).replace(/[{}\\\\]/g, '\\\\$&'),\n\t\t\tString(firstString.raw[i])\n\t\t);\n\t}\n\n\tif (template === undefined) {\n\t\ttemplate = require('./templates');\n\t}\n\n\treturn template(chalk, parts.join(''));\n};\n\nObject.defineProperties(Chalk.prototype, styles);\n\nconst chalk = Chalk(); // eslint-disable-line new-cap\nchalk.supportsColor = stdoutColor;\nchalk.stderr = Chalk({level: stderrColor ? stderrColor.level : 0}); // eslint-disable-line new-cap\nchalk.stderr.supportsColor = stderrColor;\n\nmodule.exports = chalk;\n","'use strict';\nconst TEMPLATE_REGEX = /(?:\\\\(u(?:[a-f\\d]{4}|\\{[a-f\\d]{1,6}\\})|x[a-f\\d]{2}|.))|(?:\\{(~)?(\\w+(?:\\([^)]*\\))?(?:\\.\\w+(?:\\([^)]*\\))?)*)(?:[ \\t]|(?=\\r?\\n)))|(\\})|((?:.|[\\r\\n\\f])+?)/gi;\nconst STYLE_REGEX = /(?:^|\\.)(\\w+)(?:\\(([^)]*)\\))?/g;\nconst STRING_REGEX = /^(['\"])((?:\\\\.|(?!\\1)[^\\\\])*)\\1$/;\nconst ESCAPE_REGEX = /\\\\(u(?:[a-f\\d]{4}|{[a-f\\d]{1,6}})|x[a-f\\d]{2}|.)|([^\\\\])/gi;\n\nconst ESCAPES = new Map([\n\t['n', '\\n'],\n\t['r', '\\r'],\n\t['t', '\\t'],\n\t['b', '\\b'],\n\t['f', '\\f'],\n\t['v', '\\v'],\n\t['0', '\\0'],\n\t['\\\\', '\\\\'],\n\t['e', '\\u001B'],\n\t['a', '\\u0007']\n]);\n\nfunction unescape(c) {\n\tconst u = c[0] === 'u';\n\tconst bracket = c[1] === '{';\n\n\tif ((u && !bracket && c.length === 5) || (c[0] === 'x' && c.length === 3)) {\n\t\treturn String.fromCharCode(parseInt(c.slice(1), 16));\n\t}\n\n\tif (u && bracket) {\n\t\treturn String.fromCodePoint(parseInt(c.slice(2, -1), 16));\n\t}\n\n\treturn ESCAPES.get(c) || c;\n}\n\nfunction parseArguments(name, arguments_) {\n\tconst results = [];\n\tconst chunks = arguments_.trim().split(/\\s*,\\s*/g);\n\tlet matches;\n\n\tfor (const chunk of chunks) {\n\t\tconst number = Number(chunk);\n\t\tif (!Number.isNaN(number)) {\n\t\t\tresults.push(number);\n\t\t} else if ((matches = chunk.match(STRING_REGEX))) {\n\t\t\tresults.push(matches[2].replace(ESCAPE_REGEX, (m, escape, character) => escape ? unescape(escape) : character));\n\t\t} else {\n\t\t\tthrow new Error(`Invalid Chalk template style argument: ${chunk} (in style '${name}')`);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction parseStyle(style) {\n\tSTYLE_REGEX.lastIndex = 0;\n\n\tconst results = [];\n\tlet matches;\n\n\twhile ((matches = STYLE_REGEX.exec(style)) !== null) {\n\t\tconst name = matches[1];\n\n\t\tif (matches[2]) {\n\t\t\tconst args = parseArguments(name, matches[2]);\n\t\t\tresults.push([name].concat(args));\n\t\t} else {\n\t\t\tresults.push([name]);\n\t\t}\n\t}\n\n\treturn results;\n}\n\nfunction buildStyle(chalk, styles) {\n\tconst enabled = {};\n\n\tfor (const layer of styles) {\n\t\tfor (const style of layer.styles) {\n\t\t\tenabled[style[0]] = layer.inverse ? null : style.slice(1);\n\t\t}\n\t}\n\n\tlet current = chalk;\n\tfor (const [styleName, styles] of Object.entries(enabled)) {\n\t\tif (!Array.isArray(styles)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (!(styleName in current)) {\n\t\t\tthrow new Error(`Unknown Chalk style: ${styleName}`);\n\t\t}\n\n\t\tcurrent = styles.length > 0 ? current[styleName](...styles) : current[styleName];\n\t}\n\n\treturn current;\n}\n\nmodule.exports = (chalk, temporary) => {\n\tconst styles = [];\n\tconst chunks = [];\n\tlet chunk = [];\n\n\t// eslint-disable-next-line max-params\n\ttemporary.replace(TEMPLATE_REGEX, (m, escapeCharacter, inverse, style, close, character) => {\n\t\tif (escapeCharacter) {\n\t\t\tchunk.push(unescape(escapeCharacter));\n\t\t} else if (style) {\n\t\t\tconst string = chunk.join('');\n\t\t\tchunk = [];\n\t\t\tchunks.push(styles.length === 0 ? string : buildStyle(chalk, styles)(string));\n\t\t\tstyles.push({inverse, styles: parseStyle(style)});\n\t\t} else if (close) {\n\t\t\tif (styles.length === 0) {\n\t\t\t\tthrow new Error('Found extraneous } in Chalk template literal');\n\t\t\t}\n\n\t\t\tchunks.push(buildStyle(chalk, styles)(chunk.join('')));\n\t\t\tchunk = [];\n\t\t\tstyles.pop();\n\t\t} else {\n\t\t\tchunk.push(character);\n\t\t}\n\t});\n\n\tchunks.push(chunk.join(''));\n\n\tif (styles.length > 0) {\n\t\tconst errMessage = `Chalk template literal is missing ${styles.length} closing bracket${styles.length === 1 ? '' : 's'} (\\`}\\`)`;\n\t\tthrow new Error(errMessage);\n\t}\n\n\treturn chunks.join('');\n};\n","'use strict';\n\nconst stringReplaceAll = (string, substring, replacer) => {\n\tlet index = string.indexOf(substring);\n\tif (index === -1) {\n\t\treturn string;\n\t}\n\n\tconst substringLength = substring.length;\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\treturnValue += string.substr(endIndex, index - endIndex) + substring + replacer;\n\t\tendIndex = index + substringLength;\n\t\tindex = string.indexOf(substring, endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nconst stringEncaseCRLFWithFirstIndex = (string, prefix, postfix, index) => {\n\tlet endIndex = 0;\n\tlet returnValue = '';\n\tdo {\n\t\tconst gotCR = string[index - 1] === '\\r';\n\t\treturnValue += string.substr(endIndex, (gotCR ? index - 1 : index) - endIndex) + prefix + (gotCR ? '\\r\\n' : '\\n') + postfix;\n\t\tendIndex = index + 1;\n\t\tindex = string.indexOf('\\n', endIndex);\n\t} while (index !== -1);\n\n\treturnValue += string.substr(endIndex);\n\treturn returnValue;\n};\n\nmodule.exports = {\n\tstringReplaceAll,\n\tstringEncaseCRLFWithFirstIndex\n};\n","/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = require('color-name');\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n","const conversions = require('./conversions');\nconst route = require('./route');\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n","const conversions = require('./conversions');\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nclass Deprecation extends Error {\n constructor(message) {\n super(message); // Maintains proper stack trace (only available on V8)\n\n /* istanbul ignore next */\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n }\n\n this.name = 'Deprecation';\n }\n\n}\n\nexports.Deprecation = Deprecation;\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.convertChangesToDMP = convertChangesToDMP;\n\n/*istanbul ignore end*/\n// See: http://code.google.com/p/google-diff-match-patch/wiki/API\nfunction convertChangesToDMP(changes) {\n var ret = [],\n change,\n operation;\n\n for (var i = 0; i < changes.length; i++) {\n change = changes[i];\n\n if (change.added) {\n operation = 1;\n } else if (change.removed) {\n operation = -1;\n } else {\n operation = 0;\n }\n\n ret.push([operation, change.value]);\n }\n\n return ret;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L2RtcC5qcyJdLCJuYW1lcyI6WyJjb252ZXJ0Q2hhbmdlc1RvRE1QIiwiY2hhbmdlcyIsInJldCIsImNoYW5nZSIsIm9wZXJhdGlvbiIsImkiLCJsZW5ndGgiLCJhZGRlZCIsInJlbW92ZWQiLCJwdXNoIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ08sU0FBU0EsbUJBQVQsQ0FBNkJDLE9BQTdCLEVBQXNDO0FBQzNDLE1BQUlDLEdBQUcsR0FBRyxFQUFWO0FBQUEsTUFDSUMsTUFESjtBQUFBLE1BRUlDLFNBRko7O0FBR0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHSixPQUFPLENBQUNLLE1BQTVCLEVBQW9DRCxDQUFDLEVBQXJDLEVBQXlDO0FBQ3ZDRixJQUFBQSxNQUFNLEdBQUdGLE9BQU8sQ0FBQ0ksQ0FBRCxDQUFoQjs7QUFDQSxRQUFJRixNQUFNLENBQUNJLEtBQVgsRUFBa0I7QUFDaEJILE1BQUFBLFNBQVMsR0FBRyxDQUFaO0FBQ0QsS0FGRCxNQUVPLElBQUlELE1BQU0sQ0FBQ0ssT0FBWCxFQUFvQjtBQUN6QkosTUFBQUEsU0FBUyxHQUFHLENBQUMsQ0FBYjtBQUNELEtBRk0sTUFFQTtBQUNMQSxNQUFBQSxTQUFTLEdBQUcsQ0FBWjtBQUNEOztBQUVERixJQUFBQSxHQUFHLENBQUNPLElBQUosQ0FBUyxDQUFDTCxTQUFELEVBQVlELE1BQU0sQ0FBQ08sS0FBbkIsQ0FBVDtBQUNEOztBQUNELFNBQU9SLEdBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbIi8vIFNlZTogaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dvb2dsZS1kaWZmLW1hdGNoLXBhdGNoL3dpa2kvQVBJXG5leHBvcnQgZnVuY3Rpb24gY29udmVydENoYW5nZXNUb0RNUChjaGFuZ2VzKSB7XG4gIGxldCByZXQgPSBbXSxcbiAgICAgIGNoYW5nZSxcbiAgICAgIG9wZXJhdGlvbjtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgY2hhbmdlID0gY2hhbmdlc1tpXTtcbiAgICBpZiAoY2hhbmdlLmFkZGVkKSB7XG4gICAgICBvcGVyYXRpb24gPSAxO1xuICAgIH0gZWxzZSBpZiAoY2hhbmdlLnJlbW92ZWQpIHtcbiAgICAgIG9wZXJhdGlvbiA9IC0xO1xuICAgIH0gZWxzZSB7XG4gICAgICBvcGVyYXRpb24gPSAwO1xuICAgIH1cblxuICAgIHJldC5wdXNoKFtvcGVyYXRpb24sIGNoYW5nZS52YWx1ZV0pO1xuICB9XG4gIHJldHVybiByZXQ7XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.convertChangesToXML = convertChangesToXML;\n\n/*istanbul ignore end*/\nfunction convertChangesToXML(changes) {\n var ret = [];\n\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n\n if (change.added) {\n ret.push('');\n } else if (change.removed) {\n ret.push('');\n }\n\n ret.push(escapeHTML(change.value));\n\n if (change.added) {\n ret.push('');\n } else if (change.removed) {\n ret.push('');\n }\n }\n\n return ret.join('');\n}\n\nfunction escapeHTML(s) {\n var n = s;\n n = n.replace(/&/g, '&');\n n = n.replace(//g, '>');\n n = n.replace(/\"/g, '"');\n return n;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L3htbC5qcyJdLCJuYW1lcyI6WyJjb252ZXJ0Q2hhbmdlc1RvWE1MIiwiY2hhbmdlcyIsInJldCIsImkiLCJsZW5ndGgiLCJjaGFuZ2UiLCJhZGRlZCIsInB1c2giLCJyZW1vdmVkIiwiZXNjYXBlSFRNTCIsInZhbHVlIiwiam9pbiIsInMiLCJuIiwicmVwbGFjZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsbUJBQVQsQ0FBNkJDLE9BQTdCLEVBQXNDO0FBQzNDLE1BQUlDLEdBQUcsR0FBRyxFQUFWOztBQUNBLE9BQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0YsT0FBTyxDQUFDRyxNQUE1QixFQUFvQ0QsQ0FBQyxFQUFyQyxFQUF5QztBQUN2QyxRQUFJRSxNQUFNLEdBQUdKLE9BQU8sQ0FBQ0UsQ0FBRCxDQUFwQjs7QUFDQSxRQUFJRSxNQUFNLENBQUNDLEtBQVgsRUFBa0I7QUFDaEJKLE1BQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTLE9BQVQ7QUFDRCxLQUZELE1BRU8sSUFBSUYsTUFBTSxDQUFDRyxPQUFYLEVBQW9CO0FBQ3pCTixNQUFBQSxHQUFHLENBQUNLLElBQUosQ0FBUyxPQUFUO0FBQ0Q7O0FBRURMLElBQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTRSxVQUFVLENBQUNKLE1BQU0sQ0FBQ0ssS0FBUixDQUFuQjs7QUFFQSxRQUFJTCxNQUFNLENBQUNDLEtBQVgsRUFBa0I7QUFDaEJKLE1BQUFBLEdBQUcsQ0FBQ0ssSUFBSixDQUFTLFFBQVQ7QUFDRCxLQUZELE1BRU8sSUFBSUYsTUFBTSxDQUFDRyxPQUFYLEVBQW9CO0FBQ3pCTixNQUFBQSxHQUFHLENBQUNLLElBQUosQ0FBUyxRQUFUO0FBQ0Q7QUFDRjs7QUFDRCxTQUFPTCxHQUFHLENBQUNTLElBQUosQ0FBUyxFQUFULENBQVA7QUFDRDs7QUFFRCxTQUFTRixVQUFULENBQW9CRyxDQUFwQixFQUF1QjtBQUNyQixNQUFJQyxDQUFDLEdBQUdELENBQVI7QUFDQUMsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE9BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE1BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLE1BQWhCLENBQUo7QUFDQUQsRUFBQUEsQ0FBQyxHQUFHQSxDQUFDLENBQUNDLE9BQUYsQ0FBVSxJQUFWLEVBQWdCLFFBQWhCLENBQUo7QUFFQSxTQUFPRCxDQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY29udmVydENoYW5nZXNUb1hNTChjaGFuZ2VzKSB7XG4gIGxldCByZXQgPSBbXTtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGFuZ2VzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGNoYW5nZSA9IGNoYW5nZXNbaV07XG4gICAgaWYgKGNoYW5nZS5hZGRlZCkge1xuICAgICAgcmV0LnB1c2goJzxpbnM+Jyk7XG4gICAgfSBlbHNlIGlmIChjaGFuZ2UucmVtb3ZlZCkge1xuICAgICAgcmV0LnB1c2goJzxkZWw+Jyk7XG4gICAgfVxuXG4gICAgcmV0LnB1c2goZXNjYXBlSFRNTChjaGFuZ2UudmFsdWUpKTtcblxuICAgIGlmIChjaGFuZ2UuYWRkZWQpIHtcbiAgICAgIHJldC5wdXNoKCc8L2lucz4nKTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZS5yZW1vdmVkKSB7XG4gICAgICByZXQucHVzaCgnPC9kZWw+Jyk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZXQuam9pbignJyk7XG59XG5cbmZ1bmN0aW9uIGVzY2FwZUhUTUwocykge1xuICBsZXQgbiA9IHM7XG4gIG4gPSBuLnJlcGxhY2UoLyYvZywgJyZhbXA7Jyk7XG4gIG4gPSBuLnJlcGxhY2UoLzwvZywgJyZsdDsnKTtcbiAgbiA9IG4ucmVwbGFjZSgvPi9nLCAnJmd0OycpO1xuICBuID0gbi5yZXBsYWNlKC9cIi9nLCAnJnF1b3Q7Jyk7XG5cbiAgcmV0dXJuIG47XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffArrays = diffArrays;\nexports.arrayDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar arrayDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.arrayDiff = arrayDiff;\n\n/*istanbul ignore end*/\narrayDiff.tokenize = function (value) {\n return value.slice();\n};\n\narrayDiff.join = arrayDiff.removeEmpty = function (value) {\n return value;\n};\n\nfunction diffArrays(oldArr, newArr, callback) {\n return arrayDiff.diff(oldArr, newArr, callback);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2FycmF5LmpzIl0sIm5hbWVzIjpbImFycmF5RGlmZiIsIkRpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic2xpY2UiLCJqb2luIiwicmVtb3ZlRW1wdHkiLCJkaWZmQXJyYXlzIiwib2xkQXJyIiwibmV3QXJyIiwiY2FsbGJhY2siLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxJQUFNQSxTQUFTLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUFsQjs7Ozs7O0FBQ1BELFNBQVMsQ0FBQ0UsUUFBVixHQUFxQixVQUFTQyxLQUFULEVBQWdCO0FBQ25DLFNBQU9BLEtBQUssQ0FBQ0MsS0FBTixFQUFQO0FBQ0QsQ0FGRDs7QUFHQUosU0FBUyxDQUFDSyxJQUFWLEdBQWlCTCxTQUFTLENBQUNNLFdBQVYsR0FBd0IsVUFBU0gsS0FBVCxFQUFnQjtBQUN2RCxTQUFPQSxLQUFQO0FBQ0QsQ0FGRDs7QUFJTyxTQUFTSSxVQUFULENBQW9CQyxNQUFwQixFQUE0QkMsTUFBNUIsRUFBb0NDLFFBQXBDLEVBQThDO0FBQUUsU0FBT1YsU0FBUyxDQUFDVyxJQUFWLENBQWVILE1BQWYsRUFBdUJDLE1BQXZCLEVBQStCQyxRQUEvQixDQUFQO0FBQWtEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGFycmF5RGlmZiA9IG5ldyBEaWZmKCk7XG5hcnJheURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc2xpY2UoKTtcbn07XG5hcnJheURpZmYuam9pbiA9IGFycmF5RGlmZi5yZW1vdmVFbXB0eSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmQXJyYXlzKG9sZEFyciwgbmV3QXJyLCBjYWxsYmFjaykgeyByZXR1cm4gYXJyYXlEaWZmLmRpZmYob2xkQXJyLCBuZXdBcnIsIGNhbGxiYWNrKTsgfVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = Diff;\n\n/*istanbul ignore end*/\nfunction Diff() {}\n\nDiff.prototype = {\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n diff: function diff(oldString, newString) {\n /*istanbul ignore start*/\n var _options$timeout;\n\n var\n /*istanbul ignore end*/\n options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = options.callback;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n this.options = options;\n var self = this;\n\n function done(value) {\n if (callback) {\n setTimeout(function () {\n callback(undefined, value);\n }, 0);\n return true;\n } else {\n return value;\n }\n } // Allow subclasses to massage the input prior to running\n\n\n oldString = this.castInput(oldString);\n newString = this.castInput(newString);\n oldString = this.removeEmpty(this.tokenize(oldString));\n newString = this.removeEmpty(this.tokenize(newString));\n var newLen = newString.length,\n oldLen = oldString.length;\n var editLength = 1;\n var maxEditLength = newLen + oldLen;\n\n if (options.maxEditLength) {\n maxEditLength = Math.min(maxEditLength, options.maxEditLength);\n }\n\n var maxExecutionTime =\n /*istanbul ignore start*/\n (_options$timeout =\n /*istanbul ignore end*/\n options.timeout) !== null && _options$timeout !== void 0 ? _options$timeout : Infinity;\n var abortAfterTimestamp = Date.now() + maxExecutionTime;\n var bestPath = [{\n oldPos: -1,\n lastComponent: undefined\n }]; // Seed editLength = 0, i.e. the content starts with the same values\n\n var newPos = this.extractCommon(bestPath[0], newString, oldString, 0);\n\n if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // Identity per the equality and tokenizer\n return done([{\n value: this.join(newString),\n count: newString.length\n }]);\n } // Once we hit the right edge of the edit graph on some diagonal k, we can\n // definitely reach the end of the edit graph in no more than k edits, so\n // there's no point in considering any moves to diagonal k+1 any more (from\n // which we're guaranteed to need at least k+1 more edits).\n // Similarly, once we've reached the bottom of the edit graph, there's no\n // point considering moves to lower diagonals.\n // We record this fact by setting minDiagonalToConsider and\n // maxDiagonalToConsider to some finite value once we've hit the edge of\n // the edit graph.\n // This optimization is not faithful to the original algorithm presented in\n // Myers's paper, which instead pointlessly extends D-paths off the end of\n // the edit graph - see page 7 of Myers's paper which notes this point\n // explicitly and illustrates it with a diagram. This has major performance\n // implications for some common scenarios. For instance, to compute a diff\n // where the new text simply appends d characters on the end of the\n // original text of length n, the true Myers algorithm will take O(n+d^2)\n // time while this optimization needs only O(n+d) time.\n\n\n var minDiagonalToConsider = -Infinity,\n maxDiagonalToConsider = Infinity; // Main worker method. checks all permutations of a given edit length for acceptance.\n\n function execEditLength() {\n for (var diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) {\n var basePath =\n /*istanbul ignore start*/\n void 0\n /*istanbul ignore end*/\n ;\n var removePath = bestPath[diagonalPath - 1],\n addPath = bestPath[diagonalPath + 1];\n\n if (removePath) {\n // No one else is going to attempt to use this value, clear it\n bestPath[diagonalPath - 1] = undefined;\n }\n\n var canAdd = false;\n\n if (addPath) {\n // what newPos will be after we do an insertion:\n var addPathNewPos = addPath.oldPos - diagonalPath;\n canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen;\n }\n\n var canRemove = removePath && removePath.oldPos + 1 < oldLen;\n\n if (!canAdd && !canRemove) {\n // If this path is a terminal then prune\n bestPath[diagonalPath] = undefined;\n continue;\n } // Select the diagonal that we want to branch from. We select the prior\n // path whose position in the old string is the farthest from the origin\n // and does not pass the bounds of the diff graph\n // TODO: Remove the `+ 1` here to make behavior match Myers algorithm\n // and prefer to order removals before insertions.\n\n\n if (!canRemove || canAdd && removePath.oldPos + 1 < addPath.oldPos) {\n basePath = self.addToPath(addPath, true, undefined, 0);\n } else {\n basePath = self.addToPath(removePath, undefined, true, 1);\n }\n\n newPos = self.extractCommon(basePath, newString, oldString, diagonalPath);\n\n if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // If we have hit the end of both strings, then we are done\n return done(buildValues(self, basePath.lastComponent, newString, oldString, self.useLongestToken));\n } else {\n bestPath[diagonalPath] = basePath;\n\n if (basePath.oldPos + 1 >= oldLen) {\n maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1);\n }\n\n if (newPos + 1 >= newLen) {\n minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1);\n }\n }\n }\n\n editLength++;\n } // Performs the length of edit iteration. Is a bit fugly as this has to support the\n // sync and async mode which is never fun. Loops over execEditLength until a value\n // is produced, or until the edit length exceeds options.maxEditLength (if given),\n // in which case it will return undefined.\n\n\n if (callback) {\n (function exec() {\n setTimeout(function () {\n if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) {\n return callback();\n }\n\n if (!execEditLength()) {\n exec();\n }\n }, 0);\n })();\n } else {\n while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) {\n var ret = execEditLength();\n\n if (ret) {\n return ret;\n }\n }\n }\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n addToPath: function addToPath(path, added, removed, oldPosInc) {\n var last = path.lastComponent;\n\n if (last && last.added === added && last.removed === removed) {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: {\n count: last.count + 1,\n added: added,\n removed: removed,\n previousComponent: last.previousComponent\n }\n };\n } else {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: {\n count: 1,\n added: added,\n removed: removed,\n previousComponent: last\n }\n };\n }\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {\n var newLen = newString.length,\n oldLen = oldString.length,\n oldPos = basePath.oldPos,\n newPos = oldPos - diagonalPath,\n commonCount = 0;\n\n while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {\n newPos++;\n oldPos++;\n commonCount++;\n }\n\n if (commonCount) {\n basePath.lastComponent = {\n count: commonCount,\n previousComponent: basePath.lastComponent\n };\n }\n\n basePath.oldPos = oldPos;\n return newPos;\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n equals: function equals(left, right) {\n if (this.options.comparator) {\n return this.options.comparator(left, right);\n } else {\n return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase();\n }\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n removeEmpty: function removeEmpty(array) {\n var ret = [];\n\n for (var i = 0; i < array.length; i++) {\n if (array[i]) {\n ret.push(array[i]);\n }\n }\n\n return ret;\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n castInput: function castInput(value) {\n return value;\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n tokenize: function tokenize(value) {\n return value.split('');\n },\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n join: function join(chars) {\n return chars.join('');\n }\n};\n\nfunction buildValues(diff, lastComponent, newString, oldString, useLongestToken) {\n // First we convert our linked list of components in reverse order to an\n // array in the right order:\n var components = [];\n var nextComponent;\n\n while (lastComponent) {\n components.push(lastComponent);\n nextComponent = lastComponent.previousComponent;\n delete lastComponent.previousComponent;\n lastComponent = nextComponent;\n }\n\n components.reverse();\n var componentPos = 0,\n componentLen = components.length,\n newPos = 0,\n oldPos = 0;\n\n for (; componentPos < componentLen; componentPos++) {\n var component = components[componentPos];\n\n if (!component.removed) {\n if (!component.added && useLongestToken) {\n var value = newString.slice(newPos, newPos + component.count);\n value = value.map(function (value, i) {\n var oldValue = oldString[oldPos + i];\n return oldValue.length > value.length ? oldValue : value;\n });\n component.value = diff.join(value);\n } else {\n component.value = diff.join(newString.slice(newPos, newPos + component.count));\n }\n\n newPos += component.count; // Common case\n\n if (!component.added) {\n oldPos += component.count;\n }\n } else {\n component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));\n oldPos += component.count; // Reverse add and remove so removes are output first to match common convention\n // The diffing algorithm is tied to add then remove output and this is the simplest\n // route to get the desired output with minimal overhead.\n\n if (componentPos && components[componentPos - 1].added) {\n var tmp = components[componentPos - 1];\n components[componentPos - 1] = components[componentPos];\n components[componentPos] = tmp;\n }\n }\n } // Special case handle for when one terminal is ignored (i.e. whitespace).\n // For this case we merge the terminal into the prior string and drop the change.\n // This is only available for string mode.\n\n\n var finalComponent = components[componentLen - 1];\n\n if (componentLen > 1 && typeof finalComponent.value === 'string' && (finalComponent.added || finalComponent.removed) && diff.equals('', finalComponent.value)) {\n components[componentLen - 2].value += finalComponent.value;\n components.pop();\n }\n\n return components;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Jhc2UuanMiXSwibmFtZXMiOlsiRGlmZiIsInByb3RvdHlwZSIsImRpZmYiLCJvbGRTdHJpbmciLCJuZXdTdHJpbmciLCJvcHRpb25zIiwiY2FsbGJhY2siLCJzZWxmIiwiZG9uZSIsInZhbHVlIiwic2V0VGltZW91dCIsInVuZGVmaW5lZCIsImNhc3RJbnB1dCIsInJlbW92ZUVtcHR5IiwidG9rZW5pemUiLCJuZXdMZW4iLCJsZW5ndGgiLCJvbGRMZW4iLCJlZGl0TGVuZ3RoIiwibWF4RWRpdExlbmd0aCIsIk1hdGgiLCJtaW4iLCJtYXhFeGVjdXRpb25UaW1lIiwidGltZW91dCIsIkluZmluaXR5IiwiYWJvcnRBZnRlclRpbWVzdGFtcCIsIkRhdGUiLCJub3ciLCJiZXN0UGF0aCIsIm9sZFBvcyIsImxhc3RDb21wb25lbnQiLCJuZXdQb3MiLCJleHRyYWN0Q29tbW9uIiwiam9pbiIsImNvdW50IiwibWluRGlhZ29uYWxUb0NvbnNpZGVyIiwibWF4RGlhZ29uYWxUb0NvbnNpZGVyIiwiZXhlY0VkaXRMZW5ndGgiLCJkaWFnb25hbFBhdGgiLCJtYXgiLCJiYXNlUGF0aCIsInJlbW92ZVBhdGgiLCJhZGRQYXRoIiwiY2FuQWRkIiwiYWRkUGF0aE5ld1BvcyIsImNhblJlbW92ZSIsImFkZFRvUGF0aCIsImJ1aWxkVmFsdWVzIiwidXNlTG9uZ2VzdFRva2VuIiwiZXhlYyIsInJldCIsInBhdGgiLCJhZGRlZCIsInJlbW92ZWQiLCJvbGRQb3NJbmMiLCJsYXN0IiwicHJldmlvdXNDb21wb25lbnQiLCJjb21tb25Db3VudCIsImVxdWFscyIsImxlZnQiLCJyaWdodCIsImNvbXBhcmF0b3IiLCJpZ25vcmVDYXNlIiwidG9Mb3dlckNhc2UiLCJhcnJheSIsImkiLCJwdXNoIiwic3BsaXQiLCJjaGFycyIsImNvbXBvbmVudHMiLCJuZXh0Q29tcG9uZW50IiwicmV2ZXJzZSIsImNvbXBvbmVudFBvcyIsImNvbXBvbmVudExlbiIsImNvbXBv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IERpZmYoKSB7fVxuXG5EaWZmLnByb3RvdHlwZSA9IHtcbiAgZGlmZihvbGRTdHJpbmcsIG5ld1N0cmluZywgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGNhbGxiYWNrID0gb3B0aW9ucy5jYWxsYmFjaztcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGNhbGxiYWNrID0gb3B0aW9ucztcbiAgICAgIG9wdGlvbnMgPSB7fTtcbiAgICB9XG4gICAgdGhpcy5vcHRpb25zID0gb3B0aW9ucztcblxuICAgIGxldCBzZWxmID0gdGhpcztcblxuICAgIGZ1bmN0aW9uIGRvbmUodmFsdWUpIHtcbiAgICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBjYWxsYmFjayh1bmRlZmluZWQsIHZhbHVlKTsgfSwgMCk7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFsbG93IHN1YmNsYXNzZXMgdG8gbWFzc2FnZSB0aGUgaW5wdXQgcHJpb3IgdG8gcnVubmluZ1xuICAgIG9sZFN0cmluZyA9IHRoaXMuY2FzdElucHV0KG9sZFN0cmluZyk7XG4gICAgbmV3U3RyaW5nID0gdGhpcy5jYXN0SW5wdXQobmV3U3RyaW5nKTtcblxuICAgIG9sZFN0cmluZyA9IHRoaXMucmVtb3ZlRW1wdHkodGhpcy50b2tlbml6ZShvbGRTdHJpbmcpKTtcbiAgICBuZXdTdHJpbmcgPSB0aGlzLnJlbW92ZUVtcHR5KHRoaXMudG9rZW5pemUobmV3U3RyaW5nKSk7XG5cbiAgICBsZXQgbmV3TGVuID0gbmV3U3RyaW5nLmxlbmd0aCwgb2xkTGVuID0gb2xkU3RyaW5nLmxlbmd0aDtcbiAgICBsZXQgZWRpdExlbmd0aCA9IDE7XG4gICAgbGV0IG1heEVkaXRMZW5ndGggPSBuZXdMZW4gKyBvbGRMZW47XG4gICAgaWYob3B0aW9ucy5tYXhFZGl0TGVuZ3RoKSB7XG4gICAgICBtYXhFZGl0TGVuZ3RoID0gTWF0aC5taW4obWF4RWRpdExlbmd0aCwgb3B0aW9ucy5tYXhFZGl0TGVuZ3RoKTtcbiAgICB9XG4gICAgY29uc3QgbWF4RXhlY3V0aW9uVGltZSA9IG9wdGlvbnMudGltZW91dCA/PyBJbmZpbml0eTtcbiAgICBjb25zdCBhYm9ydEFmdGVyVGltZXN0YW1wID0gRGF0ZS5ub3coKSArIG1heEV4ZWN1dGlvblRpbWU7XG5cbiAgICBsZXQgYmVzdFBhdGggPSBbeyBvbGRQb3M6IC0xLCBsYXN0Q29tcG9uZW50OiB1bmRlZmluZWQgfV07XG5cbiAgICAvLyBTZWVkIGVkaXRMZW5ndGggPSAwLCBpLmUuIHRoZSBjb250ZW50IHN0YXJ0cyB3aXRoIHRoZSBzYW1lIHZhbHVlc1xuICAgIGxldCBuZXdQb3MgPSB0aGlzLmV4dHJhY3RDb21tb24oYmVzdFBhdGhbMF0sIG5ld1N0cmluZywgb2xkU3RyaW5nLCAwKTtcbiAgICBpZiAoYmVzdFBhdGhbMF0ub2xkUG9zICsgMSA+PSBvbGRMZW4gJiYgbmV3UG9zICsgMSA+PSBuZXdMZW4pIHtcbiAgICAgIC8vIElkZW50aXR5IHBlciB0aGUgZXF1YWxpdHkgYW5kIHRva2VuaXplclxuICAgICAgcmV0dXJuIGRvbmUoW3t2YWx1ZTogdGhpcy5qb2luKG5ld1N0cmluZyksIGNvdW50OiBuZXdTdHJpbmcubGVuZ3RofV0pO1xuICAgIH1cblxuICAgIC8vIE9uY2Ugd2UgaGl0IHRoZSByaWdodCBlZGdlIG9mIHRoZSBlZGl0IGdyYXBoIG9uIHNvbWUgZGlhZ29uYWwgaywgd2UgY2FuXG4gICAgLy8gZGVmaW5pdGVseSByZWFjaCB0aGUgZW5kIG9mIHRoZSBlZGl0IGdyYXBoIGluIG5vIG1vcmUgdGhhbiBrIGVkaXRzLCBzb1xuICAgIC8vIHRoZXJlJ3Mgbm8gcG9pbnQgaW4gY29uc2lkZXJpbmcgYW55IG1vdmVzIHRvIGRpYWdvbmFsIGsrMSBhbnkgbW9yZSAoZnJvbVxuICAgIC8vIHdoaWNoIHdlJ3JlIGd1YXJhbnRlZWQgdG8gbmVlZCBhdCBsZWFzdCBrKzEgbW9yZSBlZGl0cykuXG4gICAgLy8gU2ltaWxhcmx5LCBvbmNlIHdlJ3ZlIHJlYWNoZWQgdGhlIGJvdHRvbSBvZiB0aGUgZWRpdCBncmFwaCwgdGhlcmUncyBub1xuICAgIC8vIHBvaW50IGNvbnNpZGVyaW5nIG1vdmVzIHRvIGxvd2VyIGRpYWdvbmFscy5cbiAgICAvLyBXZSByZWNvcmQgdGhpcyBmYWN0IGJ5IHNldHRpbmcgbWluRGlhZ29uYWxUb0NvbnNpZGVyIGFuZFxuICAgIC8vIG1heERpYWdvbmFsVG9Db25zaWRlciB0byBzb21lIGZpbml0ZSB2YWx1ZSBvbmNlIHdlJ3ZlIGhpdCB0aGUgZWRnZSBvZlxuICAgIC8vIHRoZSBlZGl0IGdyYXBoLlxuICAgIC8vIFRoaXMgb3B0aW1pemF0aW9uIGlzIG5vdCBmYWl0aGZ1bCB0byB0aGUgb3JpZ2luYWwgYWxnb3JpdGhtIHByZXNlbnRlZCBpblxuICAgIC8vIE15ZXJzJ3MgcGFwZXIsIHdoaWNoIGluc3RlYWQgcG9pbnRsZXNzbHkgZXh0ZW5kcyBELXBhdGhzIG9mZiB0aGUgZW5kIG9mXG4gICAgLy8gdGhlIGVkaXQgZ3JhcGggLSBzZWUgcGFnZSA3IG9mIE15ZXJzJ3MgcGFwZXIgd2hpY2ggbm90ZXMgdGhpcyBwb2ludFxuICAgIC8vIGV4cGxpY2l0bHkgYW5kIGlsbHVzdHJhdGVzIGl0IHdpdGggYSBkaWFncmFtLiBUaGlzIGhhcyBtYWpvciBwZXJmb3JtYW5jZVxuICAgIC8vIGltcGxpY2F0aW9ucyBmb3Igc29tZSBjb21tb24gc2NlbmFyaW9zLiBGb3IgaW5zdGFuY2UsIHRvIGNvbXB1dGUgYSBkaWZmXG4gICAgLy8gd2hlcmUgdGhlIG5ldyB0ZXh0IHNpbXBseSBhcHBlbmRzIGQgY2hhcmFjdGVycyBvbiB0aGUgZW5kIG9mIHRoZVxuICAgIC8vIG9yaWdpbmFsIHRleHQgb2YgbGVuZ3RoIG4sIHRoZSB0cnVlIE15ZXJzIGFsZ29yaXRobSB3aWxsIHRha2UgTyhuK2ReMilcbiAgICAvLyB0aW1lIHdoaWxlIHRoaXMgb3B0aW1pemF0aW9uIG5lZWRzIG9ubHkgTyhuK2QpIHRpbWUuXG4gICAgbGV0IG1pbkRpYWdvbmFsVG9Db25zaWRlciA9IC1JbmZpbml0eSwgbWF4RGlhZ29uYWxUb0NvbnNpZGVyID0gSW5maW5pdHk7XG5cbiAgICAvLyBNYWluIHdvcmtlciBtZXRob2QuIGNoZWNrcyBhbGwgcGVybXV0YXRpb25zIG9mIGEgZ2l2ZW4gZWRpdCBsZW5ndGggZm9yIGFjY2VwdGFuY2UuXG4gICAgZnVuY3Rpb24gZXhlY0VkaXRMZW5ndGgoKSB7XG4gICAgICBmb3IgKFxuICAgICAgICBsZXQgZGlhZ29uYWxQYXRoID0gTWF0aC5tYXgobWluRGlhZ29uYWxUb0NvbnNpZGVyLCAtZWRpdExlbmd0aCk7XG4gICAgICAgIGRpYWdvbmFsUGF0aCA8PSBNYXRoLm1pbihtYXhEaWFnb25hbFRvQ29uc2lkZXIsIGVkaXRMZW5ndGgpO1xuICAgICAgICBkaWFnb25hbFBhdGggKz0gMlxuICAgICAgKSB7XG4gICAgICAgIGxldCBiYXNlUGF0aDtcbiAgICAgICAgbGV0IHJlbW92ZVBhdGggPSBiZXN0UGF0aFtkaWFnb25hbFBhdGggLSAxXSxcbiAgICAgICAgICAgIGFkZFBhdGggPSBiZXN0UGF0aFtkaWFnb25hbFBhdGggKyAxXTtcbiAgICAgICAgaWYgKHJlbW92ZVBhdGgpIHtcbiAgICAgICAgICAvLyBObyBvbmUgZWxzZSBpcyBnb2luZyB0byBhdHRlbXB0IHRvIHVzZSB0aGlzIHZhbHVlLCBjbGVhciBpdFxuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aCAtIDFdID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNhbkFkZCA9IGZhbHNlO1xuICAgICAgICBpZiAoYWRkUGF0aCkge1xuICAgICAgICAgIC8vIHdoYXQgbmV3UG9zIHdpbGwgYmUgYWZ0ZXIgd2UgZG8gYW4gaW5zZXJ0aW9uOlxuICAgICAgICAgIGNvbnN0IGFkZFBhdGhOZXdQb3MgPSBhZGRQYXRoLm9sZFBvcyAtIGRpYWdvbmFsUGF0aDtcbiAgICAgICAgICBjYW5BZGQgPSBhZGRQYXRoICYmIDAgPD0gYWRkUGF0aE5ld1BvcyAmJiBhZGRQYXRoTmV3UG9zIDwgbmV3TGVuO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IGNhblJlbW92ZSA9IHJlbW92ZVBhdGggJiYgcmVtb3ZlUGF0aC5vbGRQb3MgKyAxIDwgb2xkTGVuO1xuICAgICAgICBpZiAoIWNhbkFkZCAmJiAhY2FuUmVtb3ZlKSB7XG4gICAgICAgICAgLy8gSWYgdGhpcyBwYXRoIGlzIGEgdGVybWluYWwgdGhlbiBwcnVuZVxuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aF0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZWxlY3QgdGhlIGRpYWdvbmFsIHRoYXQgd2Ugd2FudCB0byBicmFuY2ggZnJvbS4gV2Ugc2VsZWN0IHRoZSBwcmlvclxuICAgICAgICAvLyBwYXRoIHdob3NlIHBvc2l0aW9uIGluIHRoZSBvbGQgc3RyaW5nIGlzIHRoZSBmYXJ0aGVzdCBmcm9tIHRoZSBvcmlnaW5cbiAgICAgICAgLy8gYW5kIGRvZXMgbm90IHBhc3MgdGhlIGJvdW5kcyBvZiB0aGUgZGlmZiBncmFwaFxuICAgICAgICAvLyBUT0RPOiBSZW1vdmUgdGhlIGArIDFgIGhlcmUgdG8gbWFrZSBiZWhhdmlvciBtYXRjaCBNeWVycyBhbGdvcml0aG1cbiAgICAgICAgLy8gICAgICAgYW5kIHByZWZlciB0byBvcmRlciByZW1vdmFscyBiZWZvcmUgaW5zZXJ0aW9ucy5cbiAgICAgICAgaWYgKCFjYW5SZW1vdmUgfHwgKGNhbkFkZCAmJiByZW1vdmVQYXRoLm9sZFBvcyArIDEgPCBhZGRQYXRoLm9sZFBvcykpIHtcbiAgICAgICAgICBiYXNlUGF0aCA9IHNlbGYuYWRkVG9QYXRoKGFkZFBhdGgsIHRydWUsIHVuZGVmaW5lZCwgMCk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzZVBhdGggPSBzZWxmLmFkZFRvUGF0aChyZW1vdmVQYXRoLCB1bmRlZmluZWQsIHRydWUsIDEpO1xuICAgICAgICB9XG5cbiAgICAgICAgbmV3UG9zID0gc2VsZi5leHRyYWN0Q29tbW9uKGJhc2VQYXRoLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgZGlhZ29uYWxQYXRoKTtcblxuICAgICAgICBpZiAoYmFzZVBhdGgub2xkUG9zICsgMSA+PSBvbGRMZW4gJiYgbmV3UG9zICsgMSA+PSBuZXdMZW4pIHtcbiAgICAgICAgICAvLyBJZiB3ZSBoYXZlIGhpdCB0aGUgZW5kIG9mIGJvdGggc3RyaW5ncywgdGhlbiB3ZSBhcmUgZG9uZVxuICAgICAgICAgIHJldHVybiBkb25lKGJ1aWxkVmFsdWVzKHNlbGYsIGJhc2VQYXRoLmxhc3RDb21wb25lbnQsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBzZWxmLnVzZUxvbmdlc3RUb2tlbikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aF0gPSBiYXNlUGF0aDtcbiAgICAgICAgICBpZiAoYmFzZVBhdGgub2xkUG9zICsgMSA+PSBvbGRMZW4pIHtcbiAgICAgICAgICAgIG1heERpYWdvbmFsVG9Db25zaWRlciA9IE1hdGgubWluKG1heERpYWdvbmFsVG9Db25zaWRlciwgZGlhZ29uYWxQYXRoIC0gMSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChuZXdQb3MgKyAxID49IG5ld0xlbikge1xuICAgICAgICAgICAgbWluRGlhZ29uYWxUb0NvbnNpZGVyID0gTWF0aC5tYXgobWluRGlhZ29uYWxUb0NvbnNpZGVyLCBkaWFnb25hbFBhdGggKyAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZWRpdExlbmd0aCsrO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm1zIHRoZSBsZW5ndGggb2YgZWRpdCBpdGVyYXRpb24uIElzIGEgYml0IGZ1Z2x5IGFzIHRoaXMgaGFzIHRvIHN1cHBvcnQgdGhlXG4gICAgLy8gc3luYyBhbmQgYXN5bmMgbW9kZSB3aGljaCBpcyBuZXZlciBmdW4uIExvb3BzIG92ZXIgZXhlY0VkaXRMZW5ndGggdW50aWwgYSB2YWx1ZVxuICAgIC8vIGlzIHByb2R1Y2VkLCBvciB1bnRpbCB0aGUgZWRpdCBsZW5ndGggZXhjZWVkcyBvcHRpb25zLm1heEVkaXRMZW5ndGggKGlmIGdpdmVuKSxcbiAgICAvLyBpbiB3aGljaCBjYXNlIGl0IHdpbGwgcmV0dXJuIHVuZGVmaW5lZC5cbiAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgIChmdW5jdGlvbiBleGVjKCkge1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkge1xuICAgICAgICAgIGlmIChlZGl0TGVuZ3RoID4gbWF4RWRpdExlbmd0aCB8fCBEYXRlLm5vdygpID4gYWJvcnRBZnRlclRpbWVzdGFtcCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFleGVjRWRpdExlbmd0aCgpKSB7XG4gICAgICAgICAgICBleGVjKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICAgIH0oKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdoaWxlIChlZGl0TGVuZ3RoIDw9IG1heEVkaXRMZW5ndGggJiYgRGF0ZS5ub3coKSA8PSBhYm9ydEFmdGVyVGltZXN0YW1wKSB7XG4gICAgICAgIGxldCByZXQgPSBleGVjRWRpdExlbmd0aCgpO1xuICAgICAgICBpZiAocmV0KSB7XG4gICAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfSxcblxuICBhZGRUb1BhdGgocGF0aCwgYWRkZWQsIHJlbW92ZWQsIG9sZFBvc0luYykge1xuICAgIGxldCBsYXN0ID0gcGF0aC5sYXN0Q29tcG9uZW50O1xuICAgIGlmIChsYXN0ICYmIGxhc3QuYWRkZWQgPT09IGFkZGVkICYmIGxhc3QucmVtb3ZlZCA9PT0gcmVtb3ZlZCkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgb2xkUG9zOiBwYXRoLm9sZFBvcyArIG9sZFBvc0luYyxcbiAgICAgICAgbGFzdENvbXBvbmVudDoge2NvdW50OiBsYXN0LmNvdW50ICsgMSwgYWRkZWQ6IGFkZGVkLCByZW1vdmVkOiByZW1vdmVkLCBwcmV2aW91c0NvbXBvbmVudDogbGFzdC5wcmV2aW91c0NvbXBvbmVudCB9XG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvbGRQb3M6IHBhdGgub2xkUG9zICsgb2xkUG9zSW5jLFxuICAgICAgICBsYXN0Q29tcG9uZW50OiB7Y291bnQ6IDEsIGFkZGVkOiBhZGRlZCwgcmVtb3ZlZDogcmVtb3ZlZCwgcHJldmlvdXNDb21wb25lbnQ6IGxhc3QgfVxuICAgICAgfTtcbiAgICB9XG4gIH0sXG4gIGV4dHJhY3RDb21tb24oYmFzZVBhdGgsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBkaWFnb25hbFBhdGgpIHtcbiAgICBsZXQgbmV3TGVuID0gbmV3U3RyaW5nLmxlbmd0aCxcbiAgICAgICAgb2xkTGVuID0gb2xkU3RyaW5nLmxlbmd0aCxcbiAgICAgICAgb2xkUG9zID0gYmFzZVBhdGgub2xkUG9zLFxuICAgICAgICBuZXdQb3MgPSBvbGRQb3MgLSBkaWFnb25hbFBhdGgsXG5cbiAgICAgICAgY29tbW9uQ291bnQgPSAwO1xuICAgIHdoaWxlIChuZXdQb3MgKyAxIDwgbmV3TGVuICYmIG9sZFBvcyArIDEgPCBvbGRMZW4gJiYgdGhpcy5lcXVhbHMobmV3U3RyaW5nW25ld1BvcyArIDFdLCBvbGRTdHJpbmdbb2xkUG9zICsgMV0pKSB7XG4gICAgICBuZXdQb3MrKztcbiAgICAgIG9sZFBvcysrO1xuICAgICAgY29tbW9uQ291bnQrKztcbiAgICB9XG5cbiAgICBpZiAoY29tbW9uQ291bnQpIHtcbiAgICAgIGJhc2VQYXRoLmxhc3RDb21wb25lbnQgPSB7Y291bnQ6IGNvbW1vbkNvdW50LCBwcmV2aW91c0NvbXBvbmVudDogYmFzZVBhdGgubGFzdENvbXBvbmVudH07XG4gICAgfVxuXG4gICAgYmFzZVBhdGgub2xkUG9zID0gb2xkUG9zO1xuICAgIHJldHVybiBuZXdQb3M7XG4gIH0sXG5cbiAgZXF1YWxzKGxlZnQsIHJpZ2h0KSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5jb21wYXJhdG9yKSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmNvbXBhcmF0b3IobGVmdCwgcmlnaHQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbGVmdCA9PT0gcmlnaHRcbiAgICAgICAgfHwgKHRoaXMub3B0aW9ucy5pZ25vcmVDYXNlICYmIGxlZnQudG9Mb3dlckNhc2UoKSA9PT0gcmlnaHQudG9Mb3dlckNhc2UoKSk7XG4gICAgfVxuICB9LFxuICByZW1vdmVFbXB0eShhcnJheSkge1xuICAgIGxldCByZXQgPSBbXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAoYXJyYXlbaV0pIHtcbiAgICAgICAgcmV0LnB1c2goYXJyYXlbaV0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9LFxuICBjYXN0SW5wdXQodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH0sXG4gIHRva2VuaXplKHZhbHVlKSB7XG4gICAgcmV0dXJuIHZhbHVlLnNwbGl0KCcnKTtcbiAgfSxcbiAgam9pbihjaGFycykge1xuICAgIHJldHVybiBjaGFycy5qb2luKCcnKTtcbiAgfVxufTtcblxuZnVuY3Rpb24gYnVpbGRWYWx1ZXMoZGlmZiwgbGFzdENvbXBvbmVudCwgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIHVzZUxvbmdlc3RUb2tlbikge1xuICAvLyBGaXJzdCB3ZSBjb252ZXJ0IG91ciBsaW5rZWQgbGlzdCBvZiBjb21wb25lbnRzIGluIHJldmVyc2Ugb3JkZXIgdG8gYW5cbiAgLy8gYXJyYXkgaW4gdGhlIHJpZ2h0IG9yZGVyOlxuICBjb25zdCBjb21wb25lbnRzID0gW107XG4gIGxldCBuZXh0Q29tcG9uZW50O1xuICB3aGlsZSAobGFzdENvbXBvbmVudCkge1xuICAgIGNvbXBvbmVudHMucHVzaChsYXN0Q29tcG9uZW50KTtcbiAgICBuZXh0Q29tcG9uZW50ID0gbGFzdENvbXBvbmVudC5wcmV2aW91c0NvbXBvbmVudDtcbiAgICBkZWxldGUgbGFzdENvbXBvbmVudC5wcmV2aW91c0NvbXBvbmVudDtcbiAgICBsYXN0Q29tcG9uZW50ID0gbmV4dENvbXBvbmVudDtcbiAgfVxuICBjb21wb25lbnRzLnJldmVyc2UoKTtcblxuICBsZXQgY29tcG9uZW50UG9zID0gMCxcbiAgICAgIGNvbXBvbmVudExlbiA9IGNvbXBvbmVudHMubGVuZ3RoLFxuICAgICAgbmV3UG9zID0gMCxcbiAgICAgIG9sZFBvcyA9IDA7XG5cbiAgZm9yICg7IGNvbXBvbmVudFBvcyA8IGNvbXBvbmVudExlbjsgY29tcG9uZW50UG9zKyspIHtcbiAgICBsZXQgY29tcG9uZW50ID0gY29tcG9uZW50c1tjb21wb25lbnRQb3NdO1xuICAgIGlmICghY29tcG9uZW50LnJlbW92ZWQpIHtcbiAgICAgIGlmICghY29tcG9uZW50LmFkZGVkICYmIHVzZUxvbmdlc3RUb2tlbikge1xuICAgICAgICBsZXQgdmFsdWUgPSBuZXdTdHJpbmcuc2xpY2UobmV3UG9zLCBuZXdQb3MgKyBjb21wb25lbnQuY291bnQpO1xuICAgICAgICB2YWx1ZSA9IHZhbHVlLm1hcChmdW5jdGlvbih2YWx1ZSwgaSkge1xuICAgICAgICAgIGxldCBvbGRWYWx1ZSA9IG9sZFN0cmluZ1tvbGRQb3MgKyBpXTtcbiAgICAgICAgICByZXR1cm4gb2xkVmFsdWUubGVuZ3RoID4gdmFsdWUubGVuZ3RoID8gb2xkVmFsdWUgOiB2YWx1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29tcG9uZW50LnZhbHVlID0gZGlmZi5qb2luKHZhbHVlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbXBvbmVudC52YWx1ZSA9IGRpZmYuam9pbihuZXdTdHJpbmcuc2xpY2UobmV3UG9zLCBuZXdQb3MgKyBjb21wb25lbnQuY291bnQpKTtcbiAgICAgIH1cbiAgICAgIG5ld1BvcyArPSBjb21wb25lbnQuY291bnQ7XG5cbiAgICAgIC8vIENvbW1vbiBjYXNlXG4gICAgICBpZiAoIWNvbXBvbmVudC5hZGRlZCkge1xuICAgICAgICBvbGRQb3MgKz0gY29tcG9uZW50LmNvdW50O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb21wb25lbnQudmFsdWUgPSBkaWZmLmpvaW4ob2xkU3RyaW5nLnNsaWNlKG9sZFBvcywgb2xkUG9zICsgY29tcG9uZW50LmNvdW50KSk7XG4gICAgICBvbGRQb3MgKz0gY29tcG9uZW50LmNvdW50O1xuXG4gICAgICAvLyBSZXZlcnNlIGFkZCBhbmQgcmVtb3ZlIHNvIHJlbW92ZXMgYXJlIG91dHB1dCBmaXJzdCB0byBtYXRjaCBjb21tb24gY29udmVudGlvblxuICAgICAgLy8gVGhlIGRpZmZpbmcgYWxnb3JpdGhtIGlzIHRpZWQgdG8gYWRkIHRoZW4gcmVtb3ZlIG91dHB1dCBhbmQgdGhpcyBpcyB0aGUgc2ltcGxlc3RcbiAgICAgIC8vIHJvdXRlIHRvIGdldCB0aGUgZGVzaXJlZCBvdXRwdXQgd2l0aCBtaW5pbWFsIG92ZXJoZWFkLlxuICAgICAgaWYgKGNvbXBvbmVudFBvcyAmJiBjb21wb25lbnRzW2NvbXBvbmVudFBvcyAtIDFdLmFkZGVkKSB7XG4gICAgICAgIGxldCB0bXAgPSBjb21wb25lbnRzW2NvbXBvbmVudFBvcyAtIDFdO1xuICAgICAgICBjb21wb25lbnRzW2NvbXBvbmVudFBvcyAtIDFdID0gY29tcG9uZW50c1tjb21wb25lbnRQb3NdO1xuICAgICAgICBjb21wb25lbnRzW2NvbXBvbmVudFBvc10gPSB0bXA7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU3BlY2lhbCBjYXNlIGhhbmRsZSBmb3Igd2hlbiBvbmUgdGVybWluYWwgaXMgaWdub3JlZCAoaS5lLiB3aGl0ZXNwYWNlKS5cbiAgLy8gRm9yIHRoaXMgY2FzZSB3ZSBtZXJnZSB0aGUgdGVybWluYWwgaW50byB0aGUgcHJpb3Igc3RyaW5nIGFuZCBkcm9wIHRoZSBjaGFuZ2UuXG4gIC8vIFRoaXMgaXMgb25seSBhdmFpbGFibGUgZm9yIHN0cmluZyBtb2RlLlxuICBsZXQgZmluYWxDb21wb25lbnQgPSBjb21wb25lbnRzW2NvbXBvbmVudExlbiAtIDFdO1xuICBpZiAoY29tcG9uZW50TGVuID4gMVxuICAgICAgJiYgdHlwZW9mIGZpbmFsQ29tcG9uZW50LnZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgJiYgKGZpbmFsQ29tcG9uZW50LmFkZGVkIHx8IGZpbmFsQ29tcG9uZW50LnJlbW92ZWQpXG4gICAgICAmJiBkaWZmLmVxdWFscygnJywgZmluYWxDb21wb25lbnQudmFsdWUpKSB7XG4gICAgY29tcG9uZW50c1tjb21wb25lbnRMZW4gLSAyXS52YWx1ZSArPSBmaW5hbENvbXBvbmVudC52YWx1ZTtcbiAgICBjb21wb25lbnRzLnBvcCgpO1xuICB9XG5cbiAgcmV0dXJuIGNvbXBvbmVudHM7XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffChars = diffChars;\nexports.characterDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar characterDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.characterDiff = characterDiff;\n\n/*istanbul ignore end*/\nfunction diffChars(oldStr, newStr, options) {\n return characterDiff.diff(oldStr, newStr, options);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2NoYXJhY3Rlci5qcyJdLCJuYW1lcyI6WyJjaGFyYWN0ZXJEaWZmIiwiRGlmZiIsImRpZmZDaGFycyIsIm9sZFN0ciIsIm5ld1N0ciIsIm9wdGlvbnMiLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxJQUFNQSxhQUFhLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUF0Qjs7Ozs7O0FBQ0EsU0FBU0MsU0FBVCxDQUFtQkMsTUFBbkIsRUFBMkJDLE1BQTNCLEVBQW1DQyxPQUFuQyxFQUE0QztBQUFFLFNBQU9MLGFBQWEsQ0FBQ00sSUFBZCxDQUFtQkgsTUFBbkIsRUFBMkJDLE1BQTNCLEVBQW1DQyxPQUFuQyxDQUFQO0FBQXFEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGNoYXJhY3RlckRpZmYgPSBuZXcgRGlmZigpO1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZDaGFycyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykgeyByZXR1cm4gY2hhcmFjdGVyRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTsgfVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffCss = diffCss;\nexports.cssDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar cssDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.cssDiff = cssDiff;\n\n/*istanbul ignore end*/\ncssDiff.tokenize = function (value) {\n return value.split(/([{}:;,]|\\s+)/);\n};\n\nfunction diffCss(oldStr, newStr, callback) {\n return cssDiff.diff(oldStr, newStr, callback);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Nzcy5qcyJdLCJuYW1lcyI6WyJjc3NEaWZmIiwiRGlmZiIsInRva2VuaXplIiwidmFsdWUiLCJzcGxpdCIsImRpZmZDc3MiLCJvbGRTdHIiLCJuZXdTdHIiLCJjYWxsYmFjayIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7OztBQUVPLElBQU1BLE9BQU8sR0FBRztBQUFJQztBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQSxDQUFKLEVBQWhCOzs7Ozs7QUFDUEQsT0FBTyxDQUFDRSxRQUFSLEdBQW1CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDakMsU0FBT0EsS0FBSyxDQUFDQyxLQUFOLENBQVksZUFBWixDQUFQO0FBQ0QsQ0FGRDs7QUFJTyxTQUFTQyxPQUFULENBQWlCQyxNQUFqQixFQUF5QkMsTUFBekIsRUFBaUNDLFFBQWpDLEVBQTJDO0FBQUUsU0FBT1IsT0FBTyxDQUFDUyxJQUFSLENBQWFILE1BQWIsRUFBcUJDLE1BQXJCLEVBQTZCQyxRQUE3QixDQUFQO0FBQWdEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGNzc0RpZmYgPSBuZXcgRGlmZigpO1xuY3NzRGlmZi50b2tlbml6ZSA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZS5zcGxpdCgvKFt7fTo7LF18XFxzKykvKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmQ3NzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykgeyByZXR1cm4gY3NzRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffJson = diffJson;\nexports.canonicalize = canonicalize;\nexports.jsonDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_line = require(\"./line\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/*istanbul ignore end*/\nvar objectPrototypeToString = Object.prototype.toString;\nvar jsonDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n](); // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a\n// dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:\n\n/*istanbul ignore start*/\nexports.jsonDiff = jsonDiff;\n\n/*istanbul ignore end*/\njsonDiff.useLongestToken = true;\njsonDiff.tokenize =\n/*istanbul ignore start*/\n_line\n/*istanbul ignore end*/\n.\n/*istanbul ignore start*/\nlineDiff\n/*istanbul ignore end*/\n.tokenize;\n\njsonDiff.castInput = function (value) {\n /*istanbul ignore start*/\n var _this$options =\n /*istanbul ignore end*/\n this.options,\n undefinedReplacement = _this$options.undefinedReplacement,\n _this$options$stringi = _this$options.stringifyReplacer,\n stringifyReplacer = _this$options$stringi === void 0 ? function (k, v)\n /*istanbul ignore start*/\n {\n return (\n /*istanbul ignore end*/\n typeof v === 'undefined' ? undefinedReplacement : v\n );\n } : _this$options$stringi;\n return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, ' ');\n};\n\njsonDiff.equals = function (left, right) {\n return (\n /*istanbul ignore start*/\n _base\n /*istanbul ignore end*/\n [\n /*istanbul ignore start*/\n \"default\"\n /*istanbul ignore end*/\n ].prototype.equals.call(jsonDiff, left.replace(/,([\\r\\n])/g, '$1'), right.replace(/,([\\r\\n])/g, '$1'))\n );\n};\n\nfunction diffJson(oldObj, newObj, options) {\n return jsonDiff.diff(oldObj, newObj, options);\n} // This function handles the presence of circular references by bailing out when encountering an\n// object that is already on the \"stack\" of items being processed. Accepts an optional replacer\n\n\nfunction canonicalize(obj, stack, replacementStack, replacer, key) {\n stack = stack || [];\n replacementStack = replacementStack || [];\n\n if (replacer) {\n obj = replacer(key, obj);\n }\n\n var i;\n\n for (i = 0; i < stack.length; i += 1) {\n if (stack[i] === obj) {\n return replacementStack[i];\n }\n }\n\n var canonicalizedObj;\n\n if ('[object Array]' === objectPrototypeToString.call(obj)) {\n stack.push(obj);\n canonicalizedObj = new Array(obj.length);\n replacementStack.push(canonicalizedObj);\n\n for (i = 0; i < obj.length; i += 1) {\n canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key);\n }\n\n stack.pop();\n replacementStack.pop();\n return canonicalizedObj;\n }\n\n if (obj && obj.toJSON) {\n obj = obj.toJSON();\n }\n\n if (\n /*istanbul ignore start*/\n _typeof(\n /*istanbul ignore end*/\n obj) === 'object' && obj !== null) {\n stack.push(obj);\n canonicalizedObj = {};\n replacementStack.push(canonicalizedObj);\n\n var sortedKeys = [],\n _key;\n\n for (_key in obj) {\n /* istanbul ignore else */\n if (obj.hasOwnProperty(_key)) {\n sortedKeys.push(_key);\n }\n }\n\n sortedKeys.sort();\n\n for (i = 0; i < sortedKeys.length; i += 1) {\n _key = sortedKeys[i];\n canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);\n }\n\n stack.pop();\n replacementStack.pop();\n } else {\n canonicalizedObj = obj;\n }\n\n return canonicalizedObj;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2pzb24uanMiXSwibmFtZXMiOlsib2JqZWN0UHJvdG90eXBlVG9TdHJpbmciLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImpzb25EaWZmIiwiRGlmZiIsInVzZUxvbmdlc3RUb2tlbiIsInRva2VuaXplIiwibGluZURpZmYiLCJjYXN0SW5wdXQiLCJ2YWx1ZSIsIm9wdGlvbnMiLCJ1bmRlZmluZWRSZXBsYWNlbWVudCIsInN0cmluZ2lmeVJlcGxhY2VyIiwiayIsInYiLCJKU09OIiwic3RyaW5naWZ5IiwiY2Fub25pY2FsaXplIiwiZXF1YWxzIiwibGVmdCIsInJpZ2h0IiwiY2FsbCIsInJlcGxhY2UiLCJkaWZmSnNvbiIsIm9sZE9iaiIsIm5ld09iaiIsImRpZmYiLCJvYmoiLCJzdGFjayIsInJlcGxhY2VtZW50U3RhY2siLCJyZXBsYWNlciIsImtleSIsImkiLCJsZW5ndGgiLCJjYW5vbmljYWxpemVkT2JqIiwicHVzaCIsIkFycmF5IiwicG9wIiwidG9KU09OIiwic29ydGVkS2V5cyIsImhhc093blByb3BlcnR5Iiwic29ydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7Ozs7QUFFQSxJQUFNQSx1QkFBdUIsR0FBR0MsTUFBTSxDQUFDQyxTQUFQLENBQWlCQyxRQUFqRDtBQUdPLElBQU1DLFFBQVEsR0FBRztBQUFJQztBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQSxDQUFKLEVBQWpCLEMsQ0FDUDtBQUNBOzs7Ozs7QUFDQUQsUUFBUSxDQUFDRSxlQUFULEdBQTJCLElBQTNCO0FBRUFGLFFBQVEsQ0FBQ0csUUFBVDtBQUFvQkM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQTtBQUFBLENBQVNELFFBQTdCOztBQUNBSCxRQUFRLENBQUNLLFNBQVQsR0FBcUIsVUFBU0MsS0FB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Z0IsR0FBR1AsR0FBbkI7QUFDRDs7QUFDRCxTQUFPTyxnQkFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7bGluZURpZmZ9IGZyb20gJy4vbGluZSc7XG5cbmNvbnN0IG9iamVjdFByb3RvdHlwZVRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuXG5leHBvcnQgY29uc3QganNvbkRpZmYgPSBuZXcgRGlmZigpO1xuLy8gRGlzY3JpbWluYXRlIGJldHdlZW4gdHdvIGxpbmVzIG9mIHByZXR0eS1wcmludGVkLCBzZXJpYWxpemVkIEpTT04gd2hlcmUgb25lIG9mIHRoZW0gaGFzIGFcbi8vIGRhbmdsaW5nIGNvbW1hIGFuZCB0aGUgb3RoZXIgZG9lc24ndC4gVHVybnMgb3V0IGluY2x1ZGluZyB0aGUgZGFuZ2xpbmcgY29tbWEgeWllbGRzIHRoZSBuaWNlc3Qgb3V0cHV0OlxuanNvbkRpZmYudXNlTG9uZ2VzdFRva2VuID0gdHJ1ZTtcblxuanNvbkRpZmYudG9rZW5pemUgPSBsaW5lRGlmZi50b2tlbml6ZTtcbmpzb25EaWZmLmNhc3RJbnB1dCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIGNvbnN0IHt1bmRlZmluZWRSZXBsYWNlbWVudCwgc3RyaW5naWZ5UmVwbGFjZXIgPSAoaywgdikgPT4gdHlwZW9mIHYgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkUmVwbGFjZW1lbnQgOiB2fSA9IHRoaXMub3B0aW9ucztcblxuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkoY2Fub25pY2FsaXplKHZhbHVlLCBudWxsLCBudWxsLCBzdHJpbmdpZnlSZXBsYWNlciksIHN0cmluZ2lmeVJlcGxhY2VyLCAnICAnKTtcbn07XG5qc29uRGlmZi5lcXVhbHMgPSBmdW5jdGlvbihsZWZ0LCByaWdodCkge1xuICByZXR1cm4gRGlmZi5wcm90b3R5cGUuZXF1YWxzLmNhbGwoanNvbkRpZmYsIGxlZnQucmVwbGFjZSgvLChbXFxyXFxuXSkvZywgJyQxJyksIHJpZ2h0LnJlcGxhY2UoLywoW1xcclxcbl0pL2csICckMScpKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmSnNvbihvbGRPYmosIG5ld09iaiwgb3B0aW9ucykgeyByZXR1cm4ganNvbkRpZmYuZGlmZihvbGRPYmosIG5ld09iaiwgb3B0aW9ucyk7IH1cblxuLy8gVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBwcmVzZW5jZSBvZiBjaXJjdWxhciByZWZlcmVuY2VzIGJ5IGJhaWxpbmcgb3V0IHdoZW4gZW5jb3VudGVyaW5nIGFuXG4vLyBvYmplY3QgdGhhdCBpcyBhbHJlYWR5IG9uIHRoZSBcInN0YWNrXCIgb2YgaXRlbXMgYmVpbmcgcHJvY2Vzc2VkLiBBY2NlcHRzIGFuIG9wdGlvbmFsIHJlcGxhY2VyXG5leHBvcnQgZnVuY3Rpb24gY2Fub25pY2FsaXplKG9iaiwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpIHtcbiAgc3RhY2sgPSBzdGFjayB8fCBbXTtcbiAgcmVwbGFjZW1lbnRTdGFjayA9IHJlcGxhY2VtZW50U3RhY2sgfHwgW107XG5cbiAgaWYgKHJlcGxhY2VyKSB7XG4gICAgb2JqID0gcmVwbGFjZXIoa2V5LCBvYmopO1xuICB9XG5cbiAgbGV0IGk7XG5cbiAgZm9yIChpID0gMDsgaSA8IHN0YWNrLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKHN0YWNrW2ldID09PSBvYmopIHtcbiAgICAgIHJldHVybiByZXBsYWNlbWVudFN0YWNrW2ldO1xuICAgIH1cbiAgfVxuXG4gIGxldCBjYW5vbmljYWxpemVkT2JqO1xuXG4gIGlmICgnW29iamVjdCBBcnJheV0nID09PSBvYmplY3RQcm90b3R5cGVUb1N0cmluZy5jYWxsKG9iaikpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IG5ldyBBcnJheShvYmoubGVuZ3RoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnB1c2goY2Fub25pY2FsaXplZE9iaik7XG4gICAgZm9yIChpID0gMDsgaSA8IG9iai5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY2Fub25pY2FsaXplZE9ialtpXSA9IGNhbm9uaWNhbGl6ZShvYmpbaV0sIHN0YWNrLCByZXBsYWNlbWVudFN0YWNrLCByZXBsYWNlciwga2V5KTtcbiAgICB9XG4gICAgc3RhY2sucG9wKCk7XG4gICAgcmVwbGFjZW1lbnRTdGFjay5wb3AoKTtcbiAgICByZXR1cm4gY2Fub25pY2FsaXplZE9iajtcbiAgfVxuXG4gIGlmIChvYmogJiYgb2JqLnRvSlNPTikge1xuICAgIG9iaiA9IG9iai50b0pTT04oKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IHt9O1xuICAgIHJlcGxhY2VtZW50U3RhY2sucHVzaChjYW5vbmljYWxpemVkT2JqKTtcbiAgICBsZXQgc29ydGVkS2V5cyA9IFtdLFxuICAgICAgICBrZXk7XG4gICAgZm9yIChrZXkgaW4gb2JqKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIHNvcnRlZEtleXMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICBzb3J0ZWRLZXlzLnNvcnQoKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgc29ydGVkS2V5cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAga2V5ID0gc29ydGVkS2V5c1tpXTtcbiAgICAgIGNhbm9uaWNhbGl6ZWRPYmpba2V5XSA9IGNhbm9uaWNhbGl6ZShvYmpba2V5XSwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpO1xuICAgIH1cbiAgICBzdGFjay5wb3AoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIGNhbm9uaWNhbGl6ZWRPYmogPSBvYmo7XG4gIH1cbiAgcmV0dXJuIGNhbm9uaWNhbGl6ZWRPYmo7XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffLines = diffLines;\nexports.diffTrimmedLines = diffTrimmedLines;\nexports.lineDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_params = require(\"../util/params\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar lineDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.lineDiff = lineDiff;\n\n/*istanbul ignore end*/\nlineDiff.tokenize = function (value) {\n if (this.options.stripTrailingCr) {\n // remove one \\r before \\n to match GNU diff's --strip-trailing-cr behavior\n value = value.replace(/\\r\\n/g, '\\n');\n }\n\n var retLines = [],\n linesAndNewlines = value.split(/(\\n|\\r\\n)/); // Ignore the final empty token that occurs if the string ends with a new line\n\n if (!linesAndNewlines[linesAndNewlines.length - 1]) {\n linesAndNewlines.pop();\n } // Merge the content and line separators into single tokens\n\n\n for (var i = 0; i < linesAndNewlines.length; i++) {\n var line = linesAndNewlines[i];\n\n if (i % 2 && !this.options.newlineIsToken) {\n retLines[retLines.length - 1] += line;\n } else {\n if (this.options.ignoreWhitespace) {\n line = line.trim();\n }\n\n retLines.push(line);\n }\n }\n\n return retLines;\n};\n\nfunction diffLines(oldStr, newStr, callback) {\n return lineDiff.diff(oldStr, newStr, callback);\n}\n\nfunction diffTrimmedLines(oldStr, newStr, callback) {\n var options =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _params\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n generateOptions)\n /*istanbul ignore end*/\n (callback, {\n ignoreWhitespace: true\n });\n return lineDiff.diff(oldStr, newStr, options);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2xpbmUuanMiXSwibmFtZXMiOlsibGluZURpZmYiLCJEaWZmIiwidG9rZW5pemUiLCJ2YWx1ZSIsIm9wdGlvbnMiLCJzdHJpcFRyYWlsaW5nQ3IiLCJyZXBsYWNlIiwicmV0TGluZXMiLCJsaW5lc0FuZE5ld2xpbmVzIiwic3BsaXQiLCJsZW5ndGgiLCJwb3AiLCJpIiwibGluZSIsIm5ld2xpbmVJc1Rva2VuIiwiaWdub3JlV2hpdGVzcGFjZSIsInRyaW0iLCJwdXNoIiwiZGlmZkxpbmVzIiwib2xkU3RyIiwibmV3U3RyIiwiY2FsbGJhY2siLCJkaWZmIiwiZGlmZlRyaW1tZWRMaW5lcyIsImdlbmVyYXRlT3B0aW9ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7O0FBRU8sSUFBTUEsUUFBUSxHQUFHO0FBQUlDO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBLENBQUosRUFBakI7Ozs7OztBQUNQRCxRQUFRLENBQUNFLFFBQVQsR0FBb0IsVUFBU0MsS0FBVCxFQUFnQjtBQUNsQyxNQUFHLEtBQUtDLE9BQUwsQ0FBYUMsZUFBaEIsRUFBaUM7QUFDL0I7QUFDQUYsSUFBQUEsS0FBSyxHQUFHQSxLQUFLLENBQUNHLE9BQU4sQ0FBYyxPQUFkLEVBQXVCLElBQXZCLENBQVI7QUFDRDs7QUFFRCxNQUFJQyxRQUFRLEdBQUcsRUFBZjtBQUFBLE1BQ0lDLGdCQUFnQixHQUFHTCxLQUFLLENBQUNNLEtBQU4sQ0FBWSxXQUFaLENBRHZCLENBTmtDLENBU2xDOztBQUNBLE1BQUksQ0FBQ0QsZ0JBQWdCLENBQUNBLGdCQUFnQixDQUFDRSxNQUFqQixHQUEwQixDQUEzQixDQUFyQixFQUFvRDtBQUNsREYsSUFBQUEsZ0JBQWdCLENBQUNHLEdBQWpCO0FBQ0QsR0FaaUMsQ0FjbEM7OztBQUNBLE9BQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0osZ0JBQWdCLENBQUNFLE1BQXJDLEVBQTZDRSxDQUFDLEVBQTlDLEVBQWtEO0FBQ2hELFFBQUlDLElBQUksR0FBR0wsZ0JBQWdCLENBQUNJLENBQUQsQ0FBM0I7O0FBRUEsUUFBSUEsQ0FBQyxHQUFHLENBQUosSUFBUyxDQUFDLEtBQUtSLE9BQUwsQ0FBYVUsY0FBM0IsRUFBMkM7QUFDekNQLE1BQUFBLFFBQVEsQ0FBQ0EsUUFBUSxDQUFDRyxNQUFULEdBQWtCLENBQW5CLENBQVIsSUFBaUNHLElBQWpDO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsVUFBSSxLQUFLVCxPQUFMLENBQWFXLGdCQUFqQixFQUFtQztBQUNqQ0YsUUFBQUEsSUFBSSxHQUFHQSxJQUFJLENBQUNHLElBQUwsRUFBUDtBQUNEOztBQUNEVCxNQUFBQSxRQUFRLENBQUNVLElBQVQsQ0FBY0osSUFBZDtBQUNEO0FBQ0Y7O0FBRUQsU0FBT04sUUFBUDtBQUNELENBN0JEOztBQStCTyxTQUFTVyxTQUFULENBQW1CQyxNQUFuQixFQUEyQkMsTUFBM0IsRUFBbUNDLFFBQW5DLEVBQTZDO0FBQUUsU0FBT3JCLFFBQVEsQ0FBQ3NCLElBQVQsQ0FBY0gsTUFBZCxFQUFzQkMsTUFBdEIsRUFBOEJDLFFBQTlCLENBQVA7QUFBaUQ7O0FBQ2hHLFNBQVNFLGdCQUFULENBQTBCSixNQUExQixFQUFrQ0MsTUFBbEMsRUFBMENDLFFBQTFDLEVBQW9EO0FBQ3pELE1BQUlqQixPQUFPO0FBQUc7QUFBQTtBQUFBOztBQUFBb0I7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQTtBQUFBLEdBQWdCSCxRQUFoQixFQUEwQjtBQUFDTixJQUFBQSxnQkFBZ0IsRUFBRTtBQUFuQixHQUExQixDQUFkO0FBQ0EsU0FBT2YsUUFBUSxDQUFDc0IsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QmhCLE9BQTlCLENBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQge2dlbmVyYXRlT3B0aW9uc30gZnJvbSAnLi4vdXRpbC9wYXJhbXMnO1xuXG5leHBvcnQgY29uc3QgbGluZURpZmYgPSBuZXcgRGlmZigpO1xubGluZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICBpZih0aGlzLm9wdGlvbnMuc3RyaXBUcmFpbGluZ0NyKSB7XG4gICAgLy8gcmVtb3ZlIG9uZSBcXHIgYmVmb3JlIFxcbiB0byBtYXRjaCBHTlUgZGlmZidzIC0tc3RyaXAtdHJhaWxpbmctY3IgYmVoYXZpb3JcbiAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoL1xcclxcbi9nLCAnXFxuJyk7XG4gIH1cblxuICBsZXQgcmV0TGluZXMgPSBbXSxcbiAgICAgIGxpbmVzQW5kTmV3bGluZXMgPSB2YWx1ZS5zcGxpdCgvKFxcbnxcXHJcXG4pLyk7XG5cbiAgLy8gSWdub3JlIHRoZSBmaW5hbCBlbXB0eSB0b2tlbiB0aGF0IG9jY3VycyBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCBhIG5ldyBsaW5lXG4gIGlmICghbGluZXNBbmROZXdsaW5lc1tsaW5lc0FuZE5ld2xpbmVzLmxlbmd0aCAtIDFdKSB7XG4gICAgbGluZXNBbmROZXdsaW5lcy5wb3AoKTtcbiAgfVxuXG4gIC8vIE1lcmdlIHRoZSBjb250ZW50IGFuZCBsaW5lIHNlcGFyYXRvcnMgaW50byBzaW5nbGUgdG9rZW5zXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXNBbmROZXdsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBsaW5lID0gbGluZXNBbmROZXdsaW5lc1tpXTtcblxuICAgIGlmIChpICUgMiAmJiAhdGhpcy5vcHRpb25zLm5ld2xpbmVJc1Rva2VuKSB7XG4gICAgICByZXRMaW5lc1tyZXRMaW5lcy5sZW5ndGggLSAxXSArPSBsaW5lO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmlnbm9yZVdoaXRlc3BhY2UpIHtcbiAgICAgICAgbGluZSA9IGxpbmUudHJpbSgpO1xuICAgICAgfVxuICAgICAgcmV0TGluZXMucHVzaChsaW5lKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0TGluZXM7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZkxpbmVzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykgeyByZXR1cm4gbGluZURpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spOyB9XG5leHBvcnQgZnVuY3Rpb24gZGlmZlRyaW1tZWRMaW5lcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHtcbiAgbGV0IG9wdGlvbnMgPSBnZW5lcmF0ZU9wdGlvbnMoY2FsbGJhY2ssIHtpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gIHJldHVybiBsaW5lRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffSentences = diffSentences;\nexports.sentenceDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nvar sentenceDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.sentenceDiff = sentenceDiff;\n\n/*istanbul ignore end*/\nsentenceDiff.tokenize = function (value) {\n return value.split(/(\\S.+?[.!?])(?=\\s+|$)/);\n};\n\nfunction diffSentences(oldStr, newStr, callback) {\n return sentenceDiff.diff(oldStr, newStr, callback);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3NlbnRlbmNlLmpzIl0sIm5hbWVzIjpbInNlbnRlbmNlRGlmZiIsIkRpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic3BsaXQiLCJkaWZmU2VudGVuY2VzIiwib2xkU3RyIiwibmV3U3RyIiwiY2FsbGJhY2siLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFHTyxJQUFNQSxZQUFZLEdBQUc7QUFBSUM7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUE7QUFBQUEsQ0FBSixFQUFyQjs7Ozs7O0FBQ1BELFlBQVksQ0FBQ0UsUUFBYixHQUF3QixVQUFTQyxLQUFULEVBQWdCO0FBQ3RDLFNBQU9BLEtBQUssQ0FBQ0MsS0FBTixDQUFZLHVCQUFaLENBQVA7QUFDRCxDQUZEOztBQUlPLFNBQVNDLGFBQVQsQ0FBdUJDLE1BQXZCLEVBQStCQyxNQUEvQixFQUF1Q0MsUUFBdkMsRUFBaUQ7QUFBRSxTQUFPUixZQUFZLENBQUNTLElBQWIsQ0FBa0JILE1BQWxCLEVBQTBCQyxNQUExQixFQUFrQ0MsUUFBbEMsQ0FBUDtBQUFxRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cblxuZXhwb3J0IGNvbnN0IHNlbnRlbmNlRGlmZiA9IG5ldyBEaWZmKCk7XG5zZW50ZW5jZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc3BsaXQoLyhcXFMuKz9bLiE/XSkoPz1cXHMrfCQpLyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlNlbnRlbmNlcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHsgcmV0dXJuIHNlbnRlbmNlRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.diffWords = diffWords;\nexports.diffWordsWithSpace = diffWordsWithSpace;\nexports.wordDiff = void 0;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./base\"))\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_params = require(\"../util/params\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\n// Based on https://en.wikipedia.org/wiki/Latin_script_in_Unicode\n//\n// Ranges and exceptions:\n// Latin-1 Supplement, 0080–00FF\n// - U+00D7 × Multiplication sign\n// - U+00F7 ÷ Division sign\n// Latin Extended-A, 0100–017F\n// Latin Extended-B, 0180–024F\n// IPA Extensions, 0250–02AF\n// Spacing Modifier Letters, 02B0–02FF\n// - U+02C7 ˇ ˇ Caron\n// - U+02D8 ˘ ˘ Breve\n// - U+02D9 ˙ ˙ Dot Above\n// - U+02DA ˚ ˚ Ring Above\n// - U+02DB ˛ ˛ Ogonek\n// - U+02DC ˜ ˜ Small Tilde\n// - U+02DD ˝ ˝ Double Acute Accent\n// Latin Extended Additional, 1E00–1EFF\nvar extendedWordChars = /^[A-Za-z\\xC0-\\u02C6\\u02C8-\\u02D7\\u02DE-\\u02FF\\u1E00-\\u1EFF]+$/;\nvar reWhitespace = /\\S/;\nvar wordDiff = new\n/*istanbul ignore start*/\n_base\n/*istanbul ignore end*/\n[\n/*istanbul ignore start*/\n\"default\"\n/*istanbul ignore end*/\n]();\n\n/*istanbul ignore start*/\nexports.wordDiff = wordDiff;\n\n/*istanbul ignore end*/\nwordDiff.equals = function (left, right) {\n if (this.options.ignoreCase) {\n left = left.toLowerCase();\n right = right.toLowerCase();\n }\n\n return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);\n};\n\nwordDiff.tokenize = function (value) {\n // All whitespace symbols except newline group into one token, each newline - in separate token\n var tokens = value.split(/([^\\S\\r\\n]+|[()[\\]{}'\"\\r\\n]|\\b)/); // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.\n\n for (var i = 0; i < tokens.length - 1; i++) {\n // If we have an empty string in the next field and we have only word chars before and after, merge\n if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {\n tokens[i] += tokens[i + 2];\n tokens.splice(i + 1, 2);\n i--;\n }\n }\n\n return tokens;\n};\n\nfunction diffWords(oldStr, newStr, options) {\n options =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _params\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n generateOptions)\n /*istanbul ignore end*/\n (options, {\n ignoreWhitespace: true\n });\n return wordDiff.diff(oldStr, newStr, options);\n}\n\nfunction diffWordsWithSpace(oldStr, newStr, options) {\n return wordDiff.diff(oldStr, newStr, options);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3dvcmQuanMiXSwibmFtZXMiOlsiZXh0ZW5kZWRXb3JkQ2hhcnMiLCJyZVdoaXRlc3BhY2UiLCJ3b3JkRGlmZiIsIkRpZmYiLCJlcXVhbHMiLCJsZWZ0IiwicmlnaHQiLCJvcHRpb25zIiwiaWdub3JlQ2FzZSIsInRvTG93ZXJDYXNlIiwiaWdub3JlV2hpdGVzcGFjZSIsInRlc3QiLCJ0b2tlbml6ZSIsInZhbHVlIiwidG9rZW5zIiwic3BsaXQiLCJpIiwibGVuZ3RoIiwic3BsaWNlIiwiZGlmZldvcmRzIiwib2xkU3RyIiwibmV3U3RyIiwiZ2VuZXJhdGVPcHRpb25zIiwiZGlmZiIsImRpZmZXb3Jkc1dpdGhTcGFjZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7Ozs7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBTUEsaUJBQWlCLEdBQUcsK0RBQTFCO0FBRUEsSUFBTUMsWUFBWSxHQUFHLElBQXJCO0FBRU8sSUFBTUMsUUFBUSxHQUFHO0FBQUlDO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBLENBQUosRUFBakI7Ozs7OztBQUNQRCxRQUFRLENBQUNFLE1BQVQsR0FBa0IsVUFBU0MsSUFBVCxFQUFlQyxLQUFmLEVBQXNCO0FBQ3RDLE1BQUksS0FBS0MsT0FBTCxDQUFhQyxVQUFqQixFQUE2QjtBQUMzQkgsSUFBQUEsSUFBSSxHQUFHQSxJQUFJLENBQUNJLFdBQUwsRUFBUDtBQUNBSCxJQUFBQSxLQUFLLEdBQUdBLEtBQUssQ0FBQ0csV0FBTixFQUFSO0FBQ0Q7O0FBQ0QsU0FBT0osSUFBSSxLQUFLQyxLQUFULElBQW1CLEtBQUtDLE9BQUwsQ0FBYUcsZ0JBQWIsSUFBaUMsQ0FBQ1QsWUFBWSxDQUFDVSxJQUFiLENBQWtCTixJQUFsQixDQUFsQyxJQUE2RCxDQUFDSixZQUFZLENBQUNVLElBQWIsQ0FBa0JMLEtBQWxCLENBQXhGO0FBQ0QsQ0FORDs7QUFPQUosUUFBUSxDQUFDVSxRQUFULEdBQW9CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDbEM7QUFDQSxNQUFJQyxNQUFNLEdBQUdELEtBQUssQ0FBQ0UsS0FBTixDQUFZLGlDQUFaLENBQWIsQ0FGa0MsQ0FJbEM7O0FBQ0EsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRixNQUFNLENBQUNHLE1BQVAsR0FBZ0IsQ0FBcEMsRUFBdUNELENBQUMsRUFBeEMsRUFBNEM7QUFDMUM7QUFDQSxRQUFJLENBQUNGLE1BQU0sQ0FBQ0UsQ0FBQyxHQUFHLENBQUwsQ0FBUCxJQUFrQkYsTUFBTSxDQUFDRSxDQUFDLEdBQUcsQ0FBTCxDQUF4QixJQUNLaEIsaUJBQWlCLENBQUNXLElBQWxCLENBQXVCRyxNQUFNLENBQUNFLENBQUQsQ0FBN0IsQ0FETCxJQUVLaEIsaUJBQWlCLENBQUNXLElBQWxCLENBQXVCRyxNQUFNLENBQUNFLENBQUMsR0FBRyxDQUFMLENBQTdCLENBRlQsRUFFZ0Q7QUFDOUNGLE1BQUFBLE1BQU0sQ0FBQ0UsQ0FBRCxDQUFOLElBQWFGLE1BQU0sQ0FBQ0UsQ0FBQyxHQUFHLENBQUwsQ0FBbkI7QUFDQUYsTUFBQUEsTUFBTSxDQUFDSSxNQUFQLENBQWNGLENBQUMsR0FBRyxDQUFsQixFQUFxQixDQUFyQjtBQUNBQSxNQUFBQSxDQUFDO0FBQ0Y7QUFDRjs7QUFFRCxTQUFPRixNQUFQO0FBQ0QsQ0FqQkQ7O0FBbUJPLFNBQVNLLFNBQVQsQ0FBbUJDLE1BQW5CLEVBQTJCQyxNQUEzQixFQUFtQ2QsT0FBbkMsRUFBNEM7QUFDakRBLEVBQUFBLE9BQU87QUFBRztBQUFBO0FBQUE7O0FBQUFlO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxHQUFnQmYsT0FBaEIsRUFBeUI7QUFBQ0csSUFBQUEsZ0JBQWdCLEVBQUU7QUFBbkIsR0FBekIsQ0FBVjtBQUNBLFNBQU9SLFFBQVEsQ0FBQ3FCLElBQVQsQ0FBY0gsTUFBZCxFQUFzQkMsTUFBdEIsRUFBOEJkLE9BQTlCLENBQVA7QUFDRDs7QUFFTSxTQUFTaUIsa0JBQVQsQ0FBNEJKLE1BQTVCLEVBQW9DQyxNQUFwQyxFQUE0Q2QsT0FBNUMsRUFBcUQ7QUFDMUQsU0FBT0wsUUFBUSxDQUFDcUIsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QmQsT0FBOUIsQ0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7Z2VuZXJhdGVPcHRpb25zfSBmcm9tICcuLi91dGlsL3BhcmFtcyc7XG5cbi8vIEJhc2VkIG9uIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0xhdGluX3NjcmlwdF9pbl9Vbmljb2RlXG4vL1xuLy8gUmFuZ2VzIGFuZCBleGNlcHRpb25zOlxuLy8gTGF0aW4tMSBTdXBwbGVtZW50LCAwMDgw4oCTMDBGRlxuLy8gIC0gVSswMEQ3ICDDlyBNdWx0aXBsaWNhdGlvbiBzaWduXG4vLyAgLSBVKzAwRjcgIMO3IERpdmlzaW9uIHNpZ25cbi8vIExhdGluIEV4dGVuZGVkLUEsIDAxMDDigJMwMTdGXG4vLyBMYXRpbiBFeHRlbmRlZC1CLCAwMTgw4oCTMDI0RlxuLy8gSVBBIEV4dGVuc2lvbnMsIDAyNTDigJMwMkFGXG4vLyBTcGFjaW5nIE1vZGlmaWVyIExldHRlcnMsIDAyQjDigJMwMkZGXG4vLyAgLSBVKzAyQzcgIMuHICYjNzExOyAgQ2Fyb25cbi8vICAtIFUrMDJEOCAgy5ggJiM3Mjg7ICBCcmV2ZVxuLy8gIC0gVSswMkQ5ICDLmSAmIzcyOTsgIERvdCBBYm92ZVxuLy8gIC0gVSswMkRBICDLmiAmIzczMDsgIFJpbmcgQWJvdmVcbi8vICAtIFUrMDJEQiAgy5sgJiM3MzE7ICBPZ29uZWtcbi8vICAtIFUrMDJEQyAgy5wgJiM3MzI7ICBTbWFsbCBUaWxkZVxuLy8gIC0gVSswMkREICDLnSAmIzczMzsgIERvdWJsZSBBY3V0ZSBBY2NlbnRcbi8vIExhdGluIEV4dGVuZGVkIEFkZGl0aW9uYWwsIDFFMDDigJMxRUZGXG5jb25zdCBleHRlbmRlZFdvcmRDaGFycyA9IC9eW2EtekEtWlxcdXtDMH0tXFx1e0ZGfVxcdXtEOH0tXFx1e0Y2fVxcdXtGOH0tXFx1ezJDNn1cXHV7MkM4fS1cXHV7MkQ3fVxcdXsyREV9LVxcdXsyRkZ9XFx1ezFFMDB9LVxcdXsxRUZGfV0rJC91O1xuXG5jb25zdCByZVdoaXRlc3BhY2UgPSAvXFxTLztcblxuZXhwb3J0IGNvbnN0IHdvcmREaWZmID0gbmV3IERpZmYoKTtcbndvcmREaWZmLmVxdWFscyA9IGZ1bmN0aW9uKGxlZnQsIHJpZ2h0KSB7XG4gIGlmICh0aGlzLm9wdGlvbnMuaWdub3JlQ2FzZSkge1xuICAgIGxlZnQgPSBsZWZ0LnRvTG93ZXJDYXNlKCk7XG4gICAgcmlnaHQgPSByaWdodC50b0xvd2VyQ2FzZSgpO1xuICB9XG4gIHJldHVybiBsZWZ0ID09PSByaWdodCB8fCAodGhpcy5vcHRpb25zLmlnbm9yZVdoaXRlc3BhY2UgJiYgIXJlV2hpdGVzcGFjZS50ZXN0KGxlZnQpICYmICFyZVdoaXRlc3BhY2UudGVzdChyaWdodCkpO1xufTtcbndvcmREaWZmLnRva2VuaXplID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgLy8gQWxsIHdoaXRlc3BhY2Ugc3ltYm9scyBleGNlcHQgbmV3bGluZSBncm91cCBpbnRvIG9uZSB0b2tlbiwgZWFjaCBuZXdsaW5lIC0gaW4gc2VwYXJhdGUgdG9rZW5cbiAgbGV0IHRva2VucyA9IHZhbHVlLnNwbGl0KC8oW15cXFNcXHJcXG5dK3xbKClbXFxde30nXCJcXHJcXG5dfFxcYikvKTtcblxuICAvLyBKb2luIHRoZSBib3VuZGFyeSBzcGxpdHMgdGhhdCB3ZSBkbyBub3QgY29uc2lkZXIgdG8gYmUgYm91bmRhcmllcy4gVGhpcyBpcyBwcmltYXJpbHkgdGhlIGV4dGVuZGVkIExhdGluIGNoYXJhY3RlciBzZXQuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIC8vIElmIHdlIGhhdmUgYW4gZW1wdHkgc3RyaW5nIGluIHRoZSBuZXh0IGZpZWxkIGFuZCB3ZSBoYXZlIG9ubHkgd29yZCBjaGFycyBiZWZvcmUgYW5kIGFmdGVyLCBtZXJnZVxuICAgIGlmICghdG9rZW5zW2kgKyAxXSAmJiB0b2tlbnNbaSArIDJdXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaV0pXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaSArIDJdKSkge1xuICAgICAgdG9rZW5zW2ldICs9IHRva2Vuc1tpICsgMl07XG4gICAgICB0b2tlbnMuc3BsaWNlKGkgKyAxLCAyKTtcbiAgICAgIGktLTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3JkcyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICBvcHRpb25zID0gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIHtpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gIHJldHVybiB3b3JkRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3Jkc1dpdGhTcGFjZShvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICByZXR1cm4gd29yZERpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucyk7XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"Diff\", {\n enumerable: true,\n get: function get() {\n return _base[\"default\"];\n }\n});\nObject.defineProperty(exports, \"diffChars\", {\n enumerable: true,\n get: function get() {\n return _character.diffChars;\n }\n});\nObject.defineProperty(exports, \"diffWords\", {\n enumerable: true,\n get: function get() {\n return _word.diffWords;\n }\n});\nObject.defineProperty(exports, \"diffWordsWithSpace\", {\n enumerable: true,\n get: function get() {\n return _word.diffWordsWithSpace;\n }\n});\nObject.defineProperty(exports, \"diffLines\", {\n enumerable: true,\n get: function get() {\n return _line.diffLines;\n }\n});\nObject.defineProperty(exports, \"diffTrimmedLines\", {\n enumerable: true,\n get: function get() {\n return _line.diffTrimmedLines;\n }\n});\nObject.defineProperty(exports, \"diffSentences\", {\n enumerable: true,\n get: function get() {\n return _sentence.diffSentences;\n }\n});\nObject.defineProperty(exports, \"diffCss\", {\n enumerable: true,\n get: function get() {\n return _css.diffCss;\n }\n});\nObject.defineProperty(exports, \"diffJson\", {\n enumerable: true,\n get: function get() {\n return _json.diffJson;\n }\n});\nObject.defineProperty(exports, \"canonicalize\", {\n enumerable: true,\n get: function get() {\n return _json.canonicalize;\n }\n});\nObject.defineProperty(exports, \"diffArrays\", {\n enumerable: true,\n get: function get() {\n return _array.diffArrays;\n }\n});\nObject.defineProperty(exports, \"applyPatch\", {\n enumerable: true,\n get: function get() {\n return _apply.applyPatch;\n }\n});\nObject.defineProperty(exports, \"applyPatches\", {\n enumerable: true,\n get: function get() {\n return _apply.applyPatches;\n }\n});\nObject.defineProperty(exports, \"parsePatch\", {\n enumerable: true,\n get: function get() {\n return _parse.parsePatch;\n }\n});\nObject.defineProperty(exports, \"merge\", {\n enumerable: true,\n get: function get() {\n return _merge.merge;\n }\n});\nObject.defineProperty(exports, \"reversePatch\", {\n enumerable: true,\n get: function get() {\n return _reverse.reversePatch;\n }\n});\nObject.defineProperty(exports, \"structuredPatch\", {\n enumerable: true,\n get: function get() {\n return _create.structuredPatch;\n }\n});\nObject.defineProperty(exports, \"createTwoFilesPatch\", {\n enumerable: true,\n get: function get() {\n return _create.createTwoFilesPatch;\n }\n});\nObject.defineProperty(exports, \"createPatch\", {\n enumerable: true,\n get: function get() {\n return _create.createPatch;\n }\n});\nObject.defineProperty(exports, \"formatPatch\", {\n enumerable: true,\n get: function get() {\n return _create.formatPatch;\n }\n});\nObject.defineProperty(exports, \"convertChangesToDMP\", {\n enumerable: true,\n get: function get() {\n return _dmp.convertChangesToDMP;\n }\n});\nObject.defineProperty(exports, \"convertChangesToXML\", {\n enumerable: true,\n get: function get() {\n return _xml.convertChangesToXML;\n }\n});\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_base = _interopRequireDefault(require(\"./diff/base\"))\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_character = require(\"./diff/character\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_word = require(\"./diff/word\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_line = require(\"./diff/line\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_sentence = require(\"./diff/sentence\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_css = require(\"./diff/css\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_json = require(\"./diff/json\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_array = require(\"./diff/array\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_apply = require(\"./patch/apply\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_parse = require(\"./patch/parse\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_merge = require(\"./patch/merge\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_reverse = require(\"./patch/reverse\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_create = require(\"./patch/create\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_dmp = require(\"./convert/dmp\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_xml = require(\"./convert/xml\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBOztBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQSIsInNvdXJjZXNDb250ZW50IjpbIi8qIFNlZSBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zIG9mIHVzZSAqL1xuXG4vKlxuICogVGV4dCBkaWZmIGltcGxlbWVudGF0aW9uLlxuICpcbiAqIFRoaXMgbGlicmFyeSBzdXBwb3J0cyB0aGUgZm9sbG93aW5nIEFQSXM6XG4gKiBEaWZmLmRpZmZDaGFyczogQ2hhcmFjdGVyIGJ5IGNoYXJhY3RlciBkaWZmXG4gKiBEaWZmLmRpZmZXb3JkczogV29yZCAoYXMgZGVmaW5lZCBieSBcXGIgcmVnZXgpIGRpZmYgd2hpY2ggaWdub3JlcyB3aGl0ZXNwYWNlXG4gKiBEaWZmLmRpZmZMaW5lczogTGluZSBiYXNlZCBkaWZmXG4gKlxuICogRGlmZi5kaWZmQ3NzOiBEaWZmIHRhcmdldGVkIGF0IENTUyBjb250ZW50XG4gKlxuICogVGhlc2UgbWV0aG9kcyBhcmUgYmFzZWQgb24gdGhlIGltcGxlbWVudGF0aW9uIHByb3Bvc2VkIGluXG4gKiBcIkFuIE8oTkQpIERpZmZlcmVuY2UgQWxnb3JpdGhtIGFuZCBpdHMgVmFyaWF0aW9uc1wiIChNeWVycywgMTk4NikuXG4gKiBodHRwOi8vY2l0ZXNlZXJ4LmlzdC5wc3UuZWR1L3ZpZXdkb2Mvc3VtbWFyeT9kb2k9MTAuMS4xLjQuNjkyN1xuICovXG5pbXBvcnQgRGlmZiBmcm9tICcuL2RpZmYvYmFzZSc7XG5pbXBvcnQge2RpZmZDaGFyc30gZnJvbSAnLi9kaWZmL2NoYXJhY3Rlcic7XG5pbXBvcnQge2RpZmZXb3JkcywgZGlmZldvcmRzV2l0aFNwYWNlfSBmcm9tICcuL2RpZmYvd29yZCc7XG5pbXBvcnQge2RpZmZMaW5lcywgZGlmZlRyaW1tZWRMaW5lc30gZnJvbSAnLi9kaWZmL2xpbmUnO1xuaW1wb3J0IHtkaWZmU2VudGVuY2VzfSBmcm9tICcuL2RpZmYvc2VudGVuY2UnO1xuXG5pbXBvcnQge2RpZmZDc3N9IGZyb20gJy4vZGlmZi9jc3MnO1xuaW1wb3J0IHtkaWZmSnNvbiwgY2Fub25pY2FsaXplfSBmcm9tICcuL2RpZmYvanNvbic7XG5cbmltcG9ydCB7ZGlmZkFycmF5c30gZnJvbSAnLi9kaWZmL2FycmF5JztcblxuaW1wb3J0IHthcHBseVBhdGNoLCBhcHBseVBhdGNoZXN9IGZyb20gJy4vcGF0Y2gvYXBwbHknO1xuaW1wb3J0IHtwYXJzZVBhdGNofSBmcm9tICcuL3BhdGNoL3BhcnNlJztcbmltcG9ydCB7bWVyZ2V9IGZyb20gJy4vcGF0Y2gvbWVyZ2UnO1xuaW1wb3J0IHtyZXZlcnNlUGF0Y2h9IGZyb20gJy4vcGF0Y2gvcmV2ZXJzZSc7XG5pbXBvcnQge3N0cnVjdHVyZWRQYXRjaCwgY3JlYXRlVHdvRmlsZXNQYXRjaCwgY3JlYXRlUGF0Y2gsIGZvcm1hdFBhdGNofSBmcm9tICcuL3BhdGNoL2NyZWF0ZSc7XG5cbmltcG9ydCB7Y29udmVydENoYW5nZXNUb0RNUH0gZnJvbSAnLi9jb252ZXJ0L2RtcCc7XG5pbXBvcnQge2NvbnZlcnRDaGFuZ2VzVG9YTUx9IGZyb20gJy4vY29udmVydC94bWwnO1xuXG5leHBvcnQge1xuICBEaWZmLFxuXG4gIGRpZmZDaGFycyxcbiAgZGlmZldvcmRzLFxuICBkaWZmV29yZHNXaXRoU3BhY2UsXG4gIGRpZmZMaW5lcyxcbiAgZGlmZlRyaW1tZWRMaW5lcyxcbiAgZGlmZlNlbnRlbmNlcyxcblxuICBkaWZmQ3NzLFxuICBkaWZmSnNvbixcblxuICBkaWZmQXJyYXlzLFxuXG4gIHN0cnVjdHVyZWRQYXRjaCxcbiAgY3JlYXRlVHdvRmlsZXNQYXRjaCxcbiAgY3JlYXRlUGF0Y2gsXG4gIGZvcm1hdFBhdGNoLFxuICBhcHBseVBhdGNoLFxuICBhcHBseVBhdGNoZXMsXG4gIHBhcnNlUGF0Y2gsXG4gIG1lcmdlLFxuICByZXZlcnNlUGF0Y2gsXG4gIGNvbnZlcnRDaGFuZ2VzVG9ETVAsXG4gIGNvbnZlcnRDaGFuZ2VzVG9YTUwsXG4gIGNhbm9uaWNhbGl6ZVxufTtcbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.applyPatch = applyPatch;\nexports.applyPatches = applyPatches;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_parse = require(\"./parse\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_distanceIterator = _interopRequireDefault(require(\"../util/distance-iterator\"))\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\n/*istanbul ignore end*/\nfunction applyPatch(source, uniDiff) {\n /*istanbul ignore start*/\n var\n /*istanbul ignore end*/\n options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (typeof uniDiff === 'string') {\n uniDiff =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _parse\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n parsePatch)\n /*istanbul ignore end*/\n (uniDiff);\n }\n\n if (Array.isArray(uniDiff)) {\n if (uniDiff.length > 1) {\n throw new Error('applyPatch only works with a single input.');\n }\n\n uniDiff = uniDiff[0];\n } // Apply the diff to the input\n\n\n var lines = source.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/),\n delimiters = source.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [],\n hunks = uniDiff.hunks,\n compareLine = options.compareLine || function (lineNumber, line, operation, patchContent)\n /*istanbul ignore start*/\n {\n return (\n /*istanbul ignore end*/\n line === patchContent\n );\n },\n errorCount = 0,\n fuzzFactor = options.fuzzFactor || 0,\n minLine = 0,\n offset = 0,\n removeEOFNL,\n addEOFNL;\n /**\n * Checks if the hunk exactly fits on the provided location\n */\n\n\n function hunkFits(hunk, toPos) {\n for (var j = 0; j < hunk.lines.length; j++) {\n var line = hunk.lines[j],\n operation = line.length > 0 ? line[0] : ' ',\n content = line.length > 0 ? line.substr(1) : line;\n\n if (operation === ' ' || operation === '-') {\n // Context sanity check\n if (!compareLine(toPos + 1, lines[toPos], operation, content)) {\n errorCount++;\n\n if (errorCount > fuzzFactor) {\n return false;\n }\n }\n\n toPos++;\n }\n }\n\n return true;\n } // Search best fit offsets for each hunk based on the previous ones\n\n\n for (var i = 0; i < hunks.length; i++) {\n var hunk = hunks[i],\n maxLine = lines.length - hunk.oldLines,\n localOffset = 0,\n toPos = offset + hunk.oldStart - 1;\n var iterator =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _distanceIterator\n /*istanbul ignore end*/\n [\n /*istanbul ignore start*/\n \"default\"\n /*istanbul ignore end*/\n ])(toPos, minLine, maxLine);\n\n for (; localOffset !== undefined; localOffset = iterator()) {\n if (hunkFits(hunk, toPos + localOffset)) {\n hunk.offset = offset += localOffset;\n break;\n }\n }\n\n if (localOffset === undefined) {\n return false;\n } // Set lower text limit to end of the current hunk, so next ones don't try\n // to fit over already patched text\n\n\n minLine = hunk.offset + hunk.oldStart + hunk.oldLines;\n } // Apply patch hunks\n\n\n var diffOffset = 0;\n\n for (var _i = 0; _i < hunks.length; _i++) {\n var _hunk = hunks[_i],\n _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1;\n\n diffOffset += _hunk.newLines - _hunk.oldLines;\n\n for (var j = 0; j < _hunk.lines.length; j++) {\n var line = _hunk.lines[j],\n operation = line.length > 0 ? line[0] : ' ',\n content = line.length > 0 ? line.substr(1) : line,\n delimiter = _hunk.linedelimiters && _hunk.linedelimiters[j] || '\\n';\n\n if (operation === ' ') {\n _toPos++;\n } else if (operation === '-') {\n lines.splice(_toPos, 1);\n delimiters.splice(_toPos, 1);\n /* istanbul ignore else */\n } else if (operation === '+') {\n lines.splice(_toPos, 0, content);\n delimiters.splice(_toPos, 0, delimiter);\n _toPos++;\n } else if (operation === '\\\\') {\n var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;\n\n if (previousOperation === '+') {\n removeEOFNL = true;\n } else if (previousOperation === '-') {\n addEOFNL = true;\n }\n }\n }\n } // Handle EOFNL insertion/removal\n\n\n if (removeEOFNL) {\n while (!lines[lines.length - 1]) {\n lines.pop();\n delimiters.pop();\n }\n } else if (addEOFNL) {\n lines.push('');\n delimiters.push('\\n');\n }\n\n for (var _k = 0; _k < lines.length - 1; _k++) {\n lines[_k] = lines[_k] + delimiters[_k];\n }\n\n return lines.join('');\n} // Wrapper that supports multiple file patches via callbacks.\n\n\nfunction applyPatches(uniDiff, options) {\n if (typeof uniDiff === 'string') {\n uniDiff =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _parse\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n parsePatch)\n /*istanbul ignore end*/\n (uniDiff);\n }\n\n var currentIndex = 0;\n\n function processIndex() {\n var index = uniDiff[currentIndex++];\n\n if (!index) {\n return options.complete();\n }\n\n options.loadFile(index, function (err, data) {\n if (err) {\n return options.complete(err);\n }\n\n var updatedContent = applyPatch(data, index, options);\n options.patched(index, updatedContent, function (err) {\n if (err) {\n return options.complete(err);\n }\n\n processIndex();\n });\n });\n }\n\n processIndex();\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9hcHBseS5qcyJdLCJuYW1lcyI6WyJhcHBseVBhdGNoIiwic291cmNlIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJwYXJzZVBhdGNoIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwiRXJyb3IiLCJsaW5lcyIsInNwbGl0IiwiZGVsaW1pdGVycyIsIm1hdGNoIiwiaHVua3MiLCJjb21wYXJlTGluZSIsImxpbmVOdW1iZXIiLCJsaW5lIiwib3BlcmF0aW9uIiwicGF0Y2hDb250ZW50IiwiZXJyb3JDb3VudCIsImZ1enpGYWN0b3IiLCJtaW5MaW5lIiwib2Zmc2V0IiwicmVtb3ZlRU9GTkwiLCJhZGRFT0ZOTCIsImh1bmtGaXRzIiwiaHVuayIsInRvUG9zIiwiaiIsImNvbnRlbnQiLCJzdWJzdHIiLCJpIiwibWF4TGluZSIsIm9sZExpbmVzIiwibG9jYWxPZmZzZXQiLCJvbGRTdGFydCIsIml0ZXJhdG9yIiwiZGlzdGFuY2VJdGVyYXRvciIsInVuZGVmaW5lZCIsImRpZmZPZmZzZXQiLCJuZXdMaW5lcyIsImRlbGltaXRlciIsImxpbmVkZWxpbWl0ZXJzIiwic3BsaWNlIiwicHJldmlvdXNPcGVyYXRpb24iLCJwb3AiLCJwdXNoIiwiX2siLCJqb2luIiwiYXBwbHlQYXRjaGVzIiwiY3VycmVudEluZGV4IiwicHJvY2Vzc0luZGV4IiwiaW5kZXgiLCJjb21wbGV0ZSIsImxvYWRGaWxlIiwiZXJyIiwiZGF0YSIsInVwZGF0ZWRDb250ZW50IiwicGF0Y2hlZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7Ozs7QUFFTyxTQUFTQSxVQUFULENBQW9CQyxNQUFwQixFQUE0QkMsT0FBNUIsRUFBbUQ7QUFBQTtBQUFBO0FBQUE7QUFBZEMsRUFBQUEsT0FBYyx1RUFBSixFQUFJOztBQUN4RCxNQUFJLE9BQU9ELE9BQVAsS0FBbUIsUUFBdkIsRUFBaUM7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QUFBO0FBQUFBO0FBQUE7QUFBQSxLQUFXRixPQUFYLENBQVY7QUFDRDs7QUFFRCxNQUFJZ0QsWUFBWSxHQUFHLENBQW5COztBQUNBLFdBQVNDLFlBQVQsR0FBd0I7QUFDdEIsUUFBSUMsS0FBSyxHQUFHbEQsT0FBTyxDQUFDZ0QsWUFBWSxFQUFiLENBQW5COztBQUNBLFFBQUksQ0FBQ0UsS0FBTCxFQUFZO0FBQ1YsYUFBT2pELE9BQU8sQ0FBQ2tELFFBQVIsRUFBUDtBQUNEOztBQUVEbEQsSUFBQUEsT0FBTyxDQUFDbUQsUUFBUixDQUFpQkYsS0FBakIsRUFBd0IsVUFBU0csR0FBVCxFQUFjQyxJQUFkLEVBQW9CO0FBQzFDLFVBQUlELEdBQUosRUFBUztBQUNQLGVBQU9wRCxPQUFPLENBQUNrRCxRQUFSLENBQWlCRSxHQUFqQixDQUFQO0FBQ0Q7O0FBRUQsVUFBSUUsY0FBYyxHQUFHekQsVUFBVSxDQUFDd0QsSUFBRCxFQUFPSixLQUFQLEVBQWNqRCxPQUFkLENBQS9CO0FBQ0FBLE1BQUFBLE9BQU8sQ0FBQ3VELE9BQVIsQ0FBZ0JOLEtBQWhCLEVBQXVCSyxjQUF2QixFQUF1QyxVQUFTRixHQUFULEVBQWM7QUFDbkQsWUFBSUEsR0FBSixFQUFTO0FBQ1AsaUJBQU9wRCxPQUFPLENBQUNrRCxRQUFSLENBQWlCRSxHQUFqQixDQUFQO0FBQ0Q7O0FBRURKLFFBQUFBLFlBQVk7QUFDYixPQU5EO0FBT0QsS0FiRDtBQWNEOztBQUNEQSxFQUFBQSxZQUFZO0FBQ2IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3BhcnNlUGF0Y2h9IGZyb20gJy4vcGFyc2UnO1xuaW1wb3J0IGRpc3RhbmNlSXRlcmF0b3IgZnJvbSAnLi4vdXRpbC9kaXN0YW5jZS1pdGVyYXRvcic7XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBseVBhdGNoKHNvdXJjZSwgdW5pRGlmZiwgb3B0aW9ucyA9IHt9KSB7XG4gIGlmICh0eXBlb2YgdW5pRGlmZiA9PT0gJ3N0cmluZycpIHtcbiAgICB1bmlEaWZmID0gcGFyc2VQYXRjaCh1bmlEaWZmKTtcbiAgfVxuXG4gIGlmIChBcnJheS5pc0FycmF5KHVuaURpZmYpKSB7XG4gICAgaWYgKHVuaURpZmYubGVuZ3RoID4gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdhcHBseVBhdGNoIG9ubHkgd29ya3Mgd2l0aCBhIHNpbmdsZSBpbnB1dC4nKTtcbiAgICB9XG5cbiAgICB1bmlEaWZmID0gdW5pRGlmZlswXTtcbiAgfVxuXG4gIC8vIEFwcGx5IHRoZSBkaWZmIHRvIHRoZSBpbnB1dFxuICBsZXQgbGluZXMgPSBzb3VyY2Uuc3BsaXQoL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdLyksXG4gICAgICBkZWxpbWl0ZXJzID0gc291cmNlLm1hdGNoKC9cXHJcXG58W1xcblxcdlxcZlxcclxceDg1XS9nKSB8fCBbXSxcbiAgICAgIGh1bmtzID0gdW5pRGlmZi5odW5rcyxcblxuICAgICAgY29tcGFyZUxpbmUgPSBvcHRpb25zLmNvbXBhcmVMaW5lIHx8ICgobGluZU51bWJlciwgbGluZSwgb3BlcmF0aW9uLCBwYXRjaENvbnRlbnQpID0+IGxpbmUgPT09IHBhdGNoQ29udGVudCksXG4gICAgICBlcnJvckNvdW50ID0gMCxcbiAgICAgIGZ1enpGYWN0b3IgPSBvcHRpb25zLmZ1enpGYWN0b3IgfHwgMCxcbiAgICAgIG1pbkxpbmUgPSAwLFxuICAgICAgb2Zmc2V0ID0gMCxcblxuICAgICAgcmVtb3ZlRU9GTkwsXG4gICAgICBhZGRFT0ZOTDtcblxuICAvKipcbiAgICogQ2hlY2tzIGlmIHRoZSBodW5rIGV4YWN0bHkgZml0cyBvbiB0aGUgcHJvdmlkZWQgbG9jYXRpb25cbiAgICovXG4gIGZ1bmN0aW9uIGh1bmtGaXRzKGh1bmssIHRvUG9zKSB7XG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBodW5rLmxpbmVzLmxlbmd0aDsgaisrKSB7XG4gICAgICBsZXQgbGluZSA9IGh1bmsubGluZXNbal0sXG4gICAgICAgICAgb3BlcmF0aW9uID0gKGxpbmUubGVuZ3RoID4gMCA/IGxpbmVbMF0gOiAnICcpLFxuICAgICAgICAgIGNvbnRlbnQgPSAobGluZS5sZW5ndGggPiAwID8gbGluZS5zdWJzdHIoMSkgOiBsaW5lKTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJyAnIHx8IG9wZXJhdGlvbiA9PT0gJy0nKSB7XG4gICAgICAgIC8vIENvbnRleHQgc2FuaXR5IGNoZWNrXG4gICAgICAgIGlmICghY29tcGFyZUxpbmUodG9Qb3MgKyAxLCBsaW5lc1t0b1Bvc10sIG9wZXJhdGlvbiwgY29udGVudCkpIHtcbiAgICAgICAgICBlcnJvckNvdW50Kys7XG5cbiAgICAgICAgICBpZiAoZXJyb3JDb3VudCA+IGZ1enpGYWN0b3IpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdG9Qb3MrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8vIFNlYXJjaCBiZXN0IGZpdCBvZmZzZXRzIGZvciBlYWNoIGh1bmsgYmFzZWQgb24gdGhlIHByZXZpb3VzIG9uZXNcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBodW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBodW5rID0gaHVua3NbaV0sXG4gICAgICAgIG1heExpbmUgPSBsaW5lcy5sZW5ndGggLSBodW5rLm9sZExpbmVzLFxuICAgICAgICBsb2NhbE9mZnNldCA9IDAsXG4gICAgICAgIHRvUG9zID0gb2Zmc2V0ICsgaHVuay5vbGRTdGFydCAtIDE7XG5cbiAgICBsZXQgaXRlcmF0b3IgPSBkaXN0YW5jZUl0ZXJhdG9yKHRvUG9zLCBtaW5MaW5lLCBtYXhMaW5lKTtcblxuICAgIGZvciAoOyBsb2NhbE9mZnNldCAhPT0gdW5kZWZpbmVkOyBsb2NhbE9mZnNldCA9IGl0ZXJhdG9yKCkpIHtcbiAgICAgIGlmIChodW5rRml0cyhodW5rLCB0b1BvcyArIGxvY2FsT2Zmc2V0KSkge1xuICAgICAgICBodW5rLm9mZnNldCA9IG9mZnNldCArPSBsb2NhbE9mZnNldDtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGxvY2FsT2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBTZXQgbG93ZXIgdGV4dCBsaW1pdCB0byBlbmQgb2YgdGhlIGN1cnJlbnQgaHVuaywgc28gbmV4dCBvbmVzIGRvbid0IHRyeVxuICAgIC8vIHRvIGZpdCBvdmVyIGFscmVhZHkgcGF0Y2hlZCB0ZXh0XG4gICAgbWluTGluZSA9IGh1bmsub2Zmc2V0ICsgaHVuay5vbGRTdGFydCArIGh1bmsub2xkTGluZXM7XG4gIH1cblxuICAvLyBBcHBseSBwYXRjaCBodW5rc1xuICBsZXQgZGlmZk9mZnNldCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgaHVua3MubGVuZ3RoOyBpKyspIHtcbiAgICBsZXQgaHVuayA9IGh1bmtzW2ldLFxuICAgICAgICB0b1BvcyA9IGh1bmsub2xkU3RhcnQgKyBodW5rLm9mZnNldCArIGRpZmZPZmZzZXQgLSAxO1xuICAgIGRpZmZPZmZzZXQgKz0gaHVuay5uZXdMaW5lcyAtIGh1bmsub2xkTGluZXM7XG5cbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGh1bmsubGluZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIGxldCBsaW5lID0gaHVuay5saW5lc1tqXSxcbiAgICAgICAgICBvcGVyYXRpb24gPSAobGluZS5sZW5ndGggPiAwID8gbGluZVswXSA6ICcgJyksXG4gICAgICAgICAgY29udGVudCA9IChsaW5lLmxlbmd0aCA+IDAgPyBsaW5lLnN1YnN0cigxKSA6IGxpbmUpLFxuICAgICAgICAgIGRlbGltaXRlciA9IGh1bmsubGluZWRlbGltaXRlcnMgJiYgaHVuay5saW5lZGVsaW1pdGVyc1tqXSB8fCAnXFxuJztcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgIHRvUG9zKys7XG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJy0nKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMSk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAxKTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMCwgY29udGVudCk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAwLCBkZWxpbWl0ZXIpO1xuICAgICAgICB0b1BvcysrO1xuICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICdcXFxcJykge1xuICAgICAgICBsZXQgcHJldmlvdXNPcGVyYXRpb24gPSBodW5rLmxpbmVzW2ogLSAxXSA/IGh1bmsubGluZXNbaiAtIDFdWzBdIDogbnVsbDtcbiAgICAgICAgaWYgKHByZXZpb3VzT3BlcmF0aW9uID09PSAnKycpIHtcbiAgICAgICAgICByZW1vdmVFT0ZOTCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAocHJldmlvdXNPcGVyYXRpb24gPT09ICctJykge1xuICAgICAgICAgIGFkZEVPRk5MID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEhhbmRsZSBFT0ZOTCBpbnNlcnRpb24vcmVtb3ZhbFxuICBpZiAocmVtb3ZlRU9GTkwpIHtcbiAgICB3aGlsZSAoIWxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdKSB7XG4gICAgICBsaW5lcy5wb3AoKTtcbiAgICAgIGRlbGltaXRlcnMucG9wKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGFkZEVPRk5MKSB7XG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgZGVsaW1pdGVycy5wdXNoKCdcXG4nKTtcbiAgfVxuICBmb3IgKGxldCBfayA9IDA7IF9rIDwgbGluZXMubGVuZ3RoIC0gMTsgX2srKykge1xuICAgIGxpbmVzW19rXSA9IGxpbmVzW19rXSArIGRlbGltaXRlcnNbX2tdO1xuICB9XG4gIHJldHVybiBsaW5lcy5qb2luKCcnKTtcbn1cblxuLy8gV3JhcHBlciB0aGF0IHN1cHBvcnRzIG11bHRpcGxlIGZpbGUgcGF0Y2hlcyB2aWEgY2FsbGJhY2tzLlxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2hlcyh1bmlEaWZmLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgdW5pRGlmZiA9PT0gJ3N0cmluZycpIHtcbiAgICB1bmlEaWZmID0gcGFyc2VQYXRjaCh1bmlEaWZmKTtcbiAgfVxuXG4gIGxldCBjdXJyZW50SW5kZXggPSAwO1xuICBmdW5jdGlvbiBwcm9jZXNzSW5kZXgoKSB7XG4gICAgbGV0IGluZGV4ID0gdW5pRGlmZltjdXJyZW50SW5kZXgrK107XG4gICAgaWYgKCFpbmRleCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBvcHRpb25zLmxvYWRGaWxlKGluZGV4LCBmdW5jdGlvbihlcnIsIGRhdGEpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoZXJyKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHVwZGF0ZWRDb250ZW50ID0gYXBwbHlQYXRjaChkYXRhLCBpbmRleCwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLnBhdGNoZWQoaW5kZXgsIHVwZGF0ZWRDb250ZW50LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLmNvbXBsZXRlKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9jZXNzSW5kZXgoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIHByb2Nlc3NJbmRleCgpO1xufVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.structuredPatch = structuredPatch;\nexports.formatPatch = formatPatch;\nexports.createTwoFilesPatch = createTwoFilesPatch;\nexports.createPatch = createPatch;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_line = require(\"../diff/line\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/*istanbul ignore end*/\nfunction structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n if (!options) {\n options = {};\n }\n\n if (typeof options.context === 'undefined') {\n options.context = 4;\n }\n\n var diff =\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _line\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n diffLines)\n /*istanbul ignore end*/\n (oldStr, newStr, options);\n\n if (!diff) {\n return;\n }\n\n diff.push({\n value: '',\n lines: []\n }); // Append an empty value to make cleanup easier\n\n function contextLines(lines) {\n return lines.map(function (entry) {\n return ' ' + entry;\n });\n }\n\n var hunks = [];\n var oldRangeStart = 0,\n newRangeStart = 0,\n curRange = [],\n oldLine = 1,\n newLine = 1;\n\n /*istanbul ignore start*/\n var _loop = function _loop(\n /*istanbul ignore end*/\n i) {\n var current = diff[i],\n lines = current.lines || current.value.replace(/\\n$/, '').split('\\n');\n current.lines = lines;\n\n if (current.added || current.removed) {\n /*istanbul ignore start*/\n var _curRange;\n\n /*istanbul ignore end*/\n // If we have previous context, start with that\n if (!oldRangeStart) {\n var prev = diff[i - 1];\n oldRangeStart = oldLine;\n newRangeStart = newLine;\n\n if (prev) {\n curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];\n oldRangeStart -= curRange.length;\n newRangeStart -= curRange.length;\n }\n } // Output our changes\n\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_curRange =\n /*istanbul ignore end*/\n curRange).push.apply(\n /*istanbul ignore start*/\n _curRange\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n lines.map(function (entry) {\n return (current.added ? '+' : '-') + entry;\n }))); // Track the updated file position\n\n\n if (current.added) {\n newLine += lines.length;\n } else {\n oldLine += lines.length;\n }\n } else {\n // Identical context lines. Track line changes\n if (oldRangeStart) {\n // Close out any changes that have been output (or join overlapping)\n if (lines.length <= options.context * 2 && i < diff.length - 2) {\n /*istanbul ignore start*/\n var _curRange2;\n\n /*istanbul ignore end*/\n // Overlapping\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_curRange2 =\n /*istanbul ignore end*/\n curRange).push.apply(\n /*istanbul ignore start*/\n _curRange2\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n contextLines(lines)));\n } else {\n /*istanbul ignore start*/\n var _curRange3;\n\n /*istanbul ignore end*/\n // end the range and output\n var contextSize = Math.min(lines.length, options.context);\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_curRange3 =\n /*istanbul ignore end*/\n curRange).push.apply(\n /*istanbul ignore start*/\n _curRange3\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n contextLines(lines.slice(0, contextSize))));\n\n var hunk = {\n oldStart: oldRangeStart,\n oldLines: oldLine - oldRangeStart + contextSize,\n newStart: newRangeStart,\n newLines: newLine - newRangeStart + contextSize,\n lines: curRange\n };\n\n if (i >= diff.length - 2 && lines.length <= options.context) {\n // EOF is inside this hunk\n var oldEOFNewline = /\\n$/.test(oldStr);\n var newEOFNewline = /\\n$/.test(newStr);\n var noNlBeforeAdds = lines.length == 0 && curRange.length > hunk.oldLines;\n\n if (!oldEOFNewline && noNlBeforeAdds && oldStr.length > 0) {\n // special case: old has no eol and no trailing context; no-nl can end up before adds\n // however, if the old file is empty, do not output the no-nl line\n curRange.splice(hunk.oldLines, 0, '\\\\ No newline at end of file');\n }\n\n if (!oldEOFNewline && !noNlBeforeAdds || !newEOFNewline) {\n curRange.push('\\\\ No newline at end of file');\n }\n }\n\n hunks.push(hunk);\n oldRangeStart = 0;\n newRangeStart = 0;\n curRange = [];\n }\n }\n\n oldLine += lines.length;\n newLine += lines.length;\n }\n };\n\n for (var i = 0; i < diff.length; i++) {\n /*istanbul ignore start*/\n _loop(\n /*istanbul ignore end*/\n i);\n }\n\n return {\n oldFileName: oldFileName,\n newFileName: newFileName,\n oldHeader: oldHeader,\n newHeader: newHeader,\n hunks: hunks\n };\n}\n\nfunction formatPatch(diff) {\n if (Array.isArray(diff)) {\n return diff.map(formatPatch).join('\\n');\n }\n\n var ret = [];\n\n if (diff.oldFileName == diff.newFileName) {\n ret.push('Index: ' + diff.oldFileName);\n }\n\n ret.push('===================================================================');\n ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\\t' + diff.oldHeader));\n ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\\t' + diff.newHeader));\n\n for (var i = 0; i < diff.hunks.length; i++) {\n var hunk = diff.hunks[i]; // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n\n if (hunk.oldLines === 0) {\n hunk.oldStart -= 1;\n }\n\n if (hunk.newLines === 0) {\n hunk.newStart -= 1;\n }\n\n ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');\n ret.push.apply(ret, hunk.lines);\n }\n\n return ret.join('\\n') + '\\n';\n}\n\nfunction createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {\n return formatPatch(structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options));\n}\n\nfunction createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {\n return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9jcmVhdGUuanMiXSwibmFtZXMiOlsic3RydWN0dXJlZFBhdGNoIiwib2xkRmlsZU5hbWUiLCJuZXdGaWxlTmFtZSIsIm9sZFN0ciIsIm5ld1N0ciIsIm9sZEhlYWRlciIsIm5ld0hlYWRlciIsIm9wdGlvbnMiLCJjb250ZXh0IiwiZGlmZiIsImRpZmZMaW5lcyIsInB1c2giLCJ2YWx1ZSIsImxpbmVzIiwiY29udGV4dExpbmVzIiwibWFwIiwiZW50cnkiLCJodW5rcyIsIm9sZFJhbmdlU3RhcnQiLCJuZXdSYW5nZVN0YXJ0IiwiY3VyUmFuZ2UiLCJvbGRMaW5lIiwibmV3TGluZSIsImkiLCJjdXJyZW50IiwicmVwbGFjZSIsInNwbGl0IiwiYWRkZWQiLCJyZW1vdmVkIiwicHJldiIsInNsaWNlIiwibGVuZ3RoIiwiY29udGV4dFNpemUiLCJNYXRoIiwibWluIiwiaHVuayIsIm9sZFN0YXJ0Iiwib2xkTGluZXMiLCJuZXdTdGFydCIsIm5ld0xpbmVzIiwib2xkRU9GTmV3bGluZSIsInRlc3QiLCJuZXdFT0ZOZXdsaW5lIiwibm9ObEJlZm9yZUFkZHMiLCJzcGxpY2UiLCJmb3JtYXRQYXRjaCIsIkFycmF5IiwiaXNBcnJheSIsImpvaW4iLCJyZXQiLCJhcHBseSIsImNyZWF0ZVR3b0ZpbGVzUGF0Y2giLCJjcmVhdGVQYXRjaCIsImZpbGVOYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7QUFFTyxTQUFTQSxlQUFULENBQXlCQyxXQUF6QixFQUFzQ0MsV0FBdEMsRUFBbURDLE1BQW5ELEVBQTJEQyxNQUEzRCxFQUFtRUMsU0FBbkUsRUFBOEVDLFNBQTlFLEVBQXlGQyxPQUF6RixFQUFrRztBQUN2RyxNQUFJLENBQUNBLE9BQUwsRUFBYztBQUNaQSxJQUFBQSxPQUFPLEdBQUcsRUFBVjtBQUNEOztBQUNELE1BQUksT0FBT0EsT0FBTyxDQUFDQyxPQUFmLEtBQTJCLFdBQS9CLEVBQTRDO0FBQzFDRCxJQUFBQSxPQUFPLENBQUNDLE9BQVIsR0FBa0IsQ0FBbEI7QUFDRDs7QUFFRCxNQUFNQyxJQUFJO0FBQUc7QUFBQTtBQUFBOztBQUFBQztBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBO0FBQUEsR0FBVVAsTUFBVixFQUFrQkMsTUFBbEIsRUFBMEJHLE9BQTFCLENBQWI7O0FBQ0EsTUFBRyxDQUFDRSxJQUFKLEVBQVU7QUFDUjtBQUNEOztBQUVEQSxFQUFBQSxJQUFJLENBQUNFLElBQUwsQ0FBVTtBQUFDQyxJQUFBQSxLQUFLLEVBQUUsRUFBUjtBQUFZQyxJQUFBQSxLQUFLLEVBQUU7QUFBbkIsR0FBVixFQWJ1RyxDQWFwRTs7QUFFbkMsV0FBU0MsWUFBVCxDQUFzQkQsS0FBdEIsRUFBNkI7QUFDM0IsV0FBT0EsS0FBSyxDQUFDRSxHQUFOLENBQVUsVUFBU0MsS0FBVCxFQUFnQjtBQUFFLGFBQU8sTUFBTUEsS0FBYjtBQUFxQixLQUFqRCxDQUFQO0FBQ0Q7O0FBRUQsTUFBSUMsS0FBSyxHQUFHLEVBQVo7QUFDQSxNQUFJQyxhQUFhLEdBQUcsQ0FBcEI7QUFBQSxNQUF1QkMsYUFBYSxHQUFHLENBQXZDO0FBQUEsTUFBMENDLFFBQVEsR0FBRyxFQUFyRDtBQUFBLE1BQ0lDLE9BQU8sR0FBRyxDQURkO0FBQUEsTUFDaUJDLE9BQU8sR0FBRyxDQUQzQjs7QUFwQnVHO0FBQUE7QUFBQTtBQXNCOUZDLEVBQUFBLENBdEI4RjtBQXVCckcsUUFBTUMsT0FBTyxHQUFHZixJQUFJLENBQUNjLENBQUQsQ0FBcEI7QUFBQSxRQUNNVixLQUFLLEdBQUdXLE9BQU8sQ0FBQ1gsS0FBUixJQUFpQlcsT0FBTyxDQUFDWixLQUFSLENBQWNhLE9BQWQsQ0FBc0IsS0FBdEIsRUFBNkIsRUFBN0IsRUFBaUNDLEtBQWpDLENBQXVDLElBQXZDLENBRC9CO0FBRUFGLElBQUFBLE9BQU8sQ0FBQ1gsS0FBUixHQUFnQkEsS0FBaEI7O0FBRUEsUUFBSVcsT0FBTyxDQUFDRyxLQUFSLElBQWlCSCxPQUFPLENBQUNJLE9BQTdCLEVBQXNDO0FBQUE7QUFBQTs7QUFBQTtBQUNwQztBQUNBLFVBQUksQ0FBQ1YsYUFBTCxFQUFvQjtBQUNsQixZQUFNVyxJQUFJLEdBQUdwQixJQUFJLENBQUNjLENBQUMsR0FBRyxDQUFMLENBQWpCO0FBQ0FMLFFBQUFBLGFBQWEsR0FBR0csT0FBaEI7QUFDQUYsUUFBQUEsYUFBYSxHQUFHRyxPQUFoQjs7QUFFQSxZQUFJTyxJQUFKLEVBQVU7QUFDUlQsVUFBQUEsUUFBUSxHQUFHYixPQUFPLENBQUNDLE9BQVIsR0FBa0IsQ0FBbEIsR0FBc0JNLFlBQVksQ0FBQ2UsSUFBSSxDQUFDaEIsS0FBTCxDQUFXaUIsS0FBWCxDQUFpQixDQUFDdkIsT0FBTyxDQUFDQyxPQUExQixDQUFELENBQWxDLEdBQXlFLEVBQXBGO0FBQ0FVLFVBQUFBLGFBQWEsSUFBSUUsUUFBUSxDQUFDVyxNQUExQjtBQUNBWixVQUFBQSxhQUFhLElBQUlDLFFBQVEsQ0FBQ1csTUFBMUI7QUFDRDtBQUNGLE9BWm1DLENBY3BDOzs7QUFDQTs7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQVgsTUFBQUEsUUFBUSxFQUFDVCxJQUFUO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBa0JFLE1BQUFBLEtBQUssQ0FBQ0UsR0FBTixDQUFVLFVBQVNDLEtBQVQsRUFBZ0I7QUFDMUMsZUFBTyxDQUFDUSxPQUFPLENBQUNHLEtBQVIsR0FBZ0IsR0FBaEIsR0FBc0IsR0FBdkIsSUFBOEJYLEtBQXJDO0FBQ0QsT0FGaUIsQ0FBbEIsR0Fmb0MsQ0FtQnBDOzs7QUFDQSxVQUFJUSxPQUFPLENBQUNHLEtBQVosRUFBbUI7QUFDakJMLFFBQUFBLE9BQU8sSUFBSVQsS0FBSyxDQUFDa0IsTUFBakI7QUFDRCxPQUZELE1BRU87QUFDTFYsUUFBQUEsT0FBTyxJQUFJUixLQUFLLENBQUNrQixNQUFqQjtBQUNEO0FBQ0YsS0F6QkQsTUF5Qk87QUFDTDtBQUNBLFVBQUliLGFBQUosRUFBbUI7QUFDakI7QUFDQSxZQUFJTCxLQUFLLENBQUNrQixNQUFOLElBQWdCeEIsT0FBTyxDQUFDQyxPQUFSLEdBQWtCLENBQWxDLElBQXVDZSxDQUFDLEdBQUdkLElBQUksQ0FBQ3NCLE1BQUwsR0FBYyxDQUE3RCxFQUFnRTtBQUFBO0FBQUE7O0FBQUE7QUFDOUQ7O0FBQ0E7O0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUFYLFVBQUFBLFFBQVEsRUFBQ1QsSUFBVDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQWtCRyxVQUFBQSxZQUFZLENBQUNELEtBQUQsQ0FBOUI7QUFDRCxTQUhELE1BR087QUFBQTtBQUFBOztBQUFBO0FBQ0w7QUFDQSxjQUFJbUIsV0FBVyxHQUFHQyxJQUFJLENBQUNDLEdBQUwsQ0FBU3JCLEtBQUssQ0FBQ2tCLE1BQWYsRUFBdUJ4QixPQUFPLENBQUNDLE9BQS9CLENBQWxCOztBQUNBOztBQUFBOztBQUFBO0FBQUE7QUFBQTtBQUFBWSxVQUFBQSxRQUFRLEVBQUNULElBQVQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFrQkcsVUFBQUEsWUFBWSxDQUFDRCxLQUFLLENBQUNpQixLQUFOLENBQVksQ0FBWixFQUFlRSxXQUFmLENBQUQsQ0FBOUI7O0FBRUEsY0FBSUcsSUFBSSxHQUFHO0FBQ1RDLFlBQUFBLFFBQVEsRUFBRWxCLGFBREQ7QUFFVG1CLFlBQUFBLFFBQVEsRUFBR2hCLE9BQU8sR0FBR0gsYUFBVixHQUEwQmMsV0FGNUI7QUFHVE0sWUFBQUEsUUFBUSxFQUFFbkIsYUFIRDtBQUlUb0IsWUFBQUEsUUFBUSxFQUFHakIsT0FBTyxHQUFHSCxhQUFWLEdBQTBCYSxXQUo1QjtBQUtUbkIsWUFBQUEsS0FBSyxFQUFFTztBQUxFLFdBQVg7O0FBT0EsY0FBSUcsQ0FBQyxJQUFJZCxJQUFJLENBQUNzQixNQUFMLEdBQWMsQ0FBbkIsSUFBd0JsQixLQUFLLENBQUNrQixNQUFOLElBQWdCeEIsT0FBTyxDQUFDQyxPQUFwRCxFQUE2RDtBQUMzRDtBQUNBLGdCQUFJZ0MsYUFBYSxHQUFLLEtBQUQsQ0FBUUMsSUFBUixDQUFhdEMsTUFBYixDQUFyQjtBQUNBLGdCQUFJdUMsYUFBYSxHQUFLLEtBQUQsQ0FBUUQsSUFBUixDQUFhckMsTUFBYixDQUFyQjtBQUNBLGdCQUFJdUMsY0FBYyxHQUFHOUIsS0FBSyxDQUFDa0IsTUFBTixJQUFnQixDQUFoQixJQUFxQlgsUUFBUSxDQUFDVyxNQUFULEdBQWtCSSxJQUFJLENBQUNFLFFBQWpFOztBQUNBLGdCQUFJLENBQUNHLGFBQUQsSUFBa0JHLGNBQWxCLElBQW9DeEMsTUFBTSxDQUFDNEIsTUFBUCxHQUFnQixDQUF4RCxFQUEyRDtBQUN6RDtBQUNBO0FBQ0FYLGNBQUFBLFFBQVEsQ0FBQ3dCLE1BQVQsQ0FBZ0JULElBQUksQ0FBQ0UsUUFBckIsRUFBK0IsQ0FBL0IsRUFBa0MsOEJBQWxDO0FBQ0Q7O0FBQ0QsZ0JBQUssQ0FBQ0csYUFBRCxJQUFrQixDQUFDRyxjQUFwQixJQUF1QyxDQUFDRCxhQUE1QyxFQUEyRDtBQUN6RHRCLGNBQUFBLFFBQVEsQ0FBQ1QsSUFBVCxDQUFjLDhCQUFkO0FBQ0Q7QUFDRjs7QUFDRE0sVUFBQUEsS0FBSyxDQUFDTixJQUFOLENBQVd3QixJQUFYO0FBRUFqQixVQUFBQSxhQUFhLEdBQUcsQ0FBaEI7QUFDQUMsVUFBQUEsYUFBYSxHQUFHLENBQWhCO0FBQ0FDLFVBQUFBLFFBQVEsR0FBRyxFQUFYO0FBQ0Q7QUFDRjs7QUFDREMsTUFBQUEsT0FBTyxJQUFJUixLQUFLLENBQUNrQixNQUFqQjtBQUNBVCxNQUFBQSxPQUFPLElBQUlULEtBQUssQ0FBQ2tCLE1BQWpCO0FBQ0Q7QUE5Rm9HOztBQXNCdkcsT0FBSyxJQUFJUixDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHZCxJQUFJLENBQUNzQixNQUF6QixFQUFpQ1IsQ0FBQyxFQUFsQyxFQUFzQztBQUFBO0FBQUE7QUFBQTtBQUE3QkEsSUFBQUEsQ0FBNkI7QUF5RXJDOztBQUVELFNBQU87QUFDTHRCLElBQUFBLFdBQVcsRUFBRUEsV0FEUjtBQUNxQkMsSUFBQUEsV0FBVyxFQUFFQSxXQURsQztBQUVMRyxJQUFBQSxTQUFTLEVBQUVBLFNBRk47QUFFaUJDLElBQUFBLFNBQVMsRUFBRUEsU0FGNUI7QUFHTFcsSUFBQUEsS0FBSyxFQUFFQTtBQUhGLEdBQVA7QUFLRDs7QUFFTSxTQUFTNEIsV0FBVCxDQUFxQnBDLElBQXJCLEVBQTJCO0FBQ2hDLE1BQUlxQyxLQUFLLENBQUNDLE9BQU4sQ0FBY3RDLElBQWQsQ0FBSixFQUF5QjtBQUN2QixXQUFPQSxJQUFJLENBQUNNLEdBQUwsQ0FBUzhCLFdBQVQsRUFBc0JHLElBQXRCLENBQTJCLElBQTNCLENBQVA7QUFDRDs7QUFFRCxNQUFNQyxHQUFHLEdBQUcsRUFBWjs7QUFDQSxNQUFJeEMsSUFBSSxDQUFDUixXQUFMLElBQW9CUSxJQUFJLENBQUNQLFdBQTdCLEVBQTBDO0FBQ3hDK0MsSUFBQUEsR0FBRyxDQUFDdEMsSUFBSixDQUFTLFlBQVlGLElBQUksQ0FBQ1IsV0FBMUI7QUFDRDs7QUFDRGdELEVBQUFBLEdBQUcsQ0FBQ3RDLElBQUosQ0FBUyxxRUFBVDtBQUNBc0MsRUFBQUEsR0FBRyxDQUFDdEMsSUFBSixDQUFTLFNBQVNGLElBQUksQ0FBQ1IsV0FBZCxJQUE2QixPQUFPUSxJQUFJLENBQUNKLFNBQVosS0FBMEIsV0FBMUIsR0FBd0MsRUFBeEMsR0FBNkMsT0FBT0ksSUFBSSxDQUFDSixTQUF0RixDQUFUO0FBQ0E0QyxFQUFBQSxHQUFHLENBQUN0QyxJQUFKLENBQVMsU0FBU0YsSUFBSSxDQUFDUCxXQUFkLElBQTZCLE9BQU9PLElBQUksQ0FBQ0gsU0FBWixLQUEwQixXQUExQixHQUF3QyxFQUF4QyxHQUE2QyxPQUFPRyxJQUFJLENBQUNILFNBQXRGLENBQVQ7O0FBRUEsT0FBSyxJQUFJaUIsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR2QsSUFBSSxDQUFDUSxLQUFMLENBQVdjLE1BQS9CLEVBQXVDUixDQUFDLEVBQXhDLEVBQTRDO0FBQzFDLFFBQU1ZLElBQUksR0FBRzFCLElBQUksQ0FBQ1EsS0FBTCxDQUFXTSxDQUFYLENBQWIsQ0FEMEMsQ0FFMUM7QUFDQTtBQUNBOztBQUNBLFFBQUlZLElBQUksQ0FBQ0UsUUFBTCxLQUFrQixDQUF0QixFQUF5QjtBQUN2QkYsTUFBQUEsSUFBSSxDQUFDQyxRQUFMLElBQWlCLENBQWpCO0FBQ0Q7O0FBQ0QsUUFBSUQsSUFBSSxDQUFDSSxRQUFMLEtBQWtCLENBQXRCLEVBQXlCO0FBQ3ZCSixNQUFBQSxJQUFJLENBQUNHLFFBQUwsSUFBaUIsQ0FBakI7QUFDRDs7QUFDRFcsSUFBQUEsR0FBRyxDQUFDdEMsSUFBSixDQUNFLFNBQVN3QixJQUFJLENBQUNDLFFBQWQsR0FBeUIsR0FBekIsR0FBK0JELElBQUksQ0FBQ0UsUUFBcEMsR0FDRSxJQURGLEdBQ1NGLElBQUksQ0FBQ0csUUFEZCxHQUN5QixHQUR6QixHQUMrQkgsSUFBSSxDQUFDSSxRQURwQyxHQUVFLEtBSEo7QUFLQVUsSUFBQUEsR0FBRyxDQUFDdEMsSUFBSixDQUFTdUMsS0FBVCxDQUFlRCxHQUFmLEVBQW9CZCxJQUFJLENBQUN0QixLQUF6QjtBQUNEOztBQUVELFNBQU9vQyxHQUFHLENBQUNELElBQUosQ0FBUyxJQUFULElBQWlCLElBQXhCO0FBQ0Q7O0FBRU0sU0FBU0csbUJBQVQsQ0FBNkJsRCxXQUE3QixFQUEwQ0MsV0FBMUMsRUFBdURDLE1BQXZELEVBQStEQyxNQUEvRCxFQUF1RUMsU0FBdkUsRUFBa0ZDLFNBQWxGLEVBQTZGQyxPQUE3RixFQUFzRztBQUMzRyxTQUFPc0MsV0FBVyxDQUFDN0MsZUFBZSxDQUFDQyxXQUFELEVBQWNDLFdBQWQsRUFBMkJDLE1BQTNCLEVBQW1DQyxNQUFuQyxFQUEyQ0MsU0FBM0MsRUFBc0RDLFNBQXRELEVBQWlFQyxPQUFqRSxDQUFoQixDQUFsQjtBQUNEOztBQUVNLFNBQVM2QyxXQUFULENBQXFCQyxRQUFyQixFQUErQmxELE1BQS9CLEVBQXVDQyxNQUF2QyxFQUErQ0MsU0FBL0MsRUFBMERDLFNBQTFELEVBQXFFQyxPQUFyRSxFQUE4RTtBQUNuRixTQUFPNEMsbUJBQW1CLENBQUNFLFFBQUQsRUFBV0EsUUFBWCxFQUFxQmxELE1BQXJCLEVBQTZCQyxNQUE3QixFQUFxQ0MsU0FBckMsRUFBZ0RDLFNBQWhELEVBQTJEQyxPQUEzRCxDQUExQjtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkaWZmTGluZXN9IGZyb20gJy4uL2RpZmYvbGluZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJ1Y3R1cmVkUGF0Y2gob2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5jb250ZXh0ID09PSAndW5kZWZpbmVkJykge1xuICAgIG9wdGlvbnMuY29udGV4dCA9IDQ7XG4gIH1cblxuICBjb25zdCBkaWZmID0gZGlmZkxpbmVzKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbiAgaWYoIWRpZmYpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBkaWZmLnB1c2goe3ZhbHVlOiAnJywgbGluZXM6IFtdfSk7IC8vIEFwcGVuZCBhbiBlbXB0eSB2YWx1ZSB0byBtYWtlIGNsZWFudXAgZWFzaWVyXG5cbiAgZnVuY3Rpb24gY29udGV4dExpbmVzKGxpbmVzKSB7XG4gICAgcmV0dXJuIGxpbmVzLm1hcChmdW5jdGlvbihlbnRyeSkgeyByZXR1cm4gJyAnICsgZW50cnk7IH0pO1xuICB9XG5cbiAgbGV0IGh1bmtzID0gW107XG4gIGxldCBvbGRSYW5nZVN0YXJ0ID0gMCwgbmV3UmFuZ2VTdGFydCA9IDAsIGN1clJhbmdlID0gW10sXG4gICAgICBvbGRMaW5lID0gMSwgbmV3TGluZSA9IDE7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZi5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBkaWZmW2ldLFxuICAgICAgICAgIGxpbmVzID0gY3VycmVudC5saW5lcyB8fCBjdXJyZW50LnZhbHVlLnJlcGxhY2UoL1xcbiQvLCAnJykuc3BsaXQoJ1xcbicpO1xuICAgIGN1cnJlbnQubGluZXMgPSBsaW5lcztcblxuICAgIGlmIChjdXJyZW50LmFkZGVkIHx8IGN1cnJlbnQucmVtb3ZlZCkge1xuICAgICAgLy8gSWYgd2UgaGF2ZSBwcmV2aW91cyBjb250ZXh0LCBzdGFydCB3aXRoIHRoYXRcbiAgICAgIGlmICghb2xkUmFuZ2VTdGFydCkge1xuICAgICAgICBjb25zdCBwcmV2ID0gZGlmZltpIC0gMV07XG4gICAgICAgIG9sZFJhbmdlU3RhcnQgPSBvbGRMaW5lO1xuICAgICAgICBuZXdSYW5nZVN0YXJ0ID0gbmV3TGluZTtcblxuICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgIGN1clJhbmdlID0gb3B0aW9ucy5jb250ZXh0ID4gMCA/IGNvbnRleHRMaW5lcyhwcmV2LmxpbmVzLnNsaWNlKC1vcHRpb25zLmNvbnRleHQpKSA6IFtdO1xuICAgICAgICAgIG9sZFJhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoO1xuICAgICAgICAgIG5ld1JhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE91dHB1dCBvdXIgY2hhbmdlc1xuICAgICAgY3VyUmFuZ2UucHVzaCguLi4gbGluZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgICAgIHJldHVybiAoY3VycmVudC5hZGRlZCA/ICcrJyA6ICctJykgKyBlbnRyeTtcbiAgICAgIH0pKTtcblxuICAgICAgLy8gVHJhY2sgdGhlIHVwZGF0ZWQgZmlsZSBwb3NpdGlvblxuICAgICAgaWYgKGN1cnJlbnQuYWRkZWQpIHtcbiAgICAgICAgbmV3TGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbGRMaW5lICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWRlbnRpY2FsIGNvbnRleHQgbGluZXMuIFRyYWNrIGxpbmUgY2hhbmdlc1xuICAgICAgaWYgKG9sZFJhbmdlU3RhcnQpIHtcbiAgICAgICAgLy8gQ2xvc2Ugb3V0IGFueSBjaGFuZ2VzIHRoYXQgaGF2ZSBiZWVuIG91dHB1dCAob3Igam9pbiBvdmVybGFwcGluZylcbiAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCA8PSBvcHRpb25zLmNvbnRleHQgKiAyICYmIGkgPCBkaWZmLmxlbmd0aCAtIDIpIHtcbiAgICAgICAgICAvLyBPdmVybGFwcGluZ1xuICAgICAgICAgIGN1clJhbmdlLnB1c2goLi4uIGNvbnRleHRMaW5lcyhsaW5lcykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGVuZCB0aGUgcmFuZ2UgYW5kIG91dHB1dFxuICAgICAgICAgIGxldCBjb250ZXh0U2l6ZSA9IE1hdGgubWluKGxpbmVzLmxlbmd0aCwgb3B0aW9ucy5jb250ZXh0KTtcbiAgICAgICAgICBjdXJSYW5nZS5wdXNoKC4uLiBjb250ZXh0TGluZXMobGluZXMuc2xpY2UoMCwgY29udGV4dFNpemUpKSk7XG5cbiAgICAgICAgICBsZXQgaHVuayA9IHtcbiAgICAgICAgICAgIG9sZFN0YXJ0OiBvbGRSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgb2xkTGluZXM6IChvbGRMaW5lIC0gb2xkUmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgIG5ld1N0YXJ0OiBuZXdSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgbmV3TGluZXM6IChuZXdMaW5lIC0gbmV3UmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgIGxpbmVzOiBjdXJSYW5nZVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKGkgPj0gZGlmZi5sZW5ndGggLSAyICYmIGxpbmVzLmxlbmd0aCA8PSBvcHRpb25zLmNvbnRleHQpIHtcbiAgICAgICAgICAgIC8vIEVPRiBpcyBpbnNpZGUgdGhpcyBodW5rXG4gICAgICAgICAgICBsZXQgb2xkRU9GTmV3bGluZSA9ICgoL1xcbiQvKS50ZXN0KG9sZFN0cikpO1xuICAgICAgICAgICAgbGV0IG5ld0VPRk5ld2xpbmUgPSAoKC9cXG4kLykudGVzdChuZXdTdHIpKTtcbiAgICAgICAgICAgIGxldCBub05sQmVmb3JlQWRkcyA9IGxpbmVzLmxlbmd0aCA9PSAwICYmIGN1clJhbmdlLmxlbmd0aCA+IGh1bmsub2xkTGluZXM7XG4gICAgICAgICAgICBpZiAoIW9sZEVPRk5ld2xpbmUgJiYgbm9ObEJlZm9yZUFkZHMgJiYgb2xkU3RyLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgLy8gc3BlY2lhbCBjYXNlOiBvbGQgaGFzIG5vIGVvbCBhbmQgbm8gdHJhaWxpbmcgY29udGV4dDsgbm8tbmwgY2FuIGVuZCB1cCBiZWZvcmUgYWRkc1xuICAgICAgICAgICAgICAvLyBob3dldmVyLCBpZiB0aGUgb2xkIGZpbGUgaXMgZW1wdHksIGRvIG5vdCBvdXRwdXQgdGhlIG5vLW5sIGxpbmVcbiAgICAgICAgICAgICAgY3VyUmFuZ2Uuc3BsaWNlKGh1bmsub2xkTGluZXMsIDAsICdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICgoIW9sZEVPRk5ld2xpbmUgJiYgIW5vTmxCZWZvcmVBZGRzKSB8fCAhbmV3RU9GTmV3bGluZSkge1xuICAgICAgICAgICAgICBjdXJSYW5nZS5wdXNoKCdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaHVua3MucHVzaChodW5rKTtcblxuICAgICAgICAgIG9sZFJhbmdlU3RhcnQgPSAwO1xuICAgICAgICAgIG5ld1JhbmdlU3RhcnQgPSAwO1xuICAgICAgICAgIGN1clJhbmdlID0gW107XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG9sZExpbmUgKz0gbGluZXMubGVuZ3RoO1xuICAgICAgbmV3TGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBvbGRGaWxlTmFtZTogb2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lOiBuZXdGaWxlTmFtZSxcbiAgICBvbGRIZWFkZXI6IG9sZEhlYWRlciwgbmV3SGVhZGVyOiBuZXdIZWFkZXIsXG4gICAgaHVua3M6IGh1bmtzXG4gIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRQYXRjaChkaWZmKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KGRpZmYpKSB7XG4gICAgcmV0dXJuIGRpZmYubWFwKGZvcm1hdFBhdGNoKS5qb2luKCdcXG4nKTtcbiAgfVxuXG4gIGNvbnN0IHJldCA9IFtdO1xuICBpZiAoZGlmZi5vbGRGaWxlTmFtZSA9PSBkaWZmLm5ld0ZpbGVOYW1lKSB7XG4gICAgcmV0LnB1c2goJ0luZGV4OiAnICsgZGlmZi5vbGRGaWxlTmFtZSk7XG4gIH1cbiAgcmV0LnB1c2goJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0nKTtcbiAgcmV0LnB1c2goJy0tLSAnICsgZGlmZi5vbGRGaWxlTmFtZSArICh0eXBlb2YgZGlmZi5vbGRIZWFkZXIgPT09ICd1bmRlZmluZWQnID8gJycgOiAnXFx0JyArIGRpZmYub2xkSGVhZGVyKSk7XG4gIHJldC5wdXNoKCcrKysgJyArIGRpZmYubmV3RmlsZU5hbWUgKyAodHlwZW9mIGRpZmYubmV3SGVhZGVyID09PSAndW5kZWZpbmVkJyA/ICcnIDogJ1xcdCcgKyBkaWZmLm5ld0hlYWRlcikpO1xuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZi5odW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGh1bmsgPSBkaWZmLmh1bmtzW2ldO1xuICAgIC8vIFVuaWZpZWQgRGlmZiBGb3JtYXQgcXVpcms6IElmIHRoZSBjaHVuayBzaXplIGlzIDAsXG4gICAgLy8gdGhlIGZpcnN0IG51bWJlciBpcyBvbmUgbG93ZXIgdGhhbiBvbmUgd291bGQgZXhwZWN0LlxuICAgIC8vIGh0dHBzOi8vd3d3LmFydGltYS5jb20vd2VibG9ncy92aWV3cG9zdC5qc3A/dGhyZWFkPTE2NDI5M1xuICAgIGlmIChodW5rLm9sZExpbmVzID09PSAwKSB7XG4gICAgICBodW5rLm9sZFN0YXJ0IC09IDE7XG4gICAgfVxuICAgIGlmIChodW5rLm5ld0xpbmVzID09PSAwKSB7XG4gICAgICBodW5rLm5ld1N0YXJ0IC09IDE7XG4gICAgfVxuICAgIHJldC5wdXNoKFxuICAgICAgJ0BAIC0nICsgaHVuay5vbGRTdGFydCArICcsJyArIGh1bmsub2xkTGluZXNcbiAgICAgICsgJyArJyArIGh1bmsubmV3U3RhcnQgKyAnLCcgKyBodW5rLm5ld0xpbmVzXG4gICAgICArICcgQEAnXG4gICAgKTtcbiAgICByZXQucHVzaC5hcHBseShyZXQsIGh1bmsubGluZXMpO1xuICB9XG5cbiAgcmV0dXJuIHJldC5qb2luKCdcXG4nKSArICdcXG4nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHdvRmlsZXNQYXRjaChvbGRGaWxlTmFtZSwgbmV3RmlsZU5hbWUsIG9sZFN0ciwgbmV3U3RyLCBvbGRIZWFkZXIsIG5ld0hlYWRlciwgb3B0aW9ucykge1xuICByZXR1cm4gZm9ybWF0UGF0Y2goc3RydWN0dXJlZFBhdGNoKG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQYXRjaChmaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKSB7XG4gIHJldHVybiBjcmVhdGVUd29GaWxlc1BhdGNoKGZpbGVOYW1lLCBmaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKTtcbn1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.calcLineCount = calcLineCount;\nexports.merge = merge;\n\n/*istanbul ignore end*/\nvar\n/*istanbul ignore start*/\n_create = require(\"./create\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_parse = require(\"./parse\")\n/*istanbul ignore end*/\n;\n\nvar\n/*istanbul ignore start*/\n_array = require(\"../util/array\")\n/*istanbul ignore end*/\n;\n\n/*istanbul ignore start*/ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n/*istanbul ignore end*/\nfunction calcLineCount(hunk) {\n /*istanbul ignore start*/\n var _calcOldNewLineCount =\n /*istanbul ignore end*/\n calcOldNewLineCount(hunk.lines),\n oldLines = _calcOldNewLineCount.oldLines,\n newLines = _calcOldNewLineCount.newLines;\n\n if (oldLines !== undefined) {\n hunk.oldLines = oldLines;\n } else {\n delete hunk.oldLines;\n }\n\n if (newLines !== undefined) {\n hunk.newLines = newLines;\n } else {\n delete hunk.newLines;\n }\n}\n\nfunction merge(mine, theirs, base) {\n mine = loadPatch(mine, base);\n theirs = loadPatch(theirs, base);\n var ret = {}; // For index we just let it pass through as it doesn't have any necessary meaning.\n // Leaving sanity checks on this to the API consumer that may know more about the\n // meaning in their own context.\n\n if (mine.index || theirs.index) {\n ret.index = mine.index || theirs.index;\n }\n\n if (mine.newFileName || theirs.newFileName) {\n if (!fileNameChanged(mine)) {\n // No header or no change in ours, use theirs (and ours if theirs does not exist)\n ret.oldFileName = theirs.oldFileName || mine.oldFileName;\n ret.newFileName = theirs.newFileName || mine.newFileName;\n ret.oldHeader = theirs.oldHeader || mine.oldHeader;\n ret.newHeader = theirs.newHeader || mine.newHeader;\n } else if (!fileNameChanged(theirs)) {\n // No header or no change in theirs, use ours\n ret.oldFileName = mine.oldFileName;\n ret.newFileName = mine.newFileName;\n ret.oldHeader = mine.oldHeader;\n ret.newHeader = mine.newHeader;\n } else {\n // Both changed... figure it out\n ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);\n ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);\n ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);\n ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);\n }\n }\n\n ret.hunks = [];\n var mineIndex = 0,\n theirsIndex = 0,\n mineOffset = 0,\n theirsOffset = 0;\n\n while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {\n var mineCurrent = mine.hunks[mineIndex] || {\n oldStart: Infinity\n },\n theirsCurrent = theirs.hunks[theirsIndex] || {\n oldStart: Infinity\n };\n\n if (hunkBefore(mineCurrent, theirsCurrent)) {\n // This patch does not overlap with any of the others, yay.\n ret.hunks.push(cloneHunk(mineCurrent, mineOffset));\n mineIndex++;\n theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;\n } else if (hunkBefore(theirsCurrent, mineCurrent)) {\n // This patch does not overlap with any of the others, yay.\n ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));\n theirsIndex++;\n mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;\n } else {\n // Overlap, merge as best we can\n var mergedHunk = {\n oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),\n oldLines: 0,\n newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),\n newLines: 0,\n lines: []\n };\n mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);\n theirsIndex++;\n mineIndex++;\n ret.hunks.push(mergedHunk);\n }\n }\n\n return ret;\n}\n\nfunction loadPatch(param, base) {\n if (typeof param === 'string') {\n if (/^@@/m.test(param) || /^Index:/m.test(param)) {\n return (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _parse\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n parsePatch)\n /*istanbul ignore end*/\n (param)[0]\n );\n }\n\n if (!base) {\n throw new Error('Must provide a base reference or pass in a patch');\n }\n\n return (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _create\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n structuredPatch)\n /*istanbul ignore end*/\n (undefined, undefined, base, param)\n );\n }\n\n return param;\n}\n\nfunction fileNameChanged(patch) {\n return patch.newFileName && patch.newFileName !== patch.oldFileName;\n}\n\nfunction selectField(index, mine, theirs) {\n if (mine === theirs) {\n return mine;\n } else {\n index.conflict = true;\n return {\n mine: mine,\n theirs: theirs\n };\n }\n}\n\nfunction hunkBefore(test, check) {\n return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;\n}\n\nfunction cloneHunk(hunk, offset) {\n return {\n oldStart: hunk.oldStart,\n oldLines: hunk.oldLines,\n newStart: hunk.newStart + offset,\n newLines: hunk.newLines,\n lines: hunk.lines\n };\n}\n\nfunction mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {\n // This will generally result in a conflicted hunk, but there are cases where the context\n // is the only overlap where we can successfully merge the content here.\n var mine = {\n offset: mineOffset,\n lines: mineLines,\n index: 0\n },\n their = {\n offset: theirOffset,\n lines: theirLines,\n index: 0\n }; // Handle any leading content\n\n insertLeading(hunk, mine, their);\n insertLeading(hunk, their, mine); // Now in the overlap content. Scan through and select the best changes from each.\n\n while (mine.index < mine.lines.length && their.index < their.lines.length) {\n var mineCurrent = mine.lines[mine.index],\n theirCurrent = their.lines[their.index];\n\n if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {\n // Both modified ...\n mutualChange(hunk, mine, their);\n } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {\n /*istanbul ignore start*/\n var _hunk$lines;\n\n /*istanbul ignore end*/\n // Mine inserted\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n collectChange(mine)));\n } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {\n /*istanbul ignore start*/\n var _hunk$lines2;\n\n /*istanbul ignore end*/\n // Theirs inserted\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines2 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines2\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n collectChange(their)));\n } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {\n // Mine removed or edited\n removal(hunk, mine, their);\n } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {\n // Their removed or edited\n removal(hunk, their, mine, true);\n } else if (mineCurrent === theirCurrent) {\n // Context identity\n hunk.lines.push(mineCurrent);\n mine.index++;\n their.index++;\n } else {\n // Context mismatch\n conflict(hunk, collectChange(mine), collectChange(their));\n }\n } // Now push anything that may be remaining\n\n\n insertTrailing(hunk, mine);\n insertTrailing(hunk, their);\n calcLineCount(hunk);\n}\n\nfunction mutualChange(hunk, mine, their) {\n var myChanges = collectChange(mine),\n theirChanges = collectChange(their);\n\n if (allRemoves(myChanges) && allRemoves(theirChanges)) {\n // Special case for remove changes that are supersets of one another\n if (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _array\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n arrayStartsWith)\n /*istanbul ignore end*/\n (myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {\n /*istanbul ignore start*/\n var _hunk$lines3;\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines3 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines3\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n myChanges));\n\n return;\n } else if (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _array\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n arrayStartsWith)\n /*istanbul ignore end*/\n (theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {\n /*istanbul ignore start*/\n var _hunk$lines4;\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines4 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines4\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n theirChanges));\n\n return;\n }\n } else if (\n /*istanbul ignore start*/\n (0,\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n _array\n /*istanbul ignore end*/\n .\n /*istanbul ignore start*/\n arrayEqual)\n /*istanbul ignore end*/\n (myChanges, theirChanges)) {\n /*istanbul ignore start*/\n var _hunk$lines5;\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines5 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines5\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n myChanges));\n\n return;\n }\n\n conflict(hunk, myChanges, theirChanges);\n}\n\nfunction removal(hunk, mine, their, swap) {\n var myChanges = collectChange(mine),\n theirChanges = collectContext(their, myChanges);\n\n if (theirChanges.merged) {\n /*istanbul ignore start*/\n var _hunk$lines6;\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n\n /*istanbul ignore end*/\n\n /*istanbul ignore start*/\n (_hunk$lines6 =\n /*istanbul ignore end*/\n hunk.lines).push.apply(\n /*istanbul ignore start*/\n _hunk$lines6\n /*istanbul ignore end*/\n ,\n /*istanbul ignore start*/\n _toConsumableArray(\n /*istanbul ignore end*/\n theirChanges.merged));\n } else {\n conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);\n }\n}\n\nfunction conflict(hunk, mine, their) {\n hunk.conflict = true;\n hunk.lines.push({\n conflict: true,\n mine: mine,\n theirs: their\n });\n}\n\nfunction insertLeading(hunk, insert, their) {\n while (insert.offset < their.offset && insert.index < insert.lines.length) {\n var line = insert.lines[insert.index++];\n hunk.lines.push(line);\n insert.offset++;\n }\n}\n\nfunction insertTrailing(hunk, insert) {\n while (insert.index < insert.lines.length) {\n var line = insert.lines[insert.index++];\n hunk.lines.push(line);\n }\n}\n\nfunction collectChange(state) {\n var ret = [],\n operation = state.lines[state.index][0];\n\n while (state.index < state.lines.length) {\n var line = state.lines[state.index]; // Group additions that are immediately after subtractions and treat them as one \"atomic\" modify change.\n\n if (operation === '-' && line[0] === '+') {\n operation = '+';\n }\n\n if (operation === line[0]) {\n ret.push(line);\n state.index++;\n } else {\n break;\n }\n }\n\n return ret;\n}\n\nfunction collectContext(state, matchChanges) {\n var changes = [],\n merged = [],\n matchIndex = 0,\n contextChanges = false,\n conflicted = false;\n\n while (matchIndex < matchChanges.length && state.index < state.lines.length) {\n var change = state.lines[state.index],\n match = matchChanges[matchIndex]; // Once we've hit our add, then we are done\n\n if (match[0] === '+') {\n break;\n }\n\n contextChanges = contextChanges || change[0] !== ' ';\n merged.push(match);\n matchIndex++; // Consume any additions in the other block as a conflict to attempt\n // to pull in the remaining context after this\n\n if (change[0] === '+') {\n conflicted = true;\n\n while (change[0] === '+') {\n changes.push(change);\n change = state.lines[++state.index];\n }\n }\n\n if (match.substr(1) === change.substr(1)) {\n changes.push(change);\n state.index++;\n } else {\n conflicted = true;\n }\n }\n\n if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {\n conflicted = true;\n }\n\n if (conflicted) {\n return changes;\n }\n\n while (matchIndex < matchChanges.length) {\n merged.push(matchChanges[matchIndex++]);\n }\n\n return {\n merged: merged,\n changes: changes\n };\n}\n\nfunction allRemoves(changes) {\n return changes.reduce(function (prev, change) {\n return prev && change[0] === '-';\n }, true);\n}\n\nfunction skipRemoveSuperset(state, removeChanges, delta) {\n for (var i = 0; i < delta; i++) {\n var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);\n\n if (state.lines[state.index + i] !== ' ' + changeContent) {\n return false;\n }\n }\n\n state.index += delta;\n return true;\n}\n\nfunction calcOldNewLineCount(lines) {\n var oldLines = 0;\n var newLines = 0;\n lines.forEach(function (line) {\n if (typeof line !== 'string') {\n var myCount = calcOldNewLineCount(line.mine);\n var theirCount = calcOldNewLineCount(line.theirs);\n\n if (oldLines !== undefined) {\n if (myCount.oldLines === theirCount.oldLines) {\n oldLines += myCount.oldLines;\n } else {\n oldLines = undefined;\n }\n }\n\n if (newLines !== undefined) {\n if (myCount.newLines === theirCount.newLines) {\n newLines += myCount.newLines;\n } else {\n newLines = undefined;\n }\n }\n } else {\n if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) {\n newLines++;\n }\n\n if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) {\n oldLines++;\n }\n }\n });\n return {\n oldLines: oldLines,\n newLines: newLines\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9tZXJnZS5qcyJdLCJuYW1lcyI6WyJjYWxjTGluZUNvdW50IiwiaHVuayIsImNhbGNPbGROZXdMaW5lQ291bnQiLCJsaW5lcyIsIm9sZExpbmVzIiwibmV3TGluZXMiLCJ1bmRlZmluZWQiLCJtZXJnZSIsIm1pbmUiLCJ0aGVpcnMiLCJiYXNlIiwibG9hZFBhdGNoIiwicmV0IiwiaW5kZXgiLCJuZXdGaWxlTmFtZSIsImZpbGVOYW1lQ2hhbmdlZCIsIm9sZEZpbGVOYW1lIiwib2xkSGVhZGVyIiwibmV3SGVhZGVyIiwic2VsZWN0RmllbGQiLCJodW5rcyIsIm1pbmVJbmRleCIsInRoZWlyc0luZGV4IiwibWluZU9mZnNldCIsInRoZWlyc09mZnNldCIsImxlbmd0aCIsIm1pbmVDdXJyZW50Iiwib2xkU3RhcnQiLCJJbmZpbml0eSIsInRoZWlyc0N1cnJlbnQiLCJodW5rQmVmb3JlIiwicHVzaCIsImNsb25lSHVuayIsIm1lcmdlZEh1bmsiLCJNYXRoIiwibWluIiwibmV3U3RhcnQiLCJtZXJnZUxpbmVzIiwicGFyYW0iLCJ0ZXN0IiwicGFyc2VQYXRjaCIsIkVycm9yIiwic3RydWN0dXJlZFBhdGNoIiwicGF0Y2giLCJjb25mbGljdCIsImNoZWNrIiwib2Zmc2V0IiwibWluZUxpbmVzIiwidGhlaXJPZmZzZXQiLCJ0aGVpckxpbmVzIiwidGhlaXIiLCJpbnNlcnRMZWFkaW5nIiwidGhlaXJDdXJyZW50IiwibXV0dWFsQ2hhbmdlIiwiY29sbGVjdENoYW5nZSIsInJlbW92YWwiLCJpbnNlcnRUcmFpbGluZyIsIm15Q2hhbmdlcyIsInRoZWlyQ2hhbmdlcyIsImFsbFJlbW92ZXMiLCJhcnJheVN0YXJ0c1dpdGgiLCJza2lwUmVtb3ZlU3VwZXJzZXQiLCJhcnJheUVxdWFsIiwic3dhcCIsImNvbGxlY3RDb250ZXh0IiwibWVyZ2VkIiwiaW5zZXJ0IiwibGluZSIsInN0YXRlIiwib3BlcmF0aW9uIiwibWF0Y2hDaGFuZ2VzIiwiY2hhbmdlcyIsIm1hdGNoSW5kZXgiLCJjb250ZXh0Q2hhbmdlcyIsImNvbmZsaWN0ZWQiLCJjaGFuZ2UiLCJtYXRjaCIsInN1YnN0ciIsInJlZHVjZSIsInByZXYiLCJyZW1vdmVDaGFuZ2VzIiwiZGVsdGEiLCJpIiwiY2hhbmdlQ29udGVudCIsImZvckVhY2giLCJteUNvdW50IiwidGhlaXJDb3VudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7OztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7O0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTs7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7QUFFTyxTQUFTQSxhQUFULENBQXVCQyxJQUF2QixFQUE2QjtBQUFBO0FBQUE7QUFBQTtBQUNMQyxFQUFBQSxtQkFBbUIsQ0FBQ0QsSUFBSSxDQUFDRSxLQUFOLENBRGQ7QUFBQSxNQUMzQkMsUUFEMkIsd0JBQzNCQSxRQUQyQjtBQUFBLE1BQ2pCQyxRQURpQix3QkFDakJBLFFBRGlCOztBQUdsQyxNQUFJRCxRQUFRLEtBQUtFLFNBQWpCLEVBQTRCO0FBQzFCTCxJQUFBQSxJQUFJLENBQUNHLFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0QsR0FGRCxNQUVPO0FBQ0wsV0FBT0gsSUFBSSxDQUFDRyxRQUFaO0FBQ0Q7O0FBRUQsTUFBSUMsUUFBUSxLQUFLQyxTQUFqQixFQUE0QjtBQUMxQkwsSUFBQUEsSUFBSSxDQUFDSSxRQUFMLEdBQWdCQSxRQUFoQjtBQUNELEdBRkQsTUFFTztBQUNMLFdBQU9KLElBQUksQ0FBQ0ksUUFBWjtBQUNEO0FBQ0Y7O0FBRU0sU0FBU0UsS0FBVCxDQUFlQyxJQUFmLEVBQXFCQyxNQUFyQixFQUE2QkMsSUFBN0IsRUFBbUM7QUFDeENGLEVBQUFBLElBQUksR0FBR0csU0FBUyxDQUFDSCxJQUFELEVBQU9FLElBQVAsQ0FBaEI7QUFDQUQsRUFBQUEsTUFBTSxHQUFHRSxTQUFTLENBQUNGLE1BQUQsRUFBU0MsSUFBVCxDQUFsQjtBQUVBLE1BQUlFLEdBQUcsR0FBRyxFQUFWLENBSndDLENBTXhDO0FBQ0E7QUFDQTs7QUFDQSxNQUFJSixJQUFJLENBQUNLLEtBQUwsSUFBY0osTUFBTSxDQUFDSSxLQUF6QixFQUFnQztBQUM5QkQsSUFBQUEsR0FBRyxDQUFDQyxLQUFKLEdBQVlMLElBQUksQ0FBQ0ssS0FBTCxJQUFjSixNQUFNLENBQUNJLEtBQWpDO0FBQ0Q7O0FBRUQsTUFBSUwsSUFBSSxDQUFDTSxXQUFMLElBQW9CTCxNQUFNLENBQUNLLFdBQS9CLEVBQTRDO0FBQzFDLFFBQUksQ0FBQ0MsZUFBZSxDQUFDUCxJQUFELENBQXBCLEVBQTRCO0FBQzFCO0FBQ0FJLE1BQUFBLEdBQUcsQ0FBQ0ksV0FBSixHQUFrQlAsTUFBTSxDQUFDTyxXQUFQLElBQXNCUixJQUFJLENBQUNRLFdBQTdDO0FBQ0FKLE1BQUFBLEdBQUcsQ0FBQ0UsV0FBSixHQUFrQkwsTUFBTSxDQUFDSyxXQUFQLElBQXNCTixJQUFJLENBQUNNLFdBQTdDO0FBQ0FGLE1BQUFBLEdBQUcsQ0FBQ0ssU0FBSixHQUFnQlIsTUFBTSxDQUFDUSxTQUFQLElBQW9CVCxJQUFJLENBQUNTLFNBQXpDO0FBQ0FMLE1BQUFBLEdBQUcsQ0FBQ00sU0FBSixHQUFnQlQsTUFBTSxDQUFDUyxTQUFQLElBQW9CVixJQUFJLENBQUNVLFNBQXpDO0FBQ0QsS0FORCxNQU1PLElBQUksQ0FBQ0gsZUFBZSxDQUFDTixNQUFELENBQXBCLEVBQThCO0FBQ25DO0FBQ0FHLE1BQUFBLEdBQUcsQ0FBQ0ksV0FBSixHQUFrQlIsSUFBSSxDQUFDUSxXQUF2QjtBQUNBSixNQUFBQSxHQUFHLENBQUNFLFdBQUosR0FBa0JOLElBQUksQ0FBQ00sV0FBdkI7QUFDQUYsTUFBQUEsR0FBRyxDQUFDSyxTQUFKLEdBQWdCVCxJQUFJLENBQUNTLFNBQXJCO0FBQ0FMLE1BQUFBLEdBQUcsQ0FBQ00sU0FBSixHQUFnQlYsSUFBSSxDQUFDVSxTQUFyQjtBQUNELEtBTk0sTUFNQTtBQUNMO0FBQ0FOLE1BQUFBLEdBQUcsQ0FBQ0ksV0FBSixHQUFrQkcsV0FBVyxDQUFDUCxHQUFELEVBQU1KLElBQUksQ0FBQ1EsV0FBWCxFQUF3QlAsTUFBTSxDQUFDTyxXQUEvQixDQUE3QjtBQUNBSixNQUFBQSxHQUFHLENBQUNFLFdBQUosR0FBa0JLLFdBQVcsQ0FBQ1AsR0FBRCxFQUFNSixJQUFJLENBQUNNLFdBQVgsRUFBd0JMLE1BQU0sQ0FBQ0ssV0FBL0IsQ0FBN0I7QUFDQUYsTUFBQUEsR0FBRyxDQUFDSyxTQUFKLEdBQWdCRSxXQUFXLENBQUNQLEdBQUQsRUFBTUosSUFBSSxDQUFDUyxTQUFYLEVBQXNCUixNQUFNLENBQUNRLFNBQTdCLENBQTNCO0FBQ0FMLE1BQUFBLEdBQUcsQ0FBQ00sU0FBSixHQUFnQkMsV0FBVyxDQUFDUCxHQUFELEVBQU1KLElBQUksQ0FBQ1UsU0FBWCxFQUFzQlQsTUFBTSxDQUFDUyxTQUE3QixDQUEzQjtBQUNEO0FBQ0Y7O0FBRUROLEVBQUFBLEdBQUcsQ0FBQ1EsS0FBSixHQUFZLEVBQVo7QUFFQSxNQUFJQyxTQUFTLEdBQUcsQ0FBaEI7QUFBQSxNQUNJQyxXQUFXLEdBQUcsQ0FEbEI7QUFBQSxNQUVJQyxVQUFVLEdBQUcsQ0FGakI7QUFBQSxNQUdJQyxZQUFZLEdBQUcsQ0FIbkI7O0FBS0EsU0FBT0gsU0FBUyxHQUFHYixJQUFJLENBQUNZLEtBQUwsQ0FBV0ssTUFBdkIsSUFBaUNILFdBQVcsR0FBR2IsTUFBTSxDQUFDVyxLQUFQLENBQWFLLE1BQW5FLEVBQTJFO0FBQ3pFLFFBQUlDLFdBQVcsR0FBR2xCLElBQUksQ0FBQ1ksS0FBTCxDQUFXQyxTQUFYLEtBQXlCO0FBQUNNLE1BQUFBLFFBQVEsRUFBRUM7QUFBWCxLQUEzQztBQUFBLFFBQ0lDLGFBQWEsR0FBR3BCLE1BQU0sQ0FBQ1csS0FBUCxDQUFhRSxXQUFiLEtBQTZCO0FBQUNLLE1BQUFBLFFBQVEsRUFBRUM7QUFBWCxLQURqRDs7QUFHQSxRQUFJRSxVQUFVLENBQUNKLFdBQUQsRUFBY0csYUFBZCxDQUFkLEVBQTRDO0FBQzFDO0FBQ0FqQixNQUFBQSxHQUFHLENBQUNRLEtBQUosQ0FBVVcsSUFBVixDQUFlQyxTQUFTLENBQUNOLFdBQUQsRUFBY0gsVUFBZCxDQUF4QjtBQUNBRixNQUFBQSxTQUFTO0FBQ1RHLE1BQUFBLFlBQVksSUFBSUUsV0FBVyxDQUFDckIsUUFBWixHQUF1QnFCLFdBQVcsQ0FBQ3RCLFFBQW5EO0FBQ0QsS0FMRCxNQUtPLElBQUkwQixVQUFVLENBQUNELGFBQUQsRUFBZ0JILFdBQWhCLENBQWQsRUFBNEM7QUFDakQ7QUFDQWQsTUFBQUEsR0FBRyxDQUFDUSxLQUFKLENBQVVXLElBQVYsQ0FBZUMsU0FBUyxDQUFDSCxhQUFELEVBQWdCTCxZQUFoQixDQUF4QjtBQUNBRixNQUFBQSxXQUFXO0FBQ1hDLE1BQUFBLFVBQVUsSUFBSU0sYUFBYSxDQUFDeEIsUUFBZCxHQUF5QndCLGFBQWEsQ0FBQ3pCLFFBQXJEO0FBQ0QsS0FMTSxNQUtBO0FBQ0w7QUFDQSxVQUFJNkIsVUFBVSxHQUFHO0FBQ2ZOLFFBQUFBLFFBQVEsRUFBRU8sSUFBSSxDQUFDQyxHQUFMLENBQVNULFdBQVcsQ0FBQ0MsUUFBckIsRUFBK0JFLGFBQWEsQ0FBQ0YsUUFBN0MsQ0FESztBQUVmdkIsUUFBQUEsUUFBUSxFQUFFLENBRks7QUFHZmdDLFFBQUFBLFFBQVEsRUFBRUYsSUFBSSxDQUFDQyxHQUFMLENBQVNULFdBQVcsQ0FBQ1UsUUFBWixHQUF1QmIsVUFBaEMsRUFBNENNLGFBQWEsQ0FBQ0YsUUFBZCxHQUF5QkgsWUFBckUsQ0FISztBQUlmbkIsUUFBQUEsUUFBUSxFQUFFLENBSks7QUFLZkYsUUFBQUEsS0FBSyxFQUFFO0FBTFEsT0FBakI7QUFPQWtDLE1BQUFBLFVBQVUsQ0FBQ0osVUFBRCxFQUFhUCxXQUFXLENBQUNDLFFBQXpCLEVBQW1DRCxXQUFXLENBQUN2QixLQUEvQyxFQUFzRDBCLGFBQWEsQ0FBQ0YsUUFBcEUsRUFBOEVFLGFBQWEsQ0FBQzFCLEtBQTVGLENBQVY7QUFDQW1CLE1BQUFBLFdBQVc7QUFDWEQsTUFBQUEsU0FBUztBQUVUVCxNQUFBQSxHQUFHLENBQUNRLEtBQUosQ0FBVVcsSUFBVixDQUFlRSxVQUFmO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPckIsR0FBUDtBQUNEOztBQUVELFNBQVNELFNBQVQsQ0FBbUIyQixLQUFuQixFQUEwQjVCLElBQTFCLEVBQWdDO0FBQzlCLE1BQUksT0FBTzRCLEtBQVAsS0FBaUIsUUFBckIsRUFBK0I7QUFDN0IsUUFBSyxNQUFELENBQVNDLElBQVQsQ0FBY0QsS0FBZCxLQUEwQixVQUFELENBQWFDLElBQWIsQ0FBa0JELEtBQWxCLENBQTdCLEVBQXdEO0FBQ3RELGFBQU87QUFBQTtBQUFBO0FBQUE7O0FBQUFFO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxTQUFXRixLQUFYLEVBQWtCLENBQWxCO0FBQVA7QUFDRDs7QUFFRCxRQUFJLENBQUM1QixJQUFMLEVBQVc7QUFDVCxZQUFNLElBQUkrQixLQUFKLENBQVUsa0RBQVYsQ0FBTjtBQUNEOztBQUNELFdBQU87QUFBQTtBQUFBO0FBQUE7O0FBQUFDO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxPQUFnQnBDLFNBQWhCLEVBQTJCQSxTQUEzQixFQUFzQ0ksSUFBdEMsRUFBNEM0QixLQUE1QztBQUFQO0FBQ0Q7O0FBRUQsU0FBT0EsS0FBUDtBQUNEOztBQUVELFNBQVN2QixlQUFULENBQXlCNEIsS0FBekIsRUFBZ0M7QUFDOUIsU0FBT0EsS0FBSyxDQUFDN0IsV0FBTixJQUFxQjZCLEtBQUssQ0FBQzdCLFdBQU4sS0FBc0I2QixLQUFLLENBQUMzQixXQUF4RDtBQUNEOztBQUVELFNBQVNHLFdBQVQsQ0FBcUJOLEtBQXJCLEVBQTRCTCxJQUE1QixFQUFrQ0MsTUFBbEMsRUFBMEM7QUFDeEMsTUFBSUQsSUFBSSxLQUFLQyxNQUFiLEVBQXFCO0FBQ25CLFdBQU9ELElBQVA7QUFDRCxHQUZELE1BRU87QUFDTEssSUFBQUEsS0FBSyxDQUFDK0IsUUFBTixHQUFpQixJQUFqQjtBQUNBLFdBQU87QUFBQ3BDLE1BQUFBLElBQUksRUFBSkEsSUFBRDtBQUFPQyxNQUFBQSxNQUFNLEVBQU5BO0FBQVAsS0FBUDtBQUNEO0FBQ0Y7O0FBRUQsU0FBU3FCLFVBQVQsQ0FBb0JTLElBQXBCLEVBQTBCTSxLQUExQixFQUFpQztBQUMvQixTQUFPTixJQUFJLENBQUNaLFFBQUwsR0FBZ0JrQixLQUFLLENBQUNsQixRQUF0QixJQUNEWSxJQUFJLENBQUNaLFFBQUwsR0FBZ0JZLElBQUksQ0FBQ25DLFFBQXRCLEdBQWtDeUMsS0FBSyxDQUFDbEIsUUFEN0M7QUFFRDs7QUFFRCxTQUFTSyxTQUFULENBQW1CL0IsSUFBbkIsRUFBeUI2QyxNQUF6QixFQUFpQztBQUMvQixTQUFPO0FBQ0xuQixJQUFBQSxRQUFRLEVBQUUxQixJQUFJLENBQUMwQixRQURWO0FBQ29CdkIsSUFBQUEsUUFBUSxFQUFFSCxJQUFJLENBQUNHLFFBRG5DO0FBRUxnQyxJQUFBQSxRQUFRLEVBQUVuQyxJQUFJLENBQUNtQyxRQUFMLEdBQWdCVSxNQUZyQjtBQUU2QnpDLElBQUFBLFFBQVEsRUFBRUosSUFBSSxDQUFDSSxRQUY1QztBQUdMRixJQUFBQSxLQUFLLEVBQUVGLElBQUksQ0FBQ0U7QUFIUCxHQUFQO0FBS0Q7O0FBRUQsU0FBU2tDLFVBQVQsQ0FBb0JwQyxJQUFwQixFQUEwQnNCLFVBQTFCLEVBQXNDd0IsU0FBdEMsRUFBaURDLFdBQWpELEVBQThEQyxVQUE5RCxFQUEwRTtBQUN4RTtBQUNBO0FBQ0EsTUFBSXpDLElBQUksR0FBRztBQUFDc0MsSUFBQUEsTUFBTSxFQUFFdkIsVUFBVDtBQUFxQnBCLElBQUFBLEtBQUssRUFBRTRDLFNBQTVCO0FBQXVDbEMsSUFBQUEsS0FBSyxFQUFFO0FBQTlDLEdBQVg7QUFBQSxNQUNJcUMsS0FBSyxHQUFHO0FBQUNKLElBQUFBLE1BQU0sRUFBRUUsV0FBVDtBQUFzQjdDLElBQUFBLEtBQUssRUFBRThDLFVBQTdCO0FBQXlDcEMsSUFBQUEsS0FBSyxFQUFFO0FBQWhELEdBRFosQ0FId0UsQ0FNeEU7O0FBQ0FzQyxFQUFBQSxhQUFhLENBQUNsRCxJQUFELEVBQU9PLElBQVAsRUFBYTBDLEtBQWIsQ0FBYjtBQUNBQyxFQUFBQSxhQUFhLENBQUNsRCxJQUFELEVBQU9pRCxLQUFQLEVBQWMxQyxJQUFkLENBQWIsQ0FSd0UsQ0FVeEU7O0FBQ0EsU0FBT0EsSUFBSSxDQUFDSyxLQUFMLEdBQWFMLElBQUksQ0FBQ0wsS0FBTCxDQUFXc0IsTUFBeEIsSUFBa0N5QixLQUFLLENBQUNyQyxLQUFOLEdBQWNxQyxLQUFLLENBQUMvQyxLQUFOLENBQVlzQixNQUFuRSxFQUEyRTtBQUN6RSxRQUFJQyxXQUFXLEdBQUdsQixJQUFJLENBQUNMLEtBQUwsQ0FBV0ssSUFBSSxDQUFDSyxLQUFoQixDQUFsQjtBQUFBLFFBQ0l1QyxZQUFZLEdBQUdGLEtBQUssQ0FBQy9DLEtBQU4sQ0FBWStDLEtBQUssQ0FBQ3JDLEtBQWxCLENBRG5COztBQUdBLFFBQUksQ0FBQ2EsV0FBVyxDQUFDLENBQUQsQ0FBWCxLQUFtQixHQUFuQixJQUEwQkEsV0FBVyxDQUFDLENBQUQsQ0FBWCxLQUFtQixHQUE5QyxNQUNJMEIsWUFBWSxDQUFDLENBQUQsQ0FBWixLQUFvQixHQUFwQixJQUEyQkEsWUFBWSxDQUFDLENBQUQsQ0FBWixLQUFvQixHQURuRCxDQUFKLEVBQzZEO0FBQzNEO0FBQ0FDLE1BQUFBLFlBQVksQ0FBQ3BELElBQUQsRUFBT08sSUFBUCxFQUFhMEMsS0FBYixDQUFaO0FBQ0QsS0FKRCxNQUlPLElBQUl4QixXQUFXLENBQUMsQ0FBRCxDQUFYLEtBQW1CLEdBQW5CLElBQTBCMEIsWUFBWSxDQUFDLENBQUQsQ0FBWixLQUFvQixHQUFsRCxFQUF1RDtBQUFBO0FBQUE7O0FBQUE7QUFDNUQ7O0FBQ0E7O0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUFuRCxNQUFBQSxJQUFJLENBQUNFLEtBQUwsRUFBVzRCLElBQVg7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvQnVCLE1BQUFBLGFBQWEsQ0FBQzlDLElBQUQsQ0FBakM7QUFDRCxLQUhNLE1BR0EsSUFBSTRDLFlBQVksQ0FBQyxDQUFELENBQVosS0FBb0IsR0FBcEIsSUFBMkIxQixXQUFXLENBQUMsQ0FBRCxDQUFYLEtBQW1CLEdBQWxELEVBQXVEO0FBQUE7QUFBQTs7QUFBQTtBQUM1RDs7QUFDQTs7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQXpCLE1BQUFBLElBQUksQ0FBQ0UsS0FBTCxFQUFXNEIsSUFBWDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9CdUIsTUFBQUEsYUFBYSxDQUFDSixLQUFELENBQWpDO0FBQ0QsS0FITSxNQUdBLElBQUl4QixXQUFXLENBQUMsQ0FBRCxDQUFYLEtBQW1CLEdBQW5CLElBQTBCMEIsWUFBWSxDQUFDLENBQUQsQ0FBWixLQUFvQixHQUFsRCxFQUF1RDtBQUM1RDtBQUNBRyxNQUFBQSxPQUFPLENBQUN0RCxJQUFELEVBQU9PLElBQVAsRUFBYTBDLEtBQWIsQ0FBUDtBQUNELEtBSE0sTUFHQSxJQUFJRSxZQUFZLENBQUMsQ0FBRCxDQUFaLEtBQW9CLEdBQXBCLElBQTJCMUIsV0FBVyxDQUFDLENBQUQsQ0FBWCxLQUFtQixHQUFsRCxFQUF1RDtBQUM1RDtBQUNBNkIsTUFBQUEsT0FBTyxDQUFDdEQsSUFBRCxFQUFPaUQsS0FBUCxFQUFjMUMsSUFBZCxFQUFvQixJQUFwQixDQUFQO0FBQ0QsS0FITSxNQUdBLElBQUlrQixXQUFXLEtBQUswQixZQUFwQixFQUFrQztBQUN2QztBQUNBbkQsTUFBQUEsSUFBSSxDQUFDRSxLQUFMLENBQVc0QixJQUFYLENBQWdCTCxXQUFoQjtBQUNBbEIsTUFBQUEsSUFBSSxDQUFDSyxLQUFMO0FBQ0FxQyxNQUFBQSxLQUFLLENBQUNyQyxLQUFOO0FBQ0QsS0FMTSxNQUtBO0FBQ0w7QUFDQStCLE1BQUFBLFFBQVEsQ0FBQzNDLElBQUQsRUFBT3FELGFBQWEsQ0FBQzlDLElBQUQsQ0FBcEIsRUFBNEI4QyxhQUFhLENBQUNKLEtBQUQsQ0FBekMsQ0FBUjtBQUNEO0FBQ0YsR0F4Q3VFLENBMEN4RTs7O0FBQ0FNLEVBQUFBLGNBQWMsQ0FBQ3ZELElBQUQsRUFBT08sSUFBUCxDQUFkO0FBQ0FnRCxFQUFBQSxjQUFjLENBQUN2RCxJQUFELEVBQU9pRCxLQUFQLENBQWQ7QUFFQWxELEVBQUFBLGFBQWEsQ0FBQ0MsSUFBRCxDQUFiO0FBQ0Q7O0FBRUQsU0FBU29ELFlBQVQsQ0FBc0JwRCxJQUF0QixFQUE0Qk8sSUFBNUIsRUFBa0MwQyxLQUFsQyxFQUF5QztBQUN2QyxNQUFJTyxTQUFTLEdBQUdILGFBQWEsQ0FBQzlDLElBQUQsQ0FBN0I7QUFBQSxNQUNJa0QsWUFBWSxHQUFHSixhQUFhLENBQUNKLEtBQUQsQ0FEaEM7O0FBR0EsTUFBSVMsVUFBVSxDQUFDRixTQUFELENBQVYsSUFBeUJFLFVBQVUsQ0FBQ0QsWUFBRCxDQUF2QyxFQUF1RDtBQUNyRDtBQUNBO0FBQUk7QUFBQTtBQUFBOztBQUFBRTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBQTtBQUFBO0FBQUEsS0FBZ0JILFNBQWhCLEVBQTJCQyxZQUEzQixLQUNHRyxrQkFBa0IsQ0FBQ1gsS0FBRCxFQUFRTyxTQUFSLEVBQW1CQSxTQUFTLENBQUNoQyxNQUFWLEdBQW1CaUMsWUFBWSxDQUFDakMsTUFBbkQsQ0FEekIsRUFDcUY7QUFBQTtBQUFBOztBQUFBOztBQUNuRjs7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQXhCLE1BQUFBLElBQUksQ0FBQ0UsS0FBTCxFQUFXNEIsSUFBWDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9CMEIsTUFBQUEsU0FBcEI7O0FBQ0E7QUFDRCxLQUpELE1BSU87QUFBSTtBQUFBO0FBQUE7O0FBQUFHO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxLQUFnQkYsWUFBaEIsRUFBOEJELFNBQTlCLEtBQ0pJLGtCQUFrQixDQUFDckQsSUFBRCxFQUFPa0QsWUFBUCxFQUFxQkEsWUFBWSxDQUFDakMsTUFBYixHQUFzQmdDLFNBQVMsQ0FBQ2hDLE1BQXJELENBRGxCLEVBQ2dGO0FBQUE7QUFBQTs7QUFBQTs7QUFDckY7O0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUF4QixNQUFBQSxJQUFJLENBQUNFLEtBQUwsRUFBVzRCLElBQVg7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvQjJCLE1BQUFBLFlBQXBCOztBQUNBO0FBQ0Q7QUFDRixHQVhELE1BV087QUFBSTtBQUFBO0FBQUE7O0FBQUFJO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUFBO0FBQUE7QUFBQSxHQUFXTCxTQUFYLEVBQXNCQyxZQUF0QixDQUFKLEVBQXlDO0FBQUE7QUFBQTs7QUFBQTs7QUFDOUM7O0FBQUE7O0FBQUE7QUFBQTtBQUFBO0FBQUF6RCxJQUFBQSxJQUFJLENBQUNFLEtBQUwsRUFBVzRCLElBQVg7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFvQjBCLElBQUFBLFNBQXBCOztBQUNBO0FBQ0Q7O0FBRURiLEVBQUFBLFFBQVEsQ0FBQzNDLElBQUQsRUFBT3dELFNBQVAsRUFBa0JDLFlBQWxCLENBQVI7QUFDRDs7QUFFRCxTQUFTSCxPQUFULENBQWlCdEQsSUFBakIsRUFBdUJPLElBQXZCLEVBQTZCMEMsS0FBN0IsRUFBb0NhLElBQXBDLEVBQTBDO0FBQ3hDLE1BQUlOLFNBQVMsR0FBR0gsYUFBYSxDQUFDOUMsSUFBRCxDQUE3QjtBQUFBLE1BQ0lrRCxZQUFZLEdBQUdNLGNBQWMsQ0FBQ2QsS0FBRCxFQUFRTyxTQUFSLENBRGpDOztBQUVBLE1BQUlDLFlBQVksQ0FBQ08sTUFBakIsRUFBeUI7QUFBQTtBQUFBOztBQUFBOztBQUN2Qjs7QUFBQTs7QUFBQTtBQUFBO0FBQUE7QUFBQWhFLElBQUFBLElBQUksQ0FBQ0UsS0FBTCxFQUFXNEIsSUFBWDtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW9CMkIsSUFBQUEsWUFBWSxDQUFDTyxNQUFqQztBQUNELEdBRkQsTUFFTztBQUNMckIsSUFBQUEsUUFBUSxDQUFDM0MsSUFBRCxFQUFPOEQsSUFBSSxHQUFHTCxZQUFILEdBQWtCRCxTQUE3QixFQUF3Q00sSUFBSSxHQUFHTixTQUFILEdBQWVDLFlBQTNELENBQVI7QUFDRDtBQUNGOztBQUVELFNBQVNkLFFBQVQsQ0FBa0IzQyxJQUFsQixFQUF3Qk8sSUFBeEIsRUFBOEIwQyxLQUE5QixFQUFxQztBQUNuQ2pELEVBQUFBLElBQUksQ0FBQzJDLFFBQUwsR0FBZ0IsSUFBaEI7QUFDQTNDLEVBQUFBLElBQUksQ0FBQ0UsS0FBTCxDQUFXNEIsSUFBWCxDQUFnQjtBQUNkYSxJQUFBQSxRQUFRLEVBQUUsSUFESTtBQUVkcEMsSUFBQUEsSUFBSSxFQUFFQSxJQUZRO0FBR2RDLElBQUFBLE1BQU0sRUFBRXlDO0FBSE0sR0FBaEI7QUFLRDs7QUFFRCxTQUFTQyxhQUFULENBQXVCbEQsSUFBdkIsRUFBNkJpRSxNQUE3QixFQUFxQ2hCLEtBQXJDLEVBQTRDO0FBQzFDLFNBQU9nQixNQUFNLENBQUNwQixNQUFQLEdBQWdCSSxLQUFLLENBQUNKLE1BQXRCLElBQWdDb0IsTUFBTSxDQUFDckQsS0FBUCxHQUFlcUQsTUFBTSxDQUFDL0QsS0FBUCxDQUFhc0IsTUFBbkUsRUFBMkU7QUFDekUsUUFBSTBDLElBQUksR0FBR0QsTUFBTSxDQUFDL0QsS0FBUCxDQUFhK0QsTUFBTSxDQUFDckQsS0FBUCxFQUFiLENBQVg7QUFDQVosSUFBQUEsSUFBSSxDQUFDRSxLQUFMLENBQVc0QixJQUFYLENBQWdCb0MsSUFBaEI7QUFDQUQsSUFBQUEsTUFBTSxDQUFDcEIsTUFBUDtBQUNEO0FBQ0Y7O0FBQ0QsU0FBU1UsY0FBVCxDQUF3QnZELElBQXhCLEVBQThCaUUsTUFBOUIsRUFBc0M7QUFDcEMsU0FBT0EsTUFBTSxDQUFDckQsS0FBUCxHQUFlcUQsTUFBTSxDQUFDL0QsS0FBUCxDQUFhc0IsTUFBbkMsRUFBMkM7QUFDekMsUUFBSTBDLElBQUksR0FBR0QsTUFBTSxDQUFDL0QsS0FBUCxDQUFhK0QsTUFBTSxDQUFDckQsS0FBUCxFQUFiLENBQVg7QUFDQVosSUFBQUEsSUFBSSxDQUFDRSxLQUFMLENBQVc0QixJQUFYLENBQWdCb0MsSUFBaEI7QUFDRDtBQUNGOztBQUVELFNBQVNiLGFBQVQsQ0FBdUJjLEtBQXZCLEVBQThCO0FBQzVCLE1BQUl4RCxHQUFHLEdBQUcsRUFBVjtBQUFBLE1BQ0l5RCxTQUFTLEdBQUdELEtBQUssQ0FBQ2pFLEtBQU4sQ0FBWWlFLEtBQUssQ0FBQ3ZELEtBQWxCLEVBQXlCLENBQXpCLENBRGhCOztBQUVBLFNBQU91RCxLQUFLLENBQUN2RCxLQUFOLEdBQWN1RCxLQUFLLENBQUNqRSxLQUFOLENBQVlzQixNQUFqQyxFQUF5QztBQUN2QyxRQUFJMEMsSUFBSSxHQUFHQyxLQUFLLENBQUNqRSxLQUFOLENBQVlpRSxLQUFLLENBQUN2RCxLQUFsQixDQUFYLENBRHVDLENBR3ZDOztBQUNBLFFBQUl3RCxTQUFTLEtBQUssR0FBZCxJQUFxQkYsSUFBSSxDQUFDLENBQUQsQ0FBSixLQUFZLEdBQXJDLEVBQTBDO0FBQ3hDRSxNQUFBQSxTQUFTLEdBQUcsR0FBWjtBQUNEOztBQUVELFFBQUlBLFNBQVMsS0FBS0YsSUFBSSxDQUFDLENBQUQsQ0FBdEIsRUFBMkI7QUFDekJ2RCxNQUFBQSxHQUFHLENBQUNtQixJQUFKLENBQVNvQyxJQUFUO0FBQ0FDLE1BQUFBLEtBQUssQ0FBQ3ZELEtBQU47QUFDRCxLQUhELE1BR087QUFDTDtBQUNEO0FBQ0Y7O0FBRUQsU0FBT0QsR0FBUDtBQUNEOztBQUNELFNBQVNvRCxjQUFULENBQXdCSSxLQUF4QixFQUErQkUsWUFBL0IsRUFBNkM7QUFDM0MsTUFBSUMsT0FBTyxHQUFHLEVBQWQ7QUFBQSxNQUNJTixNQUFNLEdBQUcsRUFEYjtBQUFBLE1BRUlPLFVBQVUsR0FBRyxDQUZqQjtBQUFBLE1BR0lDLGNBQWMsR0FBRyxLQUhyQjtBQUFBLE1BSUlDLFVBQVUsR0FBRyxLQUpqQjs7QUFLQSxTQUFPRixVQUFVLEdBQUdGLFlBQVksQ0FBQzdDLE1BQTFCLElBQ0UyQyxLQUFLLENBQUN2RCxLQUFOLEdBQWN1RCxLQUFLLENBQUNqRSxLQUFOLENBQVlzQixNQURuQyxFQUMyQztBQUN6QyxRQUFJa0QsTUFBTSxHQUFHUCxLQUFLLENBQUNqRSxLQUFOLENBQVlpRSxLQUFLLENBQUN2RCxLQUFsQixDQUFiO0FBQUEsUUFDSStELEtBQUssR0FBR04sWUFBWSxDQUFDRSxVQUFELENBRHhCLENBRHlDLENBSXpDOztBQUNBLFFBQUlJLEtBQUssQ0FBQyxDQUFELENBQUwsS0FBYSxHQUFqQixFQUFzQjtBQUNwQjtBQUNEOztBQUVESCxJQUFBQSxjQUFjLEdBQUdBLGNBQWMsSUFBSUUsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjLEdBQWpEO0FBRUFWLElBQUFBLE1BQU0sQ0FBQ2xDLElBQVAsQ0FBWTZDLEtBQVo7QUFDQUosSUFBQUEsVUFBVSxHQVorQixDQWN6QztBQUNBOztBQUNBLFFBQUlHLE1BQU0sQ0FBQyxDQUFELENBQU4sS0FBYyxHQUFsQixFQUF1QjtBQUNyQkQsTUFBQUEsVUFBVSxHQUFHLElBQWI7O0FBRUEsYUFBT0MsTUFBTSxDQUFDLENBQUQsQ0FBTixLQUFjLEdBQXJCLEVBQTBCO0FBQ3hCSixRQUFBQSxPQUFPLENBQUN4QyxJQUFSLENBQWE0QyxNQUFiO0FBQ0FBLFFBQUFBLE1BQU0sR0FBR1AsS0FBSyxDQUFDakUsS0FBTixDQUFZLEVBQUVpRSxLQUFLLENBQUN2RCxLQUFwQixDQUFUO0FBQ0Q7QUFDRjs7QUFFRCxRQUFJK0QsS0FBSyxDQUFDQyxNQUFOLENBQWEsQ0FBYixNQUFvQkYsTUFBTSxDQUFDRSxNQUFQLENBQWMsQ0FBZCxDQUF4QixFQUEwQztBQUN4Q04sTUFBQUEsT0FBTyxDQUFDeEMsSUFBUixDQUFhNEMsTUFBYjtBQUNBUCxNQUFBQSxLQUFLLENBQUN2RCxLQUFOO0FBQ0QsS0FIRCxNQUdPO0FBQ0w2RCxNQUFBQSxVQUFVLEdBQUcsSUFBYjtBQUNEO0FBQ0Y7O0FBRUQsTUFBSSxDQUFDSixZQUFZLENBQUNFLFVBQUQsQ0FBWixJQUE0QixFQUE3QixFQUFpQyxDQUFqQyxNQUF3QyxHQUF4QyxJQUNHQyxjQURQLEVBQ3VCO0FBQ3JCQyxJQUFBQSxVQUFVLEdBQUcsSUFBYjtBQUNEOztBQUVELE1BQUlBLFVBQUosRUFBZ0I7QUFDZCxXQUFPSCxPQUFQO0FBQ0Q7O0FBRUQsU0FBT0MsVUFBVSxHQUFHRixZQUFZLENBQUM3QyxNQUFqQyxFQUF5QztBQUN2Q3dDLElBQUFBLE1BQU0sQ0FBQ2xDLElBQVAsQ0FBWXVDLFlBQVksQ0FBQ0UsVUFBVSxFQUFYLENBQXhCO0FBQ0Q7O0FBRUQsU0FBTztBQUNMUCxJQUFBQSxNQUFNLEVBQU5BLE1BREs7QUFFTE0sSUFBQUEsT0FBTyxFQUFQQTtBQUZLLEdBQVA7QUFJRDs7QUFFRCxTQUFTWixVQUFULENBQW9CWSxPQUFwQixFQUE2QjtBQUMzQixTQUFPQSxPQUFPLENBQUNPLE1BQVIsQ0FBZSxVQUFTQyxJQUFULEVBQWVKLE1BQWYsRUFBdUI7QUFDM0MsV0FBT0ksSUFBSSxJQUFJSixNQUFNLENBQUMsQ0FBRCxDQUFOLEtBQWMsR0FBN0I7QUFDRCxHQUZNLEVBRUosSUFGSSxDQUFQO0FBR0Q7O0FBQ0QsU0FBU2Qsa0JBQVQsQ0FBNEJPLEtBQTVCLEVBQW1DWSxhQUFuQyxFQUFrREMsS0FBbEQsRUFBeUQ7QUFDdkQsT0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBYixFQUFnQkEsQ0FBQyxHQUFHRCxLQUFwQixFQUEyQkMsQ0FBQyxFQUE1QixFQUFnQztBQUM5QixRQUFJQyxhQUFhLEdBQUdILGFBQWEsQ0FBQ0EsYUFBYSxDQUFDdkQsTUFBZCxHQUF1QndELEtBQXZCLEdBQStCQyxDQUFoQyxDQUFiLENBQWdETCxNQUFoRCxDQUF1RCxDQUF2RCxDQUFwQjs7QUFDQSxRQUFJVCxLQUFLLENBQUNqRSxLQUFOLENBQVlpRSxLQUFLLENBQUN2RCxLQUFOLEdBQWNxRSxDQUExQixNQUFpQyxNQUFNQyxhQUEzQyxFQUEwRDtBQUN4RCxhQUFPLEtBQVA7QUFDRDtBQUNGOztBQUVEZixFQUFBQSxLQUFLLENBQUN2RCxLQUFOLElBQWVvRSxLQUFmO0FBQ0EsU0FBTyxJQUFQO0FBQ0Q7O0FBRUQsU0FBUy9FLG1CQUFULENBQTZCQyxLQUE3QixFQUFvQztBQUNsQyxNQUFJQyxRQUFRLEdBQUcsQ0FBZjtBQUNBLE1BQUlDLFFBQVEsR0FBRyxDQUFmO0FBRUFGLEVBQUFBLEtBQUssQ0FBQ2lGLE9BQU4sQ0FBYyxVQUFTakIsSUFBVCxFQUFlO0FBQzNCLFFBQUksT0FBT0EsSUFBUCxLQUFnQixRQUFwQixFQUE4QjtBQUM1QixVQUFJa0IsT0FBTyxHQUFHbkYsbUJBQW1CLENBQUNpRSxJQUFJLENBQUMzRCxJQUFOLENBQWpDO0FBQ0EsVUFBSThFLFVBQVUsR0FBR3BGLG1CQUFtQixDQUFDaUUsSUFBSSxDQUFDMUQsTUFBTixDQUFwQzs7QUFFQSxVQUFJTCxRQUFRLEtBQUtFLFNBQWpCLEVBQTRCO0FBQzFCLFlBQUkrRSxPQUFPLENBQUNqRixRQUFSLEtBQXFCa0YsVUFBVSxDQUFDbEYsUUFBcEMsRUFBOEM7QUFDNUNBLFVBQUFBLFFBQVEsSUFBSWlGLE9BQU8sQ0FBQ2pGLFFBQXBCO0FBQ0QsU0FGRCxNQUVPO0FBQ0xBLFVBQUFBLFFBQVEsR0FBR0UsU0FBWDtBQUNEO0FBQ0Y7O0FBRUQsVUFBSUQsUUFBUSxLQUFLQyxTQUFqQixFQUE0QjtBQUMxQixZQUFJK0UsT0FBTyxDQUFDaEYsUUFBUixLQUFxQmlGLFVBQVUsQ0FBQ2pGLFFBQXBDLEVBQThDO0FBQzVDQSxVQUFBQSxRQUFRLElBQUlnRixPQUFPLENBQUNoRixRQUFwQjtBQUNELFNBRkQsTUFFTztBQUNMQSxVQUFBQSxRQUFRLEdBQUdDLFNBQVg7QUFDRDtBQUNGO0FBQ0YsS0FuQkQsTUFtQk87QUFDTCxVQUFJRCxRQUFRLEtBQUtDLFNBQWIsS0FBMkI2RCxJQUFJLENBQUMsQ0FBRCxDQUFKLEtBQVksR0FBWixJQUFtQkEsSUFBSSxDQUFDLENBQUQsQ0FBSixLQUFZLEdBQTFELENBQUosRUFBb0U7QUFDbEU5RCxRQUFBQSxRQUFRO0FBQ1Q7O0FBQ0QsVUFBSUQsUUFBUSxLQUFLRSxTQUFiLEtBQTJCNkQsSUFBSSxDQUFDLENBQUQsQ0FBSixLQUFZLEdBQVosSUFBbUJBLElBQUksQ0FBQyxDQUFELENBQUosS0FBWSxHQUExRCxDQUFKLEVBQW9FO0FBQ2xFL0QsUUFBQUEsUUFBUTtBQUNUO0FBQ0Y7QUFDRixHQTVCRDtBQThCQSxTQUFPO0FBQUNBLElBQUFBLFFBQVEsRUFBUkEsUUFBRDtBQUFXQyxJQUFBQSxRQUFRLEVBQVJBO0FBQVgsR0FBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtzdHJ1Y3R1cmVkUGF0Y2h9IGZyb20gJy4vY3JlYXRlJztcbmltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXJzZSc7XG5cbmltcG9ydCB7YXJyYXlFcXVhbCwgYXJyYXlTdGFydHNXaXRofSBmcm9tICcuLi91dGlsL2FycmF5JztcblxuZXhwb3J0IGZ1bmN0aW9uIGNhbGNMaW5lQ291bnQoaHVuaykge1xuICBjb25zdCB7b2xkTGluZXMsIG5ld0xpbmVzfSA9IGNhbGNPbGROZXdMaW5lQ291bnQoaHVuay5saW5lcyk7XG5cbiAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICBodW5rLm9sZExpbmVzID0gb2xkTGluZXM7XG4gIH0gZWxzZSB7XG4gICAgZGVsZXRlIGh1bmsub2xkTGluZXM7XG4gIH1cblxuICBpZiAobmV3TGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGh1bmsubmV3TGluZXMgPSBuZXdMaW5lcztcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgaHVuay5uZXdMaW5lcztcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gbWVyZ2UobWluZSwgdGhlaXJzLCBiYXNlKSB7XG4gIG1pbmUgPSBsb2FkUGF0Y2gobWluZSwgYmFzZSk7XG4gIHRoZWlycyA9IGxvYWRQYXRjaCh0aGVpcnMsIGJhc2UpO1xuXG4gIGxldCByZXQgPSB7fTtcblxuICAvLyBGb3IgaW5kZXggd2UganVzdCBsZXQgaXQgcGFzcyB0aHJvdWdoIGFzIGl0IGRvZXNuJ3QgaGF2ZSBhbnkgbmVjZXNzYXJ5IG1lYW5pbmcuXG4gIC8vIExlYXZpbmcgc2FuaXR5IGNoZWNrcyBvbiB0aGlzIHRvIHRoZSBBUEkgY29uc3VtZXIgdGhhdCBtYXkga25vdyBtb3JlIGFib3V0IHRoZVxuICAvLyBtZWFuaW5nIGluIHRoZWlyIG93biBjb250ZXh0LlxuICBpZiAobWluZS5pbmRleCB8fCB0aGVpcnMuaW5kZXgpIHtcbiAgICByZXQuaW5kZXggPSBtaW5lLmluZGV4IHx8IHRoZWlycy5pbmRleDtcbiAgfVxuXG4gIGlmIChtaW5lLm5ld0ZpbGVOYW1lIHx8IHRoZWlycy5uZXdGaWxlTmFtZSkge1xuICAgIGlmICghZmlsZU5hbWVDaGFuZ2VkKG1pbmUpKSB7XG4gICAgICAvLyBObyBoZWFkZXIgb3Igbm8gY2hhbmdlIGluIG91cnMsIHVzZSB0aGVpcnMgKGFuZCBvdXJzIGlmIHRoZWlycyBkb2VzIG5vdCBleGlzdClcbiAgICAgIHJldC5vbGRGaWxlTmFtZSA9IHRoZWlycy5vbGRGaWxlTmFtZSB8fCBtaW5lLm9sZEZpbGVOYW1lO1xuICAgICAgcmV0Lm5ld0ZpbGVOYW1lID0gdGhlaXJzLm5ld0ZpbGVOYW1lIHx8IG1pbmUubmV3RmlsZU5hbWU7XG4gICAgICByZXQub2xkSGVhZGVyID0gdGhlaXJzLm9sZEhlYWRlciB8fCBtaW5lLm9sZEhlYWRlcjtcbiAgICAgIHJldC5uZXdIZWFkZXIgPSB0aGVpcnMubmV3SGVhZGVyIHx8IG1pbmUubmV3SGVhZGVyO1xuICAgIH0gZWxzZSBpZiAoIWZpbGVOYW1lQ2hhbmdlZCh0aGVpcnMpKSB7XG4gICAgICAvLyBObyBoZWFkZXIgb3Igbm8gY2hhbmdlIGluIHRoZWlycywgdXNlIG91cnNcbiAgICAgIHJldC5vbGRGaWxlTmFtZSA9IG1pbmUub2xkRmlsZU5hbWU7XG4gICAgICByZXQubmV3RmlsZU5hbWUgPSBtaW5lLm5ld0ZpbGVOYW1lO1xuICAgICAgcmV0Lm9sZEhlYWRlciA9IG1pbmUub2xkSGVhZGVyO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IG1pbmUubmV3SGVhZGVyO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBCb3RoIGNoYW5nZWQuLi4gZmlndXJlIGl0IG91dFxuICAgICAgcmV0Lm9sZEZpbGVOYW1lID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm9sZEZpbGVOYW1lLCB0aGVpcnMub2xkRmlsZU5hbWUpO1xuICAgICAgcmV0Lm5ld0ZpbGVOYW1lID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm5ld0ZpbGVOYW1lLCB0aGVpcnMubmV3RmlsZU5hbWUpO1xuICAgICAgcmV0Lm9sZEhlYWRlciA9IHNlbGVjdEZpZWxkKHJldCwgbWluZS5vbGRIZWFkZXIsIHRoZWlycy5vbGRIZWFkZXIpO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IHNlbGVjdEZpZWxkKHJldCwgbWluZS5uZXdIZWFkZXIsIHRoZWlycy5uZXdIZWFkZXIpO1xuICAgIH1cbiAgfVxuXG4gIHJldC5odW5rcyA9IFtdO1xuXG4gIGxldCBtaW5lSW5kZXggPSAwLFxuICAgICAgdGhlaXJzSW5kZXggPSAwLFxuICAgICAgbWluZU9mZnNldCA9IDAsXG4gICAgICB0aGVpcnNPZmZzZXQgPSAwO1xuXG4gIHdoaWxlIChtaW5lSW5kZXggPCBtaW5lLmh1bmtzLmxlbmd0aCB8fCB0aGVpcnNJbmRleCA8IHRoZWlycy5odW5rcy5sZW5ndGgpIHtcbiAgICBsZXQgbWluZUN1cnJlbnQgPSBtaW5lLmh1bmtzW21pbmVJbmRleF0gfHwge29sZFN0YXJ0OiBJbmZpbml0eX0sXG4gICAgICAgIHRoZWlyc0N1cnJlbnQgPSB0aGVpcnMuaHVua3NbdGhlaXJzSW5kZXhdIHx8IHtvbGRTdGFydDogSW5maW5pdHl9O1xuXG4gICAgaWYgKGh1bmtCZWZvcmUobWluZUN1cnJlbnQsIHRoZWlyc0N1cnJlbnQpKSB7XG4gICAgICAvLyBUaGlzIHBhdGNoIGRvZXMgbm90IG92ZXJsYXAgd2l0aCBhbnkgb2YgdGhlIG90aGVycywgeWF5LlxuICAgICAgcmV0Lmh1bmtzLnB1c2goY2xvbmVIdW5rKG1pbmVDdXJyZW50LCBtaW5lT2Zmc2V0KSk7XG4gICAgICBtaW5lSW5kZXgrKztcbiAgICAgIHRoZWlyc09mZnNldCArPSBtaW5lQ3VycmVudC5uZXdMaW5lcyAtIG1pbmVDdXJyZW50Lm9sZExpbmVzO1xuICAgIH0gZWxzZSBpZiAoaHVua0JlZm9yZSh0aGVpcnNDdXJyZW50LCBtaW5lQ3VycmVudCkpIHtcbiAgICAgIC8vIFRoaXMgcGF0Y2ggZG9lcyBub3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgb3RoZXJzLCB5YXkuXG4gICAgICByZXQuaHVua3MucHVzaChjbG9uZUh1bmsodGhlaXJzQ3VycmVudCwgdGhlaXJzT2Zmc2V0KSk7XG4gICAgICB0aGVpcnNJbmRleCsrO1xuICAgICAgbWluZU9mZnNldCArPSB0aGVpcnNDdXJyZW50Lm5ld0xpbmVzIC0gdGhlaXJzQ3VycmVudC5vbGRMaW5lcztcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gT3ZlcmxhcCwgbWVyZ2UgYXMgYmVzdCB3ZSBjYW5cbiAgICAgIGxldCBtZXJnZWRIdW5rID0ge1xuICAgICAgICBvbGRTdGFydDogTWF0aC5taW4obWluZUN1cnJlbnQub2xkU3RhcnQsIHRoZWlyc0N1cnJlbnQub2xkU3RhcnQpLFxuICAgICAgICBvbGRMaW5lczogMCxcbiAgICAgICAgbmV3U3RhcnQ6IE1hdGgubWluKG1pbmVDdXJyZW50Lm5ld1N0YXJ0ICsgbWluZU9mZnNldCwgdGhlaXJzQ3VycmVudC5vbGRTdGFydCArIHRoZWlyc09mZnNldCksXG4gICAgICAgIG5ld0xpbmVzOiAwLFxuICAgICAgICBsaW5lczogW11cbiAgICAgIH07XG4gICAgICBtZXJnZUxpbmVzKG1lcmdlZEh1bmssIG1pbmVDdXJyZW50Lm9sZFN0YXJ0LCBtaW5lQ3VycmVudC5saW5lcywgdGhlaXJzQ3VycmVudC5vbGRTdGFydCwgdGhlaXJzQ3VycmVudC5saW5lcyk7XG4gICAgICB0aGVpcnNJbmRleCsrO1xuICAgICAgbWluZUluZGV4Kys7XG5cbiAgICAgIHJldC5odW5rcy5wdXNoKG1lcmdlZEh1bmspO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGxvYWRQYXRjaChwYXJhbSwgYmFzZSkge1xuICBpZiAodHlwZW9mIHBhcmFtID09PSAnc3RyaW5nJykge1xuICAgIGlmICgoL15AQC9tKS50ZXN0KHBhcmFtKSB8fCAoKC9eSW5kZXg6L20pLnRlc3QocGFyYW0pKSkge1xuICAgICAgcmV0dXJuIHBhcnNlUGF0Y2gocGFyYW0pWzBdO1xuICAgIH1cblxuICAgIGlmICghYmFzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNdXN0IHByb3ZpZGUgYSBiYXNlIHJlZmVyZW5jZSBvciBwYXNzIGluIGEgcGF0Y2gnKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0cnVjdHVyZWRQYXRjaCh1bmRlZmluZWQsIHVuZGVmaW5lZCwgYmFzZSwgcGFyYW0pO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtO1xufVxuXG5mdW5jdGlvbiBmaWxlTmFtZUNoYW5nZWQocGF0Y2gpIHtcbiAgcmV0dXJuIHBhdGNoLm5ld0ZpbGVOYW1lICYmIHBhdGNoLm5ld0ZpbGVOYW1lICE9PSBwYXRjaC5vbGRGaWxlTmFtZTtcbn1cblxuZnVuY3Rpb24gc2VsZWN0RmllbGQoaW5kZXgsIG1pbmUsIHRoZWlycykge1xuICBpZiAobWluZSA9PT0gdGhlaXJzKSB7XG4gICAgcmV0dXJuIG1pbmU7XG4gIH0gZWxzZSB7XG4gICAgaW5kZXguY29uZmxpY3QgPSB0cnVlO1xuICAgIHJldHVybiB7bWluZSwgdGhlaXJzfTtcbiAgfVxufVxuXG5mdW5jdGlvbiBodW5rQmVmb3JlKHRlc3QsIGNoZWNrKSB7XG4gIHJldHVybiB0ZXN0Lm9sZFN0YXJ0IDwgY2hlY2sub2xkU3RhcnRcbiAgICAmJiAodGVzdC5vbGRTdGFydCArIHRlc3Qub2xkTGluZXMpIDwgY2hlY2sub2xkU3RhcnQ7XG59XG5cbmZ1bmN0aW9uIGNsb25lSHVuayhodW5rLCBvZmZzZXQpIHtcbiAgcmV0dXJuIHtcbiAgICBvbGRTdGFydDogaHVuay5vbGRTdGFydCwgb2xkTGluZXM6IGh1bmsub2xkTGluZXMsXG4gICAgbmV3U3RhcnQ6IGh1bmsubmV3U3RhcnQgKyBvZmZzZXQsIG5ld0xpbmVzOiBodW5rLm5ld0xpbmVzLFxuICAgIGxpbmVzOiBodW5rLmxpbmVzXG4gIH07XG59XG5cbmZ1bmN0aW9uIG1lcmdlTGluZXMoaHVuaywgbWluZU9mZnNldCwgbWluZUxpbmVzLCB0aGVpck9mZnNldCwgdGhlaXJMaW5lcykge1xuICAvLyBUaGlzIHdpbGwgZ2VuZXJhbGx5IHJlc3VsdCBpbiBhIGNvbmZsaWN0ZWQgaHVuaywgYnV0IHRoZXJlIGFyZSBjYXNlcyB3aGVyZSB0aGUgY29udGV4dFxuICAvLyBpcyB0aGUgb25seSBvdmVybGFwIHdoZXJlIHdlIGNhbiBzdWNjZXNzZnVsbHkgbWVyZ2UgdGhlIGNvbnRlbnQgaGVyZS5cbiAgbGV0IG1pbmUgPSB7b2Zmc2V0OiBtaW5lT2Zmc2V0LCBsaW5lczogbWluZUxpbmVzLCBpbmRleDogMH0sXG4gICAgICB0aGVpciA9IHtvZmZzZXQ6IHRoZWlyT2Zmc2V0LCBsaW5lczogdGhlaXJMaW5lcywgaW5kZXg6IDB9O1xuXG4gIC8vIEhhbmRsZSBhbnkgbGVhZGluZyBjb250ZW50XG4gIGluc2VydExlYWRpbmcoaHVuaywgbWluZSwgdGhlaXIpO1xuICBpbnNlcnRMZWFkaW5nKGh1bmssIHRoZWlyLCBtaW5lKTtcblxuICAvLyBOb3cgaW4gdGhlIG92ZXJsYXAgY29udGVudC4gU2NhbiB0aHJvdWdoIGFuZCBzZWxlY3QgdGhlIGJlc3QgY2hhbmdlcyBmcm9tIGVhY2guXG4gIHdoaWxlIChtaW5lLmluZGV4IDwgbWluZS5saW5lcy5sZW5ndGggJiYgdGhlaXIuaW5kZXggPCB0aGVpci5saW5lcy5sZW5ndGgpIHtcbiAgICBsZXQgbWluZUN1cnJlbnQgPSBtaW5lLmxpbmVzW21pbmUuaW5kZXhdLFxuICAgICAgICB0aGVpckN1cnJlbnQgPSB0aGVpci5saW5lc1t0aGVpci5pbmRleF07XG5cbiAgICBpZiAoKG1pbmVDdXJyZW50WzBdID09PSAnLScgfHwgbWluZUN1cnJlbnRbMF0gPT09ICcrJylcbiAgICAgICAgJiYgKHRoZWlyQ3VycmVudFswXSA9PT0gJy0nIHx8IHRoZWlyQ3VycmVudFswXSA9PT0gJysnKSkge1xuICAgICAgLy8gQm90aCBtb2RpZmllZCAuLi5cbiAgICAgIG11dHVhbENoYW5nZShodW5rLCBtaW5lLCB0aGVpcik7XG4gICAgfSBlbHNlIGlmIChtaW5lQ3VycmVudFswXSA9PT0gJysnICYmIHRoZWlyQ3VycmVudFswXSA9PT0gJyAnKSB7XG4gICAgICAvLyBNaW5lIGluc2VydGVkXG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIGNvbGxlY3RDaGFuZ2UobWluZSkpO1xuICAgIH0gZWxzZSBpZiAodGhlaXJDdXJyZW50WzBdID09PSAnKycgJiYgbWluZUN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gVGhlaXJzIGluc2VydGVkXG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIGNvbGxlY3RDaGFuZ2UodGhlaXIpKTtcbiAgICB9IGVsc2UgaWYgKG1pbmVDdXJyZW50WzBdID09PSAnLScgJiYgdGhlaXJDdXJyZW50WzBdID09PSAnICcpIHtcbiAgICAgIC8vIE1pbmUgcmVtb3ZlZCBvciBlZGl0ZWRcbiAgICAgIHJlbW92YWwoaHVuaywgbWluZSwgdGhlaXIpO1xuICAgIH0gZWxzZSBpZiAodGhlaXJDdXJyZW50WzBdID09PSAnLScgJiYgbWluZUN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gVGhlaXIgcmVtb3ZlZCBvciBlZGl0ZWRcbiAgICAgIHJlbW92YWwoaHVuaywgdGhlaXIsIG1pbmUsIHRydWUpO1xuICAgIH0gZWxzZSBpZiAobWluZUN1cnJlbnQgPT09IHRoZWlyQ3VycmVudCkge1xuICAgICAgLy8gQ29udGV4dCBpZGVudGl0eVxuICAgICAgaHVuay5saW5lcy5wdXNoKG1pbmVDdXJyZW50KTtcbiAgICAgIG1pbmUuaW5kZXgrKztcbiAgICAgIHRoZWlyLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIENvbnRleHQgbWlzbWF0Y2hcbiAgICAgIGNvbmZsaWN0KGh1bmssIGNvbGxlY3RDaGFuZ2UobWluZSksIGNvbGxlY3RDaGFuZ2UodGhlaXIpKTtcbiAgICB9XG4gIH1cblxuICAvLyBOb3cgcHVzaCBhbnl0aGluZyB0aGF0IG1heSBiZSByZW1haW5pbmdcbiAgaW5zZXJ0VHJhaWxpbmcoaHVuaywgbWluZSk7XG4gIGluc2VydFRyYWlsaW5nKGh1bmssIHRoZWlyKTtcblxuICBjYWxjTGluZUNvdW50KGh1bmspO1xufVxuXG5mdW5jdGlvbiBtdXR1YWxDaGFuZ2UoaHVuaywgbWluZSwgdGhlaXIpIHtcbiAgbGV0IG15Q2hhbmdlcyA9IGNvbGxlY3RDaGFuZ2UobWluZSksXG4gICAgICB0aGVpckNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKHRoZWlyKTtcblxuICBpZiAoYWxsUmVtb3ZlcyhteUNoYW5nZXMpICYmIGFsbFJlbW92ZXModGhlaXJDaGFuZ2VzKSkge1xuICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgcmVtb3ZlIGNoYW5nZXMgdGhhdCBhcmUgc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyXG4gICAgaWYgKGFycmF5U3RhcnRzV2l0aChteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcylcbiAgICAgICAgJiYgc2tpcFJlbW92ZVN1cGVyc2V0KHRoZWlyLCBteUNoYW5nZXMsIG15Q2hhbmdlcy5sZW5ndGggLSB0aGVpckNoYW5nZXMubGVuZ3RoKSkge1xuICAgICAgaHVuay5saW5lcy5wdXNoKC4uLiBteUNoYW5nZXMpO1xuICAgICAgcmV0dXJuO1xuICAgIH0gZWxzZSBpZiAoYXJyYXlTdGFydHNXaXRoKHRoZWlyQ2hhbmdlcywgbXlDaGFuZ2VzKVxuICAgICAgICAmJiBza2lwUmVtb3ZlU3VwZXJzZXQobWluZSwgdGhlaXJDaGFuZ2VzLCB0aGVpckNoYW5nZXMubGVuZ3RoIC0gbXlDaGFuZ2VzLmxlbmd0aCkpIHtcbiAgICAgIGh1bmsubGluZXMucHVzaCguLi4gdGhlaXJDaGFuZ2VzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0gZWxzZSBpZiAoYXJyYXlFcXVhbChteUNoYW5nZXMsIHRoZWlyQ2hhbmdlcykpIHtcbiAgICBodW5rLmxpbmVzLnB1c2goLi4uIG15Q2hhbmdlcyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uZmxpY3QoaHVuaywgbXlDaGFuZ2VzLCB0aGVpckNoYW5nZXMpO1xufVxuXG5mdW5jdGlvbiByZW1vdmFsKGh1bmssIG1pbmUsIHRoZWlyLCBzd2FwKSB7XG4gIGxldCBteUNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKG1pbmUpLFxuICAgICAgdGhlaXJDaGFuZ2VzID0gY29sbGVjdENvbnRleHQodGhlaXIsIG15Q2hhbmdlcyk7XG4gIGlmICh0aGVpckNoYW5nZXMubWVyZ2VkKSB7XG4gICAgaHVuay5saW5lcy5wdXNoKC4uLiB0aGVpckNoYW5nZXMubWVyZ2VkKTtcbiAgfSBlbHNlIHtcbiAgICBjb25mbGljdChodW5rLCBzd2FwID8gdGhlaXJDaGFuZ2VzIDogbXlDaGFuZ2VzLCBzd2FwID8gbXlDaGFuZ2VzIDogdGhlaXJDaGFuZ2VzKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBjb25mbGljdChodW5rLCBtaW5lLCB0aGVpcikge1xuICBodW5rLmNvbmZsaWN0ID0gdHJ1ZTtcbiAgaHVuay5saW5lcy5wdXNoKHtcbiAgICBjb25mbGljdDogdHJ1ZSxcbiAgICBtaW5lOiBtaW5lLFxuICAgIHRoZWlyczogdGhlaXJcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGluc2VydExlYWRpbmcoaHVuaywgaW5zZXJ0LCB0aGVpcikge1xuICB3aGlsZSAoaW5zZXJ0Lm9mZnNldCA8IHRoZWlyLm9mZnNldCAmJiBpbnNlcnQuaW5kZXggPCBpbnNlcnQubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGxpbmUgPSBpbnNlcnQubGluZXNbaW5zZXJ0LmluZGV4KytdO1xuICAgIGh1bmsubGluZXMucHVzaChsaW5lKTtcbiAgICBpbnNlcnQub2Zmc2V0Kys7XG4gIH1cbn1cbmZ1bmN0aW9uIGluc2VydFRyYWlsaW5nKGh1bmssIGluc2VydCkge1xuICB3aGlsZSAoaW5zZXJ0LmluZGV4IDwgaW5zZXJ0LmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gaW5zZXJ0LmxpbmVzW2luc2VydC5pbmRleCsrXTtcbiAgICBodW5rLmxpbmVzLnB1c2gobGluZSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29sbGVjdENoYW5nZShzdGF0ZSkge1xuICBsZXQgcmV0ID0gW10sXG4gICAgICBvcGVyYXRpb24gPSBzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleF1bMF07XG4gIHdoaWxlIChzdGF0ZS5pbmRleCA8IHN0YXRlLmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gc3RhdGUubGluZXNbc3RhdGUuaW5kZXhdO1xuXG4gICAgLy8gR3JvdXAgYWRkaXRpb25zIHRoYXQgYXJlIGltbWVkaWF0ZWx5IGFmdGVyIHN1YnRyYWN0aW9ucyBhbmQgdHJlYXQgdGhlbSBhcyBvbmUgXCJhdG9taWNcIiBtb2RpZnkgY2hhbmdlLlxuICAgIGlmIChvcGVyYXRpb24gPT09ICctJyAmJiBsaW5lWzBdID09PSAnKycpIHtcbiAgICAgIG9wZXJhdGlvbiA9ICcrJztcbiAgICB9XG5cbiAgICBpZiAob3BlcmF0aW9uID09PSBsaW5lWzBdKSB7XG4gICAgICByZXQucHVzaChsaW5lKTtcbiAgICAgIHN0YXRlLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5mdW5jdGlvbiBjb2xsZWN0Q29udGV4dChzdGF0ZSwgbWF0Y2hDaGFuZ2VzKSB7XG4gIGxldCBjaGFuZ2VzID0gW10sXG4gICAgICBtZXJnZWQgPSBbXSxcbiAgICAgIG1hdGNoSW5kZXggPSAwLFxuICAgICAgY29udGV4dENoYW5nZXMgPSBmYWxzZSxcbiAgICAgIGNvbmZsaWN0ZWQgPSBmYWxzZTtcbiAgd2hpbGUgKG1hdGNoSW5kZXggPCBtYXRjaENoYW5nZXMubGVuZ3RoXG4gICAgICAgICYmIHN0YXRlLmluZGV4IDwgc3RhdGUubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IGNoYW5nZSA9IHN0YXRlLmxpbmVzW3N0YXRlLmluZGV4XSxcbiAgICAgICAgbWF0Y2ggPSBtYXRjaENoYW5nZXNbbWF0Y2hJbmRleF07XG5cbiAgICAvLyBPbmNlIHdlJ3ZlIGhpdCBvdXIgYWRkLCB0aGVuIHdlIGFyZSBkb25lXG4gICAgaWYgKG1hdGNoWzBdID09PSAnKycpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGNvbnRleHRDaGFuZ2VzID0gY29udGV4dENoYW5nZXMgfHwgY2hhbmdlWzBdICE9PSAnICc7XG5cbiAgICBtZXJnZWQucHVzaChtYXRjaCk7XG4gICAgbWF0Y2hJbmRleCsrO1xuXG4gICAgLy8gQ29uc3VtZSBhbnkgYWRkaXRpb25zIGluIHRoZSBvdGhlciBibG9jayBhcyBhIGNvbmZsaWN0IHRvIGF0dGVtcHRcbiAgICAvLyB0byBwdWxsIGluIHRoZSByZW1haW5pbmcgY29udGV4dCBhZnRlciB0aGlzXG4gICAgaWYgKGNoYW5nZVswXSA9PT0gJysnKSB7XG4gICAgICBjb25mbGljdGVkID0gdHJ1ZTtcblxuICAgICAgd2hpbGUgKGNoYW5nZVswXSA9PT0gJysnKSB7XG4gICAgICAgIGNoYW5nZXMucHVzaChjaGFuZ2UpO1xuICAgICAgICBjaGFuZ2UgPSBzdGF0ZS5saW5lc1srK3N0YXRlLmluZGV4XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobWF0Y2guc3Vic3RyKDEpID09PSBjaGFuZ2Uuc3Vic3RyKDEpKSB7XG4gICAgICBjaGFuZ2VzLnB1c2goY2hhbmdlKTtcbiAgICAgIHN0YXRlLmluZGV4Kys7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIGlmICgobWF0Y2hDaGFuZ2VzW21hdGNoSW5kZXhdIHx8ICcnKVswXSA9PT0gJysnXG4gICAgICAmJiBjb250ZXh0Q2hhbmdlcykge1xuICAgIGNvbmZsaWN0ZWQgPSB0cnVlO1xuICB9XG5cbiAgaWYgKGNvbmZsaWN0ZWQpIHtcbiAgICByZXR1cm4gY2hhbmdlcztcbiAgfVxuXG4gIHdoaWxlIChtYXRjaEluZGV4IDwgbWF0Y2hDaGFuZ2VzLmxlbmd0aCkge1xuICAgIG1lcmdlZC5wdXNoKG1hdGNoQ2hhbmdlc1ttYXRjaEluZGV4KytdKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgbWVyZ2VkLFxuICAgIGNoYW5nZXNcbiAgfTtcbn1cblxuZnVuY3Rpb24gYWxsUmVtb3ZlcyhjaGFuZ2VzKSB7XG4gIHJldHVybiBjaGFuZ2VzLnJlZHVjZShmdW5jdGlvbihwcmV2LCBjaGFuZ2UpIHtcbiAgICByZXR1cm4gcHJldiAmJiBjaGFuZ2VbMF0gPT09ICctJztcbiAgfSwgdHJ1ZSk7XG59XG5mdW5jdGlvbiBza2lwUmVtb3ZlU3VwZXJzZXQoc3RhdGUsIHJlbW92ZUNoYW5nZXMsIGRlbHRhKSB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGVsdGE7IGkrKykge1xuICAgIGxldCBjaGFuZ2VDb250ZW50ID0gcmVtb3ZlQ2hhbmdlc1tyZW1vdmVDaGFuZ2VzLmxlbmd0aCAtIGRlbHRhICsgaV0uc3Vic3RyKDEpO1xuICAgIGlmIChzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleCArIGldICE9PSAnICcgKyBjaGFuZ2VDb250ZW50KSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgc3RhdGUuaW5kZXggKz0gZGVsdGE7XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmVzKSB7XG4gIGxldCBvbGRMaW5lcyA9IDA7XG4gIGxldCBuZXdMaW5lcyA9IDA7XG5cbiAgbGluZXMuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7XG4gICAgaWYgKHR5cGVvZiBsaW5lICE9PSAnc3RyaW5nJykge1xuICAgICAgbGV0IG15Q291bnQgPSBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmUubWluZSk7XG4gICAgICBsZXQgdGhlaXJDb3VudCA9IGNhbGNPbGROZXdMaW5lQ291bnQobGluZS50aGVpcnMpO1xuXG4gICAgICBpZiAob2xkTGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAobXlDb3VudC5vbGRMaW5lcyA9PT0gdGhlaXJDb3VudC5vbGRMaW5lcykge1xuICAgICAgICAgIG9sZExpbmVzICs9IG15Q291bnQub2xkTGluZXM7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgb2xkTGluZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKG5ld0xpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKG15Q291bnQubmV3TGluZXMgPT09IHRoZWlyQ291bnQubmV3TGluZXMpIHtcbiAgICAgICAgICBuZXdMaW5lcyArPSBteUNvdW50Lm5ld0xpbmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld0xpbmVzID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChuZXdMaW5lcyAhPT0gdW5kZWZpbmVkICYmIChsaW5lWzBdID09PSAnKycgfHwgbGluZVswXSA9PT0gJyAnKSkge1xuICAgICAgICBuZXdMaW5lcysrO1xuICAgICAgfVxuICAgICAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQgJiYgKGxpbmVbMF0gPT09ICctJyB8fCBsaW5lWzBdID09PSAnICcpKSB7XG4gICAgICAgIG9sZExpbmVzKys7XG4gICAgICB9XG4gICAgfVxuICB9KTtcblxuICByZXR1cm4ge29sZExpbmVzLCBuZXdMaW5lc307XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.parsePatch = parsePatch;\n\n/*istanbul ignore end*/\nfunction parsePatch(uniDiff) {\n /*istanbul ignore start*/\n var\n /*istanbul ignore end*/\n options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var diffstr = uniDiff.split(/\\r\\n|[\\n\\v\\f\\r\\x85]/),\n delimiters = uniDiff.match(/\\r\\n|[\\n\\v\\f\\r\\x85]/g) || [],\n list = [],\n i = 0;\n\n function parseIndex() {\n var index = {};\n list.push(index); // Parse diff metadata\n\n while (i < diffstr.length) {\n var line = diffstr[i]; // File header found, end parsing diff metadata\n\n if (/^(\\-\\-\\-|\\+\\+\\+|@@)\\s/.test(line)) {\n break;\n } // Diff index\n\n\n var header = /^(?:Index:|diff(?: -r \\w+)+)\\s+(.+?)\\s*$/.exec(line);\n\n if (header) {\n index.index = header[1];\n }\n\n i++;\n } // Parse file headers if they are defined. Unified diff requires them, but\n // there's no technical issues to have an isolated hunk without file header\n\n\n parseFileHeader(index);\n parseFileHeader(index); // Parse hunks\n\n index.hunks = [];\n\n while (i < diffstr.length) {\n var _line = diffstr[i];\n\n if (/^(Index:|diff|\\-\\-\\-|\\+\\+\\+)\\s/.test(_line)) {\n break;\n } else if (/^@@/.test(_line)) {\n index.hunks.push(parseHunk());\n } else if (_line && options.strict) {\n // Ignore unexpected content unless in strict mode\n throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));\n } else {\n i++;\n }\n }\n } // Parses the --- and +++ headers, if none are found, no lines\n // are consumed.\n\n\n function parseFileHeader(index) {\n var fileHeader = /^(---|\\+\\+\\+)\\s+(.*)$/.exec(diffstr[i]);\n\n if (fileHeader) {\n var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';\n var data = fileHeader[2].split('\\t', 2);\n var fileName = data[0].replace(/\\\\\\\\/g, '\\\\');\n\n if (/^\".*\"$/.test(fileName)) {\n fileName = fileName.substr(1, fileName.length - 2);\n }\n\n index[keyPrefix + 'FileName'] = fileName;\n index[keyPrefix + 'Header'] = (data[1] || '').trim();\n i++;\n }\n } // Parses a hunk\n // This assumes that we are at the start of a hunk.\n\n\n function parseHunk() {\n var chunkHeaderIndex = i,\n chunkHeaderLine = diffstr[i++],\n chunkHeader = chunkHeaderLine.split(/@@ -(\\d+)(?:,(\\d+))? \\+(\\d+)(?:,(\\d+))? @@/);\n var hunk = {\n oldStart: +chunkHeader[1],\n oldLines: typeof chunkHeader[2] === 'undefined' ? 1 : +chunkHeader[2],\n newStart: +chunkHeader[3],\n newLines: typeof chunkHeader[4] === 'undefined' ? 1 : +chunkHeader[4],\n lines: [],\n linedelimiters: []\n }; // Unified Diff Format quirk: If the chunk size is 0,\n // the first number is one lower than one would expect.\n // https://www.artima.com/weblogs/viewpost.jsp?thread=164293\n\n if (hunk.oldLines === 0) {\n hunk.oldStart += 1;\n }\n\n if (hunk.newLines === 0) {\n hunk.newStart += 1;\n }\n\n var addCount = 0,\n removeCount = 0;\n\n for (; i < diffstr.length; i++) {\n // Lines starting with '---' could be mistaken for the \"remove line\" operation\n // But they could be the header for the next file. Therefore prune such cases out.\n if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) {\n break;\n }\n\n var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0];\n\n if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\\\') {\n hunk.lines.push(diffstr[i]);\n hunk.linedelimiters.push(delimiters[i] || '\\n');\n\n if (operation === '+') {\n addCount++;\n } else if (operation === '-') {\n removeCount++;\n } else if (operation === ' ') {\n addCount++;\n removeCount++;\n }\n } else {\n break;\n }\n } // Handle the empty block count case\n\n\n if (!addCount && hunk.newLines === 1) {\n hunk.newLines = 0;\n }\n\n if (!removeCount && hunk.oldLines === 1) {\n hunk.oldLines = 0;\n } // Perform optional sanity checking\n\n\n if (options.strict) {\n if (addCount !== hunk.newLines) {\n throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n }\n\n if (removeCount !== hunk.oldLines) {\n throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));\n }\n }\n\n return hunk;\n }\n\n while (i < diffstr.length) {\n parseIndex();\n }\n\n return list;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9wYXJzZS5qcyJdLCJuYW1lcyI6WyJwYXJzZVBhdGNoIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJkaWZmc3RyIiwic3BsaXQiLCJkZWxpbWl0ZXJzIiwibWF0Y2giLCJsaXN0IiwiaSIsInBhcnNlSW5kZXgiLCJpbmRleCIsInB1c2giLCJsZW5ndGgiLCJsaW5lIiwidGVzdCIsImhlYWRlciIsImV4ZWMiLCJwYXJzZUZpbGVIZWFkZXIiLCJodW5rcyIsInBhcnNlSHVuayIsInN0cmljdCIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImZpbGVIZWFkZXIiLCJrZXlQcmVmaXgiLCJkYXRhIiwiZmlsZU5hbWUiLCJyZXBsYWNlIiwic3Vic3RyIiwidHJpbSIsImNodW5rSGVhZGVySW5kZXgiLCJjaHVua0hlYWRlckxpbmUiLCJjaHVua0hlYWRlciIsImh1bmsiLCJvbGRTdGFydCIsIm9sZExpbmVzIiwibmV3U3RhcnQiLCJuZXdMaW5lcyIsImxpbmVzIiwibGluZWRlbGltaXRlcnMiLCJhZGRDb3VudCIsInJlbW92ZUNvdW50IiwiaW5kZXhPZiIsIm9wZXJhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsVUFBVCxDQUFvQkMsT0FBcEIsRUFBMkM7QUFBQTtBQUFBO0FBQUE7QUFBZEMsRUFBQUEsT0FBYyx1RUFBSixFQUFJO0FBQ2hELE1BQUlDLE9BQU8sR0FBR0YsT0FBTyxDQUFDRyxLQUFSLENBQWMscUJBQWQsQ0FBZDtBQUFBLE1BQ0lDLFVBQVUsR0FBR0osT0FBTyxDQUFDSyxLQUFSLENBQWMsc0JBQWQsS0FBeUMsRUFEMUQ7QUFBQSxNQUVJQyxJQUFJLEdBQUcsRUFGWDtBQUFBLE1BR0lDLENBQUMsR0FBRyxDQUhSOztBQUtBLFdBQVNDLFVBQVQsR0FBc0I7QUFDcEIsUUFBSUMsS0FBSyxHQUFHLEVBQVo7QUFDQUgsSUFBQUEsSUFBSSxDQUFDSSxJQUFMLENBQVVELEtBQVYsRUFGb0IsQ0FJcEI7O0FB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QUwsS0FBa0IsQ0FBbkMsRUFBc0M7QUFDcENKLE1BQUFBLElBQUksQ0FBQ0ksUUFBTCxHQUFnQixDQUFoQjtBQUNEOztBQUNELFFBQUksQ0FBQ0ksV0FBRCxJQUFnQlIsSUFBSSxDQUFDRSxRQUFMLEtBQWtCLENBQXRDLEVBQXlDO0FBQ3ZDRixNQUFBQSxJQUFJLENBQUNFLFFBQUwsR0FBZ0IsQ0FBaEI7QUFDRCxLQTVEa0IsQ0E4RG5COzs7QUFDQSxRQUFJbEMsT0FBTyxDQUFDa0IsTUFBWixFQUFvQjtBQUNsQixVQUFJcUIsUUFBUSxLQUFLUCxJQUFJLENBQUNJLFFBQXRCLEVBQWdDO0FBQzlCLGNBQU0sSUFBSWpCLEtBQUosQ0FBVSxzREFBc0RVLGdCQUFnQixHQUFHLENBQXpFLENBQVYsQ0FBTjtBQUNEOztBQUNELFVBQUlXLFdBQVcsS0FBS1IsSUFBSSxDQUFDRSxRQUF6QixFQUFtQztBQUNqQyxjQUFNLElBQUlmLEtBQUosQ0FBVSx3REFBd0RVLGdCQUFnQixHQUFHLENBQTNFLENBQVYsQ0FBTjtBQUNEO0FBQ0Y7O0FBRUQsV0FBT0csSUFBUDtBQUNEOztBQUVELFNBQU8xQixDQUFDLEdBQUdMLE9BQU8sQ0FBQ1MsTUFBbkIsRUFBMkI7QUFDekJILElBQUFBLFVBQVU7QUFDWDs7QUFFRCxTQUFPRixJQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcGFyc2VQYXRjaCh1bmlEaWZmLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IGRpZmZzdHIgPSB1bmlEaWZmLnNwbGl0KC9cXHJcXG58W1xcblxcdlxcZlxcclxceDg1XS8pLFxuICAgICAgZGVsaW1pdGVycyA9IHVuaURpZmYubWF0Y2goL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdL2cpIHx8IFtdLFxuICAgICAgbGlzdCA9IFtdLFxuICAgICAgaSA9IDA7XG5cbiAgZnVuY3Rpb24gcGFyc2VJbmRleCgpIHtcbiAgICBsZXQgaW5kZXggPSB7fTtcbiAgICBsaXN0LnB1c2goaW5kZXgpO1xuXG4gICAgLy8gUGFyc2UgZGlmZiBtZXRhZGF0YVxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgLy8gRmlsZSBoZWFkZXIgZm91bmQsIGVuZCBwYXJzaW5nIGRpZmYgbWV0YWRhdGFcbiAgICAgIGlmICgoL14oXFwtXFwtXFwtfFxcK1xcK1xcK3xAQClcXHMvKS50ZXN0KGxpbmUpKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuXG4gICAgICAvLyBEaWZmIGluZGV4XG4gICAgICBsZXQgaGVhZGVyID0gKC9eKD86SW5kZXg6fGRpZmYoPzogLXIgXFx3KykrKVxccysoLis/KVxccyokLykuZXhlYyhsaW5lKTtcbiAgICAgIGlmIChoZWFkZXIpIHtcbiAgICAgICAgaW5kZXguaW5kZXggPSBoZWFkZXJbMV07XG4gICAgICB9XG5cbiAgICAgIGkrKztcbiAgICB9XG5cbiAgICAvLyBQYXJzZSBmaWxlIGhlYWRlcnMgaWYgdGhleSBhcmUgZGVmaW5lZC4gVW5pZmllZCBkaWZmIHJlcXVpcmVzIHRoZW0sIGJ1dFxuICAgIC8vIHRoZXJlJ3Mgbm8gdGVjaG5pY2FsIGlzc3VlcyB0byBoYXZlIGFuIGlzb2xhdGVkIGh1bmsgd2l0aG91dCBmaWxlIGhlYWRlclxuICAgIHBhcnNlRmlsZUhlYWRlcihpbmRleCk7XG4gICAgcGFyc2VGaWxlSGVhZGVyKGluZGV4KTtcblxuICAgIC8vIFBhcnNlIGh1bmtzXG4gICAgaW5kZXguaHVua3MgPSBbXTtcblxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgaWYgKCgvXihJbmRleDp8ZGlmZnxcXC1cXC1cXC18XFwrXFwrXFwrKVxccy8pLnRlc3QobGluZSkpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2UgaWYgKCgvXkBALykudGVzdChsaW5lKSkge1xuICAgICAgICBpbmRleC5odW5rcy5wdXNoKHBhcnNlSHVuaygpKTtcbiAgICAgIH0gZWxzZSBpZiAobGluZSAmJiBvcHRpb25zLnN0cmljdCkge1xuICAgICAgICAvLyBJZ25vcmUgdW5leHBlY3RlZCBjb250ZW50IHVubGVzcyBpbiBzdHJpY3QgbW9kZVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbGluZSAnICsgKGkgKyAxKSArICcgJyArIEpTT04uc3RyaW5naWZ5KGxpbmUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGkrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQYXJzZXMgdGhlIC0tLSBhbmQgKysrIGhlYWRlcnMsIGlmIG5vbmUgYXJlIGZvdW5kLCBubyBsaW5lc1xuICAvLyBhcmUgY29uc3VtZWQuXG4gIGZ1bmN0aW9uIHBhcnNlRmlsZUhlYWRlcihpbmRleCkge1xuICAgIGNvbnN0IGZpbGVIZWFkZXIgPSAoL14oLS0tfFxcK1xcK1xcKylcXHMrKC4qKSQvKS5leGVjKGRpZmZzdHJbaV0pO1xuICAgIGlmIChmaWxlSGVhZGVyKSB7XG4gICAgICBsZXQga2V5UHJlZml4ID0gZmlsZUhlYWRlclsxXSA9PT0gJy0tLScgPyAnb2xkJyA6ICduZXcnO1xuICAgICAgY29uc3QgZGF0YSA9IGZpbGVIZWFkZXJbMl0uc3BsaXQoJ1xcdCcsIDIpO1xuICAgICAgbGV0IGZpbGVOYW1lID0gZGF0YVswXS5yZXBsYWNlKC9cXFxcXFxcXC9nLCAnXFxcXCcpO1xuICAgICAgaWYgKCgvXlwiLipcIiQvKS50ZXN0KGZpbGVOYW1lKSkge1xuICAgICAgICBmaWxlTmFtZSA9IGZpbGVOYW1lLnN1YnN0cigxLCBmaWxlTmFtZS5sZW5ndGggLSAyKTtcbiAgICAgIH1cbiAgICAgIGluZGV4W2tleVByZWZpeCArICdGaWxlTmFtZSddID0gZmlsZU5hbWU7XG4gICAgICBpbmRleFtrZXlQcmVmaXggKyAnSGVhZGVyJ10gPSAoZGF0YVsxXSB8fCAnJykudHJpbSgpO1xuXG4gICAgICBpKys7XG4gICAgfVxuICB9XG5cbiAgLy8gUGFyc2VzIGEgaHVua1xuICAvLyBUaGlzIGFzc3VtZXMgdGhhdCB3ZSBhcmUgYXQgdGhlIHN0YXJ0IG9mIGEgaHVuay5cbiAgZnVuY3Rpb24gcGFyc2VIdW5rKCkge1xuICAgIGxldCBjaHVua0hlYWRlckluZGV4ID0gaSxcbiAgICAgICAgY2h1bmtIZWFkZXJMaW5lID0gZGlmZnN0cltpKytdLFxuICAgICAgICBjaHVua0hlYWRlciA9IGNodW5rSGVhZGVyTGluZS5zcGxpdCgvQEAgLShcXGQrKSg/OiwoXFxkKykpPyBcXCsoXFxkKykoPzosKFxcZCspKT8gQEAvKTtcblxuICAgIGxldCBodW5rID0ge1xuICAgICAgb2xkU3RhcnQ6ICtjaHVua0hlYWRlclsxXSxcbiAgICAgIG9sZExpbmVzOiB0eXBlb2YgY2h1bmtIZWFkZXJbMl0gPT09ICd1bmRlZmluZWQnID8gMSA6ICtjaHVua0hlYWRlclsyXSxcbiAgICAgIG5ld1N0YXJ0OiArY2h1bmtIZWFkZXJbM10sXG4gICAgICBuZXdMaW5lczogdHlwZW9mIGNodW5rSGVhZGVyWzRdID09PSAndW5kZWZpbmVkJyA/IDEgOiArY2h1bmtIZWFkZXJbNF0sXG4gICAgICBsaW5lczogW10sXG4gICAgICBsaW5lZGVsaW1pdGVyczogW11cbiAgICB9O1xuXG4gICAgLy8gVW5pZmllZCBEaWZmIEZvcm1hdCBxdWlyazogSWYgdGhlIGNodW5rIHNpemUgaXMgMCxcbiAgICAvLyB0aGUgZmlyc3QgbnVtYmVyIGlzIG9uZSBsb3dlciB0aGFuIG9uZSB3b3VsZCBleHBlY3QuXG4gICAgLy8gaHR0cHM6Ly93d3cuYXJ0aW1hLmNvbS93ZWJsb2dzL3ZpZXdwb3N0LmpzcD90aHJlYWQ9MTY0MjkzXG4gICAgaWYgKGh1bmsub2xkTGluZXMgPT09IDApIHtcbiAgICAgIGh1bmsub2xkU3RhcnQgKz0gMTtcbiAgICB9XG4gICAgaWYgKGh1bmsubmV3TGluZXMgPT09IDApIHtcbiAgICAgIGh1bmsubmV3U3RhcnQgKz0gMTtcbiAgICB9XG5cbiAgICBsZXQgYWRkQ291bnQgPSAwLFxuICAgICAgICByZW1vdmVDb3VudCA9IDA7XG4gICAgZm9yICg7IGkgPCBkaWZmc3RyLmxlbmd0aDsgaSsrKSB7XG4gICAgICAvLyBMaW5lcyBzdGFydGluZyB3aXRoICctLS0nIGNvdWxkIGJlIG1pc3Rha2VuIGZvciB0aGUgXCJyZW1vdmUgbGluZVwiIG9wZXJhdGlvblxuICAgICAgLy8gQnV0IHRoZXkgY291bGQgYmUgdGhlIGhlYWRlciBmb3IgdGhlIG5leHQgZmlsZS4gVGhlcmVmb3JlIHBydW5lIHN1Y2ggY2FzZXMgb3V0LlxuICAgICAgaWYgKGRpZmZzdHJbaV0uaW5kZXhPZignLS0tICcpID09PSAwXG4gICAgICAgICAgICAmJiAoaSArIDIgPCBkaWZmc3RyLmxlbmd0aClcbiAgICAgICAgICAgICYmIGRpZmZzdHJbaSArIDFdLmluZGV4T2YoJysrKyAnKSA9PT0gMFxuICAgICAgICAgICAgJiYgZGlmZnN0cltpICsgMl0uaW5kZXhPZignQEAnKSA9PT0gMCkge1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgbGV0IG9wZXJhdGlvbiA9IChkaWZmc3RyW2ldLmxlbmd0aCA9PSAwICYmIGkgIT0gKGRpZmZzdHIubGVuZ3RoIC0gMSkpID8gJyAnIDogZGlmZnN0cltpXVswXTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJysnIHx8IG9wZXJhdGlvbiA9PT0gJy0nIHx8IG9wZXJhdGlvbiA9PT0gJyAnIHx8IG9wZXJhdGlvbiA9PT0gJ1xcXFwnKSB7XG4gICAgICAgIGh1bmsubGluZXMucHVzaChkaWZmc3RyW2ldKTtcbiAgICAgICAgaHVuay5saW5lZGVsaW1pdGVycy5wdXNoKGRlbGltaXRlcnNbaV0gfHwgJ1xcbicpO1xuXG4gICAgICAgIGlmIChvcGVyYXRpb24gPT09ICcrJykge1xuICAgICAgICAgIGFkZENvdW50Kys7XG4gICAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgICByZW1vdmVDb3VudCsrO1xuICAgICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgICAgYWRkQ291bnQrKztcbiAgICAgICAgICByZW1vdmVDb3VudCsrO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBIYW5kbGUgdGhlIGVtcHR5IGJsb2NrIGNvdW50IGNhc2VcbiAgICBpZiAoIWFkZENvdW50ICYmIGh1bmsubmV3TGluZXMgPT09IDEpIHtcbiAgICAgIGh1bmsubmV3TGluZXMgPSAwO1xuICAgIH1cbiAgICBpZiAoIXJlbW92ZUNvdW50ICYmIGh1bmsub2xkTGluZXMgPT09IDEpIHtcbiAgICAgIGh1bmsub2xkTGluZXMgPSAwO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm0gb3B0aW9uYWwgc2FuaXR5IGNoZWNraW5nXG4gICAgaWYgKG9wdGlvbnMuc3RyaWN0KSB7XG4gICAgICBpZiAoYWRkQ291bnQgIT09IGh1bmsubmV3TGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBZGRlZCBsaW5lIGNvdW50IGRpZCBub3QgbWF0Y2ggZm9yIGh1bmsgYXQgbGluZSAnICsgKGNodW5rSGVhZGVySW5kZXggKyAxKSk7XG4gICAgICB9XG4gICAgICBpZiAocmVtb3ZlQ291bnQgIT09IGh1bmsub2xkTGluZXMpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdSZW1vdmVkIGxpbmUgY291bnQgZGlkIG5vdCBtYXRjaCBmb3IgaHVuayBhdCBsaW5lICcgKyAoY2h1bmtIZWFkZXJJbmRleCArIDEpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gaHVuaztcbiAgfVxuXG4gIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICBwYXJzZUluZGV4KCk7XG4gIH1cblxuICByZXR1cm4gbGlzdDtcbn1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.reversePatch = reversePatch;\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\n/*istanbul ignore end*/\nfunction reversePatch(structuredPatch) {\n if (Array.isArray(structuredPatch)) {\n return structuredPatch.map(reversePatch).reverse();\n }\n\n return (\n /*istanbul ignore start*/\n _objectSpread(_objectSpread({},\n /*istanbul ignore end*/\n structuredPatch), {}, {\n oldFileName: structuredPatch.newFileName,\n oldHeader: structuredPatch.newHeader,\n newFileName: structuredPatch.oldFileName,\n newHeader: structuredPatch.oldHeader,\n hunks: structuredPatch.hunks.map(function (hunk) {\n return {\n oldLines: hunk.newLines,\n oldStart: hunk.newStart,\n newLines: hunk.oldLines,\n newStart: hunk.oldStart,\n linedelimiters: hunk.linedelimiters,\n lines: hunk.lines.map(function (l) {\n if (l.startsWith('-')) {\n return (\n /*istanbul ignore start*/\n \"+\".concat(\n /*istanbul ignore end*/\n l.slice(1))\n );\n }\n\n if (l.startsWith('+')) {\n return (\n /*istanbul ignore start*/\n \"-\".concat(\n /*istanbul ignore end*/\n l.slice(1))\n );\n }\n\n return l;\n })\n };\n })\n })\n );\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9yZXZlcnNlLmpzIl0sIm5hbWVzIjpbInJldmVyc2VQYXRjaCIsInN0cnVjdHVyZWRQYXRjaCIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsInJldmVyc2UiLCJvbGRGaWxlTmFtZSIsIm5ld0ZpbGVOYW1lIiwib2xkSGVhZGVyIiwibmV3SGVhZGVyIiwiaHVua3MiLCJodW5rIiwib2xkTGluZXMiLCJuZXdMaW5lcyIsIm9sZFN0YXJ0IiwibmV3U3RhcnQiLCJsaW5lZGVsaW1pdGVycyIsImxpbmVzIiwibCIsInN0YXJ0c1dpdGgiLCJzbGljZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQU8sU0FBU0EsWUFBVCxDQUFzQkMsZUFBdEIsRUFBdUM7QUFDNUMsTUFBSUMsS0FBSyxDQUFDQyxPQUFOLENBQWNGLGVBQWQsQ0FBSixFQUFvQztBQUNsQyxXQUFPQSxlQUFlLENBQUNHLEdBQWhCLENBQW9CSixZQUFwQixFQUFrQ0ssT0FBbEMsRUFBUDtBQUNEOztBQUVEO0FBQUE7QUFBQTtBQUFBO0FBQ0tKLElBQUFBLGVBREw7QUFFRUssTUFBQUEsV0FBVyxFQUFFTCxlQUFlLENBQUNNLFdBRi9CO0FBR0VDLE1BQUFBLFNBQVMsRUFBRVAsZUFBZSxDQUFDUSxTQUg3QjtBQUlFRixNQUFBQSxXQUFXLEVBQUVOLGVBQWUsQ0FBQ0ssV0FKL0I7QUFLRUcsTUFBQUEsU0FBUyxFQUFFUixlQUFlLENBQUNPLFNBTDdCO0FBTUVFLE1BQUFBLEtBQUssRUFBRVQsZUFBZSxDQUFDUyxLQUFoQixDQUFzQk4sR0FBdEIsQ0FBMEIsVUFBQU8sSUFBSSxFQUFJO0FBQ3ZDLGVBQU87QUFDTEMsVUFBQUEsUUFBUSxFQUFFRCxJQUFJLENBQUNFLFFBRFY7QUFFTEMsVUFBQUEsUUFBUSxFQUFFSCxJQUFJLENBQUNJLFFBRlY7QUFHTEYsVUFBQUEsUUFBUSxFQUFFRixJQUFJLENBQUNDLFFBSFY7QUFJTEcsVUFBQUEsUUFBUSxFQUFFSixJQUFJLENBQUNHLFFBSlY7QUFLTEUsVUFBQUEsY0FBYyxFQUFFTCxJQUFJLENBQUNLLGNBTGhCO0FBTUxDLFVBQUFBLEtBQUssRUFBRU4sSUFBSSxDQUFDTSxLQUFMLENBQVdiLEdBQVgsQ0FBZSxVQUFBYyxDQUFDLEVBQUk7QUFDekIsZ0JBQUlBLENBQUMsQ0FBQ0MsVUFBRixDQUFhLEdBQWIsQ0FBSixFQUF1QjtBQUFFO0FBQUE7QUFBQTtBQUFBO0FBQVdELGdCQUFBQSxDQUFDLENBQUNFLEtBQUYsQ0FBUSxDQUFSLENBQVg7QUFBQTtBQUEwQjs7QUFDbkQsZ0JBQUlGLENBQUMsQ0FBQ0MsVUFBRixDQUFhLEdBQWIsQ0FBSixFQUF1QjtBQUFFO0FBQUE7QUFBQTtBQUFBO0FBQVdELGdCQUFBQSxDQUFDLENBQUNFLEtBQUYsQ0FBUSxDQUFSLENBQVg7QUFBQTtBQUEwQjs7QUFDbkQsbUJBQU9GLENBQVA7QUFDRCxXQUpNO0FBTkYsU0FBUDtBQVlELE9BYk07QUFOVDtBQUFBO0FBcUJEIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHJldmVyc2VQYXRjaChzdHJ1Y3R1cmVkUGF0Y2gpIHtcbiAgaWYgKEFycmF5LmlzQXJyYXkoc3RydWN0dXJlZFBhdGNoKSkge1xuICAgIHJldHVybiBzdHJ1Y3R1cmVkUGF0Y2gubWFwKHJldmVyc2VQYXRjaCkucmV2ZXJzZSgpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5zdHJ1Y3R1cmVkUGF0Y2gsXG4gICAgb2xkRmlsZU5hbWU6IHN0cnVjdHVyZWRQYXRjaC5uZXdGaWxlTmFtZSxcbiAgICBvbGRIZWFkZXI6IHN0cnVjdHVyZWRQYXRjaC5uZXdIZWFkZXIsXG4gICAgbmV3RmlsZU5hbWU6IHN0cnVjdHVyZWRQYXRjaC5vbGRGaWxlTmFtZSxcbiAgICBuZXdIZWFkZXI6IHN0cnVjdHVyZWRQYXRjaC5vbGRIZWFkZXIsXG4gICAgaHVua3M6IHN0cnVjdHVyZWRQYXRjaC5odW5rcy5tYXAoaHVuayA9PiB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBvbGRMaW5lczogaHVuay5uZXdMaW5lcyxcbiAgICAgICAgb2xkU3RhcnQ6IGh1bmsubmV3U3RhcnQsXG4gICAgICAgIG5ld0xpbmVzOiBodW5rLm9sZExpbmVzLFxuICAgICAgICBuZXdTdGFydDogaHVuay5vbGRTdGFydCxcbiAgICAgICAgbGluZWRlbGltaXRlcnM6IGh1bmsubGluZWRlbGltaXRlcnMsXG4gICAgICAgIGxpbmVzOiBodW5rLmxpbmVzLm1hcChsID0+IHtcbiAgICAgICAgICBpZiAobC5zdGFydHNXaXRoKCctJykpIHsgcmV0dXJuIGArJHtsLnNsaWNlKDEpfWA7IH1cbiAgICAgICAgICBpZiAobC5zdGFydHNXaXRoKCcrJykpIHsgcmV0dXJuIGAtJHtsLnNsaWNlKDEpfWA7IH1cbiAgICAgICAgICByZXR1cm4gbDtcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfSlcbiAgfTtcbn1cbiJdfQ==\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.arrayEqual = arrayEqual;\nexports.arrayStartsWith = arrayStartsWith;\n\n/*istanbul ignore end*/\nfunction arrayEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n }\n\n return arrayStartsWith(a, b);\n}\n\nfunction arrayStartsWith(array, start) {\n if (start.length > array.length) {\n return false;\n }\n\n for (var i = 0; i < start.length; i++) {\n if (start[i] !== array[i]) {\n return false;\n }\n }\n\n return true;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2FycmF5LmpzIl0sIm5hbWVzIjpbImFycmF5RXF1YWwiLCJhIiwiYiIsImxlbmd0aCIsImFycmF5U3RhcnRzV2l0aCIsImFycmF5Iiwic3RhcnQiLCJpIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQU8sU0FBU0EsVUFBVCxDQUFvQkMsQ0FBcEIsRUFBdUJDLENBQXZCLEVBQTBCO0FBQy9CLE1BQUlELENBQUMsQ0FBQ0UsTUFBRixLQUFhRCxDQUFDLENBQUNDLE1BQW5CLEVBQTJCO0FBQ3pCLFdBQU8sS0FBUDtBQUNEOztBQUVELFNBQU9DLGVBQWUsQ0FBQ0gsQ0FBRCxFQUFJQyxDQUFKLENBQXRCO0FBQ0Q7O0FBRU0sU0FBU0UsZUFBVCxDQUF5QkMsS0FBekIsRUFBZ0NDLEtBQWhDLEVBQXVDO0FBQzVDLE1BQUlBLEtBQUssQ0FBQ0gsTUFBTixHQUFlRSxLQUFLLENBQUNGLE1BQXpCLEVBQWlDO0FBQy9CLFdBQU8sS0FBUDtBQUNEOztBQUVELE9BQUssSUFBSUksQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0QsS0FBSyxDQUFDSCxNQUExQixFQUFrQ0ksQ0FBQyxFQUFuQyxFQUF1QztBQUNyQyxRQUFJRCxLQUFLLENBQUNDLENBQUQsQ0FBTCxLQUFhRixLQUFLLENBQUNFLENBQUQsQ0FBdEIsRUFBMkI7QUFDekIsYUFBTyxLQUFQO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPLElBQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBmdW5jdGlvbiBhcnJheUVxdWFsKGEsIGIpIHtcbiAgaWYgKGEubGVuZ3RoICE9PSBiLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiBhcnJheVN0YXJ0c1dpdGgoYSwgYik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcnJheVN0YXJ0c1dpdGgoYXJyYXksIHN0YXJ0KSB7XG4gIGlmIChzdGFydC5sZW5ndGggPiBhcnJheS5sZW5ndGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBmb3IgKGxldCBpID0gMDsgaSA8IHN0YXJ0Lmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0YXJ0W2ldICE9PSBhcnJheVtpXSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuIl19\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = _default;\n\n/*istanbul ignore end*/\n// Iterator that traverses in the range of [min, max], stepping\n// by distance from a given start position. I.e. for [0, 4], with\n// start of 2, this will iterate 2, 3, 1, 4, 0.\nfunction\n/*istanbul ignore start*/\n_default\n/*istanbul ignore end*/\n(start, minLine, maxLine) {\n var wantForward = true,\n backwardExhausted = false,\n forwardExhausted = false,\n localOffset = 1;\n return function iterator() {\n if (wantForward && !forwardExhausted) {\n if (backwardExhausted) {\n localOffset++;\n } else {\n wantForward = false;\n } // Check if trying to fit beyond text length, and if not, check it fits\n // after offset location (or desired location on first iteration)\n\n\n if (start + localOffset <= maxLine) {\n return localOffset;\n }\n\n forwardExhausted = true;\n }\n\n if (!backwardExhausted) {\n if (!forwardExhausted) {\n wantForward = true;\n } // Check if trying to fit before text beginning, and if not, check it fits\n // before offset location\n\n\n if (minLine <= start - localOffset) {\n return -localOffset++;\n }\n\n backwardExhausted = true;\n return iterator();\n } // We tried to fit hunk before text beginning and beyond text length, then\n // hunk can't fit on the text. Return undefined\n\n };\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yLmpzIl0sIm5hbWVzIjpbInN0YXJ0IiwibWluTGluZSIsIm1heExpbmUiLCJ3YW50Rm9yd2FyZCIsImJhY2t3YXJkRXhoYXVzdGVkIiwiZm9yd2FyZEV4aGF1c3RlZCIsImxvY2FsT2Zmc2V0IiwiaXRlcmF0b3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNlO0FBQUE7QUFBQTtBQUFBO0FBQUEsQ0FBU0EsS0FBVCxFQUFnQkMsT0FBaEIsRUFBeUJDLE9BQXpCLEVBQWtDO0FBQy9DLE1BQUlDLFdBQVcsR0FBRyxJQUFsQjtBQUFBLE1BQ0lDLGlCQUFpQixHQUFHLEtBRHhCO0FBQUEsTUFFSUMsZ0JBQWdCLEdBQUcsS0FGdkI7QUFBQSxNQUdJQyxXQUFXLEdBQUcsQ0FIbEI7QUFLQSxTQUFPLFNBQVNDLFFBQVQsR0FBb0I7QUFDekIsUUFBSUosV0FBVyxJQUFJLENBQUNFLGdCQUFwQixFQUFzQztBQUNwQyxVQUFJRCxpQkFBSixFQUF1QjtBQUNyQkUsUUFBQUEsV0FBVztBQUNaLE9BRkQsTUFFTztBQUNMSCxRQUFBQSxXQUFXLEdBQUcsS0FBZDtBQUNELE9BTG1DLENBT3BDO0FBQ0E7OztBQUNBLFVBQUlILEtBQUssR0FBR00sV0FBUixJQUF1QkosT0FBM0IsRUFBb0M7QUFDbEMsZUFBT0ksV0FBUDtBQUNEOztBQUVERCxNQUFBQSxnQkFBZ0IsR0FBRyxJQUFuQjtBQUNEOztBQUVELFFBQUksQ0FBQ0QsaUJBQUwsRUFBd0I7QUFDdEIsVUFBSSxDQUFDQyxnQkFBTCxFQUF1QjtBQUNyQkYsUUFBQUEsV0FBVyxHQUFHLElBQWQ7QUFDRCxPQUhxQixDQUt0QjtBQUNBOzs7QUFDQSxVQUFJRixPQUFPLElBQUlELEtBQUssR0FBR00sV0FBdkIsRUFBb0M7QUFDbEMsZUFBTyxDQUFDQSxXQUFXLEVBQW5CO0FBQ0Q7O0FBRURGLE1BQUFBLGlCQUFpQixHQUFHLElBQXBCO0FBQ0EsYUFBT0csUUFBUSxFQUFmO0FBQ0QsS0E5QndCLENBZ0N6QjtBQUNBOztBQUNELEdBbENEO0FBbUNEIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSXRlcmF0b3IgdGhhdCB0cmF2ZXJzZXMgaW4gdGhlIHJhbmdlIG9mIFttaW4sIG1heF0sIHN0ZXBwaW5nXG4vLyBieSBkaXN0YW5jZSBmcm9tIGEgZ2l2ZW4gc3RhcnQgcG9zaXRpb24uIEkuZS4gZm9yIFswLCA0XSwgd2l0aFxuLy8gc3RhcnQgb2YgMiwgdGhpcyB3aWxsIGl0ZXJhdGUgMiwgMywgMSwgNCwgMC5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHN0YXJ0LCBtaW5MaW5lLCBtYXhMaW5lKSB7XG4gIGxldCB3YW50Rm9yd2FyZCA9IHRydWUsXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgbG9jYWxPZmZzZXQgPSAxO1xuXG4gIHJldHVybiBmdW5jdGlvbiBpdGVyYXRvcigpIHtcbiAgICBpZiAod2FudEZvcndhcmQgJiYgIWZvcndhcmRFeGhhdXN0ZWQpIHtcbiAgICAgIGlmIChiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgICBsb2NhbE9mZnNldCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FudEZvcndhcmQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZXlvbmQgdGV4dCBsZW5ndGgsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGFmdGVyIG9mZnNldCBsb2NhdGlvbiAob3IgZGVzaXJlZCBsb2NhdGlvbiBvbiBmaXJzdCBpdGVyYXRpb24pXG4gICAgICBpZiAoc3RhcnQgKyBsb2NhbE9mZnNldCA8PSBtYXhMaW5lKSB7XG4gICAgICAgIHJldHVybiBsb2NhbE9mZnNldDtcbiAgICAgIH1cblxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgaWYgKCFmb3J3YXJkRXhoYXVzdGVkKSB7XG4gICAgICAgIHdhbnRGb3J3YXJkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZWZvcmUgdGV4dCBiZWdpbm5pbmcsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGJlZm9yZSBvZmZzZXQgbG9jYXRpb25cbiAgICAgIGlmIChtaW5MaW5lIDw9IHN0YXJ0IC0gbG9jYWxPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIC1sb2NhbE9mZnNldCsrO1xuICAgICAgfVxuXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgICByZXR1cm4gaXRlcmF0b3IoKTtcbiAgICB9XG5cbiAgICAvLyBXZSB0cmllZCB0byBmaXQgaHVuayBiZWZvcmUgdGV4dCBiZWdpbm5pbmcgYW5kIGJleW9uZCB0ZXh0IGxlbmd0aCwgdGhlblxuICAgIC8vIGh1bmsgY2FuJ3QgZml0IG9uIHRoZSB0ZXh0LiBSZXR1cm4gdW5kZWZpbmVkXG4gIH07XG59XG4iXX0=\n","/*istanbul ignore start*/\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.generateOptions = generateOptions;\n\n/*istanbul ignore end*/\nfunction generateOptions(options, defaults) {\n if (typeof options === 'function') {\n defaults.callback = options;\n } else if (options) {\n for (var name in options) {\n /* istanbul ignore else */\n if (options.hasOwnProperty(name)) {\n defaults[name] = options[name];\n }\n }\n }\n\n return defaults;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3BhcmFtcy5qcyJdLCJuYW1lcyI6WyJnZW5lcmF0ZU9wdGlvbnMiLCJvcHRpb25zIiwiZGVmYXVsdHMiLCJjYWxsYmFjayIsIm5hbWUiLCJoYXNPd25Qcm9wZXJ0eSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQU8sU0FBU0EsZUFBVCxDQUF5QkMsT0FBekIsRUFBa0NDLFFBQWxDLEVBQTRDO0FBQ2pELE1BQUksT0FBT0QsT0FBUCxLQUFtQixVQUF2QixFQUFtQztBQUNqQ0MsSUFBQUEsUUFBUSxDQUFDQyxRQUFULEdBQW9CRixPQUFwQjtBQUNELEdBRkQsTUFFTyxJQUFJQSxPQUFKLEVBQWE7QUFDbEIsU0FBSyxJQUFJRyxJQUFULElBQWlCSCxPQUFqQixFQUEwQjtBQUN4QjtBQUNBLFVBQUlBLE9BQU8sQ0FBQ0ksY0FBUixDQUF1QkQsSUFBdkIsQ0FBSixFQUFrQztBQUNoQ0YsUUFBQUEsUUFBUSxDQUFDRSxJQUFELENBQVIsR0FBaUJILE9BQU8sQ0FBQ0csSUFBRCxDQUF4QjtBQUNEO0FBQ0Y7QUFDRjs7QUFDRCxTQUFPRixRQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIGRlZmF1bHRzKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRlZmF1bHRzLmNhbGxiYWNrID0gb3B0aW9ucztcbiAgfSBlbHNlIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgbmFtZSBpbiBvcHRpb25zKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9wdGlvbnMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgZGVmYXVsdHNbbmFtZV0gPSBvcHRpb25zW25hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGVmYXVsdHM7XG59XG4iXX0=\n","\"use strict\";\n\nmodule.exports = function () {\n // https://mths.be/emoji\n return /\\uD83C\\uDFF4\\uDB40\\uDC67\\uDB40\\uDC62(?:\\uDB40\\uDC65\\uDB40\\uDC6E\\uDB40\\uDC67|\\uDB40\\uDC73\\uDB40\\uDC63\\uDB40\\uDC74|\\uDB40\\uDC77\\uDB40\\uDC6C\\uDB40\\uDC73)\\uDB40\\uDC7F|\\uD83D\\uDC68(?:\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68\\uD83C\\uDFFB|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFE])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D)?\\uD83D\\uDC68|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D[\\uDC68\\uDC69])\\u200D(?:\\uD83D[\\uDC66\\uDC67])|[\\u2695\\u2696\\u2708]\\uFE0F|\\uD83D[\\uDC66\\uDC67]|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|(?:\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708])\\uFE0F|\\uD83C\\uDFFB\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C[\\uDFFB-\\uDFFF])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFB\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)\\uD83C\\uDFFB|\\uD83E\\uDDD1(?:\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1)|(?:\\uD83E\\uDDD1\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFF\\u200D\\uD83E\\uDD1D\\u200D(?:\\uD83D[\\uDC68\\uDC69]))(?:\\uD83C[\\uDFFB-\\uDFFE])|(?:\\uD83E\\uDDD1\\uD83C\\uDFFC\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB\\uDFFC])|\\uD83D\\uDC69(?:\\uD83C\\uDFFE\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB-\\uDFFD\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFC\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFD-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFB\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFC-\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFD\\u200D(?:\\uD83E\\uDD1D\\u200D\\uD83D\\uDC68(?:\\uD83C[\\uDFFB\\uDFFC\\uDFFE\\uDFFF])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\u200D(?:\\u2764\\uFE0F\\u200D(?:\\uD83D\\uDC8B\\u200D(?:\\uD83D[\\uDC68\\uDC69])|\\uD83D[\\uDC68\\uDC69])|\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD])|\\uD83C\\uDFFF\\u200D(?:\\uD83C[\\uDF3E\\uDF73\\uDF93\\uDFA4\\uDFA8\\uDFEB\\uDFED]|\\uD83D[\\uDCBB\\uDCBC\\uDD27\\uDD2C\\uDE80\\uDE92]|\\uD83E[\\uDDAF-\\uDDB3\\uDDBC\\uDDBD]))|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67]))|(?:\\uD83E\\uDDD1\\uD83C\\uDFFD\\u200D\\uD83E\\uDD1D\\u200D\\uD83E\\uDDD1|\\uD83D\\uDC69\\uD83C\\uDFFE\\u200D\\uD83E\\uDD1D\\u200D\\uD83D\\uDC69)(?:\\uD83C[\\uDFFB-\\uDFFD])|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC69\\u200D(?:\\uD83D[\\uDC66\\uDC67])|(?:\\uD83D\\uDC41\\uFE0F\\u200D\\uD83D\\uDDE8|\\uD83D\\uDC69(?:\\uD83C\\uDFFF\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFE\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFC\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFB\\u200D[\\u2695\\u2696\\u2708]|\\uD83C\\uDFFD\\u200D[\\u2695\\u2696\\u2708]|\\u200D[\\u2695\\u2696\\u2708])|(?:(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)\\uFE0F|\\uD83D\\uDC6F|\\uD83E[\\uDD3C\\uDDDE\\uDDDF])\\u200D[\\u2640\\u2642]|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:(?:\\uD83C[\\uDFFB-\\uDFFF])\\u200D[\\u2640\\u2642]|\\u200D[\\u2640\\u2642])|\\uD83C\\uDFF4\\u200D\\u2620)\\uFE0F|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67\\u200D(?:\\uD83D[\\uDC66\\uDC67])|\\uD83C\\uDFF3\\uFE0F\\u200D\\uD83C\\uDF08|\\uD83D\\uDC15\\u200D\\uD83E\\uDDBA|\\uD83D\\uDC69\\u200D\\uD83D\\uDC66|\\uD83D\\uDC69\\u200D\\uD83D\\uDC67|\\uD83C\\uDDFD\\uD83C\\uDDF0|\\uD83C\\uDDF4\\uD83C\\uDDF2|\\uD83C\\uDDF6\\uD83C\\uDDE6|[#\\*0-9]\\uFE0F\\u20E3|\\uD83C\\uDDE7(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEF\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9\\uDDFB\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDF9(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDED\\uDDEF-\\uDDF4\\uDDF7\\uDDF9\\uDDFB\\uDDFC\\uDDFF])|\\uD83C\\uDDEA(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDED\\uDDF7-\\uDDFA])|\\uD83E\\uDDD1(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF7(?:\\uD83C[\\uDDEA\\uDDF4\\uDDF8\\uDDFA\\uDDFC])|\\uD83D\\uDC69(?:\\uD83C[\\uDFFB-\\uDFFF])|\\uD83C\\uDDF2(?:\\uD83C[\\uDDE6\\uDDE8-\\uDDED\\uDDF0-\\uDDFF])|\\uD83C\\uDDE6(?:\\uD83C[\\uDDE8-\\uDDEC\\uDDEE\\uDDF1\\uDDF2\\uDDF4\\uDDF6-\\uDDFA\\uDDFC\\uDDFD\\uDDFF])|\\uD83C\\uDDF0(?:\\uD83C[\\uDDEA\\uDDEC-\\uDDEE\\uDDF2\\uDDF3\\uDDF5\\uDDF7\\uDDFC\\uDDFE\\uDDFF])|\\uD83C\\uDDED(?:\\uD83C[\\uDDF0\\uDDF2\\uDDF3\\uDDF7\\uDDF9\\uDDFA])|\\uD83C\\uDDE9(?:\\uD83C[\\uDDEA\\uDDEC\\uDDEF\\uDDF0\\uDDF2\\uDDF4\\uDDFF])|\\uD83C\\uDDFE(?:\\uD83C[\\uDDEA\\uDDF9])|\\uD83C\\uDDEC(?:\\uD83C[\\uDDE6\\uDDE7\\uDDE9-\\uDDEE\\uDDF1-\\uDDF3\\uDDF5-\\uDDFA\\uDDFC\\uDDFE])|\\uD83C\\uDDF8(?:\\uD83C[\\uDDE6-\\uDDEA\\uDDEC-\\uDDF4\\uDDF7-\\uDDF9\\uDDFB\\uDDFD-\\uDDFF])|\\uD83C\\uDDEB(?:\\uD83C[\\uDDEE-\\uDDF0\\uDDF2\\uDDF4\\uDDF7])|\\uD83C\\uDDF5(?:\\uD83C[\\uDDE6\\uDDEA-\\uDDED\\uDDF0-\\uDDF3\\uDDF7-\\uDDF9\\uDDFC\\uDDFE])|\\uD83C\\uDDFB(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA\\uDDEC\\uDDEE\\uDDF3\\uDDFA])|\\uD83C\\uDDF3(?:\\uD83C[\\uDDE6\\uDDE8\\uDDEA-\\uDDEC\\uDDEE\\uDDF1\\uDDF4\\uDDF5\\uDDF7\\uDDFA\\uDDFF])|\\uD83C\\uDDE8(?:\\uD83C[\\uDDE6\\uDDE8\\uDDE9\\uDDEB-\\uDDEE\\uDDF0-\\uDDF5\\uDDF7\\uDDFA-\\uDDFF])|\\uD83C\\uDDF1(?:\\uD83C[\\uDDE6-\\uDDE8\\uDDEE\\uDDF0\\uDDF7-\\uDDFB\\uDDFE])|\\uD83C\\uDDFF(?:\\uD83C[\\uDDE6\\uDDF2\\uDDFC])|\\uD83C\\uDDFC(?:\\uD83C[\\uDDEB\\uDDF8])|\\uD83C\\uDDFA(?:\\uD83C[\\uDDE6\\uDDEC\\uDDF2\\uDDF3\\uDDF8\\uDDFE\\uDDFF])|\\uD83C\\uDDEE(?:\\uD83C[\\uDDE8-\\uDDEA\\uDDF1-\\uDDF4\\uDDF6-\\uDDF9])|\\uD83C\\uDDEF(?:\\uD83C[\\uDDEA\\uDDF2\\uDDF4\\uDDF5])|(?:\\uD83C[\\uDFC3\\uDFC4\\uDFCA]|\\uD83D[\\uDC6E\\uDC71\\uDC73\\uDC77\\uDC81\\uDC82\\uDC86\\uDC87\\uDE45-\\uDE47\\uDE4B\\uDE4D\\uDE4E\\uDEA3\\uDEB4-\\uDEB6]|\\uD83E[\\uDD26\\uDD37-\\uDD39\\uDD3D\\uDD3E\\uDDB8\\uDDB9\\uDDCD-\\uDDCF\\uDDD6-\\uDDDD])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:\\u26F9|\\uD83C[\\uDFCB\\uDFCC]|\\uD83D\\uDD75)(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u261D\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2\\uDFC7]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66\\uDC67\\uDC6B-\\uDC6D\\uDC70\\uDC72\\uDC74-\\uDC76\\uDC78\\uDC7C\\uDC83\\uDC85\\uDCAA\\uDD74\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE4C\\uDE4F\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1C\\uDD1E\\uDD1F\\uDD30-\\uDD36\\uDDB5\\uDDB6\\uDDBB\\uDDD2-\\uDDD5])(?:\\uD83C[\\uDFFB-\\uDFFF])|(?:[\\u231A\\u231B\\u23E9-\\u23EC\\u23F0\\u23F3\\u25FD\\u25FE\\u2614\\u2615\\u2648-\\u2653\\u267F\\u2693\\u26A1\\u26AA\\u26AB\\u26BD\\u26BE\\u26C4\\u26C5\\u26CE\\u26D4\\u26EA\\u26F2\\u26F3\\u26F5\\u26FA\\u26FD\\u2705\\u270A\\u270B\\u2728\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2795-\\u2797\\u27B0\\u27BF\\u2B1B\\u2B1C\\u2B50\\u2B55]|\\uD83C[\\uDC04\\uDCCF\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE1A\\uDE2F\\uDE32-\\uDE36\\uDE38-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF20\\uDF2D-\\uDF35\\uDF37-\\uDF7C\\uDF7E-\\uDF93\\uDFA0-\\uDFCA\\uDFCF-\\uDFD3\\uDFE0-\\uDFF0\\uDFF4\\uDFF8-\\uDFFF]|\\uD83D[\\uDC00-\\uDC3E\\uDC40\\uDC42-\\uDCFC\\uDCFF-\\uDD3D\\uDD4B-\\uDD4E\\uDD50-\\uDD67\\uDD7A\\uDD95\\uDD96\\uDDA4\\uDDFB-\\uDE4F\\uDE80-\\uDEC5\\uDECC\\uDED0-\\uDED2\\uDED5\\uDEEB\\uDEEC\\uDEF4-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])|(?:[#\\*0-9\\xA9\\xAE\\u203C\\u2049\\u2122\\u2139\\u2194-\\u2199\\u21A9\\u21AA\\u231A\\u231B\\u2328\\u23CF\\u23E9-\\u23F3\\u23F8-\\u23FA\\u24C2\\u25AA\\u25AB\\u25B6\\u25C0\\u25FB-\\u25FE\\u2600-\\u2604\\u260E\\u2611\\u2614\\u2615\\u2618\\u261D\\u2620\\u2622\\u2623\\u2626\\u262A\\u262E\\u262F\\u2638-\\u263A\\u2640\\u2642\\u2648-\\u2653\\u265F\\u2660\\u2663\\u2665\\u2666\\u2668\\u267B\\u267E\\u267F\\u2692-\\u2697\\u2699\\u269B\\u269C\\u26A0\\u26A1\\u26AA\\u26AB\\u26B0\\u26B1\\u26BD\\u26BE\\u26C4\\u26C5\\u26C8\\u26CE\\u26CF\\u26D1\\u26D3\\u26D4\\u26E9\\u26EA\\u26F0-\\u26F5\\u26F7-\\u26FA\\u26FD\\u2702\\u2705\\u2708-\\u270D\\u270F\\u2712\\u2714\\u2716\\u271D\\u2721\\u2728\\u2733\\u2734\\u2744\\u2747\\u274C\\u274E\\u2753-\\u2755\\u2757\\u2763\\u2764\\u2795-\\u2797\\u27A1\\u27B0\\u27BF\\u2934\\u2935\\u2B05-\\u2B07\\u2B1B\\u2B1C\\u2B50\\u2B55\\u3030\\u303D\\u3297\\u3299]|\\uD83C[\\uDC04\\uDCCF\\uDD70\\uDD71\\uDD7E\\uDD7F\\uDD8E\\uDD91-\\uDD9A\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE1A\\uDE2F\\uDE32-\\uDE3A\\uDE50\\uDE51\\uDF00-\\uDF21\\uDF24-\\uDF93\\uDF96\\uDF97\\uDF99-\\uDF9B\\uDF9E-\\uDFF0\\uDFF3-\\uDFF5\\uDFF7-\\uDFFF]|\\uD83D[\\uDC00-\\uDCFD\\uDCFF-\\uDD3D\\uDD49-\\uDD4E\\uDD50-\\uDD67\\uDD6F\\uDD70\\uDD73-\\uDD7A\\uDD87\\uDD8A-\\uDD8D\\uDD90\\uDD95\\uDD96\\uDDA4\\uDDA5\\uDDA8\\uDDB1\\uDDB2\\uDDBC\\uDDC2-\\uDDC4\\uDDD1-\\uDDD3\\uDDDC-\\uDDDE\\uDDE1\\uDDE3\\uDDE8\\uDDEF\\uDDF3\\uDDFA-\\uDE4F\\uDE80-\\uDEC5\\uDECB-\\uDED2\\uDED5\\uDEE0-\\uDEE5\\uDEE9\\uDEEB\\uDEEC\\uDEF0\\uDEF3-\\uDEFA\\uDFE0-\\uDFEB]|\\uD83E[\\uDD0D-\\uDD3A\\uDD3C-\\uDD45\\uDD47-\\uDD71\\uDD73-\\uDD76\\uDD7A-\\uDDA2\\uDDA5-\\uDDAA\\uDDAE-\\uDDCA\\uDDCD-\\uDDFF\\uDE70-\\uDE73\\uDE78-\\uDE7A\\uDE80-\\uDE82\\uDE90-\\uDE95])\\uFE0F|(?:[\\u261D\\u26F9\\u270A-\\u270D]|\\uD83C[\\uDF85\\uDFC2-\\uDFC4\\uDFC7\\uDFCA-\\uDFCC]|\\uD83D[\\uDC42\\uDC43\\uDC46-\\uDC50\\uDC66-\\uDC78\\uDC7C\\uDC81-\\uDC83\\uDC85-\\uDC87\\uDC8F\\uDC91\\uDCAA\\uDD74\\uDD75\\uDD7A\\uDD90\\uDD95\\uDD96\\uDE45-\\uDE47\\uDE4B-\\uDE4F\\uDEA3\\uDEB4-\\uDEB6\\uDEC0\\uDECC]|\\uD83E[\\uDD0F\\uDD18-\\uDD1F\\uDD26\\uDD30-\\uDD39\\uDD3C-\\uDD3E\\uDDB5\\uDDB6\\uDDB8\\uDDB9\\uDDBB\\uDDCD-\\uDDCF\\uDDD1-\\uDDDD])/g;\n};\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","'use strict';\n\nconst validator = require('./validator');\nconst XMLParser = require('./xmlparser/XMLParser');\nconst XMLBuilder = require('./xmlbuilder/json2xml');\n\nmodule.exports = {\n XMLParser: XMLParser,\n XMLValidator: validator,\n XMLBuilder: XMLBuilder\n}","'use strict';\n\nconst nameStartChar = ':A-Za-z_\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02FF\\\\u0370-\\\\u037D\\\\u037F-\\\\u1FFF\\\\u200C-\\\\u200D\\\\u2070-\\\\u218F\\\\u2C00-\\\\u2FEF\\\\u3001-\\\\uD7FF\\\\uF900-\\\\uFDCF\\\\uFDF0-\\\\uFFFD';\nconst nameChar = nameStartChar + '\\\\-.\\\\d\\\\u00B7\\\\u0300-\\\\u036F\\\\u203F-\\\\u2040';\nconst nameRegexp = '[' + nameStartChar + '][' + nameChar + ']*'\nconst regexName = new RegExp('^' + nameRegexp + '$');\n\nconst getAllMatches = function(string, regex) {\n const matches = [];\n let match = regex.exec(string);\n while (match) {\n const allmatches = [];\n allmatches.startIndex = regex.lastIndex - match[0].length;\n const len = match.length;\n for (let index = 0; index < len; index++) {\n allmatches.push(match[index]);\n }\n matches.push(allmatches);\n match = regex.exec(string);\n }\n return matches;\n};\n\nconst isName = function(string) {\n const match = regexName.exec(string);\n return !(match === null || typeof match === 'undefined');\n};\n\nexports.isExist = function(v) {\n return typeof v !== 'undefined';\n};\n\nexports.isEmptyObject = function(obj) {\n return Object.keys(obj).length === 0;\n};\n\n/**\n * Copy all the properties of a into b.\n * @param {*} target\n * @param {*} a\n */\nexports.merge = function(target, a, arrayMode) {\n if (a) {\n const keys = Object.keys(a); // will return an array of own properties\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n if (arrayMode === 'strict') {\n target[keys[i]] = [ a[keys[i]] ];\n } else {\n target[keys[i]] = a[keys[i]];\n }\n }\n }\n};\n/* exports.merge =function (b,a){\n return Object.assign(b,a);\n} */\n\nexports.getValue = function(v) {\n if (exports.isExist(v)) {\n return v;\n } else {\n return '';\n }\n};\n\n// const fakeCall = function(a) {return a;};\n// const fakeCallNoReturn = function() {};\n\nexports.isName = isName;\nexports.getAllMatches = getAllMatches;\nexports.nameRegexp = nameRegexp;\n","'use strict';\n\nconst util = require('./util');\n\nconst defaultOptions = {\n allowBooleanAttributes: false, //A tag can have attributes without any value\n unpairedTags: []\n};\n\n//const tagsPattern = new RegExp(\"<\\\\/?([\\\\w:\\\\-_\\.]+)\\\\s*\\/?>\",\"g\");\nexports.validate = function (xmlData, options) {\n options = Object.assign({}, defaultOptions, options);\n\n //xmlData = xmlData.replace(/(\\r\\n|\\n|\\r)/gm,\"\");//make it single line\n //xmlData = xmlData.replace(/(^\\s*<\\?xml.*?\\?>)/g,\"\");//Remove XML starting tag\n //xmlData = xmlData.replace(/()/g,\"\");//Remove DOCTYPE\n const tags = [];\n let tagFound = false;\n\n //indicates that the root tag has been closed (aka. depth 0 has been reached)\n let reachedRoot = false;\n\n if (xmlData[0] === '\\ufeff') {\n // check for byte order mark (BOM)\n xmlData = xmlData.substr(1);\n }\n \n for (let i = 0; i < xmlData.length; i++) {\n\n if (xmlData[i] === '<' && xmlData[i+1] === '?') {\n i+=2;\n i = readPI(xmlData,i);\n if (i.err) return i;\n }else if (xmlData[i] === '<') {\n //starting of tag\n //read until you reach to '>' avoiding any '>' in attribute value\n let tagStartPos = i;\n i++;\n \n if (xmlData[i] === '!') {\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else {\n let closingTag = false;\n if (xmlData[i] === '/') {\n //closing tag\n closingTag = true;\n i++;\n }\n //read tagname\n let tagName = '';\n for (; i < xmlData.length &&\n xmlData[i] !== '>' &&\n xmlData[i] !== ' ' &&\n xmlData[i] !== '\\t' &&\n xmlData[i] !== '\\n' &&\n xmlData[i] !== '\\r'; i++\n ) {\n tagName += xmlData[i];\n }\n tagName = tagName.trim();\n //console.log(tagName);\n\n if (tagName[tagName.length - 1] === '/') {\n //self closing tag without attributes\n tagName = tagName.substring(0, tagName.length - 1);\n //continue;\n i--;\n }\n if (!validateTagName(tagName)) {\n let msg;\n if (tagName.trim().length === 0) {\n msg = \"Invalid space after '<'.\";\n } else {\n msg = \"Tag '\"+tagName+\"' is an invalid name.\";\n }\n return getErrorObject('InvalidTag', msg, getLineNumberForPosition(xmlData, i));\n }\n\n const result = readAttributeStr(xmlData, i);\n if (result === false) {\n return getErrorObject('InvalidAttr', \"Attributes for '\"+tagName+\"' have open quote.\", getLineNumberForPosition(xmlData, i));\n }\n let attrStr = result.value;\n i = result.index;\n\n if (attrStr[attrStr.length - 1] === '/') {\n //self closing tag\n const attrStrStart = i - attrStr.length;\n attrStr = attrStr.substring(0, attrStr.length - 1);\n const isValid = validateAttributeString(attrStr, options);\n if (isValid === true) {\n tagFound = true;\n //continue; //text may presents after self closing tag\n } else {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, attrStrStart + isValid.err.line));\n }\n } else if (closingTag) {\n if (!result.tagClosed) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' doesn't have proper closing.\", getLineNumberForPosition(xmlData, i));\n } else if (attrStr.trim().length > 0) {\n return getErrorObject('InvalidTag', \"Closing tag '\"+tagName+\"' can't have attributes or invalid starting.\", getLineNumberForPosition(xmlData, tagStartPos));\n } else {\n const otg = tags.pop();\n if (tagName !== otg.tagName) {\n let openPos = getLineNumberForPosition(xmlData, otg.tagStartPos);\n return getErrorObject('InvalidTag',\n \"Expected closing tag '\"+otg.tagName+\"' (opened in line \"+openPos.line+\", col \"+openPos.col+\") instead of closing tag '\"+tagName+\"'.\",\n getLineNumberForPosition(xmlData, tagStartPos));\n }\n\n //when there are no more tags, we reached the root level.\n if (tags.length == 0) {\n reachedRoot = true;\n }\n }\n } else {\n const isValid = validateAttributeString(attrStr, options);\n if (isValid !== true) {\n //the result from the nested function returns the position of the error within the attribute\n //in order to get the 'true' error line, we need to calculate the position where the attribute begins (i - attrStr.length) and then add the position within the attribute\n //this gives us the absolute index in the entire xml, which we can use to find the line at last\n return getErrorObject(isValid.err.code, isValid.err.msg, getLineNumberForPosition(xmlData, i - attrStr.length + isValid.err.line));\n }\n\n //if the root level has been reached before ...\n if (reachedRoot === true) {\n return getErrorObject('InvalidXml', 'Multiple possible root nodes found.', getLineNumberForPosition(xmlData, i));\n } else if(options.unpairedTags.indexOf(tagName) !== -1){\n //don't push into stack\n } else {\n tags.push({tagName, tagStartPos});\n }\n tagFound = true;\n }\n\n //skip tag text value\n //It may include comments and CDATA value\n for (i++; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n if (xmlData[i + 1] === '!') {\n //comment or CADATA\n i++;\n i = readCommentAndCDATA(xmlData, i);\n continue;\n } else if (xmlData[i+1] === '?') {\n i = readPI(xmlData, ++i);\n if (i.err) return i;\n } else{\n break;\n }\n } else if (xmlData[i] === '&') {\n const afterAmp = validateAmpersand(xmlData, i);\n if (afterAmp == -1)\n return getErrorObject('InvalidChar', \"char '&' is not expected.\", getLineNumberForPosition(xmlData, i));\n i = afterAmp;\n }else{\n if (reachedRoot === true && !isWhiteSpace(xmlData[i])) {\n return getErrorObject('InvalidXml', \"Extra text at the end\", getLineNumberForPosition(xmlData, i));\n }\n }\n } //end of reading tag text value\n if (xmlData[i] === '<') {\n i--;\n }\n }\n } else {\n if ( isWhiteSpace(xmlData[i])) {\n continue;\n }\n return getErrorObject('InvalidChar', \"char '\"+xmlData[i]+\"' is not expected.\", getLineNumberForPosition(xmlData, i));\n }\n }\n\n if (!tagFound) {\n return getErrorObject('InvalidXml', 'Start tag expected.', 1);\n }else if (tags.length == 1) {\n return getErrorObject('InvalidTag', \"Unclosed tag '\"+tags[0].tagName+\"'.\", getLineNumberForPosition(xmlData, tags[0].tagStartPos));\n }else if (tags.length > 0) {\n return getErrorObject('InvalidXml', \"Invalid '\"+\n JSON.stringify(tags.map(t => t.tagName), null, 4).replace(/\\r?\\n/g, '')+\n \"' found.\", {line: 1, col: 1});\n }\n\n return true;\n};\n\nfunction isWhiteSpace(char){\n return char === ' ' || char === '\\t' || char === '\\n' || char === '\\r';\n}\n/**\n * Read Processing insstructions and skip\n * @param {*} xmlData\n * @param {*} i\n */\nfunction readPI(xmlData, i) {\n const start = i;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] == '?' || xmlData[i] == ' ') {\n //tagname\n const tagname = xmlData.substr(start, i - start);\n if (i > 5 && tagname === 'xml') {\n return getErrorObject('InvalidXml', 'XML declaration allowed only at the start of the document.', getLineNumberForPosition(xmlData, i));\n } else if (xmlData[i] == '?' && xmlData[i + 1] == '>') {\n //check if valid attribut string\n i++;\n break;\n } else {\n continue;\n }\n }\n }\n return i;\n}\n\nfunction readCommentAndCDATA(xmlData, i) {\n if (xmlData.length > i + 5 && xmlData[i + 1] === '-' && xmlData[i + 2] === '-') {\n //comment\n for (i += 3; i < xmlData.length; i++) {\n if (xmlData[i] === '-' && xmlData[i + 1] === '-' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n } else if (\n xmlData.length > i + 8 &&\n xmlData[i + 1] === 'D' &&\n xmlData[i + 2] === 'O' &&\n xmlData[i + 3] === 'C' &&\n xmlData[i + 4] === 'T' &&\n xmlData[i + 5] === 'Y' &&\n xmlData[i + 6] === 'P' &&\n xmlData[i + 7] === 'E'\n ) {\n let angleBracketsCount = 1;\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === '<') {\n angleBracketsCount++;\n } else if (xmlData[i] === '>') {\n angleBracketsCount--;\n if (angleBracketsCount === 0) {\n break;\n }\n }\n }\n } else if (\n xmlData.length > i + 9 &&\n xmlData[i + 1] === '[' &&\n xmlData[i + 2] === 'C' &&\n xmlData[i + 3] === 'D' &&\n xmlData[i + 4] === 'A' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'A' &&\n xmlData[i + 7] === '['\n ) {\n for (i += 8; i < xmlData.length; i++) {\n if (xmlData[i] === ']' && xmlData[i + 1] === ']' && xmlData[i + 2] === '>') {\n i += 2;\n break;\n }\n }\n }\n\n return i;\n}\n\nconst doubleQuote = '\"';\nconst singleQuote = \"'\";\n\n/**\n * Keep reading xmlData until '<' is found outside the attribute value.\n * @param {string} xmlData\n * @param {number} i\n */\nfunction readAttributeStr(xmlData, i) {\n let attrStr = '';\n let startChar = '';\n let tagClosed = false;\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === doubleQuote || xmlData[i] === singleQuote) {\n if (startChar === '') {\n startChar = xmlData[i];\n } else if (startChar !== xmlData[i]) {\n //if vaue is enclosed with double quote then single quotes are allowed inside the value and vice versa\n } else {\n startChar = '';\n }\n } else if (xmlData[i] === '>') {\n if (startChar === '') {\n tagClosed = true;\n break;\n }\n }\n attrStr += xmlData[i];\n }\n if (startChar !== '') {\n return false;\n }\n\n return {\n value: attrStr,\n index: i,\n tagClosed: tagClosed\n };\n}\n\n/**\n * Select all the attributes whether valid or invalid.\n */\nconst validAttrStrRegxp = new RegExp('(\\\\s*)([^\\\\s=]+)(\\\\s*=)?(\\\\s*([\\'\"])(([\\\\s\\\\S])*?)\\\\5)?', 'g');\n\n//attr, =\"sd\", a=\"amit's\", a=\"sd\"b=\"saf\", ab cd=\"\"\n\nfunction validateAttributeString(attrStr, options) {\n //console.log(\"start:\"+attrStr+\":end\");\n\n //if(attrStr.trim().length === 0) return true; //empty string\n\n const matches = util.getAllMatches(attrStr, validAttrStrRegxp);\n const attrNames = {};\n\n for (let i = 0; i < matches.length; i++) {\n if (matches[i][1].length === 0) {\n //nospace before attribute name: a=\"sd\"b=\"saf\"\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' has no space in starting.\", getPositionFromMatch(matches[i]))\n } else if (matches[i][3] !== undefined && matches[i][4] === undefined) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+matches[i][2]+\"' is without value.\", getPositionFromMatch(matches[i]));\n } else if (matches[i][3] === undefined && !options.allowBooleanAttributes) {\n //independent attribute: ab\n return getErrorObject('InvalidAttr', \"boolean attribute '\"+matches[i][2]+\"' is not allowed.\", getPositionFromMatch(matches[i]));\n }\n /* else if(matches[i][6] === undefined){//attribute without value: ab=\n return { err: { code:\"InvalidAttr\",msg:\"attribute \" + matches[i][2] + \" has no value assigned.\"}};\n } */\n const attrName = matches[i][2];\n if (!validateAttrName(attrName)) {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is an invalid name.\", getPositionFromMatch(matches[i]));\n }\n if (!attrNames.hasOwnProperty(attrName)) {\n //check for duplicate attribute.\n attrNames[attrName] = 1;\n } else {\n return getErrorObject('InvalidAttr', \"Attribute '\"+attrName+\"' is repeated.\", getPositionFromMatch(matches[i]));\n }\n }\n\n return true;\n}\n\nfunction validateNumberAmpersand(xmlData, i) {\n let re = /\\d/;\n if (xmlData[i] === 'x') {\n i++;\n re = /[\\da-fA-F]/;\n }\n for (; i < xmlData.length; i++) {\n if (xmlData[i] === ';')\n return i;\n if (!xmlData[i].match(re))\n break;\n }\n return -1;\n}\n\nfunction validateAmpersand(xmlData, i) {\n // https://www.w3.org/TR/xml/#dt-charref\n i++;\n if (xmlData[i] === ';')\n return -1;\n if (xmlData[i] === '#') {\n i++;\n return validateNumberAmpersand(xmlData, i);\n }\n let count = 0;\n for (; i < xmlData.length; i++, count++) {\n if (xmlData[i].match(/\\w/) && count < 20)\n continue;\n if (xmlData[i] === ';')\n break;\n return -1;\n }\n return i;\n}\n\nfunction getErrorObject(code, message, lineNumber) {\n return {\n err: {\n code: code,\n msg: message,\n line: lineNumber.line || lineNumber,\n col: lineNumber.col,\n },\n };\n}\n\nfunction validateAttrName(attrName) {\n return util.isName(attrName);\n}\n\n// const startsWithXML = /^xml/i;\n\nfunction validateTagName(tagname) {\n return util.isName(tagname) /* && !tagname.match(startsWithXML) */;\n}\n\n//this function returns the line number for the character at the given index\nfunction getLineNumberForPosition(xmlData, index) {\n const lines = xmlData.substring(0, index).split(/\\r?\\n/);\n return {\n line: lines.length,\n\n // column number is last line's length + 1, because column numbering starts at 1:\n col: lines[lines.length - 1].length + 1\n };\n}\n\n//this function returns the position of the first character of match within attrStr\nfunction getPositionFromMatch(match) {\n return match.startIndex + match[1].length;\n}\n","'use strict';\n//parse Empty Node as self closing node\nconst buildFromOrderedJs = require('./orderedJs2Xml');\n\nconst defaultOptions = {\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n cdataPropName: false,\n format: false,\n indentBy: ' ',\n suppressEmptyNode: false,\n suppressUnpairedNode: true,\n suppressBooleanAttributes: true,\n tagValueProcessor: function(key, a) {\n return a;\n },\n attributeValueProcessor: function(attrName, a) {\n return a;\n },\n preserveOrder: false,\n commentPropName: false,\n unpairedTags: [],\n entities: [\n { regex: new RegExp(\"&\", \"g\"), val: \"&\" },//it must be on top\n { regex: new RegExp(\">\", \"g\"), val: \">\" },\n { regex: new RegExp(\"<\", \"g\"), val: \"<\" },\n { regex: new RegExp(\"\\'\", \"g\"), val: \"'\" },\n { regex: new RegExp(\"\\\"\", \"g\"), val: \""\" }\n ],\n processEntities: true,\n stopNodes: [],\n // transformTagName: false,\n // transformAttributeName: false,\n oneListGroup: false\n};\n\nfunction Builder(options) {\n this.options = Object.assign({}, defaultOptions, options);\n if (this.options.ignoreAttributes || this.options.attributesGroupName) {\n this.isAttribute = function(/*a*/) {\n return false;\n };\n } else {\n this.attrPrefixLen = this.options.attributeNamePrefix.length;\n this.isAttribute = isAttribute;\n }\n\n this.processTextOrObjNode = processTextOrObjNode\n\n if (this.options.format) {\n this.indentate = indentate;\n this.tagEndChar = '>\\n';\n this.newLine = '\\n';\n } else {\n this.indentate = function() {\n return '';\n };\n this.tagEndChar = '>';\n this.newLine = '';\n }\n}\n\nBuilder.prototype.build = function(jObj) {\n if(this.options.preserveOrder){\n return buildFromOrderedJs(jObj, this.options);\n }else {\n if(Array.isArray(jObj) && this.options.arrayNodeName && this.options.arrayNodeName.length > 1){\n jObj = {\n [this.options.arrayNodeName] : jObj\n }\n }\n return this.j2x(jObj, 0).val;\n }\n};\n\nBuilder.prototype.j2x = function(jObj, level) {\n let attrStr = '';\n let val = '';\n for (let key in jObj) {\n if (typeof jObj[key] === 'undefined') {\n // supress undefined node\n } else if (jObj[key] === null) {\n if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (jObj[key] instanceof Date) {\n val += this.buildTextValNode(jObj[key], key, '', level);\n } else if (typeof jObj[key] !== 'object') {\n //premitive type\n const attr = this.isAttribute(key);\n if (attr) {\n attrStr += this.buildAttrPairStr(attr, '' + jObj[key]);\n }else {\n //tag value\n if (key === this.options.textNodeName) {\n let newval = this.options.tagValueProcessor(key, '' + jObj[key]);\n val += this.replaceEntitiesValue(newval);\n } else {\n val += this.buildTextValNode(jObj[key], key, '', level);\n }\n }\n } else if (Array.isArray(jObj[key])) {\n //repeated nodes\n const arrLen = jObj[key].length;\n let listTagVal = \"\";\n for (let j = 0; j < arrLen; j++) {\n const item = jObj[key][j];\n if (typeof item === 'undefined') {\n // supress undefined node\n } else if (item === null) {\n if(key[0] === \"?\") val += this.indentate(level) + '<' + key + '?' + this.tagEndChar;\n else val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n // val += this.indentate(level) + '<' + key + '/' + this.tagEndChar;\n } else if (typeof item === 'object') {\n if(this.options.oneListGroup ){\n listTagVal += this.j2x(item, level + 1).val;\n }else{\n listTagVal += this.processTextOrObjNode(item, key, level)\n }\n } else {\n listTagVal += this.buildTextValNode(item, key, '', level);\n }\n }\n if(this.options.oneListGroup){\n listTagVal = this.buildObjectNode(listTagVal, key, '', level);\n }\n val += listTagVal;\n } else {\n //nested node\n if (this.options.attributesGroupName && key === this.options.attributesGroupName) {\n const Ks = Object.keys(jObj[key]);\n const L = Ks.length;\n for (let j = 0; j < L; j++) {\n attrStr += this.buildAttrPairStr(Ks[j], '' + jObj[key][Ks[j]]);\n }\n } else {\n val += this.processTextOrObjNode(jObj[key], key, level)\n }\n }\n }\n return {attrStr: attrStr, val: val};\n};\n\nBuilder.prototype.buildAttrPairStr = function(attrName, val){\n val = this.options.attributeValueProcessor(attrName, '' + val);\n val = this.replaceEntitiesValue(val);\n if (this.options.suppressBooleanAttributes && val === \"true\") {\n return ' ' + attrName;\n } else return ' ' + attrName + '=\"' + val + '\"';\n}\n\nfunction processTextOrObjNode (object, key, level) {\n const result = this.j2x(object, level + 1);\n if (object[this.options.textNodeName] !== undefined && Object.keys(object).length === 1) {\n return this.buildTextValNode(object[this.options.textNodeName], key, result.attrStr, level);\n } else {\n return this.buildObjectNode(result.val, key, result.attrStr, level);\n }\n}\n\nBuilder.prototype.buildObjectNode = function(val, key, attrStr, level) {\n if(val === \"\"){\n if(key[0] === \"?\") return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar;\n else {\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }\n }else{\n\n let tagEndExp = '' + val + tagEndExp );\n } else if (this.options.commentPropName !== false && key === this.options.commentPropName && piClosingChar.length === 0) {\n return this.indentate(level) + `` + this.newLine;\n }else {\n return (\n this.indentate(level) + '<' + key + attrStr + piClosingChar + this.tagEndChar +\n val +\n this.indentate(level) + tagEndExp );\n }\n }\n}\n\nBuilder.prototype.closeTag = function(key){\n let closeTag = \"\";\n if(this.options.unpairedTags.indexOf(key) !== -1){ //unpaired\n if(!this.options.suppressUnpairedNode) closeTag = \"/\"\n }else if(this.options.suppressEmptyNode){ //empty\n closeTag = \"/\";\n }else{\n closeTag = `>` + this.newLine;\n }else if (this.options.commentPropName !== false && key === this.options.commentPropName) {\n return this.indentate(level) + `` + this.newLine;\n }else if(key[0] === \"?\") {//PI tag\n return this.indentate(level) + '<' + key + attrStr+ '?' + this.tagEndChar; \n }else{\n let textValue = this.options.tagValueProcessor(key, val);\n textValue = this.replaceEntitiesValue(textValue);\n \n if( textValue === ''){\n return this.indentate(level) + '<' + key + attrStr + this.closeTag(key) + this.tagEndChar;\n }else{\n return this.indentate(level) + '<' + key + attrStr + '>' +\n textValue +\n ' 0 && this.options.processEntities){\n for (let i=0; i 0) {\n indentation = EOL;\n }\n return arrToStr(jArray, options, \"\", indentation);\n}\n\nfunction arrToStr(arr, options, jPath, indentation) {\n let xmlStr = \"\";\n let isPreviousElementTag = false;\n\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const tagName = propName(tagObj);\n let newJPath = \"\";\n if (jPath.length === 0) newJPath = tagName\n else newJPath = `${jPath}.${tagName}`;\n\n if (tagName === options.textNodeName) {\n let tagText = tagObj[tagName];\n if (!isStopNode(newJPath, options)) {\n tagText = options.tagValueProcessor(tagName, tagText);\n tagText = replaceEntitiesValue(tagText, options);\n }\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += tagText;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.cdataPropName) {\n if (isPreviousElementTag) {\n xmlStr += indentation;\n }\n xmlStr += ``;\n isPreviousElementTag = false;\n continue;\n } else if (tagName === options.commentPropName) {\n xmlStr += indentation + ``;\n isPreviousElementTag = true;\n continue;\n } else if (tagName[0] === \"?\") {\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tempInd = tagName === \"?xml\" ? \"\" : indentation;\n let piTextNodeName = tagObj[tagName][0][options.textNodeName];\n piTextNodeName = piTextNodeName.length !== 0 ? \" \" + piTextNodeName : \"\"; //remove extra spacing\n xmlStr += tempInd + `<${tagName}${piTextNodeName}${attStr}?>`;\n isPreviousElementTag = true;\n continue;\n }\n let newIdentation = indentation;\n if (newIdentation !== \"\") {\n newIdentation += options.indentBy;\n }\n const attStr = attr_to_str(tagObj[\":@\"], options);\n const tagStart = indentation + `<${tagName}${attStr}`;\n const tagValue = arrToStr(tagObj[tagName], options, newJPath, newIdentation);\n if (options.unpairedTags.indexOf(tagName) !== -1) {\n if (options.suppressUnpairedNode) xmlStr += tagStart + \">\";\n else xmlStr += tagStart + \"/>\";\n } else if ((!tagValue || tagValue.length === 0) && options.suppressEmptyNode) {\n xmlStr += tagStart + \"/>\";\n } else if (tagValue && tagValue.endsWith(\">\")) {\n xmlStr += tagStart + `>${tagValue}${indentation}`;\n } else {\n xmlStr += tagStart + \">\";\n if (tagValue && indentation !== \"\" && (tagValue.includes(\"/>\") || tagValue.includes(\"`;\n }\n isPreviousElementTag = true;\n }\n\n return xmlStr;\n}\n\nfunction propName(obj) {\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (key !== \":@\") return key;\n }\n}\n\nfunction attr_to_str(attrMap, options) {\n let attrStr = \"\";\n if (attrMap && !options.ignoreAttributes) {\n for (let attr in attrMap) {\n let attrVal = options.attributeValueProcessor(attr, attrMap[attr]);\n attrVal = replaceEntitiesValue(attrVal, options);\n if (attrVal === true && options.suppressBooleanAttributes) {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}`;\n } else {\n attrStr += ` ${attr.substr(options.attributeNamePrefix.length)}=\"${attrVal}\"`;\n }\n }\n }\n return attrStr;\n}\n\nfunction isStopNode(jPath, options) {\n jPath = jPath.substr(0, jPath.length - options.textNodeName.length - 1);\n let tagName = jPath.substr(jPath.lastIndexOf(\".\") + 1);\n for (let index in options.stopNodes) {\n if (options.stopNodes[index] === jPath || options.stopNodes[index] === \"*.\" + tagName) return true;\n }\n return false;\n}\n\nfunction replaceEntitiesValue(textValue, options) {\n if (textValue && textValue.length > 0 && options.processEntities) {\n for (let i = 0; i < options.entities.length; i++) {\n const entity = options.entities[i];\n textValue = textValue.replace(entity.regex, entity.val);\n }\n }\n return textValue;\n}\nmodule.exports = toXml;\n","const util = require('../util');\n\n//TODO: handle comments\nfunction readDocType(xmlData, i){\n \n const entities = {};\n if( xmlData[i + 3] === 'O' &&\n xmlData[i + 4] === 'C' &&\n xmlData[i + 5] === 'T' &&\n xmlData[i + 6] === 'Y' &&\n xmlData[i + 7] === 'P' &&\n xmlData[i + 8] === 'E')\n { \n i = i+9;\n let angleBracketsCount = 1;\n let hasBody = false, comment = false;\n let exp = \"\";\n for(;i') { //Read tag content\n if(comment){\n if( xmlData[i - 1] === \"-\" && xmlData[i - 2] === \"-\"){\n comment = false;\n angleBracketsCount--;\n }\n }else{\n angleBracketsCount--;\n }\n if (angleBracketsCount === 0) {\n break;\n }\n }else if( xmlData[i] === '['){\n hasBody = true;\n }else{\n exp += xmlData[i];\n }\n }\n if(angleBracketsCount !== 0){\n throw new Error(`Unclosed DOCTYPE`);\n }\n }else{\n throw new Error(`Invalid Tag instead of DOCTYPE`);\n }\n return {entities, i};\n}\n\nfunction readEntityExp(xmlData,i){\n //External entities are not supported\n // \n\n //Parameter entities are not supported\n // \n\n //Internal entities are supported\n // \n \n //read EntityName\n let entityName = \"\";\n for (; i < xmlData.length && (xmlData[i] !== \"'\" && xmlData[i] !== '\"' ); i++) {\n // if(xmlData[i] === \" \") continue;\n // else \n entityName += xmlData[i];\n }\n entityName = entityName.trim();\n if(entityName.indexOf(\" \") !== -1) throw new Error(\"External entites are not supported\");\n\n //read Entity Value\n const startChar = xmlData[i++];\n let val = \"\"\n for (; i < xmlData.length && xmlData[i] !== startChar ; i++) {\n val += xmlData[i];\n }\n return [entityName, val, i];\n}\n\nfunction isComment(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === '-' &&\n xmlData[i+3] === '-') return true\n return false\n}\nfunction isEntity(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'N' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'I' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'Y') return true\n return false\n}\nfunction isElement(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'E' &&\n xmlData[i+3] === 'L' &&\n xmlData[i+4] === 'E' &&\n xmlData[i+5] === 'M' &&\n xmlData[i+6] === 'E' &&\n xmlData[i+7] === 'N' &&\n xmlData[i+8] === 'T') return true\n return false\n}\n\nfunction isAttlist(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'A' &&\n xmlData[i+3] === 'T' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'L' &&\n xmlData[i+6] === 'I' &&\n xmlData[i+7] === 'S' &&\n xmlData[i+8] === 'T') return true\n return false\n}\nfunction isNotation(xmlData, i){\n if(xmlData[i+1] === '!' &&\n xmlData[i+2] === 'N' &&\n xmlData[i+3] === 'O' &&\n xmlData[i+4] === 'T' &&\n xmlData[i+5] === 'A' &&\n xmlData[i+6] === 'T' &&\n xmlData[i+7] === 'I' &&\n xmlData[i+8] === 'O' &&\n xmlData[i+9] === 'N') return true\n return false\n}\n\nfunction validateEntityName(name){\n if (util.isName(name))\n\treturn name;\n else\n throw new Error(`Invalid entity name ${name}`);\n}\n\nmodule.exports = readDocType;\n","\nconst defaultOptions = {\n preserveOrder: false,\n attributeNamePrefix: '@_',\n attributesGroupName: false,\n textNodeName: '#text',\n ignoreAttributes: true,\n removeNSPrefix: false, // remove NS from tag name or attribute name if true\n allowBooleanAttributes: false, //a tag can have attributes without any value\n //ignoreRootElement : false,\n parseTagValue: true,\n parseAttributeValue: false,\n trimValues: true, //Trim string values of tag and attributes\n cdataPropName: false,\n numberParseOptions: {\n hex: true,\n leadingZeros: true,\n eNotation: true\n },\n tagValueProcessor: function(tagName, val) {\n return val;\n },\n attributeValueProcessor: function(attrName, val) {\n return val;\n },\n stopNodes: [], //nested tags will not be parsed even for errors\n alwaysCreateTextNode: false,\n isArray: () => false,\n commentPropName: false,\n unpairedTags: [],\n processEntities: true,\n htmlEntities: false,\n ignoreDeclaration: false,\n ignorePiTags: false,\n transformTagName: false,\n transformAttributeName: false,\n updateTag: function(tagName, jPath, attrs){\n return tagName\n },\n // skipEmptyListItem: false\n};\n \nconst buildOptions = function(options) {\n return Object.assign({}, defaultOptions, options);\n};\n\nexports.buildOptions = buildOptions;\nexports.defaultOptions = defaultOptions;","'use strict';\n///@ts-check\n\nconst util = require('../util');\nconst xmlNode = require('./xmlNode');\nconst readDocType = require(\"./DocTypeReader\");\nconst toNumber = require(\"strnum\");\n\nconst regx =\n '<((!\\\\[CDATA\\\\[([\\\\s\\\\S]*?)(]]>))|((NAME:)?(NAME))([^>]*)>|((\\\\/)(NAME)\\\\s*>))([^<]*)'\n .replace(/NAME/g, util.nameRegexp);\n\n//const tagsRegx = new RegExp(\"<(\\\\/?[\\\\w:\\\\-\\._]+)([^>]*)>(\\\\s*\"+cdataRegx+\")*([^<]+)?\",\"g\");\n//const tagsRegx = new RegExp(\"<(\\\\/?)((\\\\w*:)?([\\\\w:\\\\-\\._]+))([^>]*)>([^<]*)(\"+cdataRegx+\"([^<]*))*([^<]+)?\",\"g\");\n\nclass OrderedObjParser{\n constructor(options){\n this.options = options;\n this.currentNode = null;\n this.tagsNodeStack = [];\n this.docTypeEntities = {};\n this.lastEntities = {\n \"apos\" : { regex: /&(apos|#39|#x27);/g, val : \"'\"},\n \"gt\" : { regex: /&(gt|#62|#x3E);/g, val : \">\"},\n \"lt\" : { regex: /&(lt|#60|#x3C);/g, val : \"<\"},\n \"quot\" : { regex: /&(quot|#34|#x22);/g, val : \"\\\"\"},\n };\n this.ampEntity = { regex: /&(amp|#38|#x26);/g, val : \"&\"};\n this.htmlEntities = {\n \"space\": { regex: /&(nbsp|#160);/g, val: \" \" },\n // \"lt\" : { regex: /&(lt|#60);/g, val: \"<\" },\n // \"gt\" : { regex: /&(gt|#62);/g, val: \">\" },\n // \"amp\" : { regex: /&(amp|#38);/g, val: \"&\" },\n // \"quot\" : { regex: /&(quot|#34);/g, val: \"\\\"\" },\n // \"apos\" : { regex: /&(apos|#39);/g, val: \"'\" },\n \"cent\" : { regex: /&(cent|#162);/g, val: \"¢\" },\n \"pound\" : { regex: /&(pound|#163);/g, val: \"£\" },\n \"yen\" : { regex: /&(yen|#165);/g, val: \"¥\" },\n \"euro\" : { regex: /&(euro|#8364);/g, val: \"€\" },\n \"copyright\" : { regex: /&(copy|#169);/g, val: \"©\" },\n \"reg\" : { regex: /&(reg|#174);/g, val: \"®\" },\n \"inr\" : { regex: /&(inr|#8377);/g, val: \"₹\" },\n };\n this.addExternalEntities = addExternalEntities;\n this.parseXml = parseXml;\n this.parseTextData = parseTextData;\n this.resolveNameSpace = resolveNameSpace;\n this.buildAttributesMap = buildAttributesMap;\n this.isItStopNode = isItStopNode;\n this.replaceEntitiesValue = replaceEntitiesValue;\n this.readStopNodeData = readStopNodeData;\n this.saveTextToParentTag = saveTextToParentTag;\n this.addChild = addChild;\n }\n\n}\n\nfunction addExternalEntities(externalEntities){\n const entKeys = Object.keys(externalEntities);\n for (let i = 0; i < entKeys.length; i++) {\n const ent = entKeys[i];\n this.lastEntities[ent] = {\n regex: new RegExp(\"&\"+ent+\";\",\"g\"),\n val : externalEntities[ent]\n }\n }\n}\n\n/**\n * @param {string} val\n * @param {string} tagName\n * @param {string} jPath\n * @param {boolean} dontTrim\n * @param {boolean} hasAttributes\n * @param {boolean} isLeafNode\n * @param {boolean} escapeEntities\n */\nfunction parseTextData(val, tagName, jPath, dontTrim, hasAttributes, isLeafNode, escapeEntities) {\n if (val !== undefined) {\n if (this.options.trimValues && !dontTrim) {\n val = val.trim();\n }\n if(val.length > 0){\n if(!escapeEntities) val = this.replaceEntitiesValue(val);\n \n const newval = this.options.tagValueProcessor(tagName, val, jPath, hasAttributes, isLeafNode);\n if(newval === null || newval === undefined){\n //don't parse\n return val;\n }else if(typeof newval !== typeof val || newval !== val){\n //overwrite\n return newval;\n }else if(this.options.trimValues){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n const trimmedVal = val.trim();\n if(trimmedVal === val){\n return parseValue(val, this.options.parseTagValue, this.options.numberParseOptions);\n }else{\n return val;\n }\n }\n }\n }\n}\n\nfunction resolveNameSpace(tagname) {\n if (this.options.removeNSPrefix) {\n const tags = tagname.split(':');\n const prefix = tagname.charAt(0) === '/' ? '/' : '';\n if (tags[0] === 'xmlns') {\n return '';\n }\n if (tags.length === 2) {\n tagname = prefix + tags[1];\n }\n }\n return tagname;\n}\n\n//TODO: change regex to capture NS\n//const attrsRegx = new RegExp(\"([\\\\w\\\\-\\\\.\\\\:]+)\\\\s*=\\\\s*(['\\\"])((.|\\n)*?)\\\\2\",\"gm\");\nconst attrsRegx = new RegExp('([^\\\\s=]+)\\\\s*(=\\\\s*([\\'\"])([\\\\s\\\\S]*?)\\\\3)?', 'gm');\n\nfunction buildAttributesMap(attrStr, jPath, tagName) {\n if (!this.options.ignoreAttributes && typeof attrStr === 'string') {\n // attrStr = attrStr.replace(/\\r?\\n/g, ' ');\n //attrStr = attrStr || attrStr.trim();\n\n const matches = util.getAllMatches(attrStr, attrsRegx);\n const len = matches.length; //don't make it inline\n const attrs = {};\n for (let i = 0; i < len; i++) {\n const attrName = this.resolveNameSpace(matches[i][1]);\n let oldVal = matches[i][4];\n let aName = this.options.attributeNamePrefix + attrName;\n if (attrName.length) {\n if (this.options.transformAttributeName) {\n aName = this.options.transformAttributeName(aName);\n }\n if(aName === \"__proto__\") aName = \"#__proto__\";\n if (oldVal !== undefined) {\n if (this.options.trimValues) {\n oldVal = oldVal.trim();\n }\n oldVal = this.replaceEntitiesValue(oldVal);\n const newVal = this.options.attributeValueProcessor(attrName, oldVal, jPath);\n if(newVal === null || newVal === undefined){\n //don't parse\n attrs[aName] = oldVal;\n }else if(typeof newVal !== typeof oldVal || newVal !== oldVal){\n //overwrite\n attrs[aName] = newVal;\n }else{\n //parse\n attrs[aName] = parseValue(\n oldVal,\n this.options.parseAttributeValue,\n this.options.numberParseOptions\n );\n }\n } else if (this.options.allowBooleanAttributes) {\n attrs[aName] = true;\n }\n }\n }\n if (!Object.keys(attrs).length) {\n return;\n }\n if (this.options.attributesGroupName) {\n const attrCollection = {};\n attrCollection[this.options.attributesGroupName] = attrs;\n return attrCollection;\n }\n return attrs\n }\n}\n\nconst parseXml = function(xmlData) {\n xmlData = xmlData.replace(/\\r\\n?/g, \"\\n\"); //TODO: remove this line\n const xmlObj = new xmlNode('!xml');\n let currentNode = xmlObj;\n let textData = \"\";\n let jPath = \"\";\n for(let i=0; i< xmlData.length; i++){//for each char in XML data\n const ch = xmlData[i];\n if(ch === '<'){\n // const nextIndex = i+1;\n // const _2ndChar = xmlData[nextIndex];\n if( xmlData[i+1] === '/') {//Closing Tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, \"Closing Tag is not closed.\")\n let tagName = xmlData.substring(i+2,closeIndex).trim();\n\n if(this.options.removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n }\n }\n\n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n if(currentNode){\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n }\n\n //check if last tag of nested tag was unpaired tag\n const lastTagName = jPath.substring(jPath.lastIndexOf(\".\")+1);\n if(tagName && this.options.unpairedTags.indexOf(tagName) !== -1 ){\n throw new Error(`Unpaired tag can not be used as closing tag: `);\n }\n let propIndex = 0\n if(lastTagName && this.options.unpairedTags.indexOf(lastTagName) !== -1 ){\n propIndex = jPath.lastIndexOf('.', jPath.lastIndexOf('.')-1)\n this.tagsNodeStack.pop();\n }else{\n propIndex = jPath.lastIndexOf(\".\");\n }\n jPath = jPath.substring(0, propIndex);\n\n currentNode = this.tagsNodeStack.pop();//avoid recursion, set the parent tag scope\n textData = \"\";\n i = closeIndex;\n } else if( xmlData[i+1] === '?') {\n\n let tagData = readTagExp(xmlData,i, false, \"?>\");\n if(!tagData) throw new Error(\"Pi Tag is not closed.\");\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n if( (this.options.ignoreDeclaration && tagData.tagName === \"?xml\") || this.options.ignorePiTags){\n\n }else{\n \n const childNode = new xmlNode(tagData.tagName);\n childNode.add(this.options.textNodeName, \"\");\n \n if(tagData.tagName !== tagData.tagExp && tagData.attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagData.tagExp, jPath, tagData.tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n\n }\n\n\n i = tagData.closeIndex + 1;\n } else if(xmlData.substr(i + 1, 3) === '!--') {\n const endIndex = findClosingIndex(xmlData, \"-->\", i+4, \"Comment is not closed.\")\n if(this.options.commentPropName){\n const comment = xmlData.substring(i + 4, endIndex - 2);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n currentNode.add(this.options.commentPropName, [ { [this.options.textNodeName] : comment } ]);\n }\n i = endIndex;\n } else if( xmlData.substr(i + 1, 2) === '!D') {\n const result = readDocType(xmlData, i);\n this.docTypeEntities = result.entities;\n i = result.i;\n }else if(xmlData.substr(i + 1, 2) === '![') {\n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"CDATA is not closed.\") - 2;\n const tagExp = xmlData.substring(i + 9,closeIndex);\n\n textData = this.saveTextToParentTag(textData, currentNode, jPath);\n\n //cdata should be set even if it is 0 length string\n if(this.options.cdataPropName){\n // let val = this.parseTextData(tagExp, this.options.cdataPropName, jPath + \".\" + this.options.cdataPropName, true, false, true);\n // if(!val) val = \"\";\n currentNode.add(this.options.cdataPropName, [ { [this.options.textNodeName] : tagExp } ]);\n }else{\n let val = this.parseTextData(tagExp, currentNode.tagname, jPath, true, false, true);\n if(val == undefined) val = \"\";\n currentNode.add(this.options.textNodeName, val);\n }\n \n i = closeIndex + 2;\n }else {//Opening tag\n let result = readTagExp(xmlData,i, this.options.removeNSPrefix);\n let tagName= result.tagName;\n let tagExp = result.tagExp;\n let attrExpPresent = result.attrExpPresent;\n let closeIndex = result.closeIndex;\n\n if (this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n \n //save text as child node\n if (currentNode && textData) {\n if(currentNode.tagname !== '!xml'){\n //when nested tag is found\n textData = this.saveTextToParentTag(textData, currentNode, jPath, false);\n }\n }\n\n //check if last tag was unpaired tag\n const lastTag = currentNode;\n if(lastTag && this.options.unpairedTags.indexOf(lastTag.tagname) !== -1 ){\n currentNode = this.tagsNodeStack.pop();\n jPath = jPath.substring(0, jPath.lastIndexOf(\".\"));\n }\n if(tagName !== xmlObj.tagname){\n jPath += jPath ? \".\" + tagName : tagName;\n }\n if (this.isItStopNode(this.options.stopNodes, jPath, tagName)) { //TODO: namespace\n let tagContent = \"\";\n //self-closing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n i = result.closeIndex;\n }\n //unpaired tag\n else if(this.options.unpairedTags.indexOf(tagName) !== -1){\n i = result.closeIndex;\n }\n //normal tag\n else{\n //read until closing tag is found\n const result = this.readStopNodeData(xmlData, tagName, closeIndex + 1);\n if(!result) throw new Error(`Unexpected end of ${tagName}`);\n i = result.i;\n tagContent = result.tagContent;\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n if(tagContent) {\n tagContent = this.parseTextData(tagContent, tagName, jPath, true, attrExpPresent, true, true);\n }\n \n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n childNode.add(this.options.textNodeName, tagContent);\n \n this.addChild(currentNode, childNode, jPath)\n }else{\n //selfClosing tag\n if(tagExp.length > 0 && tagExp.lastIndexOf(\"/\") === tagExp.length - 1){\n if(tagName[tagName.length - 1] === \"/\"){ //remove trailing '/'\n tagName = tagName.substr(0, tagName.length - 1);\n tagExp = tagName;\n }else{\n tagExp = tagExp.substr(0, tagExp.length - 1);\n }\n \n if(this.options.transformTagName) {\n tagName = this.options.transformTagName(tagName);\n }\n\n const childNode = new xmlNode(tagName);\n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n jPath = jPath.substr(0, jPath.lastIndexOf(\".\"));\n }\n //opening tag\n else{\n const childNode = new xmlNode( tagName);\n this.tagsNodeStack.push(currentNode);\n \n if(tagName !== tagExp && attrExpPresent){\n childNode[\":@\"] = this.buildAttributesMap(tagExp, jPath, tagName);\n }\n this.addChild(currentNode, childNode, jPath)\n currentNode = childNode;\n }\n textData = \"\";\n i = closeIndex;\n }\n }\n }else{\n textData += xmlData[i];\n }\n }\n return xmlObj.child;\n}\n\nfunction addChild(currentNode, childNode, jPath){\n const result = this.options.updateTag(childNode.tagname, jPath, childNode[\":@\"])\n if(result === false){\n }else if(typeof result === \"string\"){\n childNode.tagname = result\n currentNode.addChild(childNode);\n }else{\n currentNode.addChild(childNode);\n }\n}\n\nconst replaceEntitiesValue = function(val){\n\n if(this.options.processEntities){\n for(let entityName in this.docTypeEntities){\n const entity = this.docTypeEntities[entityName];\n val = val.replace( entity.regx, entity.val);\n }\n for(let entityName in this.lastEntities){\n const entity = this.lastEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n if(this.options.htmlEntities){\n for(let entityName in this.htmlEntities){\n const entity = this.htmlEntities[entityName];\n val = val.replace( entity.regex, entity.val);\n }\n }\n val = val.replace( this.ampEntity.regex, this.ampEntity.val);\n }\n return val;\n}\nfunction saveTextToParentTag(textData, currentNode, jPath, isLeafNode) {\n if (textData) { //store previously collected data as textNode\n if(isLeafNode === undefined) isLeafNode = Object.keys(currentNode.child).length === 0\n \n textData = this.parseTextData(textData,\n currentNode.tagname,\n jPath,\n false,\n currentNode[\":@\"] ? Object.keys(currentNode[\":@\"]).length !== 0 : false,\n isLeafNode);\n\n if (textData !== undefined && textData !== \"\")\n currentNode.add(this.options.textNodeName, textData);\n textData = \"\";\n }\n return textData;\n}\n\n//TODO: use jPath to simplify the logic\n/**\n * \n * @param {string[]} stopNodes \n * @param {string} jPath\n * @param {string} currentTagName \n */\nfunction isItStopNode(stopNodes, jPath, currentTagName){\n const allNodesExp = \"*.\" + currentTagName;\n for (const stopNodePath in stopNodes) {\n const stopNodeExp = stopNodes[stopNodePath];\n if( allNodesExp === stopNodeExp || jPath === stopNodeExp ) return true;\n }\n return false;\n}\n\n/**\n * Returns the tag Expression and where it is ending handling single-double quotes situation\n * @param {string} xmlData \n * @param {number} i starting index\n * @returns \n */\nfunction tagExpWithClosingIndex(xmlData, i, closingChar = \">\"){\n let attrBoundary;\n let tagExp = \"\";\n for (let index = i; index < xmlData.length; index++) {\n let ch = xmlData[index];\n if (attrBoundary) {\n if (ch === attrBoundary) attrBoundary = \"\";//reset\n } else if (ch === '\"' || ch === \"'\") {\n attrBoundary = ch;\n } else if (ch === closingChar[0]) {\n if(closingChar[1]){\n if(xmlData[index + 1] === closingChar[1]){\n return {\n data: tagExp,\n index: index\n }\n }\n }else{\n return {\n data: tagExp,\n index: index\n }\n }\n } else if (ch === '\\t') {\n ch = \" \"\n }\n tagExp += ch;\n }\n}\n\nfunction findClosingIndex(xmlData, str, i, errMsg){\n const closingIndex = xmlData.indexOf(str, i);\n if(closingIndex === -1){\n throw new Error(errMsg)\n }else{\n return closingIndex + str.length - 1;\n }\n}\n\nfunction readTagExp(xmlData,i, removeNSPrefix, closingChar = \">\"){\n const result = tagExpWithClosingIndex(xmlData, i+1, closingChar);\n if(!result) return;\n let tagExp = result.data;\n const closeIndex = result.index;\n const separatorIndex = tagExp.search(/\\s/);\n let tagName = tagExp;\n let attrExpPresent = true;\n if(separatorIndex !== -1){//separate tag name and attributes expression\n tagName = tagExp.substr(0, separatorIndex).replace(/\\s\\s*$/, '');\n tagExp = tagExp.substr(separatorIndex + 1);\n }\n\n if(removeNSPrefix){\n const colonIndex = tagName.indexOf(\":\");\n if(colonIndex !== -1){\n tagName = tagName.substr(colonIndex+1);\n attrExpPresent = tagName !== result.data.substr(colonIndex + 1);\n }\n }\n\n return {\n tagName: tagName,\n tagExp: tagExp,\n closeIndex: closeIndex,\n attrExpPresent: attrExpPresent,\n }\n}\n/**\n * find paired tag for a stop node\n * @param {string} xmlData \n * @param {string} tagName \n * @param {number} i \n */\nfunction readStopNodeData(xmlData, tagName, i){\n const startIndex = i;\n // Starting at 1 since we already have an open tag\n let openTagCount = 1;\n\n for (; i < xmlData.length; i++) {\n if( xmlData[i] === \"<\"){ \n if (xmlData[i+1] === \"/\") {//close tag\n const closeIndex = findClosingIndex(xmlData, \">\", i, `${tagName} is not closed`);\n let closeTagName = xmlData.substring(i+2,closeIndex).trim();\n if(closeTagName === tagName){\n openTagCount--;\n if (openTagCount === 0) {\n return {\n tagContent: xmlData.substring(startIndex, i),\n i : closeIndex\n }\n }\n }\n i=closeIndex;\n } else if(xmlData[i+1] === '?') { \n const closeIndex = findClosingIndex(xmlData, \"?>\", i+1, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 3) === '!--') { \n const closeIndex = findClosingIndex(xmlData, \"-->\", i+3, \"StopNode is not closed.\")\n i=closeIndex;\n } else if(xmlData.substr(i + 1, 2) === '![') { \n const closeIndex = findClosingIndex(xmlData, \"]]>\", i, \"StopNode is not closed.\") - 2;\n i=closeIndex;\n } else {\n const tagData = readTagExp(xmlData, i, '>')\n\n if (tagData) {\n const openTagName = tagData && tagData.tagName;\n if (openTagName === tagName && tagData.tagExp[tagData.tagExp.length-1] !== \"/\") {\n openTagCount++;\n }\n i=tagData.closeIndex;\n }\n }\n }\n }//end for loop\n}\n\nfunction parseValue(val, shouldParse, options) {\n if (shouldParse && typeof val === 'string') {\n //console.log(options)\n const newval = val.trim();\n if(newval === 'true' ) return true;\n else if(newval === 'false' ) return false;\n else return toNumber(val, options);\n } else {\n if (util.isExist(val)) {\n return val;\n } else {\n return '';\n }\n }\n}\n\n\nmodule.exports = OrderedObjParser;\n","const { buildOptions} = require(\"./OptionsBuilder\");\nconst OrderedObjParser = require(\"./OrderedObjParser\");\nconst { prettify} = require(\"./node2json\");\nconst validator = require('../validator');\n\nclass XMLParser{\n \n constructor(options){\n this.externalEntities = {};\n this.options = buildOptions(options);\n \n }\n /**\n * Parse XML dats to JS object \n * @param {string|Buffer} xmlData \n * @param {boolean|Object} validationOption \n */\n parse(xmlData,validationOption){\n if(typeof xmlData === \"string\"){\n }else if( xmlData.toString){\n xmlData = xmlData.toString();\n }else{\n throw new Error(\"XML data is accepted in String or Bytes[] form.\")\n }\n if( validationOption){\n if(validationOption === true) validationOption = {}; //validate with default options\n \n const result = validator.validate(xmlData, validationOption);\n if (result !== true) {\n throw Error( `${result.err.msg}:${result.err.line}:${result.err.col}` )\n }\n }\n const orderedObjParser = new OrderedObjParser(this.options);\n orderedObjParser.addExternalEntities(this.externalEntities);\n const orderedResult = orderedObjParser.parseXml(xmlData);\n if(this.options.preserveOrder || orderedResult === undefined) return orderedResult;\n else return prettify(orderedResult, this.options);\n }\n\n /**\n * Add Entity which is not by default supported by this library\n * @param {string} key \n * @param {string} value \n */\n addEntity(key, value){\n if(value.indexOf(\"&\") !== -1){\n throw new Error(\"Entity value can't have '&'\")\n }else if(key.indexOf(\"&\") !== -1 || key.indexOf(\";\") !== -1){\n throw new Error(\"An entity must be set without '&' and ';'. Eg. use '#xD' for ' '\")\n }else if(value === \"&\"){\n throw new Error(\"An entity with value '&' is not permitted\");\n }else{\n this.externalEntities[key] = value;\n }\n }\n}\n\nmodule.exports = XMLParser;","'use strict';\n\n/**\n * \n * @param {array} node \n * @param {any} options \n * @returns \n */\nfunction prettify(node, options){\n return compress( node, options);\n}\n\n/**\n * \n * @param {array} arr \n * @param {object} options \n * @param {string} jPath \n * @returns object\n */\nfunction compress(arr, options, jPath){\n let text;\n const compressedObj = {};\n for (let i = 0; i < arr.length; i++) {\n const tagObj = arr[i];\n const property = propName(tagObj);\n let newJpath = \"\";\n if(jPath === undefined) newJpath = property;\n else newJpath = jPath + \".\" + property;\n\n if(property === options.textNodeName){\n if(text === undefined) text = tagObj[property];\n else text += \"\" + tagObj[property];\n }else if(property === undefined){\n continue;\n }else if(tagObj[property]){\n \n let val = compress(tagObj[property], options, newJpath);\n const isLeaf = isLeafTag(val, options);\n\n if(tagObj[\":@\"]){\n assignAttributes( val, tagObj[\":@\"], newJpath, options);\n }else if(Object.keys(val).length === 1 && val[options.textNodeName] !== undefined && !options.alwaysCreateTextNode){\n val = val[options.textNodeName];\n }else if(Object.keys(val).length === 0){\n if(options.alwaysCreateTextNode) val[options.textNodeName] = \"\";\n else val = \"\";\n }\n\n if(compressedObj[property] !== undefined && compressedObj.hasOwnProperty(property)) {\n if(!Array.isArray(compressedObj[property])) {\n compressedObj[property] = [ compressedObj[property] ];\n }\n compressedObj[property].push(val);\n }else{\n //TODO: if a node is not an array, then check if it should be an array\n //also determine if it is a leaf node\n if (options.isArray(property, newJpath, isLeaf )) {\n compressedObj[property] = [val];\n }else{\n compressedObj[property] = val;\n }\n }\n }\n \n }\n // if(text && text.length > 0) compressedObj[options.textNodeName] = text;\n if(typeof text === \"string\"){\n if(text.length > 0) compressedObj[options.textNodeName] = text;\n }else if(text !== undefined) compressedObj[options.textNodeName] = text;\n return compressedObj;\n}\n\nfunction propName(obj){\n const keys = Object.keys(obj);\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if(key !== \":@\") return key;\n }\n}\n\nfunction assignAttributes(obj, attrMap, jpath, options){\n if (attrMap) {\n const keys = Object.keys(attrMap);\n const len = keys.length; //don't make it inline\n for (let i = 0; i < len; i++) {\n const atrrName = keys[i];\n if (options.isArray(atrrName, jpath + \".\" + atrrName, true, true)) {\n obj[atrrName] = [ attrMap[atrrName] ];\n } else {\n obj[atrrName] = attrMap[atrrName];\n }\n }\n }\n}\n\nfunction isLeafTag(obj, options){\n const { textNodeName } = options;\n const propCount = Object.keys(obj).length;\n \n if (propCount === 0) {\n return true;\n }\n\n if (\n propCount === 1 &&\n (obj[textNodeName] || typeof obj[textNodeName] === \"boolean\" || obj[textNodeName] === 0)\n ) {\n return true;\n }\n\n return false;\n}\nexports.prettify = prettify;\n","'use strict';\n\nclass XmlNode{\n constructor(tagname) {\n this.tagname = tagname;\n this.child = []; //nested tags, text, cdata, comments in order\n this[\":@\"] = {}; //attributes map\n }\n add(key,val){\n // this.child.push( {name : key, val: val, isCdata: isCdata });\n if(key === \"__proto__\") key = \"#__proto__\";\n this.child.push( {[key]: val });\n }\n addChild(node) {\n if(node.tagname === \"__proto__\") node.tagname = \"#__proto__\";\n if(node[\":@\"] && Object.keys(node[\":@\"]).length > 0){\n this.child.push( { [node.tagname]: node.child, [\":@\"]: node[\":@\"] });\n }else{\n this.child.push( { [node.tagname]: node.child });\n }\n };\n};\n\n\nmodule.exports = XmlNode;","'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst mkdirsSync = require('../mkdirs').mkdirsSync\nconst utimesMillisSync = require('../util/utimes').utimesMillisSync\nconst stat = require('../util/stat')\n\nfunction copySync (src, dest, opts) {\n if (typeof opts === 'function') {\n opts = { filter: opts }\n }\n\n opts = opts || {}\n opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now\n opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber\n\n // Warn about using preserveTimestamps on 32-bit node\n if (opts.preserveTimestamps && process.arch === 'ia32') {\n process.emitWarning(\n 'Using the preserveTimestamps option in 32-bit node is not recommended;\\n\\n' +\n '\\tsee https://github.com/jprichardson/node-fs-extra/issues/269',\n 'Warning', 'fs-extra-WARN0002'\n )\n }\n\n const { srcStat, destStat } = stat.checkPathsSync(src, dest, 'copy', opts)\n stat.checkParentPathsSync(src, srcStat, dest, 'copy')\n if (opts.filter && !opts.filter(src, dest)) return\n const destParent = path.dirname(dest)\n if (!fs.existsSync(destParent)) mkdirsSync(destParent)\n return getStats(destStat, src, dest, opts)\n}\n\nfunction getStats (destStat, src, dest, opts) {\n const statSync = opts.dereference ? fs.statSync : fs.lstatSync\n const srcStat = statSync(src)\n\n if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)\n else if (srcStat.isFile() ||\n srcStat.isCharacterDevice() ||\n srcStat.isBlockDevice()) return onFile(srcStat, destStat, src, dest, opts)\n else if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)\n else if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`)\n else if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`)\n throw new Error(`Unknown file: ${src}`)\n}\n\nfunction onFile (srcStat, destStat, src, dest, opts) {\n if (!destStat) return copyFile(srcStat, src, dest, opts)\n return mayCopyFile(srcStat, src, dest, opts)\n}\n\nfunction mayCopyFile (srcStat, src, dest, opts) {\n if (opts.overwrite) {\n fs.unlinkSync(dest)\n return copyFile(srcStat, src, dest, opts)\n } else if (opts.errorOnExist) {\n throw new Error(`'${dest}' already exists`)\n }\n}\n\nfunction copyFile (srcStat, src, dest, opts) {\n fs.copyFileSync(src, dest)\n if (opts.preserveTimestamps) handleTimestamps(srcStat.mode, src, dest)\n return setDestMode(dest, srcStat.mode)\n}\n\nfunction handleTimestamps (srcMode, src, dest) {\n // Make sure the file is writable before setting the timestamp\n // otherwise open fails with EPERM when invoked with 'r+'\n // (through utimes call)\n if (fileIsNotWritable(srcMode)) makeFileWritable(dest, srcMode)\n return setDestTimestamps(src, dest)\n}\n\nfunction fileIsNotWritable (srcMode) {\n return (srcMode & 0o200) === 0\n}\n\nfunction makeFileWritable (dest, srcMode) {\n return setDestMode(dest, srcMode | 0o200)\n}\n\nfunction setDestMode (dest, srcMode) {\n return fs.chmodSync(dest, srcMode)\n}\n\nfunction setDestTimestamps (src, dest) {\n // The initial srcStat.atime cannot be trusted\n // because it is modified by the read(2) system call\n // (See https://nodejs.org/api/fs.html#fs_stat_time_values)\n const updatedSrcStat = fs.statSync(src)\n return utimesMillisSync(dest, updatedSrcStat.atime, updatedSrcStat.mtime)\n}\n\nfunction onDir (srcStat, destStat, src, dest, opts) {\n if (!destStat) return mkDirAndCopy(srcStat.mode, src, dest, opts)\n return copyDir(src, dest, opts)\n}\n\nfunction mkDirAndCopy (srcMode, src, dest, opts) {\n fs.mkdirSync(dest)\n copyDir(src, dest, opts)\n return setDestMode(dest, srcMode)\n}\n\nfunction copyDir (src, dest, opts) {\n fs.readdirSync(src).forEach(item => copyDirItem(item, src, dest, opts))\n}\n\nfunction copyDirItem (item, src, dest, opts) {\n const srcItem = path.join(src, item)\n const destItem = path.join(dest, item)\n if (opts.filter && !opts.filter(srcItem, destItem)) return\n const { destStat } = stat.checkPathsSync(srcItem, destItem, 'copy', opts)\n return getStats(destStat, srcItem, destItem, opts)\n}\n\nfunction onLink (destStat, src, dest, opts) {\n let resolvedSrc = fs.readlinkSync(src)\n if (opts.dereference) {\n resolvedSrc = path.resolve(process.cwd(), resolvedSrc)\n }\n\n if (!destStat) {\n return fs.symlinkSync(resolvedSrc, dest)\n } else {\n let resolvedDest\n try {\n resolvedDest = fs.readlinkSync(dest)\n } catch (err) {\n // dest exists and is a regular file or directory,\n // Windows may throw UNKNOWN error. If dest already exists,\n // fs throws error anyway, so no need to guard against it here.\n if (err.code === 'EINVAL' || err.code === 'UNKNOWN') return fs.symlinkSync(resolvedSrc, dest)\n throw err\n }\n if (opts.dereference) {\n resolvedDest = path.resolve(process.cwd(), resolvedDest)\n }\n if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {\n throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)\n }\n\n // prevent copy if src is a subdir of dest since unlinking\n // dest in this case would result in removing src contents\n // and therefore a broken symlink would be created.\n if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) {\n throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)\n }\n return copyLink(resolvedSrc, dest)\n }\n}\n\nfunction copyLink (resolvedSrc, dest) {\n fs.unlinkSync(dest)\n return fs.symlinkSync(resolvedSrc, dest)\n}\n\nmodule.exports = copySync\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst { mkdirs } = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst { utimesMillis } = require('../util/utimes')\nconst stat = require('../util/stat')\n\nasync function copy (src, dest, opts = {}) {\n if (typeof opts === 'function') {\n opts = { filter: opts }\n }\n\n opts.clobber = 'clobber' in opts ? !!opts.clobber : true // default to true for now\n opts.overwrite = 'overwrite' in opts ? !!opts.overwrite : opts.clobber // overwrite falls back to clobber\n\n // Warn about using preserveTimestamps on 32-bit node\n if (opts.preserveTimestamps && process.arch === 'ia32') {\n process.emitWarning(\n 'Using the preserveTimestamps option in 32-bit node is not recommended;\\n\\n' +\n '\\tsee https://github.com/jprichardson/node-fs-extra/issues/269',\n 'Warning', 'fs-extra-WARN0001'\n )\n }\n\n const { srcStat, destStat } = await stat.checkPaths(src, dest, 'copy', opts)\n\n await stat.checkParentPaths(src, srcStat, dest, 'copy')\n\n const include = await runFilter(src, dest, opts)\n\n if (!include) return\n\n // check if the parent of dest exists, and create it if it doesn't exist\n const destParent = path.dirname(dest)\n const dirExists = await pathExists(destParent)\n if (!dirExists) {\n await mkdirs(destParent)\n }\n\n await getStatsAndPerformCopy(destStat, src, dest, opts)\n}\n\nasync function runFilter (src, dest, opts) {\n if (!opts.filter) return true\n return opts.filter(src, dest)\n}\n\nasync function getStatsAndPerformCopy (destStat, src, dest, opts) {\n const statFn = opts.dereference ? fs.stat : fs.lstat\n const srcStat = await statFn(src)\n\n if (srcStat.isDirectory()) return onDir(srcStat, destStat, src, dest, opts)\n\n if (\n srcStat.isFile() ||\n srcStat.isCharacterDevice() ||\n srcStat.isBlockDevice()\n ) return onFile(srcStat, destStat, src, dest, opts)\n\n if (srcStat.isSymbolicLink()) return onLink(destStat, src, dest, opts)\n if (srcStat.isSocket()) throw new Error(`Cannot copy a socket file: ${src}`)\n if (srcStat.isFIFO()) throw new Error(`Cannot copy a FIFO pipe: ${src}`)\n throw new Error(`Unknown file: ${src}`)\n}\n\nasync function onFile (srcStat, destStat, src, dest, opts) {\n if (!destStat) return copyFile(srcStat, src, dest, opts)\n\n if (opts.overwrite) {\n await fs.unlink(dest)\n return copyFile(srcStat, src, dest, opts)\n }\n if (opts.errorOnExist) {\n throw new Error(`'${dest}' already exists`)\n }\n}\n\nasync function copyFile (srcStat, src, dest, opts) {\n await fs.copyFile(src, dest)\n if (opts.preserveTimestamps) {\n // Make sure the file is writable before setting the timestamp\n // otherwise open fails with EPERM when invoked with 'r+'\n // (through utimes call)\n if (fileIsNotWritable(srcStat.mode)) {\n await makeFileWritable(dest, srcStat.mode)\n }\n\n // Set timestamps and mode correspondingly\n\n // Note that The initial srcStat.atime cannot be trusted\n // because it is modified by the read(2) system call\n // (See https://nodejs.org/api/fs.html#fs_stat_time_values)\n const updatedSrcStat = await fs.stat(src)\n await utimesMillis(dest, updatedSrcStat.atime, updatedSrcStat.mtime)\n }\n\n return fs.chmod(dest, srcStat.mode)\n}\n\nfunction fileIsNotWritable (srcMode) {\n return (srcMode & 0o200) === 0\n}\n\nfunction makeFileWritable (dest, srcMode) {\n return fs.chmod(dest, srcMode | 0o200)\n}\n\nasync function onDir (srcStat, destStat, src, dest, opts) {\n // the dest directory might not exist, create it\n if (!destStat) {\n await fs.mkdir(dest)\n }\n\n const items = await fs.readdir(src)\n\n // loop through the files in the current directory to copy everything\n await Promise.all(items.map(async item => {\n const srcItem = path.join(src, item)\n const destItem = path.join(dest, item)\n\n // skip the item if it is matches by the filter function\n const include = await runFilter(srcItem, destItem, opts)\n if (!include) return\n\n const { destStat } = await stat.checkPaths(srcItem, destItem, 'copy', opts)\n\n // If the item is a copyable file, `getStatsAndPerformCopy` will copy it\n // If the item is a directory, `getStatsAndPerformCopy` will call `onDir` recursively\n return getStatsAndPerformCopy(destStat, srcItem, destItem, opts)\n }))\n\n if (!destStat) {\n await fs.chmod(dest, srcStat.mode)\n }\n}\n\nasync function onLink (destStat, src, dest, opts) {\n let resolvedSrc = await fs.readlink(src)\n if (opts.dereference) {\n resolvedSrc = path.resolve(process.cwd(), resolvedSrc)\n }\n if (!destStat) {\n return fs.symlink(resolvedSrc, dest)\n }\n\n let resolvedDest = null\n try {\n resolvedDest = await fs.readlink(dest)\n } catch (e) {\n // dest exists and is a regular file or directory,\n // Windows may throw UNKNOWN error. If dest already exists,\n // fs throws error anyway, so no need to guard against it here.\n if (e.code === 'EINVAL' || e.code === 'UNKNOWN') return fs.symlink(resolvedSrc, dest)\n throw e\n }\n if (opts.dereference) {\n resolvedDest = path.resolve(process.cwd(), resolvedDest)\n }\n if (stat.isSrcSubdir(resolvedSrc, resolvedDest)) {\n throw new Error(`Cannot copy '${resolvedSrc}' to a subdirectory of itself, '${resolvedDest}'.`)\n }\n\n // do not copy if src is a subdir of dest since unlinking\n // dest in this case would result in removing src contents\n // and therefore a broken symlink would be created.\n if (stat.isSrcSubdir(resolvedDest, resolvedSrc)) {\n throw new Error(`Cannot overwrite '${resolvedDest}' with '${resolvedSrc}'.`)\n }\n\n // copy the link\n await fs.unlink(dest)\n return fs.symlink(resolvedSrc, dest)\n}\n\nmodule.exports = copy\n","'use strict'\n\nconst u = require('universalify').fromPromise\nmodule.exports = {\n copy: u(require('./copy')),\n copySync: require('./copy-sync')\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\nconst path = require('path')\nconst mkdir = require('../mkdirs')\nconst remove = require('../remove')\n\nconst emptyDir = u(async function emptyDir (dir) {\n let items\n try {\n items = await fs.readdir(dir)\n } catch {\n return mkdir.mkdirs(dir)\n }\n\n return Promise.all(items.map(item => remove.remove(path.join(dir, item))))\n})\n\nfunction emptyDirSync (dir) {\n let items\n try {\n items = fs.readdirSync(dir)\n } catch {\n return mkdir.mkdirsSync(dir)\n }\n\n items.forEach(item => {\n item = path.join(dir, item)\n remove.removeSync(item)\n })\n}\n\nmodule.exports = {\n emptyDirSync,\n emptydirSync: emptyDirSync,\n emptyDir,\n emptydir: emptyDir\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\nconst mkdir = require('../mkdirs')\n\nasync function createFile (file) {\n let stats\n try {\n stats = await fs.stat(file)\n } catch { }\n if (stats && stats.isFile()) return\n\n const dir = path.dirname(file)\n\n let dirStats = null\n try {\n dirStats = await fs.stat(dir)\n } catch (err) {\n // if the directory doesn't exist, make it\n if (err.code === 'ENOENT') {\n await mkdir.mkdirs(dir)\n await fs.writeFile(file, '')\n return\n } else {\n throw err\n }\n }\n\n if (dirStats.isDirectory()) {\n await fs.writeFile(file, '')\n } else {\n // parent is not a directory\n // This is just to cause an internal ENOTDIR error to be thrown\n await fs.readdir(dir)\n }\n}\n\nfunction createFileSync (file) {\n let stats\n try {\n stats = fs.statSync(file)\n } catch { }\n if (stats && stats.isFile()) return\n\n const dir = path.dirname(file)\n try {\n if (!fs.statSync(dir).isDirectory()) {\n // parent is not a directory\n // This is just to cause an internal ENOTDIR error to be thrown\n fs.readdirSync(dir)\n }\n } catch (err) {\n // If the stat call above failed because the directory doesn't exist, create it\n if (err && err.code === 'ENOENT') mkdir.mkdirsSync(dir)\n else throw err\n }\n\n fs.writeFileSync(file, '')\n}\n\nmodule.exports = {\n createFile: u(createFile),\n createFileSync\n}\n","'use strict'\n\nconst { createFile, createFileSync } = require('./file')\nconst { createLink, createLinkSync } = require('./link')\nconst { createSymlink, createSymlinkSync } = require('./symlink')\n\nmodule.exports = {\n // file\n createFile,\n createFileSync,\n ensureFile: createFile,\n ensureFileSync: createFileSync,\n // link\n createLink,\n createLinkSync,\n ensureLink: createLink,\n ensureLinkSync: createLinkSync,\n // symlink\n createSymlink,\n createSymlinkSync,\n ensureSymlink: createSymlink,\n ensureSymlinkSync: createSymlinkSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\nconst mkdir = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst { areIdentical } = require('../util/stat')\n\nasync function createLink (srcpath, dstpath) {\n let dstStat\n try {\n dstStat = await fs.lstat(dstpath)\n } catch {\n // ignore error\n }\n\n let srcStat\n try {\n srcStat = await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureLink')\n throw err\n }\n\n if (dstStat && areIdentical(srcStat, dstStat)) return\n\n const dir = path.dirname(dstpath)\n\n const dirExists = await pathExists(dir)\n\n if (!dirExists) {\n await mkdir.mkdirs(dir)\n }\n\n await fs.link(srcpath, dstpath)\n}\n\nfunction createLinkSync (srcpath, dstpath) {\n let dstStat\n try {\n dstStat = fs.lstatSync(dstpath)\n } catch {}\n\n try {\n const srcStat = fs.lstatSync(srcpath)\n if (dstStat && areIdentical(srcStat, dstStat)) return\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureLink')\n throw err\n }\n\n const dir = path.dirname(dstpath)\n const dirExists = fs.existsSync(dir)\n if (dirExists) return fs.linkSync(srcpath, dstpath)\n mkdir.mkdirsSync(dir)\n\n return fs.linkSync(srcpath, dstpath)\n}\n\nmodule.exports = {\n createLink: u(createLink),\n createLinkSync\n}\n","'use strict'\n\nconst path = require('path')\nconst fs = require('../fs')\nconst { pathExists } = require('../path-exists')\n\nconst u = require('universalify').fromPromise\n\n/**\n * Function that returns two types of paths, one relative to symlink, and one\n * relative to the current working directory. Checks if path is absolute or\n * relative. If the path is relative, this function checks if the path is\n * relative to symlink or relative to current working directory. This is an\n * initiative to find a smarter `srcpath` to supply when building symlinks.\n * This allows you to determine which path to use out of one of three possible\n * types of source paths. The first is an absolute path. This is detected by\n * `path.isAbsolute()`. When an absolute path is provided, it is checked to\n * see if it exists. If it does it's used, if not an error is returned\n * (callback)/ thrown (sync). The other two options for `srcpath` are a\n * relative url. By default Node's `fs.symlink` works by creating a symlink\n * using `dstpath` and expects the `srcpath` to be relative to the newly\n * created symlink. If you provide a `srcpath` that does not exist on the file\n * system it results in a broken symlink. To minimize this, the function\n * checks to see if the 'relative to symlink' source file exists, and if it\n * does it will use it. If it does not, it checks if there's a file that\n * exists that is relative to the current working directory, if does its used.\n * This preserves the expectations of the original fs.symlink spec and adds\n * the ability to pass in `relative to current working direcotry` paths.\n */\n\nasync function symlinkPaths (srcpath, dstpath) {\n if (path.isAbsolute(srcpath)) {\n try {\n await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureSymlink')\n throw err\n }\n\n return {\n toCwd: srcpath,\n toDst: srcpath\n }\n }\n\n const dstdir = path.dirname(dstpath)\n const relativeToDst = path.join(dstdir, srcpath)\n\n const exists = await pathExists(relativeToDst)\n if (exists) {\n return {\n toCwd: relativeToDst,\n toDst: srcpath\n }\n }\n\n try {\n await fs.lstat(srcpath)\n } catch (err) {\n err.message = err.message.replace('lstat', 'ensureSymlink')\n throw err\n }\n\n return {\n toCwd: srcpath,\n toDst: path.relative(dstdir, srcpath)\n }\n}\n\nfunction symlinkPathsSync (srcpath, dstpath) {\n if (path.isAbsolute(srcpath)) {\n const exists = fs.existsSync(srcpath)\n if (!exists) throw new Error('absolute srcpath does not exist')\n return {\n toCwd: srcpath,\n toDst: srcpath\n }\n }\n\n const dstdir = path.dirname(dstpath)\n const relativeToDst = path.join(dstdir, srcpath)\n const exists = fs.existsSync(relativeToDst)\n if (exists) {\n return {\n toCwd: relativeToDst,\n toDst: srcpath\n }\n }\n\n const srcExists = fs.existsSync(srcpath)\n if (!srcExists) throw new Error('relative srcpath does not exist')\n return {\n toCwd: srcpath,\n toDst: path.relative(dstdir, srcpath)\n }\n}\n\nmodule.exports = {\n symlinkPaths: u(symlinkPaths),\n symlinkPathsSync\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst u = require('universalify').fromPromise\n\nasync function symlinkType (srcpath, type) {\n if (type) return type\n\n let stats\n try {\n stats = await fs.lstat(srcpath)\n } catch {\n return 'file'\n }\n\n return (stats && stats.isDirectory()) ? 'dir' : 'file'\n}\n\nfunction symlinkTypeSync (srcpath, type) {\n if (type) return type\n\n let stats\n try {\n stats = fs.lstatSync(srcpath)\n } catch {\n return 'file'\n }\n return (stats && stats.isDirectory()) ? 'dir' : 'file'\n}\n\nmodule.exports = {\n symlinkType: u(symlinkType),\n symlinkTypeSync\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst path = require('path')\nconst fs = require('../fs')\n\nconst { mkdirs, mkdirsSync } = require('../mkdirs')\n\nconst { symlinkPaths, symlinkPathsSync } = require('./symlink-paths')\nconst { symlinkType, symlinkTypeSync } = require('./symlink-type')\n\nconst { pathExists } = require('../path-exists')\n\nconst { areIdentical } = require('../util/stat')\n\nasync function createSymlink (srcpath, dstpath, type) {\n let stats\n try {\n stats = await fs.lstat(dstpath)\n } catch { }\n\n if (stats && stats.isSymbolicLink()) {\n const [srcStat, dstStat] = await Promise.all([\n fs.stat(srcpath),\n fs.stat(dstpath)\n ])\n\n if (areIdentical(srcStat, dstStat)) return\n }\n\n const relative = await symlinkPaths(srcpath, dstpath)\n srcpath = relative.toDst\n const toType = await symlinkType(relative.toCwd, type)\n const dir = path.dirname(dstpath)\n\n if (!(await pathExists(dir))) {\n await mkdirs(dir)\n }\n\n return fs.symlink(srcpath, dstpath, toType)\n}\n\nfunction createSymlinkSync (srcpath, dstpath, type) {\n let stats\n try {\n stats = fs.lstatSync(dstpath)\n } catch { }\n if (stats && stats.isSymbolicLink()) {\n const srcStat = fs.statSync(srcpath)\n const dstStat = fs.statSync(dstpath)\n if (areIdentical(srcStat, dstStat)) return\n }\n\n const relative = symlinkPathsSync(srcpath, dstpath)\n srcpath = relative.toDst\n type = symlinkTypeSync(relative.toCwd, type)\n const dir = path.dirname(dstpath)\n const exists = fs.existsSync(dir)\n if (exists) return fs.symlinkSync(srcpath, dstpath, type)\n mkdirsSync(dir)\n return fs.symlinkSync(srcpath, dstpath, type)\n}\n\nmodule.exports = {\n createSymlink: u(createSymlink),\n createSymlinkSync\n}\n","'use strict'\n// This is adapted from https://github.com/normalize/mz\n// Copyright (c) 2014-2016 Jonathan Ong me@jongleberry.com and Contributors\nconst u = require('universalify').fromCallback\nconst fs = require('graceful-fs')\n\nconst api = [\n 'access',\n 'appendFile',\n 'chmod',\n 'chown',\n 'close',\n 'copyFile',\n 'fchmod',\n 'fchown',\n 'fdatasync',\n 'fstat',\n 'fsync',\n 'ftruncate',\n 'futimes',\n 'lchmod',\n 'lchown',\n 'link',\n 'lstat',\n 'mkdir',\n 'mkdtemp',\n 'open',\n 'opendir',\n 'readdir',\n 'readFile',\n 'readlink',\n 'realpath',\n 'rename',\n 'rm',\n 'rmdir',\n 'stat',\n 'symlink',\n 'truncate',\n 'unlink',\n 'utimes',\n 'writeFile'\n].filter(key => {\n // Some commands are not available on some systems. Ex:\n // fs.cp was added in Node.js v16.7.0\n // fs.lchown is not available on at least some Linux\n return typeof fs[key] === 'function'\n})\n\n// Export cloned fs:\nObject.assign(exports, fs)\n\n// Universalify async methods:\napi.forEach(method => {\n exports[method] = u(fs[method])\n})\n\n// We differ from mz/fs in that we still ship the old, broken, fs.exists()\n// since we are a drop-in replacement for the native module\nexports.exists = function (filename, callback) {\n if (typeof callback === 'function') {\n return fs.exists(filename, callback)\n }\n return new Promise(resolve => {\n return fs.exists(filename, resolve)\n })\n}\n\n// fs.read(), fs.write(), fs.readv(), & fs.writev() need special treatment due to multiple callback args\n\nexports.read = function (fd, buffer, offset, length, position, callback) {\n if (typeof callback === 'function') {\n return fs.read(fd, buffer, offset, length, position, callback)\n }\n return new Promise((resolve, reject) => {\n fs.read(fd, buffer, offset, length, position, (err, bytesRead, buffer) => {\n if (err) return reject(err)\n resolve({ bytesRead, buffer })\n })\n })\n}\n\n// Function signature can be\n// fs.write(fd, buffer[, offset[, length[, position]]], callback)\n// OR\n// fs.write(fd, string[, position[, encoding]], callback)\n// We need to handle both cases, so we use ...args\nexports.write = function (fd, buffer, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.write(fd, buffer, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.write(fd, buffer, ...args, (err, bytesWritten, buffer) => {\n if (err) return reject(err)\n resolve({ bytesWritten, buffer })\n })\n })\n}\n\n// Function signature is\n// s.readv(fd, buffers[, position], callback)\n// We need to handle the optional arg, so we use ...args\nexports.readv = function (fd, buffers, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.readv(fd, buffers, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.readv(fd, buffers, ...args, (err, bytesRead, buffers) => {\n if (err) return reject(err)\n resolve({ bytesRead, buffers })\n })\n })\n}\n\n// Function signature is\n// s.writev(fd, buffers[, position], callback)\n// We need to handle the optional arg, so we use ...args\nexports.writev = function (fd, buffers, ...args) {\n if (typeof args[args.length - 1] === 'function') {\n return fs.writev(fd, buffers, ...args)\n }\n\n return new Promise((resolve, reject) => {\n fs.writev(fd, buffers, ...args, (err, bytesWritten, buffers) => {\n if (err) return reject(err)\n resolve({ bytesWritten, buffers })\n })\n })\n}\n\n// fs.realpath.native sometimes not available if fs is monkey-patched\nif (typeof fs.realpath.native === 'function') {\n exports.realpath.native = u(fs.realpath.native)\n} else {\n process.emitWarning(\n 'fs.realpath.native is not a function. Is fs being monkey-patched?',\n 'Warning', 'fs-extra-WARN0003'\n )\n}\n","'use strict'\n\nmodule.exports = {\n // Export promiseified graceful-fs:\n ...require('./fs'),\n // Export extra methods:\n ...require('./copy'),\n ...require('./empty'),\n ...require('./ensure'),\n ...require('./json'),\n ...require('./mkdirs'),\n ...require('./move'),\n ...require('./output-file'),\n ...require('./path-exists'),\n ...require('./remove')\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst jsonFile = require('./jsonfile')\n\njsonFile.outputJson = u(require('./output-json'))\njsonFile.outputJsonSync = require('./output-json-sync')\n// aliases\njsonFile.outputJSON = jsonFile.outputJson\njsonFile.outputJSONSync = jsonFile.outputJsonSync\njsonFile.writeJSON = jsonFile.writeJson\njsonFile.writeJSONSync = jsonFile.writeJsonSync\njsonFile.readJSON = jsonFile.readJson\njsonFile.readJSONSync = jsonFile.readJsonSync\n\nmodule.exports = jsonFile\n","'use strict'\n\nconst jsonFile = require('jsonfile')\n\nmodule.exports = {\n // jsonfile exports\n readJson: jsonFile.readFile,\n readJsonSync: jsonFile.readFileSync,\n writeJson: jsonFile.writeFile,\n writeJsonSync: jsonFile.writeFileSync\n}\n","'use strict'\n\nconst { stringify } = require('jsonfile/utils')\nconst { outputFileSync } = require('../output-file')\n\nfunction outputJsonSync (file, data, options) {\n const str = stringify(data, options)\n\n outputFileSync(file, str, options)\n}\n\nmodule.exports = outputJsonSync\n","'use strict'\n\nconst { stringify } = require('jsonfile/utils')\nconst { outputFile } = require('../output-file')\n\nasync function outputJson (file, data, options = {}) {\n const str = stringify(data, options)\n\n await outputFile(file, str, options)\n}\n\nmodule.exports = outputJson\n","'use strict'\nconst u = require('universalify').fromPromise\nconst { makeDir: _makeDir, makeDirSync } = require('./make-dir')\nconst makeDir = u(_makeDir)\n\nmodule.exports = {\n mkdirs: makeDir,\n mkdirsSync: makeDirSync,\n // alias\n mkdirp: makeDir,\n mkdirpSync: makeDirSync,\n ensureDir: makeDir,\n ensureDirSync: makeDirSync\n}\n","'use strict'\nconst fs = require('../fs')\nconst { checkPath } = require('./utils')\n\nconst getMode = options => {\n const defaults = { mode: 0o777 }\n if (typeof options === 'number') return options\n return ({ ...defaults, ...options }).mode\n}\n\nmodule.exports.makeDir = async (dir, options) => {\n checkPath(dir)\n\n return fs.mkdir(dir, {\n mode: getMode(options),\n recursive: true\n })\n}\n\nmodule.exports.makeDirSync = (dir, options) => {\n checkPath(dir)\n\n return fs.mkdirSync(dir, {\n mode: getMode(options),\n recursive: true\n })\n}\n","// Adapted from https://github.com/sindresorhus/make-dir\n// Copyright (c) Sindre Sorhus (sindresorhus.com)\n// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict'\nconst path = require('path')\n\n// https://github.com/nodejs/node/issues/8987\n// https://github.com/libuv/libuv/pull/1088\nmodule.exports.checkPath = function checkPath (pth) {\n if (process.platform === 'win32') {\n const pathHasInvalidWinCharacters = /[<>:\"|?*]/.test(pth.replace(path.parse(pth).root, ''))\n\n if (pathHasInvalidWinCharacters) {\n const error = new Error(`Path contains invalid characters: ${pth}`)\n error.code = 'EINVAL'\n throw error\n }\n }\n}\n","'use strict'\n\nconst u = require('universalify').fromPromise\nmodule.exports = {\n move: u(require('./move')),\n moveSync: require('./move-sync')\n}\n","'use strict'\n\nconst fs = require('graceful-fs')\nconst path = require('path')\nconst copySync = require('../copy').copySync\nconst removeSync = require('../remove').removeSync\nconst mkdirpSync = require('../mkdirs').mkdirpSync\nconst stat = require('../util/stat')\n\nfunction moveSync (src, dest, opts) {\n opts = opts || {}\n const overwrite = opts.overwrite || opts.clobber || false\n\n const { srcStat, isChangingCase = false } = stat.checkPathsSync(src, dest, 'move', opts)\n stat.checkParentPathsSync(src, srcStat, dest, 'move')\n if (!isParentRoot(dest)) mkdirpSync(path.dirname(dest))\n return doRename(src, dest, overwrite, isChangingCase)\n}\n\nfunction isParentRoot (dest) {\n const parent = path.dirname(dest)\n const parsedPath = path.parse(parent)\n return parsedPath.root === parent\n}\n\nfunction doRename (src, dest, overwrite, isChangingCase) {\n if (isChangingCase) return rename(src, dest, overwrite)\n if (overwrite) {\n removeSync(dest)\n return rename(src, dest, overwrite)\n }\n if (fs.existsSync(dest)) throw new Error('dest already exists.')\n return rename(src, dest, overwrite)\n}\n\nfunction rename (src, dest, overwrite) {\n try {\n fs.renameSync(src, dest)\n } catch (err) {\n if (err.code !== 'EXDEV') throw err\n return moveAcrossDevice(src, dest, overwrite)\n }\n}\n\nfunction moveAcrossDevice (src, dest, overwrite) {\n const opts = {\n overwrite,\n errorOnExist: true,\n preserveTimestamps: true\n }\n copySync(src, dest, opts)\n return removeSync(src)\n}\n\nmodule.exports = moveSync\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst { copy } = require('../copy')\nconst { remove } = require('../remove')\nconst { mkdirp } = require('../mkdirs')\nconst { pathExists } = require('../path-exists')\nconst stat = require('../util/stat')\n\nasync function move (src, dest, opts = {}) {\n const overwrite = opts.overwrite || opts.clobber || false\n\n const { srcStat, isChangingCase = false } = await stat.checkPaths(src, dest, 'move', opts)\n\n await stat.checkParentPaths(src, srcStat, dest, 'move')\n\n // If the parent of dest is not root, make sure it exists before proceeding\n const destParent = path.dirname(dest)\n const parsedParentPath = path.parse(destParent)\n if (parsedParentPath.root !== destParent) {\n await mkdirp(destParent)\n }\n\n return doRename(src, dest, overwrite, isChangingCase)\n}\n\nasync function doRename (src, dest, overwrite, isChangingCase) {\n if (!isChangingCase) {\n if (overwrite) {\n await remove(dest)\n } else if (await pathExists(dest)) {\n throw new Error('dest already exists.')\n }\n }\n\n try {\n // Try w/ rename first, and try copy + remove if EXDEV\n await fs.rename(src, dest)\n } catch (err) {\n if (err.code !== 'EXDEV') {\n throw err\n }\n await moveAcrossDevice(src, dest, overwrite)\n }\n}\n\nasync function moveAcrossDevice (src, dest, overwrite) {\n const opts = {\n overwrite,\n errorOnExist: true,\n preserveTimestamps: true\n }\n\n await copy(src, dest, opts)\n return remove(src)\n}\n\nmodule.exports = move\n","'use strict'\n\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\nconst path = require('path')\nconst mkdir = require('../mkdirs')\nconst pathExists = require('../path-exists').pathExists\n\nasync function outputFile (file, data, encoding = 'utf-8') {\n const dir = path.dirname(file)\n\n if (!(await pathExists(dir))) {\n await mkdir.mkdirs(dir)\n }\n\n return fs.writeFile(file, data, encoding)\n}\n\nfunction outputFileSync (file, ...args) {\n const dir = path.dirname(file)\n if (!fs.existsSync(dir)) {\n mkdir.mkdirsSync(dir)\n }\n\n fs.writeFileSync(file, ...args)\n}\n\nmodule.exports = {\n outputFile: u(outputFile),\n outputFileSync\n}\n","'use strict'\nconst u = require('universalify').fromPromise\nconst fs = require('../fs')\n\nfunction pathExists (path) {\n return fs.access(path).then(() => true).catch(() => false)\n}\n\nmodule.exports = {\n pathExists: u(pathExists),\n pathExistsSync: fs.existsSync\n}\n","'use strict'\n\nconst fs = require('graceful-fs')\nconst u = require('universalify').fromCallback\n\nfunction remove (path, callback) {\n fs.rm(path, { recursive: true, force: true }, callback)\n}\n\nfunction removeSync (path) {\n fs.rmSync(path, { recursive: true, force: true })\n}\n\nmodule.exports = {\n remove: u(remove),\n removeSync\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst path = require('path')\nconst u = require('universalify').fromPromise\n\nfunction getStats (src, dest, opts) {\n const statFunc = opts.dereference\n ? (file) => fs.stat(file, { bigint: true })\n : (file) => fs.lstat(file, { bigint: true })\n return Promise.all([\n statFunc(src),\n statFunc(dest).catch(err => {\n if (err.code === 'ENOENT') return null\n throw err\n })\n ]).then(([srcStat, destStat]) => ({ srcStat, destStat }))\n}\n\nfunction getStatsSync (src, dest, opts) {\n let destStat\n const statFunc = opts.dereference\n ? (file) => fs.statSync(file, { bigint: true })\n : (file) => fs.lstatSync(file, { bigint: true })\n const srcStat = statFunc(src)\n try {\n destStat = statFunc(dest)\n } catch (err) {\n if (err.code === 'ENOENT') return { srcStat, destStat: null }\n throw err\n }\n return { srcStat, destStat }\n}\n\nasync function checkPaths (src, dest, funcName, opts) {\n const { srcStat, destStat } = await getStats(src, dest, opts)\n if (destStat) {\n if (areIdentical(srcStat, destStat)) {\n const srcBaseName = path.basename(src)\n const destBaseName = path.basename(dest)\n if (funcName === 'move' &&\n srcBaseName !== destBaseName &&\n srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {\n return { srcStat, destStat, isChangingCase: true }\n }\n throw new Error('Source and destination must not be the same.')\n }\n if (srcStat.isDirectory() && !destStat.isDirectory()) {\n throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)\n }\n if (!srcStat.isDirectory() && destStat.isDirectory()) {\n throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)\n }\n }\n\n if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n\n return { srcStat, destStat }\n}\n\nfunction checkPathsSync (src, dest, funcName, opts) {\n const { srcStat, destStat } = getStatsSync(src, dest, opts)\n\n if (destStat) {\n if (areIdentical(srcStat, destStat)) {\n const srcBaseName = path.basename(src)\n const destBaseName = path.basename(dest)\n if (funcName === 'move' &&\n srcBaseName !== destBaseName &&\n srcBaseName.toLowerCase() === destBaseName.toLowerCase()) {\n return { srcStat, destStat, isChangingCase: true }\n }\n throw new Error('Source and destination must not be the same.')\n }\n if (srcStat.isDirectory() && !destStat.isDirectory()) {\n throw new Error(`Cannot overwrite non-directory '${dest}' with directory '${src}'.`)\n }\n if (!srcStat.isDirectory() && destStat.isDirectory()) {\n throw new Error(`Cannot overwrite directory '${dest}' with non-directory '${src}'.`)\n }\n }\n\n if (srcStat.isDirectory() && isSrcSubdir(src, dest)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n return { srcStat, destStat }\n}\n\n// recursively check if dest parent is a subdirectory of src.\n// It works for all file types including symlinks since it\n// checks the src and dest inodes. It starts from the deepest\n// parent and stops once it reaches the src parent or the root path.\nasync function checkParentPaths (src, srcStat, dest, funcName) {\n const srcParent = path.resolve(path.dirname(src))\n const destParent = path.resolve(path.dirname(dest))\n if (destParent === srcParent || destParent === path.parse(destParent).root) return\n\n let destStat\n try {\n destStat = await fs.stat(destParent, { bigint: true })\n } catch (err) {\n if (err.code === 'ENOENT') return\n throw err\n }\n\n if (areIdentical(srcStat, destStat)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n\n return checkParentPaths(src, srcStat, destParent, funcName)\n}\n\nfunction checkParentPathsSync (src, srcStat, dest, funcName) {\n const srcParent = path.resolve(path.dirname(src))\n const destParent = path.resolve(path.dirname(dest))\n if (destParent === srcParent || destParent === path.parse(destParent).root) return\n let destStat\n try {\n destStat = fs.statSync(destParent, { bigint: true })\n } catch (err) {\n if (err.code === 'ENOENT') return\n throw err\n }\n if (areIdentical(srcStat, destStat)) {\n throw new Error(errMsg(src, dest, funcName))\n }\n return checkParentPathsSync(src, srcStat, destParent, funcName)\n}\n\nfunction areIdentical (srcStat, destStat) {\n return destStat.ino && destStat.dev && destStat.ino === srcStat.ino && destStat.dev === srcStat.dev\n}\n\n// return true if dest is a subdir of src, otherwise false.\n// It only checks the path strings.\nfunction isSrcSubdir (src, dest) {\n const srcArr = path.resolve(src).split(path.sep).filter(i => i)\n const destArr = path.resolve(dest).split(path.sep).filter(i => i)\n return srcArr.every((cur, i) => destArr[i] === cur)\n}\n\nfunction errMsg (src, dest, funcName) {\n return `Cannot ${funcName} '${src}' to a subdirectory of itself, '${dest}'.`\n}\n\nmodule.exports = {\n // checkPaths\n checkPaths: u(checkPaths),\n checkPathsSync,\n // checkParent\n checkParentPaths: u(checkParentPaths),\n checkParentPathsSync,\n // Misc\n isSrcSubdir,\n areIdentical\n}\n","'use strict'\n\nconst fs = require('../fs')\nconst u = require('universalify').fromPromise\n\nasync function utimesMillis (path, atime, mtime) {\n // if (!HAS_MILLIS_RES) return fs.utimes(path, atime, mtime, callback)\n const fd = await fs.open(path, 'r+')\n\n let closeErr = null\n\n try {\n await fs.futimes(fd, atime, mtime)\n } finally {\n try {\n await fs.close(fd)\n } catch (e) {\n closeErr = e\n }\n }\n\n if (closeErr) {\n throw closeErr\n }\n}\n\nfunction utimesMillisSync (path, atime, mtime) {\n const fd = fs.openSync(path, 'r+')\n fs.futimesSync(fd, atime, mtime)\n return fs.closeSync(fd)\n}\n\nmodule.exports = {\n utimesMillis: u(utimesMillis),\n utimesMillisSync\n}\n","'use strict'\n\nmodule.exports = clone\n\nvar getPrototypeOf = Object.getPrototypeOf || function (obj) {\n return obj.__proto__\n}\n\nfunction clone (obj) {\n if (obj === null || typeof obj !== 'object')\n return obj\n\n if (obj instanceof Object)\n var copy = { __proto__: getPrototypeOf(obj) }\n else\n var copy = Object.create(null)\n\n Object.getOwnPropertyNames(obj).forEach(function (key) {\n Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key))\n })\n\n return copy\n}\n","var fs = require('fs')\nvar polyfills = require('./polyfills.js')\nvar legacy = require('./legacy-streams.js')\nvar clone = require('./clone.js')\n\nvar util = require('util')\n\n/* istanbul ignore next - node 0.x polyfill */\nvar gracefulQueue\nvar previousSymbol\n\n/* istanbul ignore else - node 0.x polyfill */\nif (typeof Symbol === 'function' && typeof Symbol.for === 'function') {\n gracefulQueue = Symbol.for('graceful-fs.queue')\n // This is used in testing by future versions\n previousSymbol = Symbol.for('graceful-fs.previous')\n} else {\n gracefulQueue = '___graceful-fs.queue'\n previousSymbol = '___graceful-fs.previous'\n}\n\nfunction noop () {}\n\nfunction publishQueue(context, queue) {\n Object.defineProperty(context, gracefulQueue, {\n get: function() {\n return queue\n }\n })\n}\n\nvar debug = noop\nif (util.debuglog)\n debug = util.debuglog('gfs4')\nelse if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || ''))\n debug = function() {\n var m = util.format.apply(util, arguments)\n m = 'GFS4: ' + m.split(/\\n/).join('\\nGFS4: ')\n console.error(m)\n }\n\n// Once time initialization\nif (!fs[gracefulQueue]) {\n // This queue can be shared by multiple loaded instances\n var queue = global[gracefulQueue] || []\n publishQueue(fs, queue)\n\n // Patch fs.close/closeSync to shared queue version, because we need\n // to retry() whenever a close happens *anywhere* in the program.\n // This is essential when multiple graceful-fs instances are\n // in play at the same time.\n fs.close = (function (fs$close) {\n function close (fd, cb) {\n return fs$close.call(fs, fd, function (err) {\n // This function uses the graceful-fs shared queue\n if (!err) {\n resetQueue()\n }\n\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n })\n }\n\n Object.defineProperty(close, previousSymbol, {\n value: fs$close\n })\n return close\n })(fs.close)\n\n fs.closeSync = (function (fs$closeSync) {\n function closeSync (fd) {\n // This function uses the graceful-fs shared queue\n fs$closeSync.apply(fs, arguments)\n resetQueue()\n }\n\n Object.defineProperty(closeSync, previousSymbol, {\n value: fs$closeSync\n })\n return closeSync\n })(fs.closeSync)\n\n if (/\\bgfs4\\b/i.test(process.env.NODE_DEBUG || '')) {\n process.on('exit', function() {\n debug(fs[gracefulQueue])\n require('assert').equal(fs[gracefulQueue].length, 0)\n })\n }\n}\n\nif (!global[gracefulQueue]) {\n publishQueue(global, fs[gracefulQueue]);\n}\n\nmodule.exports = patch(clone(fs))\nif (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) {\n module.exports = patch(fs)\n fs.__patched = true;\n}\n\nfunction patch (fs) {\n // Everything that references the open() function needs to be in here\n polyfills(fs)\n fs.gracefulify = patch\n\n fs.createReadStream = createReadStream\n fs.createWriteStream = createWriteStream\n var fs$readFile = fs.readFile\n fs.readFile = readFile\n function readFile (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$readFile(path, options, cb)\n\n function go$readFile (path, options, cb, startTime) {\n return fs$readFile(path, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$writeFile = fs.writeFile\n fs.writeFile = writeFile\n function writeFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$writeFile(path, data, options, cb)\n\n function go$writeFile (path, data, options, cb, startTime) {\n return fs$writeFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$appendFile = fs.appendFile\n if (fs$appendFile)\n fs.appendFile = appendFile\n function appendFile (path, data, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n return go$appendFile(path, data, options, cb)\n\n function go$appendFile (path, data, options, cb, startTime) {\n return fs$appendFile(path, data, options, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$copyFile = fs.copyFile\n if (fs$copyFile)\n fs.copyFile = copyFile\n function copyFile (src, dest, flags, cb) {\n if (typeof flags === 'function') {\n cb = flags\n flags = 0\n }\n return go$copyFile(src, dest, flags, cb)\n\n function go$copyFile (src, dest, flags, cb, startTime) {\n return fs$copyFile(src, dest, flags, function (err) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n var fs$readdir = fs.readdir\n fs.readdir = readdir\n var noReaddirOptionVersions = /^v[0-5]\\./\n function readdir (path, options, cb) {\n if (typeof options === 'function')\n cb = options, options = null\n\n var go$readdir = noReaddirOptionVersions.test(process.version)\n ? function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n : function go$readdir (path, options, cb, startTime) {\n return fs$readdir(path, options, fs$readdirCallback(\n path, options, cb, startTime\n ))\n }\n\n return go$readdir(path, options, cb)\n\n function fs$readdirCallback (path, options, cb, startTime) {\n return function (err, files) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([\n go$readdir,\n [path, options, cb],\n err,\n startTime || Date.now(),\n Date.now()\n ])\n else {\n if (files && files.sort)\n files.sort()\n\n if (typeof cb === 'function')\n cb.call(this, err, files)\n }\n }\n }\n }\n\n if (process.version.substr(0, 4) === 'v0.8') {\n var legStreams = legacy(fs)\n ReadStream = legStreams.ReadStream\n WriteStream = legStreams.WriteStream\n }\n\n var fs$ReadStream = fs.ReadStream\n if (fs$ReadStream) {\n ReadStream.prototype = Object.create(fs$ReadStream.prototype)\n ReadStream.prototype.open = ReadStream$open\n }\n\n var fs$WriteStream = fs.WriteStream\n if (fs$WriteStream) {\n WriteStream.prototype = Object.create(fs$WriteStream.prototype)\n WriteStream.prototype.open = WriteStream$open\n }\n\n Object.defineProperty(fs, 'ReadStream', {\n get: function () {\n return ReadStream\n },\n set: function (val) {\n ReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n Object.defineProperty(fs, 'WriteStream', {\n get: function () {\n return WriteStream\n },\n set: function (val) {\n WriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n // legacy names\n var FileReadStream = ReadStream\n Object.defineProperty(fs, 'FileReadStream', {\n get: function () {\n return FileReadStream\n },\n set: function (val) {\n FileReadStream = val\n },\n enumerable: true,\n configurable: true\n })\n var FileWriteStream = WriteStream\n Object.defineProperty(fs, 'FileWriteStream', {\n get: function () {\n return FileWriteStream\n },\n set: function (val) {\n FileWriteStream = val\n },\n enumerable: true,\n configurable: true\n })\n\n function ReadStream (path, options) {\n if (this instanceof ReadStream)\n return fs$ReadStream.apply(this, arguments), this\n else\n return ReadStream.apply(Object.create(ReadStream.prototype), arguments)\n }\n\n function ReadStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n if (that.autoClose)\n that.destroy()\n\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n that.read()\n }\n })\n }\n\n function WriteStream (path, options) {\n if (this instanceof WriteStream)\n return fs$WriteStream.apply(this, arguments), this\n else\n return WriteStream.apply(Object.create(WriteStream.prototype), arguments)\n }\n\n function WriteStream$open () {\n var that = this\n open(that.path, that.flags, that.mode, function (err, fd) {\n if (err) {\n that.destroy()\n that.emit('error', err)\n } else {\n that.fd = fd\n that.emit('open', fd)\n }\n })\n }\n\n function createReadStream (path, options) {\n return new fs.ReadStream(path, options)\n }\n\n function createWriteStream (path, options) {\n return new fs.WriteStream(path, options)\n }\n\n var fs$open = fs.open\n fs.open = open\n function open (path, flags, mode, cb) {\n if (typeof mode === 'function')\n cb = mode, mode = null\n\n return go$open(path, flags, mode, cb)\n\n function go$open (path, flags, mode, cb, startTime) {\n return fs$open(path, flags, mode, function (err, fd) {\n if (err && (err.code === 'EMFILE' || err.code === 'ENFILE'))\n enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()])\n else {\n if (typeof cb === 'function')\n cb.apply(this, arguments)\n }\n })\n }\n }\n\n return fs\n}\n\nfunction enqueue (elem) {\n debug('ENQUEUE', elem[0].name, elem[1])\n fs[gracefulQueue].push(elem)\n retry()\n}\n\n// keep track of the timeout between retry() calls\nvar retryTimer\n\n// reset the startTime and lastTime to now\n// this resets the start of the 60 second overall timeout as well as the\n// delay between attempts so that we'll retry these jobs sooner\nfunction resetQueue () {\n var now = Date.now()\n for (var i = 0; i < fs[gracefulQueue].length; ++i) {\n // entries that are only a length of 2 are from an older version, don't\n // bother modifying those since they'll be retried anyway.\n if (fs[gracefulQueue][i].length > 2) {\n fs[gracefulQueue][i][3] = now // startTime\n fs[gracefulQueue][i][4] = now // lastTime\n }\n }\n // call retry to make sure we're actively processing the queue\n retry()\n}\n\nfunction retry () {\n // clear the timer and remove it to help prevent unintended concurrency\n clearTimeout(retryTimer)\n retryTimer = undefined\n\n if (fs[gracefulQueue].length === 0)\n return\n\n var elem = fs[gracefulQueue].shift()\n var fn = elem[0]\n var args = elem[1]\n // these items may be unset if they were added by an older graceful-fs\n var err = elem[2]\n var startTime = elem[3]\n var lastTime = elem[4]\n\n // if we don't have a startTime we have no way of knowing if we've waited\n // long enough, so go ahead and retry this item now\n if (startTime === undefined) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args)\n } else if (Date.now() - startTime >= 60000) {\n // it's been more than 60 seconds total, bail now\n debug('TIMEOUT', fn.name, args)\n var cb = args.pop()\n if (typeof cb === 'function')\n cb.call(null, err)\n } else {\n // the amount of time between the last attempt and right now\n var sinceAttempt = Date.now() - lastTime\n // the amount of time between when we first tried, and when we last tried\n // rounded up to at least 1\n var sinceStart = Math.max(lastTime - startTime, 1)\n // backoff. wait longer than the total time we've been retrying, but only\n // up to a maximum of 100ms\n var desiredDelay = Math.min(sinceStart * 1.2, 100)\n // it's been long enough since the last retry, do it again\n if (sinceAttempt >= desiredDelay) {\n debug('RETRY', fn.name, args)\n fn.apply(null, args.concat([startTime]))\n } else {\n // if we can't do this job yet, push it to the end of the queue\n // and let the next iteration check again\n fs[gracefulQueue].push(elem)\n }\n }\n\n // schedule our next run if one isn't already scheduled\n if (retryTimer === undefined) {\n retryTimer = setTimeout(retry, 0)\n }\n}\n","var Stream = require('stream').Stream\n\nmodule.exports = legacy\n\nfunction legacy (fs) {\n return {\n ReadStream: ReadStream,\n WriteStream: WriteStream\n }\n\n function ReadStream (path, options) {\n if (!(this instanceof ReadStream)) return new ReadStream(path, options);\n\n Stream.call(this);\n\n var self = this;\n\n this.path = path;\n this.fd = null;\n this.readable = true;\n this.paused = false;\n\n this.flags = 'r';\n this.mode = 438; /*=0666*/\n this.bufferSize = 64 * 1024;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.encoding) this.setEncoding(this.encoding);\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.end === undefined) {\n this.end = Infinity;\n } else if ('number' !== typeof this.end) {\n throw TypeError('end must be a Number');\n }\n\n if (this.start > this.end) {\n throw new Error('start must be <= end');\n }\n\n this.pos = this.start;\n }\n\n if (this.fd !== null) {\n process.nextTick(function() {\n self._read();\n });\n return;\n }\n\n fs.open(this.path, this.flags, this.mode, function (err, fd) {\n if (err) {\n self.emit('error', err);\n self.readable = false;\n return;\n }\n\n self.fd = fd;\n self.emit('open', fd);\n self._read();\n })\n }\n\n function WriteStream (path, options) {\n if (!(this instanceof WriteStream)) return new WriteStream(path, options);\n\n Stream.call(this);\n\n this.path = path;\n this.fd = null;\n this.writable = true;\n\n this.flags = 'w';\n this.encoding = 'binary';\n this.mode = 438; /*=0666*/\n this.bytesWritten = 0;\n\n options = options || {};\n\n // Mixin options into this\n var keys = Object.keys(options);\n for (var index = 0, length = keys.length; index < length; index++) {\n var key = keys[index];\n this[key] = options[key];\n }\n\n if (this.start !== undefined) {\n if ('number' !== typeof this.start) {\n throw TypeError('start must be a Number');\n }\n if (this.start < 0) {\n throw new Error('start must be >= zero');\n }\n\n this.pos = this.start;\n }\n\n this.busy = false;\n this._queue = [];\n\n if (this.fd === null) {\n this._open = fs.open;\n this._queue.push([this._open, this.path, this.flags, this.mode, undefined]);\n this.flush();\n }\n }\n}\n","var constants = require('constants')\n\nvar origCwd = process.cwd\nvar cwd = null\n\nvar platform = process.env.GRACEFUL_FS_PLATFORM || process.platform\n\nprocess.cwd = function() {\n if (!cwd)\n cwd = origCwd.call(process)\n return cwd\n}\ntry {\n process.cwd()\n} catch (er) {}\n\n// This check is needed until node.js 12 is required\nif (typeof process.chdir === 'function') {\n var chdir = process.chdir\n process.chdir = function (d) {\n cwd = null\n chdir.call(process, d)\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir)\n}\n\nmodule.exports = patch\n\nfunction patch (fs) {\n // (re-)implement some things that are known busted or missing.\n\n // lchmod, broken prior to 0.6.2\n // back-port the fix here.\n if (constants.hasOwnProperty('O_SYMLINK') &&\n process.version.match(/^v0\\.6\\.[0-2]|^v0\\.5\\./)) {\n patchLchmod(fs)\n }\n\n // lutimes implementation, or no-op\n if (!fs.lutimes) {\n patchLutimes(fs)\n }\n\n // https://github.com/isaacs/node-graceful-fs/issues/4\n // Chown should not fail on einval or eperm if non-root.\n // It should not fail on enosys ever, as this just indicates\n // that a fs doesn't support the intended operation.\n\n fs.chown = chownFix(fs.chown)\n fs.fchown = chownFix(fs.fchown)\n fs.lchown = chownFix(fs.lchown)\n\n fs.chmod = chmodFix(fs.chmod)\n fs.fchmod = chmodFix(fs.fchmod)\n fs.lchmod = chmodFix(fs.lchmod)\n\n fs.chownSync = chownFixSync(fs.chownSync)\n fs.fchownSync = chownFixSync(fs.fchownSync)\n fs.lchownSync = chownFixSync(fs.lchownSync)\n\n fs.chmodSync = chmodFixSync(fs.chmodSync)\n fs.fchmodSync = chmodFixSync(fs.fchmodSync)\n fs.lchmodSync = chmodFixSync(fs.lchmodSync)\n\n fs.stat = statFix(fs.stat)\n fs.fstat = statFix(fs.fstat)\n fs.lstat = statFix(fs.lstat)\n\n fs.statSync = statFixSync(fs.statSync)\n fs.fstatSync = statFixSync(fs.fstatSync)\n fs.lstatSync = statFixSync(fs.lstatSync)\n\n // if lchmod/lchown do not exist, then make them no-ops\n if (fs.chmod && !fs.lchmod) {\n fs.lchmod = function (path, mode, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchmodSync = function () {}\n }\n if (fs.chown && !fs.lchown) {\n fs.lchown = function (path, uid, gid, cb) {\n if (cb) process.nextTick(cb)\n }\n fs.lchownSync = function () {}\n }\n\n // on Windows, A/V software can lock the directory, causing this\n // to fail with an EACCES or EPERM if the directory contains newly\n // created files. Try again on failure, for up to 60 seconds.\n\n // Set the timeout this long because some Windows Anti-Virus, such as Parity\n // bit9, may lock files for up to a minute, causing npm package install\n // failures. Also, take care to yield the scheduler. Windows scheduling gives\n // CPU to a busy looping process, which can cause the program causing the lock\n // contention to be starved of CPU by node, so the contention doesn't resolve.\n if (platform === \"win32\") {\n fs.rename = typeof fs.rename !== 'function' ? fs.rename\n : (function (fs$rename) {\n function rename (from, to, cb) {\n var start = Date.now()\n var backoff = 0;\n fs$rename(from, to, function CB (er) {\n if (er\n && (er.code === \"EACCES\" || er.code === \"EPERM\" || er.code === \"EBUSY\")\n && Date.now() - start < 60000) {\n setTimeout(function() {\n fs.stat(to, function (stater, st) {\n if (stater && stater.code === \"ENOENT\")\n fs$rename(from, to, CB);\n else\n cb(er)\n })\n }, backoff)\n if (backoff < 100)\n backoff += 10;\n return;\n }\n if (cb) cb(er)\n })\n }\n if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename)\n return rename\n })(fs.rename)\n }\n\n // if read() returns EAGAIN, then just try it again.\n fs.read = typeof fs.read !== 'function' ? fs.read\n : (function (fs$read) {\n function read (fd, buffer, offset, length, position, callback_) {\n var callback\n if (callback_ && typeof callback_ === 'function') {\n var eagCounter = 0\n callback = function (er, _, __) {\n if (er && er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n callback_.apply(this, arguments)\n }\n }\n return fs$read.call(fs, fd, buffer, offset, length, position, callback)\n }\n\n // This ensures `util.promisify` works as it does for native `fs.read`.\n if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read)\n return read\n })(fs.read)\n\n fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync\n : (function (fs$readSync) { return function (fd, buffer, offset, length, position) {\n var eagCounter = 0\n while (true) {\n try {\n return fs$readSync.call(fs, fd, buffer, offset, length, position)\n } catch (er) {\n if (er.code === 'EAGAIN' && eagCounter < 10) {\n eagCounter ++\n continue\n }\n throw er\n }\n }\n }})(fs.readSync)\n\n function patchLchmod (fs) {\n fs.lchmod = function (path, mode, callback) {\n fs.open( path\n , constants.O_WRONLY | constants.O_SYMLINK\n , mode\n , function (err, fd) {\n if (err) {\n if (callback) callback(err)\n return\n }\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n fs.fchmod(fd, mode, function (err) {\n fs.close(fd, function(err2) {\n if (callback) callback(err || err2)\n })\n })\n })\n }\n\n fs.lchmodSync = function (path, mode) {\n var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode)\n\n // prefer to return the chmod error, if one occurs,\n // but still try to close, and report closing errors if they occur.\n var threw = true\n var ret\n try {\n ret = fs.fchmodSync(fd, mode)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n }\n\n function patchLutimes (fs) {\n if (constants.hasOwnProperty(\"O_SYMLINK\") && fs.futimes) {\n fs.lutimes = function (path, at, mt, cb) {\n fs.open(path, constants.O_SYMLINK, function (er, fd) {\n if (er) {\n if (cb) cb(er)\n return\n }\n fs.futimes(fd, at, mt, function (er) {\n fs.close(fd, function (er2) {\n if (cb) cb(er || er2)\n })\n })\n })\n }\n\n fs.lutimesSync = function (path, at, mt) {\n var fd = fs.openSync(path, constants.O_SYMLINK)\n var ret\n var threw = true\n try {\n ret = fs.futimesSync(fd, at, mt)\n threw = false\n } finally {\n if (threw) {\n try {\n fs.closeSync(fd)\n } catch (er) {}\n } else {\n fs.closeSync(fd)\n }\n }\n return ret\n }\n\n } else if (fs.futimes) {\n fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) }\n fs.lutimesSync = function () {}\n }\n }\n\n function chmodFix (orig) {\n if (!orig) return orig\n return function (target, mode, cb) {\n return orig.call(fs, target, mode, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chmodFixSync (orig) {\n if (!orig) return orig\n return function (target, mode) {\n try {\n return orig.call(fs, target, mode)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n\n function chownFix (orig) {\n if (!orig) return orig\n return function (target, uid, gid, cb) {\n return orig.call(fs, target, uid, gid, function (er) {\n if (chownErOk(er)) er = null\n if (cb) cb.apply(this, arguments)\n })\n }\n }\n\n function chownFixSync (orig) {\n if (!orig) return orig\n return function (target, uid, gid) {\n try {\n return orig.call(fs, target, uid, gid)\n } catch (er) {\n if (!chownErOk(er)) throw er\n }\n }\n }\n\n function statFix (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options, cb) {\n if (typeof options === 'function') {\n cb = options\n options = null\n }\n function callback (er, stats) {\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n if (cb) cb.apply(this, arguments)\n }\n return options ? orig.call(fs, target, options, callback)\n : orig.call(fs, target, callback)\n }\n }\n\n function statFixSync (orig) {\n if (!orig) return orig\n // Older versions of Node erroneously returned signed integers for\n // uid + gid.\n return function (target, options) {\n var stats = options ? orig.call(fs, target, options)\n : orig.call(fs, target)\n if (stats) {\n if (stats.uid < 0) stats.uid += 0x100000000\n if (stats.gid < 0) stats.gid += 0x100000000\n }\n return stats;\n }\n }\n\n // ENOSYS means that the fs doesn't support the op. Just ignore\n // that, because it doesn't matter.\n //\n // if there's no getuid, or if getuid() is something other\n // than 0, and the error is EINVAL or EPERM, then just ignore\n // it.\n //\n // This specific case is a silent failure in cp, install, tar,\n // and most other unix tools that manage permissions.\n //\n // When running as root, or if other types of errors are\n // encountered, then it's strict.\n function chownErOk (er) {\n if (!er)\n return true\n\n if (er.code === \"ENOSYS\")\n return true\n\n var nonroot = !process.getuid || process.getuid() !== 0\n if (nonroot) {\n if (er.code === \"EINVAL\" || er.code === \"EPERM\")\n return true\n }\n\n return false\n }\n}\n","'use strict';\n\nmodule.exports = (flag, argv = process.argv) => {\n\tconst prefix = flag.startsWith('-') ? '' : (flag.length === 1 ? '-' : '--');\n\tconst position = argv.indexOf(prefix + flag);\n\tconst terminatorPosition = argv.indexOf('--');\n\treturn position !== -1 && (terminatorPosition === -1 || position < terminatorPosition);\n};\n","/* eslint-disable yoda */\n'use strict';\n\nconst isFullwidthCodePoint = codePoint => {\n\tif (Number.isNaN(codePoint)) {\n\t\treturn false;\n\t}\n\n\t// Code points are derived from:\n\t// http://www.unix.org/Public/UNIDATA/EastAsianWidth.txt\n\tif (\n\t\tcodePoint >= 0x1100 && (\n\t\t\tcodePoint <= 0x115F || // Hangul Jamo\n\t\t\tcodePoint === 0x2329 || // LEFT-POINTING ANGLE BRACKET\n\t\t\tcodePoint === 0x232A || // RIGHT-POINTING ANGLE BRACKET\n\t\t\t// CJK Radicals Supplement .. Enclosed CJK Letters and Months\n\t\t\t(0x2E80 <= codePoint && codePoint <= 0x3247 && codePoint !== 0x303F) ||\n\t\t\t// Enclosed CJK Letters and Months .. CJK Unified Ideographs Extension A\n\t\t\t(0x3250 <= codePoint && codePoint <= 0x4DBF) ||\n\t\t\t// CJK Unified Ideographs .. Yi Radicals\n\t\t\t(0x4E00 <= codePoint && codePoint <= 0xA4C6) ||\n\t\t\t// Hangul Jamo Extended-A\n\t\t\t(0xA960 <= codePoint && codePoint <= 0xA97C) ||\n\t\t\t// Hangul Syllables\n\t\t\t(0xAC00 <= codePoint && codePoint <= 0xD7A3) ||\n\t\t\t// CJK Compatibility Ideographs\n\t\t\t(0xF900 <= codePoint && codePoint <= 0xFAFF) ||\n\t\t\t// Vertical Forms\n\t\t\t(0xFE10 <= codePoint && codePoint <= 0xFE19) ||\n\t\t\t// CJK Compatibility Forms .. Small Form Variants\n\t\t\t(0xFE30 <= codePoint && codePoint <= 0xFE6B) ||\n\t\t\t// Halfwidth and Fullwidth Forms\n\t\t\t(0xFF01 <= codePoint && codePoint <= 0xFF60) ||\n\t\t\t(0xFFE0 <= codePoint && codePoint <= 0xFFE6) ||\n\t\t\t// Kana Supplement\n\t\t\t(0x1B000 <= codePoint && codePoint <= 0x1B001) ||\n\t\t\t// Enclosed Ideographic Supplement\n\t\t\t(0x1F200 <= codePoint && codePoint <= 0x1F251) ||\n\t\t\t// CJK Unified Ideographs Extension B .. Tertiary Ideographic Plane\n\t\t\t(0x20000 <= codePoint && codePoint <= 0x3FFFD)\n\t\t)\n\t) {\n\t\treturn true;\n\t}\n\n\treturn false;\n};\n\nmodule.exports = isFullwidthCodePoint;\nmodule.exports.default = isFullwidthCodePoint;\n","let _fs\ntry {\n _fs = require('graceful-fs')\n} catch (_) {\n _fs = require('fs')\n}\nconst universalify = require('universalify')\nconst { stringify, stripBom } = require('./utils')\n\nasync function _readFile (file, options = {}) {\n if (typeof options === 'string') {\n options = { encoding: options }\n }\n\n const fs = options.fs || _fs\n\n const shouldThrow = 'throws' in options ? options.throws : true\n\n let data = await universalify.fromCallback(fs.readFile)(file, options)\n\n data = stripBom(data)\n\n let obj\n try {\n obj = JSON.parse(data, options ? options.reviver : null)\n } catch (err) {\n if (shouldThrow) {\n err.message = `${file}: ${err.message}`\n throw err\n } else {\n return null\n }\n }\n\n return obj\n}\n\nconst readFile = universalify.fromPromise(_readFile)\n\nfunction readFileSync (file, options = {}) {\n if (typeof options === 'string') {\n options = { encoding: options }\n }\n\n const fs = options.fs || _fs\n\n const shouldThrow = 'throws' in options ? options.throws : true\n\n try {\n let content = fs.readFileSync(file, options)\n content = stripBom(content)\n return JSON.parse(content, options.reviver)\n } catch (err) {\n if (shouldThrow) {\n err.message = `${file}: ${err.message}`\n throw err\n } else {\n return null\n }\n }\n}\n\nasync function _writeFile (file, obj, options = {}) {\n const fs = options.fs || _fs\n\n const str = stringify(obj, options)\n\n await universalify.fromCallback(fs.writeFile)(file, str, options)\n}\n\nconst writeFile = universalify.fromPromise(_writeFile)\n\nfunction writeFileSync (file, obj, options = {}) {\n const fs = options.fs || _fs\n\n const str = stringify(obj, options)\n // not sure if fs.writeFileSync returns anything, but just in case\n return fs.writeFileSync(file, str, options)\n}\n\nconst jsonfile = {\n readFile,\n readFileSync,\n writeFile,\n writeFileSync\n}\n\nmodule.exports = jsonfile\n","function stringify (obj, { EOL = '\\n', finalEOL = true, replacer = null, spaces } = {}) {\n const EOF = finalEOL ? EOL : ''\n const str = JSON.stringify(obj, replacer, spaces)\n\n return str.replace(/\\n/g, EOL) + EOF\n}\n\nfunction stripBom (content) {\n // we do this because JSON.parse would convert it to a utf8 string if encoding wasn't specified\n if (Buffer.isBuffer(content)) content = content.toString('utf8')\n return content.replace(/^\\uFEFF/, '')\n}\n\nmodule.exports = { stringify, stripBom }\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as default options for `_.truncate`. */\nvar DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar regexpTag = '[object RegExp]',\n symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to match `RegExp` flags from their coerced string values. */\nvar reFlags = /\\w*$/;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe23',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20f0',\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']');\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsRegExp = nodeUtil && nodeUtil.isRegExp;\n\n/**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nvar asciiSize = baseProperty('length');\n\n/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\n/**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\nfunction stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n}\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\n/**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\nfunction unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n result++;\n }\n return result;\n}\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\nfunction baseIsRegExp(value) {\n return isObject(value) && objectToString.call(value) == regexpTag;\n}\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\nvar isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Truncates `string` if it's longer than the given maximum string length.\n * The last characters of the truncated string are replaced with the omission\n * string which defaults to \"...\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to truncate.\n * @param {Object} [options={}] The options object.\n * @param {number} [options.length=30] The maximum string length.\n * @param {string} [options.omission='...'] The string to indicate text is omitted.\n * @param {RegExp|string} [options.separator] The separator pattern to truncate to.\n * @returns {string} Returns the truncated string.\n * @example\n *\n * _.truncate('hi-diddly-ho there, neighborino');\n * // => 'hi-diddly-ho there, neighbo...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': ' '\n * });\n * // => 'hi-diddly-ho there,...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'length': 24,\n * 'separator': /,? +/\n * });\n * // => 'hi-diddly-ho there...'\n *\n * _.truncate('hi-diddly-ho there, neighborino', {\n * 'omission': ' [...]'\n * });\n * // => 'hi-diddly-ho there, neig [...]'\n */\nfunction truncate(string, options) {\n var length = DEFAULT_TRUNC_LENGTH,\n omission = DEFAULT_TRUNC_OMISSION;\n\n if (isObject(options)) {\n var separator = 'separator' in options ? options.separator : separator;\n length = 'length' in options ? toInteger(options.length) : length;\n omission = 'omission' in options ? baseToString(options.omission) : omission;\n }\n string = toString(string);\n\n var strLength = string.length;\n if (hasUnicode(string)) {\n var strSymbols = stringToArray(string);\n strLength = strSymbols.length;\n }\n if (length >= strLength) {\n return string;\n }\n var end = length - stringSize(omission);\n if (end < 1) {\n return omission;\n }\n var result = strSymbols\n ? castSlice(strSymbols, 0, end).join('')\n : string.slice(0, end);\n\n if (separator === undefined) {\n return result + omission;\n }\n if (strSymbols) {\n end += (result.length - end);\n }\n if (isRegExp(separator)) {\n if (string.slice(end).search(separator)) {\n var match,\n substring = result;\n\n if (!separator.global) {\n separator = RegExp(separator.source, toString(reFlags.exec(separator)) + 'g');\n }\n separator.lastIndex = 0;\n while ((match = separator.exec(substring))) {\n var newEnd = match.index;\n }\n result = result.slice(0, newEnd === undefined ? end : newEnd);\n }\n } else if (string.indexOf(baseToString(separator), end) != end) {\n var index = result.lastIndexOf(separator);\n if (index > -1) {\n result = result.slice(0, index);\n }\n }\n return result + omission;\n}\n\nmodule.exports = truncate;\n","var wrappy = require('wrappy')\nmodule.exports = wrappy(once)\nmodule.exports.strict = wrappy(onceStrict)\n\nonce.proto = once(function () {\n Object.defineProperty(Function.prototype, 'once', {\n value: function () {\n return once(this)\n },\n configurable: true\n })\n\n Object.defineProperty(Function.prototype, 'onceStrict', {\n value: function () {\n return onceStrict(this)\n },\n configurable: true\n })\n})\n\nfunction once (fn) {\n var f = function () {\n if (f.called) return f.value\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n f.called = false\n return f\n}\n\nfunction onceStrict (fn) {\n var f = function () {\n if (f.called)\n throw new Error(f.onceError)\n f.called = true\n return f.value = fn.apply(this, arguments)\n }\n var name = fn.name || 'Function wrapped with `once`'\n f.onceError = name + \" shouldn't be called more than once\"\n f.called = false\n return f\n}\n","'use strict';\nconst isFullwidthCodePoint = require('is-fullwidth-code-point');\nconst astralRegex = require('astral-regex');\nconst ansiStyles = require('ansi-styles');\n\nconst ESCAPES = [\n\t'\\u001B',\n\t'\\u009B'\n];\n\nconst wrapAnsi = code => `${ESCAPES[0]}[${code}m`;\n\nconst checkAnsi = (ansiCodes, isEscapes, endAnsiCode) => {\n\tlet output = [];\n\tansiCodes = [...ansiCodes];\n\n\tfor (let ansiCode of ansiCodes) {\n\t\tconst ansiCodeOrigin = ansiCode;\n\t\tif (ansiCode.includes(';')) {\n\t\t\tansiCode = ansiCode.split(';')[0][0] + '0';\n\t\t}\n\n\t\tconst item = ansiStyles.codes.get(Number.parseInt(ansiCode, 10));\n\t\tif (item) {\n\t\t\tconst indexEscape = ansiCodes.indexOf(item.toString());\n\t\t\tif (indexEscape === -1) {\n\t\t\t\toutput.push(wrapAnsi(isEscapes ? item : ansiCodeOrigin));\n\t\t\t} else {\n\t\t\t\tansiCodes.splice(indexEscape, 1);\n\t\t\t}\n\t\t} else if (isEscapes) {\n\t\t\toutput.push(wrapAnsi(0));\n\t\t\tbreak;\n\t\t} else {\n\t\t\toutput.push(wrapAnsi(ansiCodeOrigin));\n\t\t}\n\t}\n\n\tif (isEscapes) {\n\t\toutput = output.filter((element, index) => output.indexOf(element) === index);\n\n\t\tif (endAnsiCode !== undefined) {\n\t\t\tconst fistEscapeCode = wrapAnsi(ansiStyles.codes.get(Number.parseInt(endAnsiCode, 10)));\n\t\t\toutput = output.reduce((current, next) => next === fistEscapeCode ? [next, ...current] : [...current, next], []);\n\t\t}\n\t}\n\n\treturn output.join('');\n};\n\nmodule.exports = (string, begin, end) => {\n\tconst characters = [...string];\n\tconst ansiCodes = [];\n\n\tlet stringEnd = typeof end === 'number' ? end : characters.length;\n\tlet isInsideEscape = false;\n\tlet ansiCode;\n\tlet visible = 0;\n\tlet output = '';\n\n\tfor (const [index, character] of characters.entries()) {\n\t\tlet leftEscape = false;\n\n\t\tif (ESCAPES.includes(character)) {\n\t\t\tconst code = /\\d[^m]*/.exec(string.slice(index, index + 18));\n\t\t\tansiCode = code && code.length > 0 ? code[0] : undefined;\n\n\t\t\tif (visible < stringEnd) {\n\t\t\t\tisInsideEscape = true;\n\n\t\t\t\tif (ansiCode !== undefined) {\n\t\t\t\t\tansiCodes.push(ansiCode);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (isInsideEscape && character === 'm') {\n\t\t\tisInsideEscape = false;\n\t\t\tleftEscape = true;\n\t\t}\n\n\t\tif (!isInsideEscape && !leftEscape) {\n\t\t\tvisible++;\n\t\t}\n\n\t\tif (!astralRegex({exact: true}).test(character) && isFullwidthCodePoint(character.codePointAt())) {\n\t\t\tvisible++;\n\n\t\t\tif (typeof end !== 'number') {\n\t\t\t\tstringEnd++;\n\t\t\t}\n\t\t}\n\n\t\tif (visible > begin && visible <= stringEnd) {\n\t\t\toutput += character;\n\t\t} else if (visible === begin && !isInsideEscape && ansiCode !== undefined) {\n\t\t\toutput = checkAnsi(ansiCodes);\n\t\t} else if (visible >= stringEnd) {\n\t\t\toutput += checkAnsi(ansiCodes, true, ansiCode);\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn output;\n};\n","'use strict';\nconst stripAnsi = require('strip-ansi');\nconst isFullwidthCodePoint = require('is-fullwidth-code-point');\nconst emojiRegex = require('emoji-regex');\n\nconst stringWidth = string => {\n\tif (typeof string !== 'string' || string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = stripAnsi(string);\n\n\tif (string.length === 0) {\n\t\treturn 0;\n\t}\n\n\tstring = string.replace(emojiRegex(), ' ');\n\n\tlet width = 0;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst code = string.codePointAt(i);\n\n\t\t// Ignore control characters\n\t\tif (code <= 0x1F || (code >= 0x7F && code <= 0x9F)) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Ignore combining characters\n\t\tif (code >= 0x300 && code <= 0x36F) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Surrogates\n\t\tif (code > 0xFFFF) {\n\t\t\ti++;\n\t\t}\n\n\t\twidth += isFullwidthCodePoint(code) ? 2 : 1;\n\t}\n\n\treturn width;\n};\n\nmodule.exports = stringWidth;\n// TODO: remove this in the next major version\nmodule.exports.default = stringWidth;\n","'use strict';\nconst ansiRegex = require('ansi-regex');\n\nmodule.exports = string => typeof string === 'string' ? string.replace(ansiRegex(), '') : string;\n","const hexRegex = /^[-+]?0x[a-fA-F0-9]+$/;\nconst numRegex = /^([\\-\\+])?(0*)(\\.[0-9]+([eE]\\-?[0-9]+)?|[0-9]+(\\.[0-9]+([eE]\\-?[0-9]+)?)?)$/;\n// const octRegex = /0x[a-z0-9]+/;\n// const binRegex = /0x[a-z0-9]+/;\n\n\n//polyfill\nif (!Number.parseInt && window.parseInt) {\n Number.parseInt = window.parseInt;\n}\nif (!Number.parseFloat && window.parseFloat) {\n Number.parseFloat = window.parseFloat;\n}\n\n \nconst consider = {\n hex : true,\n leadingZeros: true,\n decimalPoint: \"\\.\",\n eNotation: true\n //skipLike: /regex/\n};\n\nfunction toNumber(str, options = {}){\n // const options = Object.assign({}, consider);\n // if(opt.leadingZeros === false){\n // options.leadingZeros = false;\n // }else if(opt.hex === false){\n // options.hex = false;\n // }\n\n options = Object.assign({}, consider, options );\n if(!str || typeof str !== \"string\" ) return str;\n \n let trimmedStr = str.trim();\n // if(trimmedStr === \"0.0\") return 0;\n // else if(trimmedStr === \"+0.0\") return 0;\n // else if(trimmedStr === \"-0.0\") return -0;\n\n if(options.skipLike !== undefined && options.skipLike.test(trimmedStr)) return str;\n else if (options.hex && hexRegex.test(trimmedStr)) {\n return Number.parseInt(trimmedStr, 16);\n // } else if (options.parseOct && octRegex.test(str)) {\n // return Number.parseInt(val, 8);\n // }else if (options.parseBin && binRegex.test(str)) {\n // return Number.parseInt(val, 2);\n }else{\n //separate negative sign, leading zeros, and rest number\n const match = numRegex.exec(trimmedStr);\n if(match){\n const sign = match[1];\n const leadingZeros = match[2];\n let numTrimmedByZeros = trimZeros(match[3]); //complete num without leading zeros\n //trim ending zeros for floating number\n \n const eNotation = match[4] || match[6];\n if(!options.leadingZeros && leadingZeros.length > 0 && sign && trimmedStr[2] !== \".\") return str; //-0123\n else if(!options.leadingZeros && leadingZeros.length > 0 && !sign && trimmedStr[1] !== \".\") return str; //0123\n else{//no leading zeros or leading zeros are allowed\n const num = Number(trimmedStr);\n const numStr = \"\" + num;\n if(numStr.search(/[eE]/) !== -1){ //given number is long and parsed to eNotation\n if(options.eNotation) return num;\n else return str;\n }else if(eNotation){ //given number has enotation\n if(options.eNotation) return num;\n else return str;\n }else if(trimmedStr.indexOf(\".\") !== -1){ //floating number\n // const decimalPart = match[5].substr(1);\n // const intPart = trimmedStr.substr(0,trimmedStr.indexOf(\".\"));\n\n \n // const p = numStr.indexOf(\".\");\n // const givenIntPart = numStr.substr(0,p);\n // const givenDecPart = numStr.substr(p+1);\n if(numStr === \"0\" && (numTrimmedByZeros === \"\") ) return num; //0.0\n else if(numStr === numTrimmedByZeros) return num; //0.456. 0.79000\n else if( sign && numStr === \"-\"+numTrimmedByZeros) return num;\n else return str;\n }\n \n if(leadingZeros){\n // if(numTrimmedByZeros === numStr){\n // if(options.leadingZeros) return num;\n // else return str;\n // }else return str;\n if(numTrimmedByZeros === numStr) return num;\n else if(sign+numTrimmedByZeros === numStr) return num;\n else return str;\n }\n\n if(trimmedStr === numStr) return num;\n else if(trimmedStr === sign+numStr) return num;\n // else{\n // //number with +/- sign\n // trimmedStr.test(/[-+][0-9]);\n\n // }\n return str;\n }\n // else if(!eNotation && trimmedStr && trimmedStr !== Number(trimmedStr) ) return str;\n \n }else{ //non-numeric string\n return str;\n }\n }\n}\n\n/**\n * \n * @param {string} numStr without leading zeros\n * @returns \n */\nfunction trimZeros(numStr){\n if(numStr && numStr.indexOf(\".\") !== -1){//float\n numStr = numStr.replace(/0+$/, \"\"); //remove ending zeros\n if(numStr === \".\") numStr = \"0\";\n else if(numStr[0] === \".\") numStr = \"0\"+numStr;\n else if(numStr[numStr.length-1] === \".\") numStr = numStr.substr(0,numStr.length-1);\n return numStr;\n }\n return numStr;\n}\nmodule.exports = toNumber\n","'use strict';\nconst os = require('os');\nconst tty = require('tty');\nconst hasFlag = require('has-flag');\n\nconst {env} = process;\n\nlet forceColor;\nif (hasFlag('no-color') ||\n\thasFlag('no-colors') ||\n\thasFlag('color=false') ||\n\thasFlag('color=never')) {\n\tforceColor = 0;\n} else if (hasFlag('color') ||\n\thasFlag('colors') ||\n\thasFlag('color=true') ||\n\thasFlag('color=always')) {\n\tforceColor = 1;\n}\n\nif ('FORCE_COLOR' in env) {\n\tif (env.FORCE_COLOR === 'true') {\n\t\tforceColor = 1;\n\t} else if (env.FORCE_COLOR === 'false') {\n\t\tforceColor = 0;\n\t} else {\n\t\tforceColor = env.FORCE_COLOR.length === 0 ? 1 : Math.min(parseInt(env.FORCE_COLOR, 10), 3);\n\t}\n}\n\nfunction translateLevel(level) {\n\tif (level === 0) {\n\t\treturn false;\n\t}\n\n\treturn {\n\t\tlevel,\n\t\thasBasic: true,\n\t\thas256: level >= 2,\n\t\thas16m: level >= 3\n\t};\n}\n\nfunction supportsColor(haveStream, streamIsTTY) {\n\tif (forceColor === 0) {\n\t\treturn 0;\n\t}\n\n\tif (hasFlag('color=16m') ||\n\t\thasFlag('color=full') ||\n\t\thasFlag('color=truecolor')) {\n\t\treturn 3;\n\t}\n\n\tif (hasFlag('color=256')) {\n\t\treturn 2;\n\t}\n\n\tif (haveStream && !streamIsTTY && forceColor === undefined) {\n\t\treturn 0;\n\t}\n\n\tconst min = forceColor || 0;\n\n\tif (env.TERM === 'dumb') {\n\t\treturn min;\n\t}\n\n\tif (process.platform === 'win32') {\n\t\t// Windows 10 build 10586 is the first Windows release that supports 256 colors.\n\t\t// Windows 10 build 14931 is the first release that supports 16m/TrueColor.\n\t\tconst osRelease = os.release().split('.');\n\t\tif (\n\t\t\tNumber(osRelease[0]) >= 10 &&\n\t\t\tNumber(osRelease[2]) >= 10586\n\t\t) {\n\t\t\treturn Number(osRelease[2]) >= 14931 ? 3 : 2;\n\t\t}\n\n\t\treturn 1;\n\t}\n\n\tif ('CI' in env) {\n\t\tif (['TRAVIS', 'CIRCLECI', 'APPVEYOR', 'GITLAB_CI', 'GITHUB_ACTIONS', 'BUILDKITE'].some(sign => sign in env) || env.CI_NAME === 'codeship') {\n\t\t\treturn 1;\n\t\t}\n\n\t\treturn min;\n\t}\n\n\tif ('TEAMCITY_VERSION' in env) {\n\t\treturn /^(9\\.(0*[1-9]\\d*)\\.|\\d{2,}\\.)/.test(env.TEAMCITY_VERSION) ? 1 : 0;\n\t}\n\n\tif (env.COLORTERM === 'truecolor') {\n\t\treturn 3;\n\t}\n\n\tif ('TERM_PROGRAM' in env) {\n\t\tconst version = parseInt((env.TERM_PROGRAM_VERSION || '').split('.')[0], 10);\n\n\t\tswitch (env.TERM_PROGRAM) {\n\t\t\tcase 'iTerm.app':\n\t\t\t\treturn version >= 3 ? 3 : 2;\n\t\t\tcase 'Apple_Terminal':\n\t\t\t\treturn 2;\n\t\t\t// No default\n\t\t}\n\t}\n\n\tif (/-256(color)?$/i.test(env.TERM)) {\n\t\treturn 2;\n\t}\n\n\tif (/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)) {\n\t\treturn 1;\n\t}\n\n\tif ('COLORTERM' in env) {\n\t\treturn 1;\n\t}\n\n\treturn min;\n}\n\nfunction getSupportLevel(stream) {\n\tconst level = supportsColor(stream, stream && stream.isTTY);\n\treturn translateLevel(level);\n}\n\nmodule.exports = {\n\tsupportsColor: getSupportLevel,\n\tstdout: translateLevel(supportsColor(true, tty.isatty(1))),\n\tstderr: translateLevel(supportsColor(true, tty.isatty(2)))\n};\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.alignVerticalRangeContent = exports.wrapRangeContent = void 0;\nconst string_width_1 = __importDefault(require(\"string-width\"));\nconst alignString_1 = require(\"./alignString\");\nconst mapDataUsingRowHeights_1 = require(\"./mapDataUsingRowHeights\");\nconst padTableData_1 = require(\"./padTableData\");\nconst truncateTableData_1 = require(\"./truncateTableData\");\nconst utils_1 = require(\"./utils\");\nconst wrapCell_1 = require(\"./wrapCell\");\n/**\n * Fill content into all cells in range in order to calculate total height\n */\nconst wrapRangeContent = (rangeConfig, rangeWidth, context) => {\n const { topLeft, paddingRight, paddingLeft, truncate, wrapWord, alignment } = rangeConfig;\n const originalContent = context.rows[topLeft.row][topLeft.col];\n const contentWidth = rangeWidth - paddingLeft - paddingRight;\n return (0, wrapCell_1.wrapCell)((0, truncateTableData_1.truncateString)(originalContent, truncate), contentWidth, wrapWord).map((line) => {\n const alignedLine = (0, alignString_1.alignString)(line, contentWidth, alignment);\n return (0, padTableData_1.padString)(alignedLine, paddingLeft, paddingRight);\n });\n};\nexports.wrapRangeContent = wrapRangeContent;\nconst alignVerticalRangeContent = (range, content, context) => {\n const { rows, drawHorizontalLine, rowHeights } = context;\n const { topLeft, bottomRight, verticalAlignment } = range;\n // They are empty before calculateRowHeights function run\n if (rowHeights.length === 0) {\n return [];\n }\n const totalCellHeight = (0, utils_1.sumArray)(rowHeights.slice(topLeft.row, bottomRight.row + 1));\n const totalBorderHeight = bottomRight.row - topLeft.row;\n const hiddenHorizontalBorderCount = (0, utils_1.sequence)(topLeft.row + 1, bottomRight.row).filter((horizontalBorderIndex) => {\n return !drawHorizontalLine(horizontalBorderIndex, rows.length);\n }).length;\n const availableRangeHeight = totalCellHeight + totalBorderHeight - hiddenHorizontalBorderCount;\n return (0, mapDataUsingRowHeights_1.padCellVertically)(content, availableRangeHeight, verticalAlignment).map((line) => {\n if (line.length === 0) {\n return ' '.repeat((0, string_width_1.default)(content[0]));\n }\n return line;\n });\n};\nexports.alignVerticalRangeContent = alignVerticalRangeContent;\n//# sourceMappingURL=alignSpanningCell.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.alignString = void 0;\nconst string_width_1 = __importDefault(require(\"string-width\"));\nconst utils_1 = require(\"./utils\");\nconst alignLeft = (subject, width) => {\n return subject + ' '.repeat(width);\n};\nconst alignRight = (subject, width) => {\n return ' '.repeat(width) + subject;\n};\nconst alignCenter = (subject, width) => {\n return ' '.repeat(Math.floor(width / 2)) + subject + ' '.repeat(Math.ceil(width / 2));\n};\nconst alignJustify = (subject, width) => {\n const spaceSequenceCount = (0, utils_1.countSpaceSequence)(subject);\n if (spaceSequenceCount === 0) {\n return alignLeft(subject, width);\n }\n const addingSpaces = (0, utils_1.distributeUnevenly)(width, spaceSequenceCount);\n if (Math.max(...addingSpaces) > 3) {\n return alignLeft(subject, width);\n }\n let spaceSequenceIndex = 0;\n return subject.replace(/\\s+/g, (groupSpace) => {\n return groupSpace + ' '.repeat(addingSpaces[spaceSequenceIndex++]);\n });\n};\n/**\n * Pads a string to the left and/or right to position the subject\n * text in a desired alignment within a container.\n */\nconst alignString = (subject, containerWidth, alignment) => {\n const subjectWidth = (0, string_width_1.default)(subject);\n if (subjectWidth === containerWidth) {\n return subject;\n }\n if (subjectWidth > containerWidth) {\n throw new Error('Subject parameter value width cannot be greater than the container width.');\n }\n if (subjectWidth === 0) {\n return ' '.repeat(containerWidth);\n }\n const availableWidth = containerWidth - subjectWidth;\n if (alignment === 'left') {\n return alignLeft(subject, availableWidth);\n }\n if (alignment === 'right') {\n return alignRight(subject, availableWidth);\n }\n if (alignment === 'justify') {\n return alignJustify(subject, availableWidth);\n }\n return alignCenter(subject, availableWidth);\n};\nexports.alignString = alignString;\n//# sourceMappingURL=alignString.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.alignTableData = void 0;\nconst alignString_1 = require(\"./alignString\");\nconst alignTableData = (rows, config) => {\n return rows.map((row, rowIndex) => {\n return row.map((cell, cellIndex) => {\n var _a;\n const { width, alignment } = config.columns[cellIndex];\n const containingRange = (_a = config.spanningCellManager) === null || _a === void 0 ? void 0 : _a.getContainingRange({ col: cellIndex,\n row: rowIndex }, { mapped: true });\n if (containingRange) {\n return cell;\n }\n return (0, alignString_1.alignString)(cell, width, alignment);\n });\n });\n};\nexports.alignTableData = alignTableData;\n//# sourceMappingURL=alignTableData.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateCellHeight = void 0;\nconst wrapCell_1 = require(\"./wrapCell\");\n/**\n * Calculates height of cell content in regard to its width and word wrapping.\n */\nconst calculateCellHeight = (value, columnWidth, useWrapWord = false) => {\n return (0, wrapCell_1.wrapCell)(value, columnWidth, useWrapWord).length;\n};\nexports.calculateCellHeight = calculateCellHeight;\n//# sourceMappingURL=calculateCellHeight.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateMaximumColumnWidths = exports.calculateMaximumCellWidth = void 0;\nconst string_width_1 = __importDefault(require(\"string-width\"));\nconst utils_1 = require(\"./utils\");\nconst calculateMaximumCellWidth = (cell) => {\n return Math.max(...cell.split('\\n').map(string_width_1.default));\n};\nexports.calculateMaximumCellWidth = calculateMaximumCellWidth;\n/**\n * Produces an array of values that describe the largest value length (width) in every column.\n */\nconst calculateMaximumColumnWidths = (rows, spanningCellConfigs = []) => {\n const columnWidths = new Array(rows[0].length).fill(0);\n const rangeCoordinates = spanningCellConfigs.map(utils_1.calculateRangeCoordinate);\n const isSpanningCell = (rowIndex, columnIndex) => {\n return rangeCoordinates.some((rangeCoordinate) => {\n return (0, utils_1.isCellInRange)({ col: columnIndex,\n row: rowIndex }, rangeCoordinate);\n });\n };\n rows.forEach((row, rowIndex) => {\n row.forEach((cell, cellIndex) => {\n if (isSpanningCell(rowIndex, cellIndex)) {\n return;\n }\n columnWidths[cellIndex] = Math.max(columnWidths[cellIndex], (0, exports.calculateMaximumCellWidth)(cell));\n });\n });\n return columnWidths;\n};\nexports.calculateMaximumColumnWidths = calculateMaximumColumnWidths;\n//# sourceMappingURL=calculateMaximumColumnWidths.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateOutputColumnWidths = void 0;\nconst calculateOutputColumnWidths = (config) => {\n return config.columns.map((col) => {\n return col.paddingLeft + col.width + col.paddingRight;\n });\n};\nexports.calculateOutputColumnWidths = calculateOutputColumnWidths;\n//# sourceMappingURL=calculateOutputColumnWidths.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateRowHeights = void 0;\nconst calculateCellHeight_1 = require(\"./calculateCellHeight\");\nconst utils_1 = require(\"./utils\");\n/**\n * Produces an array of values that describe the largest value length (height) in every row.\n */\nconst calculateRowHeights = (rows, config) => {\n const rowHeights = [];\n for (const [rowIndex, row] of rows.entries()) {\n let rowHeight = 1;\n row.forEach((cell, cellIndex) => {\n var _a;\n const containingRange = (_a = config.spanningCellManager) === null || _a === void 0 ? void 0 : _a.getContainingRange({ col: cellIndex,\n row: rowIndex });\n if (!containingRange) {\n const cellHeight = (0, calculateCellHeight_1.calculateCellHeight)(cell, config.columns[cellIndex].width, config.columns[cellIndex].wrapWord);\n rowHeight = Math.max(rowHeight, cellHeight);\n return;\n }\n const { topLeft, bottomRight, height } = containingRange;\n // bottom-most cell of a range needs to contain all remain lines of spanning cells\n if (rowIndex === bottomRight.row) {\n const totalOccupiedSpanningCellHeight = (0, utils_1.sumArray)(rowHeights.slice(topLeft.row));\n const totalHorizontalBorderHeight = bottomRight.row - topLeft.row;\n const totalHiddenHorizontalBorderHeight = (0, utils_1.sequence)(topLeft.row + 1, bottomRight.row).filter((horizontalBorderIndex) => {\n var _a;\n /* istanbul ignore next */\n return !((_a = config.drawHorizontalLine) === null || _a === void 0 ? void 0 : _a.call(config, horizontalBorderIndex, rows.length));\n }).length;\n const cellHeight = height - totalOccupiedSpanningCellHeight - totalHorizontalBorderHeight + totalHiddenHorizontalBorderHeight;\n rowHeight = Math.max(rowHeight, cellHeight);\n }\n // otherwise, just depend on other sibling cell heights in the row\n });\n rowHeights.push(rowHeight);\n }\n return rowHeights;\n};\nexports.calculateRowHeights = calculateRowHeights;\n//# sourceMappingURL=calculateRowHeights.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.calculateSpanningCellWidth = void 0;\nconst utils_1 = require(\"./utils\");\nconst calculateSpanningCellWidth = (rangeConfig, dependencies) => {\n const { columnsConfig, drawVerticalLine } = dependencies;\n const { topLeft, bottomRight } = rangeConfig;\n const totalWidth = (0, utils_1.sumArray)(columnsConfig.slice(topLeft.col, bottomRight.col + 1).map(({ width }) => {\n return width;\n }));\n const totalPadding = topLeft.col === bottomRight.col ?\n columnsConfig[topLeft.col].paddingRight +\n columnsConfig[bottomRight.col].paddingLeft :\n (0, utils_1.sumArray)(columnsConfig\n .slice(topLeft.col, bottomRight.col + 1)\n .map(({ paddingLeft, paddingRight }) => {\n return paddingLeft + paddingRight;\n }));\n const totalBorderWidths = bottomRight.col - topLeft.col;\n const totalHiddenVerticalBorders = (0, utils_1.sequence)(topLeft.col + 1, bottomRight.col).filter((verticalBorderIndex) => {\n return !drawVerticalLine(verticalBorderIndex, columnsConfig.length);\n }).length;\n return totalWidth + totalPadding + totalBorderWidths - totalHiddenVerticalBorders;\n};\nexports.calculateSpanningCellWidth = calculateSpanningCellWidth;\n//# sourceMappingURL=calculateSpanningCellWidth.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createStream = void 0;\nconst alignTableData_1 = require(\"./alignTableData\");\nconst calculateRowHeights_1 = require(\"./calculateRowHeights\");\nconst drawBorder_1 = require(\"./drawBorder\");\nconst drawRow_1 = require(\"./drawRow\");\nconst makeStreamConfig_1 = require(\"./makeStreamConfig\");\nconst mapDataUsingRowHeights_1 = require(\"./mapDataUsingRowHeights\");\nconst padTableData_1 = require(\"./padTableData\");\nconst stringifyTableData_1 = require(\"./stringifyTableData\");\nconst truncateTableData_1 = require(\"./truncateTableData\");\nconst utils_1 = require(\"./utils\");\nconst prepareData = (data, config) => {\n let rows = (0, stringifyTableData_1.stringifyTableData)(data);\n rows = (0, truncateTableData_1.truncateTableData)(rows, (0, utils_1.extractTruncates)(config));\n const rowHeights = (0, calculateRowHeights_1.calculateRowHeights)(rows, config);\n rows = (0, mapDataUsingRowHeights_1.mapDataUsingRowHeights)(rows, rowHeights, config);\n rows = (0, alignTableData_1.alignTableData)(rows, config);\n rows = (0, padTableData_1.padTableData)(rows, config);\n return rows;\n};\nconst create = (row, columnWidths, config) => {\n const rows = prepareData([row], config);\n const body = rows.map((literalRow) => {\n return (0, drawRow_1.drawRow)(literalRow, config);\n }).join('');\n let output;\n output = '';\n output += (0, drawBorder_1.drawBorderTop)(columnWidths, config);\n output += body;\n output += (0, drawBorder_1.drawBorderBottom)(columnWidths, config);\n output = output.trimEnd();\n process.stdout.write(output);\n};\nconst append = (row, columnWidths, config) => {\n const rows = prepareData([row], config);\n const body = rows.map((literalRow) => {\n return (0, drawRow_1.drawRow)(literalRow, config);\n }).join('');\n let output = '';\n const bottom = (0, drawBorder_1.drawBorderBottom)(columnWidths, config);\n if (bottom !== '\\n') {\n output = '\\r\\u001B[K';\n }\n output += (0, drawBorder_1.drawBorderJoin)(columnWidths, config);\n output += body;\n output += bottom;\n output = output.trimEnd();\n process.stdout.write(output);\n};\nconst createStream = (userConfig) => {\n const config = (0, makeStreamConfig_1.makeStreamConfig)(userConfig);\n const columnWidths = Object.values(config.columns).map((column) => {\n return column.width + column.paddingLeft + column.paddingRight;\n });\n let empty = true;\n return {\n write: (row) => {\n if (row.length !== config.columnCount) {\n throw new Error('Row cell count does not match the config.columnCount.');\n }\n if (empty) {\n empty = false;\n create(row, columnWidths, config);\n }\n else {\n append(row, columnWidths, config);\n }\n },\n };\n};\nexports.createStream = createStream;\n//# sourceMappingURL=createStream.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createTableBorderGetter = exports.drawBorderBottom = exports.drawBorderJoin = exports.drawBorderTop = exports.drawBorder = exports.createSeparatorGetter = exports.drawBorderSegments = void 0;\nconst drawContent_1 = require(\"./drawContent\");\nconst drawBorderSegments = (columnWidths, parameters) => {\n const { separator, horizontalBorderIndex, spanningCellManager } = parameters;\n return columnWidths.map((columnWidth, columnIndex) => {\n const normalSegment = separator.body.repeat(columnWidth);\n if (horizontalBorderIndex === undefined) {\n return normalSegment;\n }\n /* istanbul ignore next */\n const range = spanningCellManager === null || spanningCellManager === void 0 ? void 0 : spanningCellManager.getContainingRange({ col: columnIndex,\n row: horizontalBorderIndex });\n if (!range) {\n return normalSegment;\n }\n const { topLeft } = range;\n // draw border segments as usual for top border of spanning cell\n if (horizontalBorderIndex === topLeft.row) {\n return normalSegment;\n }\n // if for first column/row of spanning cell, just skip\n if (columnIndex !== topLeft.col) {\n return '';\n }\n return range.extractBorderContent(horizontalBorderIndex);\n });\n};\nexports.drawBorderSegments = drawBorderSegments;\nconst createSeparatorGetter = (dependencies) => {\n const { separator, spanningCellManager, horizontalBorderIndex, rowCount } = dependencies;\n // eslint-disable-next-line complexity\n return (verticalBorderIndex, columnCount) => {\n const inSameRange = spanningCellManager === null || spanningCellManager === void 0 ? void 0 : spanningCellManager.inSameRange;\n if (horizontalBorderIndex !== undefined && inSameRange) {\n const topCell = { col: verticalBorderIndex,\n row: horizontalBorderIndex - 1 };\n const leftCell = { col: verticalBorderIndex - 1,\n row: horizontalBorderIndex };\n const oppositeCell = { col: verticalBorderIndex - 1,\n row: horizontalBorderIndex - 1 };\n const currentCell = { col: verticalBorderIndex,\n row: horizontalBorderIndex };\n const pairs = [\n [oppositeCell, topCell],\n [topCell, currentCell],\n [currentCell, leftCell],\n [leftCell, oppositeCell],\n ];\n // left side of horizontal border\n if (verticalBorderIndex === 0) {\n if (inSameRange(currentCell, topCell) && separator.bodyJoinOuter) {\n return separator.bodyJoinOuter;\n }\n return separator.left;\n }\n // right side of horizontal border\n if (verticalBorderIndex === columnCount) {\n if (inSameRange(oppositeCell, leftCell) && separator.bodyJoinOuter) {\n return separator.bodyJoinOuter;\n }\n return separator.right;\n }\n // top horizontal border\n if (horizontalBorderIndex === 0) {\n if (inSameRange(currentCell, leftCell)) {\n return separator.body;\n }\n return separator.join;\n }\n // bottom horizontal border\n if (horizontalBorderIndex === rowCount) {\n if (inSameRange(topCell, oppositeCell)) {\n return separator.body;\n }\n return separator.join;\n }\n const sameRangeCount = pairs.map((pair) => {\n return inSameRange(...pair);\n }).filter(Boolean).length;\n // four cells are belongs to different spanning cells\n if (sameRangeCount === 0) {\n return separator.join;\n }\n // belong to one spanning cell\n if (sameRangeCount === 4) {\n return '';\n }\n // belongs to two spanning cell\n if (sameRangeCount === 2) {\n if (inSameRange(...pairs[1]) && inSameRange(...pairs[3]) && separator.bodyJoinInner) {\n return separator.bodyJoinInner;\n }\n return separator.body;\n }\n /* istanbul ignore next */\n if (sameRangeCount === 1) {\n if (!separator.joinRight || !separator.joinLeft || !separator.joinUp || !separator.joinDown) {\n throw new Error(`Can not get border separator for position [${horizontalBorderIndex}, ${verticalBorderIndex}]`);\n }\n if (inSameRange(...pairs[0])) {\n return separator.joinDown;\n }\n if (inSameRange(...pairs[1])) {\n return separator.joinLeft;\n }\n if (inSameRange(...pairs[2])) {\n return separator.joinUp;\n }\n return separator.joinRight;\n }\n /* istanbul ignore next */\n throw new Error('Invalid case');\n }\n if (verticalBorderIndex === 0) {\n return separator.left;\n }\n if (verticalBorderIndex === columnCount) {\n return separator.right;\n }\n return separator.join;\n };\n};\nexports.createSeparatorGetter = createSeparatorGetter;\nconst drawBorder = (columnWidths, parameters) => {\n const borderSegments = (0, exports.drawBorderSegments)(columnWidths, parameters);\n const { drawVerticalLine, horizontalBorderIndex, spanningCellManager } = parameters;\n return (0, drawContent_1.drawContent)({\n contents: borderSegments,\n drawSeparator: drawVerticalLine,\n elementType: 'border',\n rowIndex: horizontalBorderIndex,\n separatorGetter: (0, exports.createSeparatorGetter)(parameters),\n spanningCellManager,\n }) + '\\n';\n};\nexports.drawBorder = drawBorder;\nconst drawBorderTop = (columnWidths, parameters) => {\n const { border } = parameters;\n const result = (0, exports.drawBorder)(columnWidths, {\n ...parameters,\n separator: {\n body: border.topBody,\n join: border.topJoin,\n left: border.topLeft,\n right: border.topRight,\n },\n });\n if (result === '\\n') {\n return '';\n }\n return result;\n};\nexports.drawBorderTop = drawBorderTop;\nconst drawBorderJoin = (columnWidths, parameters) => {\n const { border } = parameters;\n return (0, exports.drawBorder)(columnWidths, {\n ...parameters,\n separator: {\n body: border.joinBody,\n bodyJoinInner: border.bodyJoin,\n bodyJoinOuter: border.bodyLeft,\n join: border.joinJoin,\n joinDown: border.joinMiddleDown,\n joinLeft: border.joinMiddleLeft,\n joinRight: border.joinMiddleRight,\n joinUp: border.joinMiddleUp,\n left: border.joinLeft,\n right: border.joinRight,\n },\n });\n};\nexports.drawBorderJoin = drawBorderJoin;\nconst drawBorderBottom = (columnWidths, parameters) => {\n const { border } = parameters;\n return (0, exports.drawBorder)(columnWidths, {\n ...parameters,\n separator: {\n body: border.bottomBody,\n join: border.bottomJoin,\n left: border.bottomLeft,\n right: border.bottomRight,\n },\n });\n};\nexports.drawBorderBottom = drawBorderBottom;\nconst createTableBorderGetter = (columnWidths, parameters) => {\n return (index, size) => {\n const drawBorderParameters = { ...parameters,\n horizontalBorderIndex: index };\n if (index === 0) {\n return (0, exports.drawBorderTop)(columnWidths, drawBorderParameters);\n }\n else if (index === size) {\n return (0, exports.drawBorderBottom)(columnWidths, drawBorderParameters);\n }\n return (0, exports.drawBorderJoin)(columnWidths, drawBorderParameters);\n };\n};\nexports.createTableBorderGetter = createTableBorderGetter;\n//# sourceMappingURL=drawBorder.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.drawContent = void 0;\nconst drawContent = (parameters) => {\n const { contents, separatorGetter, drawSeparator, spanningCellManager, rowIndex, elementType } = parameters;\n const contentSize = contents.length;\n const result = [];\n if (drawSeparator(0, contentSize)) {\n result.push(separatorGetter(0, contentSize));\n }\n contents.forEach((content, contentIndex) => {\n if (!elementType || elementType === 'border' || elementType === 'row') {\n result.push(content);\n }\n if (elementType === 'cell' && rowIndex === undefined) {\n result.push(content);\n }\n if (elementType === 'cell' && rowIndex !== undefined) {\n /* istanbul ignore next */\n const containingRange = spanningCellManager === null || spanningCellManager === void 0 ? void 0 : spanningCellManager.getContainingRange({ col: contentIndex,\n row: rowIndex });\n // when drawing content row, just add a cell when it is a normal cell\n // or belongs to first column of spanning cell\n if (!containingRange || contentIndex === containingRange.topLeft.col) {\n result.push(content);\n }\n }\n // Only append the middle separator if the content is not the last\n if (contentIndex + 1 < contentSize && drawSeparator(contentIndex + 1, contentSize)) {\n const separator = separatorGetter(contentIndex + 1, contentSize);\n if (elementType === 'cell' && rowIndex !== undefined) {\n const currentCell = { col: contentIndex + 1,\n row: rowIndex };\n /* istanbul ignore next */\n const containingRange = spanningCellManager === null || spanningCellManager === void 0 ? void 0 : spanningCellManager.getContainingRange(currentCell);\n if (!containingRange || containingRange.topLeft.col === currentCell.col) {\n result.push(separator);\n }\n }\n else {\n result.push(separator);\n }\n }\n });\n if (drawSeparator(contentSize, contentSize)) {\n result.push(separatorGetter(contentSize, contentSize));\n }\n return result.join('');\n};\nexports.drawContent = drawContent;\n//# sourceMappingURL=drawContent.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.drawRow = void 0;\nconst drawContent_1 = require(\"./drawContent\");\nconst drawRow = (row, config) => {\n const { border, drawVerticalLine, rowIndex, spanningCellManager } = config;\n return (0, drawContent_1.drawContent)({\n contents: row,\n drawSeparator: drawVerticalLine,\n elementType: 'cell',\n rowIndex,\n separatorGetter: (index, columnCount) => {\n if (index === 0) {\n return border.bodyLeft;\n }\n if (index === columnCount) {\n return border.bodyRight;\n }\n return border.bodyJoin;\n },\n spanningCellManager,\n }) + '\\n';\n};\nexports.drawRow = drawRow;\n//# sourceMappingURL=drawRow.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.drawTable = void 0;\nconst drawBorder_1 = require(\"./drawBorder\");\nconst drawContent_1 = require(\"./drawContent\");\nconst drawRow_1 = require(\"./drawRow\");\nconst utils_1 = require(\"./utils\");\nconst drawTable = (rows, outputColumnWidths, rowHeights, config) => {\n const { drawHorizontalLine, singleLine, } = config;\n const contents = (0, utils_1.groupBySizes)(rows, rowHeights).map((group, groupIndex) => {\n return group.map((row) => {\n return (0, drawRow_1.drawRow)(row, { ...config,\n rowIndex: groupIndex });\n }).join('');\n });\n return (0, drawContent_1.drawContent)({ contents,\n drawSeparator: (index, size) => {\n // Top/bottom border\n if (index === 0 || index === size) {\n return drawHorizontalLine(index, size);\n }\n return !singleLine && drawHorizontalLine(index, size);\n },\n elementType: 'row',\n rowIndex: -1,\n separatorGetter: (0, drawBorder_1.createTableBorderGetter)(outputColumnWidths, { ...config,\n rowCount: contents.length }),\n spanningCellManager: config.spanningCellManager });\n};\nexports.drawTable = drawTable;\n//# sourceMappingURL=drawTable.js.map","\"use strict\";\nexports[\"config.json\"] = validate43;\nconst schema13 = {\n \"$id\": \"config.json\",\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"type\": \"object\",\n \"properties\": {\n \"border\": {\n \"$ref\": \"shared.json#/definitions/borders\"\n },\n \"header\": {\n \"type\": \"object\",\n \"properties\": {\n \"content\": {\n \"type\": \"string\"\n },\n \"alignment\": {\n \"$ref\": \"shared.json#/definitions/alignment\"\n },\n \"wrapWord\": {\n \"type\": \"boolean\"\n },\n \"truncate\": {\n \"type\": \"integer\"\n },\n \"paddingLeft\": {\n \"type\": \"integer\"\n },\n \"paddingRight\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\"content\"],\n \"additionalProperties\": false\n },\n \"columns\": {\n \"$ref\": \"shared.json#/definitions/columns\"\n },\n \"columnDefault\": {\n \"$ref\": \"shared.json#/definitions/column\"\n },\n \"drawVerticalLine\": {\n \"typeof\": \"function\"\n },\n \"drawHorizontalLine\": {\n \"typeof\": \"function\"\n },\n \"singleLine\": {\n \"typeof\": \"boolean\"\n },\n \"spanningCells\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"col\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"row\": {\n \"type\": \"integer\",\n \"minimum\": 0\n },\n \"colSpan\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"rowSpan\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"alignment\": {\n \"$ref\": \"shared.json#/definitions/alignment\"\n },\n \"verticalAlignment\": {\n \"$ref\": \"shared.json#/definitions/verticalAlignment\"\n },\n \"wrapWord\": {\n \"type\": \"boolean\"\n },\n \"truncate\": {\n \"type\": \"integer\"\n },\n \"paddingLeft\": {\n \"type\": \"integer\"\n },\n \"paddingRight\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\"row\", \"col\"],\n \"additionalProperties\": false\n }\n }\n },\n \"additionalProperties\": false\n};\nconst schema15 = {\n \"type\": \"object\",\n \"properties\": {\n \"topBody\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"topJoin\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"topLeft\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"topRight\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bottomBody\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bottomJoin\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bottomLeft\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bottomRight\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bodyLeft\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bodyRight\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"bodyJoin\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"headerJoin\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinBody\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinLeft\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinRight\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinJoin\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinMiddleUp\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinMiddleDown\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinMiddleLeft\": {\n \"$ref\": \"#/definitions/border\"\n },\n \"joinMiddleRight\": {\n \"$ref\": \"#/definitions/border\"\n }\n },\n \"additionalProperties\": false\n};\nconst func8 = Object.prototype.hasOwnProperty;\nconst schema16 = {\n \"type\": \"string\"\n};\nfunction validate46(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (typeof data !== \"string\") {\n const err0 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"string\"\n },\n message: \"must be string\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n validate46.errors = vErrors;\n return errors === 0;\n}\nfunction validate45(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(func8.call(schema15.properties, key0))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n if (data.topBody !== undefined) {\n if (!(validate46(data.topBody, {\n instancePath: instancePath + \"/topBody\",\n parentData: data,\n parentDataProperty: \"topBody\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.topJoin !== undefined) {\n if (!(validate46(data.topJoin, {\n instancePath: instancePath + \"/topJoin\",\n parentData: data,\n parentDataProperty: \"topJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.topLeft !== undefined) {\n if (!(validate46(data.topLeft, {\n instancePath: instancePath + \"/topLeft\",\n parentData: data,\n parentDataProperty: \"topLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.topRight !== undefined) {\n if (!(validate46(data.topRight, {\n instancePath: instancePath + \"/topRight\",\n parentData: data,\n parentDataProperty: \"topRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomBody !== undefined) {\n if (!(validate46(data.bottomBody, {\n instancePath: instancePath + \"/bottomBody\",\n parentData: data,\n parentDataProperty: \"bottomBody\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomJoin !== undefined) {\n if (!(validate46(data.bottomJoin, {\n instancePath: instancePath + \"/bottomJoin\",\n parentData: data,\n parentDataProperty: \"bottomJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomLeft !== undefined) {\n if (!(validate46(data.bottomLeft, {\n instancePath: instancePath + \"/bottomLeft\",\n parentData: data,\n parentDataProperty: \"bottomLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomRight !== undefined) {\n if (!(validate46(data.bottomRight, {\n instancePath: instancePath + \"/bottomRight\",\n parentData: data,\n parentDataProperty: \"bottomRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bodyLeft !== undefined) {\n if (!(validate46(data.bodyLeft, {\n instancePath: instancePath + \"/bodyLeft\",\n parentData: data,\n parentDataProperty: \"bodyLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bodyRight !== undefined) {\n if (!(validate46(data.bodyRight, {\n instancePath: instancePath + \"/bodyRight\",\n parentData: data,\n parentDataProperty: \"bodyRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bodyJoin !== undefined) {\n if (!(validate46(data.bodyJoin, {\n instancePath: instancePath + \"/bodyJoin\",\n parentData: data,\n parentDataProperty: \"bodyJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.headerJoin !== undefined) {\n if (!(validate46(data.headerJoin, {\n instancePath: instancePath + \"/headerJoin\",\n parentData: data,\n parentDataProperty: \"headerJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinBody !== undefined) {\n if (!(validate46(data.joinBody, {\n instancePath: instancePath + \"/joinBody\",\n parentData: data,\n parentDataProperty: \"joinBody\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinLeft !== undefined) {\n if (!(validate46(data.joinLeft, {\n instancePath: instancePath + \"/joinLeft\",\n parentData: data,\n parentDataProperty: \"joinLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinRight !== undefined) {\n if (!(validate46(data.joinRight, {\n instancePath: instancePath + \"/joinRight\",\n parentData: data,\n parentDataProperty: \"joinRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinJoin !== undefined) {\n if (!(validate46(data.joinJoin, {\n instancePath: instancePath + \"/joinJoin\",\n parentData: data,\n parentDataProperty: \"joinJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleUp !== undefined) {\n if (!(validate46(data.joinMiddleUp, {\n instancePath: instancePath + \"/joinMiddleUp\",\n parentData: data,\n parentDataProperty: \"joinMiddleUp\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleDown !== undefined) {\n if (!(validate46(data.joinMiddleDown, {\n instancePath: instancePath + \"/joinMiddleDown\",\n parentData: data,\n parentDataProperty: \"joinMiddleDown\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleLeft !== undefined) {\n if (!(validate46(data.joinMiddleLeft, {\n instancePath: instancePath + \"/joinMiddleLeft\",\n parentData: data,\n parentDataProperty: \"joinMiddleLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleRight !== undefined) {\n if (!(validate46(data.joinMiddleRight, {\n instancePath: instancePath + \"/joinMiddleRight\",\n parentData: data,\n parentDataProperty: \"joinMiddleRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n }\n else {\n const err1 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate45.errors = vErrors;\n return errors === 0;\n}\nconst schema17 = {\n \"type\": \"string\",\n \"enum\": [\"left\", \"right\", \"center\", \"justify\"]\n};\nconst func0 = require(\"ajv/dist/runtime/equal\").default;\nfunction validate68(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (typeof data !== \"string\") {\n const err0 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"string\"\n },\n message: \"must be string\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n if (!((((data === \"left\") || (data === \"right\")) || (data === \"center\")) || (data === \"justify\"))) {\n const err1 = {\n instancePath,\n schemaPath: \"#/enum\",\n keyword: \"enum\",\n params: {\n allowedValues: schema17.enum\n },\n message: \"must be equal to one of the allowed values\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate68.errors = vErrors;\n return errors === 0;\n}\nconst schema18 = {\n \"oneOf\": [{\n \"type\": \"object\",\n \"patternProperties\": {\n \"^[0-9]+$\": {\n \"$ref\": \"#/definitions/column\"\n }\n },\n \"additionalProperties\": false\n }, {\n \"type\": \"array\",\n \"items\": {\n \"$ref\": \"#/definitions/column\"\n }\n }]\n};\nconst pattern0 = new RegExp(\"^[0-9]+$\", \"u\");\nconst schema19 = {\n \"type\": \"object\",\n \"properties\": {\n \"alignment\": {\n \"$ref\": \"#/definitions/alignment\"\n },\n \"verticalAlignment\": {\n \"$ref\": \"#/definitions/verticalAlignment\"\n },\n \"width\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"wrapWord\": {\n \"type\": \"boolean\"\n },\n \"truncate\": {\n \"type\": \"integer\"\n },\n \"paddingLeft\": {\n \"type\": \"integer\"\n },\n \"paddingRight\": {\n \"type\": \"integer\"\n }\n },\n \"additionalProperties\": false\n};\nfunction validate72(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (typeof data !== \"string\") {\n const err0 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"string\"\n },\n message: \"must be string\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n if (!((((data === \"left\") || (data === \"right\")) || (data === \"center\")) || (data === \"justify\"))) {\n const err1 = {\n instancePath,\n schemaPath: \"#/enum\",\n keyword: \"enum\",\n params: {\n allowedValues: schema17.enum\n },\n message: \"must be equal to one of the allowed values\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate72.errors = vErrors;\n return errors === 0;\n}\nconst schema21 = {\n \"type\": \"string\",\n \"enum\": [\"top\", \"middle\", \"bottom\"]\n};\nfunction validate74(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (typeof data !== \"string\") {\n const err0 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"string\"\n },\n message: \"must be string\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n if (!(((data === \"top\") || (data === \"middle\")) || (data === \"bottom\"))) {\n const err1 = {\n instancePath,\n schemaPath: \"#/enum\",\n keyword: \"enum\",\n params: {\n allowedValues: schema21.enum\n },\n message: \"must be equal to one of the allowed values\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate74.errors = vErrors;\n return errors === 0;\n}\nfunction validate71(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(((((((key0 === \"alignment\") || (key0 === \"verticalAlignment\")) || (key0 === \"width\")) || (key0 === \"wrapWord\")) || (key0 === \"truncate\")) || (key0 === \"paddingLeft\")) || (key0 === \"paddingRight\"))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n if (data.alignment !== undefined) {\n if (!(validate72(data.alignment, {\n instancePath: instancePath + \"/alignment\",\n parentData: data,\n parentDataProperty: \"alignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate72.errors : vErrors.concat(validate72.errors);\n errors = vErrors.length;\n }\n }\n if (data.verticalAlignment !== undefined) {\n if (!(validate74(data.verticalAlignment, {\n instancePath: instancePath + \"/verticalAlignment\",\n parentData: data,\n parentDataProperty: \"verticalAlignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate74.errors : vErrors.concat(validate74.errors);\n errors = vErrors.length;\n }\n }\n if (data.width !== undefined) {\n let data2 = data.width;\n if (!(((typeof data2 == \"number\") && (!(data2 % 1) && !isNaN(data2))) && (isFinite(data2)))) {\n const err1 = {\n instancePath: instancePath + \"/width\",\n schemaPath: \"#/properties/width/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n if ((typeof data2 == \"number\") && (isFinite(data2))) {\n if (data2 < 1 || isNaN(data2)) {\n const err2 = {\n instancePath: instancePath + \"/width\",\n schemaPath: \"#/properties/width/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 1\n },\n message: \"must be >= 1\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n }\n }\n if (data.wrapWord !== undefined) {\n if (typeof data.wrapWord !== \"boolean\") {\n const err3 = {\n instancePath: instancePath + \"/wrapWord\",\n schemaPath: \"#/properties/wrapWord/type\",\n keyword: \"type\",\n params: {\n type: \"boolean\"\n },\n message: \"must be boolean\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n }\n if (data.truncate !== undefined) {\n let data4 = data.truncate;\n if (!(((typeof data4 == \"number\") && (!(data4 % 1) && !isNaN(data4))) && (isFinite(data4)))) {\n const err4 = {\n instancePath: instancePath + \"/truncate\",\n schemaPath: \"#/properties/truncate/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err4];\n }\n else {\n vErrors.push(err4);\n }\n errors++;\n }\n }\n if (data.paddingLeft !== undefined) {\n let data5 = data.paddingLeft;\n if (!(((typeof data5 == \"number\") && (!(data5 % 1) && !isNaN(data5))) && (isFinite(data5)))) {\n const err5 = {\n instancePath: instancePath + \"/paddingLeft\",\n schemaPath: \"#/properties/paddingLeft/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err5];\n }\n else {\n vErrors.push(err5);\n }\n errors++;\n }\n }\n if (data.paddingRight !== undefined) {\n let data6 = data.paddingRight;\n if (!(((typeof data6 == \"number\") && (!(data6 % 1) && !isNaN(data6))) && (isFinite(data6)))) {\n const err6 = {\n instancePath: instancePath + \"/paddingRight\",\n schemaPath: \"#/properties/paddingRight/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err6];\n }\n else {\n vErrors.push(err6);\n }\n errors++;\n }\n }\n }\n else {\n const err7 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err7];\n }\n else {\n vErrors.push(err7);\n }\n errors++;\n }\n validate71.errors = vErrors;\n return errors === 0;\n}\nfunction validate70(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n const _errs0 = errors;\n let valid0 = false;\n let passing0 = null;\n const _errs1 = errors;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(pattern0.test(key0))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/oneOf/0/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n for (const key1 in data) {\n if (pattern0.test(key1)) {\n if (!(validate71(data[key1], {\n instancePath: instancePath + \"/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),\n parentData: data,\n parentDataProperty: key1,\n rootData\n }))) {\n vErrors = vErrors === null ? validate71.errors : vErrors.concat(validate71.errors);\n errors = vErrors.length;\n }\n }\n }\n }\n else {\n const err1 = {\n instancePath,\n schemaPath: \"#/oneOf/0/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n var _valid0 = _errs1 === errors;\n if (_valid0) {\n valid0 = true;\n passing0 = 0;\n }\n const _errs5 = errors;\n if (Array.isArray(data)) {\n const len0 = data.length;\n for (let i0 = 0; i0 < len0; i0++) {\n if (!(validate71(data[i0], {\n instancePath: instancePath + \"/\" + i0,\n parentData: data,\n parentDataProperty: i0,\n rootData\n }))) {\n vErrors = vErrors === null ? validate71.errors : vErrors.concat(validate71.errors);\n errors = vErrors.length;\n }\n }\n }\n else {\n const err2 = {\n instancePath,\n schemaPath: \"#/oneOf/1/type\",\n keyword: \"type\",\n params: {\n type: \"array\"\n },\n message: \"must be array\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n var _valid0 = _errs5 === errors;\n if (_valid0 && valid0) {\n valid0 = false;\n passing0 = [passing0, 1];\n }\n else {\n if (_valid0) {\n valid0 = true;\n passing0 = 1;\n }\n }\n if (!valid0) {\n const err3 = {\n instancePath,\n schemaPath: \"#/oneOf\",\n keyword: \"oneOf\",\n params: {\n passingSchemas: passing0\n },\n message: \"must match exactly one schema in oneOf\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n else {\n errors = _errs0;\n if (vErrors !== null) {\n if (_errs0) {\n vErrors.length = _errs0;\n }\n else {\n vErrors = null;\n }\n }\n }\n validate70.errors = vErrors;\n return errors === 0;\n}\nfunction validate79(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(((((((key0 === \"alignment\") || (key0 === \"verticalAlignment\")) || (key0 === \"width\")) || (key0 === \"wrapWord\")) || (key0 === \"truncate\")) || (key0 === \"paddingLeft\")) || (key0 === \"paddingRight\"))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n if (data.alignment !== undefined) {\n if (!(validate72(data.alignment, {\n instancePath: instancePath + \"/alignment\",\n parentData: data,\n parentDataProperty: \"alignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate72.errors : vErrors.concat(validate72.errors);\n errors = vErrors.length;\n }\n }\n if (data.verticalAlignment !== undefined) {\n if (!(validate74(data.verticalAlignment, {\n instancePath: instancePath + \"/verticalAlignment\",\n parentData: data,\n parentDataProperty: \"verticalAlignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate74.errors : vErrors.concat(validate74.errors);\n errors = vErrors.length;\n }\n }\n if (data.width !== undefined) {\n let data2 = data.width;\n if (!(((typeof data2 == \"number\") && (!(data2 % 1) && !isNaN(data2))) && (isFinite(data2)))) {\n const err1 = {\n instancePath: instancePath + \"/width\",\n schemaPath: \"#/properties/width/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n if ((typeof data2 == \"number\") && (isFinite(data2))) {\n if (data2 < 1 || isNaN(data2)) {\n const err2 = {\n instancePath: instancePath + \"/width\",\n schemaPath: \"#/properties/width/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 1\n },\n message: \"must be >= 1\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n }\n }\n if (data.wrapWord !== undefined) {\n if (typeof data.wrapWord !== \"boolean\") {\n const err3 = {\n instancePath: instancePath + \"/wrapWord\",\n schemaPath: \"#/properties/wrapWord/type\",\n keyword: \"type\",\n params: {\n type: \"boolean\"\n },\n message: \"must be boolean\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n }\n if (data.truncate !== undefined) {\n let data4 = data.truncate;\n if (!(((typeof data4 == \"number\") && (!(data4 % 1) && !isNaN(data4))) && (isFinite(data4)))) {\n const err4 = {\n instancePath: instancePath + \"/truncate\",\n schemaPath: \"#/properties/truncate/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err4];\n }\n else {\n vErrors.push(err4);\n }\n errors++;\n }\n }\n if (data.paddingLeft !== undefined) {\n let data5 = data.paddingLeft;\n if (!(((typeof data5 == \"number\") && (!(data5 % 1) && !isNaN(data5))) && (isFinite(data5)))) {\n const err5 = {\n instancePath: instancePath + \"/paddingLeft\",\n schemaPath: \"#/properties/paddingLeft/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err5];\n }\n else {\n vErrors.push(err5);\n }\n errors++;\n }\n }\n if (data.paddingRight !== undefined) {\n let data6 = data.paddingRight;\n if (!(((typeof data6 == \"number\") && (!(data6 % 1) && !isNaN(data6))) && (isFinite(data6)))) {\n const err6 = {\n instancePath: instancePath + \"/paddingRight\",\n schemaPath: \"#/properties/paddingRight/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err6];\n }\n else {\n vErrors.push(err6);\n }\n errors++;\n }\n }\n }\n else {\n const err7 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err7];\n }\n else {\n vErrors.push(err7);\n }\n errors++;\n }\n validate79.errors = vErrors;\n return errors === 0;\n}\nfunction validate84(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (typeof data !== \"string\") {\n const err0 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"string\"\n },\n message: \"must be string\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n if (!(((data === \"top\") || (data === \"middle\")) || (data === \"bottom\"))) {\n const err1 = {\n instancePath,\n schemaPath: \"#/enum\",\n keyword: \"enum\",\n params: {\n allowedValues: schema21.enum\n },\n message: \"must be equal to one of the allowed values\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate84.errors = vErrors;\n return errors === 0;\n}\nfunction validate43(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n /*# sourceURL=\"config.json\" */ ;\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!((((((((key0 === \"border\") || (key0 === \"header\")) || (key0 === \"columns\")) || (key0 === \"columnDefault\")) || (key0 === \"drawVerticalLine\")) || (key0 === \"drawHorizontalLine\")) || (key0 === \"singleLine\")) || (key0 === \"spanningCells\"))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n if (data.border !== undefined) {\n if (!(validate45(data.border, {\n instancePath: instancePath + \"/border\",\n parentData: data,\n parentDataProperty: \"border\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate45.errors : vErrors.concat(validate45.errors);\n errors = vErrors.length;\n }\n }\n if (data.header !== undefined) {\n let data1 = data.header;\n if (data1 && typeof data1 == \"object\" && !Array.isArray(data1)) {\n if (data1.content === undefined) {\n const err1 = {\n instancePath: instancePath + \"/header\",\n schemaPath: \"#/properties/header/required\",\n keyword: \"required\",\n params: {\n missingProperty: \"content\"\n },\n message: \"must have required property '\" + \"content\" + \"'\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n for (const key1 in data1) {\n if (!((((((key1 === \"content\") || (key1 === \"alignment\")) || (key1 === \"wrapWord\")) || (key1 === \"truncate\")) || (key1 === \"paddingLeft\")) || (key1 === \"paddingRight\"))) {\n const err2 = {\n instancePath: instancePath + \"/header\",\n schemaPath: \"#/properties/header/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key1\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n }\n if (data1.content !== undefined) {\n if (typeof data1.content !== \"string\") {\n const err3 = {\n instancePath: instancePath + \"/header/content\",\n schemaPath: \"#/properties/header/properties/content/type\",\n keyword: \"type\",\n params: {\n type: \"string\"\n },\n message: \"must be string\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n }\n if (data1.alignment !== undefined) {\n if (!(validate68(data1.alignment, {\n instancePath: instancePath + \"/header/alignment\",\n parentData: data1,\n parentDataProperty: \"alignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate68.errors : vErrors.concat(validate68.errors);\n errors = vErrors.length;\n }\n }\n if (data1.wrapWord !== undefined) {\n if (typeof data1.wrapWord !== \"boolean\") {\n const err4 = {\n instancePath: instancePath + \"/header/wrapWord\",\n schemaPath: \"#/properties/header/properties/wrapWord/type\",\n keyword: \"type\",\n params: {\n type: \"boolean\"\n },\n message: \"must be boolean\"\n };\n if (vErrors === null) {\n vErrors = [err4];\n }\n else {\n vErrors.push(err4);\n }\n errors++;\n }\n }\n if (data1.truncate !== undefined) {\n let data5 = data1.truncate;\n if (!(((typeof data5 == \"number\") && (!(data5 % 1) && !isNaN(data5))) && (isFinite(data5)))) {\n const err5 = {\n instancePath: instancePath + \"/header/truncate\",\n schemaPath: \"#/properties/header/properties/truncate/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err5];\n }\n else {\n vErrors.push(err5);\n }\n errors++;\n }\n }\n if (data1.paddingLeft !== undefined) {\n let data6 = data1.paddingLeft;\n if (!(((typeof data6 == \"number\") && (!(data6 % 1) && !isNaN(data6))) && (isFinite(data6)))) {\n const err6 = {\n instancePath: instancePath + \"/header/paddingLeft\",\n schemaPath: \"#/properties/header/properties/paddingLeft/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err6];\n }\n else {\n vErrors.push(err6);\n }\n errors++;\n }\n }\n if (data1.paddingRight !== undefined) {\n let data7 = data1.paddingRight;\n if (!(((typeof data7 == \"number\") && (!(data7 % 1) && !isNaN(data7))) && (isFinite(data7)))) {\n const err7 = {\n instancePath: instancePath + \"/header/paddingRight\",\n schemaPath: \"#/properties/header/properties/paddingRight/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err7];\n }\n else {\n vErrors.push(err7);\n }\n errors++;\n }\n }\n }\n else {\n const err8 = {\n instancePath: instancePath + \"/header\",\n schemaPath: \"#/properties/header/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err8];\n }\n else {\n vErrors.push(err8);\n }\n errors++;\n }\n }\n if (data.columns !== undefined) {\n if (!(validate70(data.columns, {\n instancePath: instancePath + \"/columns\",\n parentData: data,\n parentDataProperty: \"columns\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate70.errors : vErrors.concat(validate70.errors);\n errors = vErrors.length;\n }\n }\n if (data.columnDefault !== undefined) {\n if (!(validate79(data.columnDefault, {\n instancePath: instancePath + \"/columnDefault\",\n parentData: data,\n parentDataProperty: \"columnDefault\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate79.errors : vErrors.concat(validate79.errors);\n errors = vErrors.length;\n }\n }\n if (data.drawVerticalLine !== undefined) {\n if (typeof data.drawVerticalLine != \"function\") {\n const err9 = {\n instancePath: instancePath + \"/drawVerticalLine\",\n schemaPath: \"#/properties/drawVerticalLine/typeof\",\n keyword: \"typeof\",\n params: {},\n message: \"must pass \\\"typeof\\\" keyword validation\"\n };\n if (vErrors === null) {\n vErrors = [err9];\n }\n else {\n vErrors.push(err9);\n }\n errors++;\n }\n }\n if (data.drawHorizontalLine !== undefined) {\n if (typeof data.drawHorizontalLine != \"function\") {\n const err10 = {\n instancePath: instancePath + \"/drawHorizontalLine\",\n schemaPath: \"#/properties/drawHorizontalLine/typeof\",\n keyword: \"typeof\",\n params: {},\n message: \"must pass \\\"typeof\\\" keyword validation\"\n };\n if (vErrors === null) {\n vErrors = [err10];\n }\n else {\n vErrors.push(err10);\n }\n errors++;\n }\n }\n if (data.singleLine !== undefined) {\n if (typeof data.singleLine != \"boolean\") {\n const err11 = {\n instancePath: instancePath + \"/singleLine\",\n schemaPath: \"#/properties/singleLine/typeof\",\n keyword: \"typeof\",\n params: {},\n message: \"must pass \\\"typeof\\\" keyword validation\"\n };\n if (vErrors === null) {\n vErrors = [err11];\n }\n else {\n vErrors.push(err11);\n }\n errors++;\n }\n }\n if (data.spanningCells !== undefined) {\n let data13 = data.spanningCells;\n if (Array.isArray(data13)) {\n const len0 = data13.length;\n for (let i0 = 0; i0 < len0; i0++) {\n let data14 = data13[i0];\n if (data14 && typeof data14 == \"object\" && !Array.isArray(data14)) {\n if (data14.row === undefined) {\n const err12 = {\n instancePath: instancePath + \"/spanningCells/\" + i0,\n schemaPath: \"#/properties/spanningCells/items/required\",\n keyword: \"required\",\n params: {\n missingProperty: \"row\"\n },\n message: \"must have required property '\" + \"row\" + \"'\"\n };\n if (vErrors === null) {\n vErrors = [err12];\n }\n else {\n vErrors.push(err12);\n }\n errors++;\n }\n if (data14.col === undefined) {\n const err13 = {\n instancePath: instancePath + \"/spanningCells/\" + i0,\n schemaPath: \"#/properties/spanningCells/items/required\",\n keyword: \"required\",\n params: {\n missingProperty: \"col\"\n },\n message: \"must have required property '\" + \"col\" + \"'\"\n };\n if (vErrors === null) {\n vErrors = [err13];\n }\n else {\n vErrors.push(err13);\n }\n errors++;\n }\n for (const key2 in data14) {\n if (!(func8.call(schema13.properties.spanningCells.items.properties, key2))) {\n const err14 = {\n instancePath: instancePath + \"/spanningCells/\" + i0,\n schemaPath: \"#/properties/spanningCells/items/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key2\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err14];\n }\n else {\n vErrors.push(err14);\n }\n errors++;\n }\n }\n if (data14.col !== undefined) {\n let data15 = data14.col;\n if (!(((typeof data15 == \"number\") && (!(data15 % 1) && !isNaN(data15))) && (isFinite(data15)))) {\n const err15 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/col\",\n schemaPath: \"#/properties/spanningCells/items/properties/col/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err15];\n }\n else {\n vErrors.push(err15);\n }\n errors++;\n }\n if ((typeof data15 == \"number\") && (isFinite(data15))) {\n if (data15 < 0 || isNaN(data15)) {\n const err16 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/col\",\n schemaPath: \"#/properties/spanningCells/items/properties/col/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 0\n },\n message: \"must be >= 0\"\n };\n if (vErrors === null) {\n vErrors = [err16];\n }\n else {\n vErrors.push(err16);\n }\n errors++;\n }\n }\n }\n if (data14.row !== undefined) {\n let data16 = data14.row;\n if (!(((typeof data16 == \"number\") && (!(data16 % 1) && !isNaN(data16))) && (isFinite(data16)))) {\n const err17 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/row\",\n schemaPath: \"#/properties/spanningCells/items/properties/row/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err17];\n }\n else {\n vErrors.push(err17);\n }\n errors++;\n }\n if ((typeof data16 == \"number\") && (isFinite(data16))) {\n if (data16 < 0 || isNaN(data16)) {\n const err18 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/row\",\n schemaPath: \"#/properties/spanningCells/items/properties/row/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 0\n },\n message: \"must be >= 0\"\n };\n if (vErrors === null) {\n vErrors = [err18];\n }\n else {\n vErrors.push(err18);\n }\n errors++;\n }\n }\n }\n if (data14.colSpan !== undefined) {\n let data17 = data14.colSpan;\n if (!(((typeof data17 == \"number\") && (!(data17 % 1) && !isNaN(data17))) && (isFinite(data17)))) {\n const err19 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/colSpan\",\n schemaPath: \"#/properties/spanningCells/items/properties/colSpan/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err19];\n }\n else {\n vErrors.push(err19);\n }\n errors++;\n }\n if ((typeof data17 == \"number\") && (isFinite(data17))) {\n if (data17 < 1 || isNaN(data17)) {\n const err20 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/colSpan\",\n schemaPath: \"#/properties/spanningCells/items/properties/colSpan/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 1\n },\n message: \"must be >= 1\"\n };\n if (vErrors === null) {\n vErrors = [err20];\n }\n else {\n vErrors.push(err20);\n }\n errors++;\n }\n }\n }\n if (data14.rowSpan !== undefined) {\n let data18 = data14.rowSpan;\n if (!(((typeof data18 == \"number\") && (!(data18 % 1) && !isNaN(data18))) && (isFinite(data18)))) {\n const err21 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/rowSpan\",\n schemaPath: \"#/properties/spanningCells/items/properties/rowSpan/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err21];\n }\n else {\n vErrors.push(err21);\n }\n errors++;\n }\n if ((typeof data18 == \"number\") && (isFinite(data18))) {\n if (data18 < 1 || isNaN(data18)) {\n const err22 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/rowSpan\",\n schemaPath: \"#/properties/spanningCells/items/properties/rowSpan/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 1\n },\n message: \"must be >= 1\"\n };\n if (vErrors === null) {\n vErrors = [err22];\n }\n else {\n vErrors.push(err22);\n }\n errors++;\n }\n }\n }\n if (data14.alignment !== undefined) {\n if (!(validate68(data14.alignment, {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/alignment\",\n parentData: data14,\n parentDataProperty: \"alignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate68.errors : vErrors.concat(validate68.errors);\n errors = vErrors.length;\n }\n }\n if (data14.verticalAlignment !== undefined) {\n if (!(validate84(data14.verticalAlignment, {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/verticalAlignment\",\n parentData: data14,\n parentDataProperty: \"verticalAlignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate84.errors : vErrors.concat(validate84.errors);\n errors = vErrors.length;\n }\n }\n if (data14.wrapWord !== undefined) {\n if (typeof data14.wrapWord !== \"boolean\") {\n const err23 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/wrapWord\",\n schemaPath: \"#/properties/spanningCells/items/properties/wrapWord/type\",\n keyword: \"type\",\n params: {\n type: \"boolean\"\n },\n message: \"must be boolean\"\n };\n if (vErrors === null) {\n vErrors = [err23];\n }\n else {\n vErrors.push(err23);\n }\n errors++;\n }\n }\n if (data14.truncate !== undefined) {\n let data22 = data14.truncate;\n if (!(((typeof data22 == \"number\") && (!(data22 % 1) && !isNaN(data22))) && (isFinite(data22)))) {\n const err24 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/truncate\",\n schemaPath: \"#/properties/spanningCells/items/properties/truncate/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err24];\n }\n else {\n vErrors.push(err24);\n }\n errors++;\n }\n }\n if (data14.paddingLeft !== undefined) {\n let data23 = data14.paddingLeft;\n if (!(((typeof data23 == \"number\") && (!(data23 % 1) && !isNaN(data23))) && (isFinite(data23)))) {\n const err25 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/paddingLeft\",\n schemaPath: \"#/properties/spanningCells/items/properties/paddingLeft/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err25];\n }\n else {\n vErrors.push(err25);\n }\n errors++;\n }\n }\n if (data14.paddingRight !== undefined) {\n let data24 = data14.paddingRight;\n if (!(((typeof data24 == \"number\") && (!(data24 % 1) && !isNaN(data24))) && (isFinite(data24)))) {\n const err26 = {\n instancePath: instancePath + \"/spanningCells/\" + i0 + \"/paddingRight\",\n schemaPath: \"#/properties/spanningCells/items/properties/paddingRight/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err26];\n }\n else {\n vErrors.push(err26);\n }\n errors++;\n }\n }\n }\n else {\n const err27 = {\n instancePath: instancePath + \"/spanningCells/\" + i0,\n schemaPath: \"#/properties/spanningCells/items/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err27];\n }\n else {\n vErrors.push(err27);\n }\n errors++;\n }\n }\n }\n else {\n const err28 = {\n instancePath: instancePath + \"/spanningCells\",\n schemaPath: \"#/properties/spanningCells/type\",\n keyword: \"type\",\n params: {\n type: \"array\"\n },\n message: \"must be array\"\n };\n if (vErrors === null) {\n vErrors = [err28];\n }\n else {\n vErrors.push(err28);\n }\n errors++;\n }\n }\n }\n else {\n const err29 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err29];\n }\n else {\n vErrors.push(err29);\n }\n errors++;\n }\n validate43.errors = vErrors;\n return errors === 0;\n}\nexports[\"streamConfig.json\"] = validate86;\nconst schema24 = {\n \"$id\": \"streamConfig.json\",\n \"$schema\": \"http://json-schema.org/draft-07/schema#\",\n \"type\": \"object\",\n \"properties\": {\n \"border\": {\n \"$ref\": \"shared.json#/definitions/borders\"\n },\n \"columns\": {\n \"$ref\": \"shared.json#/definitions/columns\"\n },\n \"columnDefault\": {\n \"$ref\": \"shared.json#/definitions/column\"\n },\n \"columnCount\": {\n \"type\": \"integer\",\n \"minimum\": 1\n },\n \"drawVerticalLine\": {\n \"typeof\": \"function\"\n }\n },\n \"required\": [\"columnDefault\", \"columnCount\"],\n \"additionalProperties\": false\n};\nfunction validate87(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(func8.call(schema15.properties, key0))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n if (data.topBody !== undefined) {\n if (!(validate46(data.topBody, {\n instancePath: instancePath + \"/topBody\",\n parentData: data,\n parentDataProperty: \"topBody\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.topJoin !== undefined) {\n if (!(validate46(data.topJoin, {\n instancePath: instancePath + \"/topJoin\",\n parentData: data,\n parentDataProperty: \"topJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.topLeft !== undefined) {\n if (!(validate46(data.topLeft, {\n instancePath: instancePath + \"/topLeft\",\n parentData: data,\n parentDataProperty: \"topLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.topRight !== undefined) {\n if (!(validate46(data.topRight, {\n instancePath: instancePath + \"/topRight\",\n parentData: data,\n parentDataProperty: \"topRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomBody !== undefined) {\n if (!(validate46(data.bottomBody, {\n instancePath: instancePath + \"/bottomBody\",\n parentData: data,\n parentDataProperty: \"bottomBody\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomJoin !== undefined) {\n if (!(validate46(data.bottomJoin, {\n instancePath: instancePath + \"/bottomJoin\",\n parentData: data,\n parentDataProperty: \"bottomJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomLeft !== undefined) {\n if (!(validate46(data.bottomLeft, {\n instancePath: instancePath + \"/bottomLeft\",\n parentData: data,\n parentDataProperty: \"bottomLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bottomRight !== undefined) {\n if (!(validate46(data.bottomRight, {\n instancePath: instancePath + \"/bottomRight\",\n parentData: data,\n parentDataProperty: \"bottomRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bodyLeft !== undefined) {\n if (!(validate46(data.bodyLeft, {\n instancePath: instancePath + \"/bodyLeft\",\n parentData: data,\n parentDataProperty: \"bodyLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bodyRight !== undefined) {\n if (!(validate46(data.bodyRight, {\n instancePath: instancePath + \"/bodyRight\",\n parentData: data,\n parentDataProperty: \"bodyRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.bodyJoin !== undefined) {\n if (!(validate46(data.bodyJoin, {\n instancePath: instancePath + \"/bodyJoin\",\n parentData: data,\n parentDataProperty: \"bodyJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.headerJoin !== undefined) {\n if (!(validate46(data.headerJoin, {\n instancePath: instancePath + \"/headerJoin\",\n parentData: data,\n parentDataProperty: \"headerJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinBody !== undefined) {\n if (!(validate46(data.joinBody, {\n instancePath: instancePath + \"/joinBody\",\n parentData: data,\n parentDataProperty: \"joinBody\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinLeft !== undefined) {\n if (!(validate46(data.joinLeft, {\n instancePath: instancePath + \"/joinLeft\",\n parentData: data,\n parentDataProperty: \"joinLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinRight !== undefined) {\n if (!(validate46(data.joinRight, {\n instancePath: instancePath + \"/joinRight\",\n parentData: data,\n parentDataProperty: \"joinRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinJoin !== undefined) {\n if (!(validate46(data.joinJoin, {\n instancePath: instancePath + \"/joinJoin\",\n parentData: data,\n parentDataProperty: \"joinJoin\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleUp !== undefined) {\n if (!(validate46(data.joinMiddleUp, {\n instancePath: instancePath + \"/joinMiddleUp\",\n parentData: data,\n parentDataProperty: \"joinMiddleUp\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleDown !== undefined) {\n if (!(validate46(data.joinMiddleDown, {\n instancePath: instancePath + \"/joinMiddleDown\",\n parentData: data,\n parentDataProperty: \"joinMiddleDown\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleLeft !== undefined) {\n if (!(validate46(data.joinMiddleLeft, {\n instancePath: instancePath + \"/joinMiddleLeft\",\n parentData: data,\n parentDataProperty: \"joinMiddleLeft\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n if (data.joinMiddleRight !== undefined) {\n if (!(validate46(data.joinMiddleRight, {\n instancePath: instancePath + \"/joinMiddleRight\",\n parentData: data,\n parentDataProperty: \"joinMiddleRight\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate46.errors : vErrors.concat(validate46.errors);\n errors = vErrors.length;\n }\n }\n }\n else {\n const err1 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n validate87.errors = vErrors;\n return errors === 0;\n}\nfunction validate109(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n const _errs0 = errors;\n let valid0 = false;\n let passing0 = null;\n const _errs1 = errors;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(pattern0.test(key0))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/oneOf/0/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n for (const key1 in data) {\n if (pattern0.test(key1)) {\n if (!(validate71(data[key1], {\n instancePath: instancePath + \"/\" + key1.replace(/~/g, \"~0\").replace(/\\//g, \"~1\"),\n parentData: data,\n parentDataProperty: key1,\n rootData\n }))) {\n vErrors = vErrors === null ? validate71.errors : vErrors.concat(validate71.errors);\n errors = vErrors.length;\n }\n }\n }\n }\n else {\n const err1 = {\n instancePath,\n schemaPath: \"#/oneOf/0/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n var _valid0 = _errs1 === errors;\n if (_valid0) {\n valid0 = true;\n passing0 = 0;\n }\n const _errs5 = errors;\n if (Array.isArray(data)) {\n const len0 = data.length;\n for (let i0 = 0; i0 < len0; i0++) {\n if (!(validate71(data[i0], {\n instancePath: instancePath + \"/\" + i0,\n parentData: data,\n parentDataProperty: i0,\n rootData\n }))) {\n vErrors = vErrors === null ? validate71.errors : vErrors.concat(validate71.errors);\n errors = vErrors.length;\n }\n }\n }\n else {\n const err2 = {\n instancePath,\n schemaPath: \"#/oneOf/1/type\",\n keyword: \"type\",\n params: {\n type: \"array\"\n },\n message: \"must be array\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n var _valid0 = _errs5 === errors;\n if (_valid0 && valid0) {\n valid0 = false;\n passing0 = [passing0, 1];\n }\n else {\n if (_valid0) {\n valid0 = true;\n passing0 = 1;\n }\n }\n if (!valid0) {\n const err3 = {\n instancePath,\n schemaPath: \"#/oneOf\",\n keyword: \"oneOf\",\n params: {\n passingSchemas: passing0\n },\n message: \"must match exactly one schema in oneOf\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n else {\n errors = _errs0;\n if (vErrors !== null) {\n if (_errs0) {\n vErrors.length = _errs0;\n }\n else {\n vErrors = null;\n }\n }\n }\n validate109.errors = vErrors;\n return errors === 0;\n}\nfunction validate113(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n for (const key0 in data) {\n if (!(((((((key0 === \"alignment\") || (key0 === \"verticalAlignment\")) || (key0 === \"width\")) || (key0 === \"wrapWord\")) || (key0 === \"truncate\")) || (key0 === \"paddingLeft\")) || (key0 === \"paddingRight\"))) {\n const err0 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n }\n if (data.alignment !== undefined) {\n if (!(validate72(data.alignment, {\n instancePath: instancePath + \"/alignment\",\n parentData: data,\n parentDataProperty: \"alignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate72.errors : vErrors.concat(validate72.errors);\n errors = vErrors.length;\n }\n }\n if (data.verticalAlignment !== undefined) {\n if (!(validate74(data.verticalAlignment, {\n instancePath: instancePath + \"/verticalAlignment\",\n parentData: data,\n parentDataProperty: \"verticalAlignment\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate74.errors : vErrors.concat(validate74.errors);\n errors = vErrors.length;\n }\n }\n if (data.width !== undefined) {\n let data2 = data.width;\n if (!(((typeof data2 == \"number\") && (!(data2 % 1) && !isNaN(data2))) && (isFinite(data2)))) {\n const err1 = {\n instancePath: instancePath + \"/width\",\n schemaPath: \"#/properties/width/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n if ((typeof data2 == \"number\") && (isFinite(data2))) {\n if (data2 < 1 || isNaN(data2)) {\n const err2 = {\n instancePath: instancePath + \"/width\",\n schemaPath: \"#/properties/width/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 1\n },\n message: \"must be >= 1\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n }\n }\n if (data.wrapWord !== undefined) {\n if (typeof data.wrapWord !== \"boolean\") {\n const err3 = {\n instancePath: instancePath + \"/wrapWord\",\n schemaPath: \"#/properties/wrapWord/type\",\n keyword: \"type\",\n params: {\n type: \"boolean\"\n },\n message: \"must be boolean\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n }\n if (data.truncate !== undefined) {\n let data4 = data.truncate;\n if (!(((typeof data4 == \"number\") && (!(data4 % 1) && !isNaN(data4))) && (isFinite(data4)))) {\n const err4 = {\n instancePath: instancePath + \"/truncate\",\n schemaPath: \"#/properties/truncate/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err4];\n }\n else {\n vErrors.push(err4);\n }\n errors++;\n }\n }\n if (data.paddingLeft !== undefined) {\n let data5 = data.paddingLeft;\n if (!(((typeof data5 == \"number\") && (!(data5 % 1) && !isNaN(data5))) && (isFinite(data5)))) {\n const err5 = {\n instancePath: instancePath + \"/paddingLeft\",\n schemaPath: \"#/properties/paddingLeft/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err5];\n }\n else {\n vErrors.push(err5);\n }\n errors++;\n }\n }\n if (data.paddingRight !== undefined) {\n let data6 = data.paddingRight;\n if (!(((typeof data6 == \"number\") && (!(data6 % 1) && !isNaN(data6))) && (isFinite(data6)))) {\n const err6 = {\n instancePath: instancePath + \"/paddingRight\",\n schemaPath: \"#/properties/paddingRight/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err6];\n }\n else {\n vErrors.push(err6);\n }\n errors++;\n }\n }\n }\n else {\n const err7 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err7];\n }\n else {\n vErrors.push(err7);\n }\n errors++;\n }\n validate113.errors = vErrors;\n return errors === 0;\n}\nfunction validate86(data, { instancePath = \"\", parentData, parentDataProperty, rootData = data } = {}) {\n /*# sourceURL=\"streamConfig.json\" */ ;\n let vErrors = null;\n let errors = 0;\n if (data && typeof data == \"object\" && !Array.isArray(data)) {\n if (data.columnDefault === undefined) {\n const err0 = {\n instancePath,\n schemaPath: \"#/required\",\n keyword: \"required\",\n params: {\n missingProperty: \"columnDefault\"\n },\n message: \"must have required property '\" + \"columnDefault\" + \"'\"\n };\n if (vErrors === null) {\n vErrors = [err0];\n }\n else {\n vErrors.push(err0);\n }\n errors++;\n }\n if (data.columnCount === undefined) {\n const err1 = {\n instancePath,\n schemaPath: \"#/required\",\n keyword: \"required\",\n params: {\n missingProperty: \"columnCount\"\n },\n message: \"must have required property '\" + \"columnCount\" + \"'\"\n };\n if (vErrors === null) {\n vErrors = [err1];\n }\n else {\n vErrors.push(err1);\n }\n errors++;\n }\n for (const key0 in data) {\n if (!(((((key0 === \"border\") || (key0 === \"columns\")) || (key0 === \"columnDefault\")) || (key0 === \"columnCount\")) || (key0 === \"drawVerticalLine\"))) {\n const err2 = {\n instancePath,\n schemaPath: \"#/additionalProperties\",\n keyword: \"additionalProperties\",\n params: {\n additionalProperty: key0\n },\n message: \"must NOT have additional properties\"\n };\n if (vErrors === null) {\n vErrors = [err2];\n }\n else {\n vErrors.push(err2);\n }\n errors++;\n }\n }\n if (data.border !== undefined) {\n if (!(validate87(data.border, {\n instancePath: instancePath + \"/border\",\n parentData: data,\n parentDataProperty: \"border\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate87.errors : vErrors.concat(validate87.errors);\n errors = vErrors.length;\n }\n }\n if (data.columns !== undefined) {\n if (!(validate109(data.columns, {\n instancePath: instancePath + \"/columns\",\n parentData: data,\n parentDataProperty: \"columns\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate109.errors : vErrors.concat(validate109.errors);\n errors = vErrors.length;\n }\n }\n if (data.columnDefault !== undefined) {\n if (!(validate113(data.columnDefault, {\n instancePath: instancePath + \"/columnDefault\",\n parentData: data,\n parentDataProperty: \"columnDefault\",\n rootData\n }))) {\n vErrors = vErrors === null ? validate113.errors : vErrors.concat(validate113.errors);\n errors = vErrors.length;\n }\n }\n if (data.columnCount !== undefined) {\n let data3 = data.columnCount;\n if (!(((typeof data3 == \"number\") && (!(data3 % 1) && !isNaN(data3))) && (isFinite(data3)))) {\n const err3 = {\n instancePath: instancePath + \"/columnCount\",\n schemaPath: \"#/properties/columnCount/type\",\n keyword: \"type\",\n params: {\n type: \"integer\"\n },\n message: \"must be integer\"\n };\n if (vErrors === null) {\n vErrors = [err3];\n }\n else {\n vErrors.push(err3);\n }\n errors++;\n }\n if ((typeof data3 == \"number\") && (isFinite(data3))) {\n if (data3 < 1 || isNaN(data3)) {\n const err4 = {\n instancePath: instancePath + \"/columnCount\",\n schemaPath: \"#/properties/columnCount/minimum\",\n keyword: \"minimum\",\n params: {\n comparison: \">=\",\n limit: 1\n },\n message: \"must be >= 1\"\n };\n if (vErrors === null) {\n vErrors = [err4];\n }\n else {\n vErrors.push(err4);\n }\n errors++;\n }\n }\n }\n if (data.drawVerticalLine !== undefined) {\n if (typeof data.drawVerticalLine != \"function\") {\n const err5 = {\n instancePath: instancePath + \"/drawVerticalLine\",\n schemaPath: \"#/properties/drawVerticalLine/typeof\",\n keyword: \"typeof\",\n params: {},\n message: \"must pass \\\"typeof\\\" keyword validation\"\n };\n if (vErrors === null) {\n vErrors = [err5];\n }\n else {\n vErrors.push(err5);\n }\n errors++;\n }\n }\n }\n else {\n const err6 = {\n instancePath,\n schemaPath: \"#/type\",\n keyword: \"type\",\n params: {\n type: \"object\"\n },\n message: \"must be object\"\n };\n if (vErrors === null) {\n vErrors = [err6];\n }\n else {\n vErrors.push(err6);\n }\n errors++;\n }\n validate86.errors = vErrors;\n return errors === 0;\n}\n//# sourceMappingURL=validators.js.map","\"use strict\";\n/* eslint-disable sort-keys-fix/sort-keys-fix */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBorderCharacters = void 0;\nconst getBorderCharacters = (name) => {\n if (name === 'honeywell') {\n return {\n topBody: '═',\n topJoin: '╤',\n topLeft: '╔',\n topRight: '╗',\n bottomBody: '═',\n bottomJoin: '╧',\n bottomLeft: '╚',\n bottomRight: '╝',\n bodyLeft: '║',\n bodyRight: '║',\n bodyJoin: '│',\n headerJoin: '┬',\n joinBody: '─',\n joinLeft: '╟',\n joinRight: '╢',\n joinJoin: '┼',\n joinMiddleDown: '┬',\n joinMiddleUp: '┴',\n joinMiddleLeft: '┤',\n joinMiddleRight: '├',\n };\n }\n if (name === 'norc') {\n return {\n topBody: '─',\n topJoin: '┬',\n topLeft: '┌',\n topRight: '┐',\n bottomBody: '─',\n bottomJoin: '┴',\n bottomLeft: '└',\n bottomRight: '┘',\n bodyLeft: '│',\n bodyRight: '│',\n bodyJoin: '│',\n headerJoin: '┬',\n joinBody: '─',\n joinLeft: '├',\n joinRight: '┤',\n joinJoin: '┼',\n joinMiddleDown: '┬',\n joinMiddleUp: '┴',\n joinMiddleLeft: '┤',\n joinMiddleRight: '├',\n };\n }\n if (name === 'ramac') {\n return {\n topBody: '-',\n topJoin: '+',\n topLeft: '+',\n topRight: '+',\n bottomBody: '-',\n bottomJoin: '+',\n bottomLeft: '+',\n bottomRight: '+',\n bodyLeft: '|',\n bodyRight: '|',\n bodyJoin: '|',\n headerJoin: '+',\n joinBody: '-',\n joinLeft: '|',\n joinRight: '|',\n joinJoin: '|',\n joinMiddleDown: '+',\n joinMiddleUp: '+',\n joinMiddleLeft: '+',\n joinMiddleRight: '+',\n };\n }\n if (name === 'void') {\n return {\n topBody: '',\n topJoin: '',\n topLeft: '',\n topRight: '',\n bottomBody: '',\n bottomJoin: '',\n bottomLeft: '',\n bottomRight: '',\n bodyLeft: '',\n bodyRight: '',\n bodyJoin: '',\n headerJoin: '',\n joinBody: '',\n joinLeft: '',\n joinRight: '',\n joinJoin: '',\n joinMiddleDown: '',\n joinMiddleUp: '',\n joinMiddleLeft: '',\n joinMiddleRight: '',\n };\n }\n throw new Error('Unknown border template \"' + name + '\".');\n};\nexports.getBorderCharacters = getBorderCharacters;\n//# sourceMappingURL=getBorderCharacters.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getBorderCharacters = exports.createStream = exports.table = void 0;\nconst createStream_1 = require(\"./createStream\");\nObject.defineProperty(exports, \"createStream\", { enumerable: true, get: function () { return createStream_1.createStream; } });\nconst getBorderCharacters_1 = require(\"./getBorderCharacters\");\nObject.defineProperty(exports, \"getBorderCharacters\", { enumerable: true, get: function () { return getBorderCharacters_1.getBorderCharacters; } });\nconst table_1 = require(\"./table\");\nObject.defineProperty(exports, \"table\", { enumerable: true, get: function () { return table_1.table; } });\n__exportStar(require(\"./types/api\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.injectHeaderConfig = void 0;\nconst injectHeaderConfig = (rows, config) => {\n var _a;\n let spanningCellConfig = (_a = config.spanningCells) !== null && _a !== void 0 ? _a : [];\n const headerConfig = config.header;\n const adjustedRows = [...rows];\n if (headerConfig) {\n spanningCellConfig = spanningCellConfig.map(({ row, ...rest }) => {\n return { ...rest,\n row: row + 1 };\n });\n const { content, ...headerStyles } = headerConfig;\n spanningCellConfig.unshift({ alignment: 'center',\n col: 0,\n colSpan: rows[0].length,\n paddingLeft: 1,\n paddingRight: 1,\n row: 0,\n wrapWord: false,\n ...headerStyles });\n adjustedRows.unshift([content, ...Array.from({ length: rows[0].length - 1 }).fill('')]);\n }\n return [adjustedRows,\n spanningCellConfig];\n};\nexports.injectHeaderConfig = injectHeaderConfig;\n//# sourceMappingURL=injectHeaderConfig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeRangeConfig = void 0;\nconst utils_1 = require(\"./utils\");\nconst makeRangeConfig = (spanningCellConfig, columnsConfig) => {\n var _a;\n const { topLeft, bottomRight } = (0, utils_1.calculateRangeCoordinate)(spanningCellConfig);\n const cellConfig = {\n ...columnsConfig[topLeft.col],\n ...spanningCellConfig,\n paddingRight: (_a = spanningCellConfig.paddingRight) !== null && _a !== void 0 ? _a : columnsConfig[bottomRight.col].paddingRight,\n };\n return { ...cellConfig,\n bottomRight,\n topLeft };\n};\nexports.makeRangeConfig = makeRangeConfig;\n//# sourceMappingURL=makeRangeConfig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeStreamConfig = void 0;\nconst utils_1 = require(\"./utils\");\nconst validateConfig_1 = require(\"./validateConfig\");\n/**\n * Creates a configuration for every column using default\n * values for the missing configuration properties.\n */\nconst makeColumnsConfig = (columnCount, columns = {}, columnDefault) => {\n return Array.from({ length: columnCount }).map((_, index) => {\n return {\n alignment: 'left',\n paddingLeft: 1,\n paddingRight: 1,\n truncate: Number.POSITIVE_INFINITY,\n verticalAlignment: 'top',\n wrapWord: false,\n ...columnDefault,\n ...columns[index],\n };\n });\n};\n/**\n * Makes a new configuration object out of the userConfig object\n * using default values for the missing configuration properties.\n */\nconst makeStreamConfig = (config) => {\n (0, validateConfig_1.validateConfig)('streamConfig.json', config);\n if (config.columnDefault.width === undefined) {\n throw new Error('Must provide config.columnDefault.width when creating a stream.');\n }\n return {\n drawVerticalLine: () => {\n return true;\n },\n ...config,\n border: (0, utils_1.makeBorderConfig)(config.border),\n columns: makeColumnsConfig(config.columnCount, config.columns, config.columnDefault),\n };\n};\nexports.makeStreamConfig = makeStreamConfig;\n//# sourceMappingURL=makeStreamConfig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeTableConfig = void 0;\nconst calculateMaximumColumnWidths_1 = require(\"./calculateMaximumColumnWidths\");\nconst spanningCellManager_1 = require(\"./spanningCellManager\");\nconst utils_1 = require(\"./utils\");\nconst validateConfig_1 = require(\"./validateConfig\");\nconst validateSpanningCellConfig_1 = require(\"./validateSpanningCellConfig\");\n/**\n * Creates a configuration for every column using default\n * values for the missing configuration properties.\n */\nconst makeColumnsConfig = (rows, columns, columnDefault, spanningCellConfigs) => {\n const columnWidths = (0, calculateMaximumColumnWidths_1.calculateMaximumColumnWidths)(rows, spanningCellConfigs);\n return rows[0].map((_, columnIndex) => {\n return {\n alignment: 'left',\n paddingLeft: 1,\n paddingRight: 1,\n truncate: Number.POSITIVE_INFINITY,\n verticalAlignment: 'top',\n width: columnWidths[columnIndex],\n wrapWord: false,\n ...columnDefault,\n ...columns === null || columns === void 0 ? void 0 : columns[columnIndex],\n };\n });\n};\n/**\n * Makes a new configuration object out of the userConfig object\n * using default values for the missing configuration properties.\n */\nconst makeTableConfig = (rows, config = {}, injectedSpanningCellConfig) => {\n var _a, _b, _c, _d, _e;\n (0, validateConfig_1.validateConfig)('config.json', config);\n (0, validateSpanningCellConfig_1.validateSpanningCellConfig)(rows, (_a = config.spanningCells) !== null && _a !== void 0 ? _a : []);\n const spanningCellConfigs = (_b = injectedSpanningCellConfig !== null && injectedSpanningCellConfig !== void 0 ? injectedSpanningCellConfig : config.spanningCells) !== null && _b !== void 0 ? _b : [];\n const columnsConfig = makeColumnsConfig(rows, config.columns, config.columnDefault, spanningCellConfigs);\n const drawVerticalLine = (_c = config.drawVerticalLine) !== null && _c !== void 0 ? _c : (() => {\n return true;\n });\n const drawHorizontalLine = (_d = config.drawHorizontalLine) !== null && _d !== void 0 ? _d : (() => {\n return true;\n });\n return {\n ...config,\n border: (0, utils_1.makeBorderConfig)(config.border),\n columns: columnsConfig,\n drawHorizontalLine,\n drawVerticalLine,\n singleLine: (_e = config.singleLine) !== null && _e !== void 0 ? _e : false,\n spanningCellManager: (0, spanningCellManager_1.createSpanningCellManager)({\n columnsConfig,\n drawHorizontalLine,\n drawVerticalLine,\n rows,\n spanningCellConfigs,\n }),\n };\n};\nexports.makeTableConfig = makeTableConfig;\n//# sourceMappingURL=makeTableConfig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mapDataUsingRowHeights = exports.padCellVertically = void 0;\nconst utils_1 = require(\"./utils\");\nconst wrapCell_1 = require(\"./wrapCell\");\nconst createEmptyStrings = (length) => {\n return new Array(length).fill('');\n};\nconst padCellVertically = (lines, rowHeight, verticalAlignment) => {\n const availableLines = rowHeight - lines.length;\n if (verticalAlignment === 'top') {\n return [...lines, ...createEmptyStrings(availableLines)];\n }\n if (verticalAlignment === 'bottom') {\n return [...createEmptyStrings(availableLines), ...lines];\n }\n return [\n ...createEmptyStrings(Math.floor(availableLines / 2)),\n ...lines,\n ...createEmptyStrings(Math.ceil(availableLines / 2)),\n ];\n};\nexports.padCellVertically = padCellVertically;\nconst mapDataUsingRowHeights = (unmappedRows, rowHeights, config) => {\n const nColumns = unmappedRows[0].length;\n const mappedRows = unmappedRows.map((unmappedRow, unmappedRowIndex) => {\n const outputRowHeight = rowHeights[unmappedRowIndex];\n const outputRow = Array.from({ length: outputRowHeight }, () => {\n return new Array(nColumns).fill('');\n });\n unmappedRow.forEach((cell, cellIndex) => {\n var _a;\n const containingRange = (_a = config.spanningCellManager) === null || _a === void 0 ? void 0 : _a.getContainingRange({ col: cellIndex,\n row: unmappedRowIndex });\n if (containingRange) {\n containingRange.extractCellContent(unmappedRowIndex).forEach((cellLine, cellLineIndex) => {\n outputRow[cellLineIndex][cellIndex] = cellLine;\n });\n return;\n }\n const cellLines = (0, wrapCell_1.wrapCell)(cell, config.columns[cellIndex].width, config.columns[cellIndex].wrapWord);\n const paddedCellLines = (0, exports.padCellVertically)(cellLines, outputRowHeight, config.columns[cellIndex].verticalAlignment);\n paddedCellLines.forEach((cellLine, cellLineIndex) => {\n outputRow[cellLineIndex][cellIndex] = cellLine;\n });\n });\n return outputRow;\n });\n return (0, utils_1.flatten)(mappedRows);\n};\nexports.mapDataUsingRowHeights = mapDataUsingRowHeights;\n//# sourceMappingURL=mapDataUsingRowHeights.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.padTableData = exports.padString = void 0;\nconst padString = (input, paddingLeft, paddingRight) => {\n return ' '.repeat(paddingLeft) + input + ' '.repeat(paddingRight);\n};\nexports.padString = padString;\nconst padTableData = (rows, config) => {\n return rows.map((cells, rowIndex) => {\n return cells.map((cell, cellIndex) => {\n var _a;\n const containingRange = (_a = config.spanningCellManager) === null || _a === void 0 ? void 0 : _a.getContainingRange({ col: cellIndex,\n row: rowIndex }, { mapped: true });\n if (containingRange) {\n return cell;\n }\n const { paddingLeft, paddingRight } = config.columns[cellIndex];\n return (0, exports.padString)(cell, paddingLeft, paddingRight);\n });\n });\n};\nexports.padTableData = padTableData;\n//# sourceMappingURL=padTableData.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createSpanningCellManager = void 0;\nconst alignSpanningCell_1 = require(\"./alignSpanningCell\");\nconst calculateSpanningCellWidth_1 = require(\"./calculateSpanningCellWidth\");\nconst makeRangeConfig_1 = require(\"./makeRangeConfig\");\nconst utils_1 = require(\"./utils\");\nconst findRangeConfig = (cell, rangeConfigs) => {\n return rangeConfigs.find((rangeCoordinate) => {\n return (0, utils_1.isCellInRange)(cell, rangeCoordinate);\n });\n};\nconst getContainingRange = (rangeConfig, context) => {\n const width = (0, calculateSpanningCellWidth_1.calculateSpanningCellWidth)(rangeConfig, context);\n const wrappedContent = (0, alignSpanningCell_1.wrapRangeContent)(rangeConfig, width, context);\n const alignedContent = (0, alignSpanningCell_1.alignVerticalRangeContent)(rangeConfig, wrappedContent, context);\n const getCellContent = (rowIndex) => {\n const { topLeft } = rangeConfig;\n const { drawHorizontalLine, rowHeights } = context;\n const totalWithinHorizontalBorderHeight = rowIndex - topLeft.row;\n const totalHiddenHorizontalBorderHeight = (0, utils_1.sequence)(topLeft.row + 1, rowIndex).filter((index) => {\n /* istanbul ignore next */\n return !(drawHorizontalLine === null || drawHorizontalLine === void 0 ? void 0 : drawHorizontalLine(index, rowHeights.length));\n }).length;\n const offset = (0, utils_1.sumArray)(rowHeights.slice(topLeft.row, rowIndex)) + totalWithinHorizontalBorderHeight - totalHiddenHorizontalBorderHeight;\n return alignedContent.slice(offset, offset + rowHeights[rowIndex]);\n };\n const getBorderContent = (borderIndex) => {\n const { topLeft } = rangeConfig;\n const offset = (0, utils_1.sumArray)(context.rowHeights.slice(topLeft.row, borderIndex)) + (borderIndex - topLeft.row - 1);\n return alignedContent[offset];\n };\n return {\n ...rangeConfig,\n extractBorderContent: getBorderContent,\n extractCellContent: getCellContent,\n height: wrappedContent.length,\n width,\n };\n};\nconst inSameRange = (cell1, cell2, ranges) => {\n const range1 = findRangeConfig(cell1, ranges);\n const range2 = findRangeConfig(cell2, ranges);\n if (range1 && range2) {\n return (0, utils_1.areCellEqual)(range1.topLeft, range2.topLeft);\n }\n return false;\n};\nconst hashRange = (range) => {\n const { row, col } = range.topLeft;\n return `${row}/${col}`;\n};\nconst createSpanningCellManager = (parameters) => {\n const { spanningCellConfigs, columnsConfig } = parameters;\n const ranges = spanningCellConfigs.map((config) => {\n return (0, makeRangeConfig_1.makeRangeConfig)(config, columnsConfig);\n });\n const rangeCache = {};\n let rowHeights = [];\n let rowIndexMapping = [];\n return { getContainingRange: (cell, options) => {\n var _a;\n const originalRow = (options === null || options === void 0 ? void 0 : options.mapped) ? rowIndexMapping[cell.row] : cell.row;\n const range = findRangeConfig({ ...cell,\n row: originalRow }, ranges);\n if (!range) {\n return undefined;\n }\n if (rowHeights.length === 0) {\n return getContainingRange(range, { ...parameters,\n rowHeights });\n }\n const hash = hashRange(range);\n (_a = rangeCache[hash]) !== null && _a !== void 0 ? _a : (rangeCache[hash] = getContainingRange(range, { ...parameters,\n rowHeights }));\n return rangeCache[hash];\n },\n inSameRange: (cell1, cell2) => {\n return inSameRange(cell1, cell2, ranges);\n },\n rowHeights,\n rowIndexMapping,\n setRowHeights: (_rowHeights) => {\n rowHeights = _rowHeights;\n },\n setRowIndexMapping: (mappedRowHeights) => {\n rowIndexMapping = (0, utils_1.flatten)(mappedRowHeights.map((height, index) => {\n return Array.from({ length: height }, () => {\n return index;\n });\n }));\n } };\n};\nexports.createSpanningCellManager = createSpanningCellManager;\n//# sourceMappingURL=spanningCellManager.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringifyTableData = void 0;\nconst utils_1 = require(\"./utils\");\nconst stringifyTableData = (rows) => {\n return rows.map((cells) => {\n return cells.map((cell) => {\n return (0, utils_1.normalizeString)(String(cell));\n });\n });\n};\nexports.stringifyTableData = stringifyTableData;\n//# sourceMappingURL=stringifyTableData.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.table = void 0;\nconst alignTableData_1 = require(\"./alignTableData\");\nconst calculateOutputColumnWidths_1 = require(\"./calculateOutputColumnWidths\");\nconst calculateRowHeights_1 = require(\"./calculateRowHeights\");\nconst drawTable_1 = require(\"./drawTable\");\nconst injectHeaderConfig_1 = require(\"./injectHeaderConfig\");\nconst makeTableConfig_1 = require(\"./makeTableConfig\");\nconst mapDataUsingRowHeights_1 = require(\"./mapDataUsingRowHeights\");\nconst padTableData_1 = require(\"./padTableData\");\nconst stringifyTableData_1 = require(\"./stringifyTableData\");\nconst truncateTableData_1 = require(\"./truncateTableData\");\nconst utils_1 = require(\"./utils\");\nconst validateTableData_1 = require(\"./validateTableData\");\nconst table = (data, userConfig = {}) => {\n (0, validateTableData_1.validateTableData)(data);\n let rows = (0, stringifyTableData_1.stringifyTableData)(data);\n const [injectedRows, injectedSpanningCellConfig] = (0, injectHeaderConfig_1.injectHeaderConfig)(rows, userConfig);\n const config = (0, makeTableConfig_1.makeTableConfig)(injectedRows, userConfig, injectedSpanningCellConfig);\n rows = (0, truncateTableData_1.truncateTableData)(injectedRows, (0, utils_1.extractTruncates)(config));\n const rowHeights = (0, calculateRowHeights_1.calculateRowHeights)(rows, config);\n config.spanningCellManager.setRowHeights(rowHeights);\n config.spanningCellManager.setRowIndexMapping(rowHeights);\n rows = (0, mapDataUsingRowHeights_1.mapDataUsingRowHeights)(rows, rowHeights, config);\n rows = (0, alignTableData_1.alignTableData)(rows, config);\n rows = (0, padTableData_1.padTableData)(rows, config);\n const outputColumnWidths = (0, calculateOutputColumnWidths_1.calculateOutputColumnWidths)(config);\n return (0, drawTable_1.drawTable)(rows, outputColumnWidths, rowHeights, config);\n};\nexports.table = table;\n//# sourceMappingURL=table.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.truncateTableData = exports.truncateString = void 0;\nconst lodash_truncate_1 = __importDefault(require(\"lodash.truncate\"));\nconst truncateString = (input, length) => {\n return (0, lodash_truncate_1.default)(input, { length,\n omission: '…' });\n};\nexports.truncateString = truncateString;\n/**\n * @todo Make it work with ASCII content.\n */\nconst truncateTableData = (rows, truncates) => {\n return rows.map((cells) => {\n return cells.map((cell, cellIndex) => {\n return (0, exports.truncateString)(cell, truncates[cellIndex]);\n });\n });\n};\nexports.truncateTableData = truncateTableData;\n//# sourceMappingURL=truncateTableData.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=api.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isCellInRange = exports.areCellEqual = exports.calculateRangeCoordinate = exports.flatten = exports.extractTruncates = exports.sumArray = exports.sequence = exports.distributeUnevenly = exports.countSpaceSequence = exports.groupBySizes = exports.makeBorderConfig = exports.splitAnsi = exports.normalizeString = void 0;\nconst slice_ansi_1 = __importDefault(require(\"slice-ansi\"));\nconst string_width_1 = __importDefault(require(\"string-width\"));\nconst strip_ansi_1 = __importDefault(require(\"strip-ansi\"));\nconst getBorderCharacters_1 = require(\"./getBorderCharacters\");\n/**\n * Converts Windows-style newline to Unix-style\n *\n * @internal\n */\nconst normalizeString = (input) => {\n return input.replace(/\\r\\n/g, '\\n');\n};\nexports.normalizeString = normalizeString;\n/**\n * Splits ansi string by newlines\n *\n * @internal\n */\nconst splitAnsi = (input) => {\n const lengths = (0, strip_ansi_1.default)(input).split('\\n').map(string_width_1.default);\n const result = [];\n let startIndex = 0;\n lengths.forEach((length) => {\n result.push(length === 0 ? '' : (0, slice_ansi_1.default)(input, startIndex, startIndex + length));\n // Plus 1 for the newline character itself\n startIndex += length + 1;\n });\n return result;\n};\nexports.splitAnsi = splitAnsi;\n/**\n * Merges user provided border characters with the default border (\"honeywell\") characters.\n *\n * @internal\n */\nconst makeBorderConfig = (border) => {\n return {\n ...(0, getBorderCharacters_1.getBorderCharacters)('honeywell'),\n ...border,\n };\n};\nexports.makeBorderConfig = makeBorderConfig;\n/**\n * Groups the array into sub-arrays by sizes.\n *\n * @internal\n * @example\n * groupBySizes(['a', 'b', 'c', 'd', 'e'], [2, 1, 2]) = [ ['a', 'b'], ['c'], ['d', 'e'] ]\n */\nconst groupBySizes = (array, sizes) => {\n let startIndex = 0;\n return sizes.map((size) => {\n const group = array.slice(startIndex, startIndex + size);\n startIndex += size;\n return group;\n });\n};\nexports.groupBySizes = groupBySizes;\n/**\n * Counts the number of continuous spaces in a string\n *\n * @internal\n * @example\n * countGroupSpaces('a bc de f') = 3\n */\nconst countSpaceSequence = (input) => {\n var _a, _b;\n return (_b = (_a = input.match(/\\s+/g)) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0;\n};\nexports.countSpaceSequence = countSpaceSequence;\n/**\n * Creates the non-increasing number array given sum and length\n * whose the difference between maximum and minimum is not greater than 1\n *\n * @internal\n * @example\n * distributeUnevenly(6, 3) = [2, 2, 2]\n * distributeUnevenly(8, 3) = [3, 3, 2]\n */\nconst distributeUnevenly = (sum, length) => {\n const result = Array.from({ length }).fill(Math.floor(sum / length));\n return result.map((element, index) => {\n return element + (index < sum % length ? 1 : 0);\n });\n};\nexports.distributeUnevenly = distributeUnevenly;\nconst sequence = (start, end) => {\n return Array.from({ length: end - start + 1 }, (_, index) => {\n return index + start;\n });\n};\nexports.sequence = sequence;\nconst sumArray = (array) => {\n return array.reduce((accumulator, element) => {\n return accumulator + element;\n }, 0);\n};\nexports.sumArray = sumArray;\nconst extractTruncates = (config) => {\n return config.columns.map(({ truncate }) => {\n return truncate;\n });\n};\nexports.extractTruncates = extractTruncates;\nconst flatten = (array) => {\n return [].concat(...array);\n};\nexports.flatten = flatten;\nconst calculateRangeCoordinate = (spanningCellConfig) => {\n const { row, col, colSpan = 1, rowSpan = 1 } = spanningCellConfig;\n return { bottomRight: { col: col + colSpan - 1,\n row: row + rowSpan - 1 },\n topLeft: { col,\n row } };\n};\nexports.calculateRangeCoordinate = calculateRangeCoordinate;\nconst areCellEqual = (cell1, cell2) => {\n return cell1.row === cell2.row && cell1.col === cell2.col;\n};\nexports.areCellEqual = areCellEqual;\nconst isCellInRange = (cell, { topLeft, bottomRight }) => {\n return (topLeft.row <= cell.row &&\n cell.row <= bottomRight.row &&\n topLeft.col <= cell.col &&\n cell.col <= bottomRight.col);\n};\nexports.isCellInRange = isCellInRange;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateConfig = void 0;\nconst validators_1 = __importDefault(require(\"./generated/validators\"));\nconst validateConfig = (schemaId, config) => {\n const validate = validators_1.default[schemaId];\n if (!validate(config) && validate.errors) {\n // eslint-disable-next-line promise/prefer-await-to-callbacks\n const errors = validate.errors.map((error) => {\n return {\n message: error.message,\n params: error.params,\n schemaPath: error.schemaPath,\n };\n });\n /* eslint-disable no-console */\n console.log('config', config);\n console.log('errors', errors);\n /* eslint-enable no-console */\n throw new Error('Invalid config.');\n }\n};\nexports.validateConfig = validateConfig;\n//# sourceMappingURL=validateConfig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateSpanningCellConfig = void 0;\nconst utils_1 = require(\"./utils\");\nconst inRange = (start, end, value) => {\n return start <= value && value <= end;\n};\nconst validateSpanningCellConfig = (rows, configs) => {\n const [nRow, nCol] = [rows.length, rows[0].length];\n configs.forEach((config, configIndex) => {\n const { colSpan, rowSpan } = config;\n if (colSpan === undefined && rowSpan === undefined) {\n throw new Error(`Expect at least colSpan or rowSpan is provided in config.spanningCells[${configIndex}]`);\n }\n if (colSpan !== undefined && colSpan < 1) {\n throw new Error(`Expect colSpan is not equal zero, instead got: ${colSpan} in config.spanningCells[${configIndex}]`);\n }\n if (rowSpan !== undefined && rowSpan < 1) {\n throw new Error(`Expect rowSpan is not equal zero, instead got: ${rowSpan} in config.spanningCells[${configIndex}]`);\n }\n });\n const rangeCoordinates = configs.map(utils_1.calculateRangeCoordinate);\n rangeCoordinates.forEach(({ topLeft, bottomRight }, rangeIndex) => {\n if (!inRange(0, nCol - 1, topLeft.col) ||\n !inRange(0, nRow - 1, topLeft.row) ||\n !inRange(0, nCol - 1, bottomRight.col) ||\n !inRange(0, nRow - 1, bottomRight.row)) {\n throw new Error(`Some cells in config.spanningCells[${rangeIndex}] are out of the table`);\n }\n });\n const configOccupy = Array.from({ length: nRow }, () => {\n return Array.from({ length: nCol });\n });\n rangeCoordinates.forEach(({ topLeft, bottomRight }, rangeIndex) => {\n (0, utils_1.sequence)(topLeft.row, bottomRight.row).forEach((row) => {\n (0, utils_1.sequence)(topLeft.col, bottomRight.col).forEach((col) => {\n if (configOccupy[row][col] !== undefined) {\n throw new Error(`Spanning cells in config.spanningCells[${configOccupy[row][col]}] and config.spanningCells[${rangeIndex}] are overlap each other`);\n }\n configOccupy[row][col] = rangeIndex;\n });\n });\n });\n};\nexports.validateSpanningCellConfig = validateSpanningCellConfig;\n//# sourceMappingURL=validateSpanningCellConfig.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.validateTableData = void 0;\nconst utils_1 = require(\"./utils\");\nconst validateTableData = (rows) => {\n if (!Array.isArray(rows)) {\n throw new TypeError('Table data must be an array.');\n }\n if (rows.length === 0) {\n throw new Error('Table must define at least one row.');\n }\n if (rows[0].length === 0) {\n throw new Error('Table must define at least one column.');\n }\n const columnNumber = rows[0].length;\n for (const row of rows) {\n if (!Array.isArray(row)) {\n throw new TypeError('Table row data must be an array.');\n }\n if (row.length !== columnNumber) {\n throw new Error('Table must have a consistent number of cells.');\n }\n for (const cell of row) {\n // eslint-disable-next-line no-control-regex\n if (/[\\u0001-\\u0006\\u0008\\u0009\\u000B-\\u001A]/.test((0, utils_1.normalizeString)(String(cell)))) {\n throw new Error('Table data must not contain control characters.');\n }\n }\n }\n};\nexports.validateTableData = validateTableData;\n//# sourceMappingURL=validateTableData.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapCell = void 0;\nconst utils_1 = require(\"./utils\");\nconst wrapString_1 = require(\"./wrapString\");\nconst wrapWord_1 = require(\"./wrapWord\");\n/**\n * Wrap a single cell value into a list of lines\n *\n * Always wraps on newlines, for the remainder uses either word or string wrapping\n * depending on user configuration.\n *\n */\nconst wrapCell = (cellValue, cellWidth, useWrapWord) => {\n // First split on literal newlines\n const cellLines = (0, utils_1.splitAnsi)(cellValue);\n // Then iterate over the list and word-wrap every remaining line if necessary.\n for (let lineNr = 0; lineNr < cellLines.length;) {\n let lineChunks;\n if (useWrapWord) {\n lineChunks = (0, wrapWord_1.wrapWord)(cellLines[lineNr], cellWidth);\n }\n else {\n lineChunks = (0, wrapString_1.wrapString)(cellLines[lineNr], cellWidth);\n }\n // Replace our original array element with whatever the wrapping returned\n cellLines.splice(lineNr, 1, ...lineChunks);\n lineNr += lineChunks.length;\n }\n return cellLines;\n};\nexports.wrapCell = wrapCell;\n//# sourceMappingURL=wrapCell.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapString = void 0;\nconst slice_ansi_1 = __importDefault(require(\"slice-ansi\"));\nconst string_width_1 = __importDefault(require(\"string-width\"));\n/**\n * Creates an array of strings split into groups the length of size.\n * This function works with strings that contain ASCII characters.\n *\n * wrapText is different from would-be \"chunk\" implementation\n * in that whitespace characters that occur on a chunk size limit are trimmed.\n *\n */\nconst wrapString = (subject, size) => {\n let subjectSlice = subject;\n const chunks = [];\n do {\n chunks.push((0, slice_ansi_1.default)(subjectSlice, 0, size));\n subjectSlice = (0, slice_ansi_1.default)(subjectSlice, size).trim();\n } while ((0, string_width_1.default)(subjectSlice));\n return chunks;\n};\nexports.wrapString = wrapString;\n//# sourceMappingURL=wrapString.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.wrapWord = void 0;\nconst slice_ansi_1 = __importDefault(require(\"slice-ansi\"));\nconst strip_ansi_1 = __importDefault(require(\"strip-ansi\"));\nconst calculateStringLengths = (input, size) => {\n let subject = (0, strip_ansi_1.default)(input);\n const chunks = [];\n // https://regex101.com/r/gY5kZ1/1\n const re = new RegExp('(^.{1,' + String(Math.max(size, 1)) + '}(\\\\s+|$))|(^.{1,' + String(Math.max(size - 1, 1)) + '}(\\\\\\\\|/|_|\\\\.|,|;|-))');\n do {\n let chunk;\n const match = re.exec(subject);\n if (match) {\n chunk = match[0];\n subject = subject.slice(chunk.length);\n const trimmedLength = chunk.trim().length;\n const offset = chunk.length - trimmedLength;\n chunks.push([trimmedLength, offset]);\n }\n else {\n chunk = subject.slice(0, size);\n subject = subject.slice(size);\n chunks.push([chunk.length, 0]);\n }\n } while (subject.length);\n return chunks;\n};\nconst wrapWord = (input, size) => {\n const result = [];\n let startIndex = 0;\n calculateStringLengths(input, size).forEach(([length, offset]) => {\n result.push((0, slice_ansi_1.default)(input, startIndex, startIndex + length));\n startIndex += length + offset;\n });\n return result;\n};\nexports.wrapWord = wrapWord;\n//# sourceMappingURL=wrapWord.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n// https://github.com/ajv-validator/ajv/issues/889\nconst equal = require(\"fast-deep-equal\");\nequal.code = 'require(\"ajv/dist/runtime/equal\").default';\nexports.default = equal;\n//# sourceMappingURL=equal.js.map","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global global, define, Symbol, Reflect, Promise, SuppressedError */\r\nvar __extends;\r\nvar __assign;\r\nvar __rest;\r\nvar __decorate;\r\nvar __param;\r\nvar __esDecorate;\r\nvar __runInitializers;\r\nvar __propKey;\r\nvar __setFunctionName;\r\nvar __metadata;\r\nvar __awaiter;\r\nvar __generator;\r\nvar __exportStar;\r\nvar __values;\r\nvar __read;\r\nvar __spread;\r\nvar __spreadArrays;\r\nvar __spreadArray;\r\nvar __await;\r\nvar __asyncGenerator;\r\nvar __asyncDelegator;\r\nvar __asyncValues;\r\nvar __makeTemplateObject;\r\nvar __importStar;\r\nvar __importDefault;\r\nvar __classPrivateFieldGet;\r\nvar __classPrivateFieldSet;\r\nvar __classPrivateFieldIn;\r\nvar __createBinding;\r\nvar __addDisposableResource;\r\nvar __disposeResources;\r\n(function (factory) {\r\n var root = typeof global === \"object\" ? global : typeof self === \"object\" ? self : typeof this === \"object\" ? this : {};\r\n if (typeof define === \"function\" && define.amd) {\r\n define(\"tslib\", [\"exports\"], function (exports) { factory(createExporter(root, createExporter(exports))); });\r\n }\r\n else if (typeof module === \"object\" && typeof module.exports === \"object\") {\r\n factory(createExporter(root, createExporter(module.exports)));\r\n }\r\n else {\r\n factory(createExporter(root));\r\n }\r\n function createExporter(exports, previous) {\r\n if (exports !== root) {\r\n if (typeof Object.create === \"function\") {\r\n Object.defineProperty(exports, \"__esModule\", { value: true });\r\n }\r\n else {\r\n exports.__esModule = true;\r\n }\r\n }\r\n return function (id, v) { return exports[id] = previous ? previous(id, v) : v; };\r\n }\r\n})\r\n(function (exporter) {\r\n var extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n\r\n __extends = function (d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n };\r\n\r\n __assign = Object.assign || function (t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n\r\n __rest = function (s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n };\r\n\r\n __decorate = function (decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n };\r\n\r\n __param = function (paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n };\r\n\r\n __esDecorate = function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n };\r\n\r\n __runInitializers = function (thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n };\r\n\r\n __propKey = function (x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n };\r\n\r\n __setFunctionName = function (f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n };\r\n\r\n __metadata = function (metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n };\r\n\r\n __awaiter = function (thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n };\r\n\r\n __generator = function (thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n };\r\n\r\n __exportStar = function(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n };\r\n\r\n __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n }) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n });\r\n\r\n __values = function (o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n };\r\n\r\n __read = function (o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spread = function () {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n };\r\n\r\n /** @deprecated */\r\n __spreadArrays = function () {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n };\r\n\r\n __spreadArray = function (to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n };\r\n\r\n __await = function (v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n };\r\n\r\n __asyncGenerator = function (thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n };\r\n\r\n __asyncDelegator = function (o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n };\r\n\r\n __asyncValues = function (o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n };\r\n\r\n __makeTemplateObject = function (cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n };\r\n\r\n var __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n }) : function(o, v) {\r\n o[\"default\"] = v;\r\n };\r\n\r\n __importStar = function (mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n };\r\n\r\n __importDefault = function (mod) {\r\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\r\n };\r\n\r\n __classPrivateFieldGet = function (receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n };\r\n\r\n __classPrivateFieldSet = function (receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n };\r\n\r\n __classPrivateFieldIn = function (state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n };\r\n\r\n __addDisposableResource = function (env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n };\r\n\r\n var _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n };\r\n\r\n __disposeResources = function (env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n };\r\n\r\n exporter(\"__extends\", __extends);\r\n exporter(\"__assign\", __assign);\r\n exporter(\"__rest\", __rest);\r\n exporter(\"__decorate\", __decorate);\r\n exporter(\"__param\", __param);\r\n exporter(\"__esDecorate\", __esDecorate);\r\n exporter(\"__runInitializers\", __runInitializers);\r\n exporter(\"__propKey\", __propKey);\r\n exporter(\"__setFunctionName\", __setFunctionName);\r\n exporter(\"__metadata\", __metadata);\r\n exporter(\"__awaiter\", __awaiter);\r\n exporter(\"__generator\", __generator);\r\n exporter(\"__exportStar\", __exportStar);\r\n exporter(\"__createBinding\", __createBinding);\r\n exporter(\"__values\", __values);\r\n exporter(\"__read\", __read);\r\n exporter(\"__spread\", __spread);\r\n exporter(\"__spreadArrays\", __spreadArrays);\r\n exporter(\"__spreadArray\", __spreadArray);\r\n exporter(\"__await\", __await);\r\n exporter(\"__asyncGenerator\", __asyncGenerator);\r\n exporter(\"__asyncDelegator\", __asyncDelegator);\r\n exporter(\"__asyncValues\", __asyncValues);\r\n exporter(\"__makeTemplateObject\", __makeTemplateObject);\r\n exporter(\"__importStar\", __importStar);\r\n exporter(\"__importDefault\", __importDefault);\r\n exporter(\"__classPrivateFieldGet\", __classPrivateFieldGet);\r\n exporter(\"__classPrivateFieldSet\", __classPrivateFieldSet);\r\n exporter(\"__classPrivateFieldIn\", __classPrivateFieldIn);\r\n exporter(\"__addDisposableResource\", __addDisposableResource);\r\n exporter(\"__disposeResources\", __disposeResources);\r\n});\r\n","module.exports = require('./lib/tunnel');\n","'use strict';\n\nvar net = require('net');\nvar tls = require('tls');\nvar http = require('http');\nvar https = require('https');\nvar events = require('events');\nvar assert = require('assert');\nvar util = require('util');\n\n\nexports.httpOverHttp = httpOverHttp;\nexports.httpsOverHttp = httpsOverHttp;\nexports.httpOverHttps = httpOverHttps;\nexports.httpsOverHttps = httpsOverHttps;\n\n\nfunction httpOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n return agent;\n}\n\nfunction httpsOverHttp(options) {\n var agent = new TunnelingAgent(options);\n agent.request = http.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\nfunction httpOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n return agent;\n}\n\nfunction httpsOverHttps(options) {\n var agent = new TunnelingAgent(options);\n agent.request = https.request;\n agent.createSocket = createSecureSocket;\n agent.defaultPort = 443;\n return agent;\n}\n\n\nfunction TunnelingAgent(options) {\n var self = this;\n self.options = options || {};\n self.proxyOptions = self.options.proxy || {};\n self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets;\n self.requests = [];\n self.sockets = [];\n\n self.on('free', function onFree(socket, host, port, localAddress) {\n var options = toOptions(host, port, localAddress);\n for (var i = 0, len = self.requests.length; i < len; ++i) {\n var pending = self.requests[i];\n if (pending.host === options.host && pending.port === options.port) {\n // Detect the request to connect same origin server,\n // reuse the connection.\n self.requests.splice(i, 1);\n pending.request.onSocket(socket);\n return;\n }\n }\n socket.destroy();\n self.removeSocket(socket);\n });\n}\nutil.inherits(TunnelingAgent, events.EventEmitter);\n\nTunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) {\n var self = this;\n var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress));\n\n if (self.sockets.length >= this.maxSockets) {\n // We are over limit so we'll add it to the queue.\n self.requests.push(options);\n return;\n }\n\n // If we are under maxSockets create a new one.\n self.createSocket(options, function(socket) {\n socket.on('free', onFree);\n socket.on('close', onCloseOrRemove);\n socket.on('agentRemove', onCloseOrRemove);\n req.onSocket(socket);\n\n function onFree() {\n self.emit('free', socket, options);\n }\n\n function onCloseOrRemove(err) {\n self.removeSocket(socket);\n socket.removeListener('free', onFree);\n socket.removeListener('close', onCloseOrRemove);\n socket.removeListener('agentRemove', onCloseOrRemove);\n }\n });\n};\n\nTunnelingAgent.prototype.createSocket = function createSocket(options, cb) {\n var self = this;\n var placeholder = {};\n self.sockets.push(placeholder);\n\n var connectOptions = mergeOptions({}, self.proxyOptions, {\n method: 'CONNECT',\n path: options.host + ':' + options.port,\n agent: false,\n headers: {\n host: options.host + ':' + options.port\n }\n });\n if (options.localAddress) {\n connectOptions.localAddress = options.localAddress;\n }\n if (connectOptions.proxyAuth) {\n connectOptions.headers = connectOptions.headers || {};\n connectOptions.headers['Proxy-Authorization'] = 'Basic ' +\n new Buffer(connectOptions.proxyAuth).toString('base64');\n }\n\n debug('making CONNECT request');\n var connectReq = self.request(connectOptions);\n connectReq.useChunkedEncodingByDefault = false; // for v0.6\n connectReq.once('response', onResponse); // for v0.6\n connectReq.once('upgrade', onUpgrade); // for v0.6\n connectReq.once('connect', onConnect); // for v0.7 or later\n connectReq.once('error', onError);\n connectReq.end();\n\n function onResponse(res) {\n // Very hacky. This is necessary to avoid http-parser leaks.\n res.upgrade = true;\n }\n\n function onUpgrade(res, socket, head) {\n // Hacky.\n process.nextTick(function() {\n onConnect(res, socket, head);\n });\n }\n\n function onConnect(res, socket, head) {\n connectReq.removeAllListeners();\n socket.removeAllListeners();\n\n if (res.statusCode !== 200) {\n debug('tunneling socket could not be established, statusCode=%d',\n res.statusCode);\n socket.destroy();\n var error = new Error('tunneling socket could not be established, ' +\n 'statusCode=' + res.statusCode);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n if (head.length > 0) {\n debug('got illegal response body from proxy');\n socket.destroy();\n var error = new Error('got illegal response body from proxy');\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n return;\n }\n debug('tunneling connection has established');\n self.sockets[self.sockets.indexOf(placeholder)] = socket;\n return cb(socket);\n }\n\n function onError(cause) {\n connectReq.removeAllListeners();\n\n debug('tunneling socket could not be established, cause=%s\\n',\n cause.message, cause.stack);\n var error = new Error('tunneling socket could not be established, ' +\n 'cause=' + cause.message);\n error.code = 'ECONNRESET';\n options.request.emit('error', error);\n self.removeSocket(placeholder);\n }\n};\n\nTunnelingAgent.prototype.removeSocket = function removeSocket(socket) {\n var pos = this.sockets.indexOf(socket)\n if (pos === -1) {\n return;\n }\n this.sockets.splice(pos, 1);\n\n var pending = this.requests.shift();\n if (pending) {\n // If we have pending requests and a socket gets closed a new one\n // needs to be created to take over in the pool for the one that closed.\n this.createSocket(pending, function(socket) {\n pending.request.onSocket(socket);\n });\n }\n};\n\nfunction createSecureSocket(options, cb) {\n var self = this;\n TunnelingAgent.prototype.createSocket.call(self, options, function(socket) {\n var hostHeader = options.request.getHeader('host');\n var tlsOptions = mergeOptions({}, self.options, {\n socket: socket,\n servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host\n });\n\n // 0 is dummy port for v0.6\n var secureSocket = tls.connect(0, tlsOptions);\n self.sockets[self.sockets.indexOf(socket)] = secureSocket;\n cb(secureSocket);\n });\n}\n\n\nfunction toOptions(host, port, localAddress) {\n if (typeof host === 'string') { // since v0.10\n return {\n host: host,\n port: port,\n localAddress: localAddress\n };\n }\n return host; // for v0.11 or later\n}\n\nfunction mergeOptions(target) {\n for (var i = 1, len = arguments.length; i < len; ++i) {\n var overrides = arguments[i];\n if (typeof overrides === 'object') {\n var keys = Object.keys(overrides);\n for (var j = 0, keyLen = keys.length; j < keyLen; ++j) {\n var k = keys[j];\n if (overrides[k] !== undefined) {\n target[k] = overrides[k];\n }\n }\n }\n }\n return target;\n}\n\n\nvar debug;\nif (process.env.NODE_DEBUG && /\\btunnel\\b/.test(process.env.NODE_DEBUG)) {\n debug = function() {\n var args = Array.prototype.slice.call(arguments);\n if (typeof args[0] === 'string') {\n args[0] = 'TUNNEL: ' + args[0];\n } else {\n args.unshift('TUNNEL:');\n }\n console.error.apply(console, args);\n }\n} else {\n debug = function() {};\n}\nexports.debug = debug; // for test\n","'use strict'\n\nconst Client = require('./lib/client')\nconst Dispatcher = require('./lib/dispatcher')\nconst errors = require('./lib/core/errors')\nconst Pool = require('./lib/pool')\nconst BalancedPool = require('./lib/balanced-pool')\nconst Agent = require('./lib/agent')\nconst util = require('./lib/core/util')\nconst { InvalidArgumentError } = errors\nconst api = require('./lib/api')\nconst buildConnector = require('./lib/core/connect')\nconst MockClient = require('./lib/mock/mock-client')\nconst MockAgent = require('./lib/mock/mock-agent')\nconst MockPool = require('./lib/mock/mock-pool')\nconst mockErrors = require('./lib/mock/mock-errors')\nconst ProxyAgent = require('./lib/proxy-agent')\nconst RetryHandler = require('./lib/handler/RetryHandler')\nconst { getGlobalDispatcher, setGlobalDispatcher } = require('./lib/global')\nconst DecoratorHandler = require('./lib/handler/DecoratorHandler')\nconst RedirectHandler = require('./lib/handler/RedirectHandler')\nconst createRedirectInterceptor = require('./lib/interceptor/redirectInterceptor')\n\nlet hasCrypto\ntry {\n require('crypto')\n hasCrypto = true\n} catch {\n hasCrypto = false\n}\n\nObject.assign(Dispatcher.prototype, api)\n\nmodule.exports.Dispatcher = Dispatcher\nmodule.exports.Client = Client\nmodule.exports.Pool = Pool\nmodule.exports.BalancedPool = BalancedPool\nmodule.exports.Agent = Agent\nmodule.exports.ProxyAgent = ProxyAgent\nmodule.exports.RetryHandler = RetryHandler\n\nmodule.exports.DecoratorHandler = DecoratorHandler\nmodule.exports.RedirectHandler = RedirectHandler\nmodule.exports.createRedirectInterceptor = createRedirectInterceptor\n\nmodule.exports.buildConnector = buildConnector\nmodule.exports.errors = errors\n\nfunction makeDispatcher (fn) {\n return (url, opts, handler) => {\n if (typeof opts === 'function') {\n handler = opts\n opts = null\n }\n\n if (!url || (typeof url !== 'string' && typeof url !== 'object' && !(url instanceof URL))) {\n throw new InvalidArgumentError('invalid url')\n }\n\n if (opts != null && typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (opts && opts.path != null) {\n if (typeof opts.path !== 'string') {\n throw new InvalidArgumentError('invalid opts.path')\n }\n\n let path = opts.path\n if (!opts.path.startsWith('/')) {\n path = `/${path}`\n }\n\n url = new URL(util.parseOrigin(url).origin + path)\n } else {\n if (!opts) {\n opts = typeof url === 'object' ? url : {}\n }\n\n url = util.parseURL(url)\n }\n\n const { agent, dispatcher = getGlobalDispatcher() } = opts\n\n if (agent) {\n throw new InvalidArgumentError('unsupported opts.agent. Did you mean opts.client?')\n }\n\n return fn.call(dispatcher, {\n ...opts,\n origin: url.origin,\n path: url.search ? `${url.pathname}${url.search}` : url.pathname,\n method: opts.method || (opts.body ? 'PUT' : 'GET')\n }, handler)\n }\n}\n\nmodule.exports.setGlobalDispatcher = setGlobalDispatcher\nmodule.exports.getGlobalDispatcher = getGlobalDispatcher\n\nif (util.nodeMajor > 16 || (util.nodeMajor === 16 && util.nodeMinor >= 8)) {\n let fetchImpl = null\n module.exports.fetch = async function fetch (resource) {\n if (!fetchImpl) {\n fetchImpl = require('./lib/fetch').fetch\n }\n\n try {\n return await fetchImpl(...arguments)\n } catch (err) {\n if (typeof err === 'object') {\n Error.captureStackTrace(err, this)\n }\n\n throw err\n }\n }\n module.exports.Headers = require('./lib/fetch/headers').Headers\n module.exports.Response = require('./lib/fetch/response').Response\n module.exports.Request = require('./lib/fetch/request').Request\n module.exports.FormData = require('./lib/fetch/formdata').FormData\n module.exports.File = require('./lib/fetch/file').File\n module.exports.FileReader = require('./lib/fileapi/filereader').FileReader\n\n const { setGlobalOrigin, getGlobalOrigin } = require('./lib/fetch/global')\n\n module.exports.setGlobalOrigin = setGlobalOrigin\n module.exports.getGlobalOrigin = getGlobalOrigin\n\n const { CacheStorage } = require('./lib/cache/cachestorage')\n const { kConstruct } = require('./lib/cache/symbols')\n\n // Cache & CacheStorage are tightly coupled with fetch. Even if it may run\n // in an older version of Node, it doesn't have any use without fetch.\n module.exports.caches = new CacheStorage(kConstruct)\n}\n\nif (util.nodeMajor >= 16) {\n const { deleteCookie, getCookies, getSetCookies, setCookie } = require('./lib/cookies')\n\n module.exports.deleteCookie = deleteCookie\n module.exports.getCookies = getCookies\n module.exports.getSetCookies = getSetCookies\n module.exports.setCookie = setCookie\n\n const { parseMIMEType, serializeAMimeType } = require('./lib/fetch/dataURL')\n\n module.exports.parseMIMEType = parseMIMEType\n module.exports.serializeAMimeType = serializeAMimeType\n}\n\nif (util.nodeMajor >= 18 && hasCrypto) {\n const { WebSocket } = require('./lib/websocket/websocket')\n\n module.exports.WebSocket = WebSocket\n}\n\nmodule.exports.request = makeDispatcher(api.request)\nmodule.exports.stream = makeDispatcher(api.stream)\nmodule.exports.pipeline = makeDispatcher(api.pipeline)\nmodule.exports.connect = makeDispatcher(api.connect)\nmodule.exports.upgrade = makeDispatcher(api.upgrade)\n\nmodule.exports.MockClient = MockClient\nmodule.exports.MockPool = MockPool\nmodule.exports.MockAgent = MockAgent\nmodule.exports.mockErrors = mockErrors\n","'use strict'\n\nconst { InvalidArgumentError } = require('./core/errors')\nconst { kClients, kRunning, kClose, kDestroy, kDispatch, kInterceptors } = require('./core/symbols')\nconst DispatcherBase = require('./dispatcher-base')\nconst Pool = require('./pool')\nconst Client = require('./client')\nconst util = require('./core/util')\nconst createRedirectInterceptor = require('./interceptor/redirectInterceptor')\nconst { WeakRef, FinalizationRegistry } = require('./compat/dispatcher-weakref')()\n\nconst kOnConnect = Symbol('onConnect')\nconst kOnDisconnect = Symbol('onDisconnect')\nconst kOnConnectionError = Symbol('onConnectionError')\nconst kMaxRedirections = Symbol('maxRedirections')\nconst kOnDrain = Symbol('onDrain')\nconst kFactory = Symbol('factory')\nconst kFinalizer = Symbol('finalizer')\nconst kOptions = Symbol('options')\n\nfunction defaultFactory (origin, opts) {\n return opts && opts.connections === 1\n ? new Client(origin, opts)\n : new Pool(origin, opts)\n}\n\nclass Agent extends DispatcherBase {\n constructor ({ factory = defaultFactory, maxRedirections = 0, connect, ...options } = {}) {\n super()\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('factory must be a function.')\n }\n\n if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n throw new InvalidArgumentError('connect must be a function or an object')\n }\n\n if (!Number.isInteger(maxRedirections) || maxRedirections < 0) {\n throw new InvalidArgumentError('maxRedirections must be a positive number')\n }\n\n if (connect && typeof connect !== 'function') {\n connect = { ...connect }\n }\n\n this[kInterceptors] = options.interceptors && options.interceptors.Agent && Array.isArray(options.interceptors.Agent)\n ? options.interceptors.Agent\n : [createRedirectInterceptor({ maxRedirections })]\n\n this[kOptions] = { ...util.deepClone(options), connect }\n this[kOptions].interceptors = options.interceptors\n ? { ...options.interceptors }\n : undefined\n this[kMaxRedirections] = maxRedirections\n this[kFactory] = factory\n this[kClients] = new Map()\n this[kFinalizer] = new FinalizationRegistry(/* istanbul ignore next: gc is undeterministic */ key => {\n const ref = this[kClients].get(key)\n if (ref !== undefined && ref.deref() === undefined) {\n this[kClients].delete(key)\n }\n })\n\n const agent = this\n\n this[kOnDrain] = (origin, targets) => {\n agent.emit('drain', origin, [agent, ...targets])\n }\n\n this[kOnConnect] = (origin, targets) => {\n agent.emit('connect', origin, [agent, ...targets])\n }\n\n this[kOnDisconnect] = (origin, targets, err) => {\n agent.emit('disconnect', origin, [agent, ...targets], err)\n }\n\n this[kOnConnectionError] = (origin, targets, err) => {\n agent.emit('connectionError', origin, [agent, ...targets], err)\n }\n }\n\n get [kRunning] () {\n let ret = 0\n for (const ref of this[kClients].values()) {\n const client = ref.deref()\n /* istanbul ignore next: gc is undeterministic */\n if (client) {\n ret += client[kRunning]\n }\n }\n return ret\n }\n\n [kDispatch] (opts, handler) {\n let key\n if (opts.origin && (typeof opts.origin === 'string' || opts.origin instanceof URL)) {\n key = String(opts.origin)\n } else {\n throw new InvalidArgumentError('opts.origin must be a non-empty string or URL.')\n }\n\n const ref = this[kClients].get(key)\n\n let dispatcher = ref ? ref.deref() : null\n if (!dispatcher) {\n dispatcher = this[kFactory](opts.origin, this[kOptions])\n .on('drain', this[kOnDrain])\n .on('connect', this[kOnConnect])\n .on('disconnect', this[kOnDisconnect])\n .on('connectionError', this[kOnConnectionError])\n\n this[kClients].set(key, new WeakRef(dispatcher))\n this[kFinalizer].register(dispatcher, key)\n }\n\n return dispatcher.dispatch(opts, handler)\n }\n\n async [kClose] () {\n const closePromises = []\n for (const ref of this[kClients].values()) {\n const client = ref.deref()\n /* istanbul ignore else: gc is undeterministic */\n if (client) {\n closePromises.push(client.close())\n }\n }\n\n await Promise.all(closePromises)\n }\n\n async [kDestroy] (err) {\n const destroyPromises = []\n for (const ref of this[kClients].values()) {\n const client = ref.deref()\n /* istanbul ignore else: gc is undeterministic */\n if (client) {\n destroyPromises.push(client.destroy(err))\n }\n }\n\n await Promise.all(destroyPromises)\n }\n}\n\nmodule.exports = Agent\n","const { addAbortListener } = require('../core/util')\nconst { RequestAbortedError } = require('../core/errors')\n\nconst kListener = Symbol('kListener')\nconst kSignal = Symbol('kSignal')\n\nfunction abort (self) {\n if (self.abort) {\n self.abort()\n } else {\n self.onError(new RequestAbortedError())\n }\n}\n\nfunction addSignal (self, signal) {\n self[kSignal] = null\n self[kListener] = null\n\n if (!signal) {\n return\n }\n\n if (signal.aborted) {\n abort(self)\n return\n }\n\n self[kSignal] = signal\n self[kListener] = () => {\n abort(self)\n }\n\n addAbortListener(self[kSignal], self[kListener])\n}\n\nfunction removeSignal (self) {\n if (!self[kSignal]) {\n return\n }\n\n if ('removeEventListener' in self[kSignal]) {\n self[kSignal].removeEventListener('abort', self[kListener])\n } else {\n self[kSignal].removeListener('abort', self[kListener])\n }\n\n self[kSignal] = null\n self[kListener] = null\n}\n\nmodule.exports = {\n addSignal,\n removeSignal\n}\n","'use strict'\n\nconst { AsyncResource } = require('async_hooks')\nconst { InvalidArgumentError, RequestAbortedError, SocketError } = require('../core/errors')\nconst util = require('../core/util')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass ConnectHandler extends AsyncResource {\n constructor (opts, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n const { signal, opaque, responseHeaders } = opts\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n super('UNDICI_CONNECT')\n\n this.opaque = opaque || null\n this.responseHeaders = responseHeaders || null\n this.callback = callback\n this.abort = null\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders () {\n throw new SocketError('bad connect', null)\n }\n\n onUpgrade (statusCode, rawHeaders, socket) {\n const { callback, opaque, context } = this\n\n removeSignal(this)\n\n this.callback = null\n\n let headers = rawHeaders\n // Indicates is an HTTP2Session\n if (headers != null) {\n headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n }\n\n this.runInAsyncScope(callback, null, null, {\n statusCode,\n headers,\n socket,\n opaque,\n context\n })\n }\n\n onError (err) {\n const { callback, opaque } = this\n\n removeSignal(this)\n\n if (callback) {\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n }\n}\n\nfunction connect (opts, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n connect.call(this, opts, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n const connectHandler = new ConnectHandler(opts, callback)\n this.dispatch({ ...opts, method: 'CONNECT' }, connectHandler)\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = connect\n","'use strict'\n\nconst {\n Readable,\n Duplex,\n PassThrough\n} = require('stream')\nconst {\n InvalidArgumentError,\n InvalidReturnValueError,\n RequestAbortedError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { AsyncResource } = require('async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\nconst assert = require('assert')\n\nconst kResume = Symbol('resume')\n\nclass PipelineRequest extends Readable {\n constructor () {\n super({ autoDestroy: true })\n\n this[kResume] = null\n }\n\n _read () {\n const { [kResume]: resume } = this\n\n if (resume) {\n this[kResume] = null\n resume()\n }\n }\n\n _destroy (err, callback) {\n this._read()\n\n callback(err)\n }\n}\n\nclass PipelineResponse extends Readable {\n constructor (resume) {\n super({ autoDestroy: true })\n this[kResume] = resume\n }\n\n _read () {\n this[kResume]()\n }\n\n _destroy (err, callback) {\n if (!err && !this._readableState.endEmitted) {\n err = new RequestAbortedError()\n }\n\n callback(err)\n }\n}\n\nclass PipelineHandler extends AsyncResource {\n constructor (opts, handler) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (typeof handler !== 'function') {\n throw new InvalidArgumentError('invalid handler')\n }\n\n const { signal, method, opaque, onInfo, responseHeaders } = opts\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n if (method === 'CONNECT') {\n throw new InvalidArgumentError('invalid method')\n }\n\n if (onInfo && typeof onInfo !== 'function') {\n throw new InvalidArgumentError('invalid onInfo callback')\n }\n\n super('UNDICI_PIPELINE')\n\n this.opaque = opaque || null\n this.responseHeaders = responseHeaders || null\n this.handler = handler\n this.abort = null\n this.context = null\n this.onInfo = onInfo || null\n\n this.req = new PipelineRequest().on('error', util.nop)\n\n this.ret = new Duplex({\n readableObjectMode: opts.objectMode,\n autoDestroy: true,\n read: () => {\n const { body } = this\n\n if (body && body.resume) {\n body.resume()\n }\n },\n write: (chunk, encoding, callback) => {\n const { req } = this\n\n if (req.push(chunk, encoding) || req._readableState.destroyed) {\n callback()\n } else {\n req[kResume] = callback\n }\n },\n destroy: (err, callback) => {\n const { body, req, res, ret, abort } = this\n\n if (!err && !ret._readableState.endEmitted) {\n err = new RequestAbortedError()\n }\n\n if (abort && err) {\n abort()\n }\n\n util.destroy(body, err)\n util.destroy(req, err)\n util.destroy(res, err)\n\n removeSignal(this)\n\n callback(err)\n }\n }).on('prefinish', () => {\n const { req } = this\n\n // Node < 15 does not call _final in same tick.\n req.push(null)\n })\n\n this.res = null\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n const { ret, res } = this\n\n assert(!res, 'pipeline cannot be retried')\n\n if (ret.destroyed) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders (statusCode, rawHeaders, resume) {\n const { opaque, handler, context } = this\n\n if (statusCode < 200) {\n if (this.onInfo) {\n const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n this.onInfo({ statusCode, headers })\n }\n return\n }\n\n this.res = new PipelineResponse(resume)\n\n let body\n try {\n this.handler = null\n const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n body = this.runInAsyncScope(handler, null, {\n statusCode,\n headers,\n opaque,\n body: this.res,\n context\n })\n } catch (err) {\n this.res.on('error', util.nop)\n throw err\n }\n\n if (!body || typeof body.on !== 'function') {\n throw new InvalidReturnValueError('expected Readable')\n }\n\n body\n .on('data', (chunk) => {\n const { ret, body } = this\n\n if (!ret.push(chunk) && body.pause) {\n body.pause()\n }\n })\n .on('error', (err) => {\n const { ret } = this\n\n util.destroy(ret, err)\n })\n .on('end', () => {\n const { ret } = this\n\n ret.push(null)\n })\n .on('close', () => {\n const { ret } = this\n\n if (!ret._readableState.ended) {\n util.destroy(ret, new RequestAbortedError())\n }\n })\n\n this.body = body\n }\n\n onData (chunk) {\n const { res } = this\n return res.push(chunk)\n }\n\n onComplete (trailers) {\n const { res } = this\n res.push(null)\n }\n\n onError (err) {\n const { ret } = this\n this.handler = null\n util.destroy(ret, err)\n }\n}\n\nfunction pipeline (opts, handler) {\n try {\n const pipelineHandler = new PipelineHandler(opts, handler)\n this.dispatch({ ...opts, body: pipelineHandler.req }, pipelineHandler)\n return pipelineHandler.ret\n } catch (err) {\n return new PassThrough().destroy(err)\n }\n}\n\nmodule.exports = pipeline\n","'use strict'\n\nconst Readable = require('./readable')\nconst {\n InvalidArgumentError,\n RequestAbortedError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { getResolveErrorBodyCallback } = require('./util')\nconst { AsyncResource } = require('async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass RequestHandler extends AsyncResource {\n constructor (opts, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError, highWaterMark } = opts\n\n try {\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (highWaterMark && (typeof highWaterMark !== 'number' || highWaterMark < 0)) {\n throw new InvalidArgumentError('invalid highWaterMark')\n }\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n if (method === 'CONNECT') {\n throw new InvalidArgumentError('invalid method')\n }\n\n if (onInfo && typeof onInfo !== 'function') {\n throw new InvalidArgumentError('invalid onInfo callback')\n }\n\n super('UNDICI_REQUEST')\n } catch (err) {\n if (util.isStream(body)) {\n util.destroy(body.on('error', util.nop), err)\n }\n throw err\n }\n\n this.responseHeaders = responseHeaders || null\n this.opaque = opaque || null\n this.callback = callback\n this.res = null\n this.abort = null\n this.body = body\n this.trailers = {}\n this.context = null\n this.onInfo = onInfo || null\n this.throwOnError = throwOnError\n this.highWaterMark = highWaterMark\n\n if (util.isStream(body)) {\n body.on('error', (err) => {\n this.onError(err)\n })\n }\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n const { callback, opaque, abort, context, responseHeaders, highWaterMark } = this\n\n const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n\n if (statusCode < 200) {\n if (this.onInfo) {\n this.onInfo({ statusCode, headers })\n }\n return\n }\n\n const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers\n const contentType = parsedHeaders['content-type']\n const body = new Readable({ resume, abort, contentType, highWaterMark })\n\n this.callback = null\n this.res = body\n if (callback !== null) {\n if (this.throwOnError && statusCode >= 400) {\n this.runInAsyncScope(getResolveErrorBodyCallback, null,\n { callback, body, contentType, statusCode, statusMessage, headers }\n )\n } else {\n this.runInAsyncScope(callback, null, null, {\n statusCode,\n headers,\n trailers: this.trailers,\n opaque,\n body,\n context\n })\n }\n }\n }\n\n onData (chunk) {\n const { res } = this\n return res.push(chunk)\n }\n\n onComplete (trailers) {\n const { res } = this\n\n removeSignal(this)\n\n util.parseHeaders(trailers, this.trailers)\n\n res.push(null)\n }\n\n onError (err) {\n const { res, callback, body, opaque } = this\n\n removeSignal(this)\n\n if (callback) {\n // TODO: Does this need queueMicrotask?\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n\n if (res) {\n this.res = null\n // Ensure all queued handlers are invoked before destroying res.\n queueMicrotask(() => {\n util.destroy(res, err)\n })\n }\n\n if (body) {\n this.body = null\n util.destroy(body, err)\n }\n }\n}\n\nfunction request (opts, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n request.call(this, opts, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n this.dispatch(opts, new RequestHandler(opts, callback))\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = request\nmodule.exports.RequestHandler = RequestHandler\n","'use strict'\n\nconst { finished, PassThrough } = require('stream')\nconst {\n InvalidArgumentError,\n InvalidReturnValueError,\n RequestAbortedError\n} = require('../core/errors')\nconst util = require('../core/util')\nconst { getResolveErrorBodyCallback } = require('./util')\nconst { AsyncResource } = require('async_hooks')\nconst { addSignal, removeSignal } = require('./abort-signal')\n\nclass StreamHandler extends AsyncResource {\n constructor (opts, factory, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n const { signal, method, opaque, body, onInfo, responseHeaders, throwOnError } = opts\n\n try {\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('invalid factory')\n }\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n if (method === 'CONNECT') {\n throw new InvalidArgumentError('invalid method')\n }\n\n if (onInfo && typeof onInfo !== 'function') {\n throw new InvalidArgumentError('invalid onInfo callback')\n }\n\n super('UNDICI_STREAM')\n } catch (err) {\n if (util.isStream(body)) {\n util.destroy(body.on('error', util.nop), err)\n }\n throw err\n }\n\n this.responseHeaders = responseHeaders || null\n this.opaque = opaque || null\n this.factory = factory\n this.callback = callback\n this.res = null\n this.abort = null\n this.context = null\n this.trailers = null\n this.body = body\n this.onInfo = onInfo || null\n this.throwOnError = throwOnError || false\n\n if (util.isStream(body)) {\n body.on('error', (err) => {\n this.onError(err)\n })\n }\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = context\n }\n\n onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n const { factory, opaque, context, callback, responseHeaders } = this\n\n const headers = responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n\n if (statusCode < 200) {\n if (this.onInfo) {\n this.onInfo({ statusCode, headers })\n }\n return\n }\n\n this.factory = null\n\n let res\n\n if (this.throwOnError && statusCode >= 400) {\n const parsedHeaders = responseHeaders === 'raw' ? util.parseHeaders(rawHeaders) : headers\n const contentType = parsedHeaders['content-type']\n res = new PassThrough()\n\n this.callback = null\n this.runInAsyncScope(getResolveErrorBodyCallback, null,\n { callback, body: res, contentType, statusCode, statusMessage, headers }\n )\n } else {\n if (factory === null) {\n return\n }\n\n res = this.runInAsyncScope(factory, null, {\n statusCode,\n headers,\n opaque,\n context\n })\n\n if (\n !res ||\n typeof res.write !== 'function' ||\n typeof res.end !== 'function' ||\n typeof res.on !== 'function'\n ) {\n throw new InvalidReturnValueError('expected Writable')\n }\n\n // TODO: Avoid finished. It registers an unnecessary amount of listeners.\n finished(res, { readable: false }, (err) => {\n const { callback, res, opaque, trailers, abort } = this\n\n this.res = null\n if (err || !res.readable) {\n util.destroy(res, err)\n }\n\n this.callback = null\n this.runInAsyncScope(callback, null, err || null, { opaque, trailers })\n\n if (err) {\n abort()\n }\n })\n }\n\n res.on('drain', resume)\n\n this.res = res\n\n const needDrain = res.writableNeedDrain !== undefined\n ? res.writableNeedDrain\n : res._writableState && res._writableState.needDrain\n\n return needDrain !== true\n }\n\n onData (chunk) {\n const { res } = this\n\n return res ? res.write(chunk) : true\n }\n\n onComplete (trailers) {\n const { res } = this\n\n removeSignal(this)\n\n if (!res) {\n return\n }\n\n this.trailers = util.parseHeaders(trailers)\n\n res.end()\n }\n\n onError (err) {\n const { res, callback, opaque, body } = this\n\n removeSignal(this)\n\n this.factory = null\n\n if (res) {\n this.res = null\n util.destroy(res, err)\n } else if (callback) {\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n\n if (body) {\n this.body = null\n util.destroy(body, err)\n }\n }\n}\n\nfunction stream (opts, factory, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n stream.call(this, opts, factory, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n this.dispatch(opts, new StreamHandler(opts, factory, callback))\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = stream\n","'use strict'\n\nconst { InvalidArgumentError, RequestAbortedError, SocketError } = require('../core/errors')\nconst { AsyncResource } = require('async_hooks')\nconst util = require('../core/util')\nconst { addSignal, removeSignal } = require('./abort-signal')\nconst assert = require('assert')\n\nclass UpgradeHandler extends AsyncResource {\n constructor (opts, callback) {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('invalid opts')\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n const { signal, opaque, responseHeaders } = opts\n\n if (signal && typeof signal.on !== 'function' && typeof signal.addEventListener !== 'function') {\n throw new InvalidArgumentError('signal must be an EventEmitter or EventTarget')\n }\n\n super('UNDICI_UPGRADE')\n\n this.responseHeaders = responseHeaders || null\n this.opaque = opaque || null\n this.callback = callback\n this.abort = null\n this.context = null\n\n addSignal(this, signal)\n }\n\n onConnect (abort, context) {\n if (!this.callback) {\n throw new RequestAbortedError()\n }\n\n this.abort = abort\n this.context = null\n }\n\n onHeaders () {\n throw new SocketError('bad upgrade', null)\n }\n\n onUpgrade (statusCode, rawHeaders, socket) {\n const { callback, opaque, context } = this\n\n assert.strictEqual(statusCode, 101)\n\n removeSignal(this)\n\n this.callback = null\n const headers = this.responseHeaders === 'raw' ? util.parseRawHeaders(rawHeaders) : util.parseHeaders(rawHeaders)\n this.runInAsyncScope(callback, null, null, {\n headers,\n socket,\n opaque,\n context\n })\n }\n\n onError (err) {\n const { callback, opaque } = this\n\n removeSignal(this)\n\n if (callback) {\n this.callback = null\n queueMicrotask(() => {\n this.runInAsyncScope(callback, null, err, { opaque })\n })\n }\n }\n}\n\nfunction upgrade (opts, callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n upgrade.call(this, opts, (err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n try {\n const upgradeHandler = new UpgradeHandler(opts, callback)\n this.dispatch({\n ...opts,\n method: opts.method || 'GET',\n upgrade: opts.protocol || 'Websocket'\n }, upgradeHandler)\n } catch (err) {\n if (typeof callback !== 'function') {\n throw err\n }\n const opaque = opts && opts.opaque\n queueMicrotask(() => callback(err, { opaque }))\n }\n}\n\nmodule.exports = upgrade\n","'use strict'\n\nmodule.exports.request = require('./api-request')\nmodule.exports.stream = require('./api-stream')\nmodule.exports.pipeline = require('./api-pipeline')\nmodule.exports.upgrade = require('./api-upgrade')\nmodule.exports.connect = require('./api-connect')\n","// Ported from https://github.com/nodejs/undici/pull/907\n\n'use strict'\n\nconst assert = require('assert')\nconst { Readable } = require('stream')\nconst { RequestAbortedError, NotSupportedError, InvalidArgumentError } = require('../core/errors')\nconst util = require('../core/util')\nconst { ReadableStreamFrom, toUSVString } = require('../core/util')\n\nlet Blob\n\nconst kConsume = Symbol('kConsume')\nconst kReading = Symbol('kReading')\nconst kBody = Symbol('kBody')\nconst kAbort = Symbol('abort')\nconst kContentType = Symbol('kContentType')\n\nconst noop = () => {}\n\nmodule.exports = class BodyReadable extends Readable {\n constructor ({\n resume,\n abort,\n contentType = '',\n highWaterMark = 64 * 1024 // Same as nodejs fs streams.\n }) {\n super({\n autoDestroy: true,\n read: resume,\n highWaterMark\n })\n\n this._readableState.dataEmitted = false\n\n this[kAbort] = abort\n this[kConsume] = null\n this[kBody] = null\n this[kContentType] = contentType\n\n // Is stream being consumed through Readable API?\n // This is an optimization so that we avoid checking\n // for 'data' and 'readable' listeners in the hot path\n // inside push().\n this[kReading] = false\n }\n\n destroy (err) {\n if (this.destroyed) {\n // Node < 16\n return this\n }\n\n if (!err && !this._readableState.endEmitted) {\n err = new RequestAbortedError()\n }\n\n if (err) {\n this[kAbort]()\n }\n\n return super.destroy(err)\n }\n\n emit (ev, ...args) {\n if (ev === 'data') {\n // Node < 16.7\n this._readableState.dataEmitted = true\n } else if (ev === 'error') {\n // Node < 16\n this._readableState.errorEmitted = true\n }\n return super.emit(ev, ...args)\n }\n\n on (ev, ...args) {\n if (ev === 'data' || ev === 'readable') {\n this[kReading] = true\n }\n return super.on(ev, ...args)\n }\n\n addListener (ev, ...args) {\n return this.on(ev, ...args)\n }\n\n off (ev, ...args) {\n const ret = super.off(ev, ...args)\n if (ev === 'data' || ev === 'readable') {\n this[kReading] = (\n this.listenerCount('data') > 0 ||\n this.listenerCount('readable') > 0\n )\n }\n return ret\n }\n\n removeListener (ev, ...args) {\n return this.off(ev, ...args)\n }\n\n push (chunk) {\n if (this[kConsume] && chunk !== null && this.readableLength === 0) {\n consumePush(this[kConsume], chunk)\n return this[kReading] ? super.push(chunk) : true\n }\n return super.push(chunk)\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-text\n async text () {\n return consume(this, 'text')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-json\n async json () {\n return consume(this, 'json')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-blob\n async blob () {\n return consume(this, 'blob')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-arraybuffer\n async arrayBuffer () {\n return consume(this, 'arrayBuffer')\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-formdata\n async formData () {\n // TODO: Implement.\n throw new NotSupportedError()\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-bodyused\n get bodyUsed () {\n return util.isDisturbed(this)\n }\n\n // https://fetch.spec.whatwg.org/#dom-body-body\n get body () {\n if (!this[kBody]) {\n this[kBody] = ReadableStreamFrom(this)\n if (this[kConsume]) {\n // TODO: Is this the best way to force a lock?\n this[kBody].getReader() // Ensure stream is locked.\n assert(this[kBody].locked)\n }\n }\n return this[kBody]\n }\n\n dump (opts) {\n let limit = opts && Number.isFinite(opts.limit) ? opts.limit : 262144\n const signal = opts && opts.signal\n\n if (signal) {\n try {\n if (typeof signal !== 'object' || !('aborted' in signal)) {\n throw new InvalidArgumentError('signal must be an AbortSignal')\n }\n util.throwIfAborted(signal)\n } catch (err) {\n return Promise.reject(err)\n }\n }\n\n if (this.closed) {\n return Promise.resolve(null)\n }\n\n return new Promise((resolve, reject) => {\n const signalListenerCleanup = signal\n ? util.addAbortListener(signal, () => {\n this.destroy()\n })\n : noop\n\n this\n .on('close', function () {\n signalListenerCleanup()\n if (signal && signal.aborted) {\n reject(signal.reason || Object.assign(new Error('The operation was aborted'), { name: 'AbortError' }))\n } else {\n resolve(null)\n }\n })\n .on('error', noop)\n .on('data', function (chunk) {\n limit -= chunk.length\n if (limit <= 0) {\n this.destroy()\n }\n })\n .resume()\n })\n }\n}\n\n// https://streams.spec.whatwg.org/#readablestream-locked\nfunction isLocked (self) {\n // Consume is an implicit lock.\n return (self[kBody] && self[kBody].locked === true) || self[kConsume]\n}\n\n// https://fetch.spec.whatwg.org/#body-unusable\nfunction isUnusable (self) {\n return util.isDisturbed(self) || isLocked(self)\n}\n\nasync function consume (stream, type) {\n if (isUnusable(stream)) {\n throw new TypeError('unusable')\n }\n\n assert(!stream[kConsume])\n\n return new Promise((resolve, reject) => {\n stream[kConsume] = {\n type,\n stream,\n resolve,\n reject,\n length: 0,\n body: []\n }\n\n stream\n .on('error', function (err) {\n consumeFinish(this[kConsume], err)\n })\n .on('close', function () {\n if (this[kConsume].body !== null) {\n consumeFinish(this[kConsume], new RequestAbortedError())\n }\n })\n\n process.nextTick(consumeStart, stream[kConsume])\n })\n}\n\nfunction consumeStart (consume) {\n if (consume.body === null) {\n return\n }\n\n const { _readableState: state } = consume.stream\n\n for (const chunk of state.buffer) {\n consumePush(consume, chunk)\n }\n\n if (state.endEmitted) {\n consumeEnd(this[kConsume])\n } else {\n consume.stream.on('end', function () {\n consumeEnd(this[kConsume])\n })\n }\n\n consume.stream.resume()\n\n while (consume.stream.read() != null) {\n // Loop\n }\n}\n\nfunction consumeEnd (consume) {\n const { type, body, resolve, stream, length } = consume\n\n try {\n if (type === 'text') {\n resolve(toUSVString(Buffer.concat(body)))\n } else if (type === 'json') {\n resolve(JSON.parse(Buffer.concat(body)))\n } else if (type === 'arrayBuffer') {\n const dst = new Uint8Array(length)\n\n let pos = 0\n for (const buf of body) {\n dst.set(buf, pos)\n pos += buf.byteLength\n }\n\n resolve(dst.buffer)\n } else if (type === 'blob') {\n if (!Blob) {\n Blob = require('buffer').Blob\n }\n resolve(new Blob(body, { type: stream[kContentType] }))\n }\n\n consumeFinish(consume)\n } catch (err) {\n stream.destroy(err)\n }\n}\n\nfunction consumePush (consume, chunk) {\n consume.length += chunk.length\n consume.body.push(chunk)\n}\n\nfunction consumeFinish (consume, err) {\n if (consume.body === null) {\n return\n }\n\n if (err) {\n consume.reject(err)\n } else {\n consume.resolve()\n }\n\n consume.type = null\n consume.stream = null\n consume.resolve = null\n consume.reject = null\n consume.length = 0\n consume.body = null\n}\n","const assert = require('assert')\nconst {\n ResponseStatusCodeError\n} = require('../core/errors')\nconst { toUSVString } = require('../core/util')\n\nasync function getResolveErrorBodyCallback ({ callback, body, contentType, statusCode, statusMessage, headers }) {\n assert(body)\n\n let chunks = []\n let limit = 0\n\n for await (const chunk of body) {\n chunks.push(chunk)\n limit += chunk.length\n if (limit > 128 * 1024) {\n chunks = null\n break\n }\n }\n\n if (statusCode === 204 || !contentType || !chunks) {\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers))\n return\n }\n\n try {\n if (contentType.startsWith('application/json')) {\n const payload = JSON.parse(toUSVString(Buffer.concat(chunks)))\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload))\n return\n }\n\n if (contentType.startsWith('text/')) {\n const payload = toUSVString(Buffer.concat(chunks))\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers, payload))\n return\n }\n } catch (err) {\n // Process in a fallback if error\n }\n\n process.nextTick(callback, new ResponseStatusCodeError(`Response status code ${statusCode}${statusMessage ? `: ${statusMessage}` : ''}`, statusCode, headers))\n}\n\nmodule.exports = { getResolveErrorBodyCallback }\n","'use strict'\n\nconst {\n BalancedPoolMissingUpstreamError,\n InvalidArgumentError\n} = require('./core/errors')\nconst {\n PoolBase,\n kClients,\n kNeedDrain,\n kAddClient,\n kRemoveClient,\n kGetDispatcher\n} = require('./pool-base')\nconst Pool = require('./pool')\nconst { kUrl, kInterceptors } = require('./core/symbols')\nconst { parseOrigin } = require('./core/util')\nconst kFactory = Symbol('factory')\n\nconst kOptions = Symbol('options')\nconst kGreatestCommonDivisor = Symbol('kGreatestCommonDivisor')\nconst kCurrentWeight = Symbol('kCurrentWeight')\nconst kIndex = Symbol('kIndex')\nconst kWeight = Symbol('kWeight')\nconst kMaxWeightPerServer = Symbol('kMaxWeightPerServer')\nconst kErrorPenalty = Symbol('kErrorPenalty')\n\nfunction getGreatestCommonDivisor (a, b) {\n if (b === 0) return a\n return getGreatestCommonDivisor(b, a % b)\n}\n\nfunction defaultFactory (origin, opts) {\n return new Pool(origin, opts)\n}\n\nclass BalancedPool extends PoolBase {\n constructor (upstreams = [], { factory = defaultFactory, ...opts } = {}) {\n super()\n\n this[kOptions] = opts\n this[kIndex] = -1\n this[kCurrentWeight] = 0\n\n this[kMaxWeightPerServer] = this[kOptions].maxWeightPerServer || 100\n this[kErrorPenalty] = this[kOptions].errorPenalty || 15\n\n if (!Array.isArray(upstreams)) {\n upstreams = [upstreams]\n }\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('factory must be a function.')\n }\n\n this[kInterceptors] = opts.interceptors && opts.interceptors.BalancedPool && Array.isArray(opts.interceptors.BalancedPool)\n ? opts.interceptors.BalancedPool\n : []\n this[kFactory] = factory\n\n for (const upstream of upstreams) {\n this.addUpstream(upstream)\n }\n this._updateBalancedPoolStats()\n }\n\n addUpstream (upstream) {\n const upstreamOrigin = parseOrigin(upstream).origin\n\n if (this[kClients].find((pool) => (\n pool[kUrl].origin === upstreamOrigin &&\n pool.closed !== true &&\n pool.destroyed !== true\n ))) {\n return this\n }\n const pool = this[kFactory](upstreamOrigin, Object.assign({}, this[kOptions]))\n\n this[kAddClient](pool)\n pool.on('connect', () => {\n pool[kWeight] = Math.min(this[kMaxWeightPerServer], pool[kWeight] + this[kErrorPenalty])\n })\n\n pool.on('connectionError', () => {\n pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty])\n this._updateBalancedPoolStats()\n })\n\n pool.on('disconnect', (...args) => {\n const err = args[2]\n if (err && err.code === 'UND_ERR_SOCKET') {\n // decrease the weight of the pool.\n pool[kWeight] = Math.max(1, pool[kWeight] - this[kErrorPenalty])\n this._updateBalancedPoolStats()\n }\n })\n\n for (const client of this[kClients]) {\n client[kWeight] = this[kMaxWeightPerServer]\n }\n\n this._updateBalancedPoolStats()\n\n return this\n }\n\n _updateBalancedPoolStats () {\n this[kGreatestCommonDivisor] = this[kClients].map(p => p[kWeight]).reduce(getGreatestCommonDivisor, 0)\n }\n\n removeUpstream (upstream) {\n const upstreamOrigin = parseOrigin(upstream).origin\n\n const pool = this[kClients].find((pool) => (\n pool[kUrl].origin === upstreamOrigin &&\n pool.closed !== true &&\n pool.destroyed !== true\n ))\n\n if (pool) {\n this[kRemoveClient](pool)\n }\n\n return this\n }\n\n get upstreams () {\n return this[kClients]\n .filter(dispatcher => dispatcher.closed !== true && dispatcher.destroyed !== true)\n .map((p) => p[kUrl].origin)\n }\n\n [kGetDispatcher] () {\n // We validate that pools is greater than 0,\n // otherwise we would have to wait until an upstream\n // is added, which might never happen.\n if (this[kClients].length === 0) {\n throw new BalancedPoolMissingUpstreamError()\n }\n\n const dispatcher = this[kClients].find(dispatcher => (\n !dispatcher[kNeedDrain] &&\n dispatcher.closed !== true &&\n dispatcher.destroyed !== true\n ))\n\n if (!dispatcher) {\n return\n }\n\n const allClientsBusy = this[kClients].map(pool => pool[kNeedDrain]).reduce((a, b) => a && b, true)\n\n if (allClientsBusy) {\n return\n }\n\n let counter = 0\n\n let maxWeightIndex = this[kClients].findIndex(pool => !pool[kNeedDrain])\n\n while (counter++ < this[kClients].length) {\n this[kIndex] = (this[kIndex] + 1) % this[kClients].length\n const pool = this[kClients][this[kIndex]]\n\n // find pool index with the largest weight\n if (pool[kWeight] > this[kClients][maxWeightIndex][kWeight] && !pool[kNeedDrain]) {\n maxWeightIndex = this[kIndex]\n }\n\n // decrease the current weight every `this[kClients].length`.\n if (this[kIndex] === 0) {\n // Set the current weight to the next lower weight.\n this[kCurrentWeight] = this[kCurrentWeight] - this[kGreatestCommonDivisor]\n\n if (this[kCurrentWeight] <= 0) {\n this[kCurrentWeight] = this[kMaxWeightPerServer]\n }\n }\n if (pool[kWeight] >= this[kCurrentWeight] && (!pool[kNeedDrain])) {\n return pool\n }\n }\n\n this[kCurrentWeight] = this[kClients][maxWeightIndex][kWeight]\n this[kIndex] = maxWeightIndex\n return this[kClients][maxWeightIndex]\n }\n}\n\nmodule.exports = BalancedPool\n","'use strict'\n\nconst { kConstruct } = require('./symbols')\nconst { urlEquals, fieldValues: getFieldValues } = require('./util')\nconst { kEnumerableProperty, isDisturbed } = require('../core/util')\nconst { kHeadersList } = require('../core/symbols')\nconst { webidl } = require('../fetch/webidl')\nconst { Response, cloneResponse } = require('../fetch/response')\nconst { Request } = require('../fetch/request')\nconst { kState, kHeaders, kGuard, kRealm } = require('../fetch/symbols')\nconst { fetching } = require('../fetch/index')\nconst { urlIsHttpHttpsScheme, createDeferredPromise, readAllBytes } = require('../fetch/util')\nconst assert = require('assert')\nconst { getGlobalDispatcher } = require('../global')\n\n/**\n * @see https://w3c.github.io/ServiceWorker/#dfn-cache-batch-operation\n * @typedef {Object} CacheBatchOperation\n * @property {'delete' | 'put'} type\n * @property {any} request\n * @property {any} response\n * @property {import('../../types/cache').CacheQueryOptions} options\n */\n\n/**\n * @see https://w3c.github.io/ServiceWorker/#dfn-request-response-list\n * @typedef {[any, any][]} requestResponseList\n */\n\nclass Cache {\n /**\n * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-request-response-list\n * @type {requestResponseList}\n */\n #relevantRequestResponseList\n\n constructor () {\n if (arguments[0] !== kConstruct) {\n webidl.illegalConstructor()\n }\n\n this.#relevantRequestResponseList = arguments[1]\n }\n\n async match (request, options = {}) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.match' })\n\n request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n const p = await this.matchAll(request, options)\n\n if (p.length === 0) {\n return\n }\n\n return p[0]\n }\n\n async matchAll (request = undefined, options = {}) {\n webidl.brandCheck(this, Cache)\n\n if (request !== undefined) request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n // 1.\n let r = null\n\n // 2.\n if (request !== undefined) {\n if (request instanceof Request) {\n // 2.1.1\n r = request[kState]\n\n // 2.1.2\n if (r.method !== 'GET' && !options.ignoreMethod) {\n return []\n }\n } else if (typeof request === 'string') {\n // 2.2.1\n r = new Request(request)[kState]\n }\n }\n\n // 5.\n // 5.1\n const responses = []\n\n // 5.2\n if (request === undefined) {\n // 5.2.1\n for (const requestResponse of this.#relevantRequestResponseList) {\n responses.push(requestResponse[1])\n }\n } else { // 5.3\n // 5.3.1\n const requestResponses = this.#queryCache(r, options)\n\n // 5.3.2\n for (const requestResponse of requestResponses) {\n responses.push(requestResponse[1])\n }\n }\n\n // 5.4\n // We don't implement CORs so we don't need to loop over the responses, yay!\n\n // 5.5.1\n const responseList = []\n\n // 5.5.2\n for (const response of responses) {\n // 5.5.2.1\n const responseObject = new Response(response.body?.source ?? null)\n const body = responseObject[kState].body\n responseObject[kState] = response\n responseObject[kState].body = body\n responseObject[kHeaders][kHeadersList] = response.headersList\n responseObject[kHeaders][kGuard] = 'immutable'\n\n responseList.push(responseObject)\n }\n\n // 6.\n return Object.freeze(responseList)\n }\n\n async add (request) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.add' })\n\n request = webidl.converters.RequestInfo(request)\n\n // 1.\n const requests = [request]\n\n // 2.\n const responseArrayPromise = this.addAll(requests)\n\n // 3.\n return await responseArrayPromise\n }\n\n async addAll (requests) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.addAll' })\n\n requests = webidl.converters['sequence'](requests)\n\n // 1.\n const responsePromises = []\n\n // 2.\n const requestList = []\n\n // 3.\n for (const request of requests) {\n if (typeof request === 'string') {\n continue\n }\n\n // 3.1\n const r = request[kState]\n\n // 3.2\n if (!urlIsHttpHttpsScheme(r.url) || r.method !== 'GET') {\n throw webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'Expected http/s scheme when method is not GET.'\n })\n }\n }\n\n // 4.\n /** @type {ReturnType[]} */\n const fetchControllers = []\n\n // 5.\n for (const request of requests) {\n // 5.1\n const r = new Request(request)[kState]\n\n // 5.2\n if (!urlIsHttpHttpsScheme(r.url)) {\n throw webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'Expected http/s scheme.'\n })\n }\n\n // 5.4\n r.initiator = 'fetch'\n r.destination = 'subresource'\n\n // 5.5\n requestList.push(r)\n\n // 5.6\n const responsePromise = createDeferredPromise()\n\n // 5.7\n fetchControllers.push(fetching({\n request: r,\n dispatcher: getGlobalDispatcher(),\n processResponse (response) {\n // 1.\n if (response.type === 'error' || response.status === 206 || response.status < 200 || response.status > 299) {\n responsePromise.reject(webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'Received an invalid status code or the request failed.'\n }))\n } else if (response.headersList.contains('vary')) { // 2.\n // 2.1\n const fieldValues = getFieldValues(response.headersList.get('vary'))\n\n // 2.2\n for (const fieldValue of fieldValues) {\n // 2.2.1\n if (fieldValue === '*') {\n responsePromise.reject(webidl.errors.exception({\n header: 'Cache.addAll',\n message: 'invalid vary field value'\n }))\n\n for (const controller of fetchControllers) {\n controller.abort()\n }\n\n return\n }\n }\n }\n },\n processResponseEndOfBody (response) {\n // 1.\n if (response.aborted) {\n responsePromise.reject(new DOMException('aborted', 'AbortError'))\n return\n }\n\n // 2.\n responsePromise.resolve(response)\n }\n }))\n\n // 5.8\n responsePromises.push(responsePromise.promise)\n }\n\n // 6.\n const p = Promise.all(responsePromises)\n\n // 7.\n const responses = await p\n\n // 7.1\n const operations = []\n\n // 7.2\n let index = 0\n\n // 7.3\n for (const response of responses) {\n // 7.3.1\n /** @type {CacheBatchOperation} */\n const operation = {\n type: 'put', // 7.3.2\n request: requestList[index], // 7.3.3\n response // 7.3.4\n }\n\n operations.push(operation) // 7.3.5\n\n index++ // 7.3.6\n }\n\n // 7.5\n const cacheJobPromise = createDeferredPromise()\n\n // 7.6.1\n let errorData = null\n\n // 7.6.2\n try {\n this.#batchCacheOperations(operations)\n } catch (e) {\n errorData = e\n }\n\n // 7.6.3\n queueMicrotask(() => {\n // 7.6.3.1\n if (errorData === null) {\n cacheJobPromise.resolve(undefined)\n } else {\n // 7.6.3.2\n cacheJobPromise.reject(errorData)\n }\n })\n\n // 7.7\n return cacheJobPromise.promise\n }\n\n async put (request, response) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 2, { header: 'Cache.put' })\n\n request = webidl.converters.RequestInfo(request)\n response = webidl.converters.Response(response)\n\n // 1.\n let innerRequest = null\n\n // 2.\n if (request instanceof Request) {\n innerRequest = request[kState]\n } else { // 3.\n innerRequest = new Request(request)[kState]\n }\n\n // 4.\n if (!urlIsHttpHttpsScheme(innerRequest.url) || innerRequest.method !== 'GET') {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Expected an http/s scheme when method is not GET'\n })\n }\n\n // 5.\n const innerResponse = response[kState]\n\n // 6.\n if (innerResponse.status === 206) {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Got 206 status'\n })\n }\n\n // 7.\n if (innerResponse.headersList.contains('vary')) {\n // 7.1.\n const fieldValues = getFieldValues(innerResponse.headersList.get('vary'))\n\n // 7.2.\n for (const fieldValue of fieldValues) {\n // 7.2.1\n if (fieldValue === '*') {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Got * vary field value'\n })\n }\n }\n }\n\n // 8.\n if (innerResponse.body && (isDisturbed(innerResponse.body.stream) || innerResponse.body.stream.locked)) {\n throw webidl.errors.exception({\n header: 'Cache.put',\n message: 'Response body is locked or disturbed'\n })\n }\n\n // 9.\n const clonedResponse = cloneResponse(innerResponse)\n\n // 10.\n const bodyReadPromise = createDeferredPromise()\n\n // 11.\n if (innerResponse.body != null) {\n // 11.1\n const stream = innerResponse.body.stream\n\n // 11.2\n const reader = stream.getReader()\n\n // 11.3\n readAllBytes(reader).then(bodyReadPromise.resolve, bodyReadPromise.reject)\n } else {\n bodyReadPromise.resolve(undefined)\n }\n\n // 12.\n /** @type {CacheBatchOperation[]} */\n const operations = []\n\n // 13.\n /** @type {CacheBatchOperation} */\n const operation = {\n type: 'put', // 14.\n request: innerRequest, // 15.\n response: clonedResponse // 16.\n }\n\n // 17.\n operations.push(operation)\n\n // 19.\n const bytes = await bodyReadPromise.promise\n\n if (clonedResponse.body != null) {\n clonedResponse.body.source = bytes\n }\n\n // 19.1\n const cacheJobPromise = createDeferredPromise()\n\n // 19.2.1\n let errorData = null\n\n // 19.2.2\n try {\n this.#batchCacheOperations(operations)\n } catch (e) {\n errorData = e\n }\n\n // 19.2.3\n queueMicrotask(() => {\n // 19.2.3.1\n if (errorData === null) {\n cacheJobPromise.resolve()\n } else { // 19.2.3.2\n cacheJobPromise.reject(errorData)\n }\n })\n\n return cacheJobPromise.promise\n }\n\n async delete (request, options = {}) {\n webidl.brandCheck(this, Cache)\n webidl.argumentLengthCheck(arguments, 1, { header: 'Cache.delete' })\n\n request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n /**\n * @type {Request}\n */\n let r = null\n\n if (request instanceof Request) {\n r = request[kState]\n\n if (r.method !== 'GET' && !options.ignoreMethod) {\n return false\n }\n } else {\n assert(typeof request === 'string')\n\n r = new Request(request)[kState]\n }\n\n /** @type {CacheBatchOperation[]} */\n const operations = []\n\n /** @type {CacheBatchOperation} */\n const operation = {\n type: 'delete',\n request: r,\n options\n }\n\n operations.push(operation)\n\n const cacheJobPromise = createDeferredPromise()\n\n let errorData = null\n let requestResponses\n\n try {\n requestResponses = this.#batchCacheOperations(operations)\n } catch (e) {\n errorData = e\n }\n\n queueMicrotask(() => {\n if (errorData === null) {\n cacheJobPromise.resolve(!!requestResponses?.length)\n } else {\n cacheJobPromise.reject(errorData)\n }\n })\n\n return cacheJobPromise.promise\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#dom-cache-keys\n * @param {any} request\n * @param {import('../../types/cache').CacheQueryOptions} options\n * @returns {readonly Request[]}\n */\n async keys (request = undefined, options = {}) {\n webidl.brandCheck(this, Cache)\n\n if (request !== undefined) request = webidl.converters.RequestInfo(request)\n options = webidl.converters.CacheQueryOptions(options)\n\n // 1.\n let r = null\n\n // 2.\n if (request !== undefined) {\n // 2.1\n if (request instanceof Request) {\n // 2.1.1\n r = request[kState]\n\n // 2.1.2\n if (r.method !== 'GET' && !options.ignoreMethod) {\n return []\n }\n } else if (typeof request === 'string') { // 2.2\n r = new Request(request)[kState]\n }\n }\n\n // 4.\n const promise = createDeferredPromise()\n\n // 5.\n // 5.1\n const requests = []\n\n // 5.2\n if (request === undefined) {\n // 5.2.1\n for (const requestResponse of this.#relevantRequestResponseList) {\n // 5.2.1.1\n requests.push(requestResponse[0])\n }\n } else { // 5.3\n // 5.3.1\n const requestResponses = this.#queryCache(r, options)\n\n // 5.3.2\n for (const requestResponse of requestResponses) {\n // 5.3.2.1\n requests.push(requestResponse[0])\n }\n }\n\n // 5.4\n queueMicrotask(() => {\n // 5.4.1\n const requestList = []\n\n // 5.4.2\n for (const request of requests) {\n const requestObject = new Request('https://a')\n requestObject[kState] = request\n requestObject[kHeaders][kHeadersList] = request.headersList\n requestObject[kHeaders][kGuard] = 'immutable'\n requestObject[kRealm] = request.client\n\n // 5.4.2.1\n requestList.push(requestObject)\n }\n\n // 5.4.3\n promise.resolve(Object.freeze(requestList))\n })\n\n return promise.promise\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#batch-cache-operations-algorithm\n * @param {CacheBatchOperation[]} operations\n * @returns {requestResponseList}\n */\n #batchCacheOperations (operations) {\n // 1.\n const cache = this.#relevantRequestResponseList\n\n // 2.\n const backupCache = [...cache]\n\n // 3.\n const addedItems = []\n\n // 4.1\n const resultList = []\n\n try {\n // 4.2\n for (const operation of operations) {\n // 4.2.1\n if (operation.type !== 'delete' && operation.type !== 'put') {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'operation type does not match \"delete\" or \"put\"'\n })\n }\n\n // 4.2.2\n if (operation.type === 'delete' && operation.response != null) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'delete operation should not have an associated response'\n })\n }\n\n // 4.2.3\n if (this.#queryCache(operation.request, operation.options, addedItems).length) {\n throw new DOMException('???', 'InvalidStateError')\n }\n\n // 4.2.4\n let requestResponses\n\n // 4.2.5\n if (operation.type === 'delete') {\n // 4.2.5.1\n requestResponses = this.#queryCache(operation.request, operation.options)\n\n // TODO: the spec is wrong, this is needed to pass WPTs\n if (requestResponses.length === 0) {\n return []\n }\n\n // 4.2.5.2\n for (const requestResponse of requestResponses) {\n const idx = cache.indexOf(requestResponse)\n assert(idx !== -1)\n\n // 4.2.5.2.1\n cache.splice(idx, 1)\n }\n } else if (operation.type === 'put') { // 4.2.6\n // 4.2.6.1\n if (operation.response == null) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'put operation should have an associated response'\n })\n }\n\n // 4.2.6.2\n const r = operation.request\n\n // 4.2.6.3\n if (!urlIsHttpHttpsScheme(r.url)) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'expected http or https scheme'\n })\n }\n\n // 4.2.6.4\n if (r.method !== 'GET') {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'not get method'\n })\n }\n\n // 4.2.6.5\n if (operation.options != null) {\n throw webidl.errors.exception({\n header: 'Cache.#batchCacheOperations',\n message: 'options must not be defined'\n })\n }\n\n // 4.2.6.6\n requestResponses = this.#queryCache(operation.request)\n\n // 4.2.6.7\n for (const requestResponse of requestResponses) {\n const idx = cache.indexOf(requestResponse)\n assert(idx !== -1)\n\n // 4.2.6.7.1\n cache.splice(idx, 1)\n }\n\n // 4.2.6.8\n cache.push([operation.request, operation.response])\n\n // 4.2.6.10\n addedItems.push([operation.request, operation.response])\n }\n\n // 4.2.7\n resultList.push([operation.request, operation.response])\n }\n\n // 4.3\n return resultList\n } catch (e) { // 5.\n // 5.1\n this.#relevantRequestResponseList.length = 0\n\n // 5.2\n this.#relevantRequestResponseList = backupCache\n\n // 5.3\n throw e\n }\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#query-cache\n * @param {any} requestQuery\n * @param {import('../../types/cache').CacheQueryOptions} options\n * @param {requestResponseList} targetStorage\n * @returns {requestResponseList}\n */\n #queryCache (requestQuery, options, targetStorage) {\n /** @type {requestResponseList} */\n const resultList = []\n\n const storage = targetStorage ?? this.#relevantRequestResponseList\n\n for (const requestResponse of storage) {\n const [cachedRequest, cachedResponse] = requestResponse\n if (this.#requestMatchesCachedItem(requestQuery, cachedRequest, cachedResponse, options)) {\n resultList.push(requestResponse)\n }\n }\n\n return resultList\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#request-matches-cached-item-algorithm\n * @param {any} requestQuery\n * @param {any} request\n * @param {any | null} response\n * @param {import('../../types/cache').CacheQueryOptions | undefined} options\n * @returns {boolean}\n */\n #requestMatchesCachedItem (requestQuery, request, response = null, options) {\n // if (options?.ignoreMethod === false && request.method === 'GET') {\n // return false\n // }\n\n const queryURL = new URL(requestQuery.url)\n\n const cachedURL = new URL(request.url)\n\n if (options?.ignoreSearch) {\n cachedURL.search = ''\n\n queryURL.search = ''\n }\n\n if (!urlEquals(queryURL, cachedURL, true)) {\n return false\n }\n\n if (\n response == null ||\n options?.ignoreVary ||\n !response.headersList.contains('vary')\n ) {\n return true\n }\n\n const fieldValues = getFieldValues(response.headersList.get('vary'))\n\n for (const fieldValue of fieldValues) {\n if (fieldValue === '*') {\n return false\n }\n\n const requestValue = request.headersList.get(fieldValue)\n const queryValue = requestQuery.headersList.get(fieldValue)\n\n // If one has the header and the other doesn't, or one has\n // a different value than the other, return false\n if (requestValue !== queryValue) {\n return false\n }\n }\n\n return true\n }\n}\n\nObject.defineProperties(Cache.prototype, {\n [Symbol.toStringTag]: {\n value: 'Cache',\n configurable: true\n },\n match: kEnumerableProperty,\n matchAll: kEnumerableProperty,\n add: kEnumerableProperty,\n addAll: kEnumerableProperty,\n put: kEnumerableProperty,\n delete: kEnumerableProperty,\n keys: kEnumerableProperty\n})\n\nconst cacheQueryOptionConverters = [\n {\n key: 'ignoreSearch',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'ignoreMethod',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'ignoreVary',\n converter: webidl.converters.boolean,\n defaultValue: false\n }\n]\n\nwebidl.converters.CacheQueryOptions = webidl.dictionaryConverter(cacheQueryOptionConverters)\n\nwebidl.converters.MultiCacheQueryOptions = webidl.dictionaryConverter([\n ...cacheQueryOptionConverters,\n {\n key: 'cacheName',\n converter: webidl.converters.DOMString\n }\n])\n\nwebidl.converters.Response = webidl.interfaceConverter(Response)\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.RequestInfo\n)\n\nmodule.exports = {\n Cache\n}\n","'use strict'\n\nconst { kConstruct } = require('./symbols')\nconst { Cache } = require('./cache')\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../core/util')\n\nclass CacheStorage {\n /**\n * @see https://w3c.github.io/ServiceWorker/#dfn-relevant-name-to-cache-map\n * @type {Map}\n */\n async has (cacheName) {\n webidl.brandCheck(this, CacheStorage)\n webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.has' })\n\n cacheName = webidl.converters.DOMString(cacheName)\n\n // 2.1.1\n // 2.2\n return this.#caches.has(cacheName)\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#dom-cachestorage-open\n * @param {string} cacheName\n * @returns {Promise}\n */\n async open (cacheName) {\n webidl.brandCheck(this, CacheStorage)\n webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.open' })\n\n cacheName = webidl.converters.DOMString(cacheName)\n\n // 2.1\n if (this.#caches.has(cacheName)) {\n // await caches.open('v1') !== await caches.open('v1')\n\n // 2.1.1\n const cache = this.#caches.get(cacheName)\n\n // 2.1.1.1\n return new Cache(kConstruct, cache)\n }\n\n // 2.2\n const cache = []\n\n // 2.3\n this.#caches.set(cacheName, cache)\n\n // 2.4\n return new Cache(kConstruct, cache)\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#cache-storage-delete\n * @param {string} cacheName\n * @returns {Promise}\n */\n async delete (cacheName) {\n webidl.brandCheck(this, CacheStorage)\n webidl.argumentLengthCheck(arguments, 1, { header: 'CacheStorage.delete' })\n\n cacheName = webidl.converters.DOMString(cacheName)\n\n return this.#caches.delete(cacheName)\n }\n\n /**\n * @see https://w3c.github.io/ServiceWorker/#cache-storage-keys\n * @returns {string[]}\n */\n async keys () {\n webidl.brandCheck(this, CacheStorage)\n\n // 2.1\n const keys = this.#caches.keys()\n\n // 2.2\n return [...keys]\n }\n}\n\nObject.defineProperties(CacheStorage.prototype, {\n [Symbol.toStringTag]: {\n value: 'CacheStorage',\n configurable: true\n },\n match: kEnumerableProperty,\n has: kEnumerableProperty,\n open: kEnumerableProperty,\n delete: kEnumerableProperty,\n keys: kEnumerableProperty\n})\n\nmodule.exports = {\n CacheStorage\n}\n","'use strict'\n\nmodule.exports = {\n kConstruct: require('../core/symbols').kConstruct\n}\n","'use strict'\n\nconst assert = require('assert')\nconst { URLSerializer } = require('../fetch/dataURL')\nconst { isValidHeaderName } = require('../fetch/util')\n\n/**\n * @see https://url.spec.whatwg.org/#concept-url-equals\n * @param {URL} A\n * @param {URL} B\n * @param {boolean | undefined} excludeFragment\n * @returns {boolean}\n */\nfunction urlEquals (A, B, excludeFragment = false) {\n const serializedA = URLSerializer(A, excludeFragment)\n\n const serializedB = URLSerializer(B, excludeFragment)\n\n return serializedA === serializedB\n}\n\n/**\n * @see https://github.com/chromium/chromium/blob/694d20d134cb553d8d89e5500b9148012b1ba299/content/browser/cache_storage/cache_storage_cache.cc#L260-L262\n * @param {string} header\n */\nfunction fieldValues (header) {\n assert(header !== null)\n\n const values = []\n\n for (let value of header.split(',')) {\n value = value.trim()\n\n if (!value.length) {\n continue\n } else if (!isValidHeaderName(value)) {\n continue\n }\n\n values.push(value)\n }\n\n return values\n}\n\nmodule.exports = {\n urlEquals,\n fieldValues\n}\n","// @ts-check\n\n'use strict'\n\n/* global WebAssembly */\n\nconst assert = require('assert')\nconst net = require('net')\nconst http = require('http')\nconst { pipeline } = require('stream')\nconst util = require('./core/util')\nconst timers = require('./timers')\nconst Request = require('./core/request')\nconst DispatcherBase = require('./dispatcher-base')\nconst {\n RequestContentLengthMismatchError,\n ResponseContentLengthMismatchError,\n InvalidArgumentError,\n RequestAbortedError,\n HeadersTimeoutError,\n HeadersOverflowError,\n SocketError,\n InformationalError,\n BodyTimeoutError,\n HTTPParserError,\n ResponseExceededMaxSizeError,\n ClientDestroyedError\n} = require('./core/errors')\nconst buildConnector = require('./core/connect')\nconst {\n kUrl,\n kReset,\n kServerName,\n kClient,\n kBusy,\n kParser,\n kConnect,\n kBlocking,\n kResuming,\n kRunning,\n kPending,\n kSize,\n kWriting,\n kQueue,\n kConnected,\n kConnecting,\n kNeedDrain,\n kNoRef,\n kKeepAliveDefaultTimeout,\n kHostHeader,\n kPendingIdx,\n kRunningIdx,\n kError,\n kPipelining,\n kSocket,\n kKeepAliveTimeoutValue,\n kMaxHeadersSize,\n kKeepAliveMaxTimeout,\n kKeepAliveTimeoutThreshold,\n kHeadersTimeout,\n kBodyTimeout,\n kStrictContentLength,\n kConnector,\n kMaxRedirections,\n kMaxRequests,\n kCounter,\n kClose,\n kDestroy,\n kDispatch,\n kInterceptors,\n kLocalAddress,\n kMaxResponseSize,\n kHTTPConnVersion,\n // HTTP2\n kHost,\n kHTTP2Session,\n kHTTP2SessionState,\n kHTTP2BuildRequest,\n kHTTP2CopyHeaders,\n kHTTP1BuildRequest\n} = require('./core/symbols')\n\n/** @type {import('http2')} */\nlet http2\ntry {\n http2 = require('http2')\n} catch {\n // @ts-ignore\n http2 = { constants: {} }\n}\n\nconst {\n constants: {\n HTTP2_HEADER_AUTHORITY,\n HTTP2_HEADER_METHOD,\n HTTP2_HEADER_PATH,\n HTTP2_HEADER_SCHEME,\n HTTP2_HEADER_CONTENT_LENGTH,\n HTTP2_HEADER_EXPECT,\n HTTP2_HEADER_STATUS\n }\n} = http2\n\n// Experimental\nlet h2ExperimentalWarned = false\n\nconst FastBuffer = Buffer[Symbol.species]\n\nconst kClosedResolve = Symbol('kClosedResolve')\n\nconst channels = {}\n\ntry {\n const diagnosticsChannel = require('diagnostics_channel')\n channels.sendHeaders = diagnosticsChannel.channel('undici:client:sendHeaders')\n channels.beforeConnect = diagnosticsChannel.channel('undici:client:beforeConnect')\n channels.connectError = diagnosticsChannel.channel('undici:client:connectError')\n channels.connected = diagnosticsChannel.channel('undici:client:connected')\n} catch {\n channels.sendHeaders = { hasSubscribers: false }\n channels.beforeConnect = { hasSubscribers: false }\n channels.connectError = { hasSubscribers: false }\n channels.connected = { hasSubscribers: false }\n}\n\n/**\n * @type {import('../types/client').default}\n */\nclass Client extends DispatcherBase {\n /**\n *\n * @param {string|URL} url\n * @param {import('../types/client').Client.Options} options\n */\n constructor (url, {\n interceptors,\n maxHeaderSize,\n headersTimeout,\n socketTimeout,\n requestTimeout,\n connectTimeout,\n bodyTimeout,\n idleTimeout,\n keepAlive,\n keepAliveTimeout,\n maxKeepAliveTimeout,\n keepAliveMaxTimeout,\n keepAliveTimeoutThreshold,\n socketPath,\n pipelining,\n tls,\n strictContentLength,\n maxCachedSessions,\n maxRedirections,\n connect,\n maxRequestsPerClient,\n localAddress,\n maxResponseSize,\n autoSelectFamily,\n autoSelectFamilyAttemptTimeout,\n // h2\n allowH2,\n maxConcurrentStreams\n } = {}) {\n super()\n\n if (keepAlive !== undefined) {\n throw new InvalidArgumentError('unsupported keepAlive, use pipelining=0 instead')\n }\n\n if (socketTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported socketTimeout, use headersTimeout & bodyTimeout instead')\n }\n\n if (requestTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported requestTimeout, use headersTimeout & bodyTimeout instead')\n }\n\n if (idleTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported idleTimeout, use keepAliveTimeout instead')\n }\n\n if (maxKeepAliveTimeout !== undefined) {\n throw new InvalidArgumentError('unsupported maxKeepAliveTimeout, use keepAliveMaxTimeout instead')\n }\n\n if (maxHeaderSize != null && !Number.isFinite(maxHeaderSize)) {\n throw new InvalidArgumentError('invalid maxHeaderSize')\n }\n\n if (socketPath != null && typeof socketPath !== 'string') {\n throw new InvalidArgumentError('invalid socketPath')\n }\n\n if (connectTimeout != null && (!Number.isFinite(connectTimeout) || connectTimeout < 0)) {\n throw new InvalidArgumentError('invalid connectTimeout')\n }\n\n if (keepAliveTimeout != null && (!Number.isFinite(keepAliveTimeout) || keepAliveTimeout <= 0)) {\n throw new InvalidArgumentError('invalid keepAliveTimeout')\n }\n\n if (keepAliveMaxTimeout != null && (!Number.isFinite(keepAliveMaxTimeout) || keepAliveMaxTimeout <= 0)) {\n throw new InvalidArgumentError('invalid keepAliveMaxTimeout')\n }\n\n if (keepAliveTimeoutThreshold != null && !Number.isFinite(keepAliveTimeoutThreshold)) {\n throw new InvalidArgumentError('invalid keepAliveTimeoutThreshold')\n }\n\n if (headersTimeout != null && (!Number.isInteger(headersTimeout) || headersTimeout < 0)) {\n throw new InvalidArgumentError('headersTimeout must be a positive integer or zero')\n }\n\n if (bodyTimeout != null && (!Number.isInteger(bodyTimeout) || bodyTimeout < 0)) {\n throw new InvalidArgumentError('bodyTimeout must be a positive integer or zero')\n }\n\n if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n throw new InvalidArgumentError('connect must be a function or an object')\n }\n\n if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {\n throw new InvalidArgumentError('maxRedirections must be a positive number')\n }\n\n if (maxRequestsPerClient != null && (!Number.isInteger(maxRequestsPerClient) || maxRequestsPerClient < 0)) {\n throw new InvalidArgumentError('maxRequestsPerClient must be a positive number')\n }\n\n if (localAddress != null && (typeof localAddress !== 'string' || net.isIP(localAddress) === 0)) {\n throw new InvalidArgumentError('localAddress must be valid string IP address')\n }\n\n if (maxResponseSize != null && (!Number.isInteger(maxResponseSize) || maxResponseSize < -1)) {\n throw new InvalidArgumentError('maxResponseSize must be a positive number')\n }\n\n if (\n autoSelectFamilyAttemptTimeout != null &&\n (!Number.isInteger(autoSelectFamilyAttemptTimeout) || autoSelectFamilyAttemptTimeout < -1)\n ) {\n throw new InvalidArgumentError('autoSelectFamilyAttemptTimeout must be a positive number')\n }\n\n // h2\n if (allowH2 != null && typeof allowH2 !== 'boolean') {\n throw new InvalidArgumentError('allowH2 must be a valid boolean value')\n }\n\n if (maxConcurrentStreams != null && (typeof maxConcurrentStreams !== 'number' || maxConcurrentStreams < 1)) {\n throw new InvalidArgumentError('maxConcurrentStreams must be a possitive integer, greater than 0')\n }\n\n if (typeof connect !== 'function') {\n connect = buildConnector({\n ...tls,\n maxCachedSessions,\n allowH2,\n socketPath,\n timeout: connectTimeout,\n ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),\n ...connect\n })\n }\n\n this[kInterceptors] = interceptors && interceptors.Client && Array.isArray(interceptors.Client)\n ? interceptors.Client\n : [createRedirectInterceptor({ maxRedirections })]\n this[kUrl] = util.parseOrigin(url)\n this[kConnector] = connect\n this[kSocket] = null\n this[kPipelining] = pipelining != null ? pipelining : 1\n this[kMaxHeadersSize] = maxHeaderSize || http.maxHeaderSize\n this[kKeepAliveDefaultTimeout] = keepAliveTimeout == null ? 4e3 : keepAliveTimeout\n this[kKeepAliveMaxTimeout] = keepAliveMaxTimeout == null ? 600e3 : keepAliveMaxTimeout\n this[kKeepAliveTimeoutThreshold] = keepAliveTimeoutThreshold == null ? 1e3 : keepAliveTimeoutThreshold\n this[kKeepAliveTimeoutValue] = this[kKeepAliveDefaultTimeout]\n this[kServerName] = null\n this[kLocalAddress] = localAddress != null ? localAddress : null\n this[kResuming] = 0 // 0, idle, 1, scheduled, 2 resuming\n this[kNeedDrain] = 0 // 0, idle, 1, scheduled, 2 resuming\n this[kHostHeader] = `host: ${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}\\r\\n`\n this[kBodyTimeout] = bodyTimeout != null ? bodyTimeout : 300e3\n this[kHeadersTimeout] = headersTimeout != null ? headersTimeout : 300e3\n this[kStrictContentLength] = strictContentLength == null ? true : strictContentLength\n this[kMaxRedirections] = maxRedirections\n this[kMaxRequests] = maxRequestsPerClient\n this[kClosedResolve] = null\n this[kMaxResponseSize] = maxResponseSize > -1 ? maxResponseSize : -1\n this[kHTTPConnVersion] = 'h1'\n\n // HTTP/2\n this[kHTTP2Session] = null\n this[kHTTP2SessionState] = !allowH2\n ? null\n : {\n // streams: null, // Fixed queue of streams - For future support of `push`\n openStreams: 0, // Keep track of them to decide wether or not unref the session\n maxConcurrentStreams: maxConcurrentStreams != null ? maxConcurrentStreams : 100 // Max peerConcurrentStreams for a Node h2 server\n }\n this[kHost] = `${this[kUrl].hostname}${this[kUrl].port ? `:${this[kUrl].port}` : ''}`\n\n // kQueue is built up of 3 sections separated by\n // the kRunningIdx and kPendingIdx indices.\n // | complete | running | pending |\n // ^ kRunningIdx ^ kPendingIdx ^ kQueue.length\n // kRunningIdx points to the first running element.\n // kPendingIdx points to the first pending element.\n // This implements a fast queue with an amortized\n // time of O(1).\n\n this[kQueue] = []\n this[kRunningIdx] = 0\n this[kPendingIdx] = 0\n }\n\n get pipelining () {\n return this[kPipelining]\n }\n\n set pipelining (value) {\n this[kPipelining] = value\n resume(this, true)\n }\n\n get [kPending] () {\n return this[kQueue].length - this[kPendingIdx]\n }\n\n get [kRunning] () {\n return this[kPendingIdx] - this[kRunningIdx]\n }\n\n get [kSize] () {\n return this[kQueue].length - this[kRunningIdx]\n }\n\n get [kConnected] () {\n return !!this[kSocket] && !this[kConnecting] && !this[kSocket].destroyed\n }\n\n get [kBusy] () {\n const socket = this[kSocket]\n return (\n (socket && (socket[kReset] || socket[kWriting] || socket[kBlocking])) ||\n (this[kSize] >= (this[kPipelining] || 1)) ||\n this[kPending] > 0\n )\n }\n\n /* istanbul ignore: only used for test */\n [kConnect] (cb) {\n connect(this)\n this.once('connect', cb)\n }\n\n [kDispatch] (opts, handler) {\n const origin = opts.origin || this[kUrl].origin\n\n const request = this[kHTTPConnVersion] === 'h2'\n ? Request[kHTTP2BuildRequest](origin, opts, handler)\n : Request[kHTTP1BuildRequest](origin, opts, handler)\n\n this[kQueue].push(request)\n if (this[kResuming]) {\n // Do nothing.\n } else if (util.bodyLength(request.body) == null && util.isIterable(request.body)) {\n // Wait a tick in case stream/iterator is ended in the same tick.\n this[kResuming] = 1\n process.nextTick(resume, this)\n } else {\n resume(this, true)\n }\n\n if (this[kResuming] && this[kNeedDrain] !== 2 && this[kBusy]) {\n this[kNeedDrain] = 2\n }\n\n return this[kNeedDrain] < 2\n }\n\n async [kClose] () {\n // TODO: for H2 we need to gracefully flush the remaining enqueued\n // request and close each stream.\n return new Promise((resolve) => {\n if (!this[kSize]) {\n resolve(null)\n } else {\n this[kClosedResolve] = resolve\n }\n })\n }\n\n async [kDestroy] (err) {\n return new Promise((resolve) => {\n const requests = this[kQueue].splice(this[kPendingIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(this, request, err)\n }\n\n const callback = () => {\n if (this[kClosedResolve]) {\n // TODO (fix): Should we error here with ClientDestroyedError?\n this[kClosedResolve]()\n this[kClosedResolve] = null\n }\n resolve()\n }\n\n if (this[kHTTP2Session] != null) {\n util.destroy(this[kHTTP2Session], err)\n this[kHTTP2Session] = null\n this[kHTTP2SessionState] = null\n }\n\n if (!this[kSocket]) {\n queueMicrotask(callback)\n } else {\n util.destroy(this[kSocket].on('close', callback), err)\n }\n\n resume(this)\n })\n }\n}\n\nfunction onHttp2SessionError (err) {\n assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')\n\n this[kSocket][kError] = err\n\n onError(this[kClient], err)\n}\n\nfunction onHttp2FrameError (type, code, id) {\n const err = new InformationalError(`HTTP/2: \"frameError\" received - type ${type}, code ${code}`)\n\n if (id === 0) {\n this[kSocket][kError] = err\n onError(this[kClient], err)\n }\n}\n\nfunction onHttp2SessionEnd () {\n util.destroy(this, new SocketError('other side closed'))\n util.destroy(this[kSocket], new SocketError('other side closed'))\n}\n\nfunction onHTTP2GoAway (code) {\n const client = this[kClient]\n const err = new InformationalError(`HTTP/2: \"GOAWAY\" frame received with code ${code}`)\n client[kSocket] = null\n client[kHTTP2Session] = null\n\n if (client.destroyed) {\n assert(this[kPending] === 0)\n\n // Fail entire queue.\n const requests = client[kQueue].splice(client[kRunningIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(this, request, err)\n }\n } else if (client[kRunning] > 0) {\n // Fail head of pipeline.\n const request = client[kQueue][client[kRunningIdx]]\n client[kQueue][client[kRunningIdx]++] = null\n\n errorRequest(client, request, err)\n }\n\n client[kPendingIdx] = client[kRunningIdx]\n\n assert(client[kRunning] === 0)\n\n client.emit('disconnect',\n client[kUrl],\n [client],\n err\n )\n\n resume(client)\n}\n\nconst constants = require('./llhttp/constants')\nconst createRedirectInterceptor = require('./interceptor/redirectInterceptor')\nconst EMPTY_BUF = Buffer.alloc(0)\n\nasync function lazyllhttp () {\n const llhttpWasmData = process.env.JEST_WORKER_ID ? require('./llhttp/llhttp-wasm.js') : undefined\n\n let mod\n try {\n mod = await WebAssembly.compile(Buffer.from(require('./llhttp/llhttp_simd-wasm.js'), 'base64'))\n } catch (e) {\n /* istanbul ignore next */\n\n // We could check if the error was caused by the simd option not\n // being enabled, but the occurring of this other error\n // * https://github.com/emscripten-core/emscripten/issues/11495\n // got me to remove that check to avoid breaking Node 12.\n mod = await WebAssembly.compile(Buffer.from(llhttpWasmData || require('./llhttp/llhttp-wasm.js'), 'base64'))\n }\n\n return await WebAssembly.instantiate(mod, {\n env: {\n /* eslint-disable camelcase */\n\n wasm_on_url: (p, at, len) => {\n /* istanbul ignore next */\n return 0\n },\n wasm_on_status: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onStatus(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_message_begin: (p) => {\n assert.strictEqual(currentParser.ptr, p)\n return currentParser.onMessageBegin() || 0\n },\n wasm_on_header_field: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onHeaderField(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_header_value: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onHeaderValue(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_headers_complete: (p, statusCode, upgrade, shouldKeepAlive) => {\n assert.strictEqual(currentParser.ptr, p)\n return currentParser.onHeadersComplete(statusCode, Boolean(upgrade), Boolean(shouldKeepAlive)) || 0\n },\n wasm_on_body: (p, at, len) => {\n assert.strictEqual(currentParser.ptr, p)\n const start = at - currentBufferPtr + currentBufferRef.byteOffset\n return currentParser.onBody(new FastBuffer(currentBufferRef.buffer, start, len)) || 0\n },\n wasm_on_message_complete: (p) => {\n assert.strictEqual(currentParser.ptr, p)\n return currentParser.onMessageComplete() || 0\n }\n\n /* eslint-enable camelcase */\n }\n })\n}\n\nlet llhttpInstance = null\nlet llhttpPromise = lazyllhttp()\nllhttpPromise.catch()\n\nlet currentParser = null\nlet currentBufferRef = null\nlet currentBufferSize = 0\nlet currentBufferPtr = null\n\nconst TIMEOUT_HEADERS = 1\nconst TIMEOUT_BODY = 2\nconst TIMEOUT_IDLE = 3\n\nclass Parser {\n constructor (client, socket, { exports }) {\n assert(Number.isFinite(client[kMaxHeadersSize]) && client[kMaxHeadersSize] > 0)\n\n this.llhttp = exports\n this.ptr = this.llhttp.llhttp_alloc(constants.TYPE.RESPONSE)\n this.client = client\n this.socket = socket\n this.timeout = null\n this.timeoutValue = null\n this.timeoutType = null\n this.statusCode = null\n this.statusText = ''\n this.upgrade = false\n this.headers = []\n this.headersSize = 0\n this.headersMaxSize = client[kMaxHeadersSize]\n this.shouldKeepAlive = false\n this.paused = false\n this.resume = this.resume.bind(this)\n\n this.bytesRead = 0\n\n this.keepAlive = ''\n this.contentLength = ''\n this.connection = ''\n this.maxResponseSize = client[kMaxResponseSize]\n }\n\n setTimeout (value, type) {\n this.timeoutType = type\n if (value !== this.timeoutValue) {\n timers.clearTimeout(this.timeout)\n if (value) {\n this.timeout = timers.setTimeout(onParserTimeout, value, this)\n // istanbul ignore else: only for jest\n if (this.timeout.unref) {\n this.timeout.unref()\n }\n } else {\n this.timeout = null\n }\n this.timeoutValue = value\n } else if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n }\n\n resume () {\n if (this.socket.destroyed || !this.paused) {\n return\n }\n\n assert(this.ptr != null)\n assert(currentParser == null)\n\n this.llhttp.llhttp_resume(this.ptr)\n\n assert(this.timeoutType === TIMEOUT_BODY)\n if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n\n this.paused = false\n this.execute(this.socket.read() || EMPTY_BUF) // Flush parser.\n this.readMore()\n }\n\n readMore () {\n while (!this.paused && this.ptr) {\n const chunk = this.socket.read()\n if (chunk === null) {\n break\n }\n this.execute(chunk)\n }\n }\n\n execute (data) {\n assert(this.ptr != null)\n assert(currentParser == null)\n assert(!this.paused)\n\n const { socket, llhttp } = this\n\n if (data.length > currentBufferSize) {\n if (currentBufferPtr) {\n llhttp.free(currentBufferPtr)\n }\n currentBufferSize = Math.ceil(data.length / 4096) * 4096\n currentBufferPtr = llhttp.malloc(currentBufferSize)\n }\n\n new Uint8Array(llhttp.memory.buffer, currentBufferPtr, currentBufferSize).set(data)\n\n // Call `execute` on the wasm parser.\n // We pass the `llhttp_parser` pointer address, the pointer address of buffer view data,\n // and finally the length of bytes to parse.\n // The return value is an error code or `constants.ERROR.OK`.\n try {\n let ret\n\n try {\n currentBufferRef = data\n currentParser = this\n ret = llhttp.llhttp_execute(this.ptr, currentBufferPtr, data.length)\n /* eslint-disable-next-line no-useless-catch */\n } catch (err) {\n /* istanbul ignore next: difficult to make a test case for */\n throw err\n } finally {\n currentParser = null\n currentBufferRef = null\n }\n\n const offset = llhttp.llhttp_get_error_pos(this.ptr) - currentBufferPtr\n\n if (ret === constants.ERROR.PAUSED_UPGRADE) {\n this.onUpgrade(data.slice(offset))\n } else if (ret === constants.ERROR.PAUSED) {\n this.paused = true\n socket.unshift(data.slice(offset))\n } else if (ret !== constants.ERROR.OK) {\n const ptr = llhttp.llhttp_get_error_reason(this.ptr)\n let message = ''\n /* istanbul ignore else: difficult to make a test case for */\n if (ptr) {\n const len = new Uint8Array(llhttp.memory.buffer, ptr).indexOf(0)\n message =\n 'Response does not match the HTTP/1.1 protocol (' +\n Buffer.from(llhttp.memory.buffer, ptr, len).toString() +\n ')'\n }\n throw new HTTPParserError(message, constants.ERROR[ret], data.slice(offset))\n }\n } catch (err) {\n util.destroy(socket, err)\n }\n }\n\n destroy () {\n assert(this.ptr != null)\n assert(currentParser == null)\n\n this.llhttp.llhttp_free(this.ptr)\n this.ptr = null\n\n timers.clearTimeout(this.timeout)\n this.timeout = null\n this.timeoutValue = null\n this.timeoutType = null\n\n this.paused = false\n }\n\n onStatus (buf) {\n this.statusText = buf.toString()\n }\n\n onMessageBegin () {\n const { socket, client } = this\n\n /* istanbul ignore next: difficult to make a test case for */\n if (socket.destroyed) {\n return -1\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n if (!request) {\n return -1\n }\n }\n\n onHeaderField (buf) {\n const len = this.headers.length\n\n if ((len & 1) === 0) {\n this.headers.push(buf)\n } else {\n this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])\n }\n\n this.trackHeader(buf.length)\n }\n\n onHeaderValue (buf) {\n let len = this.headers.length\n\n if ((len & 1) === 1) {\n this.headers.push(buf)\n len += 1\n } else {\n this.headers[len - 1] = Buffer.concat([this.headers[len - 1], buf])\n }\n\n const key = this.headers[len - 2]\n if (key.length === 10 && key.toString().toLowerCase() === 'keep-alive') {\n this.keepAlive += buf.toString()\n } else if (key.length === 10 && key.toString().toLowerCase() === 'connection') {\n this.connection += buf.toString()\n } else if (key.length === 14 && key.toString().toLowerCase() === 'content-length') {\n this.contentLength += buf.toString()\n }\n\n this.trackHeader(buf.length)\n }\n\n trackHeader (len) {\n this.headersSize += len\n if (this.headersSize >= this.headersMaxSize) {\n util.destroy(this.socket, new HeadersOverflowError())\n }\n }\n\n onUpgrade (head) {\n const { upgrade, client, socket, headers, statusCode } = this\n\n assert(upgrade)\n\n const request = client[kQueue][client[kRunningIdx]]\n assert(request)\n\n assert(!socket.destroyed)\n assert(socket === client[kSocket])\n assert(!this.paused)\n assert(request.upgrade || request.method === 'CONNECT')\n\n this.statusCode = null\n this.statusText = ''\n this.shouldKeepAlive = null\n\n assert(this.headers.length % 2 === 0)\n this.headers = []\n this.headersSize = 0\n\n socket.unshift(head)\n\n socket[kParser].destroy()\n socket[kParser] = null\n\n socket[kClient] = null\n socket[kError] = null\n socket\n .removeListener('error', onSocketError)\n .removeListener('readable', onSocketReadable)\n .removeListener('end', onSocketEnd)\n .removeListener('close', onSocketClose)\n\n client[kSocket] = null\n client[kQueue][client[kRunningIdx]++] = null\n client.emit('disconnect', client[kUrl], [client], new InformationalError('upgrade'))\n\n try {\n request.onUpgrade(statusCode, headers, socket)\n } catch (err) {\n util.destroy(socket, err)\n }\n\n resume(client)\n }\n\n onHeadersComplete (statusCode, upgrade, shouldKeepAlive) {\n const { client, socket, headers, statusText } = this\n\n /* istanbul ignore next: difficult to make a test case for */\n if (socket.destroyed) {\n return -1\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n\n /* istanbul ignore next: difficult to make a test case for */\n if (!request) {\n return -1\n }\n\n assert(!this.upgrade)\n assert(this.statusCode < 200)\n\n if (statusCode === 100) {\n util.destroy(socket, new SocketError('bad response', util.getSocketInfo(socket)))\n return -1\n }\n\n /* this can only happen if server is misbehaving */\n if (upgrade && !request.upgrade) {\n util.destroy(socket, new SocketError('bad upgrade', util.getSocketInfo(socket)))\n return -1\n }\n\n assert.strictEqual(this.timeoutType, TIMEOUT_HEADERS)\n\n this.statusCode = statusCode\n this.shouldKeepAlive = (\n shouldKeepAlive ||\n // Override llhttp value which does not allow keepAlive for HEAD.\n (request.method === 'HEAD' && !socket[kReset] && this.connection.toLowerCase() === 'keep-alive')\n )\n\n if (this.statusCode >= 200) {\n const bodyTimeout = request.bodyTimeout != null\n ? request.bodyTimeout\n : client[kBodyTimeout]\n this.setTimeout(bodyTimeout, TIMEOUT_BODY)\n } else if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n\n if (request.method === 'CONNECT') {\n assert(client[kRunning] === 1)\n this.upgrade = true\n return 2\n }\n\n if (upgrade) {\n assert(client[kRunning] === 1)\n this.upgrade = true\n return 2\n }\n\n assert(this.headers.length % 2 === 0)\n this.headers = []\n this.headersSize = 0\n\n if (this.shouldKeepAlive && client[kPipelining]) {\n const keepAliveTimeout = this.keepAlive ? util.parseKeepAliveTimeout(this.keepAlive) : null\n\n if (keepAliveTimeout != null) {\n const timeout = Math.min(\n keepAliveTimeout - client[kKeepAliveTimeoutThreshold],\n client[kKeepAliveMaxTimeout]\n )\n if (timeout <= 0) {\n socket[kReset] = true\n } else {\n client[kKeepAliveTimeoutValue] = timeout\n }\n } else {\n client[kKeepAliveTimeoutValue] = client[kKeepAliveDefaultTimeout]\n }\n } else {\n // Stop more requests from being dispatched.\n socket[kReset] = true\n }\n\n const pause = request.onHeaders(statusCode, headers, this.resume, statusText) === false\n\n if (request.aborted) {\n return -1\n }\n\n if (request.method === 'HEAD') {\n return 1\n }\n\n if (statusCode < 200) {\n return 1\n }\n\n if (socket[kBlocking]) {\n socket[kBlocking] = false\n resume(client)\n }\n\n return pause ? constants.ERROR.PAUSED : 0\n }\n\n onBody (buf) {\n const { client, socket, statusCode, maxResponseSize } = this\n\n if (socket.destroyed) {\n return -1\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n assert(request)\n\n assert.strictEqual(this.timeoutType, TIMEOUT_BODY)\n if (this.timeout) {\n // istanbul ignore else: only for jest\n if (this.timeout.refresh) {\n this.timeout.refresh()\n }\n }\n\n assert(statusCode >= 200)\n\n if (maxResponseSize > -1 && this.bytesRead + buf.length > maxResponseSize) {\n util.destroy(socket, new ResponseExceededMaxSizeError())\n return -1\n }\n\n this.bytesRead += buf.length\n\n if (request.onData(buf) === false) {\n return constants.ERROR.PAUSED\n }\n }\n\n onMessageComplete () {\n const { client, socket, statusCode, upgrade, headers, contentLength, bytesRead, shouldKeepAlive } = this\n\n if (socket.destroyed && (!statusCode || shouldKeepAlive)) {\n return -1\n }\n\n if (upgrade) {\n return\n }\n\n const request = client[kQueue][client[kRunningIdx]]\n assert(request)\n\n assert(statusCode >= 100)\n\n this.statusCode = null\n this.statusText = ''\n this.bytesRead = 0\n this.contentLength = ''\n this.keepAlive = ''\n this.connection = ''\n\n assert(this.headers.length % 2 === 0)\n this.headers = []\n this.headersSize = 0\n\n if (statusCode < 200) {\n return\n }\n\n /* istanbul ignore next: should be handled by llhttp? */\n if (request.method !== 'HEAD' && contentLength && bytesRead !== parseInt(contentLength, 10)) {\n util.destroy(socket, new ResponseContentLengthMismatchError())\n return -1\n }\n\n request.onComplete(headers)\n\n client[kQueue][client[kRunningIdx]++] = null\n\n if (socket[kWriting]) {\n assert.strictEqual(client[kRunning], 0)\n // Response completed before request.\n util.destroy(socket, new InformationalError('reset'))\n return constants.ERROR.PAUSED\n } else if (!shouldKeepAlive) {\n util.destroy(socket, new InformationalError('reset'))\n return constants.ERROR.PAUSED\n } else if (socket[kReset] && client[kRunning] === 0) {\n // Destroy socket once all requests have completed.\n // The request at the tail of the pipeline is the one\n // that requested reset and no further requests should\n // have been queued since then.\n util.destroy(socket, new InformationalError('reset'))\n return constants.ERROR.PAUSED\n } else if (client[kPipelining] === 1) {\n // We must wait a full event loop cycle to reuse this socket to make sure\n // that non-spec compliant servers are not closing the connection even if they\n // said they won't.\n setImmediate(resume, client)\n } else {\n resume(client)\n }\n }\n}\n\nfunction onParserTimeout (parser) {\n const { socket, timeoutType, client } = parser\n\n /* istanbul ignore else */\n if (timeoutType === TIMEOUT_HEADERS) {\n if (!socket[kWriting] || socket.writableNeedDrain || client[kRunning] > 1) {\n assert(!parser.paused, 'cannot be paused while waiting for headers')\n util.destroy(socket, new HeadersTimeoutError())\n }\n } else if (timeoutType === TIMEOUT_BODY) {\n if (!parser.paused) {\n util.destroy(socket, new BodyTimeoutError())\n }\n } else if (timeoutType === TIMEOUT_IDLE) {\n assert(client[kRunning] === 0 && client[kKeepAliveTimeoutValue])\n util.destroy(socket, new InformationalError('socket idle timeout'))\n }\n}\n\nfunction onSocketReadable () {\n const { [kParser]: parser } = this\n if (parser) {\n parser.readMore()\n }\n}\n\nfunction onSocketError (err) {\n const { [kClient]: client, [kParser]: parser } = this\n\n assert(err.code !== 'ERR_TLS_CERT_ALTNAME_INVALID')\n\n if (client[kHTTPConnVersion] !== 'h2') {\n // On Mac OS, we get an ECONNRESET even if there is a full body to be forwarded\n // to the user.\n if (err.code === 'ECONNRESET' && parser.statusCode && !parser.shouldKeepAlive) {\n // We treat all incoming data so for as a valid response.\n parser.onMessageComplete()\n return\n }\n }\n\n this[kError] = err\n\n onError(this[kClient], err)\n}\n\nfunction onError (client, err) {\n if (\n client[kRunning] === 0 &&\n err.code !== 'UND_ERR_INFO' &&\n err.code !== 'UND_ERR_SOCKET'\n ) {\n // Error is not caused by running request and not a recoverable\n // socket error.\n\n assert(client[kPendingIdx] === client[kRunningIdx])\n\n const requests = client[kQueue].splice(client[kRunningIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(client, request, err)\n }\n assert(client[kSize] === 0)\n }\n}\n\nfunction onSocketEnd () {\n const { [kParser]: parser, [kClient]: client } = this\n\n if (client[kHTTPConnVersion] !== 'h2') {\n if (parser.statusCode && !parser.shouldKeepAlive) {\n // We treat all incoming data so far as a valid response.\n parser.onMessageComplete()\n return\n }\n }\n\n util.destroy(this, new SocketError('other side closed', util.getSocketInfo(this)))\n}\n\nfunction onSocketClose () {\n const { [kClient]: client, [kParser]: parser } = this\n\n if (client[kHTTPConnVersion] === 'h1' && parser) {\n if (!this[kError] && parser.statusCode && !parser.shouldKeepAlive) {\n // We treat all incoming data so far as a valid response.\n parser.onMessageComplete()\n }\n\n this[kParser].destroy()\n this[kParser] = null\n }\n\n const err = this[kError] || new SocketError('closed', util.getSocketInfo(this))\n\n client[kSocket] = null\n\n if (client.destroyed) {\n assert(client[kPending] === 0)\n\n // Fail entire queue.\n const requests = client[kQueue].splice(client[kRunningIdx])\n for (let i = 0; i < requests.length; i++) {\n const request = requests[i]\n errorRequest(client, request, err)\n }\n } else if (client[kRunning] > 0 && err.code !== 'UND_ERR_INFO') {\n // Fail head of pipeline.\n const request = client[kQueue][client[kRunningIdx]]\n client[kQueue][client[kRunningIdx]++] = null\n\n errorRequest(client, request, err)\n }\n\n client[kPendingIdx] = client[kRunningIdx]\n\n assert(client[kRunning] === 0)\n\n client.emit('disconnect', client[kUrl], [client], err)\n\n resume(client)\n}\n\nasync function connect (client) {\n assert(!client[kConnecting])\n assert(!client[kSocket])\n\n let { host, hostname, protocol, port } = client[kUrl]\n\n // Resolve ipv6\n if (hostname[0] === '[') {\n const idx = hostname.indexOf(']')\n\n assert(idx !== -1)\n const ip = hostname.substring(1, idx)\n\n assert(net.isIP(ip))\n hostname = ip\n }\n\n client[kConnecting] = true\n\n if (channels.beforeConnect.hasSubscribers) {\n channels.beforeConnect.publish({\n connectParams: {\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n },\n connector: client[kConnector]\n })\n }\n\n try {\n const socket = await new Promise((resolve, reject) => {\n client[kConnector]({\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n }, (err, socket) => {\n if (err) {\n reject(err)\n } else {\n resolve(socket)\n }\n })\n })\n\n if (client.destroyed) {\n util.destroy(socket.on('error', () => {}), new ClientDestroyedError())\n return\n }\n\n client[kConnecting] = false\n\n assert(socket)\n\n const isH2 = socket.alpnProtocol === 'h2'\n if (isH2) {\n if (!h2ExperimentalWarned) {\n h2ExperimentalWarned = true\n process.emitWarning('H2 support is experimental, expect them to change at any time.', {\n code: 'UNDICI-H2'\n })\n }\n\n const session = http2.connect(client[kUrl], {\n createConnection: () => socket,\n peerMaxConcurrentStreams: client[kHTTP2SessionState].maxConcurrentStreams\n })\n\n client[kHTTPConnVersion] = 'h2'\n session[kClient] = client\n session[kSocket] = socket\n session.on('error', onHttp2SessionError)\n session.on('frameError', onHttp2FrameError)\n session.on('end', onHttp2SessionEnd)\n session.on('goaway', onHTTP2GoAway)\n session.on('close', onSocketClose)\n session.unref()\n\n client[kHTTP2Session] = session\n socket[kHTTP2Session] = session\n } else {\n if (!llhttpInstance) {\n llhttpInstance = await llhttpPromise\n llhttpPromise = null\n }\n\n socket[kNoRef] = false\n socket[kWriting] = false\n socket[kReset] = false\n socket[kBlocking] = false\n socket[kParser] = new Parser(client, socket, llhttpInstance)\n }\n\n socket[kCounter] = 0\n socket[kMaxRequests] = client[kMaxRequests]\n socket[kClient] = client\n socket[kError] = null\n\n socket\n .on('error', onSocketError)\n .on('readable', onSocketReadable)\n .on('end', onSocketEnd)\n .on('close', onSocketClose)\n\n client[kSocket] = socket\n\n if (channels.connected.hasSubscribers) {\n channels.connected.publish({\n connectParams: {\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n },\n connector: client[kConnector],\n socket\n })\n }\n client.emit('connect', client[kUrl], [client])\n } catch (err) {\n if (client.destroyed) {\n return\n }\n\n client[kConnecting] = false\n\n if (channels.connectError.hasSubscribers) {\n channels.connectError.publish({\n connectParams: {\n host,\n hostname,\n protocol,\n port,\n servername: client[kServerName],\n localAddress: client[kLocalAddress]\n },\n connector: client[kConnector],\n error: err\n })\n }\n\n if (err.code === 'ERR_TLS_CERT_ALTNAME_INVALID') {\n assert(client[kRunning] === 0)\n while (client[kPending] > 0 && client[kQueue][client[kPendingIdx]].servername === client[kServerName]) {\n const request = client[kQueue][client[kPendingIdx]++]\n errorRequest(client, request, err)\n }\n } else {\n onError(client, err)\n }\n\n client.emit('connectionError', client[kUrl], [client], err)\n }\n\n resume(client)\n}\n\nfunction emitDrain (client) {\n client[kNeedDrain] = 0\n client.emit('drain', client[kUrl], [client])\n}\n\nfunction resume (client, sync) {\n if (client[kResuming] === 2) {\n return\n }\n\n client[kResuming] = 2\n\n _resume(client, sync)\n client[kResuming] = 0\n\n if (client[kRunningIdx] > 256) {\n client[kQueue].splice(0, client[kRunningIdx])\n client[kPendingIdx] -= client[kRunningIdx]\n client[kRunningIdx] = 0\n }\n}\n\nfunction _resume (client, sync) {\n while (true) {\n if (client.destroyed) {\n assert(client[kPending] === 0)\n return\n }\n\n if (client[kClosedResolve] && !client[kSize]) {\n client[kClosedResolve]()\n client[kClosedResolve] = null\n return\n }\n\n const socket = client[kSocket]\n\n if (socket && !socket.destroyed && socket.alpnProtocol !== 'h2') {\n if (client[kSize] === 0) {\n if (!socket[kNoRef] && socket.unref) {\n socket.unref()\n socket[kNoRef] = true\n }\n } else if (socket[kNoRef] && socket.ref) {\n socket.ref()\n socket[kNoRef] = false\n }\n\n if (client[kSize] === 0) {\n if (socket[kParser].timeoutType !== TIMEOUT_IDLE) {\n socket[kParser].setTimeout(client[kKeepAliveTimeoutValue], TIMEOUT_IDLE)\n }\n } else if (client[kRunning] > 0 && socket[kParser].statusCode < 200) {\n if (socket[kParser].timeoutType !== TIMEOUT_HEADERS) {\n const request = client[kQueue][client[kRunningIdx]]\n const headersTimeout = request.headersTimeout != null\n ? request.headersTimeout\n : client[kHeadersTimeout]\n socket[kParser].setTimeout(headersTimeout, TIMEOUT_HEADERS)\n }\n }\n }\n\n if (client[kBusy]) {\n client[kNeedDrain] = 2\n } else if (client[kNeedDrain] === 2) {\n if (sync) {\n client[kNeedDrain] = 1\n process.nextTick(emitDrain, client)\n } else {\n emitDrain(client)\n }\n continue\n }\n\n if (client[kPending] === 0) {\n return\n }\n\n if (client[kRunning] >= (client[kPipelining] || 1)) {\n return\n }\n\n const request = client[kQueue][client[kPendingIdx]]\n\n if (client[kUrl].protocol === 'https:' && client[kServerName] !== request.servername) {\n if (client[kRunning] > 0) {\n return\n }\n\n client[kServerName] = request.servername\n\n if (socket && socket.servername !== request.servername) {\n util.destroy(socket, new InformationalError('servername changed'))\n return\n }\n }\n\n if (client[kConnecting]) {\n return\n }\n\n if (!socket && !client[kHTTP2Session]) {\n connect(client)\n return\n }\n\n if (socket.destroyed || socket[kWriting] || socket[kReset] || socket[kBlocking]) {\n return\n }\n\n if (client[kRunning] > 0 && !request.idempotent) {\n // Non-idempotent request cannot be retried.\n // Ensure that no other requests are inflight and\n // could cause failure.\n return\n }\n\n if (client[kRunning] > 0 && (request.upgrade || request.method === 'CONNECT')) {\n // Don't dispatch an upgrade until all preceding requests have completed.\n // A misbehaving server might upgrade the connection before all pipelined\n // request has completed.\n return\n }\n\n if (client[kRunning] > 0 && util.bodyLength(request.body) !== 0 &&\n (util.isStream(request.body) || util.isAsyncIterable(request.body))) {\n // Request with stream or iterator body can error while other requests\n // are inflight and indirectly error those as well.\n // Ensure this doesn't happen by waiting for inflight\n // to complete before dispatching.\n\n // Request with stream or iterator body cannot be retried.\n // Ensure that no other requests are inflight and\n // could cause failure.\n return\n }\n\n if (!request.aborted && write(client, request)) {\n client[kPendingIdx]++\n } else {\n client[kQueue].splice(client[kPendingIdx], 1)\n }\n }\n}\n\n// https://www.rfc-editor.org/rfc/rfc7230#section-3.3.2\nfunction shouldSendContentLength (method) {\n return method !== 'GET' && method !== 'HEAD' && method !== 'OPTIONS' && method !== 'TRACE' && method !== 'CONNECT'\n}\n\nfunction write (client, request) {\n if (client[kHTTPConnVersion] === 'h2') {\n writeH2(client, client[kHTTP2Session], request)\n return\n }\n\n const { body, method, path, host, upgrade, headers, blocking, reset } = request\n\n // https://tools.ietf.org/html/rfc7231#section-4.3.1\n // https://tools.ietf.org/html/rfc7231#section-4.3.2\n // https://tools.ietf.org/html/rfc7231#section-4.3.5\n\n // Sending a payload body on a request that does not\n // expect it can cause undefined behavior on some\n // servers and corrupt connection state. Do not\n // re-use the connection for further requests.\n\n const expectsPayload = (\n method === 'PUT' ||\n method === 'POST' ||\n method === 'PATCH'\n )\n\n if (body && typeof body.read === 'function') {\n // Try to read EOF in order to get length.\n body.read(0)\n }\n\n const bodyLength = util.bodyLength(body)\n\n let contentLength = bodyLength\n\n if (contentLength === null) {\n contentLength = request.contentLength\n }\n\n if (contentLength === 0 && !expectsPayload) {\n // https://tools.ietf.org/html/rfc7230#section-3.3.2\n // A user agent SHOULD NOT send a Content-Length header field when\n // the request message does not contain a payload body and the method\n // semantics do not anticipate such a body.\n\n contentLength = null\n }\n\n // https://github.com/nodejs/undici/issues/2046\n // A user agent may send a Content-Length header with 0 value, this should be allowed.\n if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength !== null && request.contentLength !== contentLength) {\n if (client[kStrictContentLength]) {\n errorRequest(client, request, new RequestContentLengthMismatchError())\n return false\n }\n\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n\n const socket = client[kSocket]\n\n try {\n request.onConnect((err) => {\n if (request.aborted || request.completed) {\n return\n }\n\n errorRequest(client, request, err || new RequestAbortedError())\n\n util.destroy(socket, new InformationalError('aborted'))\n })\n } catch (err) {\n errorRequest(client, request, err)\n }\n\n if (request.aborted) {\n return false\n }\n\n if (method === 'HEAD') {\n // https://github.com/mcollina/undici/issues/258\n // Close after a HEAD request to interop with misbehaving servers\n // that may send a body in the response.\n\n socket[kReset] = true\n }\n\n if (upgrade || method === 'CONNECT') {\n // On CONNECT or upgrade, block pipeline from dispatching further\n // requests on this connection.\n\n socket[kReset] = true\n }\n\n if (reset != null) {\n socket[kReset] = reset\n }\n\n if (client[kMaxRequests] && socket[kCounter]++ >= client[kMaxRequests]) {\n socket[kReset] = true\n }\n\n if (blocking) {\n socket[kBlocking] = true\n }\n\n let header = `${method} ${path} HTTP/1.1\\r\\n`\n\n if (typeof host === 'string') {\n header += `host: ${host}\\r\\n`\n } else {\n header += client[kHostHeader]\n }\n\n if (upgrade) {\n header += `connection: upgrade\\r\\nupgrade: ${upgrade}\\r\\n`\n } else if (client[kPipelining] && !socket[kReset]) {\n header += 'connection: keep-alive\\r\\n'\n } else {\n header += 'connection: close\\r\\n'\n }\n\n if (headers) {\n header += headers\n }\n\n if (channels.sendHeaders.hasSubscribers) {\n channels.sendHeaders.publish({ request, headers: header, socket })\n }\n\n /* istanbul ignore else: assertion */\n if (!body || bodyLength === 0) {\n if (contentLength === 0) {\n socket.write(`${header}content-length: 0\\r\\n\\r\\n`, 'latin1')\n } else {\n assert(contentLength === null, 'no body must not have content length')\n socket.write(`${header}\\r\\n`, 'latin1')\n }\n request.onRequestSent()\n } else if (util.isBuffer(body)) {\n assert(contentLength === body.byteLength, 'buffer body must have content length')\n\n socket.cork()\n socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n socket.write(body)\n socket.uncork()\n request.onBodySent(body)\n request.onRequestSent()\n if (!expectsPayload) {\n socket[kReset] = true\n }\n } else if (util.isBlobLike(body)) {\n if (typeof body.stream === 'function') {\n writeIterable({ body: body.stream(), client, request, socket, contentLength, header, expectsPayload })\n } else {\n writeBlob({ body, client, request, socket, contentLength, header, expectsPayload })\n }\n } else if (util.isStream(body)) {\n writeStream({ body, client, request, socket, contentLength, header, expectsPayload })\n } else if (util.isIterable(body)) {\n writeIterable({ body, client, request, socket, contentLength, header, expectsPayload })\n } else {\n assert(false)\n }\n\n return true\n}\n\nfunction writeH2 (client, session, request) {\n const { body, method, path, host, upgrade, expectContinue, signal, headers: reqHeaders } = request\n\n let headers\n if (typeof reqHeaders === 'string') headers = Request[kHTTP2CopyHeaders](reqHeaders.trim())\n else headers = reqHeaders\n\n if (upgrade) {\n errorRequest(client, request, new Error('Upgrade not supported for H2'))\n return false\n }\n\n try {\n // TODO(HTTP/2): Should we call onConnect immediately or on stream ready event?\n request.onConnect((err) => {\n if (request.aborted || request.completed) {\n return\n }\n\n errorRequest(client, request, err || new RequestAbortedError())\n })\n } catch (err) {\n errorRequest(client, request, err)\n }\n\n if (request.aborted) {\n return false\n }\n\n /** @type {import('node:http2').ClientHttp2Stream} */\n let stream\n const h2State = client[kHTTP2SessionState]\n\n headers[HTTP2_HEADER_AUTHORITY] = host || client[kHost]\n headers[HTTP2_HEADER_METHOD] = method\n\n if (method === 'CONNECT') {\n session.ref()\n // we are already connected, streams are pending, first request\n // will create a new stream. We trigger a request to create the stream and wait until\n // `ready` event is triggered\n // We disabled endStream to allow the user to write to the stream\n stream = session.request(headers, { endStream: false, signal })\n\n if (stream.id && !stream.pending) {\n request.onUpgrade(null, null, stream)\n ++h2State.openStreams\n } else {\n stream.once('ready', () => {\n request.onUpgrade(null, null, stream)\n ++h2State.openStreams\n })\n }\n\n stream.once('close', () => {\n h2State.openStreams -= 1\n // TODO(HTTP/2): unref only if current streams count is 0\n if (h2State.openStreams === 0) session.unref()\n })\n\n return true\n }\n\n // https://tools.ietf.org/html/rfc7540#section-8.3\n // :path and :scheme headers must be omited when sending CONNECT\n\n headers[HTTP2_HEADER_PATH] = path\n headers[HTTP2_HEADER_SCHEME] = 'https'\n\n // https://tools.ietf.org/html/rfc7231#section-4.3.1\n // https://tools.ietf.org/html/rfc7231#section-4.3.2\n // https://tools.ietf.org/html/rfc7231#section-4.3.5\n\n // Sending a payload body on a request that does not\n // expect it can cause undefined behavior on some\n // servers and corrupt connection state. Do not\n // re-use the connection for further requests.\n\n const expectsPayload = (\n method === 'PUT' ||\n method === 'POST' ||\n method === 'PATCH'\n )\n\n if (body && typeof body.read === 'function') {\n // Try to read EOF in order to get length.\n body.read(0)\n }\n\n let contentLength = util.bodyLength(body)\n\n if (contentLength == null) {\n contentLength = request.contentLength\n }\n\n if (contentLength === 0 || !expectsPayload) {\n // https://tools.ietf.org/html/rfc7230#section-3.3.2\n // A user agent SHOULD NOT send a Content-Length header field when\n // the request message does not contain a payload body and the method\n // semantics do not anticipate such a body.\n\n contentLength = null\n }\n\n // https://github.com/nodejs/undici/issues/2046\n // A user agent may send a Content-Length header with 0 value, this should be allowed.\n if (shouldSendContentLength(method) && contentLength > 0 && request.contentLength != null && request.contentLength !== contentLength) {\n if (client[kStrictContentLength]) {\n errorRequest(client, request, new RequestContentLengthMismatchError())\n return false\n }\n\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n\n if (contentLength != null) {\n assert(body, 'no body must not have content length')\n headers[HTTP2_HEADER_CONTENT_LENGTH] = `${contentLength}`\n }\n\n session.ref()\n\n const shouldEndStream = method === 'GET' || method === 'HEAD'\n if (expectContinue) {\n headers[HTTP2_HEADER_EXPECT] = '100-continue'\n stream = session.request(headers, { endStream: shouldEndStream, signal })\n\n stream.once('continue', writeBodyH2)\n } else {\n stream = session.request(headers, {\n endStream: shouldEndStream,\n signal\n })\n writeBodyH2()\n }\n\n // Increment counter as we have new several streams open\n ++h2State.openStreams\n\n stream.once('response', headers => {\n const { [HTTP2_HEADER_STATUS]: statusCode, ...realHeaders } = headers\n\n if (request.onHeaders(Number(statusCode), realHeaders, stream.resume.bind(stream), '') === false) {\n stream.pause()\n }\n })\n\n stream.once('end', () => {\n request.onComplete([])\n })\n\n stream.on('data', (chunk) => {\n if (request.onData(chunk) === false) {\n stream.pause()\n }\n })\n\n stream.once('close', () => {\n h2State.openStreams -= 1\n // TODO(HTTP/2): unref only if current streams count is 0\n if (h2State.openStreams === 0) {\n session.unref()\n }\n })\n\n stream.once('error', function (err) {\n if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) {\n h2State.streams -= 1\n util.destroy(stream, err)\n }\n })\n\n stream.once('frameError', (type, code) => {\n const err = new InformationalError(`HTTP/2: \"frameError\" received - type ${type}, code ${code}`)\n errorRequest(client, request, err)\n\n if (client[kHTTP2Session] && !client[kHTTP2Session].destroyed && !this.closed && !this.destroyed) {\n h2State.streams -= 1\n util.destroy(stream, err)\n }\n })\n\n // stream.on('aborted', () => {\n // // TODO(HTTP/2): Support aborted\n // })\n\n // stream.on('timeout', () => {\n // // TODO(HTTP/2): Support timeout\n // })\n\n // stream.on('push', headers => {\n // // TODO(HTTP/2): Suppor push\n // })\n\n // stream.on('trailers', headers => {\n // // TODO(HTTP/2): Support trailers\n // })\n\n return true\n\n function writeBodyH2 () {\n /* istanbul ignore else: assertion */\n if (!body) {\n request.onRequestSent()\n } else if (util.isBuffer(body)) {\n assert(contentLength === body.byteLength, 'buffer body must have content length')\n stream.cork()\n stream.write(body)\n stream.uncork()\n stream.end()\n request.onBodySent(body)\n request.onRequestSent()\n } else if (util.isBlobLike(body)) {\n if (typeof body.stream === 'function') {\n writeIterable({\n client,\n request,\n contentLength,\n h2stream: stream,\n expectsPayload,\n body: body.stream(),\n socket: client[kSocket],\n header: ''\n })\n } else {\n writeBlob({\n body,\n client,\n request,\n contentLength,\n expectsPayload,\n h2stream: stream,\n header: '',\n socket: client[kSocket]\n })\n }\n } else if (util.isStream(body)) {\n writeStream({\n body,\n client,\n request,\n contentLength,\n expectsPayload,\n socket: client[kSocket],\n h2stream: stream,\n header: ''\n })\n } else if (util.isIterable(body)) {\n writeIterable({\n body,\n client,\n request,\n contentLength,\n expectsPayload,\n header: '',\n h2stream: stream,\n socket: client[kSocket]\n })\n } else {\n assert(false)\n }\n }\n}\n\nfunction writeStream ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {\n assert(contentLength !== 0 || client[kRunning] === 0, 'stream body cannot be pipelined')\n\n if (client[kHTTPConnVersion] === 'h2') {\n // For HTTP/2, is enough to pipe the stream\n const pipe = pipeline(\n body,\n h2stream,\n (err) => {\n if (err) {\n util.destroy(body, err)\n util.destroy(h2stream, err)\n } else {\n request.onRequestSent()\n }\n }\n )\n\n pipe.on('data', onPipeData)\n pipe.once('end', () => {\n pipe.removeListener('data', onPipeData)\n util.destroy(pipe)\n })\n\n function onPipeData (chunk) {\n request.onBodySent(chunk)\n }\n\n return\n }\n\n let finished = false\n\n const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header })\n\n const onData = function (chunk) {\n if (finished) {\n return\n }\n\n try {\n if (!writer.write(chunk) && this.pause) {\n this.pause()\n }\n } catch (err) {\n util.destroy(this, err)\n }\n }\n const onDrain = function () {\n if (finished) {\n return\n }\n\n if (body.resume) {\n body.resume()\n }\n }\n const onAbort = function () {\n if (finished) {\n return\n }\n const err = new RequestAbortedError()\n queueMicrotask(() => onFinished(err))\n }\n const onFinished = function (err) {\n if (finished) {\n return\n }\n\n finished = true\n\n assert(socket.destroyed || (socket[kWriting] && client[kRunning] <= 1))\n\n socket\n .off('drain', onDrain)\n .off('error', onFinished)\n\n body\n .removeListener('data', onData)\n .removeListener('end', onFinished)\n .removeListener('error', onFinished)\n .removeListener('close', onAbort)\n\n if (!err) {\n try {\n writer.end()\n } catch (er) {\n err = er\n }\n }\n\n writer.destroy(err)\n\n if (err && (err.code !== 'UND_ERR_INFO' || err.message !== 'reset')) {\n util.destroy(body, err)\n } else {\n util.destroy(body)\n }\n }\n\n body\n .on('data', onData)\n .on('end', onFinished)\n .on('error', onFinished)\n .on('close', onAbort)\n\n if (body.resume) {\n body.resume()\n }\n\n socket\n .on('drain', onDrain)\n .on('error', onFinished)\n}\n\nasync function writeBlob ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {\n assert(contentLength === body.size, 'blob body must have content length')\n\n const isH2 = client[kHTTPConnVersion] === 'h2'\n try {\n if (contentLength != null && contentLength !== body.size) {\n throw new RequestContentLengthMismatchError()\n }\n\n const buffer = Buffer.from(await body.arrayBuffer())\n\n if (isH2) {\n h2stream.cork()\n h2stream.write(buffer)\n h2stream.uncork()\n } else {\n socket.cork()\n socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n socket.write(buffer)\n socket.uncork()\n }\n\n request.onBodySent(buffer)\n request.onRequestSent()\n\n if (!expectsPayload) {\n socket[kReset] = true\n }\n\n resume(client)\n } catch (err) {\n util.destroy(isH2 ? h2stream : socket, err)\n }\n}\n\nasync function writeIterable ({ h2stream, body, client, request, socket, contentLength, header, expectsPayload }) {\n assert(contentLength !== 0 || client[kRunning] === 0, 'iterator body cannot be pipelined')\n\n let callback = null\n function onDrain () {\n if (callback) {\n const cb = callback\n callback = null\n cb()\n }\n }\n\n const waitForDrain = () => new Promise((resolve, reject) => {\n assert(callback === null)\n\n if (socket[kError]) {\n reject(socket[kError])\n } else {\n callback = resolve\n }\n })\n\n if (client[kHTTPConnVersion] === 'h2') {\n h2stream\n .on('close', onDrain)\n .on('drain', onDrain)\n\n try {\n // It's up to the user to somehow abort the async iterable.\n for await (const chunk of body) {\n if (socket[kError]) {\n throw socket[kError]\n }\n\n const res = h2stream.write(chunk)\n request.onBodySent(chunk)\n if (!res) {\n await waitForDrain()\n }\n }\n } catch (err) {\n h2stream.destroy(err)\n } finally {\n request.onRequestSent()\n h2stream.end()\n h2stream\n .off('close', onDrain)\n .off('drain', onDrain)\n }\n\n return\n }\n\n socket\n .on('close', onDrain)\n .on('drain', onDrain)\n\n const writer = new AsyncWriter({ socket, request, contentLength, client, expectsPayload, header })\n try {\n // It's up to the user to somehow abort the async iterable.\n for await (const chunk of body) {\n if (socket[kError]) {\n throw socket[kError]\n }\n\n if (!writer.write(chunk)) {\n await waitForDrain()\n }\n }\n\n writer.end()\n } catch (err) {\n writer.destroy(err)\n } finally {\n socket\n .off('close', onDrain)\n .off('drain', onDrain)\n }\n}\n\nclass AsyncWriter {\n constructor ({ socket, request, contentLength, client, expectsPayload, header }) {\n this.socket = socket\n this.request = request\n this.contentLength = contentLength\n this.client = client\n this.bytesWritten = 0\n this.expectsPayload = expectsPayload\n this.header = header\n\n socket[kWriting] = true\n }\n\n write (chunk) {\n const { socket, request, contentLength, client, bytesWritten, expectsPayload, header } = this\n\n if (socket[kError]) {\n throw socket[kError]\n }\n\n if (socket.destroyed) {\n return false\n }\n\n const len = Buffer.byteLength(chunk)\n if (!len) {\n return true\n }\n\n // We should defer writing chunks.\n if (contentLength !== null && bytesWritten + len > contentLength) {\n if (client[kStrictContentLength]) {\n throw new RequestContentLengthMismatchError()\n }\n\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n\n socket.cork()\n\n if (bytesWritten === 0) {\n if (!expectsPayload) {\n socket[kReset] = true\n }\n\n if (contentLength === null) {\n socket.write(`${header}transfer-encoding: chunked\\r\\n`, 'latin1')\n } else {\n socket.write(`${header}content-length: ${contentLength}\\r\\n\\r\\n`, 'latin1')\n }\n }\n\n if (contentLength === null) {\n socket.write(`\\r\\n${len.toString(16)}\\r\\n`, 'latin1')\n }\n\n this.bytesWritten += len\n\n const ret = socket.write(chunk)\n\n socket.uncork()\n\n request.onBodySent(chunk)\n\n if (!ret) {\n if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {\n // istanbul ignore else: only for jest\n if (socket[kParser].timeout.refresh) {\n socket[kParser].timeout.refresh()\n }\n }\n }\n\n return ret\n }\n\n end () {\n const { socket, contentLength, client, bytesWritten, expectsPayload, header, request } = this\n request.onRequestSent()\n\n socket[kWriting] = false\n\n if (socket[kError]) {\n throw socket[kError]\n }\n\n if (socket.destroyed) {\n return\n }\n\n if (bytesWritten === 0) {\n if (expectsPayload) {\n // https://tools.ietf.org/html/rfc7230#section-3.3.2\n // A user agent SHOULD send a Content-Length in a request message when\n // no Transfer-Encoding is sent and the request method defines a meaning\n // for an enclosed payload body.\n\n socket.write(`${header}content-length: 0\\r\\n\\r\\n`, 'latin1')\n } else {\n socket.write(`${header}\\r\\n`, 'latin1')\n }\n } else if (contentLength === null) {\n socket.write('\\r\\n0\\r\\n\\r\\n', 'latin1')\n }\n\n if (contentLength !== null && bytesWritten !== contentLength) {\n if (client[kStrictContentLength]) {\n throw new RequestContentLengthMismatchError()\n } else {\n process.emitWarning(new RequestContentLengthMismatchError())\n }\n }\n\n if (socket[kParser].timeout && socket[kParser].timeoutType === TIMEOUT_HEADERS) {\n // istanbul ignore else: only for jest\n if (socket[kParser].timeout.refresh) {\n socket[kParser].timeout.refresh()\n }\n }\n\n resume(client)\n }\n\n destroy (err) {\n const { socket, client } = this\n\n socket[kWriting] = false\n\n if (err) {\n assert(client[kRunning] <= 1, 'pipeline should only contain this request')\n util.destroy(socket, err)\n }\n }\n}\n\nfunction errorRequest (client, request, err) {\n try {\n request.onError(err)\n assert(request.aborted)\n } catch (err) {\n client.emit('error', err)\n }\n}\n\nmodule.exports = Client\n","'use strict'\n\n/* istanbul ignore file: only for Node 12 */\n\nconst { kConnected, kSize } = require('../core/symbols')\n\nclass CompatWeakRef {\n constructor (value) {\n this.value = value\n }\n\n deref () {\n return this.value[kConnected] === 0 && this.value[kSize] === 0\n ? undefined\n : this.value\n }\n}\n\nclass CompatFinalizer {\n constructor (finalizer) {\n this.finalizer = finalizer\n }\n\n register (dispatcher, key) {\n if (dispatcher.on) {\n dispatcher.on('disconnect', () => {\n if (dispatcher[kConnected] === 0 && dispatcher[kSize] === 0) {\n this.finalizer(key)\n }\n })\n }\n }\n}\n\nmodule.exports = function () {\n // FIXME: remove workaround when the Node bug is fixed\n // https://github.com/nodejs/node/issues/49344#issuecomment-1741776308\n if (process.env.NODE_V8_COVERAGE) {\n return {\n WeakRef: CompatWeakRef,\n FinalizationRegistry: CompatFinalizer\n }\n }\n return {\n WeakRef: global.WeakRef || CompatWeakRef,\n FinalizationRegistry: global.FinalizationRegistry || CompatFinalizer\n }\n}\n","'use strict'\n\n// https://wicg.github.io/cookie-store/#cookie-maximum-attribute-value-size\nconst maxAttributeValueSize = 1024\n\n// https://wicg.github.io/cookie-store/#cookie-maximum-name-value-pair-size\nconst maxNameValuePairSize = 4096\n\nmodule.exports = {\n maxAttributeValueSize,\n maxNameValuePairSize\n}\n","'use strict'\n\nconst { parseSetCookie } = require('./parse')\nconst { stringify, getHeadersList } = require('./util')\nconst { webidl } = require('../fetch/webidl')\nconst { Headers } = require('../fetch/headers')\n\n/**\n * @typedef {Object} Cookie\n * @property {string} name\n * @property {string} value\n * @property {Date|number|undefined} expires\n * @property {number|undefined} maxAge\n * @property {string|undefined} domain\n * @property {string|undefined} path\n * @property {boolean|undefined} secure\n * @property {boolean|undefined} httpOnly\n * @property {'Strict'|'Lax'|'None'} sameSite\n * @property {string[]} unparsed\n */\n\n/**\n * @param {Headers} headers\n * @returns {Record}\n */\nfunction getCookies (headers) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'getCookies' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n const cookie = headers.get('cookie')\n const out = {}\n\n if (!cookie) {\n return out\n }\n\n for (const piece of cookie.split(';')) {\n const [name, ...value] = piece.split('=')\n\n out[name.trim()] = value.join('=')\n }\n\n return out\n}\n\n/**\n * @param {Headers} headers\n * @param {string} name\n * @param {{ path?: string, domain?: string }|undefined} attributes\n * @returns {void}\n */\nfunction deleteCookie (headers, name, attributes) {\n webidl.argumentLengthCheck(arguments, 2, { header: 'deleteCookie' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n name = webidl.converters.DOMString(name)\n attributes = webidl.converters.DeleteCookieAttributes(attributes)\n\n // Matches behavior of\n // https://github.com/denoland/deno_std/blob/63827b16330b82489a04614027c33b7904e08be5/http/cookie.ts#L278\n setCookie(headers, {\n name,\n value: '',\n expires: new Date(0),\n ...attributes\n })\n}\n\n/**\n * @param {Headers} headers\n * @returns {Cookie[]}\n */\nfunction getSetCookies (headers) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'getSetCookies' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n const cookies = getHeadersList(headers).cookies\n\n if (!cookies) {\n return []\n }\n\n // In older versions of undici, cookies is a list of name:value.\n return cookies.map((pair) => parseSetCookie(Array.isArray(pair) ? pair[1] : pair))\n}\n\n/**\n * @param {Headers} headers\n * @param {Cookie} cookie\n * @returns {void}\n */\nfunction setCookie (headers, cookie) {\n webidl.argumentLengthCheck(arguments, 2, { header: 'setCookie' })\n\n webidl.brandCheck(headers, Headers, { strict: false })\n\n cookie = webidl.converters.Cookie(cookie)\n\n const str = stringify(cookie)\n\n if (str) {\n headers.append('Set-Cookie', stringify(cookie))\n }\n}\n\nwebidl.converters.DeleteCookieAttributes = webidl.dictionaryConverter([\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'path',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'domain',\n defaultValue: null\n }\n])\n\nwebidl.converters.Cookie = webidl.dictionaryConverter([\n {\n converter: webidl.converters.DOMString,\n key: 'name'\n },\n {\n converter: webidl.converters.DOMString,\n key: 'value'\n },\n {\n converter: webidl.nullableConverter((value) => {\n if (typeof value === 'number') {\n return webidl.converters['unsigned long long'](value)\n }\n\n return new Date(value)\n }),\n key: 'expires',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters['long long']),\n key: 'maxAge',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'domain',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.DOMString),\n key: 'path',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.boolean),\n key: 'secure',\n defaultValue: null\n },\n {\n converter: webidl.nullableConverter(webidl.converters.boolean),\n key: 'httpOnly',\n defaultValue: null\n },\n {\n converter: webidl.converters.USVString,\n key: 'sameSite',\n allowedValues: ['Strict', 'Lax', 'None']\n },\n {\n converter: webidl.sequenceConverter(webidl.converters.DOMString),\n key: 'unparsed',\n defaultValue: []\n }\n])\n\nmodule.exports = {\n getCookies,\n deleteCookie,\n getSetCookies,\n setCookie\n}\n","'use strict'\n\nconst { maxNameValuePairSize, maxAttributeValueSize } = require('./constants')\nconst { isCTLExcludingHtab } = require('./util')\nconst { collectASequenceOfCodePointsFast } = require('../fetch/dataURL')\nconst assert = require('assert')\n\n/**\n * @description Parses the field-value attributes of a set-cookie header string.\n * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4\n * @param {string} header\n * @returns if the header is invalid, null will be returned\n */\nfunction parseSetCookie (header) {\n // 1. If the set-cookie-string contains a %x00-08 / %x0A-1F / %x7F\n // character (CTL characters excluding HTAB): Abort these steps and\n // ignore the set-cookie-string entirely.\n if (isCTLExcludingHtab(header)) {\n return null\n }\n\n let nameValuePair = ''\n let unparsedAttributes = ''\n let name = ''\n let value = ''\n\n // 2. If the set-cookie-string contains a %x3B (\";\") character:\n if (header.includes(';')) {\n // 1. The name-value-pair string consists of the characters up to,\n // but not including, the first %x3B (\";\"), and the unparsed-\n // attributes consist of the remainder of the set-cookie-string\n // (including the %x3B (\";\") in question).\n const position = { position: 0 }\n\n nameValuePair = collectASequenceOfCodePointsFast(';', header, position)\n unparsedAttributes = header.slice(position.position)\n } else {\n // Otherwise:\n\n // 1. The name-value-pair string consists of all the characters\n // contained in the set-cookie-string, and the unparsed-\n // attributes is the empty string.\n nameValuePair = header\n }\n\n // 3. If the name-value-pair string lacks a %x3D (\"=\") character, then\n // the name string is empty, and the value string is the value of\n // name-value-pair.\n if (!nameValuePair.includes('=')) {\n value = nameValuePair\n } else {\n // Otherwise, the name string consists of the characters up to, but\n // not including, the first %x3D (\"=\") character, and the (possibly\n // empty) value string consists of the characters after the first\n // %x3D (\"=\") character.\n const position = { position: 0 }\n name = collectASequenceOfCodePointsFast(\n '=',\n nameValuePair,\n position\n )\n value = nameValuePair.slice(position.position + 1)\n }\n\n // 4. Remove any leading or trailing WSP characters from the name\n // string and the value string.\n name = name.trim()\n value = value.trim()\n\n // 5. If the sum of the lengths of the name string and the value string\n // is more than 4096 octets, abort these steps and ignore the set-\n // cookie-string entirely.\n if (name.length + value.length > maxNameValuePairSize) {\n return null\n }\n\n // 6. The cookie-name is the name string, and the cookie-value is the\n // value string.\n return {\n name, value, ...parseUnparsedAttributes(unparsedAttributes)\n }\n}\n\n/**\n * Parses the remaining attributes of a set-cookie header\n * @see https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4\n * @param {string} unparsedAttributes\n * @param {[Object.]={}} cookieAttributeList\n */\nfunction parseUnparsedAttributes (unparsedAttributes, cookieAttributeList = {}) {\n // 1. If the unparsed-attributes string is empty, skip the rest of\n // these steps.\n if (unparsedAttributes.length === 0) {\n return cookieAttributeList\n }\n\n // 2. Discard the first character of the unparsed-attributes (which\n // will be a %x3B (\";\") character).\n assert(unparsedAttributes[0] === ';')\n unparsedAttributes = unparsedAttributes.slice(1)\n\n let cookieAv = ''\n\n // 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n // character:\n if (unparsedAttributes.includes(';')) {\n // 1. Consume the characters of the unparsed-attributes up to, but\n // not including, the first %x3B (\";\") character.\n cookieAv = collectASequenceOfCodePointsFast(\n ';',\n unparsedAttributes,\n { position: 0 }\n )\n unparsedAttributes = unparsedAttributes.slice(cookieAv.length)\n } else {\n // Otherwise:\n\n // 1. Consume the remainder of the unparsed-attributes.\n cookieAv = unparsedAttributes\n unparsedAttributes = ''\n }\n\n // Let the cookie-av string be the characters consumed in this step.\n\n let attributeName = ''\n let attributeValue = ''\n\n // 4. If the cookie-av string contains a %x3D (\"=\") character:\n if (cookieAv.includes('=')) {\n // 1. The (possibly empty) attribute-name string consists of the\n // characters up to, but not including, the first %x3D (\"=\")\n // character, and the (possibly empty) attribute-value string\n // consists of the characters after the first %x3D (\"=\")\n // character.\n const position = { position: 0 }\n\n attributeName = collectASequenceOfCodePointsFast(\n '=',\n cookieAv,\n position\n )\n attributeValue = cookieAv.slice(position.position + 1)\n } else {\n // Otherwise:\n\n // 1. The attribute-name string consists of the entire cookie-av\n // string, and the attribute-value string is empty.\n attributeName = cookieAv\n }\n\n // 5. Remove any leading or trailing WSP characters from the attribute-\n // name string and the attribute-value string.\n attributeName = attributeName.trim()\n attributeValue = attributeValue.trim()\n\n // 6. If the attribute-value is longer than 1024 octets, ignore the\n // cookie-av string and return to Step 1 of this algorithm.\n if (attributeValue.length > maxAttributeValueSize) {\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n }\n\n // 7. Process the attribute-name and attribute-value according to the\n // requirements in the following subsections. (Notice that\n // attributes with unrecognized attribute-names are ignored.)\n const attributeNameLowercase = attributeName.toLowerCase()\n\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.1\n // If the attribute-name case-insensitively matches the string\n // \"Expires\", the user agent MUST process the cookie-av as follows.\n if (attributeNameLowercase === 'expires') {\n // 1. Let the expiry-time be the result of parsing the attribute-value\n // as cookie-date (see Section 5.1.1).\n const expiryTime = new Date(attributeValue)\n\n // 2. If the attribute-value failed to parse as a cookie date, ignore\n // the cookie-av.\n\n cookieAttributeList.expires = expiryTime\n } else if (attributeNameLowercase === 'max-age') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.2\n // If the attribute-name case-insensitively matches the string \"Max-\n // Age\", the user agent MUST process the cookie-av as follows.\n\n // 1. If the first character of the attribute-value is not a DIGIT or a\n // \"-\" character, ignore the cookie-av.\n const charCode = attributeValue.charCodeAt(0)\n\n if ((charCode < 48 || charCode > 57) && attributeValue[0] !== '-') {\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n }\n\n // 2. If the remainder of attribute-value contains a non-DIGIT\n // character, ignore the cookie-av.\n if (!/^\\d+$/.test(attributeValue)) {\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n }\n\n // 3. Let delta-seconds be the attribute-value converted to an integer.\n const deltaSeconds = Number(attributeValue)\n\n // 4. Let cookie-age-limit be the maximum age of the cookie (which\n // SHOULD be 400 days or less, see Section 4.1.2.2).\n\n // 5. Set delta-seconds to the smaller of its present value and cookie-\n // age-limit.\n // deltaSeconds = Math.min(deltaSeconds * 1000, maxExpiresMs)\n\n // 6. If delta-seconds is less than or equal to zero (0), let expiry-\n // time be the earliest representable date and time. Otherwise, let\n // the expiry-time be the current date and time plus delta-seconds\n // seconds.\n // const expiryTime = deltaSeconds <= 0 ? Date.now() : Date.now() + deltaSeconds\n\n // 7. Append an attribute to the cookie-attribute-list with an\n // attribute-name of Max-Age and an attribute-value of expiry-time.\n cookieAttributeList.maxAge = deltaSeconds\n } else if (attributeNameLowercase === 'domain') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.3\n // If the attribute-name case-insensitively matches the string \"Domain\",\n // the user agent MUST process the cookie-av as follows.\n\n // 1. Let cookie-domain be the attribute-value.\n let cookieDomain = attributeValue\n\n // 2. If cookie-domain starts with %x2E (\".\"), let cookie-domain be\n // cookie-domain without its leading %x2E (\".\").\n if (cookieDomain[0] === '.') {\n cookieDomain = cookieDomain.slice(1)\n }\n\n // 3. Convert the cookie-domain to lower case.\n cookieDomain = cookieDomain.toLowerCase()\n\n // 4. Append an attribute to the cookie-attribute-list with an\n // attribute-name of Domain and an attribute-value of cookie-domain.\n cookieAttributeList.domain = cookieDomain\n } else if (attributeNameLowercase === 'path') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.4\n // If the attribute-name case-insensitively matches the string \"Path\",\n // the user agent MUST process the cookie-av as follows.\n\n // 1. If the attribute-value is empty or if the first character of the\n // attribute-value is not %x2F (\"/\"):\n let cookiePath = ''\n if (attributeValue.length === 0 || attributeValue[0] !== '/') {\n // 1. Let cookie-path be the default-path.\n cookiePath = '/'\n } else {\n // Otherwise:\n\n // 1. Let cookie-path be the attribute-value.\n cookiePath = attributeValue\n }\n\n // 2. Append an attribute to the cookie-attribute-list with an\n // attribute-name of Path and an attribute-value of cookie-path.\n cookieAttributeList.path = cookiePath\n } else if (attributeNameLowercase === 'secure') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.5\n // If the attribute-name case-insensitively matches the string \"Secure\",\n // the user agent MUST append an attribute to the cookie-attribute-list\n // with an attribute-name of Secure and an empty attribute-value.\n\n cookieAttributeList.secure = true\n } else if (attributeNameLowercase === 'httponly') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.6\n // If the attribute-name case-insensitively matches the string\n // \"HttpOnly\", the user agent MUST append an attribute to the cookie-\n // attribute-list with an attribute-name of HttpOnly and an empty\n // attribute-value.\n\n cookieAttributeList.httpOnly = true\n } else if (attributeNameLowercase === 'samesite') {\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-rfc6265bis#section-5.4.7\n // If the attribute-name case-insensitively matches the string\n // \"SameSite\", the user agent MUST process the cookie-av as follows:\n\n // 1. Let enforcement be \"Default\".\n let enforcement = 'Default'\n\n const attributeValueLowercase = attributeValue.toLowerCase()\n // 2. If cookie-av's attribute-value is a case-insensitive match for\n // \"None\", set enforcement to \"None\".\n if (attributeValueLowercase.includes('none')) {\n enforcement = 'None'\n }\n\n // 3. If cookie-av's attribute-value is a case-insensitive match for\n // \"Strict\", set enforcement to \"Strict\".\n if (attributeValueLowercase.includes('strict')) {\n enforcement = 'Strict'\n }\n\n // 4. If cookie-av's attribute-value is a case-insensitive match for\n // \"Lax\", set enforcement to \"Lax\".\n if (attributeValueLowercase.includes('lax')) {\n enforcement = 'Lax'\n }\n\n // 5. Append an attribute to the cookie-attribute-list with an\n // attribute-name of \"SameSite\" and an attribute-value of\n // enforcement.\n cookieAttributeList.sameSite = enforcement\n } else {\n cookieAttributeList.unparsed ??= []\n\n cookieAttributeList.unparsed.push(`${attributeName}=${attributeValue}`)\n }\n\n // 8. Return to Step 1 of this algorithm.\n return parseUnparsedAttributes(unparsedAttributes, cookieAttributeList)\n}\n\nmodule.exports = {\n parseSetCookie,\n parseUnparsedAttributes\n}\n","'use strict'\n\nconst assert = require('assert')\nconst { kHeadersList } = require('../core/symbols')\n\nfunction isCTLExcludingHtab (value) {\n if (value.length === 0) {\n return false\n }\n\n for (const char of value) {\n const code = char.charCodeAt(0)\n\n if (\n (code >= 0x00 || code <= 0x08) ||\n (code >= 0x0A || code <= 0x1F) ||\n code === 0x7F\n ) {\n return false\n }\n }\n}\n\n/**\n CHAR = \n token = 1*\n separators = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n | \",\" | \";\" | \":\" | \"\\\" | <\">\n | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n | \"{\" | \"}\" | SP | HT\n * @param {string} name\n */\nfunction validateCookieName (name) {\n for (const char of name) {\n const code = char.charCodeAt(0)\n\n if (\n (code <= 0x20 || code > 0x7F) ||\n char === '(' ||\n char === ')' ||\n char === '>' ||\n char === '<' ||\n char === '@' ||\n char === ',' ||\n char === ';' ||\n char === ':' ||\n char === '\\\\' ||\n char === '\"' ||\n char === '/' ||\n char === '[' ||\n char === ']' ||\n char === '?' ||\n char === '=' ||\n char === '{' ||\n char === '}'\n ) {\n throw new Error('Invalid cookie name')\n }\n }\n}\n\n/**\n cookie-value = *cookie-octet / ( DQUOTE *cookie-octet DQUOTE )\n cookie-octet = %x21 / %x23-2B / %x2D-3A / %x3C-5B / %x5D-7E\n ; US-ASCII characters excluding CTLs,\n ; whitespace DQUOTE, comma, semicolon,\n ; and backslash\n * @param {string} value\n */\nfunction validateCookieValue (value) {\n for (const char of value) {\n const code = char.charCodeAt(0)\n\n if (\n code < 0x21 || // exclude CTLs (0-31)\n code === 0x22 ||\n code === 0x2C ||\n code === 0x3B ||\n code === 0x5C ||\n code > 0x7E // non-ascii\n ) {\n throw new Error('Invalid header value')\n }\n }\n}\n\n/**\n * path-value = \n * @param {string} path\n */\nfunction validateCookiePath (path) {\n for (const char of path) {\n const code = char.charCodeAt(0)\n\n if (code < 0x21 || char === ';') {\n throw new Error('Invalid cookie path')\n }\n }\n}\n\n/**\n * I have no idea why these values aren't allowed to be honest,\n * but Deno tests these. - Khafra\n * @param {string} domain\n */\nfunction validateCookieDomain (domain) {\n if (\n domain.startsWith('-') ||\n domain.endsWith('.') ||\n domain.endsWith('-')\n ) {\n throw new Error('Invalid cookie domain')\n }\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc7231#section-7.1.1.1\n * @param {number|Date} date\n IMF-fixdate = day-name \",\" SP date1 SP time-of-day SP GMT\n ; fixed length/zone/capitalization subset of the format\n ; see Section 3.3 of [RFC5322]\n\n day-name = %x4D.6F.6E ; \"Mon\", case-sensitive\n / %x54.75.65 ; \"Tue\", case-sensitive\n / %x57.65.64 ; \"Wed\", case-sensitive\n / %x54.68.75 ; \"Thu\", case-sensitive\n / %x46.72.69 ; \"Fri\", case-sensitive\n / %x53.61.74 ; \"Sat\", case-sensitive\n / %x53.75.6E ; \"Sun\", case-sensitive\n date1 = day SP month SP year\n ; e.g., 02 Jun 1982\n\n day = 2DIGIT\n month = %x4A.61.6E ; \"Jan\", case-sensitive\n / %x46.65.62 ; \"Feb\", case-sensitive\n / %x4D.61.72 ; \"Mar\", case-sensitive\n / %x41.70.72 ; \"Apr\", case-sensitive\n / %x4D.61.79 ; \"May\", case-sensitive\n / %x4A.75.6E ; \"Jun\", case-sensitive\n / %x4A.75.6C ; \"Jul\", case-sensitive\n / %x41.75.67 ; \"Aug\", case-sensitive\n / %x53.65.70 ; \"Sep\", case-sensitive\n / %x4F.63.74 ; \"Oct\", case-sensitive\n / %x4E.6F.76 ; \"Nov\", case-sensitive\n / %x44.65.63 ; \"Dec\", case-sensitive\n year = 4DIGIT\n\n GMT = %x47.4D.54 ; \"GMT\", case-sensitive\n\n time-of-day = hour \":\" minute \":\" second\n ; 00:00:00 - 23:59:60 (leap second)\n\n hour = 2DIGIT\n minute = 2DIGIT\n second = 2DIGIT\n */\nfunction toIMFDate (date) {\n if (typeof date === 'number') {\n date = new Date(date)\n }\n\n const days = [\n 'Sun', 'Mon', 'Tue', 'Wed',\n 'Thu', 'Fri', 'Sat'\n ]\n\n const months = [\n 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',\n 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'\n ]\n\n const dayName = days[date.getUTCDay()]\n const day = date.getUTCDate().toString().padStart(2, '0')\n const month = months[date.getUTCMonth()]\n const year = date.getUTCFullYear()\n const hour = date.getUTCHours().toString().padStart(2, '0')\n const minute = date.getUTCMinutes().toString().padStart(2, '0')\n const second = date.getUTCSeconds().toString().padStart(2, '0')\n\n return `${dayName}, ${day} ${month} ${year} ${hour}:${minute}:${second} GMT`\n}\n\n/**\n max-age-av = \"Max-Age=\" non-zero-digit *DIGIT\n ; In practice, both expires-av and max-age-av\n ; are limited to dates representable by the\n ; user agent.\n * @param {number} maxAge\n */\nfunction validateCookieMaxAge (maxAge) {\n if (maxAge < 0) {\n throw new Error('Invalid cookie max-age')\n }\n}\n\n/**\n * @see https://www.rfc-editor.org/rfc/rfc6265#section-4.1.1\n * @param {import('./index').Cookie} cookie\n */\nfunction stringify (cookie) {\n if (cookie.name.length === 0) {\n return null\n }\n\n validateCookieName(cookie.name)\n validateCookieValue(cookie.value)\n\n const out = [`${cookie.name}=${cookie.value}`]\n\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.1\n // https://datatracker.ietf.org/doc/html/draft-ietf-httpbis-cookie-prefixes-00#section-3.2\n if (cookie.name.startsWith('__Secure-')) {\n cookie.secure = true\n }\n\n if (cookie.name.startsWith('__Host-')) {\n cookie.secure = true\n cookie.domain = null\n cookie.path = '/'\n }\n\n if (cookie.secure) {\n out.push('Secure')\n }\n\n if (cookie.httpOnly) {\n out.push('HttpOnly')\n }\n\n if (typeof cookie.maxAge === 'number') {\n validateCookieMaxAge(cookie.maxAge)\n out.push(`Max-Age=${cookie.maxAge}`)\n }\n\n if (cookie.domain) {\n validateCookieDomain(cookie.domain)\n out.push(`Domain=${cookie.domain}`)\n }\n\n if (cookie.path) {\n validateCookiePath(cookie.path)\n out.push(`Path=${cookie.path}`)\n }\n\n if (cookie.expires && cookie.expires.toString() !== 'Invalid Date') {\n out.push(`Expires=${toIMFDate(cookie.expires)}`)\n }\n\n if (cookie.sameSite) {\n out.push(`SameSite=${cookie.sameSite}`)\n }\n\n for (const part of cookie.unparsed) {\n if (!part.includes('=')) {\n throw new Error('Invalid unparsed')\n }\n\n const [key, ...value] = part.split('=')\n\n out.push(`${key.trim()}=${value.join('=')}`)\n }\n\n return out.join('; ')\n}\n\nlet kHeadersListNode\n\nfunction getHeadersList (headers) {\n if (headers[kHeadersList]) {\n return headers[kHeadersList]\n }\n\n if (!kHeadersListNode) {\n kHeadersListNode = Object.getOwnPropertySymbols(headers).find(\n (symbol) => symbol.description === 'headers list'\n )\n\n assert(kHeadersListNode, 'Headers cannot be parsed')\n }\n\n const headersList = headers[kHeadersListNode]\n assert(headersList)\n\n return headersList\n}\n\nmodule.exports = {\n isCTLExcludingHtab,\n stringify,\n getHeadersList\n}\n","'use strict'\n\nconst net = require('net')\nconst assert = require('assert')\nconst util = require('./util')\nconst { InvalidArgumentError, ConnectTimeoutError } = require('./errors')\n\nlet tls // include tls conditionally since it is not always available\n\n// TODO: session re-use does not wait for the first\n// connection to resolve the session and might therefore\n// resolve the same servername multiple times even when\n// re-use is enabled.\n\nlet SessionCache\n// FIXME: remove workaround when the Node bug is fixed\n// https://github.com/nodejs/node/issues/49344#issuecomment-1741776308\nif (global.FinalizationRegistry && !process.env.NODE_V8_COVERAGE) {\n SessionCache = class WeakSessionCache {\n constructor (maxCachedSessions) {\n this._maxCachedSessions = maxCachedSessions\n this._sessionCache = new Map()\n this._sessionRegistry = new global.FinalizationRegistry((key) => {\n if (this._sessionCache.size < this._maxCachedSessions) {\n return\n }\n\n const ref = this._sessionCache.get(key)\n if (ref !== undefined && ref.deref() === undefined) {\n this._sessionCache.delete(key)\n }\n })\n }\n\n get (sessionKey) {\n const ref = this._sessionCache.get(sessionKey)\n return ref ? ref.deref() : null\n }\n\n set (sessionKey, session) {\n if (this._maxCachedSessions === 0) {\n return\n }\n\n this._sessionCache.set(sessionKey, new WeakRef(session))\n this._sessionRegistry.register(session, sessionKey)\n }\n }\n} else {\n SessionCache = class SimpleSessionCache {\n constructor (maxCachedSessions) {\n this._maxCachedSessions = maxCachedSessions\n this._sessionCache = new Map()\n }\n\n get (sessionKey) {\n return this._sessionCache.get(sessionKey)\n }\n\n set (sessionKey, session) {\n if (this._maxCachedSessions === 0) {\n return\n }\n\n if (this._sessionCache.size >= this._maxCachedSessions) {\n // remove the oldest session\n const { value: oldestKey } = this._sessionCache.keys().next()\n this._sessionCache.delete(oldestKey)\n }\n\n this._sessionCache.set(sessionKey, session)\n }\n }\n}\n\nfunction buildConnector ({ allowH2, maxCachedSessions, socketPath, timeout, ...opts }) {\n if (maxCachedSessions != null && (!Number.isInteger(maxCachedSessions) || maxCachedSessions < 0)) {\n throw new InvalidArgumentError('maxCachedSessions must be a positive integer or zero')\n }\n\n const options = { path: socketPath, ...opts }\n const sessionCache = new SessionCache(maxCachedSessions == null ? 100 : maxCachedSessions)\n timeout = timeout == null ? 10e3 : timeout\n allowH2 = allowH2 != null ? allowH2 : false\n return function connect ({ hostname, host, protocol, port, servername, localAddress, httpSocket }, callback) {\n let socket\n if (protocol === 'https:') {\n if (!tls) {\n tls = require('tls')\n }\n servername = servername || options.servername || util.getServerName(host) || null\n\n const sessionKey = servername || hostname\n const session = sessionCache.get(sessionKey) || null\n\n assert(sessionKey)\n\n socket = tls.connect({\n highWaterMark: 16384, // TLS in node can't have bigger HWM anyway...\n ...options,\n servername,\n session,\n localAddress,\n // TODO(HTTP/2): Add support for h2c\n ALPNProtocols: allowH2 ? ['http/1.1', 'h2'] : ['http/1.1'],\n socket: httpSocket, // upgrade socket connection\n port: port || 443,\n host: hostname\n })\n\n socket\n .on('session', function (session) {\n // TODO (fix): Can a session become invalid once established? Don't think so?\n sessionCache.set(sessionKey, session)\n })\n } else {\n assert(!httpSocket, 'httpSocket can only be sent on TLS update')\n socket = net.connect({\n highWaterMark: 64 * 1024, // Same as nodejs fs streams.\n ...options,\n localAddress,\n port: port || 80,\n host: hostname\n })\n }\n\n // Set TCP keep alive options on the socket here instead of in connect() for the case of assigning the socket\n if (options.keepAlive == null || options.keepAlive) {\n const keepAliveInitialDelay = options.keepAliveInitialDelay === undefined ? 60e3 : options.keepAliveInitialDelay\n socket.setKeepAlive(true, keepAliveInitialDelay)\n }\n\n const cancelTimeout = setupTimeout(() => onConnectTimeout(socket), timeout)\n\n socket\n .setNoDelay(true)\n .once(protocol === 'https:' ? 'secureConnect' : 'connect', function () {\n cancelTimeout()\n\n if (callback) {\n const cb = callback\n callback = null\n cb(null, this)\n }\n })\n .on('error', function (err) {\n cancelTimeout()\n\n if (callback) {\n const cb = callback\n callback = null\n cb(err)\n }\n })\n\n return socket\n }\n}\n\nfunction setupTimeout (onConnectTimeout, timeout) {\n if (!timeout) {\n return () => {}\n }\n\n let s1 = null\n let s2 = null\n const timeoutId = setTimeout(() => {\n // setImmediate is added to make sure that we priotorise socket error events over timeouts\n s1 = setImmediate(() => {\n if (process.platform === 'win32') {\n // Windows needs an extra setImmediate probably due to implementation differences in the socket logic\n s2 = setImmediate(() => onConnectTimeout())\n } else {\n onConnectTimeout()\n }\n })\n }, timeout)\n return () => {\n clearTimeout(timeoutId)\n clearImmediate(s1)\n clearImmediate(s2)\n }\n}\n\nfunction onConnectTimeout (socket) {\n util.destroy(socket, new ConnectTimeoutError())\n}\n\nmodule.exports = buildConnector\n","'use strict'\n\n/** @type {Record} */\nconst headerNameLowerCasedRecord = {}\n\n// https://developer.mozilla.org/docs/Web/HTTP/Headers\nconst wellknownHeaderNames = [\n 'Accept',\n 'Accept-Encoding',\n 'Accept-Language',\n 'Accept-Ranges',\n 'Access-Control-Allow-Credentials',\n 'Access-Control-Allow-Headers',\n 'Access-Control-Allow-Methods',\n 'Access-Control-Allow-Origin',\n 'Access-Control-Expose-Headers',\n 'Access-Control-Max-Age',\n 'Access-Control-Request-Headers',\n 'Access-Control-Request-Method',\n 'Age',\n 'Allow',\n 'Alt-Svc',\n 'Alt-Used',\n 'Authorization',\n 'Cache-Control',\n 'Clear-Site-Data',\n 'Connection',\n 'Content-Disposition',\n 'Content-Encoding',\n 'Content-Language',\n 'Content-Length',\n 'Content-Location',\n 'Content-Range',\n 'Content-Security-Policy',\n 'Content-Security-Policy-Report-Only',\n 'Content-Type',\n 'Cookie',\n 'Cross-Origin-Embedder-Policy',\n 'Cross-Origin-Opener-Policy',\n 'Cross-Origin-Resource-Policy',\n 'Date',\n 'Device-Memory',\n 'Downlink',\n 'ECT',\n 'ETag',\n 'Expect',\n 'Expect-CT',\n 'Expires',\n 'Forwarded',\n 'From',\n 'Host',\n 'If-Match',\n 'If-Modified-Since',\n 'If-None-Match',\n 'If-Range',\n 'If-Unmodified-Since',\n 'Keep-Alive',\n 'Last-Modified',\n 'Link',\n 'Location',\n 'Max-Forwards',\n 'Origin',\n 'Permissions-Policy',\n 'Pragma',\n 'Proxy-Authenticate',\n 'Proxy-Authorization',\n 'RTT',\n 'Range',\n 'Referer',\n 'Referrer-Policy',\n 'Refresh',\n 'Retry-After',\n 'Sec-WebSocket-Accept',\n 'Sec-WebSocket-Extensions',\n 'Sec-WebSocket-Key',\n 'Sec-WebSocket-Protocol',\n 'Sec-WebSocket-Version',\n 'Server',\n 'Server-Timing',\n 'Service-Worker-Allowed',\n 'Service-Worker-Navigation-Preload',\n 'Set-Cookie',\n 'SourceMap',\n 'Strict-Transport-Security',\n 'Supports-Loading-Mode',\n 'TE',\n 'Timing-Allow-Origin',\n 'Trailer',\n 'Transfer-Encoding',\n 'Upgrade',\n 'Upgrade-Insecure-Requests',\n 'User-Agent',\n 'Vary',\n 'Via',\n 'WWW-Authenticate',\n 'X-Content-Type-Options',\n 'X-DNS-Prefetch-Control',\n 'X-Frame-Options',\n 'X-Permitted-Cross-Domain-Policies',\n 'X-Powered-By',\n 'X-Requested-With',\n 'X-XSS-Protection'\n]\n\nfor (let i = 0; i < wellknownHeaderNames.length; ++i) {\n const key = wellknownHeaderNames[i]\n const lowerCasedKey = key.toLowerCase()\n headerNameLowerCasedRecord[key] = headerNameLowerCasedRecord[lowerCasedKey] =\n lowerCasedKey\n}\n\n// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.\nObject.setPrototypeOf(headerNameLowerCasedRecord, null)\n\nmodule.exports = {\n wellknownHeaderNames,\n headerNameLowerCasedRecord\n}\n","'use strict'\n\nclass UndiciError extends Error {\n constructor (message) {\n super(message)\n this.name = 'UndiciError'\n this.code = 'UND_ERR'\n }\n}\n\nclass ConnectTimeoutError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ConnectTimeoutError)\n this.name = 'ConnectTimeoutError'\n this.message = message || 'Connect Timeout Error'\n this.code = 'UND_ERR_CONNECT_TIMEOUT'\n }\n}\n\nclass HeadersTimeoutError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, HeadersTimeoutError)\n this.name = 'HeadersTimeoutError'\n this.message = message || 'Headers Timeout Error'\n this.code = 'UND_ERR_HEADERS_TIMEOUT'\n }\n}\n\nclass HeadersOverflowError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, HeadersOverflowError)\n this.name = 'HeadersOverflowError'\n this.message = message || 'Headers Overflow Error'\n this.code = 'UND_ERR_HEADERS_OVERFLOW'\n }\n}\n\nclass BodyTimeoutError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, BodyTimeoutError)\n this.name = 'BodyTimeoutError'\n this.message = message || 'Body Timeout Error'\n this.code = 'UND_ERR_BODY_TIMEOUT'\n }\n}\n\nclass ResponseStatusCodeError extends UndiciError {\n constructor (message, statusCode, headers, body) {\n super(message)\n Error.captureStackTrace(this, ResponseStatusCodeError)\n this.name = 'ResponseStatusCodeError'\n this.message = message || 'Response Status Code Error'\n this.code = 'UND_ERR_RESPONSE_STATUS_CODE'\n this.body = body\n this.status = statusCode\n this.statusCode = statusCode\n this.headers = headers\n }\n}\n\nclass InvalidArgumentError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, InvalidArgumentError)\n this.name = 'InvalidArgumentError'\n this.message = message || 'Invalid Argument Error'\n this.code = 'UND_ERR_INVALID_ARG'\n }\n}\n\nclass InvalidReturnValueError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, InvalidReturnValueError)\n this.name = 'InvalidReturnValueError'\n this.message = message || 'Invalid Return Value Error'\n this.code = 'UND_ERR_INVALID_RETURN_VALUE'\n }\n}\n\nclass RequestAbortedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, RequestAbortedError)\n this.name = 'AbortError'\n this.message = message || 'Request aborted'\n this.code = 'UND_ERR_ABORTED'\n }\n}\n\nclass InformationalError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, InformationalError)\n this.name = 'InformationalError'\n this.message = message || 'Request information'\n this.code = 'UND_ERR_INFO'\n }\n}\n\nclass RequestContentLengthMismatchError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, RequestContentLengthMismatchError)\n this.name = 'RequestContentLengthMismatchError'\n this.message = message || 'Request body length does not match content-length header'\n this.code = 'UND_ERR_REQ_CONTENT_LENGTH_MISMATCH'\n }\n}\n\nclass ResponseContentLengthMismatchError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ResponseContentLengthMismatchError)\n this.name = 'ResponseContentLengthMismatchError'\n this.message = message || 'Response body length does not match content-length header'\n this.code = 'UND_ERR_RES_CONTENT_LENGTH_MISMATCH'\n }\n}\n\nclass ClientDestroyedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ClientDestroyedError)\n this.name = 'ClientDestroyedError'\n this.message = message || 'The client is destroyed'\n this.code = 'UND_ERR_DESTROYED'\n }\n}\n\nclass ClientClosedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ClientClosedError)\n this.name = 'ClientClosedError'\n this.message = message || 'The client is closed'\n this.code = 'UND_ERR_CLOSED'\n }\n}\n\nclass SocketError extends UndiciError {\n constructor (message, socket) {\n super(message)\n Error.captureStackTrace(this, SocketError)\n this.name = 'SocketError'\n this.message = message || 'Socket error'\n this.code = 'UND_ERR_SOCKET'\n this.socket = socket\n }\n}\n\nclass NotSupportedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, NotSupportedError)\n this.name = 'NotSupportedError'\n this.message = message || 'Not supported error'\n this.code = 'UND_ERR_NOT_SUPPORTED'\n }\n}\n\nclass BalancedPoolMissingUpstreamError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, NotSupportedError)\n this.name = 'MissingUpstreamError'\n this.message = message || 'No upstream has been added to the BalancedPool'\n this.code = 'UND_ERR_BPL_MISSING_UPSTREAM'\n }\n}\n\nclass HTTPParserError extends Error {\n constructor (message, code, data) {\n super(message)\n Error.captureStackTrace(this, HTTPParserError)\n this.name = 'HTTPParserError'\n this.code = code ? `HPE_${code}` : undefined\n this.data = data ? data.toString() : undefined\n }\n}\n\nclass ResponseExceededMaxSizeError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, ResponseExceededMaxSizeError)\n this.name = 'ResponseExceededMaxSizeError'\n this.message = message || 'Response content exceeded max size'\n this.code = 'UND_ERR_RES_EXCEEDED_MAX_SIZE'\n }\n}\n\nclass RequestRetryError extends UndiciError {\n constructor (message, code, { headers, data }) {\n super(message)\n Error.captureStackTrace(this, RequestRetryError)\n this.name = 'RequestRetryError'\n this.message = message || 'Request retry error'\n this.code = 'UND_ERR_REQ_RETRY'\n this.statusCode = code\n this.data = data\n this.headers = headers\n }\n}\n\nmodule.exports = {\n HTTPParserError,\n UndiciError,\n HeadersTimeoutError,\n HeadersOverflowError,\n BodyTimeoutError,\n RequestContentLengthMismatchError,\n ConnectTimeoutError,\n ResponseStatusCodeError,\n InvalidArgumentError,\n InvalidReturnValueError,\n RequestAbortedError,\n ClientDestroyedError,\n ClientClosedError,\n InformationalError,\n SocketError,\n NotSupportedError,\n ResponseContentLengthMismatchError,\n BalancedPoolMissingUpstreamError,\n ResponseExceededMaxSizeError,\n RequestRetryError\n}\n","'use strict'\n\nconst {\n InvalidArgumentError,\n NotSupportedError\n} = require('./errors')\nconst assert = require('assert')\nconst { kHTTP2BuildRequest, kHTTP2CopyHeaders, kHTTP1BuildRequest } = require('./symbols')\nconst util = require('./util')\n\n// tokenRegExp and headerCharRegex have been lifted from\n// https://github.com/nodejs/node/blob/main/lib/_http_common.js\n\n/**\n * Verifies that the given val is a valid HTTP token\n * per the rules defined in RFC 7230\n * See https://tools.ietf.org/html/rfc7230#section-3.2.6\n */\nconst tokenRegExp = /^[\\^_`a-zA-Z\\-0-9!#$%&'*+.|~]+$/\n\n/**\n * Matches if val contains an invalid field-vchar\n * field-value = *( field-content / obs-fold )\n * field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]\n * field-vchar = VCHAR / obs-text\n */\nconst headerCharRegex = /[^\\t\\x20-\\x7e\\x80-\\xff]/\n\n// Verifies that a given path is valid does not contain control chars \\x00 to \\x20\nconst invalidPathRegex = /[^\\u0021-\\u00ff]/\n\nconst kHandler = Symbol('handler')\n\nconst channels = {}\n\nlet extractBody\n\ntry {\n const diagnosticsChannel = require('diagnostics_channel')\n channels.create = diagnosticsChannel.channel('undici:request:create')\n channels.bodySent = diagnosticsChannel.channel('undici:request:bodySent')\n channels.headers = diagnosticsChannel.channel('undici:request:headers')\n channels.trailers = diagnosticsChannel.channel('undici:request:trailers')\n channels.error = diagnosticsChannel.channel('undici:request:error')\n} catch {\n channels.create = { hasSubscribers: false }\n channels.bodySent = { hasSubscribers: false }\n channels.headers = { hasSubscribers: false }\n channels.trailers = { hasSubscribers: false }\n channels.error = { hasSubscribers: false }\n}\n\nclass Request {\n constructor (origin, {\n path,\n method,\n body,\n headers,\n query,\n idempotent,\n blocking,\n upgrade,\n headersTimeout,\n bodyTimeout,\n reset,\n throwOnError,\n expectContinue\n }, handler) {\n if (typeof path !== 'string') {\n throw new InvalidArgumentError('path must be a string')\n } else if (\n path[0] !== '/' &&\n !(path.startsWith('http://') || path.startsWith('https://')) &&\n method !== 'CONNECT'\n ) {\n throw new InvalidArgumentError('path must be an absolute URL or start with a slash')\n } else if (invalidPathRegex.exec(path) !== null) {\n throw new InvalidArgumentError('invalid request path')\n }\n\n if (typeof method !== 'string') {\n throw new InvalidArgumentError('method must be a string')\n } else if (tokenRegExp.exec(method) === null) {\n throw new InvalidArgumentError('invalid request method')\n }\n\n if (upgrade && typeof upgrade !== 'string') {\n throw new InvalidArgumentError('upgrade must be a string')\n }\n\n if (headersTimeout != null && (!Number.isFinite(headersTimeout) || headersTimeout < 0)) {\n throw new InvalidArgumentError('invalid headersTimeout')\n }\n\n if (bodyTimeout != null && (!Number.isFinite(bodyTimeout) || bodyTimeout < 0)) {\n throw new InvalidArgumentError('invalid bodyTimeout')\n }\n\n if (reset != null && typeof reset !== 'boolean') {\n throw new InvalidArgumentError('invalid reset')\n }\n\n if (expectContinue != null && typeof expectContinue !== 'boolean') {\n throw new InvalidArgumentError('invalid expectContinue')\n }\n\n this.headersTimeout = headersTimeout\n\n this.bodyTimeout = bodyTimeout\n\n this.throwOnError = throwOnError === true\n\n this.method = method\n\n this.abort = null\n\n if (body == null) {\n this.body = null\n } else if (util.isStream(body)) {\n this.body = body\n\n const rState = this.body._readableState\n if (!rState || !rState.autoDestroy) {\n this.endHandler = function autoDestroy () {\n util.destroy(this)\n }\n this.body.on('end', this.endHandler)\n }\n\n this.errorHandler = err => {\n if (this.abort) {\n this.abort(err)\n } else {\n this.error = err\n }\n }\n this.body.on('error', this.errorHandler)\n } else if (util.isBuffer(body)) {\n this.body = body.byteLength ? body : null\n } else if (ArrayBuffer.isView(body)) {\n this.body = body.buffer.byteLength ? Buffer.from(body.buffer, body.byteOffset, body.byteLength) : null\n } else if (body instanceof ArrayBuffer) {\n this.body = body.byteLength ? Buffer.from(body) : null\n } else if (typeof body === 'string') {\n this.body = body.length ? Buffer.from(body) : null\n } else if (util.isFormDataLike(body) || util.isIterable(body) || util.isBlobLike(body)) {\n this.body = body\n } else {\n throw new InvalidArgumentError('body must be a string, a Buffer, a Readable stream, an iterable, or an async iterable')\n }\n\n this.completed = false\n\n this.aborted = false\n\n this.upgrade = upgrade || null\n\n this.path = query ? util.buildURL(path, query) : path\n\n this.origin = origin\n\n this.idempotent = idempotent == null\n ? method === 'HEAD' || method === 'GET'\n : idempotent\n\n this.blocking = blocking == null ? false : blocking\n\n this.reset = reset == null ? null : reset\n\n this.host = null\n\n this.contentLength = null\n\n this.contentType = null\n\n this.headers = ''\n\n // Only for H2\n this.expectContinue = expectContinue != null ? expectContinue : false\n\n if (Array.isArray(headers)) {\n if (headers.length % 2 !== 0) {\n throw new InvalidArgumentError('headers array must be even')\n }\n for (let i = 0; i < headers.length; i += 2) {\n processHeader(this, headers[i], headers[i + 1])\n }\n } else if (headers && typeof headers === 'object') {\n const keys = Object.keys(headers)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n processHeader(this, key, headers[key])\n }\n } else if (headers != null) {\n throw new InvalidArgumentError('headers must be an object or an array')\n }\n\n if (util.isFormDataLike(this.body)) {\n if (util.nodeMajor < 16 || (util.nodeMajor === 16 && util.nodeMinor < 8)) {\n throw new InvalidArgumentError('Form-Data bodies are only supported in node v16.8 and newer.')\n }\n\n if (!extractBody) {\n extractBody = require('../fetch/body.js').extractBody\n }\n\n const [bodyStream, contentType] = extractBody(body)\n if (this.contentType == null) {\n this.contentType = contentType\n this.headers += `content-type: ${contentType}\\r\\n`\n }\n this.body = bodyStream.stream\n this.contentLength = bodyStream.length\n } else if (util.isBlobLike(body) && this.contentType == null && body.type) {\n this.contentType = body.type\n this.headers += `content-type: ${body.type}\\r\\n`\n }\n\n util.validateHandler(handler, method, upgrade)\n\n this.servername = util.getServerName(this.host)\n\n this[kHandler] = handler\n\n if (channels.create.hasSubscribers) {\n channels.create.publish({ request: this })\n }\n }\n\n onBodySent (chunk) {\n if (this[kHandler].onBodySent) {\n try {\n return this[kHandler].onBodySent(chunk)\n } catch (err) {\n this.abort(err)\n }\n }\n }\n\n onRequestSent () {\n if (channels.bodySent.hasSubscribers) {\n channels.bodySent.publish({ request: this })\n }\n\n if (this[kHandler].onRequestSent) {\n try {\n return this[kHandler].onRequestSent()\n } catch (err) {\n this.abort(err)\n }\n }\n }\n\n onConnect (abort) {\n assert(!this.aborted)\n assert(!this.completed)\n\n if (this.error) {\n abort(this.error)\n } else {\n this.abort = abort\n return this[kHandler].onConnect(abort)\n }\n }\n\n onHeaders (statusCode, headers, resume, statusText) {\n assert(!this.aborted)\n assert(!this.completed)\n\n if (channels.headers.hasSubscribers) {\n channels.headers.publish({ request: this, response: { statusCode, headers, statusText } })\n }\n\n try {\n return this[kHandler].onHeaders(statusCode, headers, resume, statusText)\n } catch (err) {\n this.abort(err)\n }\n }\n\n onData (chunk) {\n assert(!this.aborted)\n assert(!this.completed)\n\n try {\n return this[kHandler].onData(chunk)\n } catch (err) {\n this.abort(err)\n return false\n }\n }\n\n onUpgrade (statusCode, headers, socket) {\n assert(!this.aborted)\n assert(!this.completed)\n\n return this[kHandler].onUpgrade(statusCode, headers, socket)\n }\n\n onComplete (trailers) {\n this.onFinally()\n\n assert(!this.aborted)\n\n this.completed = true\n if (channels.trailers.hasSubscribers) {\n channels.trailers.publish({ request: this, trailers })\n }\n\n try {\n return this[kHandler].onComplete(trailers)\n } catch (err) {\n // TODO (fix): This might be a bad idea?\n this.onError(err)\n }\n }\n\n onError (error) {\n this.onFinally()\n\n if (channels.error.hasSubscribers) {\n channels.error.publish({ request: this, error })\n }\n\n if (this.aborted) {\n return\n }\n this.aborted = true\n\n return this[kHandler].onError(error)\n }\n\n onFinally () {\n if (this.errorHandler) {\n this.body.off('error', this.errorHandler)\n this.errorHandler = null\n }\n\n if (this.endHandler) {\n this.body.off('end', this.endHandler)\n this.endHandler = null\n }\n }\n\n // TODO: adjust to support H2\n addHeader (key, value) {\n processHeader(this, key, value)\n return this\n }\n\n static [kHTTP1BuildRequest] (origin, opts, handler) {\n // TODO: Migrate header parsing here, to make Requests\n // HTTP agnostic\n return new Request(origin, opts, handler)\n }\n\n static [kHTTP2BuildRequest] (origin, opts, handler) {\n const headers = opts.headers\n opts = { ...opts, headers: null }\n\n const request = new Request(origin, opts, handler)\n\n request.headers = {}\n\n if (Array.isArray(headers)) {\n if (headers.length % 2 !== 0) {\n throw new InvalidArgumentError('headers array must be even')\n }\n for (let i = 0; i < headers.length; i += 2) {\n processHeader(request, headers[i], headers[i + 1], true)\n }\n } else if (headers && typeof headers === 'object') {\n const keys = Object.keys(headers)\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i]\n processHeader(request, key, headers[key], true)\n }\n } else if (headers != null) {\n throw new InvalidArgumentError('headers must be an object or an array')\n }\n\n return request\n }\n\n static [kHTTP2CopyHeaders] (raw) {\n const rawHeaders = raw.split('\\r\\n')\n const headers = {}\n\n for (const header of rawHeaders) {\n const [key, value] = header.split(': ')\n\n if (value == null || value.length === 0) continue\n\n if (headers[key]) headers[key] += `,${value}`\n else headers[key] = value\n }\n\n return headers\n }\n}\n\nfunction processHeaderValue (key, val, skipAppend) {\n if (val && typeof val === 'object') {\n throw new InvalidArgumentError(`invalid ${key} header`)\n }\n\n val = val != null ? `${val}` : ''\n\n if (headerCharRegex.exec(val) !== null) {\n throw new InvalidArgumentError(`invalid ${key} header`)\n }\n\n return skipAppend ? val : `${key}: ${val}\\r\\n`\n}\n\nfunction processHeader (request, key, val, skipAppend = false) {\n if (val && (typeof val === 'object' && !Array.isArray(val))) {\n throw new InvalidArgumentError(`invalid ${key} header`)\n } else if (val === undefined) {\n return\n }\n\n if (\n request.host === null &&\n key.length === 4 &&\n key.toLowerCase() === 'host'\n ) {\n if (headerCharRegex.exec(val) !== null) {\n throw new InvalidArgumentError(`invalid ${key} header`)\n }\n // Consumed by Client\n request.host = val\n } else if (\n request.contentLength === null &&\n key.length === 14 &&\n key.toLowerCase() === 'content-length'\n ) {\n request.contentLength = parseInt(val, 10)\n if (!Number.isFinite(request.contentLength)) {\n throw new InvalidArgumentError('invalid content-length header')\n }\n } else if (\n request.contentType === null &&\n key.length === 12 &&\n key.toLowerCase() === 'content-type'\n ) {\n request.contentType = val\n if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend)\n else request.headers += processHeaderValue(key, val)\n } else if (\n key.length === 17 &&\n key.toLowerCase() === 'transfer-encoding'\n ) {\n throw new InvalidArgumentError('invalid transfer-encoding header')\n } else if (\n key.length === 10 &&\n key.toLowerCase() === 'connection'\n ) {\n const value = typeof val === 'string' ? val.toLowerCase() : null\n if (value !== 'close' && value !== 'keep-alive') {\n throw new InvalidArgumentError('invalid connection header')\n } else if (value === 'close') {\n request.reset = true\n }\n } else if (\n key.length === 10 &&\n key.toLowerCase() === 'keep-alive'\n ) {\n throw new InvalidArgumentError('invalid keep-alive header')\n } else if (\n key.length === 7 &&\n key.toLowerCase() === 'upgrade'\n ) {\n throw new InvalidArgumentError('invalid upgrade header')\n } else if (\n key.length === 6 &&\n key.toLowerCase() === 'expect'\n ) {\n throw new NotSupportedError('expect header not supported')\n } else if (tokenRegExp.exec(key) === null) {\n throw new InvalidArgumentError('invalid header key')\n } else {\n if (Array.isArray(val)) {\n for (let i = 0; i < val.length; i++) {\n if (skipAppend) {\n if (request.headers[key]) request.headers[key] += `,${processHeaderValue(key, val[i], skipAppend)}`\n else request.headers[key] = processHeaderValue(key, val[i], skipAppend)\n } else {\n request.headers += processHeaderValue(key, val[i])\n }\n }\n } else {\n if (skipAppend) request.headers[key] = processHeaderValue(key, val, skipAppend)\n else request.headers += processHeaderValue(key, val)\n }\n }\n}\n\nmodule.exports = Request\n","module.exports = {\n kClose: Symbol('close'),\n kDestroy: Symbol('destroy'),\n kDispatch: Symbol('dispatch'),\n kUrl: Symbol('url'),\n kWriting: Symbol('writing'),\n kResuming: Symbol('resuming'),\n kQueue: Symbol('queue'),\n kConnect: Symbol('connect'),\n kConnecting: Symbol('connecting'),\n kHeadersList: Symbol('headers list'),\n kKeepAliveDefaultTimeout: Symbol('default keep alive timeout'),\n kKeepAliveMaxTimeout: Symbol('max keep alive timeout'),\n kKeepAliveTimeoutThreshold: Symbol('keep alive timeout threshold'),\n kKeepAliveTimeoutValue: Symbol('keep alive timeout'),\n kKeepAlive: Symbol('keep alive'),\n kHeadersTimeout: Symbol('headers timeout'),\n kBodyTimeout: Symbol('body timeout'),\n kServerName: Symbol('server name'),\n kLocalAddress: Symbol('local address'),\n kHost: Symbol('host'),\n kNoRef: Symbol('no ref'),\n kBodyUsed: Symbol('used'),\n kRunning: Symbol('running'),\n kBlocking: Symbol('blocking'),\n kPending: Symbol('pending'),\n kSize: Symbol('size'),\n kBusy: Symbol('busy'),\n kQueued: Symbol('queued'),\n kFree: Symbol('free'),\n kConnected: Symbol('connected'),\n kClosed: Symbol('closed'),\n kNeedDrain: Symbol('need drain'),\n kReset: Symbol('reset'),\n kDestroyed: Symbol.for('nodejs.stream.destroyed'),\n kMaxHeadersSize: Symbol('max headers size'),\n kRunningIdx: Symbol('running index'),\n kPendingIdx: Symbol('pending index'),\n kError: Symbol('error'),\n kClients: Symbol('clients'),\n kClient: Symbol('client'),\n kParser: Symbol('parser'),\n kOnDestroyed: Symbol('destroy callbacks'),\n kPipelining: Symbol('pipelining'),\n kSocket: Symbol('socket'),\n kHostHeader: Symbol('host header'),\n kConnector: Symbol('connector'),\n kStrictContentLength: Symbol('strict content length'),\n kMaxRedirections: Symbol('maxRedirections'),\n kMaxRequests: Symbol('maxRequestsPerClient'),\n kProxy: Symbol('proxy agent options'),\n kCounter: Symbol('socket request counter'),\n kInterceptors: Symbol('dispatch interceptors'),\n kMaxResponseSize: Symbol('max response size'),\n kHTTP2Session: Symbol('http2Session'),\n kHTTP2SessionState: Symbol('http2Session state'),\n kHTTP2BuildRequest: Symbol('http2 build request'),\n kHTTP1BuildRequest: Symbol('http1 build request'),\n kHTTP2CopyHeaders: Symbol('http2 copy headers'),\n kHTTPConnVersion: Symbol('http connection version'),\n kRetryHandlerDefaultRetry: Symbol('retry agent default retry'),\n kConstruct: Symbol('constructable')\n}\n","'use strict'\n\nconst assert = require('assert')\nconst { kDestroyed, kBodyUsed } = require('./symbols')\nconst { IncomingMessage } = require('http')\nconst stream = require('stream')\nconst net = require('net')\nconst { InvalidArgumentError } = require('./errors')\nconst { Blob } = require('buffer')\nconst nodeUtil = require('util')\nconst { stringify } = require('querystring')\nconst { headerNameLowerCasedRecord } = require('./constants')\n\nconst [nodeMajor, nodeMinor] = process.versions.node.split('.').map(v => Number(v))\n\nfunction nop () {}\n\nfunction isStream (obj) {\n return obj && typeof obj === 'object' && typeof obj.pipe === 'function' && typeof obj.on === 'function'\n}\n\n// based on https://github.com/node-fetch/fetch-blob/blob/8ab587d34080de94140b54f07168451e7d0b655e/index.js#L229-L241 (MIT License)\nfunction isBlobLike (object) {\n return (Blob && object instanceof Blob) || (\n object &&\n typeof object === 'object' &&\n (typeof object.stream === 'function' ||\n typeof object.arrayBuffer === 'function') &&\n /^(Blob|File)$/.test(object[Symbol.toStringTag])\n )\n}\n\nfunction buildURL (url, queryParams) {\n if (url.includes('?') || url.includes('#')) {\n throw new Error('Query params cannot be passed when url already contains \"?\" or \"#\".')\n }\n\n const stringified = stringify(queryParams)\n\n if (stringified) {\n url += '?' + stringified\n }\n\n return url\n}\n\nfunction parseURL (url) {\n if (typeof url === 'string') {\n url = new URL(url)\n\n if (!/^https?:/.test(url.origin || url.protocol)) {\n throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')\n }\n\n return url\n }\n\n if (!url || typeof url !== 'object') {\n throw new InvalidArgumentError('Invalid URL: The URL argument must be a non-null object.')\n }\n\n if (!/^https?:/.test(url.origin || url.protocol)) {\n throw new InvalidArgumentError('Invalid URL protocol: the URL must start with `http:` or `https:`.')\n }\n\n if (!(url instanceof URL)) {\n if (url.port != null && url.port !== '' && !Number.isFinite(parseInt(url.port))) {\n throw new InvalidArgumentError('Invalid URL: port must be a valid integer or a string representation of an integer.')\n }\n\n if (url.path != null && typeof url.path !== 'string') {\n throw new InvalidArgumentError('Invalid URL path: the path must be a string or null/undefined.')\n }\n\n if (url.pathname != null && typeof url.pathname !== 'string') {\n throw new InvalidArgumentError('Invalid URL pathname: the pathname must be a string or null/undefined.')\n }\n\n if (url.hostname != null && typeof url.hostname !== 'string') {\n throw new InvalidArgumentError('Invalid URL hostname: the hostname must be a string or null/undefined.')\n }\n\n if (url.origin != null && typeof url.origin !== 'string') {\n throw new InvalidArgumentError('Invalid URL origin: the origin must be a string or null/undefined.')\n }\n\n const port = url.port != null\n ? url.port\n : (url.protocol === 'https:' ? 443 : 80)\n let origin = url.origin != null\n ? url.origin\n : `${url.protocol}//${url.hostname}:${port}`\n let path = url.path != null\n ? url.path\n : `${url.pathname || ''}${url.search || ''}`\n\n if (origin.endsWith('/')) {\n origin = origin.substring(0, origin.length - 1)\n }\n\n if (path && !path.startsWith('/')) {\n path = `/${path}`\n }\n // new URL(path, origin) is unsafe when `path` contains an absolute URL\n // From https://developer.mozilla.org/en-US/docs/Web/API/URL/URL:\n // If first parameter is a relative URL, second param is required, and will be used as the base URL.\n // If first parameter is an absolute URL, a given second param will be ignored.\n url = new URL(origin + path)\n }\n\n return url\n}\n\nfunction parseOrigin (url) {\n url = parseURL(url)\n\n if (url.pathname !== '/' || url.search || url.hash) {\n throw new InvalidArgumentError('invalid url')\n }\n\n return url\n}\n\nfunction getHostname (host) {\n if (host[0] === '[') {\n const idx = host.indexOf(']')\n\n assert(idx !== -1)\n return host.substring(1, idx)\n }\n\n const idx = host.indexOf(':')\n if (idx === -1) return host\n\n return host.substring(0, idx)\n}\n\n// IP addresses are not valid server names per RFC6066\n// > Currently, the only server names supported are DNS hostnames\nfunction getServerName (host) {\n if (!host) {\n return null\n }\n\n assert.strictEqual(typeof host, 'string')\n\n const servername = getHostname(host)\n if (net.isIP(servername)) {\n return ''\n }\n\n return servername\n}\n\nfunction deepClone (obj) {\n return JSON.parse(JSON.stringify(obj))\n}\n\nfunction isAsyncIterable (obj) {\n return !!(obj != null && typeof obj[Symbol.asyncIterator] === 'function')\n}\n\nfunction isIterable (obj) {\n return !!(obj != null && (typeof obj[Symbol.iterator] === 'function' || typeof obj[Symbol.asyncIterator] === 'function'))\n}\n\nfunction bodyLength (body) {\n if (body == null) {\n return 0\n } else if (isStream(body)) {\n const state = body._readableState\n return state && state.objectMode === false && state.ended === true && Number.isFinite(state.length)\n ? state.length\n : null\n } else if (isBlobLike(body)) {\n return body.size != null ? body.size : null\n } else if (isBuffer(body)) {\n return body.byteLength\n }\n\n return null\n}\n\nfunction isDestroyed (stream) {\n return !stream || !!(stream.destroyed || stream[kDestroyed])\n}\n\nfunction isReadableAborted (stream) {\n const state = stream && stream._readableState\n return isDestroyed(stream) && state && !state.endEmitted\n}\n\nfunction destroy (stream, err) {\n if (stream == null || !isStream(stream) || isDestroyed(stream)) {\n return\n }\n\n if (typeof stream.destroy === 'function') {\n if (Object.getPrototypeOf(stream).constructor === IncomingMessage) {\n // See: https://github.com/nodejs/node/pull/38505/files\n stream.socket = null\n }\n\n stream.destroy(err)\n } else if (err) {\n process.nextTick((stream, err) => {\n stream.emit('error', err)\n }, stream, err)\n }\n\n if (stream.destroyed !== true) {\n stream[kDestroyed] = true\n }\n}\n\nconst KEEPALIVE_TIMEOUT_EXPR = /timeout=(\\d+)/\nfunction parseKeepAliveTimeout (val) {\n const m = val.toString().match(KEEPALIVE_TIMEOUT_EXPR)\n return m ? parseInt(m[1], 10) * 1000 : null\n}\n\n/**\n * Retrieves a header name and returns its lowercase value.\n * @param {string | Buffer} value Header name\n * @returns {string}\n */\nfunction headerNameToString (value) {\n return headerNameLowerCasedRecord[value] || value.toLowerCase()\n}\n\nfunction parseHeaders (headers, obj = {}) {\n // For H2 support\n if (!Array.isArray(headers)) return headers\n\n for (let i = 0; i < headers.length; i += 2) {\n const key = headers[i].toString().toLowerCase()\n let val = obj[key]\n\n if (!val) {\n if (Array.isArray(headers[i + 1])) {\n obj[key] = headers[i + 1].map(x => x.toString('utf8'))\n } else {\n obj[key] = headers[i + 1].toString('utf8')\n }\n } else {\n if (!Array.isArray(val)) {\n val = [val]\n obj[key] = val\n }\n val.push(headers[i + 1].toString('utf8'))\n }\n }\n\n // See https://github.com/nodejs/node/pull/46528\n if ('content-length' in obj && 'content-disposition' in obj) {\n obj['content-disposition'] = Buffer.from(obj['content-disposition']).toString('latin1')\n }\n\n return obj\n}\n\nfunction parseRawHeaders (headers) {\n const ret = []\n let hasContentLength = false\n let contentDispositionIdx = -1\n\n for (let n = 0; n < headers.length; n += 2) {\n const key = headers[n + 0].toString()\n const val = headers[n + 1].toString('utf8')\n\n if (key.length === 14 && (key === 'content-length' || key.toLowerCase() === 'content-length')) {\n ret.push(key, val)\n hasContentLength = true\n } else if (key.length === 19 && (key === 'content-disposition' || key.toLowerCase() === 'content-disposition')) {\n contentDispositionIdx = ret.push(key, val) - 1\n } else {\n ret.push(key, val)\n }\n }\n\n // See https://github.com/nodejs/node/pull/46528\n if (hasContentLength && contentDispositionIdx !== -1) {\n ret[contentDispositionIdx] = Buffer.from(ret[contentDispositionIdx]).toString('latin1')\n }\n\n return ret\n}\n\nfunction isBuffer (buffer) {\n // See, https://github.com/mcollina/undici/pull/319\n return buffer instanceof Uint8Array || Buffer.isBuffer(buffer)\n}\n\nfunction validateHandler (handler, method, upgrade) {\n if (!handler || typeof handler !== 'object') {\n throw new InvalidArgumentError('handler must be an object')\n }\n\n if (typeof handler.onConnect !== 'function') {\n throw new InvalidArgumentError('invalid onConnect method')\n }\n\n if (typeof handler.onError !== 'function') {\n throw new InvalidArgumentError('invalid onError method')\n }\n\n if (typeof handler.onBodySent !== 'function' && handler.onBodySent !== undefined) {\n throw new InvalidArgumentError('invalid onBodySent method')\n }\n\n if (upgrade || method === 'CONNECT') {\n if (typeof handler.onUpgrade !== 'function') {\n throw new InvalidArgumentError('invalid onUpgrade method')\n }\n } else {\n if (typeof handler.onHeaders !== 'function') {\n throw new InvalidArgumentError('invalid onHeaders method')\n }\n\n if (typeof handler.onData !== 'function') {\n throw new InvalidArgumentError('invalid onData method')\n }\n\n if (typeof handler.onComplete !== 'function') {\n throw new InvalidArgumentError('invalid onComplete method')\n }\n }\n}\n\n// A body is disturbed if it has been read from and it cannot\n// be re-used without losing state or data.\nfunction isDisturbed (body) {\n return !!(body && (\n stream.isDisturbed\n ? stream.isDisturbed(body) || body[kBodyUsed] // TODO (fix): Why is body[kBodyUsed] needed?\n : body[kBodyUsed] ||\n body.readableDidRead ||\n (body._readableState && body._readableState.dataEmitted) ||\n isReadableAborted(body)\n ))\n}\n\nfunction isErrored (body) {\n return !!(body && (\n stream.isErrored\n ? stream.isErrored(body)\n : /state: 'errored'/.test(nodeUtil.inspect(body)\n )))\n}\n\nfunction isReadable (body) {\n return !!(body && (\n stream.isReadable\n ? stream.isReadable(body)\n : /state: 'readable'/.test(nodeUtil.inspect(body)\n )))\n}\n\nfunction getSocketInfo (socket) {\n return {\n localAddress: socket.localAddress,\n localPort: socket.localPort,\n remoteAddress: socket.remoteAddress,\n remotePort: socket.remotePort,\n remoteFamily: socket.remoteFamily,\n timeout: socket.timeout,\n bytesWritten: socket.bytesWritten,\n bytesRead: socket.bytesRead\n }\n}\n\nasync function * convertIterableToBuffer (iterable) {\n for await (const chunk of iterable) {\n yield Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk)\n }\n}\n\nlet ReadableStream\nfunction ReadableStreamFrom (iterable) {\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n if (ReadableStream.from) {\n return ReadableStream.from(convertIterableToBuffer(iterable))\n }\n\n let iterator\n return new ReadableStream(\n {\n async start () {\n iterator = iterable[Symbol.asyncIterator]()\n },\n async pull (controller) {\n const { done, value } = await iterator.next()\n if (done) {\n queueMicrotask(() => {\n controller.close()\n })\n } else {\n const buf = Buffer.isBuffer(value) ? value : Buffer.from(value)\n controller.enqueue(new Uint8Array(buf))\n }\n return controller.desiredSize > 0\n },\n async cancel (reason) {\n await iterator.return()\n }\n },\n 0\n )\n}\n\n// The chunk should be a FormData instance and contains\n// all the required methods.\nfunction isFormDataLike (object) {\n return (\n object &&\n typeof object === 'object' &&\n typeof object.append === 'function' &&\n typeof object.delete === 'function' &&\n typeof object.get === 'function' &&\n typeof object.getAll === 'function' &&\n typeof object.has === 'function' &&\n typeof object.set === 'function' &&\n object[Symbol.toStringTag] === 'FormData'\n )\n}\n\nfunction throwIfAborted (signal) {\n if (!signal) { return }\n if (typeof signal.throwIfAborted === 'function') {\n signal.throwIfAborted()\n } else {\n if (signal.aborted) {\n // DOMException not available < v17.0.0\n const err = new Error('The operation was aborted')\n err.name = 'AbortError'\n throw err\n }\n }\n}\n\nfunction addAbortListener (signal, listener) {\n if ('addEventListener' in signal) {\n signal.addEventListener('abort', listener, { once: true })\n return () => signal.removeEventListener('abort', listener)\n }\n signal.addListener('abort', listener)\n return () => signal.removeListener('abort', listener)\n}\n\nconst hasToWellFormed = !!String.prototype.toWellFormed\n\n/**\n * @param {string} val\n */\nfunction toUSVString (val) {\n if (hasToWellFormed) {\n return `${val}`.toWellFormed()\n } else if (nodeUtil.toUSVString) {\n return nodeUtil.toUSVString(val)\n }\n\n return `${val}`\n}\n\n// Parsed accordingly to RFC 9110\n// https://www.rfc-editor.org/rfc/rfc9110#field.content-range\nfunction parseRangeHeader (range) {\n if (range == null || range === '') return { start: 0, end: null, size: null }\n\n const m = range ? range.match(/^bytes (\\d+)-(\\d+)\\/(\\d+)?$/) : null\n return m\n ? {\n start: parseInt(m[1]),\n end: m[2] ? parseInt(m[2]) : null,\n size: m[3] ? parseInt(m[3]) : null\n }\n : null\n}\n\nconst kEnumerableProperty = Object.create(null)\nkEnumerableProperty.enumerable = true\n\nmodule.exports = {\n kEnumerableProperty,\n nop,\n isDisturbed,\n isErrored,\n isReadable,\n toUSVString,\n isReadableAborted,\n isBlobLike,\n parseOrigin,\n parseURL,\n getServerName,\n isStream,\n isIterable,\n isAsyncIterable,\n isDestroyed,\n headerNameToString,\n parseRawHeaders,\n parseHeaders,\n parseKeepAliveTimeout,\n destroy,\n bodyLength,\n deepClone,\n ReadableStreamFrom,\n isBuffer,\n validateHandler,\n getSocketInfo,\n isFormDataLike,\n buildURL,\n throwIfAborted,\n addAbortListener,\n parseRangeHeader,\n nodeMajor,\n nodeMinor,\n nodeHasAutoSelectFamily: nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 13),\n safeHTTPMethods: ['GET', 'HEAD', 'OPTIONS', 'TRACE']\n}\n","'use strict'\n\nconst Dispatcher = require('./dispatcher')\nconst {\n ClientDestroyedError,\n ClientClosedError,\n InvalidArgumentError\n} = require('./core/errors')\nconst { kDestroy, kClose, kDispatch, kInterceptors } = require('./core/symbols')\n\nconst kDestroyed = Symbol('destroyed')\nconst kClosed = Symbol('closed')\nconst kOnDestroyed = Symbol('onDestroyed')\nconst kOnClosed = Symbol('onClosed')\nconst kInterceptedDispatch = Symbol('Intercepted Dispatch')\n\nclass DispatcherBase extends Dispatcher {\n constructor () {\n super()\n\n this[kDestroyed] = false\n this[kOnDestroyed] = null\n this[kClosed] = false\n this[kOnClosed] = []\n }\n\n get destroyed () {\n return this[kDestroyed]\n }\n\n get closed () {\n return this[kClosed]\n }\n\n get interceptors () {\n return this[kInterceptors]\n }\n\n set interceptors (newInterceptors) {\n if (newInterceptors) {\n for (let i = newInterceptors.length - 1; i >= 0; i--) {\n const interceptor = this[kInterceptors][i]\n if (typeof interceptor !== 'function') {\n throw new InvalidArgumentError('interceptor must be an function')\n }\n }\n }\n\n this[kInterceptors] = newInterceptors\n }\n\n close (callback) {\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n this.close((err, data) => {\n return err ? reject(err) : resolve(data)\n })\n })\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (this[kDestroyed]) {\n queueMicrotask(() => callback(new ClientDestroyedError(), null))\n return\n }\n\n if (this[kClosed]) {\n if (this[kOnClosed]) {\n this[kOnClosed].push(callback)\n } else {\n queueMicrotask(() => callback(null, null))\n }\n return\n }\n\n this[kClosed] = true\n this[kOnClosed].push(callback)\n\n const onClosed = () => {\n const callbacks = this[kOnClosed]\n this[kOnClosed] = null\n for (let i = 0; i < callbacks.length; i++) {\n callbacks[i](null, null)\n }\n }\n\n // Should not error.\n this[kClose]()\n .then(() => this.destroy())\n .then(() => {\n queueMicrotask(onClosed)\n })\n }\n\n destroy (err, callback) {\n if (typeof err === 'function') {\n callback = err\n err = null\n }\n\n if (callback === undefined) {\n return new Promise((resolve, reject) => {\n this.destroy(err, (err, data) => {\n return err ? /* istanbul ignore next: should never error */ reject(err) : resolve(data)\n })\n })\n }\n\n if (typeof callback !== 'function') {\n throw new InvalidArgumentError('invalid callback')\n }\n\n if (this[kDestroyed]) {\n if (this[kOnDestroyed]) {\n this[kOnDestroyed].push(callback)\n } else {\n queueMicrotask(() => callback(null, null))\n }\n return\n }\n\n if (!err) {\n err = new ClientDestroyedError()\n }\n\n this[kDestroyed] = true\n this[kOnDestroyed] = this[kOnDestroyed] || []\n this[kOnDestroyed].push(callback)\n\n const onDestroyed = () => {\n const callbacks = this[kOnDestroyed]\n this[kOnDestroyed] = null\n for (let i = 0; i < callbacks.length; i++) {\n callbacks[i](null, null)\n }\n }\n\n // Should not error.\n this[kDestroy](err).then(() => {\n queueMicrotask(onDestroyed)\n })\n }\n\n [kInterceptedDispatch] (opts, handler) {\n if (!this[kInterceptors] || this[kInterceptors].length === 0) {\n this[kInterceptedDispatch] = this[kDispatch]\n return this[kDispatch](opts, handler)\n }\n\n let dispatch = this[kDispatch].bind(this)\n for (let i = this[kInterceptors].length - 1; i >= 0; i--) {\n dispatch = this[kInterceptors][i](dispatch)\n }\n this[kInterceptedDispatch] = dispatch\n return dispatch(opts, handler)\n }\n\n dispatch (opts, handler) {\n if (!handler || typeof handler !== 'object') {\n throw new InvalidArgumentError('handler must be an object')\n }\n\n try {\n if (!opts || typeof opts !== 'object') {\n throw new InvalidArgumentError('opts must be an object.')\n }\n\n if (this[kDestroyed] || this[kOnDestroyed]) {\n throw new ClientDestroyedError()\n }\n\n if (this[kClosed]) {\n throw new ClientClosedError()\n }\n\n return this[kInterceptedDispatch](opts, handler)\n } catch (err) {\n if (typeof handler.onError !== 'function') {\n throw new InvalidArgumentError('invalid onError method')\n }\n\n handler.onError(err)\n\n return false\n }\n }\n}\n\nmodule.exports = DispatcherBase\n","'use strict'\n\nconst EventEmitter = require('events')\n\nclass Dispatcher extends EventEmitter {\n dispatch () {\n throw new Error('not implemented')\n }\n\n close () {\n throw new Error('not implemented')\n }\n\n destroy () {\n throw new Error('not implemented')\n }\n}\n\nmodule.exports = Dispatcher\n","'use strict'\n\nconst Busboy = require('@fastify/busboy')\nconst util = require('../core/util')\nconst {\n ReadableStreamFrom,\n isBlobLike,\n isReadableStreamLike,\n readableStreamClose,\n createDeferredPromise,\n fullyReadBody\n} = require('./util')\nconst { FormData } = require('./formdata')\nconst { kState } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { DOMException, structuredClone } = require('./constants')\nconst { Blob, File: NativeFile } = require('buffer')\nconst { kBodyUsed } = require('../core/symbols')\nconst assert = require('assert')\nconst { isErrored } = require('../core/util')\nconst { isUint8Array, isArrayBuffer } = require('util/types')\nconst { File: UndiciFile } = require('./file')\nconst { parseMIMEType, serializeAMimeType } = require('./dataURL')\n\nlet ReadableStream = globalThis.ReadableStream\n\n/** @type {globalThis['File']} */\nconst File = NativeFile ?? UndiciFile\nconst textEncoder = new TextEncoder()\nconst textDecoder = new TextDecoder()\n\n// https://fetch.spec.whatwg.org/#concept-bodyinit-extract\nfunction extractBody (object, keepalive = false) {\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n // 1. Let stream be null.\n let stream = null\n\n // 2. If object is a ReadableStream object, then set stream to object.\n if (object instanceof ReadableStream) {\n stream = object\n } else if (isBlobLike(object)) {\n // 3. Otherwise, if object is a Blob object, set stream to the\n // result of running object’s get stream.\n stream = object.stream()\n } else {\n // 4. Otherwise, set stream to a new ReadableStream object, and set\n // up stream.\n stream = new ReadableStream({\n async pull (controller) {\n controller.enqueue(\n typeof source === 'string' ? textEncoder.encode(source) : source\n )\n queueMicrotask(() => readableStreamClose(controller))\n },\n start () {},\n type: undefined\n })\n }\n\n // 5. Assert: stream is a ReadableStream object.\n assert(isReadableStreamLike(stream))\n\n // 6. Let action be null.\n let action = null\n\n // 7. Let source be null.\n let source = null\n\n // 8. Let length be null.\n let length = null\n\n // 9. Let type be null.\n let type = null\n\n // 10. Switch on object:\n if (typeof object === 'string') {\n // Set source to the UTF-8 encoding of object.\n // Note: setting source to a Uint8Array here breaks some mocking assumptions.\n source = object\n\n // Set type to `text/plain;charset=UTF-8`.\n type = 'text/plain;charset=UTF-8'\n } else if (object instanceof URLSearchParams) {\n // URLSearchParams\n\n // spec says to run application/x-www-form-urlencoded on body.list\n // this is implemented in Node.js as apart of an URLSearchParams instance toString method\n // See: https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L490\n // and https://github.com/nodejs/node/blob/e46c680bf2b211bbd52cf959ca17ee98c7f657f5/lib/internal/url.js#L1100\n\n // Set source to the result of running the application/x-www-form-urlencoded serializer with object’s list.\n source = object.toString()\n\n // Set type to `application/x-www-form-urlencoded;charset=UTF-8`.\n type = 'application/x-www-form-urlencoded;charset=UTF-8'\n } else if (isArrayBuffer(object)) {\n // BufferSource/ArrayBuffer\n\n // Set source to a copy of the bytes held by object.\n source = new Uint8Array(object.slice())\n } else if (ArrayBuffer.isView(object)) {\n // BufferSource/ArrayBufferView\n\n // Set source to a copy of the bytes held by object.\n source = new Uint8Array(object.buffer.slice(object.byteOffset, object.byteOffset + object.byteLength))\n } else if (util.isFormDataLike(object)) {\n const boundary = `----formdata-undici-0${`${Math.floor(Math.random() * 1e11)}`.padStart(11, '0')}`\n const prefix = `--${boundary}\\r\\nContent-Disposition: form-data`\n\n /*! formdata-polyfill. MIT License. Jimmy Wärting */\n const escape = (str) =>\n str.replace(/\\n/g, '%0A').replace(/\\r/g, '%0D').replace(/\"/g, '%22')\n const normalizeLinefeeds = (value) => value.replace(/\\r?\\n|\\r/g, '\\r\\n')\n\n // Set action to this step: run the multipart/form-data\n // encoding algorithm, with object’s entry list and UTF-8.\n // - This ensures that the body is immutable and can't be changed afterwords\n // - That the content-length is calculated in advance.\n // - And that all parts are pre-encoded and ready to be sent.\n\n const blobParts = []\n const rn = new Uint8Array([13, 10]) // '\\r\\n'\n length = 0\n let hasUnknownSizeValue = false\n\n for (const [name, value] of object) {\n if (typeof value === 'string') {\n const chunk = textEncoder.encode(prefix +\n `; name=\"${escape(normalizeLinefeeds(name))}\"` +\n `\\r\\n\\r\\n${normalizeLinefeeds(value)}\\r\\n`)\n blobParts.push(chunk)\n length += chunk.byteLength\n } else {\n const chunk = textEncoder.encode(`${prefix}; name=\"${escape(normalizeLinefeeds(name))}\"` +\n (value.name ? `; filename=\"${escape(value.name)}\"` : '') + '\\r\\n' +\n `Content-Type: ${\n value.type || 'application/octet-stream'\n }\\r\\n\\r\\n`)\n blobParts.push(chunk, value, rn)\n if (typeof value.size === 'number') {\n length += chunk.byteLength + value.size + rn.byteLength\n } else {\n hasUnknownSizeValue = true\n }\n }\n }\n\n const chunk = textEncoder.encode(`--${boundary}--`)\n blobParts.push(chunk)\n length += chunk.byteLength\n if (hasUnknownSizeValue) {\n length = null\n }\n\n // Set source to object.\n source = object\n\n action = async function * () {\n for (const part of blobParts) {\n if (part.stream) {\n yield * part.stream()\n } else {\n yield part\n }\n }\n }\n\n // Set type to `multipart/form-data; boundary=`,\n // followed by the multipart/form-data boundary string generated\n // by the multipart/form-data encoding algorithm.\n type = 'multipart/form-data; boundary=' + boundary\n } else if (isBlobLike(object)) {\n // Blob\n\n // Set source to object.\n source = object\n\n // Set length to object’s size.\n length = object.size\n\n // If object’s type attribute is not the empty byte sequence, set\n // type to its value.\n if (object.type) {\n type = object.type\n }\n } else if (typeof object[Symbol.asyncIterator] === 'function') {\n // If keepalive is true, then throw a TypeError.\n if (keepalive) {\n throw new TypeError('keepalive')\n }\n\n // If object is disturbed or locked, then throw a TypeError.\n if (util.isDisturbed(object) || object.locked) {\n throw new TypeError(\n 'Response body object should not be disturbed or locked'\n )\n }\n\n stream =\n object instanceof ReadableStream ? object : ReadableStreamFrom(object)\n }\n\n // 11. If source is a byte sequence, then set action to a\n // step that returns source and length to source’s length.\n if (typeof source === 'string' || util.isBuffer(source)) {\n length = Buffer.byteLength(source)\n }\n\n // 12. If action is non-null, then run these steps in in parallel:\n if (action != null) {\n // Run action.\n let iterator\n stream = new ReadableStream({\n async start () {\n iterator = action(object)[Symbol.asyncIterator]()\n },\n async pull (controller) {\n const { value, done } = await iterator.next()\n if (done) {\n // When running action is done, close stream.\n queueMicrotask(() => {\n controller.close()\n })\n } else {\n // Whenever one or more bytes are available and stream is not errored,\n // enqueue a Uint8Array wrapping an ArrayBuffer containing the available\n // bytes into stream.\n if (!isErrored(stream)) {\n controller.enqueue(new Uint8Array(value))\n }\n }\n return controller.desiredSize > 0\n },\n async cancel (reason) {\n await iterator.return()\n },\n type: undefined\n })\n }\n\n // 13. Let body be a body whose stream is stream, source is source,\n // and length is length.\n const body = { stream, source, length }\n\n // 14. Return (body, type).\n return [body, type]\n}\n\n// https://fetch.spec.whatwg.org/#bodyinit-safely-extract\nfunction safelyExtractBody (object, keepalive = false) {\n if (!ReadableStream) {\n // istanbul ignore next\n ReadableStream = require('stream/web').ReadableStream\n }\n\n // To safely extract a body and a `Content-Type` value from\n // a byte sequence or BodyInit object object, run these steps:\n\n // 1. If object is a ReadableStream object, then:\n if (object instanceof ReadableStream) {\n // Assert: object is neither disturbed nor locked.\n // istanbul ignore next\n assert(!util.isDisturbed(object), 'The body has already been consumed.')\n // istanbul ignore next\n assert(!object.locked, 'The stream is locked.')\n }\n\n // 2. Return the results of extracting object.\n return extractBody(object, keepalive)\n}\n\nfunction cloneBody (body) {\n // To clone a body body, run these steps:\n\n // https://fetch.spec.whatwg.org/#concept-body-clone\n\n // 1. Let « out1, out2 » be the result of teeing body’s stream.\n const [out1, out2] = body.stream.tee()\n const out2Clone = structuredClone(out2, { transfer: [out2] })\n // This, for whatever reasons, unrefs out2Clone which allows\n // the process to exit by itself.\n const [, finalClone] = out2Clone.tee()\n\n // 2. Set body’s stream to out1.\n body.stream = out1\n\n // 3. Return a body whose stream is out2 and other members are copied from body.\n return {\n stream: finalClone,\n length: body.length,\n source: body.source\n }\n}\n\nasync function * consumeBody (body) {\n if (body) {\n if (isUint8Array(body)) {\n yield body\n } else {\n const stream = body.stream\n\n if (util.isDisturbed(stream)) {\n throw new TypeError('The body has already been consumed.')\n }\n\n if (stream.locked) {\n throw new TypeError('The stream is locked.')\n }\n\n // Compat.\n stream[kBodyUsed] = true\n\n yield * stream\n }\n }\n}\n\nfunction throwIfAborted (state) {\n if (state.aborted) {\n throw new DOMException('The operation was aborted.', 'AbortError')\n }\n}\n\nfunction bodyMixinMethods (instance) {\n const methods = {\n blob () {\n // The blob() method steps are to return the result of\n // running consume body with this and the following step\n // given a byte sequence bytes: return a Blob whose\n // contents are bytes and whose type attribute is this’s\n // MIME type.\n return specConsumeBody(this, (bytes) => {\n let mimeType = bodyMimeType(this)\n\n if (mimeType === 'failure') {\n mimeType = ''\n } else if (mimeType) {\n mimeType = serializeAMimeType(mimeType)\n }\n\n // Return a Blob whose contents are bytes and type attribute\n // is mimeType.\n return new Blob([bytes], { type: mimeType })\n }, instance)\n },\n\n arrayBuffer () {\n // The arrayBuffer() method steps are to return the result\n // of running consume body with this and the following step\n // given a byte sequence bytes: return a new ArrayBuffer\n // whose contents are bytes.\n return specConsumeBody(this, (bytes) => {\n return new Uint8Array(bytes).buffer\n }, instance)\n },\n\n text () {\n // The text() method steps are to return the result of running\n // consume body with this and UTF-8 decode.\n return specConsumeBody(this, utf8DecodeBytes, instance)\n },\n\n json () {\n // The json() method steps are to return the result of running\n // consume body with this and parse JSON from bytes.\n return specConsumeBody(this, parseJSONFromBytes, instance)\n },\n\n async formData () {\n webidl.brandCheck(this, instance)\n\n throwIfAborted(this[kState])\n\n const contentType = this.headers.get('Content-Type')\n\n // If mimeType’s essence is \"multipart/form-data\", then:\n if (/multipart\\/form-data/.test(contentType)) {\n const headers = {}\n for (const [key, value] of this.headers) headers[key.toLowerCase()] = value\n\n const responseFormData = new FormData()\n\n let busboy\n\n try {\n busboy = new Busboy({\n headers,\n preservePath: true\n })\n } catch (err) {\n throw new DOMException(`${err}`, 'AbortError')\n }\n\n busboy.on('field', (name, value) => {\n responseFormData.append(name, value)\n })\n busboy.on('file', (name, value, filename, encoding, mimeType) => {\n const chunks = []\n\n if (encoding === 'base64' || encoding.toLowerCase() === 'base64') {\n let base64chunk = ''\n\n value.on('data', (chunk) => {\n base64chunk += chunk.toString().replace(/[\\r\\n]/gm, '')\n\n const end = base64chunk.length - base64chunk.length % 4\n chunks.push(Buffer.from(base64chunk.slice(0, end), 'base64'))\n\n base64chunk = base64chunk.slice(end)\n })\n value.on('end', () => {\n chunks.push(Buffer.from(base64chunk, 'base64'))\n responseFormData.append(name, new File(chunks, filename, { type: mimeType }))\n })\n } else {\n value.on('data', (chunk) => {\n chunks.push(chunk)\n })\n value.on('end', () => {\n responseFormData.append(name, new File(chunks, filename, { type: mimeType }))\n })\n }\n })\n\n const busboyResolve = new Promise((resolve, reject) => {\n busboy.on('finish', resolve)\n busboy.on('error', (err) => reject(new TypeError(err)))\n })\n\n if (this.body !== null) for await (const chunk of consumeBody(this[kState].body)) busboy.write(chunk)\n busboy.end()\n await busboyResolve\n\n return responseFormData\n } else if (/application\\/x-www-form-urlencoded/.test(contentType)) {\n // Otherwise, if mimeType’s essence is \"application/x-www-form-urlencoded\", then:\n\n // 1. Let entries be the result of parsing bytes.\n let entries\n try {\n let text = ''\n // application/x-www-form-urlencoded parser will keep the BOM.\n // https://url.spec.whatwg.org/#concept-urlencoded-parser\n // Note that streaming decoder is stateful and cannot be reused\n const streamingDecoder = new TextDecoder('utf-8', { ignoreBOM: true })\n\n for await (const chunk of consumeBody(this[kState].body)) {\n if (!isUint8Array(chunk)) {\n throw new TypeError('Expected Uint8Array chunk')\n }\n text += streamingDecoder.decode(chunk, { stream: true })\n }\n text += streamingDecoder.decode()\n entries = new URLSearchParams(text)\n } catch (err) {\n // istanbul ignore next: Unclear when new URLSearchParams can fail on a string.\n // 2. If entries is failure, then throw a TypeError.\n throw Object.assign(new TypeError(), { cause: err })\n }\n\n // 3. Return a new FormData object whose entries are entries.\n const formData = new FormData()\n for (const [name, value] of entries) {\n formData.append(name, value)\n }\n return formData\n } else {\n // Wait a tick before checking if the request has been aborted.\n // Otherwise, a TypeError can be thrown when an AbortError should.\n await Promise.resolve()\n\n throwIfAborted(this[kState])\n\n // Otherwise, throw a TypeError.\n throw webidl.errors.exception({\n header: `${instance.name}.formData`,\n message: 'Could not parse content as FormData.'\n })\n }\n }\n }\n\n return methods\n}\n\nfunction mixinBody (prototype) {\n Object.assign(prototype.prototype, bodyMixinMethods(prototype))\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-body-consume-body\n * @param {Response|Request} object\n * @param {(value: unknown) => unknown} convertBytesToJSValue\n * @param {Response|Request} instance\n */\nasync function specConsumeBody (object, convertBytesToJSValue, instance) {\n webidl.brandCheck(object, instance)\n\n throwIfAborted(object[kState])\n\n // 1. If object is unusable, then return a promise rejected\n // with a TypeError.\n if (bodyUnusable(object[kState].body)) {\n throw new TypeError('Body is unusable')\n }\n\n // 2. Let promise be a new promise.\n const promise = createDeferredPromise()\n\n // 3. Let errorSteps given error be to reject promise with error.\n const errorSteps = (error) => promise.reject(error)\n\n // 4. Let successSteps given a byte sequence data be to resolve\n // promise with the result of running convertBytesToJSValue\n // with data. If that threw an exception, then run errorSteps\n // with that exception.\n const successSteps = (data) => {\n try {\n promise.resolve(convertBytesToJSValue(data))\n } catch (e) {\n errorSteps(e)\n }\n }\n\n // 5. If object’s body is null, then run successSteps with an\n // empty byte sequence.\n if (object[kState].body == null) {\n successSteps(new Uint8Array())\n return promise.promise\n }\n\n // 6. Otherwise, fully read object’s body given successSteps,\n // errorSteps, and object’s relevant global object.\n await fullyReadBody(object[kState].body, successSteps, errorSteps)\n\n // 7. Return promise.\n return promise.promise\n}\n\n// https://fetch.spec.whatwg.org/#body-unusable\nfunction bodyUnusable (body) {\n // An object including the Body interface mixin is\n // said to be unusable if its body is non-null and\n // its body’s stream is disturbed or locked.\n return body != null && (body.stream.locked || util.isDisturbed(body.stream))\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#utf-8-decode\n * @param {Buffer} buffer\n */\nfunction utf8DecodeBytes (buffer) {\n if (buffer.length === 0) {\n return ''\n }\n\n // 1. Let buffer be the result of peeking three bytes from\n // ioQueue, converted to a byte sequence.\n\n // 2. If buffer is 0xEF 0xBB 0xBF, then read three\n // bytes from ioQueue. (Do nothing with those bytes.)\n if (buffer[0] === 0xEF && buffer[1] === 0xBB && buffer[2] === 0xBF) {\n buffer = buffer.subarray(3)\n }\n\n // 3. Process a queue with an instance of UTF-8’s\n // decoder, ioQueue, output, and \"replacement\".\n const output = textDecoder.decode(buffer)\n\n // 4. Return output.\n return output\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#parse-json-bytes-to-a-javascript-value\n * @param {Uint8Array} bytes\n */\nfunction parseJSONFromBytes (bytes) {\n return JSON.parse(utf8DecodeBytes(bytes))\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-body-mime-type\n * @param {import('./response').Response|import('./request').Request} object\n */\nfunction bodyMimeType (object) {\n const { headersList } = object[kState]\n const contentType = headersList.get('content-type')\n\n if (contentType === null) {\n return 'failure'\n }\n\n return parseMIMEType(contentType)\n}\n\nmodule.exports = {\n extractBody,\n safelyExtractBody,\n cloneBody,\n mixinBody\n}\n","'use strict'\n\nconst { MessageChannel, receiveMessageOnPort } = require('worker_threads')\n\nconst corsSafeListedMethods = ['GET', 'HEAD', 'POST']\nconst corsSafeListedMethodsSet = new Set(corsSafeListedMethods)\n\nconst nullBodyStatus = [101, 204, 205, 304]\n\nconst redirectStatus = [301, 302, 303, 307, 308]\nconst redirectStatusSet = new Set(redirectStatus)\n\n// https://fetch.spec.whatwg.org/#block-bad-port\nconst badPorts = [\n '1', '7', '9', '11', '13', '15', '17', '19', '20', '21', '22', '23', '25', '37', '42', '43', '53', '69', '77', '79',\n '87', '95', '101', '102', '103', '104', '109', '110', '111', '113', '115', '117', '119', '123', '135', '137',\n '139', '143', '161', '179', '389', '427', '465', '512', '513', '514', '515', '526', '530', '531', '532',\n '540', '548', '554', '556', '563', '587', '601', '636', '989', '990', '993', '995', '1719', '1720', '1723',\n '2049', '3659', '4045', '5060', '5061', '6000', '6566', '6665', '6666', '6667', '6668', '6669', '6697',\n '10080'\n]\n\nconst badPortsSet = new Set(badPorts)\n\n// https://w3c.github.io/webappsec-referrer-policy/#referrer-policies\nconst referrerPolicy = [\n '',\n 'no-referrer',\n 'no-referrer-when-downgrade',\n 'same-origin',\n 'origin',\n 'strict-origin',\n 'origin-when-cross-origin',\n 'strict-origin-when-cross-origin',\n 'unsafe-url'\n]\nconst referrerPolicySet = new Set(referrerPolicy)\n\nconst requestRedirect = ['follow', 'manual', 'error']\n\nconst safeMethods = ['GET', 'HEAD', 'OPTIONS', 'TRACE']\nconst safeMethodsSet = new Set(safeMethods)\n\nconst requestMode = ['navigate', 'same-origin', 'no-cors', 'cors']\n\nconst requestCredentials = ['omit', 'same-origin', 'include']\n\nconst requestCache = [\n 'default',\n 'no-store',\n 'reload',\n 'no-cache',\n 'force-cache',\n 'only-if-cached'\n]\n\n// https://fetch.spec.whatwg.org/#request-body-header-name\nconst requestBodyHeader = [\n 'content-encoding',\n 'content-language',\n 'content-location',\n 'content-type',\n // See https://github.com/nodejs/undici/issues/2021\n // 'Content-Length' is a forbidden header name, which is typically\n // removed in the Headers implementation. However, undici doesn't\n // filter out headers, so we add it here.\n 'content-length'\n]\n\n// https://fetch.spec.whatwg.org/#enumdef-requestduplex\nconst requestDuplex = [\n 'half'\n]\n\n// http://fetch.spec.whatwg.org/#forbidden-method\nconst forbiddenMethods = ['CONNECT', 'TRACE', 'TRACK']\nconst forbiddenMethodsSet = new Set(forbiddenMethods)\n\nconst subresource = [\n 'audio',\n 'audioworklet',\n 'font',\n 'image',\n 'manifest',\n 'paintworklet',\n 'script',\n 'style',\n 'track',\n 'video',\n 'xslt',\n ''\n]\nconst subresourceSet = new Set(subresource)\n\n/** @type {globalThis['DOMException']} */\nconst DOMException = globalThis.DOMException ?? (() => {\n // DOMException was only made a global in Node v17.0.0,\n // but fetch supports >= v16.8.\n try {\n atob('~')\n } catch (err) {\n return Object.getPrototypeOf(err).constructor\n }\n})()\n\nlet channel\n\n/** @type {globalThis['structuredClone']} */\nconst structuredClone =\n globalThis.structuredClone ??\n // https://github.com/nodejs/node/blob/b27ae24dcc4251bad726d9d84baf678d1f707fed/lib/internal/structured_clone.js\n // structuredClone was added in v17.0.0, but fetch supports v16.8\n function structuredClone (value, options = undefined) {\n if (arguments.length === 0) {\n throw new TypeError('missing argument')\n }\n\n if (!channel) {\n channel = new MessageChannel()\n }\n channel.port1.unref()\n channel.port2.unref()\n channel.port1.postMessage(value, options?.transfer)\n return receiveMessageOnPort(channel.port2).message\n }\n\nmodule.exports = {\n DOMException,\n structuredClone,\n subresource,\n forbiddenMethods,\n requestBodyHeader,\n referrerPolicy,\n requestRedirect,\n requestMode,\n requestCredentials,\n requestCache,\n redirectStatus,\n corsSafeListedMethods,\n nullBodyStatus,\n safeMethods,\n badPorts,\n requestDuplex,\n subresourceSet,\n badPortsSet,\n redirectStatusSet,\n corsSafeListedMethodsSet,\n safeMethodsSet,\n forbiddenMethodsSet,\n referrerPolicySet\n}\n","const assert = require('assert')\nconst { atob } = require('buffer')\nconst { isomorphicDecode } = require('./util')\n\nconst encoder = new TextEncoder()\n\n/**\n * @see https://mimesniff.spec.whatwg.org/#http-token-code-point\n */\nconst HTTP_TOKEN_CODEPOINTS = /^[!#$%&'*+-.^_|~A-Za-z0-9]+$/\nconst HTTP_WHITESPACE_REGEX = /(\\u000A|\\u000D|\\u0009|\\u0020)/ // eslint-disable-line\n/**\n * @see https://mimesniff.spec.whatwg.org/#http-quoted-string-token-code-point\n */\nconst HTTP_QUOTED_STRING_TOKENS = /[\\u0009|\\u0020-\\u007E|\\u0080-\\u00FF]/ // eslint-disable-line\n\n// https://fetch.spec.whatwg.org/#data-url-processor\n/** @param {URL} dataURL */\nfunction dataURLProcessor (dataURL) {\n // 1. Assert: dataURL’s scheme is \"data\".\n assert(dataURL.protocol === 'data:')\n\n // 2. Let input be the result of running the URL\n // serializer on dataURL with exclude fragment\n // set to true.\n let input = URLSerializer(dataURL, true)\n\n // 3. Remove the leading \"data:\" string from input.\n input = input.slice(5)\n\n // 4. Let position point at the start of input.\n const position = { position: 0 }\n\n // 5. Let mimeType be the result of collecting a\n // sequence of code points that are not equal\n // to U+002C (,), given position.\n let mimeType = collectASequenceOfCodePointsFast(\n ',',\n input,\n position\n )\n\n // 6. Strip leading and trailing ASCII whitespace\n // from mimeType.\n // Undici implementation note: we need to store the\n // length because if the mimetype has spaces removed,\n // the wrong amount will be sliced from the input in\n // step #9\n const mimeTypeLength = mimeType.length\n mimeType = removeASCIIWhitespace(mimeType, true, true)\n\n // 7. If position is past the end of input, then\n // return failure\n if (position.position >= input.length) {\n return 'failure'\n }\n\n // 8. Advance position by 1.\n position.position++\n\n // 9. Let encodedBody be the remainder of input.\n const encodedBody = input.slice(mimeTypeLength + 1)\n\n // 10. Let body be the percent-decoding of encodedBody.\n let body = stringPercentDecode(encodedBody)\n\n // 11. If mimeType ends with U+003B (;), followed by\n // zero or more U+0020 SPACE, followed by an ASCII\n // case-insensitive match for \"base64\", then:\n if (/;(\\u0020){0,}base64$/i.test(mimeType)) {\n // 1. Let stringBody be the isomorphic decode of body.\n const stringBody = isomorphicDecode(body)\n\n // 2. Set body to the forgiving-base64 decode of\n // stringBody.\n body = forgivingBase64(stringBody)\n\n // 3. If body is failure, then return failure.\n if (body === 'failure') {\n return 'failure'\n }\n\n // 4. Remove the last 6 code points from mimeType.\n mimeType = mimeType.slice(0, -6)\n\n // 5. Remove trailing U+0020 SPACE code points from mimeType,\n // if any.\n mimeType = mimeType.replace(/(\\u0020)+$/, '')\n\n // 6. Remove the last U+003B (;) code point from mimeType.\n mimeType = mimeType.slice(0, -1)\n }\n\n // 12. If mimeType starts with U+003B (;), then prepend\n // \"text/plain\" to mimeType.\n if (mimeType.startsWith(';')) {\n mimeType = 'text/plain' + mimeType\n }\n\n // 13. Let mimeTypeRecord be the result of parsing\n // mimeType.\n let mimeTypeRecord = parseMIMEType(mimeType)\n\n // 14. If mimeTypeRecord is failure, then set\n // mimeTypeRecord to text/plain;charset=US-ASCII.\n if (mimeTypeRecord === 'failure') {\n mimeTypeRecord = parseMIMEType('text/plain;charset=US-ASCII')\n }\n\n // 15. Return a new data: URL struct whose MIME\n // type is mimeTypeRecord and body is body.\n // https://fetch.spec.whatwg.org/#data-url-struct\n return { mimeType: mimeTypeRecord, body }\n}\n\n// https://url.spec.whatwg.org/#concept-url-serializer\n/**\n * @param {URL} url\n * @param {boolean} excludeFragment\n */\nfunction URLSerializer (url, excludeFragment = false) {\n if (!excludeFragment) {\n return url.href\n }\n\n const href = url.href\n const hashLength = url.hash.length\n\n return hashLength === 0 ? href : href.substring(0, href.length - hashLength)\n}\n\n// https://infra.spec.whatwg.org/#collect-a-sequence-of-code-points\n/**\n * @param {(char: string) => boolean} condition\n * @param {string} input\n * @param {{ position: number }} position\n */\nfunction collectASequenceOfCodePoints (condition, input, position) {\n // 1. Let result be the empty string.\n let result = ''\n\n // 2. While position doesn’t point past the end of input and the\n // code point at position within input meets the condition condition:\n while (position.position < input.length && condition(input[position.position])) {\n // 1. Append that code point to the end of result.\n result += input[position.position]\n\n // 2. Advance position by 1.\n position.position++\n }\n\n // 3. Return result.\n return result\n}\n\n/**\n * A faster collectASequenceOfCodePoints that only works when comparing a single character.\n * @param {string} char\n * @param {string} input\n * @param {{ position: number }} position\n */\nfunction collectASequenceOfCodePointsFast (char, input, position) {\n const idx = input.indexOf(char, position.position)\n const start = position.position\n\n if (idx === -1) {\n position.position = input.length\n return input.slice(start)\n }\n\n position.position = idx\n return input.slice(start, position.position)\n}\n\n// https://url.spec.whatwg.org/#string-percent-decode\n/** @param {string} input */\nfunction stringPercentDecode (input) {\n // 1. Let bytes be the UTF-8 encoding of input.\n const bytes = encoder.encode(input)\n\n // 2. Return the percent-decoding of bytes.\n return percentDecode(bytes)\n}\n\n// https://url.spec.whatwg.org/#percent-decode\n/** @param {Uint8Array} input */\nfunction percentDecode (input) {\n // 1. Let output be an empty byte sequence.\n /** @type {number[]} */\n const output = []\n\n // 2. For each byte byte in input:\n for (let i = 0; i < input.length; i++) {\n const byte = input[i]\n\n // 1. If byte is not 0x25 (%), then append byte to output.\n if (byte !== 0x25) {\n output.push(byte)\n\n // 2. Otherwise, if byte is 0x25 (%) and the next two bytes\n // after byte in input are not in the ranges\n // 0x30 (0) to 0x39 (9), 0x41 (A) to 0x46 (F),\n // and 0x61 (a) to 0x66 (f), all inclusive, append byte\n // to output.\n } else if (\n byte === 0x25 &&\n !/^[0-9A-Fa-f]{2}$/i.test(String.fromCharCode(input[i + 1], input[i + 2]))\n ) {\n output.push(0x25)\n\n // 3. Otherwise:\n } else {\n // 1. Let bytePoint be the two bytes after byte in input,\n // decoded, and then interpreted as hexadecimal number.\n const nextTwoBytes = String.fromCharCode(input[i + 1], input[i + 2])\n const bytePoint = Number.parseInt(nextTwoBytes, 16)\n\n // 2. Append a byte whose value is bytePoint to output.\n output.push(bytePoint)\n\n // 3. Skip the next two bytes in input.\n i += 2\n }\n }\n\n // 3. Return output.\n return Uint8Array.from(output)\n}\n\n// https://mimesniff.spec.whatwg.org/#parse-a-mime-type\n/** @param {string} input */\nfunction parseMIMEType (input) {\n // 1. Remove any leading and trailing HTTP whitespace\n // from input.\n input = removeHTTPWhitespace(input, true, true)\n\n // 2. Let position be a position variable for input,\n // initially pointing at the start of input.\n const position = { position: 0 }\n\n // 3. Let type be the result of collecting a sequence\n // of code points that are not U+002F (/) from\n // input, given position.\n const type = collectASequenceOfCodePointsFast(\n '/',\n input,\n position\n )\n\n // 4. If type is the empty string or does not solely\n // contain HTTP token code points, then return failure.\n // https://mimesniff.spec.whatwg.org/#http-token-code-point\n if (type.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(type)) {\n return 'failure'\n }\n\n // 5. If position is past the end of input, then return\n // failure\n if (position.position > input.length) {\n return 'failure'\n }\n\n // 6. Advance position by 1. (This skips past U+002F (/).)\n position.position++\n\n // 7. Let subtype be the result of collecting a sequence of\n // code points that are not U+003B (;) from input, given\n // position.\n let subtype = collectASequenceOfCodePointsFast(\n ';',\n input,\n position\n )\n\n // 8. Remove any trailing HTTP whitespace from subtype.\n subtype = removeHTTPWhitespace(subtype, false, true)\n\n // 9. If subtype is the empty string or does not solely\n // contain HTTP token code points, then return failure.\n if (subtype.length === 0 || !HTTP_TOKEN_CODEPOINTS.test(subtype)) {\n return 'failure'\n }\n\n const typeLowercase = type.toLowerCase()\n const subtypeLowercase = subtype.toLowerCase()\n\n // 10. Let mimeType be a new MIME type record whose type\n // is type, in ASCII lowercase, and subtype is subtype,\n // in ASCII lowercase.\n // https://mimesniff.spec.whatwg.org/#mime-type\n const mimeType = {\n type: typeLowercase,\n subtype: subtypeLowercase,\n /** @type {Map} */\n parameters: new Map(),\n // https://mimesniff.spec.whatwg.org/#mime-type-essence\n essence: `${typeLowercase}/${subtypeLowercase}`\n }\n\n // 11. While position is not past the end of input:\n while (position.position < input.length) {\n // 1. Advance position by 1. (This skips past U+003B (;).)\n position.position++\n\n // 2. Collect a sequence of code points that are HTTP\n // whitespace from input given position.\n collectASequenceOfCodePoints(\n // https://fetch.spec.whatwg.org/#http-whitespace\n char => HTTP_WHITESPACE_REGEX.test(char),\n input,\n position\n )\n\n // 3. Let parameterName be the result of collecting a\n // sequence of code points that are not U+003B (;)\n // or U+003D (=) from input, given position.\n let parameterName = collectASequenceOfCodePoints(\n (char) => char !== ';' && char !== '=',\n input,\n position\n )\n\n // 4. Set parameterName to parameterName, in ASCII\n // lowercase.\n parameterName = parameterName.toLowerCase()\n\n // 5. If position is not past the end of input, then:\n if (position.position < input.length) {\n // 1. If the code point at position within input is\n // U+003B (;), then continue.\n if (input[position.position] === ';') {\n continue\n }\n\n // 2. Advance position by 1. (This skips past U+003D (=).)\n position.position++\n }\n\n // 6. If position is past the end of input, then break.\n if (position.position > input.length) {\n break\n }\n\n // 7. Let parameterValue be null.\n let parameterValue = null\n\n // 8. If the code point at position within input is\n // U+0022 (\"), then:\n if (input[position.position] === '\"') {\n // 1. Set parameterValue to the result of collecting\n // an HTTP quoted string from input, given position\n // and the extract-value flag.\n parameterValue = collectAnHTTPQuotedString(input, position, true)\n\n // 2. Collect a sequence of code points that are not\n // U+003B (;) from input, given position.\n collectASequenceOfCodePointsFast(\n ';',\n input,\n position\n )\n\n // 9. Otherwise:\n } else {\n // 1. Set parameterValue to the result of collecting\n // a sequence of code points that are not U+003B (;)\n // from input, given position.\n parameterValue = collectASequenceOfCodePointsFast(\n ';',\n input,\n position\n )\n\n // 2. Remove any trailing HTTP whitespace from parameterValue.\n parameterValue = removeHTTPWhitespace(parameterValue, false, true)\n\n // 3. If parameterValue is the empty string, then continue.\n if (parameterValue.length === 0) {\n continue\n }\n }\n\n // 10. If all of the following are true\n // - parameterName is not the empty string\n // - parameterName solely contains HTTP token code points\n // - parameterValue solely contains HTTP quoted-string token code points\n // - mimeType’s parameters[parameterName] does not exist\n // then set mimeType’s parameters[parameterName] to parameterValue.\n if (\n parameterName.length !== 0 &&\n HTTP_TOKEN_CODEPOINTS.test(parameterName) &&\n (parameterValue.length === 0 || HTTP_QUOTED_STRING_TOKENS.test(parameterValue)) &&\n !mimeType.parameters.has(parameterName)\n ) {\n mimeType.parameters.set(parameterName, parameterValue)\n }\n }\n\n // 12. Return mimeType.\n return mimeType\n}\n\n// https://infra.spec.whatwg.org/#forgiving-base64-decode\n/** @param {string} data */\nfunction forgivingBase64 (data) {\n // 1. Remove all ASCII whitespace from data.\n data = data.replace(/[\\u0009\\u000A\\u000C\\u000D\\u0020]/g, '') // eslint-disable-line\n\n // 2. If data’s code point length divides by 4 leaving\n // no remainder, then:\n if (data.length % 4 === 0) {\n // 1. If data ends with one or two U+003D (=) code points,\n // then remove them from data.\n data = data.replace(/=?=$/, '')\n }\n\n // 3. If data’s code point length divides by 4 leaving\n // a remainder of 1, then return failure.\n if (data.length % 4 === 1) {\n return 'failure'\n }\n\n // 4. If data contains a code point that is not one of\n // U+002B (+)\n // U+002F (/)\n // ASCII alphanumeric\n // then return failure.\n if (/[^+/0-9A-Za-z]/.test(data)) {\n return 'failure'\n }\n\n const binary = atob(data)\n const bytes = new Uint8Array(binary.length)\n\n for (let byte = 0; byte < binary.length; byte++) {\n bytes[byte] = binary.charCodeAt(byte)\n }\n\n return bytes\n}\n\n// https://fetch.spec.whatwg.org/#collect-an-http-quoted-string\n// tests: https://fetch.spec.whatwg.org/#example-http-quoted-string\n/**\n * @param {string} input\n * @param {{ position: number }} position\n * @param {boolean?} extractValue\n */\nfunction collectAnHTTPQuotedString (input, position, extractValue) {\n // 1. Let positionStart be position.\n const positionStart = position.position\n\n // 2. Let value be the empty string.\n let value = ''\n\n // 3. Assert: the code point at position within input\n // is U+0022 (\").\n assert(input[position.position] === '\"')\n\n // 4. Advance position by 1.\n position.position++\n\n // 5. While true:\n while (true) {\n // 1. Append the result of collecting a sequence of code points\n // that are not U+0022 (\") or U+005C (\\) from input, given\n // position, to value.\n value += collectASequenceOfCodePoints(\n (char) => char !== '\"' && char !== '\\\\',\n input,\n position\n )\n\n // 2. If position is past the end of input, then break.\n if (position.position >= input.length) {\n break\n }\n\n // 3. Let quoteOrBackslash be the code point at position within\n // input.\n const quoteOrBackslash = input[position.position]\n\n // 4. Advance position by 1.\n position.position++\n\n // 5. If quoteOrBackslash is U+005C (\\), then:\n if (quoteOrBackslash === '\\\\') {\n // 1. If position is past the end of input, then append\n // U+005C (\\) to value and break.\n if (position.position >= input.length) {\n value += '\\\\'\n break\n }\n\n // 2. Append the code point at position within input to value.\n value += input[position.position]\n\n // 3. Advance position by 1.\n position.position++\n\n // 6. Otherwise:\n } else {\n // 1. Assert: quoteOrBackslash is U+0022 (\").\n assert(quoteOrBackslash === '\"')\n\n // 2. Break.\n break\n }\n }\n\n // 6. If the extract-value flag is set, then return value.\n if (extractValue) {\n return value\n }\n\n // 7. Return the code points from positionStart to position,\n // inclusive, within input.\n return input.slice(positionStart, position.position)\n}\n\n/**\n * @see https://mimesniff.spec.whatwg.org/#serialize-a-mime-type\n */\nfunction serializeAMimeType (mimeType) {\n assert(mimeType !== 'failure')\n const { parameters, essence } = mimeType\n\n // 1. Let serialization be the concatenation of mimeType’s\n // type, U+002F (/), and mimeType’s subtype.\n let serialization = essence\n\n // 2. For each name → value of mimeType’s parameters:\n for (let [name, value] of parameters.entries()) {\n // 1. Append U+003B (;) to serialization.\n serialization += ';'\n\n // 2. Append name to serialization.\n serialization += name\n\n // 3. Append U+003D (=) to serialization.\n serialization += '='\n\n // 4. If value does not solely contain HTTP token code\n // points or value is the empty string, then:\n if (!HTTP_TOKEN_CODEPOINTS.test(value)) {\n // 1. Precede each occurence of U+0022 (\") or\n // U+005C (\\) in value with U+005C (\\).\n value = value.replace(/(\\\\|\")/g, '\\\\$1')\n\n // 2. Prepend U+0022 (\") to value.\n value = '\"' + value\n\n // 3. Append U+0022 (\") to value.\n value += '\"'\n }\n\n // 5. Append value to serialization.\n serialization += value\n }\n\n // 3. Return serialization.\n return serialization\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-whitespace\n * @param {string} char\n */\nfunction isHTTPWhiteSpace (char) {\n return char === '\\r' || char === '\\n' || char === '\\t' || char === ' '\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-whitespace\n * @param {string} str\n */\nfunction removeHTTPWhitespace (str, leading = true, trailing = true) {\n let lead = 0\n let trail = str.length - 1\n\n if (leading) {\n for (; lead < str.length && isHTTPWhiteSpace(str[lead]); lead++);\n }\n\n if (trailing) {\n for (; trail > 0 && isHTTPWhiteSpace(str[trail]); trail--);\n }\n\n return str.slice(lead, trail + 1)\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#ascii-whitespace\n * @param {string} char\n */\nfunction isASCIIWhitespace (char) {\n return char === '\\r' || char === '\\n' || char === '\\t' || char === '\\f' || char === ' '\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#strip-leading-and-trailing-ascii-whitespace\n */\nfunction removeASCIIWhitespace (str, leading = true, trailing = true) {\n let lead = 0\n let trail = str.length - 1\n\n if (leading) {\n for (; lead < str.length && isASCIIWhitespace(str[lead]); lead++);\n }\n\n if (trailing) {\n for (; trail > 0 && isASCIIWhitespace(str[trail]); trail--);\n }\n\n return str.slice(lead, trail + 1)\n}\n\nmodule.exports = {\n dataURLProcessor,\n URLSerializer,\n collectASequenceOfCodePoints,\n collectASequenceOfCodePointsFast,\n stringPercentDecode,\n parseMIMEType,\n collectAnHTTPQuotedString,\n serializeAMimeType\n}\n","'use strict'\n\nconst { Blob, File: NativeFile } = require('buffer')\nconst { types } = require('util')\nconst { kState } = require('./symbols')\nconst { isBlobLike } = require('./util')\nconst { webidl } = require('./webidl')\nconst { parseMIMEType, serializeAMimeType } = require('./dataURL')\nconst { kEnumerableProperty } = require('../core/util')\nconst encoder = new TextEncoder()\n\nclass File extends Blob {\n constructor (fileBits, fileName, options = {}) {\n // The File constructor is invoked with two or three parameters, depending\n // on whether the optional dictionary parameter is used. When the File()\n // constructor is invoked, user agents must run the following steps:\n webidl.argumentLengthCheck(arguments, 2, { header: 'File constructor' })\n\n fileBits = webidl.converters['sequence'](fileBits)\n fileName = webidl.converters.USVString(fileName)\n options = webidl.converters.FilePropertyBag(options)\n\n // 1. Let bytes be the result of processing blob parts given fileBits and\n // options.\n // Note: Blob handles this for us\n\n // 2. Let n be the fileName argument to the constructor.\n const n = fileName\n\n // 3. Process FilePropertyBag dictionary argument by running the following\n // substeps:\n\n // 1. If the type member is provided and is not the empty string, let t\n // be set to the type dictionary member. If t contains any characters\n // outside the range U+0020 to U+007E, then set t to the empty string\n // and return from these substeps.\n // 2. Convert every character in t to ASCII lowercase.\n let t = options.type\n let d\n\n // eslint-disable-next-line no-labels\n substep: {\n if (t) {\n t = parseMIMEType(t)\n\n if (t === 'failure') {\n t = ''\n // eslint-disable-next-line no-labels\n break substep\n }\n\n t = serializeAMimeType(t).toLowerCase()\n }\n\n // 3. If the lastModified member is provided, let d be set to the\n // lastModified dictionary member. If it is not provided, set d to the\n // current date and time represented as the number of milliseconds since\n // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]).\n d = options.lastModified\n }\n\n // 4. Return a new File object F such that:\n // F refers to the bytes byte sequence.\n // F.size is set to the number of total bytes in bytes.\n // F.name is set to n.\n // F.type is set to t.\n // F.lastModified is set to d.\n\n super(processBlobParts(fileBits, options), { type: t })\n this[kState] = {\n name: n,\n lastModified: d,\n type: t\n }\n }\n\n get name () {\n webidl.brandCheck(this, File)\n\n return this[kState].name\n }\n\n get lastModified () {\n webidl.brandCheck(this, File)\n\n return this[kState].lastModified\n }\n\n get type () {\n webidl.brandCheck(this, File)\n\n return this[kState].type\n }\n}\n\nclass FileLike {\n constructor (blobLike, fileName, options = {}) {\n // TODO: argument idl type check\n\n // The File constructor is invoked with two or three parameters, depending\n // on whether the optional dictionary parameter is used. When the File()\n // constructor is invoked, user agents must run the following steps:\n\n // 1. Let bytes be the result of processing blob parts given fileBits and\n // options.\n\n // 2. Let n be the fileName argument to the constructor.\n const n = fileName\n\n // 3. Process FilePropertyBag dictionary argument by running the following\n // substeps:\n\n // 1. If the type member is provided and is not the empty string, let t\n // be set to the type dictionary member. If t contains any characters\n // outside the range U+0020 to U+007E, then set t to the empty string\n // and return from these substeps.\n // TODO\n const t = options.type\n\n // 2. Convert every character in t to ASCII lowercase.\n // TODO\n\n // 3. If the lastModified member is provided, let d be set to the\n // lastModified dictionary member. If it is not provided, set d to the\n // current date and time represented as the number of milliseconds since\n // the Unix Epoch (which is the equivalent of Date.now() [ECMA-262]).\n const d = options.lastModified ?? Date.now()\n\n // 4. Return a new File object F such that:\n // F refers to the bytes byte sequence.\n // F.size is set to the number of total bytes in bytes.\n // F.name is set to n.\n // F.type is set to t.\n // F.lastModified is set to d.\n\n this[kState] = {\n blobLike,\n name: n,\n type: t,\n lastModified: d\n }\n }\n\n stream (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.stream(...args)\n }\n\n arrayBuffer (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.arrayBuffer(...args)\n }\n\n slice (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.slice(...args)\n }\n\n text (...args) {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.text(...args)\n }\n\n get size () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.size\n }\n\n get type () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].blobLike.type\n }\n\n get name () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].name\n }\n\n get lastModified () {\n webidl.brandCheck(this, FileLike)\n\n return this[kState].lastModified\n }\n\n get [Symbol.toStringTag] () {\n return 'File'\n }\n}\n\nObject.defineProperties(File.prototype, {\n [Symbol.toStringTag]: {\n value: 'File',\n configurable: true\n },\n name: kEnumerableProperty,\n lastModified: kEnumerableProperty\n})\n\nwebidl.converters.Blob = webidl.interfaceConverter(Blob)\n\nwebidl.converters.BlobPart = function (V, opts) {\n if (webidl.util.Type(V) === 'Object') {\n if (isBlobLike(V)) {\n return webidl.converters.Blob(V, { strict: false })\n }\n\n if (\n ArrayBuffer.isView(V) ||\n types.isAnyArrayBuffer(V)\n ) {\n return webidl.converters.BufferSource(V, opts)\n }\n }\n\n return webidl.converters.USVString(V, opts)\n}\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.BlobPart\n)\n\n// https://www.w3.org/TR/FileAPI/#dfn-FilePropertyBag\nwebidl.converters.FilePropertyBag = webidl.dictionaryConverter([\n {\n key: 'lastModified',\n converter: webidl.converters['long long'],\n get defaultValue () {\n return Date.now()\n }\n },\n {\n key: 'type',\n converter: webidl.converters.DOMString,\n defaultValue: ''\n },\n {\n key: 'endings',\n converter: (value) => {\n value = webidl.converters.DOMString(value)\n value = value.toLowerCase()\n\n if (value !== 'native') {\n value = 'transparent'\n }\n\n return value\n },\n defaultValue: 'transparent'\n }\n])\n\n/**\n * @see https://www.w3.org/TR/FileAPI/#process-blob-parts\n * @param {(NodeJS.TypedArray|Blob|string)[]} parts\n * @param {{ type: string, endings: string }} options\n */\nfunction processBlobParts (parts, options) {\n // 1. Let bytes be an empty sequence of bytes.\n /** @type {NodeJS.TypedArray[]} */\n const bytes = []\n\n // 2. For each element in parts:\n for (const element of parts) {\n // 1. If element is a USVString, run the following substeps:\n if (typeof element === 'string') {\n // 1. Let s be element.\n let s = element\n\n // 2. If the endings member of options is \"native\", set s\n // to the result of converting line endings to native\n // of element.\n if (options.endings === 'native') {\n s = convertLineEndingsNative(s)\n }\n\n // 3. Append the result of UTF-8 encoding s to bytes.\n bytes.push(encoder.encode(s))\n } else if (\n types.isAnyArrayBuffer(element) ||\n types.isTypedArray(element)\n ) {\n // 2. If element is a BufferSource, get a copy of the\n // bytes held by the buffer source, and append those\n // bytes to bytes.\n if (!element.buffer) { // ArrayBuffer\n bytes.push(new Uint8Array(element))\n } else {\n bytes.push(\n new Uint8Array(element.buffer, element.byteOffset, element.byteLength)\n )\n }\n } else if (isBlobLike(element)) {\n // 3. If element is a Blob, append the bytes it represents\n // to bytes.\n bytes.push(element)\n }\n }\n\n // 3. Return bytes.\n return bytes\n}\n\n/**\n * @see https://www.w3.org/TR/FileAPI/#convert-line-endings-to-native\n * @param {string} s\n */\nfunction convertLineEndingsNative (s) {\n // 1. Let native line ending be be the code point U+000A LF.\n let nativeLineEnding = '\\n'\n\n // 2. If the underlying platform’s conventions are to\n // represent newlines as a carriage return and line feed\n // sequence, set native line ending to the code point\n // U+000D CR followed by the code point U+000A LF.\n if (process.platform === 'win32') {\n nativeLineEnding = '\\r\\n'\n }\n\n return s.replace(/\\r?\\n/g, nativeLineEnding)\n}\n\n// If this function is moved to ./util.js, some tools (such as\n// rollup) will warn about circular dependencies. See:\n// https://github.com/nodejs/undici/issues/1629\nfunction isFileLike (object) {\n return (\n (NativeFile && object instanceof NativeFile) ||\n object instanceof File || (\n object &&\n (typeof object.stream === 'function' ||\n typeof object.arrayBuffer === 'function') &&\n object[Symbol.toStringTag] === 'File'\n )\n )\n}\n\nmodule.exports = { File, FileLike, isFileLike }\n","'use strict'\n\nconst { isBlobLike, toUSVString, makeIterator } = require('./util')\nconst { kState } = require('./symbols')\nconst { File: UndiciFile, FileLike, isFileLike } = require('./file')\nconst { webidl } = require('./webidl')\nconst { Blob, File: NativeFile } = require('buffer')\n\n/** @type {globalThis['File']} */\nconst File = NativeFile ?? UndiciFile\n\n// https://xhr.spec.whatwg.org/#formdata\nclass FormData {\n constructor (form) {\n if (form !== undefined) {\n throw webidl.errors.conversionFailed({\n prefix: 'FormData constructor',\n argument: 'Argument 1',\n types: ['undefined']\n })\n }\n\n this[kState] = []\n }\n\n append (name, value, filename = undefined) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.append' })\n\n if (arguments.length === 3 && !isBlobLike(value)) {\n throw new TypeError(\n \"Failed to execute 'append' on 'FormData': parameter 2 is not of type 'Blob'\"\n )\n }\n\n // 1. Let value be value if given; otherwise blobValue.\n\n name = webidl.converters.USVString(name)\n value = isBlobLike(value)\n ? webidl.converters.Blob(value, { strict: false })\n : webidl.converters.USVString(value)\n filename = arguments.length === 3\n ? webidl.converters.USVString(filename)\n : undefined\n\n // 2. Let entry be the result of creating an entry with\n // name, value, and filename if given.\n const entry = makeEntry(name, value, filename)\n\n // 3. Append entry to this’s entry list.\n this[kState].push(entry)\n }\n\n delete (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.delete' })\n\n name = webidl.converters.USVString(name)\n\n // The delete(name) method steps are to remove all entries whose name\n // is name from this’s entry list.\n this[kState] = this[kState].filter(entry => entry.name !== name)\n }\n\n get (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.get' })\n\n name = webidl.converters.USVString(name)\n\n // 1. If there is no entry whose name is name in this’s entry list,\n // then return null.\n const idx = this[kState].findIndex((entry) => entry.name === name)\n if (idx === -1) {\n return null\n }\n\n // 2. Return the value of the first entry whose name is name from\n // this’s entry list.\n return this[kState][idx].value\n }\n\n getAll (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.getAll' })\n\n name = webidl.converters.USVString(name)\n\n // 1. If there is no entry whose name is name in this’s entry list,\n // then return the empty list.\n // 2. Return the values of all entries whose name is name, in order,\n // from this’s entry list.\n return this[kState]\n .filter((entry) => entry.name === name)\n .map((entry) => entry.value)\n }\n\n has (name) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.has' })\n\n name = webidl.converters.USVString(name)\n\n // The has(name) method steps are to return true if there is an entry\n // whose name is name in this’s entry list; otherwise false.\n return this[kState].findIndex((entry) => entry.name === name) !== -1\n }\n\n set (name, value, filename = undefined) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'FormData.set' })\n\n if (arguments.length === 3 && !isBlobLike(value)) {\n throw new TypeError(\n \"Failed to execute 'set' on 'FormData': parameter 2 is not of type 'Blob'\"\n )\n }\n\n // The set(name, value) and set(name, blobValue, filename) method steps\n // are:\n\n // 1. Let value be value if given; otherwise blobValue.\n\n name = webidl.converters.USVString(name)\n value = isBlobLike(value)\n ? webidl.converters.Blob(value, { strict: false })\n : webidl.converters.USVString(value)\n filename = arguments.length === 3\n ? toUSVString(filename)\n : undefined\n\n // 2. Let entry be the result of creating an entry with name, value, and\n // filename if given.\n const entry = makeEntry(name, value, filename)\n\n // 3. If there are entries in this’s entry list whose name is name, then\n // replace the first such entry with entry and remove the others.\n const idx = this[kState].findIndex((entry) => entry.name === name)\n if (idx !== -1) {\n this[kState] = [\n ...this[kState].slice(0, idx),\n entry,\n ...this[kState].slice(idx + 1).filter((entry) => entry.name !== name)\n ]\n } else {\n // 4. Otherwise, append entry to this’s entry list.\n this[kState].push(entry)\n }\n }\n\n entries () {\n webidl.brandCheck(this, FormData)\n\n return makeIterator(\n () => this[kState].map(pair => [pair.name, pair.value]),\n 'FormData',\n 'key+value'\n )\n }\n\n keys () {\n webidl.brandCheck(this, FormData)\n\n return makeIterator(\n () => this[kState].map(pair => [pair.name, pair.value]),\n 'FormData',\n 'key'\n )\n }\n\n values () {\n webidl.brandCheck(this, FormData)\n\n return makeIterator(\n () => this[kState].map(pair => [pair.name, pair.value]),\n 'FormData',\n 'value'\n )\n }\n\n /**\n * @param {(value: string, key: string, self: FormData) => void} callbackFn\n * @param {unknown} thisArg\n */\n forEach (callbackFn, thisArg = globalThis) {\n webidl.brandCheck(this, FormData)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FormData.forEach' })\n\n if (typeof callbackFn !== 'function') {\n throw new TypeError(\n \"Failed to execute 'forEach' on 'FormData': parameter 1 is not of type 'Function'.\"\n )\n }\n\n for (const [key, value] of this) {\n callbackFn.apply(thisArg, [value, key, this])\n }\n }\n}\n\nFormData.prototype[Symbol.iterator] = FormData.prototype.entries\n\nObject.defineProperties(FormData.prototype, {\n [Symbol.toStringTag]: {\n value: 'FormData',\n configurable: true\n }\n})\n\n/**\n * @see https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#create-an-entry\n * @param {string} name\n * @param {string|Blob} value\n * @param {?string} filename\n * @returns\n */\nfunction makeEntry (name, value, filename) {\n // 1. Set name to the result of converting name into a scalar value string.\n // \"To convert a string into a scalar value string, replace any surrogates\n // with U+FFFD.\"\n // see: https://nodejs.org/dist/latest-v18.x/docs/api/buffer.html#buftostringencoding-start-end\n name = Buffer.from(name).toString('utf8')\n\n // 2. If value is a string, then set value to the result of converting\n // value into a scalar value string.\n if (typeof value === 'string') {\n value = Buffer.from(value).toString('utf8')\n } else {\n // 3. Otherwise:\n\n // 1. If value is not a File object, then set value to a new File object,\n // representing the same bytes, whose name attribute value is \"blob\"\n if (!isFileLike(value)) {\n value = value instanceof Blob\n ? new File([value], 'blob', { type: value.type })\n : new FileLike(value, 'blob', { type: value.type })\n }\n\n // 2. If filename is given, then set value to a new File object,\n // representing the same bytes, whose name attribute is filename.\n if (filename !== undefined) {\n /** @type {FilePropertyBag} */\n const options = {\n type: value.type,\n lastModified: value.lastModified\n }\n\n value = (NativeFile && value instanceof NativeFile) || value instanceof UndiciFile\n ? new File([value], filename, options)\n : new FileLike(value, filename, options)\n }\n }\n\n // 4. Return an entry whose name is name and whose value is value.\n return { name, value }\n}\n\nmodule.exports = { FormData }\n","'use strict'\n\n// In case of breaking changes, increase the version\n// number to avoid conflicts.\nconst globalOrigin = Symbol.for('undici.globalOrigin.1')\n\nfunction getGlobalOrigin () {\n return globalThis[globalOrigin]\n}\n\nfunction setGlobalOrigin (newOrigin) {\n if (newOrigin === undefined) {\n Object.defineProperty(globalThis, globalOrigin, {\n value: undefined,\n writable: true,\n enumerable: false,\n configurable: false\n })\n\n return\n }\n\n const parsedURL = new URL(newOrigin)\n\n if (parsedURL.protocol !== 'http:' && parsedURL.protocol !== 'https:') {\n throw new TypeError(`Only http & https urls are allowed, received ${parsedURL.protocol}`)\n }\n\n Object.defineProperty(globalThis, globalOrigin, {\n value: parsedURL,\n writable: true,\n enumerable: false,\n configurable: false\n })\n}\n\nmodule.exports = {\n getGlobalOrigin,\n setGlobalOrigin\n}\n","// https://github.com/Ethan-Arrowood/undici-fetch\n\n'use strict'\n\nconst { kHeadersList, kConstruct } = require('../core/symbols')\nconst { kGuard } = require('./symbols')\nconst { kEnumerableProperty } = require('../core/util')\nconst {\n makeIterator,\n isValidHeaderName,\n isValidHeaderValue\n} = require('./util')\nconst { webidl } = require('./webidl')\nconst assert = require('assert')\n\nconst kHeadersMap = Symbol('headers map')\nconst kHeadersSortedMap = Symbol('headers map sorted')\n\n/**\n * @param {number} code\n */\nfunction isHTTPWhiteSpaceCharCode (code) {\n return code === 0x00a || code === 0x00d || code === 0x009 || code === 0x020\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-header-value-normalize\n * @param {string} potentialValue\n */\nfunction headerValueNormalize (potentialValue) {\n // To normalize a byte sequence potentialValue, remove\n // any leading and trailing HTTP whitespace bytes from\n // potentialValue.\n let i = 0; let j = potentialValue.length\n\n while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(j - 1))) --j\n while (j > i && isHTTPWhiteSpaceCharCode(potentialValue.charCodeAt(i))) ++i\n\n return i === 0 && j === potentialValue.length ? potentialValue : potentialValue.substring(i, j)\n}\n\nfunction fill (headers, object) {\n // To fill a Headers object headers with a given object object, run these steps:\n\n // 1. If object is a sequence, then for each header in object:\n // Note: webidl conversion to array has already been done.\n if (Array.isArray(object)) {\n for (let i = 0; i < object.length; ++i) {\n const header = object[i]\n // 1. If header does not contain exactly two items, then throw a TypeError.\n if (header.length !== 2) {\n throw webidl.errors.exception({\n header: 'Headers constructor',\n message: `expected name/value pair to be length 2, found ${header.length}.`\n })\n }\n\n // 2. Append (header’s first item, header’s second item) to headers.\n appendHeader(headers, header[0], header[1])\n }\n } else if (typeof object === 'object' && object !== null) {\n // Note: null should throw\n\n // 2. Otherwise, object is a record, then for each key → value in object,\n // append (key, value) to headers\n const keys = Object.keys(object)\n for (let i = 0; i < keys.length; ++i) {\n appendHeader(headers, keys[i], object[keys[i]])\n }\n } else {\n throw webidl.errors.conversionFailed({\n prefix: 'Headers constructor',\n argument: 'Argument 1',\n types: ['sequence>', 'record']\n })\n }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-headers-append\n */\nfunction appendHeader (headers, name, value) {\n // 1. Normalize value.\n value = headerValueNormalize(value)\n\n // 2. If name is not a header name or value is not a\n // header value, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.append',\n value: name,\n type: 'header name'\n })\n } else if (!isValidHeaderValue(value)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.append',\n value,\n type: 'header value'\n })\n }\n\n // 3. If headers’s guard is \"immutable\", then throw a TypeError.\n // 4. Otherwise, if headers’s guard is \"request\" and name is a\n // forbidden header name, return.\n // Note: undici does not implement forbidden header names\n if (headers[kGuard] === 'immutable') {\n throw new TypeError('immutable')\n } else if (headers[kGuard] === 'request-no-cors') {\n // 5. Otherwise, if headers’s guard is \"request-no-cors\":\n // TODO\n }\n\n // 6. Otherwise, if headers’s guard is \"response\" and name is a\n // forbidden response-header name, return.\n\n // 7. Append (name, value) to headers’s header list.\n return headers[kHeadersList].append(name, value)\n\n // 8. If headers’s guard is \"request-no-cors\", then remove\n // privileged no-CORS request headers from headers\n}\n\nclass HeadersList {\n /** @type {[string, string][]|null} */\n cookies = null\n\n constructor (init) {\n if (init instanceof HeadersList) {\n this[kHeadersMap] = new Map(init[kHeadersMap])\n this[kHeadersSortedMap] = init[kHeadersSortedMap]\n this.cookies = init.cookies === null ? null : [...init.cookies]\n } else {\n this[kHeadersMap] = new Map(init)\n this[kHeadersSortedMap] = null\n }\n }\n\n // https://fetch.spec.whatwg.org/#header-list-contains\n contains (name) {\n // A header list list contains a header name name if list\n // contains a header whose name is a byte-case-insensitive\n // match for name.\n name = name.toLowerCase()\n\n return this[kHeadersMap].has(name)\n }\n\n clear () {\n this[kHeadersMap].clear()\n this[kHeadersSortedMap] = null\n this.cookies = null\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-append\n append (name, value) {\n this[kHeadersSortedMap] = null\n\n // 1. If list contains name, then set name to the first such\n // header’s name.\n const lowercaseName = name.toLowerCase()\n const exists = this[kHeadersMap].get(lowercaseName)\n\n // 2. Append (name, value) to list.\n if (exists) {\n const delimiter = lowercaseName === 'cookie' ? '; ' : ', '\n this[kHeadersMap].set(lowercaseName, {\n name: exists.name,\n value: `${exists.value}${delimiter}${value}`\n })\n } else {\n this[kHeadersMap].set(lowercaseName, { name, value })\n }\n\n if (lowercaseName === 'set-cookie') {\n this.cookies ??= []\n this.cookies.push(value)\n }\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-set\n set (name, value) {\n this[kHeadersSortedMap] = null\n const lowercaseName = name.toLowerCase()\n\n if (lowercaseName === 'set-cookie') {\n this.cookies = [value]\n }\n\n // 1. If list contains name, then set the value of\n // the first such header to value and remove the\n // others.\n // 2. Otherwise, append header (name, value) to list.\n this[kHeadersMap].set(lowercaseName, { name, value })\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-delete\n delete (name) {\n this[kHeadersSortedMap] = null\n\n name = name.toLowerCase()\n\n if (name === 'set-cookie') {\n this.cookies = null\n }\n\n this[kHeadersMap].delete(name)\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-get\n get (name) {\n const value = this[kHeadersMap].get(name.toLowerCase())\n\n // 1. If list does not contain name, then return null.\n // 2. Return the values of all headers in list whose name\n // is a byte-case-insensitive match for name,\n // separated from each other by 0x2C 0x20, in order.\n return value === undefined ? null : value.value\n }\n\n * [Symbol.iterator] () {\n // use the lowercased name\n for (const [name, { value }] of this[kHeadersMap]) {\n yield [name, value]\n }\n }\n\n get entries () {\n const headers = {}\n\n if (this[kHeadersMap].size) {\n for (const { name, value } of this[kHeadersMap].values()) {\n headers[name] = value\n }\n }\n\n return headers\n }\n}\n\n// https://fetch.spec.whatwg.org/#headers-class\nclass Headers {\n constructor (init = undefined) {\n if (init === kConstruct) {\n return\n }\n this[kHeadersList] = new HeadersList()\n\n // The new Headers(init) constructor steps are:\n\n // 1. Set this’s guard to \"none\".\n this[kGuard] = 'none'\n\n // 2. If init is given, then fill this with init.\n if (init !== undefined) {\n init = webidl.converters.HeadersInit(init)\n fill(this, init)\n }\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-append\n append (name, value) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.append' })\n\n name = webidl.converters.ByteString(name)\n value = webidl.converters.ByteString(value)\n\n return appendHeader(this, name, value)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-delete\n delete (name) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.delete' })\n\n name = webidl.converters.ByteString(name)\n\n // 1. If name is not a header name, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.delete',\n value: name,\n type: 'header name'\n })\n }\n\n // 2. If this’s guard is \"immutable\", then throw a TypeError.\n // 3. Otherwise, if this’s guard is \"request\" and name is a\n // forbidden header name, return.\n // 4. Otherwise, if this’s guard is \"request-no-cors\", name\n // is not a no-CORS-safelisted request-header name, and\n // name is not a privileged no-CORS request-header name,\n // return.\n // 5. Otherwise, if this’s guard is \"response\" and name is\n // a forbidden response-header name, return.\n // Note: undici does not implement forbidden header names\n if (this[kGuard] === 'immutable') {\n throw new TypeError('immutable')\n } else if (this[kGuard] === 'request-no-cors') {\n // TODO\n }\n\n // 6. If this’s header list does not contain name, then\n // return.\n if (!this[kHeadersList].contains(name)) {\n return\n }\n\n // 7. Delete name from this’s header list.\n // 8. If this’s guard is \"request-no-cors\", then remove\n // privileged no-CORS request headers from this.\n this[kHeadersList].delete(name)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-get\n get (name) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.get' })\n\n name = webidl.converters.ByteString(name)\n\n // 1. If name is not a header name, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.get',\n value: name,\n type: 'header name'\n })\n }\n\n // 2. Return the result of getting name from this’s header\n // list.\n return this[kHeadersList].get(name)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-has\n has (name) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.has' })\n\n name = webidl.converters.ByteString(name)\n\n // 1. If name is not a header name, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.has',\n value: name,\n type: 'header name'\n })\n }\n\n // 2. Return true if this’s header list contains name;\n // otherwise false.\n return this[kHeadersList].contains(name)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-set\n set (name, value) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 2, { header: 'Headers.set' })\n\n name = webidl.converters.ByteString(name)\n value = webidl.converters.ByteString(value)\n\n // 1. Normalize value.\n value = headerValueNormalize(value)\n\n // 2. If name is not a header name or value is not a\n // header value, then throw a TypeError.\n if (!isValidHeaderName(name)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.set',\n value: name,\n type: 'header name'\n })\n } else if (!isValidHeaderValue(value)) {\n throw webidl.errors.invalidArgument({\n prefix: 'Headers.set',\n value,\n type: 'header value'\n })\n }\n\n // 3. If this’s guard is \"immutable\", then throw a TypeError.\n // 4. Otherwise, if this’s guard is \"request\" and name is a\n // forbidden header name, return.\n // 5. Otherwise, if this’s guard is \"request-no-cors\" and\n // name/value is not a no-CORS-safelisted request-header,\n // return.\n // 6. Otherwise, if this’s guard is \"response\" and name is a\n // forbidden response-header name, return.\n // Note: undici does not implement forbidden header names\n if (this[kGuard] === 'immutable') {\n throw new TypeError('immutable')\n } else if (this[kGuard] === 'request-no-cors') {\n // TODO\n }\n\n // 7. Set (name, value) in this’s header list.\n // 8. If this’s guard is \"request-no-cors\", then remove\n // privileged no-CORS request headers from this\n this[kHeadersList].set(name, value)\n }\n\n // https://fetch.spec.whatwg.org/#dom-headers-getsetcookie\n getSetCookie () {\n webidl.brandCheck(this, Headers)\n\n // 1. If this’s header list does not contain `Set-Cookie`, then return « ».\n // 2. Return the values of all headers in this’s header list whose name is\n // a byte-case-insensitive match for `Set-Cookie`, in order.\n\n const list = this[kHeadersList].cookies\n\n if (list) {\n return [...list]\n }\n\n return []\n }\n\n // https://fetch.spec.whatwg.org/#concept-header-list-sort-and-combine\n get [kHeadersSortedMap] () {\n if (this[kHeadersList][kHeadersSortedMap]) {\n return this[kHeadersList][kHeadersSortedMap]\n }\n\n // 1. Let headers be an empty list of headers with the key being the name\n // and value the value.\n const headers = []\n\n // 2. Let names be the result of convert header names to a sorted-lowercase\n // set with all the names of the headers in list.\n const names = [...this[kHeadersList]].sort((a, b) => a[0] < b[0] ? -1 : 1)\n const cookies = this[kHeadersList].cookies\n\n // 3. For each name of names:\n for (let i = 0; i < names.length; ++i) {\n const [name, value] = names[i]\n // 1. If name is `set-cookie`, then:\n if (name === 'set-cookie') {\n // 1. Let values be a list of all values of headers in list whose name\n // is a byte-case-insensitive match for name, in order.\n\n // 2. For each value of values:\n // 1. Append (name, value) to headers.\n for (let j = 0; j < cookies.length; ++j) {\n headers.push([name, cookies[j]])\n }\n } else {\n // 2. Otherwise:\n\n // 1. Let value be the result of getting name from list.\n\n // 2. Assert: value is non-null.\n assert(value !== null)\n\n // 3. Append (name, value) to headers.\n headers.push([name, value])\n }\n }\n\n this[kHeadersList][kHeadersSortedMap] = headers\n\n // 4. Return headers.\n return headers\n }\n\n keys () {\n webidl.brandCheck(this, Headers)\n\n if (this[kGuard] === 'immutable') {\n const value = this[kHeadersSortedMap]\n return makeIterator(() => value, 'Headers',\n 'key')\n }\n\n return makeIterator(\n () => [...this[kHeadersSortedMap].values()],\n 'Headers',\n 'key'\n )\n }\n\n values () {\n webidl.brandCheck(this, Headers)\n\n if (this[kGuard] === 'immutable') {\n const value = this[kHeadersSortedMap]\n return makeIterator(() => value, 'Headers',\n 'value')\n }\n\n return makeIterator(\n () => [...this[kHeadersSortedMap].values()],\n 'Headers',\n 'value'\n )\n }\n\n entries () {\n webidl.brandCheck(this, Headers)\n\n if (this[kGuard] === 'immutable') {\n const value = this[kHeadersSortedMap]\n return makeIterator(() => value, 'Headers',\n 'key+value')\n }\n\n return makeIterator(\n () => [...this[kHeadersSortedMap].values()],\n 'Headers',\n 'key+value'\n )\n }\n\n /**\n * @param {(value: string, key: string, self: Headers) => void} callbackFn\n * @param {unknown} thisArg\n */\n forEach (callbackFn, thisArg = globalThis) {\n webidl.brandCheck(this, Headers)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Headers.forEach' })\n\n if (typeof callbackFn !== 'function') {\n throw new TypeError(\n \"Failed to execute 'forEach' on 'Headers': parameter 1 is not of type 'Function'.\"\n )\n }\n\n for (const [key, value] of this) {\n callbackFn.apply(thisArg, [value, key, this])\n }\n }\n\n [Symbol.for('nodejs.util.inspect.custom')] () {\n webidl.brandCheck(this, Headers)\n\n return this[kHeadersList]\n }\n}\n\nHeaders.prototype[Symbol.iterator] = Headers.prototype.entries\n\nObject.defineProperties(Headers.prototype, {\n append: kEnumerableProperty,\n delete: kEnumerableProperty,\n get: kEnumerableProperty,\n has: kEnumerableProperty,\n set: kEnumerableProperty,\n getSetCookie: kEnumerableProperty,\n keys: kEnumerableProperty,\n values: kEnumerableProperty,\n entries: kEnumerableProperty,\n forEach: kEnumerableProperty,\n [Symbol.iterator]: { enumerable: false },\n [Symbol.toStringTag]: {\n value: 'Headers',\n configurable: true\n }\n})\n\nwebidl.converters.HeadersInit = function (V) {\n if (webidl.util.Type(V) === 'Object') {\n if (V[Symbol.iterator]) {\n return webidl.converters['sequence>'](V)\n }\n\n return webidl.converters['record'](V)\n }\n\n throw webidl.errors.conversionFailed({\n prefix: 'Headers constructor',\n argument: 'Argument 1',\n types: ['sequence>', 'record']\n })\n}\n\nmodule.exports = {\n fill,\n Headers,\n HeadersList\n}\n","// https://github.com/Ethan-Arrowood/undici-fetch\n\n'use strict'\n\nconst {\n Response,\n makeNetworkError,\n makeAppropriateNetworkError,\n filterResponse,\n makeResponse\n} = require('./response')\nconst { Headers } = require('./headers')\nconst { Request, makeRequest } = require('./request')\nconst zlib = require('zlib')\nconst {\n bytesMatch,\n makePolicyContainer,\n clonePolicyContainer,\n requestBadPort,\n TAOCheck,\n appendRequestOriginHeader,\n responseLocationURL,\n requestCurrentURL,\n setRequestReferrerPolicyOnRedirect,\n tryUpgradeRequestToAPotentiallyTrustworthyURL,\n createOpaqueTimingInfo,\n appendFetchMetadata,\n corsCheck,\n crossOriginResourcePolicyCheck,\n determineRequestsReferrer,\n coarsenedSharedCurrentTime,\n createDeferredPromise,\n isBlobLike,\n sameOrigin,\n isCancelled,\n isAborted,\n isErrorLike,\n fullyReadBody,\n readableStreamClose,\n isomorphicEncode,\n urlIsLocal,\n urlIsHttpHttpsScheme,\n urlHasHttpsScheme\n} = require('./util')\nconst { kState, kHeaders, kGuard, kRealm } = require('./symbols')\nconst assert = require('assert')\nconst { safelyExtractBody } = require('./body')\nconst {\n redirectStatusSet,\n nullBodyStatus,\n safeMethodsSet,\n requestBodyHeader,\n subresourceSet,\n DOMException\n} = require('./constants')\nconst { kHeadersList } = require('../core/symbols')\nconst EE = require('events')\nconst { Readable, pipeline } = require('stream')\nconst { addAbortListener, isErrored, isReadable, nodeMajor, nodeMinor } = require('../core/util')\nconst { dataURLProcessor, serializeAMimeType } = require('./dataURL')\nconst { TransformStream } = require('stream/web')\nconst { getGlobalDispatcher } = require('../global')\nconst { webidl } = require('./webidl')\nconst { STATUS_CODES } = require('http')\nconst GET_OR_HEAD = ['GET', 'HEAD']\n\n/** @type {import('buffer').resolveObjectURL} */\nlet resolveObjectURL\nlet ReadableStream = globalThis.ReadableStream\n\nclass Fetch extends EE {\n constructor (dispatcher) {\n super()\n\n this.dispatcher = dispatcher\n this.connection = null\n this.dump = false\n this.state = 'ongoing'\n // 2 terminated listeners get added per request,\n // but only 1 gets removed. If there are 20 redirects,\n // 21 listeners will be added.\n // See https://github.com/nodejs/undici/issues/1711\n // TODO (fix): Find and fix root cause for leaked listener.\n this.setMaxListeners(21)\n }\n\n terminate (reason) {\n if (this.state !== 'ongoing') {\n return\n }\n\n this.state = 'terminated'\n this.connection?.destroy(reason)\n this.emit('terminated', reason)\n }\n\n // https://fetch.spec.whatwg.org/#fetch-controller-abort\n abort (error) {\n if (this.state !== 'ongoing') {\n return\n }\n\n // 1. Set controller’s state to \"aborted\".\n this.state = 'aborted'\n\n // 2. Let fallbackError be an \"AbortError\" DOMException.\n // 3. Set error to fallbackError if it is not given.\n if (!error) {\n error = new DOMException('The operation was aborted.', 'AbortError')\n }\n\n // 4. Let serializedError be StructuredSerialize(error).\n // If that threw an exception, catch it, and let\n // serializedError be StructuredSerialize(fallbackError).\n\n // 5. Set controller’s serialized abort reason to serializedError.\n this.serializedAbortReason = error\n\n this.connection?.destroy(error)\n this.emit('terminated', error)\n }\n}\n\n// https://fetch.spec.whatwg.org/#fetch-method\nfunction fetch (input, init = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'globalThis.fetch' })\n\n // 1. Let p be a new promise.\n const p = createDeferredPromise()\n\n // 2. Let requestObject be the result of invoking the initial value of\n // Request as constructor with input and init as arguments. If this throws\n // an exception, reject p with it and return p.\n let requestObject\n\n try {\n requestObject = new Request(input, init)\n } catch (e) {\n p.reject(e)\n return p.promise\n }\n\n // 3. Let request be requestObject’s request.\n const request = requestObject[kState]\n\n // 4. If requestObject’s signal’s aborted flag is set, then:\n if (requestObject.signal.aborted) {\n // 1. Abort the fetch() call with p, request, null, and\n // requestObject’s signal’s abort reason.\n abortFetch(p, request, null, requestObject.signal.reason)\n\n // 2. Return p.\n return p.promise\n }\n\n // 5. Let globalObject be request’s client’s global object.\n const globalObject = request.client.globalObject\n\n // 6. If globalObject is a ServiceWorkerGlobalScope object, then set\n // request’s service-workers mode to \"none\".\n if (globalObject?.constructor?.name === 'ServiceWorkerGlobalScope') {\n request.serviceWorkers = 'none'\n }\n\n // 7. Let responseObject be null.\n let responseObject = null\n\n // 8. Let relevantRealm be this’s relevant Realm.\n const relevantRealm = null\n\n // 9. Let locallyAborted be false.\n let locallyAborted = false\n\n // 10. Let controller be null.\n let controller = null\n\n // 11. Add the following abort steps to requestObject’s signal:\n addAbortListener(\n requestObject.signal,\n () => {\n // 1. Set locallyAborted to true.\n locallyAborted = true\n\n // 2. Assert: controller is non-null.\n assert(controller != null)\n\n // 3. Abort controller with requestObject’s signal’s abort reason.\n controller.abort(requestObject.signal.reason)\n\n // 4. Abort the fetch() call with p, request, responseObject,\n // and requestObject’s signal’s abort reason.\n abortFetch(p, request, responseObject, requestObject.signal.reason)\n }\n )\n\n // 12. Let handleFetchDone given response response be to finalize and\n // report timing with response, globalObject, and \"fetch\".\n const handleFetchDone = (response) =>\n finalizeAndReportTiming(response, 'fetch')\n\n // 13. Set controller to the result of calling fetch given request,\n // with processResponseEndOfBody set to handleFetchDone, and processResponse\n // given response being these substeps:\n\n const processResponse = (response) => {\n // 1. If locallyAborted is true, terminate these substeps.\n if (locallyAborted) {\n return Promise.resolve()\n }\n\n // 2. If response’s aborted flag is set, then:\n if (response.aborted) {\n // 1. Let deserializedError be the result of deserialize a serialized\n // abort reason given controller’s serialized abort reason and\n // relevantRealm.\n\n // 2. Abort the fetch() call with p, request, responseObject, and\n // deserializedError.\n\n abortFetch(p, request, responseObject, controller.serializedAbortReason)\n return Promise.resolve()\n }\n\n // 3. If response is a network error, then reject p with a TypeError\n // and terminate these substeps.\n if (response.type === 'error') {\n p.reject(\n Object.assign(new TypeError('fetch failed'), { cause: response.error })\n )\n return Promise.resolve()\n }\n\n // 4. Set responseObject to the result of creating a Response object,\n // given response, \"immutable\", and relevantRealm.\n responseObject = new Response()\n responseObject[kState] = response\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kHeadersList] = response.headersList\n responseObject[kHeaders][kGuard] = 'immutable'\n responseObject[kHeaders][kRealm] = relevantRealm\n\n // 5. Resolve p with responseObject.\n p.resolve(responseObject)\n }\n\n controller = fetching({\n request,\n processResponseEndOfBody: handleFetchDone,\n processResponse,\n dispatcher: init.dispatcher ?? getGlobalDispatcher() // undici\n })\n\n // 14. Return p.\n return p.promise\n}\n\n// https://fetch.spec.whatwg.org/#finalize-and-report-timing\nfunction finalizeAndReportTiming (response, initiatorType = 'other') {\n // 1. If response is an aborted network error, then return.\n if (response.type === 'error' && response.aborted) {\n return\n }\n\n // 2. If response’s URL list is null or empty, then return.\n if (!response.urlList?.length) {\n return\n }\n\n // 3. Let originalURL be response’s URL list[0].\n const originalURL = response.urlList[0]\n\n // 4. Let timingInfo be response’s timing info.\n let timingInfo = response.timingInfo\n\n // 5. Let cacheState be response’s cache state.\n let cacheState = response.cacheState\n\n // 6. If originalURL’s scheme is not an HTTP(S) scheme, then return.\n if (!urlIsHttpHttpsScheme(originalURL)) {\n return\n }\n\n // 7. If timingInfo is null, then return.\n if (timingInfo === null) {\n return\n }\n\n // 8. If response’s timing allow passed flag is not set, then:\n if (!response.timingAllowPassed) {\n // 1. Set timingInfo to a the result of creating an opaque timing info for timingInfo.\n timingInfo = createOpaqueTimingInfo({\n startTime: timingInfo.startTime\n })\n\n // 2. Set cacheState to the empty string.\n cacheState = ''\n }\n\n // 9. Set timingInfo’s end time to the coarsened shared current time\n // given global’s relevant settings object’s cross-origin isolated\n // capability.\n // TODO: given global’s relevant settings object’s cross-origin isolated\n // capability?\n timingInfo.endTime = coarsenedSharedCurrentTime()\n\n // 10. Set response’s timing info to timingInfo.\n response.timingInfo = timingInfo\n\n // 11. Mark resource timing for timingInfo, originalURL, initiatorType,\n // global, and cacheState.\n markResourceTiming(\n timingInfo,\n originalURL,\n initiatorType,\n globalThis,\n cacheState\n )\n}\n\n// https://w3c.github.io/resource-timing/#dfn-mark-resource-timing\nfunction markResourceTiming (timingInfo, originalURL, initiatorType, globalThis, cacheState) {\n if (nodeMajor > 18 || (nodeMajor === 18 && nodeMinor >= 2)) {\n performance.markResourceTiming(timingInfo, originalURL.href, initiatorType, globalThis, cacheState)\n }\n}\n\n// https://fetch.spec.whatwg.org/#abort-fetch\nfunction abortFetch (p, request, responseObject, error) {\n // Note: AbortSignal.reason was added in node v17.2.0\n // which would give us an undefined error to reject with.\n // Remove this once node v16 is no longer supported.\n if (!error) {\n error = new DOMException('The operation was aborted.', 'AbortError')\n }\n\n // 1. Reject promise with error.\n p.reject(error)\n\n // 2. If request’s body is not null and is readable, then cancel request’s\n // body with error.\n if (request.body != null && isReadable(request.body?.stream)) {\n request.body.stream.cancel(error).catch((err) => {\n if (err.code === 'ERR_INVALID_STATE') {\n // Node bug?\n return\n }\n throw err\n })\n }\n\n // 3. If responseObject is null, then return.\n if (responseObject == null) {\n return\n }\n\n // 4. Let response be responseObject’s response.\n const response = responseObject[kState]\n\n // 5. If response’s body is not null and is readable, then error response’s\n // body with error.\n if (response.body != null && isReadable(response.body?.stream)) {\n response.body.stream.cancel(error).catch((err) => {\n if (err.code === 'ERR_INVALID_STATE') {\n // Node bug?\n return\n }\n throw err\n })\n }\n}\n\n// https://fetch.spec.whatwg.org/#fetching\nfunction fetching ({\n request,\n processRequestBodyChunkLength,\n processRequestEndOfBody,\n processResponse,\n processResponseEndOfBody,\n processResponseConsumeBody,\n useParallelQueue = false,\n dispatcher // undici\n}) {\n // 1. Let taskDestination be null.\n let taskDestination = null\n\n // 2. Let crossOriginIsolatedCapability be false.\n let crossOriginIsolatedCapability = false\n\n // 3. If request’s client is non-null, then:\n if (request.client != null) {\n // 1. Set taskDestination to request’s client’s global object.\n taskDestination = request.client.globalObject\n\n // 2. Set crossOriginIsolatedCapability to request’s client’s cross-origin\n // isolated capability.\n crossOriginIsolatedCapability =\n request.client.crossOriginIsolatedCapability\n }\n\n // 4. If useParallelQueue is true, then set taskDestination to the result of\n // starting a new parallel queue.\n // TODO\n\n // 5. Let timingInfo be a new fetch timing info whose start time and\n // post-redirect start time are the coarsened shared current time given\n // crossOriginIsolatedCapability.\n const currenTime = coarsenedSharedCurrentTime(crossOriginIsolatedCapability)\n const timingInfo = createOpaqueTimingInfo({\n startTime: currenTime\n })\n\n // 6. Let fetchParams be a new fetch params whose\n // request is request,\n // timing info is timingInfo,\n // process request body chunk length is processRequestBodyChunkLength,\n // process request end-of-body is processRequestEndOfBody,\n // process response is processResponse,\n // process response consume body is processResponseConsumeBody,\n // process response end-of-body is processResponseEndOfBody,\n // task destination is taskDestination,\n // and cross-origin isolated capability is crossOriginIsolatedCapability.\n const fetchParams = {\n controller: new Fetch(dispatcher),\n request,\n timingInfo,\n processRequestBodyChunkLength,\n processRequestEndOfBody,\n processResponse,\n processResponseConsumeBody,\n processResponseEndOfBody,\n taskDestination,\n crossOriginIsolatedCapability\n }\n\n // 7. If request’s body is a byte sequence, then set request’s body to\n // request’s body as a body.\n // NOTE: Since fetching is only called from fetch, body should already be\n // extracted.\n assert(!request.body || request.body.stream)\n\n // 8. If request’s window is \"client\", then set request’s window to request’s\n // client, if request’s client’s global object is a Window object; otherwise\n // \"no-window\".\n if (request.window === 'client') {\n // TODO: What if request.client is null?\n request.window =\n request.client?.globalObject?.constructor?.name === 'Window'\n ? request.client\n : 'no-window'\n }\n\n // 9. If request’s origin is \"client\", then set request’s origin to request’s\n // client’s origin.\n if (request.origin === 'client') {\n // TODO: What if request.client is null?\n request.origin = request.client?.origin\n }\n\n // 10. If all of the following conditions are true:\n // TODO\n\n // 11. If request’s policy container is \"client\", then:\n if (request.policyContainer === 'client') {\n // 1. If request’s client is non-null, then set request’s policy\n // container to a clone of request’s client’s policy container. [HTML]\n if (request.client != null) {\n request.policyContainer = clonePolicyContainer(\n request.client.policyContainer\n )\n } else {\n // 2. Otherwise, set request’s policy container to a new policy\n // container.\n request.policyContainer = makePolicyContainer()\n }\n }\n\n // 12. If request’s header list does not contain `Accept`, then:\n if (!request.headersList.contains('accept')) {\n // 1. Let value be `*/*`.\n const value = '*/*'\n\n // 2. A user agent should set value to the first matching statement, if\n // any, switching on request’s destination:\n // \"document\"\n // \"frame\"\n // \"iframe\"\n // `text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8`\n // \"image\"\n // `image/png,image/svg+xml,image/*;q=0.8,*/*;q=0.5`\n // \"style\"\n // `text/css,*/*;q=0.1`\n // TODO\n\n // 3. Append `Accept`/value to request’s header list.\n request.headersList.append('accept', value)\n }\n\n // 13. If request’s header list does not contain `Accept-Language`, then\n // user agents should append `Accept-Language`/an appropriate value to\n // request’s header list.\n if (!request.headersList.contains('accept-language')) {\n request.headersList.append('accept-language', '*')\n }\n\n // 14. If request’s priority is null, then use request’s initiator and\n // destination appropriately in setting request’s priority to a\n // user-agent-defined object.\n if (request.priority === null) {\n // TODO\n }\n\n // 15. If request is a subresource request, then:\n if (subresourceSet.has(request.destination)) {\n // TODO\n }\n\n // 16. Run main fetch given fetchParams.\n mainFetch(fetchParams)\n .catch(err => {\n fetchParams.controller.terminate(err)\n })\n\n // 17. Return fetchParam's controller\n return fetchParams.controller\n}\n\n// https://fetch.spec.whatwg.org/#concept-main-fetch\nasync function mainFetch (fetchParams, recursive = false) {\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let response be null.\n let response = null\n\n // 3. If request’s local-URLs-only flag is set and request’s current URL is\n // not local, then set response to a network error.\n if (request.localURLsOnly && !urlIsLocal(requestCurrentURL(request))) {\n response = makeNetworkError('local URLs only')\n }\n\n // 4. Run report Content Security Policy violations for request.\n // TODO\n\n // 5. Upgrade request to a potentially trustworthy URL, if appropriate.\n tryUpgradeRequestToAPotentiallyTrustworthyURL(request)\n\n // 6. If should request be blocked due to a bad port, should fetching request\n // be blocked as mixed content, or should request be blocked by Content\n // Security Policy returns blocked, then set response to a network error.\n if (requestBadPort(request) === 'blocked') {\n response = makeNetworkError('bad port')\n }\n // TODO: should fetching request be blocked as mixed content?\n // TODO: should request be blocked by Content Security Policy?\n\n // 7. If request’s referrer policy is the empty string, then set request’s\n // referrer policy to request’s policy container’s referrer policy.\n if (request.referrerPolicy === '') {\n request.referrerPolicy = request.policyContainer.referrerPolicy\n }\n\n // 8. If request’s referrer is not \"no-referrer\", then set request’s\n // referrer to the result of invoking determine request’s referrer.\n if (request.referrer !== 'no-referrer') {\n request.referrer = determineRequestsReferrer(request)\n }\n\n // 9. Set request’s current URL’s scheme to \"https\" if all of the following\n // conditions are true:\n // - request’s current URL’s scheme is \"http\"\n // - request’s current URL’s host is a domain\n // - Matching request’s current URL’s host per Known HSTS Host Domain Name\n // Matching results in either a superdomain match with an asserted\n // includeSubDomains directive or a congruent match (with or without an\n // asserted includeSubDomains directive). [HSTS]\n // TODO\n\n // 10. If recursive is false, then run the remaining steps in parallel.\n // TODO\n\n // 11. If response is null, then set response to the result of running\n // the steps corresponding to the first matching statement:\n if (response === null) {\n response = await (async () => {\n const currentURL = requestCurrentURL(request)\n\n if (\n // - request’s current URL’s origin is same origin with request’s origin,\n // and request’s response tainting is \"basic\"\n (sameOrigin(currentURL, request.url) && request.responseTainting === 'basic') ||\n // request’s current URL’s scheme is \"data\"\n (currentURL.protocol === 'data:') ||\n // - request’s mode is \"navigate\" or \"websocket\"\n (request.mode === 'navigate' || request.mode === 'websocket')\n ) {\n // 1. Set request’s response tainting to \"basic\".\n request.responseTainting = 'basic'\n\n // 2. Return the result of running scheme fetch given fetchParams.\n return await schemeFetch(fetchParams)\n }\n\n // request’s mode is \"same-origin\"\n if (request.mode === 'same-origin') {\n // 1. Return a network error.\n return makeNetworkError('request mode cannot be \"same-origin\"')\n }\n\n // request’s mode is \"no-cors\"\n if (request.mode === 'no-cors') {\n // 1. If request’s redirect mode is not \"follow\", then return a network\n // error.\n if (request.redirect !== 'follow') {\n return makeNetworkError(\n 'redirect mode cannot be \"follow\" for \"no-cors\" request'\n )\n }\n\n // 2. Set request’s response tainting to \"opaque\".\n request.responseTainting = 'opaque'\n\n // 3. Return the result of running scheme fetch given fetchParams.\n return await schemeFetch(fetchParams)\n }\n\n // request’s current URL’s scheme is not an HTTP(S) scheme\n if (!urlIsHttpHttpsScheme(requestCurrentURL(request))) {\n // Return a network error.\n return makeNetworkError('URL scheme must be a HTTP(S) scheme')\n }\n\n // - request’s use-CORS-preflight flag is set\n // - request’s unsafe-request flag is set and either request’s method is\n // not a CORS-safelisted method or CORS-unsafe request-header names with\n // request’s header list is not empty\n // 1. Set request’s response tainting to \"cors\".\n // 2. Let corsWithPreflightResponse be the result of running HTTP fetch\n // given fetchParams and true.\n // 3. If corsWithPreflightResponse is a network error, then clear cache\n // entries using request.\n // 4. Return corsWithPreflightResponse.\n // TODO\n\n // Otherwise\n // 1. Set request’s response tainting to \"cors\".\n request.responseTainting = 'cors'\n\n // 2. Return the result of running HTTP fetch given fetchParams.\n return await httpFetch(fetchParams)\n })()\n }\n\n // 12. If recursive is true, then return response.\n if (recursive) {\n return response\n }\n\n // 13. If response is not a network error and response is not a filtered\n // response, then:\n if (response.status !== 0 && !response.internalResponse) {\n // If request’s response tainting is \"cors\", then:\n if (request.responseTainting === 'cors') {\n // 1. Let headerNames be the result of extracting header list values\n // given `Access-Control-Expose-Headers` and response’s header list.\n // TODO\n // 2. If request’s credentials mode is not \"include\" and headerNames\n // contains `*`, then set response’s CORS-exposed header-name list to\n // all unique header names in response’s header list.\n // TODO\n // 3. Otherwise, if headerNames is not null or failure, then set\n // response’s CORS-exposed header-name list to headerNames.\n // TODO\n }\n\n // Set response to the following filtered response with response as its\n // internal response, depending on request’s response tainting:\n if (request.responseTainting === 'basic') {\n response = filterResponse(response, 'basic')\n } else if (request.responseTainting === 'cors') {\n response = filterResponse(response, 'cors')\n } else if (request.responseTainting === 'opaque') {\n response = filterResponse(response, 'opaque')\n } else {\n assert(false)\n }\n }\n\n // 14. Let internalResponse be response, if response is a network error,\n // and response’s internal response otherwise.\n let internalResponse =\n response.status === 0 ? response : response.internalResponse\n\n // 15. If internalResponse’s URL list is empty, then set it to a clone of\n // request’s URL list.\n if (internalResponse.urlList.length === 0) {\n internalResponse.urlList.push(...request.urlList)\n }\n\n // 16. If request’s timing allow failed flag is unset, then set\n // internalResponse’s timing allow passed flag.\n if (!request.timingAllowFailed) {\n response.timingAllowPassed = true\n }\n\n // 17. If response is not a network error and any of the following returns\n // blocked\n // - should internalResponse to request be blocked as mixed content\n // - should internalResponse to request be blocked by Content Security Policy\n // - should internalResponse to request be blocked due to its MIME type\n // - should internalResponse to request be blocked due to nosniff\n // TODO\n\n // 18. If response’s type is \"opaque\", internalResponse’s status is 206,\n // internalResponse’s range-requested flag is set, and request’s header\n // list does not contain `Range`, then set response and internalResponse\n // to a network error.\n if (\n response.type === 'opaque' &&\n internalResponse.status === 206 &&\n internalResponse.rangeRequested &&\n !request.headers.contains('range')\n ) {\n response = internalResponse = makeNetworkError()\n }\n\n // 19. If response is not a network error and either request’s method is\n // `HEAD` or `CONNECT`, or internalResponse’s status is a null body status,\n // set internalResponse’s body to null and disregard any enqueuing toward\n // it (if any).\n if (\n response.status !== 0 &&\n (request.method === 'HEAD' ||\n request.method === 'CONNECT' ||\n nullBodyStatus.includes(internalResponse.status))\n ) {\n internalResponse.body = null\n fetchParams.controller.dump = true\n }\n\n // 20. If request’s integrity metadata is not the empty string, then:\n if (request.integrity) {\n // 1. Let processBodyError be this step: run fetch finale given fetchParams\n // and a network error.\n const processBodyError = (reason) =>\n fetchFinale(fetchParams, makeNetworkError(reason))\n\n // 2. If request’s response tainting is \"opaque\", or response’s body is null,\n // then run processBodyError and abort these steps.\n if (request.responseTainting === 'opaque' || response.body == null) {\n processBodyError(response.error)\n return\n }\n\n // 3. Let processBody given bytes be these steps:\n const processBody = (bytes) => {\n // 1. If bytes do not match request’s integrity metadata,\n // then run processBodyError and abort these steps. [SRI]\n if (!bytesMatch(bytes, request.integrity)) {\n processBodyError('integrity mismatch')\n return\n }\n\n // 2. Set response’s body to bytes as a body.\n response.body = safelyExtractBody(bytes)[0]\n\n // 3. Run fetch finale given fetchParams and response.\n fetchFinale(fetchParams, response)\n }\n\n // 4. Fully read response’s body given processBody and processBodyError.\n await fullyReadBody(response.body, processBody, processBodyError)\n } else {\n // 21. Otherwise, run fetch finale given fetchParams and response.\n fetchFinale(fetchParams, response)\n }\n}\n\n// https://fetch.spec.whatwg.org/#concept-scheme-fetch\n// given a fetch params fetchParams\nfunction schemeFetch (fetchParams) {\n // Note: since the connection is destroyed on redirect, which sets fetchParams to a\n // cancelled state, we do not want this condition to trigger *unless* there have been\n // no redirects. See https://github.com/nodejs/undici/issues/1776\n // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n if (isCancelled(fetchParams) && fetchParams.request.redirectCount === 0) {\n return Promise.resolve(makeAppropriateNetworkError(fetchParams))\n }\n\n // 2. Let request be fetchParams’s request.\n const { request } = fetchParams\n\n const { protocol: scheme } = requestCurrentURL(request)\n\n // 3. Switch on request’s current URL’s scheme and run the associated steps:\n switch (scheme) {\n case 'about:': {\n // If request’s current URL’s path is the string \"blank\", then return a new response\n // whose status message is `OK`, header list is « (`Content-Type`, `text/html;charset=utf-8`) »,\n // and body is the empty byte sequence as a body.\n\n // Otherwise, return a network error.\n return Promise.resolve(makeNetworkError('about scheme is not supported'))\n }\n case 'blob:': {\n if (!resolveObjectURL) {\n resolveObjectURL = require('buffer').resolveObjectURL\n }\n\n // 1. Let blobURLEntry be request’s current URL’s blob URL entry.\n const blobURLEntry = requestCurrentURL(request)\n\n // https://github.com/web-platform-tests/wpt/blob/7b0ebaccc62b566a1965396e5be7bb2bc06f841f/FileAPI/url/resources/fetch-tests.js#L52-L56\n // Buffer.resolveObjectURL does not ignore URL queries.\n if (blobURLEntry.search.length !== 0) {\n return Promise.resolve(makeNetworkError('NetworkError when attempting to fetch resource.'))\n }\n\n const blobURLEntryObject = resolveObjectURL(blobURLEntry.toString())\n\n // 2. If request’s method is not `GET`, blobURLEntry is null, or blobURLEntry’s\n // object is not a Blob object, then return a network error.\n if (request.method !== 'GET' || !isBlobLike(blobURLEntryObject)) {\n return Promise.resolve(makeNetworkError('invalid method'))\n }\n\n // 3. Let bodyWithType be the result of safely extracting blobURLEntry’s object.\n const bodyWithType = safelyExtractBody(blobURLEntryObject)\n\n // 4. Let body be bodyWithType’s body.\n const body = bodyWithType[0]\n\n // 5. Let length be body’s length, serialized and isomorphic encoded.\n const length = isomorphicEncode(`${body.length}`)\n\n // 6. Let type be bodyWithType’s type if it is non-null; otherwise the empty byte sequence.\n const type = bodyWithType[1] ?? ''\n\n // 7. Return a new response whose status message is `OK`, header list is\n // « (`Content-Length`, length), (`Content-Type`, type) », and body is body.\n const response = makeResponse({\n statusText: 'OK',\n headersList: [\n ['content-length', { name: 'Content-Length', value: length }],\n ['content-type', { name: 'Content-Type', value: type }]\n ]\n })\n\n response.body = body\n\n return Promise.resolve(response)\n }\n case 'data:': {\n // 1. Let dataURLStruct be the result of running the\n // data: URL processor on request’s current URL.\n const currentURL = requestCurrentURL(request)\n const dataURLStruct = dataURLProcessor(currentURL)\n\n // 2. If dataURLStruct is failure, then return a\n // network error.\n if (dataURLStruct === 'failure') {\n return Promise.resolve(makeNetworkError('failed to fetch the data URL'))\n }\n\n // 3. Let mimeType be dataURLStruct’s MIME type, serialized.\n const mimeType = serializeAMimeType(dataURLStruct.mimeType)\n\n // 4. Return a response whose status message is `OK`,\n // header list is « (`Content-Type`, mimeType) »,\n // and body is dataURLStruct’s body as a body.\n return Promise.resolve(makeResponse({\n statusText: 'OK',\n headersList: [\n ['content-type', { name: 'Content-Type', value: mimeType }]\n ],\n body: safelyExtractBody(dataURLStruct.body)[0]\n }))\n }\n case 'file:': {\n // For now, unfortunate as it is, file URLs are left as an exercise for the reader.\n // When in doubt, return a network error.\n return Promise.resolve(makeNetworkError('not implemented... yet...'))\n }\n case 'http:':\n case 'https:': {\n // Return the result of running HTTP fetch given fetchParams.\n\n return httpFetch(fetchParams)\n .catch((err) => makeNetworkError(err))\n }\n default: {\n return Promise.resolve(makeNetworkError('unknown scheme'))\n }\n }\n}\n\n// https://fetch.spec.whatwg.org/#finalize-response\nfunction finalizeResponse (fetchParams, response) {\n // 1. Set fetchParams’s request’s done flag.\n fetchParams.request.done = true\n\n // 2, If fetchParams’s process response done is not null, then queue a fetch\n // task to run fetchParams’s process response done given response, with\n // fetchParams’s task destination.\n if (fetchParams.processResponseDone != null) {\n queueMicrotask(() => fetchParams.processResponseDone(response))\n }\n}\n\n// https://fetch.spec.whatwg.org/#fetch-finale\nfunction fetchFinale (fetchParams, response) {\n // 1. If response is a network error, then:\n if (response.type === 'error') {\n // 1. Set response’s URL list to « fetchParams’s request’s URL list[0] ».\n response.urlList = [fetchParams.request.urlList[0]]\n\n // 2. Set response’s timing info to the result of creating an opaque timing\n // info for fetchParams’s timing info.\n response.timingInfo = createOpaqueTimingInfo({\n startTime: fetchParams.timingInfo.startTime\n })\n }\n\n // 2. Let processResponseEndOfBody be the following steps:\n const processResponseEndOfBody = () => {\n // 1. Set fetchParams’s request’s done flag.\n fetchParams.request.done = true\n\n // If fetchParams’s process response end-of-body is not null,\n // then queue a fetch task to run fetchParams’s process response\n // end-of-body given response with fetchParams’s task destination.\n if (fetchParams.processResponseEndOfBody != null) {\n queueMicrotask(() => fetchParams.processResponseEndOfBody(response))\n }\n }\n\n // 3. If fetchParams’s process response is non-null, then queue a fetch task\n // to run fetchParams’s process response given response, with fetchParams’s\n // task destination.\n if (fetchParams.processResponse != null) {\n queueMicrotask(() => fetchParams.processResponse(response))\n }\n\n // 4. If response’s body is null, then run processResponseEndOfBody.\n if (response.body == null) {\n processResponseEndOfBody()\n } else {\n // 5. Otherwise:\n\n // 1. Let transformStream be a new a TransformStream.\n\n // 2. Let identityTransformAlgorithm be an algorithm which, given chunk,\n // enqueues chunk in transformStream.\n const identityTransformAlgorithm = (chunk, controller) => {\n controller.enqueue(chunk)\n }\n\n // 3. Set up transformStream with transformAlgorithm set to identityTransformAlgorithm\n // and flushAlgorithm set to processResponseEndOfBody.\n const transformStream = new TransformStream({\n start () {},\n transform: identityTransformAlgorithm,\n flush: processResponseEndOfBody\n }, {\n size () {\n return 1\n }\n }, {\n size () {\n return 1\n }\n })\n\n // 4. Set response’s body to the result of piping response’s body through transformStream.\n response.body = { stream: response.body.stream.pipeThrough(transformStream) }\n }\n\n // 6. If fetchParams’s process response consume body is non-null, then:\n if (fetchParams.processResponseConsumeBody != null) {\n // 1. Let processBody given nullOrBytes be this step: run fetchParams’s\n // process response consume body given response and nullOrBytes.\n const processBody = (nullOrBytes) => fetchParams.processResponseConsumeBody(response, nullOrBytes)\n\n // 2. Let processBodyError be this step: run fetchParams’s process\n // response consume body given response and failure.\n const processBodyError = (failure) => fetchParams.processResponseConsumeBody(response, failure)\n\n // 3. If response’s body is null, then queue a fetch task to run processBody\n // given null, with fetchParams’s task destination.\n if (response.body == null) {\n queueMicrotask(() => processBody(null))\n } else {\n // 4. Otherwise, fully read response’s body given processBody, processBodyError,\n // and fetchParams’s task destination.\n return fullyReadBody(response.body, processBody, processBodyError)\n }\n return Promise.resolve()\n }\n}\n\n// https://fetch.spec.whatwg.org/#http-fetch\nasync function httpFetch (fetchParams) {\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let response be null.\n let response = null\n\n // 3. Let actualResponse be null.\n let actualResponse = null\n\n // 4. Let timingInfo be fetchParams’s timing info.\n const timingInfo = fetchParams.timingInfo\n\n // 5. If request’s service-workers mode is \"all\", then:\n if (request.serviceWorkers === 'all') {\n // TODO\n }\n\n // 6. If response is null, then:\n if (response === null) {\n // 1. If makeCORSPreflight is true and one of these conditions is true:\n // TODO\n\n // 2. If request’s redirect mode is \"follow\", then set request’s\n // service-workers mode to \"none\".\n if (request.redirect === 'follow') {\n request.serviceWorkers = 'none'\n }\n\n // 3. Set response and actualResponse to the result of running\n // HTTP-network-or-cache fetch given fetchParams.\n actualResponse = response = await httpNetworkOrCacheFetch(fetchParams)\n\n // 4. If request’s response tainting is \"cors\" and a CORS check\n // for request and response returns failure, then return a network error.\n if (\n request.responseTainting === 'cors' &&\n corsCheck(request, response) === 'failure'\n ) {\n return makeNetworkError('cors failure')\n }\n\n // 5. If the TAO check for request and response returns failure, then set\n // request’s timing allow failed flag.\n if (TAOCheck(request, response) === 'failure') {\n request.timingAllowFailed = true\n }\n }\n\n // 7. If either request’s response tainting or response’s type\n // is \"opaque\", and the cross-origin resource policy check with\n // request’s origin, request’s client, request’s destination,\n // and actualResponse returns blocked, then return a network error.\n if (\n (request.responseTainting === 'opaque' || response.type === 'opaque') &&\n crossOriginResourcePolicyCheck(\n request.origin,\n request.client,\n request.destination,\n actualResponse\n ) === 'blocked'\n ) {\n return makeNetworkError('blocked')\n }\n\n // 8. If actualResponse’s status is a redirect status, then:\n if (redirectStatusSet.has(actualResponse.status)) {\n // 1. If actualResponse’s status is not 303, request’s body is not null,\n // and the connection uses HTTP/2, then user agents may, and are even\n // encouraged to, transmit an RST_STREAM frame.\n // See, https://github.com/whatwg/fetch/issues/1288\n if (request.redirect !== 'manual') {\n fetchParams.controller.connection.destroy()\n }\n\n // 2. Switch on request’s redirect mode:\n if (request.redirect === 'error') {\n // Set response to a network error.\n response = makeNetworkError('unexpected redirect')\n } else if (request.redirect === 'manual') {\n // Set response to an opaque-redirect filtered response whose internal\n // response is actualResponse.\n // NOTE(spec): On the web this would return an `opaqueredirect` response,\n // but that doesn't make sense server side.\n // See https://github.com/nodejs/undici/issues/1193.\n response = actualResponse\n } else if (request.redirect === 'follow') {\n // Set response to the result of running HTTP-redirect fetch given\n // fetchParams and response.\n response = await httpRedirectFetch(fetchParams, response)\n } else {\n assert(false)\n }\n }\n\n // 9. Set response’s timing info to timingInfo.\n response.timingInfo = timingInfo\n\n // 10. Return response.\n return response\n}\n\n// https://fetch.spec.whatwg.org/#http-redirect-fetch\nfunction httpRedirectFetch (fetchParams, response) {\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let actualResponse be response, if response is not a filtered response,\n // and response’s internal response otherwise.\n const actualResponse = response.internalResponse\n ? response.internalResponse\n : response\n\n // 3. Let locationURL be actualResponse’s location URL given request’s current\n // URL’s fragment.\n let locationURL\n\n try {\n locationURL = responseLocationURL(\n actualResponse,\n requestCurrentURL(request).hash\n )\n\n // 4. If locationURL is null, then return response.\n if (locationURL == null) {\n return response\n }\n } catch (err) {\n // 5. If locationURL is failure, then return a network error.\n return Promise.resolve(makeNetworkError(err))\n }\n\n // 6. If locationURL’s scheme is not an HTTP(S) scheme, then return a network\n // error.\n if (!urlIsHttpHttpsScheme(locationURL)) {\n return Promise.resolve(makeNetworkError('URL scheme must be a HTTP(S) scheme'))\n }\n\n // 7. If request’s redirect count is 20, then return a network error.\n if (request.redirectCount === 20) {\n return Promise.resolve(makeNetworkError('redirect count exceeded'))\n }\n\n // 8. Increase request’s redirect count by 1.\n request.redirectCount += 1\n\n // 9. If request’s mode is \"cors\", locationURL includes credentials, and\n // request’s origin is not same origin with locationURL’s origin, then return\n // a network error.\n if (\n request.mode === 'cors' &&\n (locationURL.username || locationURL.password) &&\n !sameOrigin(request, locationURL)\n ) {\n return Promise.resolve(makeNetworkError('cross origin not allowed for request mode \"cors\"'))\n }\n\n // 10. If request’s response tainting is \"cors\" and locationURL includes\n // credentials, then return a network error.\n if (\n request.responseTainting === 'cors' &&\n (locationURL.username || locationURL.password)\n ) {\n return Promise.resolve(makeNetworkError(\n 'URL cannot contain credentials for request mode \"cors\"'\n ))\n }\n\n // 11. If actualResponse’s status is not 303, request’s body is non-null,\n // and request’s body’s source is null, then return a network error.\n if (\n actualResponse.status !== 303 &&\n request.body != null &&\n request.body.source == null\n ) {\n return Promise.resolve(makeNetworkError())\n }\n\n // 12. If one of the following is true\n // - actualResponse’s status is 301 or 302 and request’s method is `POST`\n // - actualResponse’s status is 303 and request’s method is not `GET` or `HEAD`\n if (\n ([301, 302].includes(actualResponse.status) && request.method === 'POST') ||\n (actualResponse.status === 303 &&\n !GET_OR_HEAD.includes(request.method))\n ) {\n // then:\n // 1. Set request’s method to `GET` and request’s body to null.\n request.method = 'GET'\n request.body = null\n\n // 2. For each headerName of request-body-header name, delete headerName from\n // request’s header list.\n for (const headerName of requestBodyHeader) {\n request.headersList.delete(headerName)\n }\n }\n\n // 13. If request’s current URL’s origin is not same origin with locationURL’s\n // origin, then for each headerName of CORS non-wildcard request-header name,\n // delete headerName from request’s header list.\n if (!sameOrigin(requestCurrentURL(request), locationURL)) {\n // https://fetch.spec.whatwg.org/#cors-non-wildcard-request-header-name\n request.headersList.delete('authorization')\n\n // https://fetch.spec.whatwg.org/#authentication-entries\n request.headersList.delete('proxy-authorization', true)\n\n // \"Cookie\" and \"Host\" are forbidden request-headers, which undici doesn't implement.\n request.headersList.delete('cookie')\n request.headersList.delete('host')\n }\n\n // 14. If request’s body is non-null, then set request’s body to the first return\n // value of safely extracting request’s body’s source.\n if (request.body != null) {\n assert(request.body.source != null)\n request.body = safelyExtractBody(request.body.source)[0]\n }\n\n // 15. Let timingInfo be fetchParams’s timing info.\n const timingInfo = fetchParams.timingInfo\n\n // 16. Set timingInfo’s redirect end time and post-redirect start time to the\n // coarsened shared current time given fetchParams’s cross-origin isolated\n // capability.\n timingInfo.redirectEndTime = timingInfo.postRedirectStartTime =\n coarsenedSharedCurrentTime(fetchParams.crossOriginIsolatedCapability)\n\n // 17. If timingInfo’s redirect start time is 0, then set timingInfo’s\n // redirect start time to timingInfo’s start time.\n if (timingInfo.redirectStartTime === 0) {\n timingInfo.redirectStartTime = timingInfo.startTime\n }\n\n // 18. Append locationURL to request’s URL list.\n request.urlList.push(locationURL)\n\n // 19. Invoke set request’s referrer policy on redirect on request and\n // actualResponse.\n setRequestReferrerPolicyOnRedirect(request, actualResponse)\n\n // 20. Return the result of running main fetch given fetchParams and true.\n return mainFetch(fetchParams, true)\n}\n\n// https://fetch.spec.whatwg.org/#http-network-or-cache-fetch\nasync function httpNetworkOrCacheFetch (\n fetchParams,\n isAuthenticationFetch = false,\n isNewConnectionFetch = false\n) {\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let httpFetchParams be null.\n let httpFetchParams = null\n\n // 3. Let httpRequest be null.\n let httpRequest = null\n\n // 4. Let response be null.\n let response = null\n\n // 5. Let storedResponse be null.\n // TODO: cache\n\n // 6. Let httpCache be null.\n const httpCache = null\n\n // 7. Let the revalidatingFlag be unset.\n const revalidatingFlag = false\n\n // 8. Run these steps, but abort when the ongoing fetch is terminated:\n\n // 1. If request’s window is \"no-window\" and request’s redirect mode is\n // \"error\", then set httpFetchParams to fetchParams and httpRequest to\n // request.\n if (request.window === 'no-window' && request.redirect === 'error') {\n httpFetchParams = fetchParams\n httpRequest = request\n } else {\n // Otherwise:\n\n // 1. Set httpRequest to a clone of request.\n httpRequest = makeRequest(request)\n\n // 2. Set httpFetchParams to a copy of fetchParams.\n httpFetchParams = { ...fetchParams }\n\n // 3. Set httpFetchParams’s request to httpRequest.\n httpFetchParams.request = httpRequest\n }\n\n // 3. Let includeCredentials be true if one of\n const includeCredentials =\n request.credentials === 'include' ||\n (request.credentials === 'same-origin' &&\n request.responseTainting === 'basic')\n\n // 4. Let contentLength be httpRequest’s body’s length, if httpRequest’s\n // body is non-null; otherwise null.\n const contentLength = httpRequest.body ? httpRequest.body.length : null\n\n // 5. Let contentLengthHeaderValue be null.\n let contentLengthHeaderValue = null\n\n // 6. If httpRequest’s body is null and httpRequest’s method is `POST` or\n // `PUT`, then set contentLengthHeaderValue to `0`.\n if (\n httpRequest.body == null &&\n ['POST', 'PUT'].includes(httpRequest.method)\n ) {\n contentLengthHeaderValue = '0'\n }\n\n // 7. If contentLength is non-null, then set contentLengthHeaderValue to\n // contentLength, serialized and isomorphic encoded.\n if (contentLength != null) {\n contentLengthHeaderValue = isomorphicEncode(`${contentLength}`)\n }\n\n // 8. If contentLengthHeaderValue is non-null, then append\n // `Content-Length`/contentLengthHeaderValue to httpRequest’s header\n // list.\n if (contentLengthHeaderValue != null) {\n httpRequest.headersList.append('content-length', contentLengthHeaderValue)\n }\n\n // 9. If contentLengthHeaderValue is non-null, then append (`Content-Length`,\n // contentLengthHeaderValue) to httpRequest’s header list.\n\n // 10. If contentLength is non-null and httpRequest’s keepalive is true,\n // then:\n if (contentLength != null && httpRequest.keepalive) {\n // NOTE: keepalive is a noop outside of browser context.\n }\n\n // 11. If httpRequest’s referrer is a URL, then append\n // `Referer`/httpRequest’s referrer, serialized and isomorphic encoded,\n // to httpRequest’s header list.\n if (httpRequest.referrer instanceof URL) {\n httpRequest.headersList.append('referer', isomorphicEncode(httpRequest.referrer.href))\n }\n\n // 12. Append a request `Origin` header for httpRequest.\n appendRequestOriginHeader(httpRequest)\n\n // 13. Append the Fetch metadata headers for httpRequest. [FETCH-METADATA]\n appendFetchMetadata(httpRequest)\n\n // 14. If httpRequest’s header list does not contain `User-Agent`, then\n // user agents should append `User-Agent`/default `User-Agent` value to\n // httpRequest’s header list.\n if (!httpRequest.headersList.contains('user-agent')) {\n httpRequest.headersList.append('user-agent', typeof esbuildDetection === 'undefined' ? 'undici' : 'node')\n }\n\n // 15. If httpRequest’s cache mode is \"default\" and httpRequest’s header\n // list contains `If-Modified-Since`, `If-None-Match`,\n // `If-Unmodified-Since`, `If-Match`, or `If-Range`, then set\n // httpRequest’s cache mode to \"no-store\".\n if (\n httpRequest.cache === 'default' &&\n (httpRequest.headersList.contains('if-modified-since') ||\n httpRequest.headersList.contains('if-none-match') ||\n httpRequest.headersList.contains('if-unmodified-since') ||\n httpRequest.headersList.contains('if-match') ||\n httpRequest.headersList.contains('if-range'))\n ) {\n httpRequest.cache = 'no-store'\n }\n\n // 16. If httpRequest’s cache mode is \"no-cache\", httpRequest’s prevent\n // no-cache cache-control header modification flag is unset, and\n // httpRequest’s header list does not contain `Cache-Control`, then append\n // `Cache-Control`/`max-age=0` to httpRequest’s header list.\n if (\n httpRequest.cache === 'no-cache' &&\n !httpRequest.preventNoCacheCacheControlHeaderModification &&\n !httpRequest.headersList.contains('cache-control')\n ) {\n httpRequest.headersList.append('cache-control', 'max-age=0')\n }\n\n // 17. If httpRequest’s cache mode is \"no-store\" or \"reload\", then:\n if (httpRequest.cache === 'no-store' || httpRequest.cache === 'reload') {\n // 1. If httpRequest’s header list does not contain `Pragma`, then append\n // `Pragma`/`no-cache` to httpRequest’s header list.\n if (!httpRequest.headersList.contains('pragma')) {\n httpRequest.headersList.append('pragma', 'no-cache')\n }\n\n // 2. If httpRequest’s header list does not contain `Cache-Control`,\n // then append `Cache-Control`/`no-cache` to httpRequest’s header list.\n if (!httpRequest.headersList.contains('cache-control')) {\n httpRequest.headersList.append('cache-control', 'no-cache')\n }\n }\n\n // 18. If httpRequest’s header list contains `Range`, then append\n // `Accept-Encoding`/`identity` to httpRequest’s header list.\n if (httpRequest.headersList.contains('range')) {\n httpRequest.headersList.append('accept-encoding', 'identity')\n }\n\n // 19. Modify httpRequest’s header list per HTTP. Do not append a given\n // header if httpRequest’s header list contains that header’s name.\n // TODO: https://github.com/whatwg/fetch/issues/1285#issuecomment-896560129\n if (!httpRequest.headersList.contains('accept-encoding')) {\n if (urlHasHttpsScheme(requestCurrentURL(httpRequest))) {\n httpRequest.headersList.append('accept-encoding', 'br, gzip, deflate')\n } else {\n httpRequest.headersList.append('accept-encoding', 'gzip, deflate')\n }\n }\n\n httpRequest.headersList.delete('host')\n\n // 20. If includeCredentials is true, then:\n if (includeCredentials) {\n // 1. If the user agent is not configured to block cookies for httpRequest\n // (see section 7 of [COOKIES]), then:\n // TODO: credentials\n // 2. If httpRequest’s header list does not contain `Authorization`, then:\n // TODO: credentials\n }\n\n // 21. If there’s a proxy-authentication entry, use it as appropriate.\n // TODO: proxy-authentication\n\n // 22. Set httpCache to the result of determining the HTTP cache\n // partition, given httpRequest.\n // TODO: cache\n\n // 23. If httpCache is null, then set httpRequest’s cache mode to\n // \"no-store\".\n if (httpCache == null) {\n httpRequest.cache = 'no-store'\n }\n\n // 24. If httpRequest’s cache mode is neither \"no-store\" nor \"reload\",\n // then:\n if (httpRequest.mode !== 'no-store' && httpRequest.mode !== 'reload') {\n // TODO: cache\n }\n\n // 9. If aborted, then return the appropriate network error for fetchParams.\n // TODO\n\n // 10. If response is null, then:\n if (response == null) {\n // 1. If httpRequest’s cache mode is \"only-if-cached\", then return a\n // network error.\n if (httpRequest.mode === 'only-if-cached') {\n return makeNetworkError('only if cached')\n }\n\n // 2. Let forwardResponse be the result of running HTTP-network fetch\n // given httpFetchParams, includeCredentials, and isNewConnectionFetch.\n const forwardResponse = await httpNetworkFetch(\n httpFetchParams,\n includeCredentials,\n isNewConnectionFetch\n )\n\n // 3. If httpRequest’s method is unsafe and forwardResponse’s status is\n // in the range 200 to 399, inclusive, invalidate appropriate stored\n // responses in httpCache, as per the \"Invalidation\" chapter of HTTP\n // Caching, and set storedResponse to null. [HTTP-CACHING]\n if (\n !safeMethodsSet.has(httpRequest.method) &&\n forwardResponse.status >= 200 &&\n forwardResponse.status <= 399\n ) {\n // TODO: cache\n }\n\n // 4. If the revalidatingFlag is set and forwardResponse’s status is 304,\n // then:\n if (revalidatingFlag && forwardResponse.status === 304) {\n // TODO: cache\n }\n\n // 5. If response is null, then:\n if (response == null) {\n // 1. Set response to forwardResponse.\n response = forwardResponse\n\n // 2. Store httpRequest and forwardResponse in httpCache, as per the\n // \"Storing Responses in Caches\" chapter of HTTP Caching. [HTTP-CACHING]\n // TODO: cache\n }\n }\n\n // 11. Set response’s URL list to a clone of httpRequest’s URL list.\n response.urlList = [...httpRequest.urlList]\n\n // 12. If httpRequest’s header list contains `Range`, then set response’s\n // range-requested flag.\n if (httpRequest.headersList.contains('range')) {\n response.rangeRequested = true\n }\n\n // 13. Set response’s request-includes-credentials to includeCredentials.\n response.requestIncludesCredentials = includeCredentials\n\n // 14. If response’s status is 401, httpRequest’s response tainting is not\n // \"cors\", includeCredentials is true, and request’s window is an environment\n // settings object, then:\n // TODO\n\n // 15. If response’s status is 407, then:\n if (response.status === 407) {\n // 1. If request’s window is \"no-window\", then return a network error.\n if (request.window === 'no-window') {\n return makeNetworkError()\n }\n\n // 2. ???\n\n // 3. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n if (isCancelled(fetchParams)) {\n return makeAppropriateNetworkError(fetchParams)\n }\n\n // 4. Prompt the end user as appropriate in request’s window and store\n // the result as a proxy-authentication entry. [HTTP-AUTH]\n // TODO: Invoke some kind of callback?\n\n // 5. Set response to the result of running HTTP-network-or-cache fetch given\n // fetchParams.\n // TODO\n return makeNetworkError('proxy authentication required')\n }\n\n // 16. If all of the following are true\n if (\n // response’s status is 421\n response.status === 421 &&\n // isNewConnectionFetch is false\n !isNewConnectionFetch &&\n // request’s body is null, or request’s body is non-null and request’s body’s source is non-null\n (request.body == null || request.body.source != null)\n ) {\n // then:\n\n // 1. If fetchParams is canceled, then return the appropriate network error for fetchParams.\n if (isCancelled(fetchParams)) {\n return makeAppropriateNetworkError(fetchParams)\n }\n\n // 2. Set response to the result of running HTTP-network-or-cache\n // fetch given fetchParams, isAuthenticationFetch, and true.\n\n // TODO (spec): The spec doesn't specify this but we need to cancel\n // the active response before we can start a new one.\n // https://github.com/whatwg/fetch/issues/1293\n fetchParams.controller.connection.destroy()\n\n response = await httpNetworkOrCacheFetch(\n fetchParams,\n isAuthenticationFetch,\n true\n )\n }\n\n // 17. If isAuthenticationFetch is true, then create an authentication entry\n if (isAuthenticationFetch) {\n // TODO\n }\n\n // 18. Return response.\n return response\n}\n\n// https://fetch.spec.whatwg.org/#http-network-fetch\nasync function httpNetworkFetch (\n fetchParams,\n includeCredentials = false,\n forceNewConnection = false\n) {\n assert(!fetchParams.controller.connection || fetchParams.controller.connection.destroyed)\n\n fetchParams.controller.connection = {\n abort: null,\n destroyed: false,\n destroy (err) {\n if (!this.destroyed) {\n this.destroyed = true\n this.abort?.(err ?? new DOMException('The operation was aborted.', 'AbortError'))\n }\n }\n }\n\n // 1. Let request be fetchParams’s request.\n const request = fetchParams.request\n\n // 2. Let response be null.\n let response = null\n\n // 3. Let timingInfo be fetchParams’s timing info.\n const timingInfo = fetchParams.timingInfo\n\n // 4. Let httpCache be the result of determining the HTTP cache partition,\n // given request.\n // TODO: cache\n const httpCache = null\n\n // 5. If httpCache is null, then set request’s cache mode to \"no-store\".\n if (httpCache == null) {\n request.cache = 'no-store'\n }\n\n // 6. Let networkPartitionKey be the result of determining the network\n // partition key given request.\n // TODO\n\n // 7. Let newConnection be \"yes\" if forceNewConnection is true; otherwise\n // \"no\".\n const newConnection = forceNewConnection ? 'yes' : 'no' // eslint-disable-line no-unused-vars\n\n // 8. Switch on request’s mode:\n if (request.mode === 'websocket') {\n // Let connection be the result of obtaining a WebSocket connection,\n // given request’s current URL.\n // TODO\n } else {\n // Let connection be the result of obtaining a connection, given\n // networkPartitionKey, request’s current URL’s origin,\n // includeCredentials, and forceNewConnection.\n // TODO\n }\n\n // 9. Run these steps, but abort when the ongoing fetch is terminated:\n\n // 1. If connection is failure, then return a network error.\n\n // 2. Set timingInfo’s final connection timing info to the result of\n // calling clamp and coarsen connection timing info with connection’s\n // timing info, timingInfo’s post-redirect start time, and fetchParams’s\n // cross-origin isolated capability.\n\n // 3. If connection is not an HTTP/2 connection, request’s body is non-null,\n // and request’s body’s source is null, then append (`Transfer-Encoding`,\n // `chunked`) to request’s header list.\n\n // 4. Set timingInfo’s final network-request start time to the coarsened\n // shared current time given fetchParams’s cross-origin isolated\n // capability.\n\n // 5. Set response to the result of making an HTTP request over connection\n // using request with the following caveats:\n\n // - Follow the relevant requirements from HTTP. [HTTP] [HTTP-SEMANTICS]\n // [HTTP-COND] [HTTP-CACHING] [HTTP-AUTH]\n\n // - If request’s body is non-null, and request’s body’s source is null,\n // then the user agent may have a buffer of up to 64 kibibytes and store\n // a part of request’s body in that buffer. If the user agent reads from\n // request’s body beyond that buffer’s size and the user agent needs to\n // resend request, then instead return a network error.\n\n // - Set timingInfo’s final network-response start time to the coarsened\n // shared current time given fetchParams’s cross-origin isolated capability,\n // immediately after the user agent’s HTTP parser receives the first byte\n // of the response (e.g., frame header bytes for HTTP/2 or response status\n // line for HTTP/1.x).\n\n // - Wait until all the headers are transmitted.\n\n // - Any responses whose status is in the range 100 to 199, inclusive,\n // and is not 101, are to be ignored, except for the purposes of setting\n // timingInfo’s final network-response start time above.\n\n // - If request’s header list contains `Transfer-Encoding`/`chunked` and\n // response is transferred via HTTP/1.0 or older, then return a network\n // error.\n\n // - If the HTTP request results in a TLS client certificate dialog, then:\n\n // 1. If request’s window is an environment settings object, make the\n // dialog available in request’s window.\n\n // 2. Otherwise, return a network error.\n\n // To transmit request’s body body, run these steps:\n let requestBody = null\n // 1. If body is null and fetchParams’s process request end-of-body is\n // non-null, then queue a fetch task given fetchParams’s process request\n // end-of-body and fetchParams’s task destination.\n if (request.body == null && fetchParams.processRequestEndOfBody) {\n queueMicrotask(() => fetchParams.processRequestEndOfBody())\n } else if (request.body != null) {\n // 2. Otherwise, if body is non-null:\n\n // 1. Let processBodyChunk given bytes be these steps:\n const processBodyChunk = async function * (bytes) {\n // 1. If the ongoing fetch is terminated, then abort these steps.\n if (isCancelled(fetchParams)) {\n return\n }\n\n // 2. Run this step in parallel: transmit bytes.\n yield bytes\n\n // 3. If fetchParams’s process request body is non-null, then run\n // fetchParams’s process request body given bytes’s length.\n fetchParams.processRequestBodyChunkLength?.(bytes.byteLength)\n }\n\n // 2. Let processEndOfBody be these steps:\n const processEndOfBody = () => {\n // 1. If fetchParams is canceled, then abort these steps.\n if (isCancelled(fetchParams)) {\n return\n }\n\n // 2. If fetchParams’s process request end-of-body is non-null,\n // then run fetchParams’s process request end-of-body.\n if (fetchParams.processRequestEndOfBody) {\n fetchParams.processRequestEndOfBody()\n }\n }\n\n // 3. Let processBodyError given e be these steps:\n const processBodyError = (e) => {\n // 1. If fetchParams is canceled, then abort these steps.\n if (isCancelled(fetchParams)) {\n return\n }\n\n // 2. If e is an \"AbortError\" DOMException, then abort fetchParams’s controller.\n if (e.name === 'AbortError') {\n fetchParams.controller.abort()\n } else {\n fetchParams.controller.terminate(e)\n }\n }\n\n // 4. Incrementally read request’s body given processBodyChunk, processEndOfBody,\n // processBodyError, and fetchParams’s task destination.\n requestBody = (async function * () {\n try {\n for await (const bytes of request.body.stream) {\n yield * processBodyChunk(bytes)\n }\n processEndOfBody()\n } catch (err) {\n processBodyError(err)\n }\n })()\n }\n\n try {\n // socket is only provided for websockets\n const { body, status, statusText, headersList, socket } = await dispatch({ body: requestBody })\n\n if (socket) {\n response = makeResponse({ status, statusText, headersList, socket })\n } else {\n const iterator = body[Symbol.asyncIterator]()\n fetchParams.controller.next = () => iterator.next()\n\n response = makeResponse({ status, statusText, headersList })\n }\n } catch (err) {\n // 10. If aborted, then:\n if (err.name === 'AbortError') {\n // 1. If connection uses HTTP/2, then transmit an RST_STREAM frame.\n fetchParams.controller.connection.destroy()\n\n // 2. Return the appropriate network error for fetchParams.\n return makeAppropriateNetworkError(fetchParams, err)\n }\n\n return makeNetworkError(err)\n }\n\n // 11. Let pullAlgorithm be an action that resumes the ongoing fetch\n // if it is suspended.\n const pullAlgorithm = () => {\n fetchParams.controller.resume()\n }\n\n // 12. Let cancelAlgorithm be an algorithm that aborts fetchParams’s\n // controller with reason, given reason.\n const cancelAlgorithm = (reason) => {\n fetchParams.controller.abort(reason)\n }\n\n // 13. Let highWaterMark be a non-negative, non-NaN number, chosen by\n // the user agent.\n // TODO\n\n // 14. Let sizeAlgorithm be an algorithm that accepts a chunk object\n // and returns a non-negative, non-NaN, non-infinite number, chosen by the user agent.\n // TODO\n\n // 15. Let stream be a new ReadableStream.\n // 16. Set up stream with pullAlgorithm set to pullAlgorithm,\n // cancelAlgorithm set to cancelAlgorithm, highWaterMark set to\n // highWaterMark, and sizeAlgorithm set to sizeAlgorithm.\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n const stream = new ReadableStream(\n {\n async start (controller) {\n fetchParams.controller.controller = controller\n },\n async pull (controller) {\n await pullAlgorithm(controller)\n },\n async cancel (reason) {\n await cancelAlgorithm(reason)\n }\n },\n {\n highWaterMark: 0,\n size () {\n return 1\n }\n }\n )\n\n // 17. Run these steps, but abort when the ongoing fetch is terminated:\n\n // 1. Set response’s body to a new body whose stream is stream.\n response.body = { stream }\n\n // 2. If response is not a network error and request’s cache mode is\n // not \"no-store\", then update response in httpCache for request.\n // TODO\n\n // 3. If includeCredentials is true and the user agent is not configured\n // to block cookies for request (see section 7 of [COOKIES]), then run the\n // \"set-cookie-string\" parsing algorithm (see section 5.2 of [COOKIES]) on\n // the value of each header whose name is a byte-case-insensitive match for\n // `Set-Cookie` in response’s header list, if any, and request’s current URL.\n // TODO\n\n // 18. If aborted, then:\n // TODO\n\n // 19. Run these steps in parallel:\n\n // 1. Run these steps, but abort when fetchParams is canceled:\n fetchParams.controller.on('terminated', onAborted)\n fetchParams.controller.resume = async () => {\n // 1. While true\n while (true) {\n // 1-3. See onData...\n\n // 4. Set bytes to the result of handling content codings given\n // codings and bytes.\n let bytes\n let isFailure\n try {\n const { done, value } = await fetchParams.controller.next()\n\n if (isAborted(fetchParams)) {\n break\n }\n\n bytes = done ? undefined : value\n } catch (err) {\n if (fetchParams.controller.ended && !timingInfo.encodedBodySize) {\n // zlib doesn't like empty streams.\n bytes = undefined\n } else {\n bytes = err\n\n // err may be propagated from the result of calling readablestream.cancel,\n // which might not be an error. https://github.com/nodejs/undici/issues/2009\n isFailure = true\n }\n }\n\n if (bytes === undefined) {\n // 2. Otherwise, if the bytes transmission for response’s message\n // body is done normally and stream is readable, then close\n // stream, finalize response for fetchParams and response, and\n // abort these in-parallel steps.\n readableStreamClose(fetchParams.controller.controller)\n\n finalizeResponse(fetchParams, response)\n\n return\n }\n\n // 5. Increase timingInfo’s decoded body size by bytes’s length.\n timingInfo.decodedBodySize += bytes?.byteLength ?? 0\n\n // 6. If bytes is failure, then terminate fetchParams’s controller.\n if (isFailure) {\n fetchParams.controller.terminate(bytes)\n return\n }\n\n // 7. Enqueue a Uint8Array wrapping an ArrayBuffer containing bytes\n // into stream.\n fetchParams.controller.controller.enqueue(new Uint8Array(bytes))\n\n // 8. If stream is errored, then terminate the ongoing fetch.\n if (isErrored(stream)) {\n fetchParams.controller.terminate()\n return\n }\n\n // 9. If stream doesn’t need more data ask the user agent to suspend\n // the ongoing fetch.\n if (!fetchParams.controller.controller.desiredSize) {\n return\n }\n }\n }\n\n // 2. If aborted, then:\n function onAborted (reason) {\n // 2. If fetchParams is aborted, then:\n if (isAborted(fetchParams)) {\n // 1. Set response’s aborted flag.\n response.aborted = true\n\n // 2. If stream is readable, then error stream with the result of\n // deserialize a serialized abort reason given fetchParams’s\n // controller’s serialized abort reason and an\n // implementation-defined realm.\n if (isReadable(stream)) {\n fetchParams.controller.controller.error(\n fetchParams.controller.serializedAbortReason\n )\n }\n } else {\n // 3. Otherwise, if stream is readable, error stream with a TypeError.\n if (isReadable(stream)) {\n fetchParams.controller.controller.error(new TypeError('terminated', {\n cause: isErrorLike(reason) ? reason : undefined\n }))\n }\n }\n\n // 4. If connection uses HTTP/2, then transmit an RST_STREAM frame.\n // 5. Otherwise, the user agent should close connection unless it would be bad for performance to do so.\n fetchParams.controller.connection.destroy()\n }\n\n // 20. Return response.\n return response\n\n async function dispatch ({ body }) {\n const url = requestCurrentURL(request)\n /** @type {import('../..').Agent} */\n const agent = fetchParams.controller.dispatcher\n\n return new Promise((resolve, reject) => agent.dispatch(\n {\n path: url.pathname + url.search,\n origin: url.origin,\n method: request.method,\n body: fetchParams.controller.dispatcher.isMockActive ? request.body && (request.body.source || request.body.stream) : body,\n headers: request.headersList.entries,\n maxRedirections: 0,\n upgrade: request.mode === 'websocket' ? 'websocket' : undefined\n },\n {\n body: null,\n abort: null,\n\n onConnect (abort) {\n // TODO (fix): Do we need connection here?\n const { connection } = fetchParams.controller\n\n if (connection.destroyed) {\n abort(new DOMException('The operation was aborted.', 'AbortError'))\n } else {\n fetchParams.controller.on('terminated', abort)\n this.abort = connection.abort = abort\n }\n },\n\n onHeaders (status, headersList, resume, statusText) {\n if (status < 200) {\n return\n }\n\n let codings = []\n let location = ''\n\n const headers = new Headers()\n\n // For H2, the headers are a plain JS object\n // We distinguish between them and iterate accordingly\n if (Array.isArray(headersList)) {\n for (let n = 0; n < headersList.length; n += 2) {\n const key = headersList[n + 0].toString('latin1')\n const val = headersList[n + 1].toString('latin1')\n if (key.toLowerCase() === 'content-encoding') {\n // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1\n // \"All content-coding values are case-insensitive...\"\n codings = val.toLowerCase().split(',').map((x) => x.trim())\n } else if (key.toLowerCase() === 'location') {\n location = val\n }\n\n headers[kHeadersList].append(key, val)\n }\n } else {\n const keys = Object.keys(headersList)\n for (const key of keys) {\n const val = headersList[key]\n if (key.toLowerCase() === 'content-encoding') {\n // https://www.rfc-editor.org/rfc/rfc7231#section-3.1.2.1\n // \"All content-coding values are case-insensitive...\"\n codings = val.toLowerCase().split(',').map((x) => x.trim()).reverse()\n } else if (key.toLowerCase() === 'location') {\n location = val\n }\n\n headers[kHeadersList].append(key, val)\n }\n }\n\n this.body = new Readable({ read: resume })\n\n const decoders = []\n\n const willFollow = request.redirect === 'follow' &&\n location &&\n redirectStatusSet.has(status)\n\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Encoding\n if (request.method !== 'HEAD' && request.method !== 'CONNECT' && !nullBodyStatus.includes(status) && !willFollow) {\n for (const coding of codings) {\n // https://www.rfc-editor.org/rfc/rfc9112.html#section-7.2\n if (coding === 'x-gzip' || coding === 'gzip') {\n decoders.push(zlib.createGunzip({\n // Be less strict when decoding compressed responses, since sometimes\n // servers send slightly invalid responses that are still accepted\n // by common browsers.\n // Always using Z_SYNC_FLUSH is what cURL does.\n flush: zlib.constants.Z_SYNC_FLUSH,\n finishFlush: zlib.constants.Z_SYNC_FLUSH\n }))\n } else if (coding === 'deflate') {\n decoders.push(zlib.createInflate())\n } else if (coding === 'br') {\n decoders.push(zlib.createBrotliDecompress())\n } else {\n decoders.length = 0\n break\n }\n }\n }\n\n resolve({\n status,\n statusText,\n headersList: headers[kHeadersList],\n body: decoders.length\n ? pipeline(this.body, ...decoders, () => { })\n : this.body.on('error', () => {})\n })\n\n return true\n },\n\n onData (chunk) {\n if (fetchParams.controller.dump) {\n return\n }\n\n // 1. If one or more bytes have been transmitted from response’s\n // message body, then:\n\n // 1. Let bytes be the transmitted bytes.\n const bytes = chunk\n\n // 2. Let codings be the result of extracting header list values\n // given `Content-Encoding` and response’s header list.\n // See pullAlgorithm.\n\n // 3. Increase timingInfo’s encoded body size by bytes’s length.\n timingInfo.encodedBodySize += bytes.byteLength\n\n // 4. See pullAlgorithm...\n\n return this.body.push(bytes)\n },\n\n onComplete () {\n if (this.abort) {\n fetchParams.controller.off('terminated', this.abort)\n }\n\n fetchParams.controller.ended = true\n\n this.body.push(null)\n },\n\n onError (error) {\n if (this.abort) {\n fetchParams.controller.off('terminated', this.abort)\n }\n\n this.body?.destroy(error)\n\n fetchParams.controller.terminate(error)\n\n reject(error)\n },\n\n onUpgrade (status, headersList, socket) {\n if (status !== 101) {\n return\n }\n\n const headers = new Headers()\n\n for (let n = 0; n < headersList.length; n += 2) {\n const key = headersList[n + 0].toString('latin1')\n const val = headersList[n + 1].toString('latin1')\n\n headers[kHeadersList].append(key, val)\n }\n\n resolve({\n status,\n statusText: STATUS_CODES[status],\n headersList: headers[kHeadersList],\n socket\n })\n\n return true\n }\n }\n ))\n }\n}\n\nmodule.exports = {\n fetch,\n Fetch,\n fetching,\n finalizeAndReportTiming\n}\n","/* globals AbortController */\n\n'use strict'\n\nconst { extractBody, mixinBody, cloneBody } = require('./body')\nconst { Headers, fill: fillHeaders, HeadersList } = require('./headers')\nconst { FinalizationRegistry } = require('../compat/dispatcher-weakref')()\nconst util = require('../core/util')\nconst {\n isValidHTTPToken,\n sameOrigin,\n normalizeMethod,\n makePolicyContainer,\n normalizeMethodRecord\n} = require('./util')\nconst {\n forbiddenMethodsSet,\n corsSafeListedMethodsSet,\n referrerPolicy,\n requestRedirect,\n requestMode,\n requestCredentials,\n requestCache,\n requestDuplex\n} = require('./constants')\nconst { kEnumerableProperty } = util\nconst { kHeaders, kSignal, kState, kGuard, kRealm } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { getGlobalOrigin } = require('./global')\nconst { URLSerializer } = require('./dataURL')\nconst { kHeadersList, kConstruct } = require('../core/symbols')\nconst assert = require('assert')\nconst { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = require('events')\n\nlet TransformStream = globalThis.TransformStream\n\nconst kAbortController = Symbol('abortController')\n\nconst requestFinalizer = new FinalizationRegistry(({ signal, abort }) => {\n signal.removeEventListener('abort', abort)\n})\n\n// https://fetch.spec.whatwg.org/#request-class\nclass Request {\n // https://fetch.spec.whatwg.org/#dom-request\n constructor (input, init = {}) {\n if (input === kConstruct) {\n return\n }\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Request constructor' })\n\n input = webidl.converters.RequestInfo(input)\n init = webidl.converters.RequestInit(init)\n\n // https://html.spec.whatwg.org/multipage/webappapis.html#environment-settings-object\n this[kRealm] = {\n settingsObject: {\n baseUrl: getGlobalOrigin(),\n get origin () {\n return this.baseUrl?.origin\n },\n policyContainer: makePolicyContainer()\n }\n }\n\n // 1. Let request be null.\n let request = null\n\n // 2. Let fallbackMode be null.\n let fallbackMode = null\n\n // 3. Let baseURL be this’s relevant settings object’s API base URL.\n const baseUrl = this[kRealm].settingsObject.baseUrl\n\n // 4. Let signal be null.\n let signal = null\n\n // 5. If input is a string, then:\n if (typeof input === 'string') {\n // 1. Let parsedURL be the result of parsing input with baseURL.\n // 2. If parsedURL is failure, then throw a TypeError.\n let parsedURL\n try {\n parsedURL = new URL(input, baseUrl)\n } catch (err) {\n throw new TypeError('Failed to parse URL from ' + input, { cause: err })\n }\n\n // 3. If parsedURL includes credentials, then throw a TypeError.\n if (parsedURL.username || parsedURL.password) {\n throw new TypeError(\n 'Request cannot be constructed from a URL that includes credentials: ' +\n input\n )\n }\n\n // 4. Set request to a new request whose URL is parsedURL.\n request = makeRequest({ urlList: [parsedURL] })\n\n // 5. Set fallbackMode to \"cors\".\n fallbackMode = 'cors'\n } else {\n // 6. Otherwise:\n\n // 7. Assert: input is a Request object.\n assert(input instanceof Request)\n\n // 8. Set request to input’s request.\n request = input[kState]\n\n // 9. Set signal to input’s signal.\n signal = input[kSignal]\n }\n\n // 7. Let origin be this’s relevant settings object’s origin.\n const origin = this[kRealm].settingsObject.origin\n\n // 8. Let window be \"client\".\n let window = 'client'\n\n // 9. If request’s window is an environment settings object and its origin\n // is same origin with origin, then set window to request’s window.\n if (\n request.window?.constructor?.name === 'EnvironmentSettingsObject' &&\n sameOrigin(request.window, origin)\n ) {\n window = request.window\n }\n\n // 10. If init[\"window\"] exists and is non-null, then throw a TypeError.\n if (init.window != null) {\n throw new TypeError(`'window' option '${window}' must be null`)\n }\n\n // 11. If init[\"window\"] exists, then set window to \"no-window\".\n if ('window' in init) {\n window = 'no-window'\n }\n\n // 12. Set request to a new request with the following properties:\n request = makeRequest({\n // URL request’s URL.\n // undici implementation note: this is set as the first item in request's urlList in makeRequest\n // method request’s method.\n method: request.method,\n // header list A copy of request’s header list.\n // undici implementation note: headersList is cloned in makeRequest\n headersList: request.headersList,\n // unsafe-request flag Set.\n unsafeRequest: request.unsafeRequest,\n // client This’s relevant settings object.\n client: this[kRealm].settingsObject,\n // window window.\n window,\n // priority request’s priority.\n priority: request.priority,\n // origin request’s origin. The propagation of the origin is only significant for navigation requests\n // being handled by a service worker. In this scenario a request can have an origin that is different\n // from the current client.\n origin: request.origin,\n // referrer request’s referrer.\n referrer: request.referrer,\n // referrer policy request’s referrer policy.\n referrerPolicy: request.referrerPolicy,\n // mode request’s mode.\n mode: request.mode,\n // credentials mode request’s credentials mode.\n credentials: request.credentials,\n // cache mode request’s cache mode.\n cache: request.cache,\n // redirect mode request’s redirect mode.\n redirect: request.redirect,\n // integrity metadata request’s integrity metadata.\n integrity: request.integrity,\n // keepalive request’s keepalive.\n keepalive: request.keepalive,\n // reload-navigation flag request’s reload-navigation flag.\n reloadNavigation: request.reloadNavigation,\n // history-navigation flag request’s history-navigation flag.\n historyNavigation: request.historyNavigation,\n // URL list A clone of request’s URL list.\n urlList: [...request.urlList]\n })\n\n const initHasKey = Object.keys(init).length !== 0\n\n // 13. If init is not empty, then:\n if (initHasKey) {\n // 1. If request’s mode is \"navigate\", then set it to \"same-origin\".\n if (request.mode === 'navigate') {\n request.mode = 'same-origin'\n }\n\n // 2. Unset request’s reload-navigation flag.\n request.reloadNavigation = false\n\n // 3. Unset request’s history-navigation flag.\n request.historyNavigation = false\n\n // 4. Set request’s origin to \"client\".\n request.origin = 'client'\n\n // 5. Set request’s referrer to \"client\"\n request.referrer = 'client'\n\n // 6. Set request’s referrer policy to the empty string.\n request.referrerPolicy = ''\n\n // 7. Set request’s URL to request’s current URL.\n request.url = request.urlList[request.urlList.length - 1]\n\n // 8. Set request’s URL list to « request’s URL ».\n request.urlList = [request.url]\n }\n\n // 14. If init[\"referrer\"] exists, then:\n if (init.referrer !== undefined) {\n // 1. Let referrer be init[\"referrer\"].\n const referrer = init.referrer\n\n // 2. If referrer is the empty string, then set request’s referrer to \"no-referrer\".\n if (referrer === '') {\n request.referrer = 'no-referrer'\n } else {\n // 1. Let parsedReferrer be the result of parsing referrer with\n // baseURL.\n // 2. If parsedReferrer is failure, then throw a TypeError.\n let parsedReferrer\n try {\n parsedReferrer = new URL(referrer, baseUrl)\n } catch (err) {\n throw new TypeError(`Referrer \"${referrer}\" is not a valid URL.`, { cause: err })\n }\n\n // 3. If one of the following is true\n // - parsedReferrer’s scheme is \"about\" and path is the string \"client\"\n // - parsedReferrer’s origin is not same origin with origin\n // then set request’s referrer to \"client\".\n if (\n (parsedReferrer.protocol === 'about:' && parsedReferrer.hostname === 'client') ||\n (origin && !sameOrigin(parsedReferrer, this[kRealm].settingsObject.baseUrl))\n ) {\n request.referrer = 'client'\n } else {\n // 4. Otherwise, set request’s referrer to parsedReferrer.\n request.referrer = parsedReferrer\n }\n }\n }\n\n // 15. If init[\"referrerPolicy\"] exists, then set request’s referrer policy\n // to it.\n if (init.referrerPolicy !== undefined) {\n request.referrerPolicy = init.referrerPolicy\n }\n\n // 16. Let mode be init[\"mode\"] if it exists, and fallbackMode otherwise.\n let mode\n if (init.mode !== undefined) {\n mode = init.mode\n } else {\n mode = fallbackMode\n }\n\n // 17. If mode is \"navigate\", then throw a TypeError.\n if (mode === 'navigate') {\n throw webidl.errors.exception({\n header: 'Request constructor',\n message: 'invalid request mode navigate.'\n })\n }\n\n // 18. If mode is non-null, set request’s mode to mode.\n if (mode != null) {\n request.mode = mode\n }\n\n // 19. If init[\"credentials\"] exists, then set request’s credentials mode\n // to it.\n if (init.credentials !== undefined) {\n request.credentials = init.credentials\n }\n\n // 18. If init[\"cache\"] exists, then set request’s cache mode to it.\n if (init.cache !== undefined) {\n request.cache = init.cache\n }\n\n // 21. If request’s cache mode is \"only-if-cached\" and request’s mode is\n // not \"same-origin\", then throw a TypeError.\n if (request.cache === 'only-if-cached' && request.mode !== 'same-origin') {\n throw new TypeError(\n \"'only-if-cached' can be set only with 'same-origin' mode\"\n )\n }\n\n // 22. If init[\"redirect\"] exists, then set request’s redirect mode to it.\n if (init.redirect !== undefined) {\n request.redirect = init.redirect\n }\n\n // 23. If init[\"integrity\"] exists, then set request’s integrity metadata to it.\n if (init.integrity != null) {\n request.integrity = String(init.integrity)\n }\n\n // 24. If init[\"keepalive\"] exists, then set request’s keepalive to it.\n if (init.keepalive !== undefined) {\n request.keepalive = Boolean(init.keepalive)\n }\n\n // 25. If init[\"method\"] exists, then:\n if (init.method !== undefined) {\n // 1. Let method be init[\"method\"].\n let method = init.method\n\n // 2. If method is not a method or method is a forbidden method, then\n // throw a TypeError.\n if (!isValidHTTPToken(method)) {\n throw new TypeError(`'${method}' is not a valid HTTP method.`)\n }\n\n if (forbiddenMethodsSet.has(method.toUpperCase())) {\n throw new TypeError(`'${method}' HTTP method is unsupported.`)\n }\n\n // 3. Normalize method.\n method = normalizeMethodRecord[method] ?? normalizeMethod(method)\n\n // 4. Set request’s method to method.\n request.method = method\n }\n\n // 26. If init[\"signal\"] exists, then set signal to it.\n if (init.signal !== undefined) {\n signal = init.signal\n }\n\n // 27. Set this’s request to request.\n this[kState] = request\n\n // 28. Set this’s signal to a new AbortSignal object with this’s relevant\n // Realm.\n // TODO: could this be simplified with AbortSignal.any\n // (https://dom.spec.whatwg.org/#dom-abortsignal-any)\n const ac = new AbortController()\n this[kSignal] = ac.signal\n this[kSignal][kRealm] = this[kRealm]\n\n // 29. If signal is not null, then make this’s signal follow signal.\n if (signal != null) {\n if (\n !signal ||\n typeof signal.aborted !== 'boolean' ||\n typeof signal.addEventListener !== 'function'\n ) {\n throw new TypeError(\n \"Failed to construct 'Request': member signal is not of type AbortSignal.\"\n )\n }\n\n if (signal.aborted) {\n ac.abort(signal.reason)\n } else {\n // Keep a strong ref to ac while request object\n // is alive. This is needed to prevent AbortController\n // from being prematurely garbage collected.\n // See, https://github.com/nodejs/undici/issues/1926.\n this[kAbortController] = ac\n\n const acRef = new WeakRef(ac)\n const abort = function () {\n const ac = acRef.deref()\n if (ac !== undefined) {\n ac.abort(this.reason)\n }\n }\n\n // Third-party AbortControllers may not work with these.\n // See, https://github.com/nodejs/undici/pull/1910#issuecomment-1464495619.\n try {\n // If the max amount of listeners is equal to the default, increase it\n // This is only available in node >= v19.9.0\n if (typeof getMaxListeners === 'function' && getMaxListeners(signal) === defaultMaxListeners) {\n setMaxListeners(100, signal)\n } else if (getEventListeners(signal, 'abort').length >= defaultMaxListeners) {\n setMaxListeners(100, signal)\n }\n } catch {}\n\n util.addAbortListener(signal, abort)\n requestFinalizer.register(ac, { signal, abort })\n }\n }\n\n // 30. Set this’s headers to a new Headers object with this’s relevant\n // Realm, whose header list is request’s header list and guard is\n // \"request\".\n this[kHeaders] = new Headers(kConstruct)\n this[kHeaders][kHeadersList] = request.headersList\n this[kHeaders][kGuard] = 'request'\n this[kHeaders][kRealm] = this[kRealm]\n\n // 31. If this’s request’s mode is \"no-cors\", then:\n if (mode === 'no-cors') {\n // 1. If this’s request’s method is not a CORS-safelisted method,\n // then throw a TypeError.\n if (!corsSafeListedMethodsSet.has(request.method)) {\n throw new TypeError(\n `'${request.method} is unsupported in no-cors mode.`\n )\n }\n\n // 2. Set this’s headers’s guard to \"request-no-cors\".\n this[kHeaders][kGuard] = 'request-no-cors'\n }\n\n // 32. If init is not empty, then:\n if (initHasKey) {\n /** @type {HeadersList} */\n const headersList = this[kHeaders][kHeadersList]\n // 1. Let headers be a copy of this’s headers and its associated header\n // list.\n // 2. If init[\"headers\"] exists, then set headers to init[\"headers\"].\n const headers = init.headers !== undefined ? init.headers : new HeadersList(headersList)\n\n // 3. Empty this’s headers’s header list.\n headersList.clear()\n\n // 4. If headers is a Headers object, then for each header in its header\n // list, append header’s name/header’s value to this’s headers.\n if (headers instanceof HeadersList) {\n for (const [key, val] of headers) {\n headersList.append(key, val)\n }\n // Note: Copy the `set-cookie` meta-data.\n headersList.cookies = headers.cookies\n } else {\n // 5. Otherwise, fill this’s headers with headers.\n fillHeaders(this[kHeaders], headers)\n }\n }\n\n // 33. Let inputBody be input’s request’s body if input is a Request\n // object; otherwise null.\n const inputBody = input instanceof Request ? input[kState].body : null\n\n // 34. If either init[\"body\"] exists and is non-null or inputBody is\n // non-null, and request’s method is `GET` or `HEAD`, then throw a\n // TypeError.\n if (\n (init.body != null || inputBody != null) &&\n (request.method === 'GET' || request.method === 'HEAD')\n ) {\n throw new TypeError('Request with GET/HEAD method cannot have body.')\n }\n\n // 35. Let initBody be null.\n let initBody = null\n\n // 36. If init[\"body\"] exists and is non-null, then:\n if (init.body != null) {\n // 1. Let Content-Type be null.\n // 2. Set initBody and Content-Type to the result of extracting\n // init[\"body\"], with keepalive set to request’s keepalive.\n const [extractedBody, contentType] = extractBody(\n init.body,\n request.keepalive\n )\n initBody = extractedBody\n\n // 3, If Content-Type is non-null and this’s headers’s header list does\n // not contain `Content-Type`, then append `Content-Type`/Content-Type to\n // this’s headers.\n if (contentType && !this[kHeaders][kHeadersList].contains('content-type')) {\n this[kHeaders].append('content-type', contentType)\n }\n }\n\n // 37. Let inputOrInitBody be initBody if it is non-null; otherwise\n // inputBody.\n const inputOrInitBody = initBody ?? inputBody\n\n // 38. If inputOrInitBody is non-null and inputOrInitBody’s source is\n // null, then:\n if (inputOrInitBody != null && inputOrInitBody.source == null) {\n // 1. If initBody is non-null and init[\"duplex\"] does not exist,\n // then throw a TypeError.\n if (initBody != null && init.duplex == null) {\n throw new TypeError('RequestInit: duplex option is required when sending a body.')\n }\n\n // 2. If this’s request’s mode is neither \"same-origin\" nor \"cors\",\n // then throw a TypeError.\n if (request.mode !== 'same-origin' && request.mode !== 'cors') {\n throw new TypeError(\n 'If request is made from ReadableStream, mode should be \"same-origin\" or \"cors\"'\n )\n }\n\n // 3. Set this’s request’s use-CORS-preflight flag.\n request.useCORSPreflightFlag = true\n }\n\n // 39. Let finalBody be inputOrInitBody.\n let finalBody = inputOrInitBody\n\n // 40. If initBody is null and inputBody is non-null, then:\n if (initBody == null && inputBody != null) {\n // 1. If input is unusable, then throw a TypeError.\n if (util.isDisturbed(inputBody.stream) || inputBody.stream.locked) {\n throw new TypeError(\n 'Cannot construct a Request with a Request object that has already been used.'\n )\n }\n\n // 2. Set finalBody to the result of creating a proxy for inputBody.\n if (!TransformStream) {\n TransformStream = require('stream/web').TransformStream\n }\n\n // https://streams.spec.whatwg.org/#readablestream-create-a-proxy\n const identityTransform = new TransformStream()\n inputBody.stream.pipeThrough(identityTransform)\n finalBody = {\n source: inputBody.source,\n length: inputBody.length,\n stream: identityTransform.readable\n }\n }\n\n // 41. Set this’s request’s body to finalBody.\n this[kState].body = finalBody\n }\n\n // Returns request’s HTTP method, which is \"GET\" by default.\n get method () {\n webidl.brandCheck(this, Request)\n\n // The method getter steps are to return this’s request’s method.\n return this[kState].method\n }\n\n // Returns the URL of request as a string.\n get url () {\n webidl.brandCheck(this, Request)\n\n // The url getter steps are to return this’s request’s URL, serialized.\n return URLSerializer(this[kState].url)\n }\n\n // Returns a Headers object consisting of the headers associated with request.\n // Note that headers added in the network layer by the user agent will not\n // be accounted for in this object, e.g., the \"Host\" header.\n get headers () {\n webidl.brandCheck(this, Request)\n\n // The headers getter steps are to return this’s headers.\n return this[kHeaders]\n }\n\n // Returns the kind of resource requested by request, e.g., \"document\"\n // or \"script\".\n get destination () {\n webidl.brandCheck(this, Request)\n\n // The destination getter are to return this’s request’s destination.\n return this[kState].destination\n }\n\n // Returns the referrer of request. Its value can be a same-origin URL if\n // explicitly set in init, the empty string to indicate no referrer, and\n // \"about:client\" when defaulting to the global’s default. This is used\n // during fetching to determine the value of the `Referer` header of the\n // request being made.\n get referrer () {\n webidl.brandCheck(this, Request)\n\n // 1. If this’s request’s referrer is \"no-referrer\", then return the\n // empty string.\n if (this[kState].referrer === 'no-referrer') {\n return ''\n }\n\n // 2. If this’s request’s referrer is \"client\", then return\n // \"about:client\".\n if (this[kState].referrer === 'client') {\n return 'about:client'\n }\n\n // Return this’s request’s referrer, serialized.\n return this[kState].referrer.toString()\n }\n\n // Returns the referrer policy associated with request.\n // This is used during fetching to compute the value of the request’s\n // referrer.\n get referrerPolicy () {\n webidl.brandCheck(this, Request)\n\n // The referrerPolicy getter steps are to return this’s request’s referrer policy.\n return this[kState].referrerPolicy\n }\n\n // Returns the mode associated with request, which is a string indicating\n // whether the request will use CORS, or will be restricted to same-origin\n // URLs.\n get mode () {\n webidl.brandCheck(this, Request)\n\n // The mode getter steps are to return this’s request’s mode.\n return this[kState].mode\n }\n\n // Returns the credentials mode associated with request,\n // which is a string indicating whether credentials will be sent with the\n // request always, never, or only when sent to a same-origin URL.\n get credentials () {\n // The credentials getter steps are to return this’s request’s credentials mode.\n return this[kState].credentials\n }\n\n // Returns the cache mode associated with request,\n // which is a string indicating how the request will\n // interact with the browser’s cache when fetching.\n get cache () {\n webidl.brandCheck(this, Request)\n\n // The cache getter steps are to return this’s request’s cache mode.\n return this[kState].cache\n }\n\n // Returns the redirect mode associated with request,\n // which is a string indicating how redirects for the\n // request will be handled during fetching. A request\n // will follow redirects by default.\n get redirect () {\n webidl.brandCheck(this, Request)\n\n // The redirect getter steps are to return this’s request’s redirect mode.\n return this[kState].redirect\n }\n\n // Returns request’s subresource integrity metadata, which is a\n // cryptographic hash of the resource being fetched. Its value\n // consists of multiple hashes separated by whitespace. [SRI]\n get integrity () {\n webidl.brandCheck(this, Request)\n\n // The integrity getter steps are to return this’s request’s integrity\n // metadata.\n return this[kState].integrity\n }\n\n // Returns a boolean indicating whether or not request can outlive the\n // global in which it was created.\n get keepalive () {\n webidl.brandCheck(this, Request)\n\n // The keepalive getter steps are to return this’s request’s keepalive.\n return this[kState].keepalive\n }\n\n // Returns a boolean indicating whether or not request is for a reload\n // navigation.\n get isReloadNavigation () {\n webidl.brandCheck(this, Request)\n\n // The isReloadNavigation getter steps are to return true if this’s\n // request’s reload-navigation flag is set; otherwise false.\n return this[kState].reloadNavigation\n }\n\n // Returns a boolean indicating whether or not request is for a history\n // navigation (a.k.a. back-foward navigation).\n get isHistoryNavigation () {\n webidl.brandCheck(this, Request)\n\n // The isHistoryNavigation getter steps are to return true if this’s request’s\n // history-navigation flag is set; otherwise false.\n return this[kState].historyNavigation\n }\n\n // Returns the signal associated with request, which is an AbortSignal\n // object indicating whether or not request has been aborted, and its\n // abort event handler.\n get signal () {\n webidl.brandCheck(this, Request)\n\n // The signal getter steps are to return this’s signal.\n return this[kSignal]\n }\n\n get body () {\n webidl.brandCheck(this, Request)\n\n return this[kState].body ? this[kState].body.stream : null\n }\n\n get bodyUsed () {\n webidl.brandCheck(this, Request)\n\n return !!this[kState].body && util.isDisturbed(this[kState].body.stream)\n }\n\n get duplex () {\n webidl.brandCheck(this, Request)\n\n return 'half'\n }\n\n // Returns a clone of request.\n clone () {\n webidl.brandCheck(this, Request)\n\n // 1. If this is unusable, then throw a TypeError.\n if (this.bodyUsed || this.body?.locked) {\n throw new TypeError('unusable')\n }\n\n // 2. Let clonedRequest be the result of cloning this’s request.\n const clonedRequest = cloneRequest(this[kState])\n\n // 3. Let clonedRequestObject be the result of creating a Request object,\n // given clonedRequest, this’s headers’s guard, and this’s relevant Realm.\n const clonedRequestObject = new Request(kConstruct)\n clonedRequestObject[kState] = clonedRequest\n clonedRequestObject[kRealm] = this[kRealm]\n clonedRequestObject[kHeaders] = new Headers(kConstruct)\n clonedRequestObject[kHeaders][kHeadersList] = clonedRequest.headersList\n clonedRequestObject[kHeaders][kGuard] = this[kHeaders][kGuard]\n clonedRequestObject[kHeaders][kRealm] = this[kHeaders][kRealm]\n\n // 4. Make clonedRequestObject’s signal follow this’s signal.\n const ac = new AbortController()\n if (this.signal.aborted) {\n ac.abort(this.signal.reason)\n } else {\n util.addAbortListener(\n this.signal,\n () => {\n ac.abort(this.signal.reason)\n }\n )\n }\n clonedRequestObject[kSignal] = ac.signal\n\n // 4. Return clonedRequestObject.\n return clonedRequestObject\n }\n}\n\nmixinBody(Request)\n\nfunction makeRequest (init) {\n // https://fetch.spec.whatwg.org/#requests\n const request = {\n method: 'GET',\n localURLsOnly: false,\n unsafeRequest: false,\n body: null,\n client: null,\n reservedClient: null,\n replacesClientId: '',\n window: 'client',\n keepalive: false,\n serviceWorkers: 'all',\n initiator: '',\n destination: '',\n priority: null,\n origin: 'client',\n policyContainer: 'client',\n referrer: 'client',\n referrerPolicy: '',\n mode: 'no-cors',\n useCORSPreflightFlag: false,\n credentials: 'same-origin',\n useCredentials: false,\n cache: 'default',\n redirect: 'follow',\n integrity: '',\n cryptoGraphicsNonceMetadata: '',\n parserMetadata: '',\n reloadNavigation: false,\n historyNavigation: false,\n userActivation: false,\n taintedOrigin: false,\n redirectCount: 0,\n responseTainting: 'basic',\n preventNoCacheCacheControlHeaderModification: false,\n done: false,\n timingAllowFailed: false,\n ...init,\n headersList: init.headersList\n ? new HeadersList(init.headersList)\n : new HeadersList()\n }\n request.url = request.urlList[0]\n return request\n}\n\n// https://fetch.spec.whatwg.org/#concept-request-clone\nfunction cloneRequest (request) {\n // To clone a request request, run these steps:\n\n // 1. Let newRequest be a copy of request, except for its body.\n const newRequest = makeRequest({ ...request, body: null })\n\n // 2. If request’s body is non-null, set newRequest’s body to the\n // result of cloning request’s body.\n if (request.body != null) {\n newRequest.body = cloneBody(request.body)\n }\n\n // 3. Return newRequest.\n return newRequest\n}\n\nObject.defineProperties(Request.prototype, {\n method: kEnumerableProperty,\n url: kEnumerableProperty,\n headers: kEnumerableProperty,\n redirect: kEnumerableProperty,\n clone: kEnumerableProperty,\n signal: kEnumerableProperty,\n duplex: kEnumerableProperty,\n destination: kEnumerableProperty,\n body: kEnumerableProperty,\n bodyUsed: kEnumerableProperty,\n isHistoryNavigation: kEnumerableProperty,\n isReloadNavigation: kEnumerableProperty,\n keepalive: kEnumerableProperty,\n integrity: kEnumerableProperty,\n cache: kEnumerableProperty,\n credentials: kEnumerableProperty,\n attribute: kEnumerableProperty,\n referrerPolicy: kEnumerableProperty,\n referrer: kEnumerableProperty,\n mode: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'Request',\n configurable: true\n }\n})\n\nwebidl.converters.Request = webidl.interfaceConverter(\n Request\n)\n\n// https://fetch.spec.whatwg.org/#requestinfo\nwebidl.converters.RequestInfo = function (V) {\n if (typeof V === 'string') {\n return webidl.converters.USVString(V)\n }\n\n if (V instanceof Request) {\n return webidl.converters.Request(V)\n }\n\n return webidl.converters.USVString(V)\n}\n\nwebidl.converters.AbortSignal = webidl.interfaceConverter(\n AbortSignal\n)\n\n// https://fetch.spec.whatwg.org/#requestinit\nwebidl.converters.RequestInit = webidl.dictionaryConverter([\n {\n key: 'method',\n converter: webidl.converters.ByteString\n },\n {\n key: 'headers',\n converter: webidl.converters.HeadersInit\n },\n {\n key: 'body',\n converter: webidl.nullableConverter(\n webidl.converters.BodyInit\n )\n },\n {\n key: 'referrer',\n converter: webidl.converters.USVString\n },\n {\n key: 'referrerPolicy',\n converter: webidl.converters.DOMString,\n // https://w3c.github.io/webappsec-referrer-policy/#referrer-policy\n allowedValues: referrerPolicy\n },\n {\n key: 'mode',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#concept-request-mode\n allowedValues: requestMode\n },\n {\n key: 'credentials',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#requestcredentials\n allowedValues: requestCredentials\n },\n {\n key: 'cache',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#requestcache\n allowedValues: requestCache\n },\n {\n key: 'redirect',\n converter: webidl.converters.DOMString,\n // https://fetch.spec.whatwg.org/#requestredirect\n allowedValues: requestRedirect\n },\n {\n key: 'integrity',\n converter: webidl.converters.DOMString\n },\n {\n key: 'keepalive',\n converter: webidl.converters.boolean\n },\n {\n key: 'signal',\n converter: webidl.nullableConverter(\n (signal) => webidl.converters.AbortSignal(\n signal,\n { strict: false }\n )\n )\n },\n {\n key: 'window',\n converter: webidl.converters.any\n },\n {\n key: 'duplex',\n converter: webidl.converters.DOMString,\n allowedValues: requestDuplex\n }\n])\n\nmodule.exports = { Request, makeRequest }\n","'use strict'\n\nconst { Headers, HeadersList, fill } = require('./headers')\nconst { extractBody, cloneBody, mixinBody } = require('./body')\nconst util = require('../core/util')\nconst { kEnumerableProperty } = util\nconst {\n isValidReasonPhrase,\n isCancelled,\n isAborted,\n isBlobLike,\n serializeJavascriptValueToJSONString,\n isErrorLike,\n isomorphicEncode\n} = require('./util')\nconst {\n redirectStatusSet,\n nullBodyStatus,\n DOMException\n} = require('./constants')\nconst { kState, kHeaders, kGuard, kRealm } = require('./symbols')\nconst { webidl } = require('./webidl')\nconst { FormData } = require('./formdata')\nconst { getGlobalOrigin } = require('./global')\nconst { URLSerializer } = require('./dataURL')\nconst { kHeadersList, kConstruct } = require('../core/symbols')\nconst assert = require('assert')\nconst { types } = require('util')\n\nconst ReadableStream = globalThis.ReadableStream || require('stream/web').ReadableStream\nconst textEncoder = new TextEncoder('utf-8')\n\n// https://fetch.spec.whatwg.org/#response-class\nclass Response {\n // Creates network error Response.\n static error () {\n // TODO\n const relevantRealm = { settingsObject: {} }\n\n // The static error() method steps are to return the result of creating a\n // Response object, given a new network error, \"immutable\", and this’s\n // relevant Realm.\n const responseObject = new Response()\n responseObject[kState] = makeNetworkError()\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kHeadersList] = responseObject[kState].headersList\n responseObject[kHeaders][kGuard] = 'immutable'\n responseObject[kHeaders][kRealm] = relevantRealm\n return responseObject\n }\n\n // https://fetch.spec.whatwg.org/#dom-response-json\n static json (data, init = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'Response.json' })\n\n if (init !== null) {\n init = webidl.converters.ResponseInit(init)\n }\n\n // 1. Let bytes the result of running serialize a JavaScript value to JSON bytes on data.\n const bytes = textEncoder.encode(\n serializeJavascriptValueToJSONString(data)\n )\n\n // 2. Let body be the result of extracting bytes.\n const body = extractBody(bytes)\n\n // 3. Let responseObject be the result of creating a Response object, given a new response,\n // \"response\", and this’s relevant Realm.\n const relevantRealm = { settingsObject: {} }\n const responseObject = new Response()\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kGuard] = 'response'\n responseObject[kHeaders][kRealm] = relevantRealm\n\n // 4. Perform initialize a response given responseObject, init, and (body, \"application/json\").\n initializeResponse(responseObject, init, { body: body[0], type: 'application/json' })\n\n // 5. Return responseObject.\n return responseObject\n }\n\n // Creates a redirect Response that redirects to url with status status.\n static redirect (url, status = 302) {\n const relevantRealm = { settingsObject: {} }\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'Response.redirect' })\n\n url = webidl.converters.USVString(url)\n status = webidl.converters['unsigned short'](status)\n\n // 1. Let parsedURL be the result of parsing url with current settings\n // object’s API base URL.\n // 2. If parsedURL is failure, then throw a TypeError.\n // TODO: base-URL?\n let parsedURL\n try {\n parsedURL = new URL(url, getGlobalOrigin())\n } catch (err) {\n throw Object.assign(new TypeError('Failed to parse URL from ' + url), {\n cause: err\n })\n }\n\n // 3. If status is not a redirect status, then throw a RangeError.\n if (!redirectStatusSet.has(status)) {\n throw new RangeError('Invalid status code ' + status)\n }\n\n // 4. Let responseObject be the result of creating a Response object,\n // given a new response, \"immutable\", and this’s relevant Realm.\n const responseObject = new Response()\n responseObject[kRealm] = relevantRealm\n responseObject[kHeaders][kGuard] = 'immutable'\n responseObject[kHeaders][kRealm] = relevantRealm\n\n // 5. Set responseObject’s response’s status to status.\n responseObject[kState].status = status\n\n // 6. Let value be parsedURL, serialized and isomorphic encoded.\n const value = isomorphicEncode(URLSerializer(parsedURL))\n\n // 7. Append `Location`/value to responseObject’s response’s header list.\n responseObject[kState].headersList.append('location', value)\n\n // 8. Return responseObject.\n return responseObject\n }\n\n // https://fetch.spec.whatwg.org/#dom-response\n constructor (body = null, init = {}) {\n if (body !== null) {\n body = webidl.converters.BodyInit(body)\n }\n\n init = webidl.converters.ResponseInit(init)\n\n // TODO\n this[kRealm] = { settingsObject: {} }\n\n // 1. Set this’s response to a new response.\n this[kState] = makeResponse({})\n\n // 2. Set this’s headers to a new Headers object with this’s relevant\n // Realm, whose header list is this’s response’s header list and guard\n // is \"response\".\n this[kHeaders] = new Headers(kConstruct)\n this[kHeaders][kGuard] = 'response'\n this[kHeaders][kHeadersList] = this[kState].headersList\n this[kHeaders][kRealm] = this[kRealm]\n\n // 3. Let bodyWithType be null.\n let bodyWithType = null\n\n // 4. If body is non-null, then set bodyWithType to the result of extracting body.\n if (body != null) {\n const [extractedBody, type] = extractBody(body)\n bodyWithType = { body: extractedBody, type }\n }\n\n // 5. Perform initialize a response given this, init, and bodyWithType.\n initializeResponse(this, init, bodyWithType)\n }\n\n // Returns response’s type, e.g., \"cors\".\n get type () {\n webidl.brandCheck(this, Response)\n\n // The type getter steps are to return this’s response’s type.\n return this[kState].type\n }\n\n // Returns response’s URL, if it has one; otherwise the empty string.\n get url () {\n webidl.brandCheck(this, Response)\n\n const urlList = this[kState].urlList\n\n // The url getter steps are to return the empty string if this’s\n // response’s URL is null; otherwise this’s response’s URL,\n // serialized with exclude fragment set to true.\n const url = urlList[urlList.length - 1] ?? null\n\n if (url === null) {\n return ''\n }\n\n return URLSerializer(url, true)\n }\n\n // Returns whether response was obtained through a redirect.\n get redirected () {\n webidl.brandCheck(this, Response)\n\n // The redirected getter steps are to return true if this’s response’s URL\n // list has more than one item; otherwise false.\n return this[kState].urlList.length > 1\n }\n\n // Returns response’s status.\n get status () {\n webidl.brandCheck(this, Response)\n\n // The status getter steps are to return this’s response’s status.\n return this[kState].status\n }\n\n // Returns whether response’s status is an ok status.\n get ok () {\n webidl.brandCheck(this, Response)\n\n // The ok getter steps are to return true if this’s response’s status is an\n // ok status; otherwise false.\n return this[kState].status >= 200 && this[kState].status <= 299\n }\n\n // Returns response’s status message.\n get statusText () {\n webidl.brandCheck(this, Response)\n\n // The statusText getter steps are to return this’s response’s status\n // message.\n return this[kState].statusText\n }\n\n // Returns response’s headers as Headers.\n get headers () {\n webidl.brandCheck(this, Response)\n\n // The headers getter steps are to return this’s headers.\n return this[kHeaders]\n }\n\n get body () {\n webidl.brandCheck(this, Response)\n\n return this[kState].body ? this[kState].body.stream : null\n }\n\n get bodyUsed () {\n webidl.brandCheck(this, Response)\n\n return !!this[kState].body && util.isDisturbed(this[kState].body.stream)\n }\n\n // Returns a clone of response.\n clone () {\n webidl.brandCheck(this, Response)\n\n // 1. If this is unusable, then throw a TypeError.\n if (this.bodyUsed || (this.body && this.body.locked)) {\n throw webidl.errors.exception({\n header: 'Response.clone',\n message: 'Body has already been consumed.'\n })\n }\n\n // 2. Let clonedResponse be the result of cloning this’s response.\n const clonedResponse = cloneResponse(this[kState])\n\n // 3. Return the result of creating a Response object, given\n // clonedResponse, this’s headers’s guard, and this’s relevant Realm.\n const clonedResponseObject = new Response()\n clonedResponseObject[kState] = clonedResponse\n clonedResponseObject[kRealm] = this[kRealm]\n clonedResponseObject[kHeaders][kHeadersList] = clonedResponse.headersList\n clonedResponseObject[kHeaders][kGuard] = this[kHeaders][kGuard]\n clonedResponseObject[kHeaders][kRealm] = this[kHeaders][kRealm]\n\n return clonedResponseObject\n }\n}\n\nmixinBody(Response)\n\nObject.defineProperties(Response.prototype, {\n type: kEnumerableProperty,\n url: kEnumerableProperty,\n status: kEnumerableProperty,\n ok: kEnumerableProperty,\n redirected: kEnumerableProperty,\n statusText: kEnumerableProperty,\n headers: kEnumerableProperty,\n clone: kEnumerableProperty,\n body: kEnumerableProperty,\n bodyUsed: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'Response',\n configurable: true\n }\n})\n\nObject.defineProperties(Response, {\n json: kEnumerableProperty,\n redirect: kEnumerableProperty,\n error: kEnumerableProperty\n})\n\n// https://fetch.spec.whatwg.org/#concept-response-clone\nfunction cloneResponse (response) {\n // To clone a response response, run these steps:\n\n // 1. If response is a filtered response, then return a new identical\n // filtered response whose internal response is a clone of response’s\n // internal response.\n if (response.internalResponse) {\n return filterResponse(\n cloneResponse(response.internalResponse),\n response.type\n )\n }\n\n // 2. Let newResponse be a copy of response, except for its body.\n const newResponse = makeResponse({ ...response, body: null })\n\n // 3. If response’s body is non-null, then set newResponse’s body to the\n // result of cloning response’s body.\n if (response.body != null) {\n newResponse.body = cloneBody(response.body)\n }\n\n // 4. Return newResponse.\n return newResponse\n}\n\nfunction makeResponse (init) {\n return {\n aborted: false,\n rangeRequested: false,\n timingAllowPassed: false,\n requestIncludesCredentials: false,\n type: 'default',\n status: 200,\n timingInfo: null,\n cacheState: '',\n statusText: '',\n ...init,\n headersList: init.headersList\n ? new HeadersList(init.headersList)\n : new HeadersList(),\n urlList: init.urlList ? [...init.urlList] : []\n }\n}\n\nfunction makeNetworkError (reason) {\n const isError = isErrorLike(reason)\n return makeResponse({\n type: 'error',\n status: 0,\n error: isError\n ? reason\n : new Error(reason ? String(reason) : reason),\n aborted: reason && reason.name === 'AbortError'\n })\n}\n\nfunction makeFilteredResponse (response, state) {\n state = {\n internalResponse: response,\n ...state\n }\n\n return new Proxy(response, {\n get (target, p) {\n return p in state ? state[p] : target[p]\n },\n set (target, p, value) {\n assert(!(p in state))\n target[p] = value\n return true\n }\n })\n}\n\n// https://fetch.spec.whatwg.org/#concept-filtered-response\nfunction filterResponse (response, type) {\n // Set response to the following filtered response with response as its\n // internal response, depending on request’s response tainting:\n if (type === 'basic') {\n // A basic filtered response is a filtered response whose type is \"basic\"\n // and header list excludes any headers in internal response’s header list\n // whose name is a forbidden response-header name.\n\n // Note: undici does not implement forbidden response-header names\n return makeFilteredResponse(response, {\n type: 'basic',\n headersList: response.headersList\n })\n } else if (type === 'cors') {\n // A CORS filtered response is a filtered response whose type is \"cors\"\n // and header list excludes any headers in internal response’s header\n // list whose name is not a CORS-safelisted response-header name, given\n // internal response’s CORS-exposed header-name list.\n\n // Note: undici does not implement CORS-safelisted response-header names\n return makeFilteredResponse(response, {\n type: 'cors',\n headersList: response.headersList\n })\n } else if (type === 'opaque') {\n // An opaque filtered response is a filtered response whose type is\n // \"opaque\", URL list is the empty list, status is 0, status message\n // is the empty byte sequence, header list is empty, and body is null.\n\n return makeFilteredResponse(response, {\n type: 'opaque',\n urlList: Object.freeze([]),\n status: 0,\n statusText: '',\n body: null\n })\n } else if (type === 'opaqueredirect') {\n // An opaque-redirect filtered response is a filtered response whose type\n // is \"opaqueredirect\", status is 0, status message is the empty byte\n // sequence, header list is empty, and body is null.\n\n return makeFilteredResponse(response, {\n type: 'opaqueredirect',\n status: 0,\n statusText: '',\n headersList: [],\n body: null\n })\n } else {\n assert(false)\n }\n}\n\n// https://fetch.spec.whatwg.org/#appropriate-network-error\nfunction makeAppropriateNetworkError (fetchParams, err = null) {\n // 1. Assert: fetchParams is canceled.\n assert(isCancelled(fetchParams))\n\n // 2. Return an aborted network error if fetchParams is aborted;\n // otherwise return a network error.\n return isAborted(fetchParams)\n ? makeNetworkError(Object.assign(new DOMException('The operation was aborted.', 'AbortError'), { cause: err }))\n : makeNetworkError(Object.assign(new DOMException('Request was cancelled.'), { cause: err }))\n}\n\n// https://whatpr.org/fetch/1392.html#initialize-a-response\nfunction initializeResponse (response, init, body) {\n // 1. If init[\"status\"] is not in the range 200 to 599, inclusive, then\n // throw a RangeError.\n if (init.status !== null && (init.status < 200 || init.status > 599)) {\n throw new RangeError('init[\"status\"] must be in the range of 200 to 599, inclusive.')\n }\n\n // 2. If init[\"statusText\"] does not match the reason-phrase token production,\n // then throw a TypeError.\n if ('statusText' in init && init.statusText != null) {\n // See, https://datatracker.ietf.org/doc/html/rfc7230#section-3.1.2:\n // reason-phrase = *( HTAB / SP / VCHAR / obs-text )\n if (!isValidReasonPhrase(String(init.statusText))) {\n throw new TypeError('Invalid statusText')\n }\n }\n\n // 3. Set response’s response’s status to init[\"status\"].\n if ('status' in init && init.status != null) {\n response[kState].status = init.status\n }\n\n // 4. Set response’s response’s status message to init[\"statusText\"].\n if ('statusText' in init && init.statusText != null) {\n response[kState].statusText = init.statusText\n }\n\n // 5. If init[\"headers\"] exists, then fill response’s headers with init[\"headers\"].\n if ('headers' in init && init.headers != null) {\n fill(response[kHeaders], init.headers)\n }\n\n // 6. If body was given, then:\n if (body) {\n // 1. If response's status is a null body status, then throw a TypeError.\n if (nullBodyStatus.includes(response.status)) {\n throw webidl.errors.exception({\n header: 'Response constructor',\n message: 'Invalid response status code ' + response.status\n })\n }\n\n // 2. Set response's body to body's body.\n response[kState].body = body.body\n\n // 3. If body's type is non-null and response's header list does not contain\n // `Content-Type`, then append (`Content-Type`, body's type) to response's header list.\n if (body.type != null && !response[kState].headersList.contains('Content-Type')) {\n response[kState].headersList.append('content-type', body.type)\n }\n }\n}\n\nwebidl.converters.ReadableStream = webidl.interfaceConverter(\n ReadableStream\n)\n\nwebidl.converters.FormData = webidl.interfaceConverter(\n FormData\n)\n\nwebidl.converters.URLSearchParams = webidl.interfaceConverter(\n URLSearchParams\n)\n\n// https://fetch.spec.whatwg.org/#typedefdef-xmlhttprequestbodyinit\nwebidl.converters.XMLHttpRequestBodyInit = function (V) {\n if (typeof V === 'string') {\n return webidl.converters.USVString(V)\n }\n\n if (isBlobLike(V)) {\n return webidl.converters.Blob(V, { strict: false })\n }\n\n if (types.isArrayBuffer(V) || types.isTypedArray(V) || types.isDataView(V)) {\n return webidl.converters.BufferSource(V)\n }\n\n if (util.isFormDataLike(V)) {\n return webidl.converters.FormData(V, { strict: false })\n }\n\n if (V instanceof URLSearchParams) {\n return webidl.converters.URLSearchParams(V)\n }\n\n return webidl.converters.DOMString(V)\n}\n\n// https://fetch.spec.whatwg.org/#bodyinit\nwebidl.converters.BodyInit = function (V) {\n if (V instanceof ReadableStream) {\n return webidl.converters.ReadableStream(V)\n }\n\n // Note: the spec doesn't include async iterables,\n // this is an undici extension.\n if (V?.[Symbol.asyncIterator]) {\n return V\n }\n\n return webidl.converters.XMLHttpRequestBodyInit(V)\n}\n\nwebidl.converters.ResponseInit = webidl.dictionaryConverter([\n {\n key: 'status',\n converter: webidl.converters['unsigned short'],\n defaultValue: 200\n },\n {\n key: 'statusText',\n converter: webidl.converters.ByteString,\n defaultValue: ''\n },\n {\n key: 'headers',\n converter: webidl.converters.HeadersInit\n }\n])\n\nmodule.exports = {\n makeNetworkError,\n makeResponse,\n makeAppropriateNetworkError,\n filterResponse,\n Response,\n cloneResponse\n}\n","'use strict'\n\nmodule.exports = {\n kUrl: Symbol('url'),\n kHeaders: Symbol('headers'),\n kSignal: Symbol('signal'),\n kState: Symbol('state'),\n kGuard: Symbol('guard'),\n kRealm: Symbol('realm')\n}\n","'use strict'\n\nconst { redirectStatusSet, referrerPolicySet: referrerPolicyTokens, badPortsSet } = require('./constants')\nconst { getGlobalOrigin } = require('./global')\nconst { performance } = require('perf_hooks')\nconst { isBlobLike, toUSVString, ReadableStreamFrom } = require('../core/util')\nconst assert = require('assert')\nconst { isUint8Array } = require('util/types')\n\nlet supportedHashes = []\n\n// https://nodejs.org/api/crypto.html#determining-if-crypto-support-is-unavailable\n/** @type {import('crypto')|undefined} */\nlet crypto\n\ntry {\n crypto = require('crypto')\n const possibleRelevantHashes = ['sha256', 'sha384', 'sha512']\n supportedHashes = crypto.getHashes().filter((hash) => possibleRelevantHashes.includes(hash))\n/* c8 ignore next 3 */\n} catch {\n}\n\nfunction responseURL (response) {\n // https://fetch.spec.whatwg.org/#responses\n // A response has an associated URL. It is a pointer to the last URL\n // in response’s URL list and null if response’s URL list is empty.\n const urlList = response.urlList\n const length = urlList.length\n return length === 0 ? null : urlList[length - 1].toString()\n}\n\n// https://fetch.spec.whatwg.org/#concept-response-location-url\nfunction responseLocationURL (response, requestFragment) {\n // 1. If response’s status is not a redirect status, then return null.\n if (!redirectStatusSet.has(response.status)) {\n return null\n }\n\n // 2. Let location be the result of extracting header list values given\n // `Location` and response’s header list.\n let location = response.headersList.get('location')\n\n // 3. If location is a header value, then set location to the result of\n // parsing location with response’s URL.\n if (location !== null && isValidHeaderValue(location)) {\n location = new URL(location, responseURL(response))\n }\n\n // 4. If location is a URL whose fragment is null, then set location’s\n // fragment to requestFragment.\n if (location && !location.hash) {\n location.hash = requestFragment\n }\n\n // 5. Return location.\n return location\n}\n\n/** @returns {URL} */\nfunction requestCurrentURL (request) {\n return request.urlList[request.urlList.length - 1]\n}\n\nfunction requestBadPort (request) {\n // 1. Let url be request’s current URL.\n const url = requestCurrentURL(request)\n\n // 2. If url’s scheme is an HTTP(S) scheme and url’s port is a bad port,\n // then return blocked.\n if (urlIsHttpHttpsScheme(url) && badPortsSet.has(url.port)) {\n return 'blocked'\n }\n\n // 3. Return allowed.\n return 'allowed'\n}\n\nfunction isErrorLike (object) {\n return object instanceof Error || (\n object?.constructor?.name === 'Error' ||\n object?.constructor?.name === 'DOMException'\n )\n}\n\n// Check whether |statusText| is a ByteString and\n// matches the Reason-Phrase token production.\n// RFC 2616: https://tools.ietf.org/html/rfc2616\n// RFC 7230: https://tools.ietf.org/html/rfc7230\n// \"reason-phrase = *( HTAB / SP / VCHAR / obs-text )\"\n// https://github.com/chromium/chromium/blob/94.0.4604.1/third_party/blink/renderer/core/fetch/response.cc#L116\nfunction isValidReasonPhrase (statusText) {\n for (let i = 0; i < statusText.length; ++i) {\n const c = statusText.charCodeAt(i)\n if (\n !(\n (\n c === 0x09 || // HTAB\n (c >= 0x20 && c <= 0x7e) || // SP / VCHAR\n (c >= 0x80 && c <= 0xff)\n ) // obs-text\n )\n ) {\n return false\n }\n }\n return true\n}\n\n/**\n * @see https://tools.ietf.org/html/rfc7230#section-3.2.6\n * @param {number} c\n */\nfunction isTokenCharCode (c) {\n switch (c) {\n case 0x22:\n case 0x28:\n case 0x29:\n case 0x2c:\n case 0x2f:\n case 0x3a:\n case 0x3b:\n case 0x3c:\n case 0x3d:\n case 0x3e:\n case 0x3f:\n case 0x40:\n case 0x5b:\n case 0x5c:\n case 0x5d:\n case 0x7b:\n case 0x7d:\n // DQUOTE and \"(),/:;<=>?@[\\]{}\"\n return false\n default:\n // VCHAR %x21-7E\n return c >= 0x21 && c <= 0x7e\n }\n}\n\n/**\n * @param {string} characters\n */\nfunction isValidHTTPToken (characters) {\n if (characters.length === 0) {\n return false\n }\n for (let i = 0; i < characters.length; ++i) {\n if (!isTokenCharCode(characters.charCodeAt(i))) {\n return false\n }\n }\n return true\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#header-name\n * @param {string} potentialValue\n */\nfunction isValidHeaderName (potentialValue) {\n return isValidHTTPToken(potentialValue)\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#header-value\n * @param {string} potentialValue\n */\nfunction isValidHeaderValue (potentialValue) {\n // - Has no leading or trailing HTTP tab or space bytes.\n // - Contains no 0x00 (NUL) or HTTP newline bytes.\n if (\n potentialValue.startsWith('\\t') ||\n potentialValue.startsWith(' ') ||\n potentialValue.endsWith('\\t') ||\n potentialValue.endsWith(' ')\n ) {\n return false\n }\n\n if (\n potentialValue.includes('\\0') ||\n potentialValue.includes('\\r') ||\n potentialValue.includes('\\n')\n ) {\n return false\n }\n\n return true\n}\n\n// https://w3c.github.io/webappsec-referrer-policy/#set-requests-referrer-policy-on-redirect\nfunction setRequestReferrerPolicyOnRedirect (request, actualResponse) {\n // Given a request request and a response actualResponse, this algorithm\n // updates request’s referrer policy according to the Referrer-Policy\n // header (if any) in actualResponse.\n\n // 1. Let policy be the result of executing § 8.1 Parse a referrer policy\n // from a Referrer-Policy header on actualResponse.\n\n // 8.1 Parse a referrer policy from a Referrer-Policy header\n // 1. Let policy-tokens be the result of extracting header list values given `Referrer-Policy` and response’s header list.\n const { headersList } = actualResponse\n // 2. Let policy be the empty string.\n // 3. For each token in policy-tokens, if token is a referrer policy and token is not the empty string, then set policy to token.\n // 4. Return policy.\n const policyHeader = (headersList.get('referrer-policy') ?? '').split(',')\n\n // Note: As the referrer-policy can contain multiple policies\n // separated by comma, we need to loop through all of them\n // and pick the first valid one.\n // Ref: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy#specify_a_fallback_policy\n let policy = ''\n if (policyHeader.length > 0) {\n // The right-most policy takes precedence.\n // The left-most policy is the fallback.\n for (let i = policyHeader.length; i !== 0; i--) {\n const token = policyHeader[i - 1].trim()\n if (referrerPolicyTokens.has(token)) {\n policy = token\n break\n }\n }\n }\n\n // 2. If policy is not the empty string, then set request’s referrer policy to policy.\n if (policy !== '') {\n request.referrerPolicy = policy\n }\n}\n\n// https://fetch.spec.whatwg.org/#cross-origin-resource-policy-check\nfunction crossOriginResourcePolicyCheck () {\n // TODO\n return 'allowed'\n}\n\n// https://fetch.spec.whatwg.org/#concept-cors-check\nfunction corsCheck () {\n // TODO\n return 'success'\n}\n\n// https://fetch.spec.whatwg.org/#concept-tao-check\nfunction TAOCheck () {\n // TODO\n return 'success'\n}\n\nfunction appendFetchMetadata (httpRequest) {\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-dest-header\n // TODO\n\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-mode-header\n\n // 1. Assert: r’s url is a potentially trustworthy URL.\n // TODO\n\n // 2. Let header be a Structured Header whose value is a token.\n let header = null\n\n // 3. Set header’s value to r’s mode.\n header = httpRequest.mode\n\n // 4. Set a structured field value `Sec-Fetch-Mode`/header in r’s header list.\n httpRequest.headersList.set('sec-fetch-mode', header)\n\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-site-header\n // TODO\n\n // https://w3c.github.io/webappsec-fetch-metadata/#sec-fetch-user-header\n // TODO\n}\n\n// https://fetch.spec.whatwg.org/#append-a-request-origin-header\nfunction appendRequestOriginHeader (request) {\n // 1. Let serializedOrigin be the result of byte-serializing a request origin with request.\n let serializedOrigin = request.origin\n\n // 2. If request’s response tainting is \"cors\" or request’s mode is \"websocket\", then append (`Origin`, serializedOrigin) to request’s header list.\n if (request.responseTainting === 'cors' || request.mode === 'websocket') {\n if (serializedOrigin) {\n request.headersList.append('origin', serializedOrigin)\n }\n\n // 3. Otherwise, if request’s method is neither `GET` nor `HEAD`, then:\n } else if (request.method !== 'GET' && request.method !== 'HEAD') {\n // 1. Switch on request’s referrer policy:\n switch (request.referrerPolicy) {\n case 'no-referrer':\n // Set serializedOrigin to `null`.\n serializedOrigin = null\n break\n case 'no-referrer-when-downgrade':\n case 'strict-origin':\n case 'strict-origin-when-cross-origin':\n // If request’s origin is a tuple origin, its scheme is \"https\", and request’s current URL’s scheme is not \"https\", then set serializedOrigin to `null`.\n if (request.origin && urlHasHttpsScheme(request.origin) && !urlHasHttpsScheme(requestCurrentURL(request))) {\n serializedOrigin = null\n }\n break\n case 'same-origin':\n // If request’s origin is not same origin with request’s current URL’s origin, then set serializedOrigin to `null`.\n if (!sameOrigin(request, requestCurrentURL(request))) {\n serializedOrigin = null\n }\n break\n default:\n // Do nothing.\n }\n\n if (serializedOrigin) {\n // 2. Append (`Origin`, serializedOrigin) to request’s header list.\n request.headersList.append('origin', serializedOrigin)\n }\n }\n}\n\nfunction coarsenedSharedCurrentTime (crossOriginIsolatedCapability) {\n // TODO\n return performance.now()\n}\n\n// https://fetch.spec.whatwg.org/#create-an-opaque-timing-info\nfunction createOpaqueTimingInfo (timingInfo) {\n return {\n startTime: timingInfo.startTime ?? 0,\n redirectStartTime: 0,\n redirectEndTime: 0,\n postRedirectStartTime: timingInfo.startTime ?? 0,\n finalServiceWorkerStartTime: 0,\n finalNetworkResponseStartTime: 0,\n finalNetworkRequestStartTime: 0,\n endTime: 0,\n encodedBodySize: 0,\n decodedBodySize: 0,\n finalConnectionTimingInfo: null\n }\n}\n\n// https://html.spec.whatwg.org/multipage/origin.html#policy-container\nfunction makePolicyContainer () {\n // Note: the fetch spec doesn't make use of embedder policy or CSP list\n return {\n referrerPolicy: 'strict-origin-when-cross-origin'\n }\n}\n\n// https://html.spec.whatwg.org/multipage/origin.html#clone-a-policy-container\nfunction clonePolicyContainer (policyContainer) {\n return {\n referrerPolicy: policyContainer.referrerPolicy\n }\n}\n\n// https://w3c.github.io/webappsec-referrer-policy/#determine-requests-referrer\nfunction determineRequestsReferrer (request) {\n // 1. Let policy be request's referrer policy.\n const policy = request.referrerPolicy\n\n // Note: policy cannot (shouldn't) be null or an empty string.\n assert(policy)\n\n // 2. Let environment be request’s client.\n\n let referrerSource = null\n\n // 3. Switch on request’s referrer:\n if (request.referrer === 'client') {\n // Note: node isn't a browser and doesn't implement document/iframes,\n // so we bypass this step and replace it with our own.\n\n const globalOrigin = getGlobalOrigin()\n\n if (!globalOrigin || globalOrigin.origin === 'null') {\n return 'no-referrer'\n }\n\n // note: we need to clone it as it's mutated\n referrerSource = new URL(globalOrigin)\n } else if (request.referrer instanceof URL) {\n // Let referrerSource be request’s referrer.\n referrerSource = request.referrer\n }\n\n // 4. Let request’s referrerURL be the result of stripping referrerSource for\n // use as a referrer.\n let referrerURL = stripURLForReferrer(referrerSource)\n\n // 5. Let referrerOrigin be the result of stripping referrerSource for use as\n // a referrer, with the origin-only flag set to true.\n const referrerOrigin = stripURLForReferrer(referrerSource, true)\n\n // 6. If the result of serializing referrerURL is a string whose length is\n // greater than 4096, set referrerURL to referrerOrigin.\n if (referrerURL.toString().length > 4096) {\n referrerURL = referrerOrigin\n }\n\n const areSameOrigin = sameOrigin(request, referrerURL)\n const isNonPotentiallyTrustWorthy = isURLPotentiallyTrustworthy(referrerURL) &&\n !isURLPotentiallyTrustworthy(request.url)\n\n // 8. Execute the switch statements corresponding to the value of policy:\n switch (policy) {\n case 'origin': return referrerOrigin != null ? referrerOrigin : stripURLForReferrer(referrerSource, true)\n case 'unsafe-url': return referrerURL\n case 'same-origin':\n return areSameOrigin ? referrerOrigin : 'no-referrer'\n case 'origin-when-cross-origin':\n return areSameOrigin ? referrerURL : referrerOrigin\n case 'strict-origin-when-cross-origin': {\n const currentURL = requestCurrentURL(request)\n\n // 1. If the origin of referrerURL and the origin of request’s current\n // URL are the same, then return referrerURL.\n if (sameOrigin(referrerURL, currentURL)) {\n return referrerURL\n }\n\n // 2. If referrerURL is a potentially trustworthy URL and request’s\n // current URL is not a potentially trustworthy URL, then return no\n // referrer.\n if (isURLPotentiallyTrustworthy(referrerURL) && !isURLPotentiallyTrustworthy(currentURL)) {\n return 'no-referrer'\n }\n\n // 3. Return referrerOrigin.\n return referrerOrigin\n }\n case 'strict-origin': // eslint-disable-line\n /**\n * 1. If referrerURL is a potentially trustworthy URL and\n * request’s current URL is not a potentially trustworthy URL,\n * then return no referrer.\n * 2. Return referrerOrigin\n */\n case 'no-referrer-when-downgrade': // eslint-disable-line\n /**\n * 1. If referrerURL is a potentially trustworthy URL and\n * request’s current URL is not a potentially trustworthy URL,\n * then return no referrer.\n * 2. Return referrerOrigin\n */\n\n default: // eslint-disable-line\n return isNonPotentiallyTrustWorthy ? 'no-referrer' : referrerOrigin\n }\n}\n\n/**\n * @see https://w3c.github.io/webappsec-referrer-policy/#strip-url\n * @param {URL} url\n * @param {boolean|undefined} originOnly\n */\nfunction stripURLForReferrer (url, originOnly) {\n // 1. Assert: url is a URL.\n assert(url instanceof URL)\n\n // 2. If url’s scheme is a local scheme, then return no referrer.\n if (url.protocol === 'file:' || url.protocol === 'about:' || url.protocol === 'blank:') {\n return 'no-referrer'\n }\n\n // 3. Set url’s username to the empty string.\n url.username = ''\n\n // 4. Set url’s password to the empty string.\n url.password = ''\n\n // 5. Set url’s fragment to null.\n url.hash = ''\n\n // 6. If the origin-only flag is true, then:\n if (originOnly) {\n // 1. Set url’s path to « the empty string ».\n url.pathname = ''\n\n // 2. Set url’s query to null.\n url.search = ''\n }\n\n // 7. Return url.\n return url\n}\n\nfunction isURLPotentiallyTrustworthy (url) {\n if (!(url instanceof URL)) {\n return false\n }\n\n // If child of about, return true\n if (url.href === 'about:blank' || url.href === 'about:srcdoc') {\n return true\n }\n\n // If scheme is data, return true\n if (url.protocol === 'data:') return true\n\n // If file, return true\n if (url.protocol === 'file:') return true\n\n return isOriginPotentiallyTrustworthy(url.origin)\n\n function isOriginPotentiallyTrustworthy (origin) {\n // If origin is explicitly null, return false\n if (origin == null || origin === 'null') return false\n\n const originAsURL = new URL(origin)\n\n // If secure, return true\n if (originAsURL.protocol === 'https:' || originAsURL.protocol === 'wss:') {\n return true\n }\n\n // If localhost or variants, return true\n if (/^127(?:\\.[0-9]+){0,2}\\.[0-9]+$|^\\[(?:0*:)*?:?0*1\\]$/.test(originAsURL.hostname) ||\n (originAsURL.hostname === 'localhost' || originAsURL.hostname.includes('localhost.')) ||\n (originAsURL.hostname.endsWith('.localhost'))) {\n return true\n }\n\n // If any other, return false\n return false\n }\n}\n\n/**\n * @see https://w3c.github.io/webappsec-subresource-integrity/#does-response-match-metadatalist\n * @param {Uint8Array} bytes\n * @param {string} metadataList\n */\nfunction bytesMatch (bytes, metadataList) {\n // If node is not built with OpenSSL support, we cannot check\n // a request's integrity, so allow it by default (the spec will\n // allow requests if an invalid hash is given, as precedence).\n /* istanbul ignore if: only if node is built with --without-ssl */\n if (crypto === undefined) {\n return true\n }\n\n // 1. Let parsedMetadata be the result of parsing metadataList.\n const parsedMetadata = parseMetadata(metadataList)\n\n // 2. If parsedMetadata is no metadata, return true.\n if (parsedMetadata === 'no metadata') {\n return true\n }\n\n // 3. If response is not eligible for integrity validation, return false.\n // TODO\n\n // 4. If parsedMetadata is the empty set, return true.\n if (parsedMetadata.length === 0) {\n return true\n }\n\n // 5. Let metadata be the result of getting the strongest\n // metadata from parsedMetadata.\n const strongest = getStrongestMetadata(parsedMetadata)\n const metadata = filterMetadataListByAlgorithm(parsedMetadata, strongest)\n\n // 6. For each item in metadata:\n for (const item of metadata) {\n // 1. Let algorithm be the alg component of item.\n const algorithm = item.algo\n\n // 2. Let expectedValue be the val component of item.\n const expectedValue = item.hash\n\n // See https://github.com/web-platform-tests/wpt/commit/e4c5cc7a5e48093220528dfdd1c4012dc3837a0e\n // \"be liberal with padding\". This is annoying, and it's not even in the spec.\n\n // 3. Let actualValue be the result of applying algorithm to bytes.\n let actualValue = crypto.createHash(algorithm).update(bytes).digest('base64')\n\n if (actualValue[actualValue.length - 1] === '=') {\n if (actualValue[actualValue.length - 2] === '=') {\n actualValue = actualValue.slice(0, -2)\n } else {\n actualValue = actualValue.slice(0, -1)\n }\n }\n\n // 4. If actualValue is a case-sensitive match for expectedValue,\n // return true.\n if (compareBase64Mixed(actualValue, expectedValue)) {\n return true\n }\n }\n\n // 7. Return false.\n return false\n}\n\n// https://w3c.github.io/webappsec-subresource-integrity/#grammardef-hash-with-options\n// https://www.w3.org/TR/CSP2/#source-list-syntax\n// https://www.rfc-editor.org/rfc/rfc5234#appendix-B.1\nconst parseHashWithOptions = /(?sha256|sha384|sha512)-((?[A-Za-z0-9+/]+|[A-Za-z0-9_-]+)={0,2}(?:\\s|$)( +[!-~]*)?)?/i\n\n/**\n * @see https://w3c.github.io/webappsec-subresource-integrity/#parse-metadata\n * @param {string} metadata\n */\nfunction parseMetadata (metadata) {\n // 1. Let result be the empty set.\n /** @type {{ algo: string, hash: string }[]} */\n const result = []\n\n // 2. Let empty be equal to true.\n let empty = true\n\n // 3. For each token returned by splitting metadata on spaces:\n for (const token of metadata.split(' ')) {\n // 1. Set empty to false.\n empty = false\n\n // 2. Parse token as a hash-with-options.\n const parsedToken = parseHashWithOptions.exec(token)\n\n // 3. If token does not parse, continue to the next token.\n if (\n parsedToken === null ||\n parsedToken.groups === undefined ||\n parsedToken.groups.algo === undefined\n ) {\n // Note: Chromium blocks the request at this point, but Firefox\n // gives a warning that an invalid integrity was given. The\n // correct behavior is to ignore these, and subsequently not\n // check the integrity of the resource.\n continue\n }\n\n // 4. Let algorithm be the hash-algo component of token.\n const algorithm = parsedToken.groups.algo.toLowerCase()\n\n // 5. If algorithm is a hash function recognized by the user\n // agent, add the parsed token to result.\n if (supportedHashes.includes(algorithm)) {\n result.push(parsedToken.groups)\n }\n }\n\n // 4. Return no metadata if empty is true, otherwise return result.\n if (empty === true) {\n return 'no metadata'\n }\n\n return result\n}\n\n/**\n * @param {{ algo: 'sha256' | 'sha384' | 'sha512' }[]} metadataList\n */\nfunction getStrongestMetadata (metadataList) {\n // Let algorithm be the algo component of the first item in metadataList.\n // Can be sha256\n let algorithm = metadataList[0].algo\n // If the algorithm is sha512, then it is the strongest\n // and we can return immediately\n if (algorithm[3] === '5') {\n return algorithm\n }\n\n for (let i = 1; i < metadataList.length; ++i) {\n const metadata = metadataList[i]\n // If the algorithm is sha512, then it is the strongest\n // and we can break the loop immediately\n if (metadata.algo[3] === '5') {\n algorithm = 'sha512'\n break\n // If the algorithm is sha384, then a potential sha256 or sha384 is ignored\n } else if (algorithm[3] === '3') {\n continue\n // algorithm is sha256, check if algorithm is sha384 and if so, set it as\n // the strongest\n } else if (metadata.algo[3] === '3') {\n algorithm = 'sha384'\n }\n }\n return algorithm\n}\n\nfunction filterMetadataListByAlgorithm (metadataList, algorithm) {\n if (metadataList.length === 1) {\n return metadataList\n }\n\n let pos = 0\n for (let i = 0; i < metadataList.length; ++i) {\n if (metadataList[i].algo === algorithm) {\n metadataList[pos++] = metadataList[i]\n }\n }\n\n metadataList.length = pos\n\n return metadataList\n}\n\n/**\n * Compares two base64 strings, allowing for base64url\n * in the second string.\n *\n* @param {string} actualValue always base64\n * @param {string} expectedValue base64 or base64url\n * @returns {boolean}\n */\nfunction compareBase64Mixed (actualValue, expectedValue) {\n if (actualValue.length !== expectedValue.length) {\n return false\n }\n for (let i = 0; i < actualValue.length; ++i) {\n if (actualValue[i] !== expectedValue[i]) {\n if (\n (actualValue[i] === '+' && expectedValue[i] === '-') ||\n (actualValue[i] === '/' && expectedValue[i] === '_')\n ) {\n continue\n }\n return false\n }\n }\n\n return true\n}\n\n// https://w3c.github.io/webappsec-upgrade-insecure-requests/#upgrade-request\nfunction tryUpgradeRequestToAPotentiallyTrustworthyURL (request) {\n // TODO\n}\n\n/**\n * @link {https://html.spec.whatwg.org/multipage/origin.html#same-origin}\n * @param {URL} A\n * @param {URL} B\n */\nfunction sameOrigin (A, B) {\n // 1. If A and B are the same opaque origin, then return true.\n if (A.origin === B.origin && A.origin === 'null') {\n return true\n }\n\n // 2. If A and B are both tuple origins and their schemes,\n // hosts, and port are identical, then return true.\n if (A.protocol === B.protocol && A.hostname === B.hostname && A.port === B.port) {\n return true\n }\n\n // 3. Return false.\n return false\n}\n\nfunction createDeferredPromise () {\n let res\n let rej\n const promise = new Promise((resolve, reject) => {\n res = resolve\n rej = reject\n })\n\n return { promise, resolve: res, reject: rej }\n}\n\nfunction isAborted (fetchParams) {\n return fetchParams.controller.state === 'aborted'\n}\n\nfunction isCancelled (fetchParams) {\n return fetchParams.controller.state === 'aborted' ||\n fetchParams.controller.state === 'terminated'\n}\n\nconst normalizeMethodRecord = {\n delete: 'DELETE',\n DELETE: 'DELETE',\n get: 'GET',\n GET: 'GET',\n head: 'HEAD',\n HEAD: 'HEAD',\n options: 'OPTIONS',\n OPTIONS: 'OPTIONS',\n post: 'POST',\n POST: 'POST',\n put: 'PUT',\n PUT: 'PUT'\n}\n\n// Note: object prototypes should not be able to be referenced. e.g. `Object#hasOwnProperty`.\nObject.setPrototypeOf(normalizeMethodRecord, null)\n\n/**\n * @see https://fetch.spec.whatwg.org/#concept-method-normalize\n * @param {string} method\n */\nfunction normalizeMethod (method) {\n return normalizeMethodRecord[method.toLowerCase()] ?? method\n}\n\n// https://infra.spec.whatwg.org/#serialize-a-javascript-value-to-a-json-string\nfunction serializeJavascriptValueToJSONString (value) {\n // 1. Let result be ? Call(%JSON.stringify%, undefined, « value »).\n const result = JSON.stringify(value)\n\n // 2. If result is undefined, then throw a TypeError.\n if (result === undefined) {\n throw new TypeError('Value is not JSON serializable')\n }\n\n // 3. Assert: result is a string.\n assert(typeof result === 'string')\n\n // 4. Return result.\n return result\n}\n\n// https://tc39.es/ecma262/#sec-%25iteratorprototype%25-object\nconst esIteratorPrototype = Object.getPrototypeOf(Object.getPrototypeOf([][Symbol.iterator]()))\n\n/**\n * @see https://webidl.spec.whatwg.org/#dfn-iterator-prototype-object\n * @param {() => unknown[]} iterator\n * @param {string} name name of the instance\n * @param {'key'|'value'|'key+value'} kind\n */\nfunction makeIterator (iterator, name, kind) {\n const object = {\n index: 0,\n kind,\n target: iterator\n }\n\n const i = {\n next () {\n // 1. Let interface be the interface for which the iterator prototype object exists.\n\n // 2. Let thisValue be the this value.\n\n // 3. Let object be ? ToObject(thisValue).\n\n // 4. If object is a platform object, then perform a security\n // check, passing:\n\n // 5. If object is not a default iterator object for interface,\n // then throw a TypeError.\n if (Object.getPrototypeOf(this) !== i) {\n throw new TypeError(\n `'next' called on an object that does not implement interface ${name} Iterator.`\n )\n }\n\n // 6. Let index be object’s index.\n // 7. Let kind be object’s kind.\n // 8. Let values be object’s target's value pairs to iterate over.\n const { index, kind, target } = object\n const values = target()\n\n // 9. Let len be the length of values.\n const len = values.length\n\n // 10. If index is greater than or equal to len, then return\n // CreateIterResultObject(undefined, true).\n if (index >= len) {\n return { value: undefined, done: true }\n }\n\n // 11. Let pair be the entry in values at index index.\n const pair = values[index]\n\n // 12. Set object’s index to index + 1.\n object.index = index + 1\n\n // 13. Return the iterator result for pair and kind.\n return iteratorResult(pair, kind)\n },\n // The class string of an iterator prototype object for a given interface is the\n // result of concatenating the identifier of the interface and the string \" Iterator\".\n [Symbol.toStringTag]: `${name} Iterator`\n }\n\n // The [[Prototype]] internal slot of an iterator prototype object must be %IteratorPrototype%.\n Object.setPrototypeOf(i, esIteratorPrototype)\n // esIteratorPrototype needs to be the prototype of i\n // which is the prototype of an empty object. Yes, it's confusing.\n return Object.setPrototypeOf({}, i)\n}\n\n// https://webidl.spec.whatwg.org/#iterator-result\nfunction iteratorResult (pair, kind) {\n let result\n\n // 1. Let result be a value determined by the value of kind:\n switch (kind) {\n case 'key': {\n // 1. Let idlKey be pair’s key.\n // 2. Let key be the result of converting idlKey to an\n // ECMAScript value.\n // 3. result is key.\n result = pair[0]\n break\n }\n case 'value': {\n // 1. Let idlValue be pair’s value.\n // 2. Let value be the result of converting idlValue to\n // an ECMAScript value.\n // 3. result is value.\n result = pair[1]\n break\n }\n case 'key+value': {\n // 1. Let idlKey be pair’s key.\n // 2. Let idlValue be pair’s value.\n // 3. Let key be the result of converting idlKey to an\n // ECMAScript value.\n // 4. Let value be the result of converting idlValue to\n // an ECMAScript value.\n // 5. Let array be ! ArrayCreate(2).\n // 6. Call ! CreateDataProperty(array, \"0\", key).\n // 7. Call ! CreateDataProperty(array, \"1\", value).\n // 8. result is array.\n result = pair\n break\n }\n }\n\n // 2. Return CreateIterResultObject(result, false).\n return { value: result, done: false }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#body-fully-read\n */\nasync function fullyReadBody (body, processBody, processBodyError) {\n // 1. If taskDestination is null, then set taskDestination to\n // the result of starting a new parallel queue.\n\n // 2. Let successSteps given a byte sequence bytes be to queue a\n // fetch task to run processBody given bytes, with taskDestination.\n const successSteps = processBody\n\n // 3. Let errorSteps be to queue a fetch task to run processBodyError,\n // with taskDestination.\n const errorSteps = processBodyError\n\n // 4. Let reader be the result of getting a reader for body’s stream.\n // If that threw an exception, then run errorSteps with that\n // exception and return.\n let reader\n\n try {\n reader = body.stream.getReader()\n } catch (e) {\n errorSteps(e)\n return\n }\n\n // 5. Read all bytes from reader, given successSteps and errorSteps.\n try {\n const result = await readAllBytes(reader)\n successSteps(result)\n } catch (e) {\n errorSteps(e)\n }\n}\n\n/** @type {ReadableStream} */\nlet ReadableStream = globalThis.ReadableStream\n\nfunction isReadableStreamLike (stream) {\n if (!ReadableStream) {\n ReadableStream = require('stream/web').ReadableStream\n }\n\n return stream instanceof ReadableStream || (\n stream[Symbol.toStringTag] === 'ReadableStream' &&\n typeof stream.tee === 'function'\n )\n}\n\nconst MAXIMUM_ARGUMENT_LENGTH = 65535\n\n/**\n * @see https://infra.spec.whatwg.org/#isomorphic-decode\n * @param {number[]|Uint8Array} input\n */\nfunction isomorphicDecode (input) {\n // 1. To isomorphic decode a byte sequence input, return a string whose code point\n // length is equal to input’s length and whose code points have the same values\n // as the values of input’s bytes, in the same order.\n\n if (input.length < MAXIMUM_ARGUMENT_LENGTH) {\n return String.fromCharCode(...input)\n }\n\n return input.reduce((previous, current) => previous + String.fromCharCode(current), '')\n}\n\n/**\n * @param {ReadableStreamController} controller\n */\nfunction readableStreamClose (controller) {\n try {\n controller.close()\n } catch (err) {\n // TODO: add comment explaining why this error occurs.\n if (!err.message.includes('Controller is already closed')) {\n throw err\n }\n }\n}\n\n/**\n * @see https://infra.spec.whatwg.org/#isomorphic-encode\n * @param {string} input\n */\nfunction isomorphicEncode (input) {\n // 1. Assert: input contains no code points greater than U+00FF.\n for (let i = 0; i < input.length; i++) {\n assert(input.charCodeAt(i) <= 0xFF)\n }\n\n // 2. Return a byte sequence whose length is equal to input’s code\n // point length and whose bytes have the same values as the\n // values of input’s code points, in the same order\n return input\n}\n\n/**\n * @see https://streams.spec.whatwg.org/#readablestreamdefaultreader-read-all-bytes\n * @see https://streams.spec.whatwg.org/#read-loop\n * @param {ReadableStreamDefaultReader} reader\n */\nasync function readAllBytes (reader) {\n const bytes = []\n let byteLength = 0\n\n while (true) {\n const { done, value: chunk } = await reader.read()\n\n if (done) {\n // 1. Call successSteps with bytes.\n return Buffer.concat(bytes, byteLength)\n }\n\n // 1. If chunk is not a Uint8Array object, call failureSteps\n // with a TypeError and abort these steps.\n if (!isUint8Array(chunk)) {\n throw new TypeError('Received non-Uint8Array chunk')\n }\n\n // 2. Append the bytes represented by chunk to bytes.\n bytes.push(chunk)\n byteLength += chunk.length\n\n // 3. Read-loop given reader, bytes, successSteps, and failureSteps.\n }\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#is-local\n * @param {URL} url\n */\nfunction urlIsLocal (url) {\n assert('protocol' in url) // ensure it's a url object\n\n const protocol = url.protocol\n\n return protocol === 'about:' || protocol === 'blob:' || protocol === 'data:'\n}\n\n/**\n * @param {string|URL} url\n */\nfunction urlHasHttpsScheme (url) {\n if (typeof url === 'string') {\n return url.startsWith('https:')\n }\n\n return url.protocol === 'https:'\n}\n\n/**\n * @see https://fetch.spec.whatwg.org/#http-scheme\n * @param {URL} url\n */\nfunction urlIsHttpHttpsScheme (url) {\n assert('protocol' in url) // ensure it's a url object\n\n const protocol = url.protocol\n\n return protocol === 'http:' || protocol === 'https:'\n}\n\n/**\n * Fetch supports node >= 16.8.0, but Object.hasOwn was added in v16.9.0.\n */\nconst hasOwn = Object.hasOwn || ((dict, key) => Object.prototype.hasOwnProperty.call(dict, key))\n\nmodule.exports = {\n isAborted,\n isCancelled,\n createDeferredPromise,\n ReadableStreamFrom,\n toUSVString,\n tryUpgradeRequestToAPotentiallyTrustworthyURL,\n coarsenedSharedCurrentTime,\n determineRequestsReferrer,\n makePolicyContainer,\n clonePolicyContainer,\n appendFetchMetadata,\n appendRequestOriginHeader,\n TAOCheck,\n corsCheck,\n crossOriginResourcePolicyCheck,\n createOpaqueTimingInfo,\n setRequestReferrerPolicyOnRedirect,\n isValidHTTPToken,\n requestBadPort,\n requestCurrentURL,\n responseURL,\n responseLocationURL,\n isBlobLike,\n isURLPotentiallyTrustworthy,\n isValidReasonPhrase,\n sameOrigin,\n normalizeMethod,\n serializeJavascriptValueToJSONString,\n makeIterator,\n isValidHeaderName,\n isValidHeaderValue,\n hasOwn,\n isErrorLike,\n fullyReadBody,\n bytesMatch,\n isReadableStreamLike,\n readableStreamClose,\n isomorphicEncode,\n isomorphicDecode,\n urlIsLocal,\n urlHasHttpsScheme,\n urlIsHttpHttpsScheme,\n readAllBytes,\n normalizeMethodRecord,\n parseMetadata\n}\n","'use strict'\n\nconst { types } = require('util')\nconst { hasOwn, toUSVString } = require('./util')\n\n/** @type {import('../../types/webidl').Webidl} */\nconst webidl = {}\nwebidl.converters = {}\nwebidl.util = {}\nwebidl.errors = {}\n\nwebidl.errors.exception = function (message) {\n return new TypeError(`${message.header}: ${message.message}`)\n}\n\nwebidl.errors.conversionFailed = function (context) {\n const plural = context.types.length === 1 ? '' : ' one of'\n const message =\n `${context.argument} could not be converted to` +\n `${plural}: ${context.types.join(', ')}.`\n\n return webidl.errors.exception({\n header: context.prefix,\n message\n })\n}\n\nwebidl.errors.invalidArgument = function (context) {\n return webidl.errors.exception({\n header: context.prefix,\n message: `\"${context.value}\" is an invalid ${context.type}.`\n })\n}\n\n// https://webidl.spec.whatwg.org/#implements\nwebidl.brandCheck = function (V, I, opts = undefined) {\n if (opts?.strict !== false && !(V instanceof I)) {\n throw new TypeError('Illegal invocation')\n } else {\n return V?.[Symbol.toStringTag] === I.prototype[Symbol.toStringTag]\n }\n}\n\nwebidl.argumentLengthCheck = function ({ length }, min, ctx) {\n if (length < min) {\n throw webidl.errors.exception({\n message: `${min} argument${min !== 1 ? 's' : ''} required, ` +\n `but${length ? ' only' : ''} ${length} found.`,\n ...ctx\n })\n }\n}\n\nwebidl.illegalConstructor = function () {\n throw webidl.errors.exception({\n header: 'TypeError',\n message: 'Illegal constructor'\n })\n}\n\n// https://tc39.es/ecma262/#sec-ecmascript-data-types-and-values\nwebidl.util.Type = function (V) {\n switch (typeof V) {\n case 'undefined': return 'Undefined'\n case 'boolean': return 'Boolean'\n case 'string': return 'String'\n case 'symbol': return 'Symbol'\n case 'number': return 'Number'\n case 'bigint': return 'BigInt'\n case 'function':\n case 'object': {\n if (V === null) {\n return 'Null'\n }\n\n return 'Object'\n }\n }\n}\n\n// https://webidl.spec.whatwg.org/#abstract-opdef-converttoint\nwebidl.util.ConvertToInt = function (V, bitLength, signedness, opts = {}) {\n let upperBound\n let lowerBound\n\n // 1. If bitLength is 64, then:\n if (bitLength === 64) {\n // 1. Let upperBound be 2^53 − 1.\n upperBound = Math.pow(2, 53) - 1\n\n // 2. If signedness is \"unsigned\", then let lowerBound be 0.\n if (signedness === 'unsigned') {\n lowerBound = 0\n } else {\n // 3. Otherwise let lowerBound be −2^53 + 1.\n lowerBound = Math.pow(-2, 53) + 1\n }\n } else if (signedness === 'unsigned') {\n // 2. Otherwise, if signedness is \"unsigned\", then:\n\n // 1. Let lowerBound be 0.\n lowerBound = 0\n\n // 2. Let upperBound be 2^bitLength − 1.\n upperBound = Math.pow(2, bitLength) - 1\n } else {\n // 3. Otherwise:\n\n // 1. Let lowerBound be -2^bitLength − 1.\n lowerBound = Math.pow(-2, bitLength) - 1\n\n // 2. Let upperBound be 2^bitLength − 1 − 1.\n upperBound = Math.pow(2, bitLength - 1) - 1\n }\n\n // 4. Let x be ? ToNumber(V).\n let x = Number(V)\n\n // 5. If x is −0, then set x to +0.\n if (x === 0) {\n x = 0\n }\n\n // 6. If the conversion is to an IDL type associated\n // with the [EnforceRange] extended attribute, then:\n if (opts.enforceRange === true) {\n // 1. If x is NaN, +∞, or −∞, then throw a TypeError.\n if (\n Number.isNaN(x) ||\n x === Number.POSITIVE_INFINITY ||\n x === Number.NEGATIVE_INFINITY\n ) {\n throw webidl.errors.exception({\n header: 'Integer conversion',\n message: `Could not convert ${V} to an integer.`\n })\n }\n\n // 2. Set x to IntegerPart(x).\n x = webidl.util.IntegerPart(x)\n\n // 3. If x < lowerBound or x > upperBound, then\n // throw a TypeError.\n if (x < lowerBound || x > upperBound) {\n throw webidl.errors.exception({\n header: 'Integer conversion',\n message: `Value must be between ${lowerBound}-${upperBound}, got ${x}.`\n })\n }\n\n // 4. Return x.\n return x\n }\n\n // 7. If x is not NaN and the conversion is to an IDL\n // type associated with the [Clamp] extended\n // attribute, then:\n if (!Number.isNaN(x) && opts.clamp === true) {\n // 1. Set x to min(max(x, lowerBound), upperBound).\n x = Math.min(Math.max(x, lowerBound), upperBound)\n\n // 2. Round x to the nearest integer, choosing the\n // even integer if it lies halfway between two,\n // and choosing +0 rather than −0.\n if (Math.floor(x) % 2 === 0) {\n x = Math.floor(x)\n } else {\n x = Math.ceil(x)\n }\n\n // 3. Return x.\n return x\n }\n\n // 8. If x is NaN, +0, +∞, or −∞, then return +0.\n if (\n Number.isNaN(x) ||\n (x === 0 && Object.is(0, x)) ||\n x === Number.POSITIVE_INFINITY ||\n x === Number.NEGATIVE_INFINITY\n ) {\n return 0\n }\n\n // 9. Set x to IntegerPart(x).\n x = webidl.util.IntegerPart(x)\n\n // 10. Set x to x modulo 2^bitLength.\n x = x % Math.pow(2, bitLength)\n\n // 11. If signedness is \"signed\" and x ≥ 2^bitLength − 1,\n // then return x − 2^bitLength.\n if (signedness === 'signed' && x >= Math.pow(2, bitLength) - 1) {\n return x - Math.pow(2, bitLength)\n }\n\n // 12. Otherwise, return x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#abstract-opdef-integerpart\nwebidl.util.IntegerPart = function (n) {\n // 1. Let r be floor(abs(n)).\n const r = Math.floor(Math.abs(n))\n\n // 2. If n < 0, then return -1 × r.\n if (n < 0) {\n return -1 * r\n }\n\n // 3. Otherwise, return r.\n return r\n}\n\n// https://webidl.spec.whatwg.org/#es-sequence\nwebidl.sequenceConverter = function (converter) {\n return (V) => {\n // 1. If Type(V) is not Object, throw a TypeError.\n if (webidl.util.Type(V) !== 'Object') {\n throw webidl.errors.exception({\n header: 'Sequence',\n message: `Value of type ${webidl.util.Type(V)} is not an Object.`\n })\n }\n\n // 2. Let method be ? GetMethod(V, @@iterator).\n /** @type {Generator} */\n const method = V?.[Symbol.iterator]?.()\n const seq = []\n\n // 3. If method is undefined, throw a TypeError.\n if (\n method === undefined ||\n typeof method.next !== 'function'\n ) {\n throw webidl.errors.exception({\n header: 'Sequence',\n message: 'Object is not an iterator.'\n })\n }\n\n // https://webidl.spec.whatwg.org/#create-sequence-from-iterable\n while (true) {\n const { done, value } = method.next()\n\n if (done) {\n break\n }\n\n seq.push(converter(value))\n }\n\n return seq\n }\n}\n\n// https://webidl.spec.whatwg.org/#es-to-record\nwebidl.recordConverter = function (keyConverter, valueConverter) {\n return (O) => {\n // 1. If Type(O) is not Object, throw a TypeError.\n if (webidl.util.Type(O) !== 'Object') {\n throw webidl.errors.exception({\n header: 'Record',\n message: `Value of type ${webidl.util.Type(O)} is not an Object.`\n })\n }\n\n // 2. Let result be a new empty instance of record.\n const result = {}\n\n if (!types.isProxy(O)) {\n // Object.keys only returns enumerable properties\n const keys = Object.keys(O)\n\n for (const key of keys) {\n // 1. Let typedKey be key converted to an IDL value of type K.\n const typedKey = keyConverter(key)\n\n // 2. Let value be ? Get(O, key).\n // 3. Let typedValue be value converted to an IDL value of type V.\n const typedValue = valueConverter(O[key])\n\n // 4. Set result[typedKey] to typedValue.\n result[typedKey] = typedValue\n }\n\n // 5. Return result.\n return result\n }\n\n // 3. Let keys be ? O.[[OwnPropertyKeys]]().\n const keys = Reflect.ownKeys(O)\n\n // 4. For each key of keys.\n for (const key of keys) {\n // 1. Let desc be ? O.[[GetOwnProperty]](key).\n const desc = Reflect.getOwnPropertyDescriptor(O, key)\n\n // 2. If desc is not undefined and desc.[[Enumerable]] is true:\n if (desc?.enumerable) {\n // 1. Let typedKey be key converted to an IDL value of type K.\n const typedKey = keyConverter(key)\n\n // 2. Let value be ? Get(O, key).\n // 3. Let typedValue be value converted to an IDL value of type V.\n const typedValue = valueConverter(O[key])\n\n // 4. Set result[typedKey] to typedValue.\n result[typedKey] = typedValue\n }\n }\n\n // 5. Return result.\n return result\n }\n}\n\nwebidl.interfaceConverter = function (i) {\n return (V, opts = {}) => {\n if (opts.strict !== false && !(V instanceof i)) {\n throw webidl.errors.exception({\n header: i.name,\n message: `Expected ${V} to be an instance of ${i.name}.`\n })\n }\n\n return V\n }\n}\n\nwebidl.dictionaryConverter = function (converters) {\n return (dictionary) => {\n const type = webidl.util.Type(dictionary)\n const dict = {}\n\n if (type === 'Null' || type === 'Undefined') {\n return dict\n } else if (type !== 'Object') {\n throw webidl.errors.exception({\n header: 'Dictionary',\n message: `Expected ${dictionary} to be one of: Null, Undefined, Object.`\n })\n }\n\n for (const options of converters) {\n const { key, defaultValue, required, converter } = options\n\n if (required === true) {\n if (!hasOwn(dictionary, key)) {\n throw webidl.errors.exception({\n header: 'Dictionary',\n message: `Missing required key \"${key}\".`\n })\n }\n }\n\n let value = dictionary[key]\n const hasDefault = hasOwn(options, 'defaultValue')\n\n // Only use defaultValue if value is undefined and\n // a defaultValue options was provided.\n if (hasDefault && value !== null) {\n value = value ?? defaultValue\n }\n\n // A key can be optional and have no default value.\n // When this happens, do not perform a conversion,\n // and do not assign the key a value.\n if (required || hasDefault || value !== undefined) {\n value = converter(value)\n\n if (\n options.allowedValues &&\n !options.allowedValues.includes(value)\n ) {\n throw webidl.errors.exception({\n header: 'Dictionary',\n message: `${value} is not an accepted type. Expected one of ${options.allowedValues.join(', ')}.`\n })\n }\n\n dict[key] = value\n }\n }\n\n return dict\n }\n}\n\nwebidl.nullableConverter = function (converter) {\n return (V) => {\n if (V === null) {\n return V\n }\n\n return converter(V)\n }\n}\n\n// https://webidl.spec.whatwg.org/#es-DOMString\nwebidl.converters.DOMString = function (V, opts = {}) {\n // 1. If V is null and the conversion is to an IDL type\n // associated with the [LegacyNullToEmptyString]\n // extended attribute, then return the DOMString value\n // that represents the empty string.\n if (V === null && opts.legacyNullToEmptyString) {\n return ''\n }\n\n // 2. Let x be ? ToString(V).\n if (typeof V === 'symbol') {\n throw new TypeError('Could not convert argument of type symbol to string.')\n }\n\n // 3. Return the IDL DOMString value that represents the\n // same sequence of code units as the one the\n // ECMAScript String value x represents.\n return String(V)\n}\n\n// https://webidl.spec.whatwg.org/#es-ByteString\nwebidl.converters.ByteString = function (V) {\n // 1. Let x be ? ToString(V).\n // Note: DOMString converter perform ? ToString(V)\n const x = webidl.converters.DOMString(V)\n\n // 2. If the value of any element of x is greater than\n // 255, then throw a TypeError.\n for (let index = 0; index < x.length; index++) {\n if (x.charCodeAt(index) > 255) {\n throw new TypeError(\n 'Cannot convert argument to a ByteString because the character at ' +\n `index ${index} has a value of ${x.charCodeAt(index)} which is greater than 255.`\n )\n }\n }\n\n // 3. Return an IDL ByteString value whose length is the\n // length of x, and where the value of each element is\n // the value of the corresponding element of x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-USVString\nwebidl.converters.USVString = toUSVString\n\n// https://webidl.spec.whatwg.org/#es-boolean\nwebidl.converters.boolean = function (V) {\n // 1. Let x be the result of computing ToBoolean(V).\n const x = Boolean(V)\n\n // 2. Return the IDL boolean value that is the one that represents\n // the same truth value as the ECMAScript Boolean value x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-any\nwebidl.converters.any = function (V) {\n return V\n}\n\n// https://webidl.spec.whatwg.org/#es-long-long\nwebidl.converters['long long'] = function (V) {\n // 1. Let x be ? ConvertToInt(V, 64, \"signed\").\n const x = webidl.util.ConvertToInt(V, 64, 'signed')\n\n // 2. Return the IDL long long value that represents\n // the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-long-long\nwebidl.converters['unsigned long long'] = function (V) {\n // 1. Let x be ? ConvertToInt(V, 64, \"unsigned\").\n const x = webidl.util.ConvertToInt(V, 64, 'unsigned')\n\n // 2. Return the IDL unsigned long long value that\n // represents the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-long\nwebidl.converters['unsigned long'] = function (V) {\n // 1. Let x be ? ConvertToInt(V, 32, \"unsigned\").\n const x = webidl.util.ConvertToInt(V, 32, 'unsigned')\n\n // 2. Return the IDL unsigned long value that\n // represents the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#es-unsigned-short\nwebidl.converters['unsigned short'] = function (V, opts) {\n // 1. Let x be ? ConvertToInt(V, 16, \"unsigned\").\n const x = webidl.util.ConvertToInt(V, 16, 'unsigned', opts)\n\n // 2. Return the IDL unsigned short value that represents\n // the same numeric value as x.\n return x\n}\n\n// https://webidl.spec.whatwg.org/#idl-ArrayBuffer\nwebidl.converters.ArrayBuffer = function (V, opts = {}) {\n // 1. If Type(V) is not Object, or V does not have an\n // [[ArrayBufferData]] internal slot, then throw a\n // TypeError.\n // see: https://tc39.es/ecma262/#sec-properties-of-the-arraybuffer-instances\n // see: https://tc39.es/ecma262/#sec-properties-of-the-sharedarraybuffer-instances\n if (\n webidl.util.Type(V) !== 'Object' ||\n !types.isAnyArrayBuffer(V)\n ) {\n throw webidl.errors.conversionFailed({\n prefix: `${V}`,\n argument: `${V}`,\n types: ['ArrayBuffer']\n })\n }\n\n // 2. If the conversion is not to an IDL type associated\n // with the [AllowShared] extended attribute, and\n // IsSharedArrayBuffer(V) is true, then throw a\n // TypeError.\n if (opts.allowShared === false && types.isSharedArrayBuffer(V)) {\n throw webidl.errors.exception({\n header: 'ArrayBuffer',\n message: 'SharedArrayBuffer is not allowed.'\n })\n }\n\n // 3. If the conversion is not to an IDL type associated\n // with the [AllowResizable] extended attribute, and\n // IsResizableArrayBuffer(V) is true, then throw a\n // TypeError.\n // Note: resizable ArrayBuffers are currently a proposal.\n\n // 4. Return the IDL ArrayBuffer value that is a\n // reference to the same object as V.\n return V\n}\n\nwebidl.converters.TypedArray = function (V, T, opts = {}) {\n // 1. Let T be the IDL type V is being converted to.\n\n // 2. If Type(V) is not Object, or V does not have a\n // [[TypedArrayName]] internal slot with a value\n // equal to T’s name, then throw a TypeError.\n if (\n webidl.util.Type(V) !== 'Object' ||\n !types.isTypedArray(V) ||\n V.constructor.name !== T.name\n ) {\n throw webidl.errors.conversionFailed({\n prefix: `${T.name}`,\n argument: `${V}`,\n types: [T.name]\n })\n }\n\n // 3. If the conversion is not to an IDL type associated\n // with the [AllowShared] extended attribute, and\n // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is\n // true, then throw a TypeError.\n if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {\n throw webidl.errors.exception({\n header: 'ArrayBuffer',\n message: 'SharedArrayBuffer is not allowed.'\n })\n }\n\n // 4. If the conversion is not to an IDL type associated\n // with the [AllowResizable] extended attribute, and\n // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is\n // true, then throw a TypeError.\n // Note: resizable array buffers are currently a proposal\n\n // 5. Return the IDL value of type T that is a reference\n // to the same object as V.\n return V\n}\n\nwebidl.converters.DataView = function (V, opts = {}) {\n // 1. If Type(V) is not Object, or V does not have a\n // [[DataView]] internal slot, then throw a TypeError.\n if (webidl.util.Type(V) !== 'Object' || !types.isDataView(V)) {\n throw webidl.errors.exception({\n header: 'DataView',\n message: 'Object is not a DataView.'\n })\n }\n\n // 2. If the conversion is not to an IDL type associated\n // with the [AllowShared] extended attribute, and\n // IsSharedArrayBuffer(V.[[ViewedArrayBuffer]]) is true,\n // then throw a TypeError.\n if (opts.allowShared === false && types.isSharedArrayBuffer(V.buffer)) {\n throw webidl.errors.exception({\n header: 'ArrayBuffer',\n message: 'SharedArrayBuffer is not allowed.'\n })\n }\n\n // 3. If the conversion is not to an IDL type associated\n // with the [AllowResizable] extended attribute, and\n // IsResizableArrayBuffer(V.[[ViewedArrayBuffer]]) is\n // true, then throw a TypeError.\n // Note: resizable ArrayBuffers are currently a proposal\n\n // 4. Return the IDL DataView value that is a reference\n // to the same object as V.\n return V\n}\n\n// https://webidl.spec.whatwg.org/#BufferSource\nwebidl.converters.BufferSource = function (V, opts = {}) {\n if (types.isAnyArrayBuffer(V)) {\n return webidl.converters.ArrayBuffer(V, opts)\n }\n\n if (types.isTypedArray(V)) {\n return webidl.converters.TypedArray(V, V.constructor)\n }\n\n if (types.isDataView(V)) {\n return webidl.converters.DataView(V, opts)\n }\n\n throw new TypeError(`Could not convert ${V} to a BufferSource.`)\n}\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.ByteString\n)\n\nwebidl.converters['sequence>'] = webidl.sequenceConverter(\n webidl.converters['sequence']\n)\n\nwebidl.converters['record'] = webidl.recordConverter(\n webidl.converters.ByteString,\n webidl.converters.ByteString\n)\n\nmodule.exports = {\n webidl\n}\n","'use strict'\n\n/**\n * @see https://encoding.spec.whatwg.org/#concept-encoding-get\n * @param {string|undefined} label\n */\nfunction getEncoding (label) {\n if (!label) {\n return 'failure'\n }\n\n // 1. Remove any leading and trailing ASCII whitespace from label.\n // 2. If label is an ASCII case-insensitive match for any of the\n // labels listed in the table below, then return the\n // corresponding encoding; otherwise return failure.\n switch (label.trim().toLowerCase()) {\n case 'unicode-1-1-utf-8':\n case 'unicode11utf8':\n case 'unicode20utf8':\n case 'utf-8':\n case 'utf8':\n case 'x-unicode20utf8':\n return 'UTF-8'\n case '866':\n case 'cp866':\n case 'csibm866':\n case 'ibm866':\n return 'IBM866'\n case 'csisolatin2':\n case 'iso-8859-2':\n case 'iso-ir-101':\n case 'iso8859-2':\n case 'iso88592':\n case 'iso_8859-2':\n case 'iso_8859-2:1987':\n case 'l2':\n case 'latin2':\n return 'ISO-8859-2'\n case 'csisolatin3':\n case 'iso-8859-3':\n case 'iso-ir-109':\n case 'iso8859-3':\n case 'iso88593':\n case 'iso_8859-3':\n case 'iso_8859-3:1988':\n case 'l3':\n case 'latin3':\n return 'ISO-8859-3'\n case 'csisolatin4':\n case 'iso-8859-4':\n case 'iso-ir-110':\n case 'iso8859-4':\n case 'iso88594':\n case 'iso_8859-4':\n case 'iso_8859-4:1988':\n case 'l4':\n case 'latin4':\n return 'ISO-8859-4'\n case 'csisolatincyrillic':\n case 'cyrillic':\n case 'iso-8859-5':\n case 'iso-ir-144':\n case 'iso8859-5':\n case 'iso88595':\n case 'iso_8859-5':\n case 'iso_8859-5:1988':\n return 'ISO-8859-5'\n case 'arabic':\n case 'asmo-708':\n case 'csiso88596e':\n case 'csiso88596i':\n case 'csisolatinarabic':\n case 'ecma-114':\n case 'iso-8859-6':\n case 'iso-8859-6-e':\n case 'iso-8859-6-i':\n case 'iso-ir-127':\n case 'iso8859-6':\n case 'iso88596':\n case 'iso_8859-6':\n case 'iso_8859-6:1987':\n return 'ISO-8859-6'\n case 'csisolatingreek':\n case 'ecma-118':\n case 'elot_928':\n case 'greek':\n case 'greek8':\n case 'iso-8859-7':\n case 'iso-ir-126':\n case 'iso8859-7':\n case 'iso88597':\n case 'iso_8859-7':\n case 'iso_8859-7:1987':\n case 'sun_eu_greek':\n return 'ISO-8859-7'\n case 'csiso88598e':\n case 'csisolatinhebrew':\n case 'hebrew':\n case 'iso-8859-8':\n case 'iso-8859-8-e':\n case 'iso-ir-138':\n case 'iso8859-8':\n case 'iso88598':\n case 'iso_8859-8':\n case 'iso_8859-8:1988':\n case 'visual':\n return 'ISO-8859-8'\n case 'csiso88598i':\n case 'iso-8859-8-i':\n case 'logical':\n return 'ISO-8859-8-I'\n case 'csisolatin6':\n case 'iso-8859-10':\n case 'iso-ir-157':\n case 'iso8859-10':\n case 'iso885910':\n case 'l6':\n case 'latin6':\n return 'ISO-8859-10'\n case 'iso-8859-13':\n case 'iso8859-13':\n case 'iso885913':\n return 'ISO-8859-13'\n case 'iso-8859-14':\n case 'iso8859-14':\n case 'iso885914':\n return 'ISO-8859-14'\n case 'csisolatin9':\n case 'iso-8859-15':\n case 'iso8859-15':\n case 'iso885915':\n case 'iso_8859-15':\n case 'l9':\n return 'ISO-8859-15'\n case 'iso-8859-16':\n return 'ISO-8859-16'\n case 'cskoi8r':\n case 'koi':\n case 'koi8':\n case 'koi8-r':\n case 'koi8_r':\n return 'KOI8-R'\n case 'koi8-ru':\n case 'koi8-u':\n return 'KOI8-U'\n case 'csmacintosh':\n case 'mac':\n case 'macintosh':\n case 'x-mac-roman':\n return 'macintosh'\n case 'iso-8859-11':\n case 'iso8859-11':\n case 'iso885911':\n case 'tis-620':\n case 'windows-874':\n return 'windows-874'\n case 'cp1250':\n case 'windows-1250':\n case 'x-cp1250':\n return 'windows-1250'\n case 'cp1251':\n case 'windows-1251':\n case 'x-cp1251':\n return 'windows-1251'\n case 'ansi_x3.4-1968':\n case 'ascii':\n case 'cp1252':\n case 'cp819':\n case 'csisolatin1':\n case 'ibm819':\n case 'iso-8859-1':\n case 'iso-ir-100':\n case 'iso8859-1':\n case 'iso88591':\n case 'iso_8859-1':\n case 'iso_8859-1:1987':\n case 'l1':\n case 'latin1':\n case 'us-ascii':\n case 'windows-1252':\n case 'x-cp1252':\n return 'windows-1252'\n case 'cp1253':\n case 'windows-1253':\n case 'x-cp1253':\n return 'windows-1253'\n case 'cp1254':\n case 'csisolatin5':\n case 'iso-8859-9':\n case 'iso-ir-148':\n case 'iso8859-9':\n case 'iso88599':\n case 'iso_8859-9':\n case 'iso_8859-9:1989':\n case 'l5':\n case 'latin5':\n case 'windows-1254':\n case 'x-cp1254':\n return 'windows-1254'\n case 'cp1255':\n case 'windows-1255':\n case 'x-cp1255':\n return 'windows-1255'\n case 'cp1256':\n case 'windows-1256':\n case 'x-cp1256':\n return 'windows-1256'\n case 'cp1257':\n case 'windows-1257':\n case 'x-cp1257':\n return 'windows-1257'\n case 'cp1258':\n case 'windows-1258':\n case 'x-cp1258':\n return 'windows-1258'\n case 'x-mac-cyrillic':\n case 'x-mac-ukrainian':\n return 'x-mac-cyrillic'\n case 'chinese':\n case 'csgb2312':\n case 'csiso58gb231280':\n case 'gb2312':\n case 'gb_2312':\n case 'gb_2312-80':\n case 'gbk':\n case 'iso-ir-58':\n case 'x-gbk':\n return 'GBK'\n case 'gb18030':\n return 'gb18030'\n case 'big5':\n case 'big5-hkscs':\n case 'cn-big5':\n case 'csbig5':\n case 'x-x-big5':\n return 'Big5'\n case 'cseucpkdfmtjapanese':\n case 'euc-jp':\n case 'x-euc-jp':\n return 'EUC-JP'\n case 'csiso2022jp':\n case 'iso-2022-jp':\n return 'ISO-2022-JP'\n case 'csshiftjis':\n case 'ms932':\n case 'ms_kanji':\n case 'shift-jis':\n case 'shift_jis':\n case 'sjis':\n case 'windows-31j':\n case 'x-sjis':\n return 'Shift_JIS'\n case 'cseuckr':\n case 'csksc56011987':\n case 'euc-kr':\n case 'iso-ir-149':\n case 'korean':\n case 'ks_c_5601-1987':\n case 'ks_c_5601-1989':\n case 'ksc5601':\n case 'ksc_5601':\n case 'windows-949':\n return 'EUC-KR'\n case 'csiso2022kr':\n case 'hz-gb-2312':\n case 'iso-2022-cn':\n case 'iso-2022-cn-ext':\n case 'iso-2022-kr':\n case 'replacement':\n return 'replacement'\n case 'unicodefffe':\n case 'utf-16be':\n return 'UTF-16BE'\n case 'csunicode':\n case 'iso-10646-ucs-2':\n case 'ucs-2':\n case 'unicode':\n case 'unicodefeff':\n case 'utf-16':\n case 'utf-16le':\n return 'UTF-16LE'\n case 'x-user-defined':\n return 'x-user-defined'\n default: return 'failure'\n }\n}\n\nmodule.exports = {\n getEncoding\n}\n","'use strict'\n\nconst {\n staticPropertyDescriptors,\n readOperation,\n fireAProgressEvent\n} = require('./util')\nconst {\n kState,\n kError,\n kResult,\n kEvents,\n kAborted\n} = require('./symbols')\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../core/util')\n\nclass FileReader extends EventTarget {\n constructor () {\n super()\n\n this[kState] = 'empty'\n this[kResult] = null\n this[kError] = null\n this[kEvents] = {\n loadend: null,\n error: null,\n abort: null,\n load: null,\n progress: null,\n loadstart: null\n }\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dfn-readAsArrayBuffer\n * @param {import('buffer').Blob} blob\n */\n readAsArrayBuffer (blob) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsArrayBuffer' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n // The readAsArrayBuffer(blob) method, when invoked,\n // must initiate a read operation for blob with ArrayBuffer.\n readOperation(this, blob, 'ArrayBuffer')\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#readAsBinaryString\n * @param {import('buffer').Blob} blob\n */\n readAsBinaryString (blob) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsBinaryString' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n // The readAsBinaryString(blob) method, when invoked,\n // must initiate a read operation for blob with BinaryString.\n readOperation(this, blob, 'BinaryString')\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#readAsDataText\n * @param {import('buffer').Blob} blob\n * @param {string?} encoding\n */\n readAsText (blob, encoding = undefined) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsText' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n if (encoding !== undefined) {\n encoding = webidl.converters.DOMString(encoding)\n }\n\n // The readAsText(blob, encoding) method, when invoked,\n // must initiate a read operation for blob with Text and encoding.\n readOperation(this, blob, 'Text', encoding)\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dfn-readAsDataURL\n * @param {import('buffer').Blob} blob\n */\n readAsDataURL (blob) {\n webidl.brandCheck(this, FileReader)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'FileReader.readAsDataURL' })\n\n blob = webidl.converters.Blob(blob, { strict: false })\n\n // The readAsDataURL(blob) method, when invoked, must\n // initiate a read operation for blob with DataURL.\n readOperation(this, blob, 'DataURL')\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dfn-abort\n */\n abort () {\n // 1. If this's state is \"empty\" or if this's state is\n // \"done\" set this's result to null and terminate\n // this algorithm.\n if (this[kState] === 'empty' || this[kState] === 'done') {\n this[kResult] = null\n return\n }\n\n // 2. If this's state is \"loading\" set this's state to\n // \"done\" and set this's result to null.\n if (this[kState] === 'loading') {\n this[kState] = 'done'\n this[kResult] = null\n }\n\n // 3. If there are any tasks from this on the file reading\n // task source in an affiliated task queue, then remove\n // those tasks from that task queue.\n this[kAborted] = true\n\n // 4. Terminate the algorithm for the read method being processed.\n // TODO\n\n // 5. Fire a progress event called abort at this.\n fireAProgressEvent('abort', this)\n\n // 6. If this's state is not \"loading\", fire a progress\n // event called loadend at this.\n if (this[kState] !== 'loading') {\n fireAProgressEvent('loadend', this)\n }\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dom-filereader-readystate\n */\n get readyState () {\n webidl.brandCheck(this, FileReader)\n\n switch (this[kState]) {\n case 'empty': return this.EMPTY\n case 'loading': return this.LOADING\n case 'done': return this.DONE\n }\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dom-filereader-result\n */\n get result () {\n webidl.brandCheck(this, FileReader)\n\n // The result attribute’s getter, when invoked, must return\n // this's result.\n return this[kResult]\n }\n\n /**\n * @see https://w3c.github.io/FileAPI/#dom-filereader-error\n */\n get error () {\n webidl.brandCheck(this, FileReader)\n\n // The error attribute’s getter, when invoked, must return\n // this's error.\n return this[kError]\n }\n\n get onloadend () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].loadend\n }\n\n set onloadend (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].loadend) {\n this.removeEventListener('loadend', this[kEvents].loadend)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].loadend = fn\n this.addEventListener('loadend', fn)\n } else {\n this[kEvents].loadend = null\n }\n }\n\n get onerror () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].error\n }\n\n set onerror (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].error) {\n this.removeEventListener('error', this[kEvents].error)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].error = fn\n this.addEventListener('error', fn)\n } else {\n this[kEvents].error = null\n }\n }\n\n get onloadstart () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].loadstart\n }\n\n set onloadstart (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].loadstart) {\n this.removeEventListener('loadstart', this[kEvents].loadstart)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].loadstart = fn\n this.addEventListener('loadstart', fn)\n } else {\n this[kEvents].loadstart = null\n }\n }\n\n get onprogress () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].progress\n }\n\n set onprogress (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].progress) {\n this.removeEventListener('progress', this[kEvents].progress)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].progress = fn\n this.addEventListener('progress', fn)\n } else {\n this[kEvents].progress = null\n }\n }\n\n get onload () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].load\n }\n\n set onload (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].load) {\n this.removeEventListener('load', this[kEvents].load)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].load = fn\n this.addEventListener('load', fn)\n } else {\n this[kEvents].load = null\n }\n }\n\n get onabort () {\n webidl.brandCheck(this, FileReader)\n\n return this[kEvents].abort\n }\n\n set onabort (fn) {\n webidl.brandCheck(this, FileReader)\n\n if (this[kEvents].abort) {\n this.removeEventListener('abort', this[kEvents].abort)\n }\n\n if (typeof fn === 'function') {\n this[kEvents].abort = fn\n this.addEventListener('abort', fn)\n } else {\n this[kEvents].abort = null\n }\n }\n}\n\n// https://w3c.github.io/FileAPI/#dom-filereader-empty\nFileReader.EMPTY = FileReader.prototype.EMPTY = 0\n// https://w3c.github.io/FileAPI/#dom-filereader-loading\nFileReader.LOADING = FileReader.prototype.LOADING = 1\n// https://w3c.github.io/FileAPI/#dom-filereader-done\nFileReader.DONE = FileReader.prototype.DONE = 2\n\nObject.defineProperties(FileReader.prototype, {\n EMPTY: staticPropertyDescriptors,\n LOADING: staticPropertyDescriptors,\n DONE: staticPropertyDescriptors,\n readAsArrayBuffer: kEnumerableProperty,\n readAsBinaryString: kEnumerableProperty,\n readAsText: kEnumerableProperty,\n readAsDataURL: kEnumerableProperty,\n abort: kEnumerableProperty,\n readyState: kEnumerableProperty,\n result: kEnumerableProperty,\n error: kEnumerableProperty,\n onloadstart: kEnumerableProperty,\n onprogress: kEnumerableProperty,\n onload: kEnumerableProperty,\n onabort: kEnumerableProperty,\n onerror: kEnumerableProperty,\n onloadend: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'FileReader',\n writable: false,\n enumerable: false,\n configurable: true\n }\n})\n\nObject.defineProperties(FileReader, {\n EMPTY: staticPropertyDescriptors,\n LOADING: staticPropertyDescriptors,\n DONE: staticPropertyDescriptors\n})\n\nmodule.exports = {\n FileReader\n}\n","'use strict'\n\nconst { webidl } = require('../fetch/webidl')\n\nconst kState = Symbol('ProgressEvent state')\n\n/**\n * @see https://xhr.spec.whatwg.org/#progressevent\n */\nclass ProgressEvent extends Event {\n constructor (type, eventInitDict = {}) {\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.ProgressEventInit(eventInitDict ?? {})\n\n super(type, eventInitDict)\n\n this[kState] = {\n lengthComputable: eventInitDict.lengthComputable,\n loaded: eventInitDict.loaded,\n total: eventInitDict.total\n }\n }\n\n get lengthComputable () {\n webidl.brandCheck(this, ProgressEvent)\n\n return this[kState].lengthComputable\n }\n\n get loaded () {\n webidl.brandCheck(this, ProgressEvent)\n\n return this[kState].loaded\n }\n\n get total () {\n webidl.brandCheck(this, ProgressEvent)\n\n return this[kState].total\n }\n}\n\nwebidl.converters.ProgressEventInit = webidl.dictionaryConverter([\n {\n key: 'lengthComputable',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'loaded',\n converter: webidl.converters['unsigned long long'],\n defaultValue: 0\n },\n {\n key: 'total',\n converter: webidl.converters['unsigned long long'],\n defaultValue: 0\n },\n {\n key: 'bubbles',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'cancelable',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'composed',\n converter: webidl.converters.boolean,\n defaultValue: false\n }\n])\n\nmodule.exports = {\n ProgressEvent\n}\n","'use strict'\n\nmodule.exports = {\n kState: Symbol('FileReader state'),\n kResult: Symbol('FileReader result'),\n kError: Symbol('FileReader error'),\n kLastProgressEventFired: Symbol('FileReader last progress event fired timestamp'),\n kEvents: Symbol('FileReader events'),\n kAborted: Symbol('FileReader aborted')\n}\n","'use strict'\n\nconst {\n kState,\n kError,\n kResult,\n kAborted,\n kLastProgressEventFired\n} = require('./symbols')\nconst { ProgressEvent } = require('./progressevent')\nconst { getEncoding } = require('./encoding')\nconst { DOMException } = require('../fetch/constants')\nconst { serializeAMimeType, parseMIMEType } = require('../fetch/dataURL')\nconst { types } = require('util')\nconst { StringDecoder } = require('string_decoder')\nconst { btoa } = require('buffer')\n\n/** @type {PropertyDescriptor} */\nconst staticPropertyDescriptors = {\n enumerable: true,\n writable: false,\n configurable: false\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#readOperation\n * @param {import('./filereader').FileReader} fr\n * @param {import('buffer').Blob} blob\n * @param {string} type\n * @param {string?} encodingName\n */\nfunction readOperation (fr, blob, type, encodingName) {\n // 1. If fr’s state is \"loading\", throw an InvalidStateError\n // DOMException.\n if (fr[kState] === 'loading') {\n throw new DOMException('Invalid state', 'InvalidStateError')\n }\n\n // 2. Set fr’s state to \"loading\".\n fr[kState] = 'loading'\n\n // 3. Set fr’s result to null.\n fr[kResult] = null\n\n // 4. Set fr’s error to null.\n fr[kError] = null\n\n // 5. Let stream be the result of calling get stream on blob.\n /** @type {import('stream/web').ReadableStream} */\n const stream = blob.stream()\n\n // 6. Let reader be the result of getting a reader from stream.\n const reader = stream.getReader()\n\n // 7. Let bytes be an empty byte sequence.\n /** @type {Uint8Array[]} */\n const bytes = []\n\n // 8. Let chunkPromise be the result of reading a chunk from\n // stream with reader.\n let chunkPromise = reader.read()\n\n // 9. Let isFirstChunk be true.\n let isFirstChunk = true\n\n // 10. In parallel, while true:\n // Note: \"In parallel\" just means non-blocking\n // Note 2: readOperation itself cannot be async as double\n // reading the body would then reject the promise, instead\n // of throwing an error.\n ;(async () => {\n while (!fr[kAborted]) {\n // 1. Wait for chunkPromise to be fulfilled or rejected.\n try {\n const { done, value } = await chunkPromise\n\n // 2. If chunkPromise is fulfilled, and isFirstChunk is\n // true, queue a task to fire a progress event called\n // loadstart at fr.\n if (isFirstChunk && !fr[kAborted]) {\n queueMicrotask(() => {\n fireAProgressEvent('loadstart', fr)\n })\n }\n\n // 3. Set isFirstChunk to false.\n isFirstChunk = false\n\n // 4. If chunkPromise is fulfilled with an object whose\n // done property is false and whose value property is\n // a Uint8Array object, run these steps:\n if (!done && types.isUint8Array(value)) {\n // 1. Let bs be the byte sequence represented by the\n // Uint8Array object.\n\n // 2. Append bs to bytes.\n bytes.push(value)\n\n // 3. If roughly 50ms have passed since these steps\n // were last invoked, queue a task to fire a\n // progress event called progress at fr.\n if (\n (\n fr[kLastProgressEventFired] === undefined ||\n Date.now() - fr[kLastProgressEventFired] >= 50\n ) &&\n !fr[kAborted]\n ) {\n fr[kLastProgressEventFired] = Date.now()\n queueMicrotask(() => {\n fireAProgressEvent('progress', fr)\n })\n }\n\n // 4. Set chunkPromise to the result of reading a\n // chunk from stream with reader.\n chunkPromise = reader.read()\n } else if (done) {\n // 5. Otherwise, if chunkPromise is fulfilled with an\n // object whose done property is true, queue a task\n // to run the following steps and abort this algorithm:\n queueMicrotask(() => {\n // 1. Set fr’s state to \"done\".\n fr[kState] = 'done'\n\n // 2. Let result be the result of package data given\n // bytes, type, blob’s type, and encodingName.\n try {\n const result = packageData(bytes, type, blob.type, encodingName)\n\n // 4. Else:\n\n if (fr[kAborted]) {\n return\n }\n\n // 1. Set fr’s result to result.\n fr[kResult] = result\n\n // 2. Fire a progress event called load at the fr.\n fireAProgressEvent('load', fr)\n } catch (error) {\n // 3. If package data threw an exception error:\n\n // 1. Set fr’s error to error.\n fr[kError] = error\n\n // 2. Fire a progress event called error at fr.\n fireAProgressEvent('error', fr)\n }\n\n // 5. If fr’s state is not \"loading\", fire a progress\n // event called loadend at the fr.\n if (fr[kState] !== 'loading') {\n fireAProgressEvent('loadend', fr)\n }\n })\n\n break\n }\n } catch (error) {\n if (fr[kAborted]) {\n return\n }\n\n // 6. Otherwise, if chunkPromise is rejected with an\n // error error, queue a task to run the following\n // steps and abort this algorithm:\n queueMicrotask(() => {\n // 1. Set fr’s state to \"done\".\n fr[kState] = 'done'\n\n // 2. Set fr’s error to error.\n fr[kError] = error\n\n // 3. Fire a progress event called error at fr.\n fireAProgressEvent('error', fr)\n\n // 4. If fr’s state is not \"loading\", fire a progress\n // event called loadend at fr.\n if (fr[kState] !== 'loading') {\n fireAProgressEvent('loadend', fr)\n }\n })\n\n break\n }\n }\n })()\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#fire-a-progress-event\n * @see https://dom.spec.whatwg.org/#concept-event-fire\n * @param {string} e The name of the event\n * @param {import('./filereader').FileReader} reader\n */\nfunction fireAProgressEvent (e, reader) {\n // The progress event e does not bubble. e.bubbles must be false\n // The progress event e is NOT cancelable. e.cancelable must be false\n const event = new ProgressEvent(e, {\n bubbles: false,\n cancelable: false\n })\n\n reader.dispatchEvent(event)\n}\n\n/**\n * @see https://w3c.github.io/FileAPI/#blob-package-data\n * @param {Uint8Array[]} bytes\n * @param {string} type\n * @param {string?} mimeType\n * @param {string?} encodingName\n */\nfunction packageData (bytes, type, mimeType, encodingName) {\n // 1. A Blob has an associated package data algorithm, given\n // bytes, a type, a optional mimeType, and a optional\n // encodingName, which switches on type and runs the\n // associated steps:\n\n switch (type) {\n case 'DataURL': {\n // 1. Return bytes as a DataURL [RFC2397] subject to\n // the considerations below:\n // * Use mimeType as part of the Data URL if it is\n // available in keeping with the Data URL\n // specification [RFC2397].\n // * If mimeType is not available return a Data URL\n // without a media-type. [RFC2397].\n\n // https://datatracker.ietf.org/doc/html/rfc2397#section-3\n // dataurl := \"data:\" [ mediatype ] [ \";base64\" ] \",\" data\n // mediatype := [ type \"/\" subtype ] *( \";\" parameter )\n // data := *urlchar\n // parameter := attribute \"=\" value\n let dataURL = 'data:'\n\n const parsed = parseMIMEType(mimeType || 'application/octet-stream')\n\n if (parsed !== 'failure') {\n dataURL += serializeAMimeType(parsed)\n }\n\n dataURL += ';base64,'\n\n const decoder = new StringDecoder('latin1')\n\n for (const chunk of bytes) {\n dataURL += btoa(decoder.write(chunk))\n }\n\n dataURL += btoa(decoder.end())\n\n return dataURL\n }\n case 'Text': {\n // 1. Let encoding be failure\n let encoding = 'failure'\n\n // 2. If the encodingName is present, set encoding to the\n // result of getting an encoding from encodingName.\n if (encodingName) {\n encoding = getEncoding(encodingName)\n }\n\n // 3. If encoding is failure, and mimeType is present:\n if (encoding === 'failure' && mimeType) {\n // 1. Let type be the result of parse a MIME type\n // given mimeType.\n const type = parseMIMEType(mimeType)\n\n // 2. If type is not failure, set encoding to the result\n // of getting an encoding from type’s parameters[\"charset\"].\n if (type !== 'failure') {\n encoding = getEncoding(type.parameters.get('charset'))\n }\n }\n\n // 4. If encoding is failure, then set encoding to UTF-8.\n if (encoding === 'failure') {\n encoding = 'UTF-8'\n }\n\n // 5. Decode bytes using fallback encoding encoding, and\n // return the result.\n return decode(bytes, encoding)\n }\n case 'ArrayBuffer': {\n // Return a new ArrayBuffer whose contents are bytes.\n const sequence = combineByteSequences(bytes)\n\n return sequence.buffer\n }\n case 'BinaryString': {\n // Return bytes as a binary string, in which every byte\n // is represented by a code unit of equal value [0..255].\n let binaryString = ''\n\n const decoder = new StringDecoder('latin1')\n\n for (const chunk of bytes) {\n binaryString += decoder.write(chunk)\n }\n\n binaryString += decoder.end()\n\n return binaryString\n }\n }\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#decode\n * @param {Uint8Array[]} ioQueue\n * @param {string} encoding\n */\nfunction decode (ioQueue, encoding) {\n const bytes = combineByteSequences(ioQueue)\n\n // 1. Let BOMEncoding be the result of BOM sniffing ioQueue.\n const BOMEncoding = BOMSniffing(bytes)\n\n let slice = 0\n\n // 2. If BOMEncoding is non-null:\n if (BOMEncoding !== null) {\n // 1. Set encoding to BOMEncoding.\n encoding = BOMEncoding\n\n // 2. Read three bytes from ioQueue, if BOMEncoding is\n // UTF-8; otherwise read two bytes.\n // (Do nothing with those bytes.)\n slice = BOMEncoding === 'UTF-8' ? 3 : 2\n }\n\n // 3. Process a queue with an instance of encoding’s\n // decoder, ioQueue, output, and \"replacement\".\n\n // 4. Return output.\n\n const sliced = bytes.slice(slice)\n return new TextDecoder(encoding).decode(sliced)\n}\n\n/**\n * @see https://encoding.spec.whatwg.org/#bom-sniff\n * @param {Uint8Array} ioQueue\n */\nfunction BOMSniffing (ioQueue) {\n // 1. Let BOM be the result of peeking 3 bytes from ioQueue,\n // converted to a byte sequence.\n const [a, b, c] = ioQueue\n\n // 2. For each of the rows in the table below, starting with\n // the first one and going down, if BOM starts with the\n // bytes given in the first column, then return the\n // encoding given in the cell in the second column of that\n // row. Otherwise, return null.\n if (a === 0xEF && b === 0xBB && c === 0xBF) {\n return 'UTF-8'\n } else if (a === 0xFE && b === 0xFF) {\n return 'UTF-16BE'\n } else if (a === 0xFF && b === 0xFE) {\n return 'UTF-16LE'\n }\n\n return null\n}\n\n/**\n * @param {Uint8Array[]} sequences\n */\nfunction combineByteSequences (sequences) {\n const size = sequences.reduce((a, b) => {\n return a + b.byteLength\n }, 0)\n\n let offset = 0\n\n return sequences.reduce((a, b) => {\n a.set(b, offset)\n offset += b.byteLength\n return a\n }, new Uint8Array(size))\n}\n\nmodule.exports = {\n staticPropertyDescriptors,\n readOperation,\n fireAProgressEvent\n}\n","'use strict'\n\n// We include a version number for the Dispatcher API. In case of breaking changes,\n// this version number must be increased to avoid conflicts.\nconst globalDispatcher = Symbol.for('undici.globalDispatcher.1')\nconst { InvalidArgumentError } = require('./core/errors')\nconst Agent = require('./agent')\n\nif (getGlobalDispatcher() === undefined) {\n setGlobalDispatcher(new Agent())\n}\n\nfunction setGlobalDispatcher (agent) {\n if (!agent || typeof agent.dispatch !== 'function') {\n throw new InvalidArgumentError('Argument agent must implement Agent')\n }\n Object.defineProperty(globalThis, globalDispatcher, {\n value: agent,\n writable: true,\n enumerable: false,\n configurable: false\n })\n}\n\nfunction getGlobalDispatcher () {\n return globalThis[globalDispatcher]\n}\n\nmodule.exports = {\n setGlobalDispatcher,\n getGlobalDispatcher\n}\n","'use strict'\n\nmodule.exports = class DecoratorHandler {\n constructor (handler) {\n this.handler = handler\n }\n\n onConnect (...args) {\n return this.handler.onConnect(...args)\n }\n\n onError (...args) {\n return this.handler.onError(...args)\n }\n\n onUpgrade (...args) {\n return this.handler.onUpgrade(...args)\n }\n\n onHeaders (...args) {\n return this.handler.onHeaders(...args)\n }\n\n onData (...args) {\n return this.handler.onData(...args)\n }\n\n onComplete (...args) {\n return this.handler.onComplete(...args)\n }\n\n onBodySent (...args) {\n return this.handler.onBodySent(...args)\n }\n}\n","'use strict'\n\nconst util = require('../core/util')\nconst { kBodyUsed } = require('../core/symbols')\nconst assert = require('assert')\nconst { InvalidArgumentError } = require('../core/errors')\nconst EE = require('events')\n\nconst redirectableStatusCodes = [300, 301, 302, 303, 307, 308]\n\nconst kBody = Symbol('body')\n\nclass BodyAsyncIterable {\n constructor (body) {\n this[kBody] = body\n this[kBodyUsed] = false\n }\n\n async * [Symbol.asyncIterator] () {\n assert(!this[kBodyUsed], 'disturbed')\n this[kBodyUsed] = true\n yield * this[kBody]\n }\n}\n\nclass RedirectHandler {\n constructor (dispatch, maxRedirections, opts, handler) {\n if (maxRedirections != null && (!Number.isInteger(maxRedirections) || maxRedirections < 0)) {\n throw new InvalidArgumentError('maxRedirections must be a positive number')\n }\n\n util.validateHandler(handler, opts.method, opts.upgrade)\n\n this.dispatch = dispatch\n this.location = null\n this.abort = null\n this.opts = { ...opts, maxRedirections: 0 } // opts must be a copy\n this.maxRedirections = maxRedirections\n this.handler = handler\n this.history = []\n\n if (util.isStream(this.opts.body)) {\n // TODO (fix): Provide some way for the user to cache the file to e.g. /tmp\n // so that it can be dispatched again?\n // TODO (fix): Do we need 100-expect support to provide a way to do this properly?\n if (util.bodyLength(this.opts.body) === 0) {\n this.opts.body\n .on('data', function () {\n assert(false)\n })\n }\n\n if (typeof this.opts.body.readableDidRead !== 'boolean') {\n this.opts.body[kBodyUsed] = false\n EE.prototype.on.call(this.opts.body, 'data', function () {\n this[kBodyUsed] = true\n })\n }\n } else if (this.opts.body && typeof this.opts.body.pipeTo === 'function') {\n // TODO (fix): We can't access ReadableStream internal state\n // to determine whether or not it has been disturbed. This is just\n // a workaround.\n this.opts.body = new BodyAsyncIterable(this.opts.body)\n } else if (\n this.opts.body &&\n typeof this.opts.body !== 'string' &&\n !ArrayBuffer.isView(this.opts.body) &&\n util.isIterable(this.opts.body)\n ) {\n // TODO: Should we allow re-using iterable if !this.opts.idempotent\n // or through some other flag?\n this.opts.body = new BodyAsyncIterable(this.opts.body)\n }\n }\n\n onConnect (abort) {\n this.abort = abort\n this.handler.onConnect(abort, { history: this.history })\n }\n\n onUpgrade (statusCode, headers, socket) {\n this.handler.onUpgrade(statusCode, headers, socket)\n }\n\n onError (error) {\n this.handler.onError(error)\n }\n\n onHeaders (statusCode, headers, resume, statusText) {\n this.location = this.history.length >= this.maxRedirections || util.isDisturbed(this.opts.body)\n ? null\n : parseLocation(statusCode, headers)\n\n if (this.opts.origin) {\n this.history.push(new URL(this.opts.path, this.opts.origin))\n }\n\n if (!this.location) {\n return this.handler.onHeaders(statusCode, headers, resume, statusText)\n }\n\n const { origin, pathname, search } = util.parseURL(new URL(this.location, this.opts.origin && new URL(this.opts.path, this.opts.origin)))\n const path = search ? `${pathname}${search}` : pathname\n\n // Remove headers referring to the original URL.\n // By default it is Host only, unless it's a 303 (see below), which removes also all Content-* headers.\n // https://tools.ietf.org/html/rfc7231#section-6.4\n this.opts.headers = cleanRequestHeaders(this.opts.headers, statusCode === 303, this.opts.origin !== origin)\n this.opts.path = path\n this.opts.origin = origin\n this.opts.maxRedirections = 0\n this.opts.query = null\n\n // https://tools.ietf.org/html/rfc7231#section-6.4.4\n // In case of HTTP 303, always replace method to be either HEAD or GET\n if (statusCode === 303 && this.opts.method !== 'HEAD') {\n this.opts.method = 'GET'\n this.opts.body = null\n }\n }\n\n onData (chunk) {\n if (this.location) {\n /*\n https://tools.ietf.org/html/rfc7231#section-6.4\n\n TLDR: undici always ignores 3xx response bodies.\n\n Redirection is used to serve the requested resource from another URL, so it is assumes that\n no body is generated (and thus can be ignored). Even though generating a body is not prohibited.\n\n For status 301, 302, 303, 307 and 308 (the latter from RFC 7238), the specs mention that the body usually\n (which means it's optional and not mandated) contain just an hyperlink to the value of\n the Location response header, so the body can be ignored safely.\n\n For status 300, which is \"Multiple Choices\", the spec mentions both generating a Location\n response header AND a response body with the other possible location to follow.\n Since the spec explicitily chooses not to specify a format for such body and leave it to\n servers and browsers implementors, we ignore the body as there is no specified way to eventually parse it.\n */\n } else {\n return this.handler.onData(chunk)\n }\n }\n\n onComplete (trailers) {\n if (this.location) {\n /*\n https://tools.ietf.org/html/rfc7231#section-6.4\n\n TLDR: undici always ignores 3xx response trailers as they are not expected in case of redirections\n and neither are useful if present.\n\n See comment on onData method above for more detailed informations.\n */\n\n this.location = null\n this.abort = null\n\n this.dispatch(this.opts, this)\n } else {\n this.handler.onComplete(trailers)\n }\n }\n\n onBodySent (chunk) {\n if (this.handler.onBodySent) {\n this.handler.onBodySent(chunk)\n }\n }\n}\n\nfunction parseLocation (statusCode, headers) {\n if (redirectableStatusCodes.indexOf(statusCode) === -1) {\n return null\n }\n\n for (let i = 0; i < headers.length; i += 2) {\n if (headers[i].toString().toLowerCase() === 'location') {\n return headers[i + 1]\n }\n }\n}\n\n// https://tools.ietf.org/html/rfc7231#section-6.4.4\nfunction shouldRemoveHeader (header, removeContent, unknownOrigin) {\n if (header.length === 4) {\n return util.headerNameToString(header) === 'host'\n }\n if (removeContent && util.headerNameToString(header).startsWith('content-')) {\n return true\n }\n if (unknownOrigin && (header.length === 13 || header.length === 6 || header.length === 19)) {\n const name = util.headerNameToString(header)\n return name === 'authorization' || name === 'cookie' || name === 'proxy-authorization'\n }\n return false\n}\n\n// https://tools.ietf.org/html/rfc7231#section-6.4\nfunction cleanRequestHeaders (headers, removeContent, unknownOrigin) {\n const ret = []\n if (Array.isArray(headers)) {\n for (let i = 0; i < headers.length; i += 2) {\n if (!shouldRemoveHeader(headers[i], removeContent, unknownOrigin)) {\n ret.push(headers[i], headers[i + 1])\n }\n }\n } else if (headers && typeof headers === 'object') {\n for (const key of Object.keys(headers)) {\n if (!shouldRemoveHeader(key, removeContent, unknownOrigin)) {\n ret.push(key, headers[key])\n }\n }\n } else {\n assert(headers == null, 'headers must be an object or an array')\n }\n return ret\n}\n\nmodule.exports = RedirectHandler\n","const assert = require('assert')\n\nconst { kRetryHandlerDefaultRetry } = require('../core/symbols')\nconst { RequestRetryError } = require('../core/errors')\nconst { isDisturbed, parseHeaders, parseRangeHeader } = require('../core/util')\n\nfunction calculateRetryAfterHeader (retryAfter) {\n const current = Date.now()\n const diff = new Date(retryAfter).getTime() - current\n\n return diff\n}\n\nclass RetryHandler {\n constructor (opts, handlers) {\n const { retryOptions, ...dispatchOpts } = opts\n const {\n // Retry scoped\n retry: retryFn,\n maxRetries,\n maxTimeout,\n minTimeout,\n timeoutFactor,\n // Response scoped\n methods,\n errorCodes,\n retryAfter,\n statusCodes\n } = retryOptions ?? {}\n\n this.dispatch = handlers.dispatch\n this.handler = handlers.handler\n this.opts = dispatchOpts\n this.abort = null\n this.aborted = false\n this.retryOpts = {\n retry: retryFn ?? RetryHandler[kRetryHandlerDefaultRetry],\n retryAfter: retryAfter ?? true,\n maxTimeout: maxTimeout ?? 30 * 1000, // 30s,\n timeout: minTimeout ?? 500, // .5s\n timeoutFactor: timeoutFactor ?? 2,\n maxRetries: maxRetries ?? 5,\n // What errors we should retry\n methods: methods ?? ['GET', 'HEAD', 'OPTIONS', 'PUT', 'DELETE', 'TRACE'],\n // Indicates which errors to retry\n statusCodes: statusCodes ?? [500, 502, 503, 504, 429],\n // List of errors to retry\n errorCodes: errorCodes ?? [\n 'ECONNRESET',\n 'ECONNREFUSED',\n 'ENOTFOUND',\n 'ENETDOWN',\n 'ENETUNREACH',\n 'EHOSTDOWN',\n 'EHOSTUNREACH',\n 'EPIPE'\n ]\n }\n\n this.retryCount = 0\n this.start = 0\n this.end = null\n this.etag = null\n this.resume = null\n\n // Handle possible onConnect duplication\n this.handler.onConnect(reason => {\n this.aborted = true\n if (this.abort) {\n this.abort(reason)\n } else {\n this.reason = reason\n }\n })\n }\n\n onRequestSent () {\n if (this.handler.onRequestSent) {\n this.handler.onRequestSent()\n }\n }\n\n onUpgrade (statusCode, headers, socket) {\n if (this.handler.onUpgrade) {\n this.handler.onUpgrade(statusCode, headers, socket)\n }\n }\n\n onConnect (abort) {\n if (this.aborted) {\n abort(this.reason)\n } else {\n this.abort = abort\n }\n }\n\n onBodySent (chunk) {\n if (this.handler.onBodySent) return this.handler.onBodySent(chunk)\n }\n\n static [kRetryHandlerDefaultRetry] (err, { state, opts }, cb) {\n const { statusCode, code, headers } = err\n const { method, retryOptions } = opts\n const {\n maxRetries,\n timeout,\n maxTimeout,\n timeoutFactor,\n statusCodes,\n errorCodes,\n methods\n } = retryOptions\n let { counter, currentTimeout } = state\n\n currentTimeout =\n currentTimeout != null && currentTimeout > 0 ? currentTimeout : timeout\n\n // Any code that is not a Undici's originated and allowed to retry\n if (\n code &&\n code !== 'UND_ERR_REQ_RETRY' &&\n code !== 'UND_ERR_SOCKET' &&\n !errorCodes.includes(code)\n ) {\n cb(err)\n return\n }\n\n // If a set of method are provided and the current method is not in the list\n if (Array.isArray(methods) && !methods.includes(method)) {\n cb(err)\n return\n }\n\n // If a set of status code are provided and the current status code is not in the list\n if (\n statusCode != null &&\n Array.isArray(statusCodes) &&\n !statusCodes.includes(statusCode)\n ) {\n cb(err)\n return\n }\n\n // If we reached the max number of retries\n if (counter > maxRetries) {\n cb(err)\n return\n }\n\n let retryAfterHeader = headers != null && headers['retry-after']\n if (retryAfterHeader) {\n retryAfterHeader = Number(retryAfterHeader)\n retryAfterHeader = isNaN(retryAfterHeader)\n ? calculateRetryAfterHeader(retryAfterHeader)\n : retryAfterHeader * 1e3 // Retry-After is in seconds\n }\n\n const retryTimeout =\n retryAfterHeader > 0\n ? Math.min(retryAfterHeader, maxTimeout)\n : Math.min(currentTimeout * timeoutFactor ** counter, maxTimeout)\n\n state.currentTimeout = retryTimeout\n\n setTimeout(() => cb(null), retryTimeout)\n }\n\n onHeaders (statusCode, rawHeaders, resume, statusMessage) {\n const headers = parseHeaders(rawHeaders)\n\n this.retryCount += 1\n\n if (statusCode >= 300) {\n this.abort(\n new RequestRetryError('Request failed', statusCode, {\n headers,\n count: this.retryCount\n })\n )\n return false\n }\n\n // Checkpoint for resume from where we left it\n if (this.resume != null) {\n this.resume = null\n\n if (statusCode !== 206) {\n return true\n }\n\n const contentRange = parseRangeHeader(headers['content-range'])\n // If no content range\n if (!contentRange) {\n this.abort(\n new RequestRetryError('Content-Range mismatch', statusCode, {\n headers,\n count: this.retryCount\n })\n )\n return false\n }\n\n // Let's start with a weak etag check\n if (this.etag != null && this.etag !== headers.etag) {\n this.abort(\n new RequestRetryError('ETag mismatch', statusCode, {\n headers,\n count: this.retryCount\n })\n )\n return false\n }\n\n const { start, size, end = size } = contentRange\n\n assert(this.start === start, 'content-range mismatch')\n assert(this.end == null || this.end === end, 'content-range mismatch')\n\n this.resume = resume\n return true\n }\n\n if (this.end == null) {\n if (statusCode === 206) {\n // First time we receive 206\n const range = parseRangeHeader(headers['content-range'])\n\n if (range == null) {\n return this.handler.onHeaders(\n statusCode,\n rawHeaders,\n resume,\n statusMessage\n )\n }\n\n const { start, size, end = size } = range\n\n assert(\n start != null && Number.isFinite(start) && this.start !== start,\n 'content-range mismatch'\n )\n assert(Number.isFinite(start))\n assert(\n end != null && Number.isFinite(end) && this.end !== end,\n 'invalid content-length'\n )\n\n this.start = start\n this.end = end\n }\n\n // We make our best to checkpoint the body for further range headers\n if (this.end == null) {\n const contentLength = headers['content-length']\n this.end = contentLength != null ? Number(contentLength) : null\n }\n\n assert(Number.isFinite(this.start))\n assert(\n this.end == null || Number.isFinite(this.end),\n 'invalid content-length'\n )\n\n this.resume = resume\n this.etag = headers.etag != null ? headers.etag : null\n\n return this.handler.onHeaders(\n statusCode,\n rawHeaders,\n resume,\n statusMessage\n )\n }\n\n const err = new RequestRetryError('Request failed', statusCode, {\n headers,\n count: this.retryCount\n })\n\n this.abort(err)\n\n return false\n }\n\n onData (chunk) {\n this.start += chunk.length\n\n return this.handler.onData(chunk)\n }\n\n onComplete (rawTrailers) {\n this.retryCount = 0\n return this.handler.onComplete(rawTrailers)\n }\n\n onError (err) {\n if (this.aborted || isDisturbed(this.opts.body)) {\n return this.handler.onError(err)\n }\n\n this.retryOpts.retry(\n err,\n {\n state: { counter: this.retryCount++, currentTimeout: this.retryAfter },\n opts: { retryOptions: this.retryOpts, ...this.opts }\n },\n onRetry.bind(this)\n )\n\n function onRetry (err) {\n if (err != null || this.aborted || isDisturbed(this.opts.body)) {\n return this.handler.onError(err)\n }\n\n if (this.start !== 0) {\n this.opts = {\n ...this.opts,\n headers: {\n ...this.opts.headers,\n range: `bytes=${this.start}-${this.end ?? ''}`\n }\n }\n }\n\n try {\n this.dispatch(this.opts, this)\n } catch (err) {\n this.handler.onError(err)\n }\n }\n }\n}\n\nmodule.exports = RetryHandler\n","'use strict'\n\nconst RedirectHandler = require('../handler/RedirectHandler')\n\nfunction createRedirectInterceptor ({ maxRedirections: defaultMaxRedirections }) {\n return (dispatch) => {\n return function Intercept (opts, handler) {\n const { maxRedirections = defaultMaxRedirections } = opts\n\n if (!maxRedirections) {\n return dispatch(opts, handler)\n }\n\n const redirectHandler = new RedirectHandler(dispatch, maxRedirections, opts, handler)\n opts = { ...opts, maxRedirections: 0 } // Stop sub dispatcher from also redirecting.\n return dispatch(opts, redirectHandler)\n }\n }\n}\n\nmodule.exports = createRedirectInterceptor\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.SPECIAL_HEADERS = exports.HEADER_STATE = exports.MINOR = exports.MAJOR = exports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS = exports.TOKEN = exports.STRICT_TOKEN = exports.HEX = exports.URL_CHAR = exports.STRICT_URL_CHAR = exports.USERINFO_CHARS = exports.MARK = exports.ALPHANUM = exports.NUM = exports.HEX_MAP = exports.NUM_MAP = exports.ALPHA = exports.FINISH = exports.H_METHOD_MAP = exports.METHOD_MAP = exports.METHODS_RTSP = exports.METHODS_ICE = exports.METHODS_HTTP = exports.METHODS = exports.LENIENT_FLAGS = exports.FLAGS = exports.TYPE = exports.ERROR = void 0;\nconst utils_1 = require(\"./utils\");\n// C headers\nvar ERROR;\n(function (ERROR) {\n ERROR[ERROR[\"OK\"] = 0] = \"OK\";\n ERROR[ERROR[\"INTERNAL\"] = 1] = \"INTERNAL\";\n ERROR[ERROR[\"STRICT\"] = 2] = \"STRICT\";\n ERROR[ERROR[\"LF_EXPECTED\"] = 3] = \"LF_EXPECTED\";\n ERROR[ERROR[\"UNEXPECTED_CONTENT_LENGTH\"] = 4] = \"UNEXPECTED_CONTENT_LENGTH\";\n ERROR[ERROR[\"CLOSED_CONNECTION\"] = 5] = \"CLOSED_CONNECTION\";\n ERROR[ERROR[\"INVALID_METHOD\"] = 6] = \"INVALID_METHOD\";\n ERROR[ERROR[\"INVALID_URL\"] = 7] = \"INVALID_URL\";\n ERROR[ERROR[\"INVALID_CONSTANT\"] = 8] = \"INVALID_CONSTANT\";\n ERROR[ERROR[\"INVALID_VERSION\"] = 9] = \"INVALID_VERSION\";\n ERROR[ERROR[\"INVALID_HEADER_TOKEN\"] = 10] = \"INVALID_HEADER_TOKEN\";\n ERROR[ERROR[\"INVALID_CONTENT_LENGTH\"] = 11] = \"INVALID_CONTENT_LENGTH\";\n ERROR[ERROR[\"INVALID_CHUNK_SIZE\"] = 12] = \"INVALID_CHUNK_SIZE\";\n ERROR[ERROR[\"INVALID_STATUS\"] = 13] = \"INVALID_STATUS\";\n ERROR[ERROR[\"INVALID_EOF_STATE\"] = 14] = \"INVALID_EOF_STATE\";\n ERROR[ERROR[\"INVALID_TRANSFER_ENCODING\"] = 15] = \"INVALID_TRANSFER_ENCODING\";\n ERROR[ERROR[\"CB_MESSAGE_BEGIN\"] = 16] = \"CB_MESSAGE_BEGIN\";\n ERROR[ERROR[\"CB_HEADERS_COMPLETE\"] = 17] = \"CB_HEADERS_COMPLETE\";\n ERROR[ERROR[\"CB_MESSAGE_COMPLETE\"] = 18] = \"CB_MESSAGE_COMPLETE\";\n ERROR[ERROR[\"CB_CHUNK_HEADER\"] = 19] = \"CB_CHUNK_HEADER\";\n ERROR[ERROR[\"CB_CHUNK_COMPLETE\"] = 20] = \"CB_CHUNK_COMPLETE\";\n ERROR[ERROR[\"PAUSED\"] = 21] = \"PAUSED\";\n ERROR[ERROR[\"PAUSED_UPGRADE\"] = 22] = \"PAUSED_UPGRADE\";\n ERROR[ERROR[\"PAUSED_H2_UPGRADE\"] = 23] = \"PAUSED_H2_UPGRADE\";\n ERROR[ERROR[\"USER\"] = 24] = \"USER\";\n})(ERROR = exports.ERROR || (exports.ERROR = {}));\nvar TYPE;\n(function (TYPE) {\n TYPE[TYPE[\"BOTH\"] = 0] = \"BOTH\";\n TYPE[TYPE[\"REQUEST\"] = 1] = \"REQUEST\";\n TYPE[TYPE[\"RESPONSE\"] = 2] = \"RESPONSE\";\n})(TYPE = exports.TYPE || (exports.TYPE = {}));\nvar FLAGS;\n(function (FLAGS) {\n FLAGS[FLAGS[\"CONNECTION_KEEP_ALIVE\"] = 1] = \"CONNECTION_KEEP_ALIVE\";\n FLAGS[FLAGS[\"CONNECTION_CLOSE\"] = 2] = \"CONNECTION_CLOSE\";\n FLAGS[FLAGS[\"CONNECTION_UPGRADE\"] = 4] = \"CONNECTION_UPGRADE\";\n FLAGS[FLAGS[\"CHUNKED\"] = 8] = \"CHUNKED\";\n FLAGS[FLAGS[\"UPGRADE\"] = 16] = \"UPGRADE\";\n FLAGS[FLAGS[\"CONTENT_LENGTH\"] = 32] = \"CONTENT_LENGTH\";\n FLAGS[FLAGS[\"SKIPBODY\"] = 64] = \"SKIPBODY\";\n FLAGS[FLAGS[\"TRAILING\"] = 128] = \"TRAILING\";\n // 1 << 8 is unused\n FLAGS[FLAGS[\"TRANSFER_ENCODING\"] = 512] = \"TRANSFER_ENCODING\";\n})(FLAGS = exports.FLAGS || (exports.FLAGS = {}));\nvar LENIENT_FLAGS;\n(function (LENIENT_FLAGS) {\n LENIENT_FLAGS[LENIENT_FLAGS[\"HEADERS\"] = 1] = \"HEADERS\";\n LENIENT_FLAGS[LENIENT_FLAGS[\"CHUNKED_LENGTH\"] = 2] = \"CHUNKED_LENGTH\";\n LENIENT_FLAGS[LENIENT_FLAGS[\"KEEP_ALIVE\"] = 4] = \"KEEP_ALIVE\";\n})(LENIENT_FLAGS = exports.LENIENT_FLAGS || (exports.LENIENT_FLAGS = {}));\nvar METHODS;\n(function (METHODS) {\n METHODS[METHODS[\"DELETE\"] = 0] = \"DELETE\";\n METHODS[METHODS[\"GET\"] = 1] = \"GET\";\n METHODS[METHODS[\"HEAD\"] = 2] = \"HEAD\";\n METHODS[METHODS[\"POST\"] = 3] = \"POST\";\n METHODS[METHODS[\"PUT\"] = 4] = \"PUT\";\n /* pathological */\n METHODS[METHODS[\"CONNECT\"] = 5] = \"CONNECT\";\n METHODS[METHODS[\"OPTIONS\"] = 6] = \"OPTIONS\";\n METHODS[METHODS[\"TRACE\"] = 7] = \"TRACE\";\n /* WebDAV */\n METHODS[METHODS[\"COPY\"] = 8] = \"COPY\";\n METHODS[METHODS[\"LOCK\"] = 9] = \"LOCK\";\n METHODS[METHODS[\"MKCOL\"] = 10] = \"MKCOL\";\n METHODS[METHODS[\"MOVE\"] = 11] = \"MOVE\";\n METHODS[METHODS[\"PROPFIND\"] = 12] = \"PROPFIND\";\n METHODS[METHODS[\"PROPPATCH\"] = 13] = \"PROPPATCH\";\n METHODS[METHODS[\"SEARCH\"] = 14] = \"SEARCH\";\n METHODS[METHODS[\"UNLOCK\"] = 15] = \"UNLOCK\";\n METHODS[METHODS[\"BIND\"] = 16] = \"BIND\";\n METHODS[METHODS[\"REBIND\"] = 17] = \"REBIND\";\n METHODS[METHODS[\"UNBIND\"] = 18] = \"UNBIND\";\n METHODS[METHODS[\"ACL\"] = 19] = \"ACL\";\n /* subversion */\n METHODS[METHODS[\"REPORT\"] = 20] = \"REPORT\";\n METHODS[METHODS[\"MKACTIVITY\"] = 21] = \"MKACTIVITY\";\n METHODS[METHODS[\"CHECKOUT\"] = 22] = \"CHECKOUT\";\n METHODS[METHODS[\"MERGE\"] = 23] = \"MERGE\";\n /* upnp */\n METHODS[METHODS[\"M-SEARCH\"] = 24] = \"M-SEARCH\";\n METHODS[METHODS[\"NOTIFY\"] = 25] = \"NOTIFY\";\n METHODS[METHODS[\"SUBSCRIBE\"] = 26] = \"SUBSCRIBE\";\n METHODS[METHODS[\"UNSUBSCRIBE\"] = 27] = \"UNSUBSCRIBE\";\n /* RFC-5789 */\n METHODS[METHODS[\"PATCH\"] = 28] = \"PATCH\";\n METHODS[METHODS[\"PURGE\"] = 29] = \"PURGE\";\n /* CalDAV */\n METHODS[METHODS[\"MKCALENDAR\"] = 30] = \"MKCALENDAR\";\n /* RFC-2068, section 19.6.1.2 */\n METHODS[METHODS[\"LINK\"] = 31] = \"LINK\";\n METHODS[METHODS[\"UNLINK\"] = 32] = \"UNLINK\";\n /* icecast */\n METHODS[METHODS[\"SOURCE\"] = 33] = \"SOURCE\";\n /* RFC-7540, section 11.6 */\n METHODS[METHODS[\"PRI\"] = 34] = \"PRI\";\n /* RFC-2326 RTSP */\n METHODS[METHODS[\"DESCRIBE\"] = 35] = \"DESCRIBE\";\n METHODS[METHODS[\"ANNOUNCE\"] = 36] = \"ANNOUNCE\";\n METHODS[METHODS[\"SETUP\"] = 37] = \"SETUP\";\n METHODS[METHODS[\"PLAY\"] = 38] = \"PLAY\";\n METHODS[METHODS[\"PAUSE\"] = 39] = \"PAUSE\";\n METHODS[METHODS[\"TEARDOWN\"] = 40] = \"TEARDOWN\";\n METHODS[METHODS[\"GET_PARAMETER\"] = 41] = \"GET_PARAMETER\";\n METHODS[METHODS[\"SET_PARAMETER\"] = 42] = \"SET_PARAMETER\";\n METHODS[METHODS[\"REDIRECT\"] = 43] = \"REDIRECT\";\n METHODS[METHODS[\"RECORD\"] = 44] = \"RECORD\";\n /* RAOP */\n METHODS[METHODS[\"FLUSH\"] = 45] = \"FLUSH\";\n})(METHODS = exports.METHODS || (exports.METHODS = {}));\nexports.METHODS_HTTP = [\n METHODS.DELETE,\n METHODS.GET,\n METHODS.HEAD,\n METHODS.POST,\n METHODS.PUT,\n METHODS.CONNECT,\n METHODS.OPTIONS,\n METHODS.TRACE,\n METHODS.COPY,\n METHODS.LOCK,\n METHODS.MKCOL,\n METHODS.MOVE,\n METHODS.PROPFIND,\n METHODS.PROPPATCH,\n METHODS.SEARCH,\n METHODS.UNLOCK,\n METHODS.BIND,\n METHODS.REBIND,\n METHODS.UNBIND,\n METHODS.ACL,\n METHODS.REPORT,\n METHODS.MKACTIVITY,\n METHODS.CHECKOUT,\n METHODS.MERGE,\n METHODS['M-SEARCH'],\n METHODS.NOTIFY,\n METHODS.SUBSCRIBE,\n METHODS.UNSUBSCRIBE,\n METHODS.PATCH,\n METHODS.PURGE,\n METHODS.MKCALENDAR,\n METHODS.LINK,\n METHODS.UNLINK,\n METHODS.PRI,\n // TODO(indutny): should we allow it with HTTP?\n METHODS.SOURCE,\n];\nexports.METHODS_ICE = [\n METHODS.SOURCE,\n];\nexports.METHODS_RTSP = [\n METHODS.OPTIONS,\n METHODS.DESCRIBE,\n METHODS.ANNOUNCE,\n METHODS.SETUP,\n METHODS.PLAY,\n METHODS.PAUSE,\n METHODS.TEARDOWN,\n METHODS.GET_PARAMETER,\n METHODS.SET_PARAMETER,\n METHODS.REDIRECT,\n METHODS.RECORD,\n METHODS.FLUSH,\n // For AirPlay\n METHODS.GET,\n METHODS.POST,\n];\nexports.METHOD_MAP = utils_1.enumToMap(METHODS);\nexports.H_METHOD_MAP = {};\nObject.keys(exports.METHOD_MAP).forEach((key) => {\n if (/^H/.test(key)) {\n exports.H_METHOD_MAP[key] = exports.METHOD_MAP[key];\n }\n});\nvar FINISH;\n(function (FINISH) {\n FINISH[FINISH[\"SAFE\"] = 0] = \"SAFE\";\n FINISH[FINISH[\"SAFE_WITH_CB\"] = 1] = \"SAFE_WITH_CB\";\n FINISH[FINISH[\"UNSAFE\"] = 2] = \"UNSAFE\";\n})(FINISH = exports.FINISH || (exports.FINISH = {}));\nexports.ALPHA = [];\nfor (let i = 'A'.charCodeAt(0); i <= 'Z'.charCodeAt(0); i++) {\n // Upper case\n exports.ALPHA.push(String.fromCharCode(i));\n // Lower case\n exports.ALPHA.push(String.fromCharCode(i + 0x20));\n}\nexports.NUM_MAP = {\n 0: 0, 1: 1, 2: 2, 3: 3, 4: 4,\n 5: 5, 6: 6, 7: 7, 8: 8, 9: 9,\n};\nexports.HEX_MAP = {\n 0: 0, 1: 1, 2: 2, 3: 3, 4: 4,\n 5: 5, 6: 6, 7: 7, 8: 8, 9: 9,\n A: 0XA, B: 0XB, C: 0XC, D: 0XD, E: 0XE, F: 0XF,\n a: 0xa, b: 0xb, c: 0xc, d: 0xd, e: 0xe, f: 0xf,\n};\nexports.NUM = [\n '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',\n];\nexports.ALPHANUM = exports.ALPHA.concat(exports.NUM);\nexports.MARK = ['-', '_', '.', '!', '~', '*', '\\'', '(', ')'];\nexports.USERINFO_CHARS = exports.ALPHANUM\n .concat(exports.MARK)\n .concat(['%', ';', ':', '&', '=', '+', '$', ',']);\n// TODO(indutny): use RFC\nexports.STRICT_URL_CHAR = [\n '!', '\"', '$', '%', '&', '\\'',\n '(', ')', '*', '+', ',', '-', '.', '/',\n ':', ';', '<', '=', '>',\n '@', '[', '\\\\', ']', '^', '_',\n '`',\n '{', '|', '}', '~',\n].concat(exports.ALPHANUM);\nexports.URL_CHAR = exports.STRICT_URL_CHAR\n .concat(['\\t', '\\f']);\n// All characters with 0x80 bit set to 1\nfor (let i = 0x80; i <= 0xff; i++) {\n exports.URL_CHAR.push(i);\n}\nexports.HEX = exports.NUM.concat(['a', 'b', 'c', 'd', 'e', 'f', 'A', 'B', 'C', 'D', 'E', 'F']);\n/* Tokens as defined by rfc 2616. Also lowercases them.\n * token = 1*\n * separators = \"(\" | \")\" | \"<\" | \">\" | \"@\"\n * | \",\" | \";\" | \":\" | \"\\\" | <\">\n * | \"/\" | \"[\" | \"]\" | \"?\" | \"=\"\n * | \"{\" | \"}\" | SP | HT\n */\nexports.STRICT_TOKEN = [\n '!', '#', '$', '%', '&', '\\'',\n '*', '+', '-', '.',\n '^', '_', '`',\n '|', '~',\n].concat(exports.ALPHANUM);\nexports.TOKEN = exports.STRICT_TOKEN.concat([' ']);\n/*\n * Verify that a char is a valid visible (printable) US-ASCII\n * character or %x80-FF\n */\nexports.HEADER_CHARS = ['\\t'];\nfor (let i = 32; i <= 255; i++) {\n if (i !== 127) {\n exports.HEADER_CHARS.push(i);\n }\n}\n// ',' = \\x44\nexports.CONNECTION_TOKEN_CHARS = exports.HEADER_CHARS.filter((c) => c !== 44);\nexports.MAJOR = exports.NUM_MAP;\nexports.MINOR = exports.MAJOR;\nvar HEADER_STATE;\n(function (HEADER_STATE) {\n HEADER_STATE[HEADER_STATE[\"GENERAL\"] = 0] = \"GENERAL\";\n HEADER_STATE[HEADER_STATE[\"CONNECTION\"] = 1] = \"CONNECTION\";\n HEADER_STATE[HEADER_STATE[\"CONTENT_LENGTH\"] = 2] = \"CONTENT_LENGTH\";\n HEADER_STATE[HEADER_STATE[\"TRANSFER_ENCODING\"] = 3] = \"TRANSFER_ENCODING\";\n HEADER_STATE[HEADER_STATE[\"UPGRADE\"] = 4] = \"UPGRADE\";\n HEADER_STATE[HEADER_STATE[\"CONNECTION_KEEP_ALIVE\"] = 5] = \"CONNECTION_KEEP_ALIVE\";\n HEADER_STATE[HEADER_STATE[\"CONNECTION_CLOSE\"] = 6] = \"CONNECTION_CLOSE\";\n HEADER_STATE[HEADER_STATE[\"CONNECTION_UPGRADE\"] = 7] = \"CONNECTION_UPGRADE\";\n HEADER_STATE[HEADER_STATE[\"TRANSFER_ENCODING_CHUNKED\"] = 8] = \"TRANSFER_ENCODING_CHUNKED\";\n})(HEADER_STATE = exports.HEADER_STATE || (exports.HEADER_STATE = {}));\nexports.SPECIAL_HEADERS = {\n 'connection': HEADER_STATE.CONNECTION,\n 'content-length': HEADER_STATE.CONTENT_LENGTH,\n 'proxy-connection': HEADER_STATE.CONNECTION,\n 'transfer-encoding': HEADER_STATE.TRANSFER_ENCODING,\n 'upgrade': HEADER_STATE.UPGRADE,\n};\n//# sourceMappingURL=constants.js.map","module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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ADcDACAAQShqQgA3AwAgAEEgakIANwMAIABBEGpCADcDACAAQQhqQgA3AwAgAEHdATYCHEEAC3sBAX8CQCAAKAIMIgMNAAJAIAAoAgRFDQAgACABNgIECwJAIAAgASACEMSAgIAAIgMNACAAKAIMDwsgACADNgIcQQAhAyAAKAIEIgFFDQAgACABIAIgACgCCBGBgICAAAAiAUUNACAAIAI2AhQgACABNgIMIAEhAwsgAwvk8wEDDn8DfgR/I4CAgIAAQRBrIgMkgICAgAAgASEEIAEhBSABIQYgASEHIAEhCCABIQkgASEKIAEhCyABIQwgASENIAEhDiABIQ8CQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCHCIQQX9qDt0B2gEB2QECAwQFBgcICQoLDA0O2AEPENcBERLWARMUFRYXGBkaG+AB3wEcHR7VAR8gISIjJCXUASYnKCkqKyzTAdIBLS7RAdABLzAxMjM0NTY3ODk6Ozw9Pj9AQUJDREVG2wFHSElKzwHOAUvNAUzMAU1OT1BRUlNUVVZXWFlaW1xdXl9gYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXp7fH1+f4ABgQGCAYMBhAGFAYYBhwGIAYkB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAC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FCAAIBA2AgxBACEQDLIBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxNCyAAQdMANgIcIAAgATYCFCAAIBA2AgxBACEQDLEBCyAAKAIEIRAgAEEANgIEAkAgACAQIAEQp4CAgAAiEA0AIAEhAQxRCyAAQeUANgIcIAAgATYCFCAAIBA2AgxBACEQDLABCyAAQQA2AhwgACABNgIUIABBxoqAgAA2AhAgAEEHNgIMQQAhEAyvAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHSADYCHCAAIAE2AhQgACAQNgIMQQAhEAyuAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMSQsgAEHTADYCHCAAIAE2AhQgACAQNgIMQQAhEAytAQsgACgCBCEQIABBADYCBAJAIAAgECABEKeAgIAAIhANACABIQEMTQsgAEHlADYCHCAAIAE2AhQgACAQNgIMQQAhEAysAQsgAEEANgIcIAAgATYCFCAAQdyIgIAANgIQIABBBzYCDEEAIRAMqwELIBBBP0cNASABQQFqIQELQQUhEAyQAQtBACEQIABBADYCHCAAIAE2AhQgAEH9koCAADYCECAAQQc2AgwMqAELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0gA2AhwgACABNgIUIAAgEDYCDEEAIRAMpwELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEILIABB0wA2AhwgACABNgIUIAAgEDYCDEEAIRAMpgELIAAoAgQhECAAQQA2AgQCQCAAIBAgARCngICAACIQDQAgASEBDEYLIABB5QA2AhwgACABNgIUIAAgEDYCDEEAIRAMpQELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0gA2AhwgACAUNgIUIAAgATYCDEEAIRAMpAELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDD8LIABB0wA2AhwgACAUNgIUIAAgATYCDEEAIRAMowELIAAoAgQhASAAQQA2AgQCQCAAIAEgFBCngICAACIBDQAgFCEBDEMLIABB5QA2AhwgACAU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YWdlX2JlZ2luYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlYCBjYWxsYmFjayBlcnJvcgBgb25fc3RhdHVzX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdmVyc2lvbl9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX3VybF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWVzc2FnZV9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX21ldGhvZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZWAgY2FsbGJhY2sgZXJyb3IAYG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lYCBjYWxsYmFjayBlcnJvcgBVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNlcnZlcgBJbnZhbGlkIGhlYWRlciB2YWx1ZSBjaGFyAEludmFsaWQgaGVhZGVyIGZpZWxkIGNoYXIAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl92ZXJzaW9uAEludmFsaWQgbWlub3IgdmVyc2lvbgBJbnZhbGlkIG1ham9yIHZlcnNpb24ARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgdmVyc2lvbgBFeHBlY3RlZCBDUkxGIGFmdGVyIHZlcnNpb24ASW52YWxpZCBIVFRQIHZlcnNpb24ASW52YWxpZCBoZWFkZXIgdG9rZW4AU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl91cmwASW52YWxpZCBjaGFyYWN0ZXJzIGluIHVybABVbmV4cGVjdGVkIHN0YXJ0IGNoYXIgaW4gdXJsAERvdWJsZSBAIGluIHVybABFbXB0eSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXJhY3RlciBpbiBDb250ZW50LUxlbmd0aABEdXBsaWNhdGUgQ29udGVudC1MZW5ndGgASW52YWxpZCBjaGFyIGluIHVybCBwYXRoAENvbnRlbnQtTGVuZ3RoIGNhbid0IGJlIHByZXNlbnQgd2l0aCBUcmFuc2Zlci1FbmNvZGluZwBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBzaXplAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX3ZhbHVlAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgdmFsdWUATWlzc2luZyBleHBlY3RlZCBMRiBhZnRlciBoZWFkZXIgdmFsdWUASW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIHF1b3RlIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGVkIHZhbHVlAFBhdXNlZCBieSBvbl9oZWFkZXJzX2NvbXBsZXRlAEludmFsaWQgRU9GIHN0YXRlAG9uX3Jlc2V0IHBhdXNlAG9uX2NodW5rX2hlYWRlciBwYXVzZQBvbl9tZXNzYWdlX2JlZ2luIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl92YWx1ZSBwYXVzZQBvbl9zdGF0dXNfY29tcGxldGUgcGF1c2UAb25fdmVyc2lvbl9jb21wbGV0ZSBwYXVzZQBvbl91cmxfY29tcGxldGUgcGF1c2UAb25fY2h1bmtfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX3ZhbHVlX2NvbXBsZXRlIHBhdXNlAG9uX21lc3NhZ2VfY29tcGxldGUgcGF1c2UAb25fbWV0aG9kX2NvbXBsZXRlIHBhdXNlAG9uX2hlYWRlcl9maWVsZF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19leHRlbnNpb25fbmFtZSBwYXVzZQBVbmV4cGVjdGVkIHNwYWNlIGFmdGVyIHN0YXJ0IGxpbmUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fbmFtZQBJbnZhbGlkIGNoYXJhY3RlciBpbiBjaHVuayBleHRlbnNpb25zIG5hbWUAUGF1c2Ugb24gQ09OTkVDVC9VcGdyYWRlAFBhdXNlIG9uIFBSSS9VcGdyYWRlAEV4cGVjdGVkIEhUVFAvMiBDb25uZWN0aW9uIFByZWZhY2UAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9tZXRob2QARXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgbWV0aG9kAFNwYW4gY2FsbGJhY2sgZXJyb3IgaW4gb25faGVhZGVyX2ZpZWxkAFBhdXNlZABJbnZhbGlkIHdvcmQgZW5jb3VudGVyZWQASW52YWxpZCBtZXRob2QgZW5jb3VudGVyZWQAVW5leHBlY3RlZCBjaGFyIGluIHVybCBzY2hlbWEAUmVxdWVzdCBoYXMgaW52YWxpZCBgVHJhbnNmZXItRW5jb2RpbmdgAFNXSVRDSF9QUk9YWQBVU0VfUFJPWFkATUtBQ1RJVklUWQBVTlBST0NFU1NBQkxFX0VOVElUWQBDT1BZAE1PVkVEX1BFUk1BTkVOVExZAFRPT19FQVJMWQBOT1RJRlkARkFJTEVEX0RFUEVOREVOQ1kAQkFEX0dBVEVXQVkAUExBWQBQVVQAQ0hFQ0tPVVQAR0FURVdBWV9USU1FT1VUAFJFUVVFU1RfVElNRU9VVABORVRXT1JLX0NPTk5FQ1RfVElNRU9VVABDT05ORUNUSU9OX1RJTUVPVVQATE9HSU5fVElNRU9VVABORVRXT1JLX1JFQURfVElNRU9VVABQT1NUAE1JU0RJUkVDVEVEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9SRVFVRVNUAENMSUVOVF9DTE9TRURfTE9BRF9CQUxBTkNFRF9SRVFVRVNUAEJBRF9SRVFVRVNUAEhUVFBfUkVRVUVTVF9TRU5UX1RPX0hUVFBTX1BPUlQAUkVQT1JUAElNX0FfVEVBUE9UAFJFU0VUX0NPTlRFTlQATk9fQ09OVEVOVABQQVJUSUFMX0NPTlRFTlQASFBFX0lOVkFMSURfQ09OU1RBTlQASFBFX0NCX1JFU0VUAEdFVABIUEVfU1RSSUNUAENPTkZMSUNUAFRFTVBPUkFSWV9SRURJUkVDVABQRVJNQU5FTlRfUkVESVJFQ1QAQ09OTkVDVABNVUxUSV9TVEFUVVMASFBFX0lOVkFMSURfU1RBVFVTAFRPT19NQU5ZX1JFUVVFU1RTAEVBUkxZX0hJTlRTAFVOQVZBSUxBQkxFX0ZPUl9MRUdBTF9SRUFTT05TAE9QVElPTlMAU1dJVENISU5HX1BST1RPQ09MUwBWQVJJQU5UX0FMU09fTkVHT1RJQVRFUwBNVUxUSVBMRV9DSE9JQ0VTAElOVEVSTkFMX1NFUlZFUl9FUlJPUgBXRUJfU0VSVkVSX1VOS05PV05fRVJST1IAUkFJTEdVTl9FUlJPUgBJREVOVElUWV9QUk9WSURFUl9BVVRIRU5USUNBVElPTl9FUlJPUgBTU0xfQ0VSVElGSUNBVEVfRVJST1IASU5WQUxJRF9YX0ZPUldBUkRFRF9GT1IAU0VUX1BBUkFNRVRFUgBHRVRfUEFSQU1FVEVSAEhQRV9VU0VSAFNFRV9PVEhFUgBIUEVfQ0JfQ0hVTktfSEVBREVSAE1LQ0FMRU5EQVIAU0VUVVAAV0VCX1NFUlZFUl9JU19ET1dOAFRFQVJET1dOAEhQRV9DTE9TRURfQ09OTkVDVElPTgBIRVVSSVNUSUNfRVhQSVJBVElPTgBESVNDT05ORUNURURfT1BFUkFUSU9OAE5PTl9BVVRIT1JJVEFUSVZFX0lORk9STUFUSU9OAEhQRV9JTlZBTElEX1ZFUlNJT04ASFBFX0NCX01FU1NBR0VfQkVHSU4AU0lURV9JU19GUk9aRU4ASFBFX0lOVkFMSURfSEVBREVSX1RPS0VOAElOVkFMSURfVE9LRU4ARk9SQklEREVOAEVOSEFOQ0VfWU9VUl9DQUxNAEhQRV9JTlZBTElEX1VSTABCTE9DS0VEX0JZX1BBUkVOVEFMX0NPTlRST0wATUtDT0wAQUNMAEhQRV9JTlRFUk5BTABSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFX1VOT0ZGSUNJQUwASFBFX09LAFVOTElOSwBVTkxPQ0sAUFJJAFJFVFJZX1dJVEgASFBFX0lOVkFMSURfQ09OVEVOVF9MRU5HVEgASFBFX1VORVhQRUNURURfQ09OVEVOVF9MRU5HVEgARkxVU0gAUFJPUFBBVENIAE0tU0VBUkNIAFVSSV9UT09fTE9ORwBQUk9DRVNTSU5HAE1JU0NFTExBTkVPVVNfUEVSU0lTVEVOVF9XQVJOSU5HAE1JU0NFTExBTkVPVVNfV0FSTklORwBIUEVfSU5WQUxJRF9UUkFOU0ZFUl9FTkNPRElORwBFeHBlY3RlZCBDUkxGAEhQRV9JTlZBTElEX0NIVU5LX1NJWkUATU9WRQBDT05USU5VRQBIUEVfQ0JfU1RBVFVTX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJTX0NPTVBMRVRFAEhQRV9DQl9WRVJTSU9OX0NPTVBMRVRFAEhQRV9DQl9VUkxfQ09NUExFVEUASFBFX0NCX0NIVU5LX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfVkFMVUVfQ09NUExFVEUASFBFX0NCX0NIVU5LX0VYVEVOU0lPTl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX05BTUVfQ09NUExFVEUASFBFX0NCX01FU1NBR0VfQ09NUExFVEUASFBFX0NCX01FVEhPRF9DT01QTEVURQBIUEVfQ0JfSEVBREVSX0ZJRUxEX0NPTVBMRVRFAERFTEVURQBIUEVfSU5WQUxJRF9FT0ZfU1RBVEUASU5WQUxJRF9TU0xfQ0VSVElGSUNBVEUAUEFVU0UATk9fUkVTUE9OU0UAVU5TVVBQT1JURURfTUVESUFfVFlQRQBHT05FAE5PVF9BQ0NFUFRBQkxFAFNFUlZJQ0VfVU5BVkFJTEFCTEUAUkFOR0VfTk9UX1NBVElTRklBQkxFAE9SSUdJTl9JU19VTlJFQUNIQUJMRQBSRVNQT05TRV9JU19TVEFMRQBQVVJHRQBNRVJHRQBSRVFVRVNUX0hFQURFUl9GSUVMRFNfVE9PX0xBUkdFAFJFUVVFU1RfSEVBREVSX1RPT19MQVJHRQBQQVlMT0FEX1RPT19MQVJHRQBJTlNVRkZJQ0lFTlRfU1RPUkFHRQBIUEVfUEFVU0VEX1VQR1JBREUASFBFX1BBVVNFRF9IMl9VUEdSQURFAFNPVVJDRQBBTk5PVU5DRQBUUkFDRQBIUEVfVU5FWFBFQ1RFRF9TUEFDRQBERVNDUklCRQBVTlNVQlNDUklCRQBSRUNPUkQASFBFX0lOVkFMSURfTUVUSE9EAE5PVF9GT1VORABQUk9QRklORABVTkJJTkQAUkVCSU5EAFVOQVVUSE9SSVpFRABNRVRIT0RfTk9UX0FMTE9XRUQASFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQAQUxSRUFEWV9SRVBPUlRFRABBQ0NFUFRFRABOT1RfSU1QTEVNRU5URUQATE9PUF9ERVRFQ1RFRABIUEVfQ1JfRVhQRUNURUQASFBFX0xGX0VYUEVDVEVEAENSRUFURUQASU1fVVNFRABIUEVfUEFVU0VEAFRJTUVPVVRfT0NDVVJFRABQQVlNRU5UX1JFUVVJUkVEAFBSRUNPTkRJVElPTl9SRVFVSVJFRABQUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRABORVRXT1JLX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAExFTkdUSF9SRVFVSVJFRABTU0xfQ0VSVElGSUNBVEVfUkVRVUlSRUQAVVBHUkFERV9SRVFVSVJFRABQQUdFX0VYUElSRUQAUFJFQ09ORElUSU9OX0ZBSUxFRABFWFBFQ1RBVElPTl9GQUlMRUQAUkVWQUxJREFUSU9OX0ZBSUxFRABTU0xfSEFORFNIQUtFX0ZBSUxFRABMT0NLRUQAVFJBTlNGT1JNQVRJT05fQVBQTElFRABOT1RfTU9ESUZJRUQATk9UX0VYVEVOREVEAEJBTkRXSURUSF9MSU1JVF9FWENFRURFRABTSVRFX0lTX09WRVJMT0FERUQASEVBRABFeHBlY3RlZCBIVFRQLwAAXhMAACYTAAAwEAAA8BcAAJ0TAAAVEgAAORcAAPASAAAKEAAAdRIAAK0SAACCEwAATxQAAH8QAACgFQAAIxQAAIkSAACLFAAATRUAANQRAADPFAAAEBgAAMkWAADcFgAAwREAAOAXAAC7FAAAdBQAAHwVAADlFAAACBcAAB8QAABlFQAAoxQAACgVAAACFQAAmRUAACwQAACLGQAATw8AANQOAABqEAAAzhAAAAIXAACJDgAAbhMAABwTAABmFAAAVhcAAMETAADNEwAAbBMAAGgXAABmFwAAXxcAACITAADODwAAaQ4AANgOAABjFgAAyxMAAKoOAAAoFwAAJhcAAMUTAABdFgAA6BEAAGcTAABlEwAA8hYAAHMTAAAdFwAA+RYAAPMRAADPDgAAzhUAAAwSAACzEQAApREAAGEQAAAyFwAAuxMAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIDAgICAgIAAAICAAICAAICAgICAgICAgIABAAAAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAACAAICAgICAAACAgACAgACAgICAgICAgICAAMABAAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAAgACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAbG9zZWVlcC1hbGl2ZQAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAQEBAQEBAQEBAQIBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBY2h1bmtlZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEAAAEBAAEBAAEBAQEBAQEBAQEAAAAAAAAAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABlY3Rpb25lbnQtbGVuZ3Rob25yb3h5LWNvbm5lY3Rpb24AAAAAAAAAAAAAAAAAAAByYW5zZmVyLWVuY29kaW5ncGdyYWRlDQoNCg0KU00NCg0KVFRQL0NFL1RTUC8AAAAAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQIAAQMAAAAAAAAAAAAAAAAAAAAAAAAEAQEFAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAAAAQAAAgAAAAAAAAAAAAAAAAAAAAAAAAMEAAAEBAQEBAQEBAQEBAUEBAQEBAQEBAQEBAQABAAGBwQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAABAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAIAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABOT1VOQ0VFQ0tPVVRORUNURVRFQ1JJQkVMVVNIRVRFQURTRUFSQ0hSR0VDVElWSVRZTEVOREFSVkVPVElGWVBUSU9OU0NIU0VBWVNUQVRDSEdFT1JESVJFQ1RPUlRSQ0hQQVJBTUVURVJVUkNFQlNDUklCRUFSRE9XTkFDRUlORE5LQ0tVQlNDUklCRUhUVFAvQURUUC8='\n","module.exports = 'AGFzbQEAAAABMAhgAX8Bf2ADf39/AX9gBH9/f38Bf2AAAGADf39/AGABfwBgAn9/AGAGf39/f39/AALLAQgDZW52GHdhc21fb25faGVhZGVyc19jb21wbGV0ZQACA2VudhV3YXNtX29uX21lc3NhZ2VfYmVnaW4AAANlbnYLd2FzbV9vbl91cmwAAQNlbnYOd2FzbV9vbl9zdGF0dXMAAQNlbnYUd2FzbV9vbl9oZWFkZXJfZmllbGQAAQNlbnYUd2FzbV9vbl9oZWFkZXJfdmFsdWUAAQNlbnYMd2FzbV9vbl9ib2R5AAEDZW52GHdhc21fb25fbWVzc2FnZV9jb21wbGV0ZQAAA0ZFAwMEAAAFAAAAAAAABQEFAAUFBQAABgAAAAAGBgYGAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAAABAQcAAAUFAwABBAUBcAESEgUDAQACBggBfwFBgNQECwfRBSIGbWVtb3J5AgALX2luaXRpYWxpemUACRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQALbGxodHRwX2luaXQAChhsbGh0dHBfc2hvdWxkX2tlZXBfYWxpdmUAQQxsbGh0dHBfYWxsb2MADAZtYWxsb2MARgtsbGh0dHBfZnJlZQANBGZyZWUASA9sbGh0dHBfZ2V0X3R5cGUADhVsbGh0dHBfZ2V0X2h0dHBfbWFqb3IADxVsbGh0dHBfZ2V0X2h0dHBfbWlub3IAEBFsbGh0dHBfZ2V0X21ldGhvZAARFmxsaHR0cF9nZXRfc3RhdHVzX2NvZGUAEhJsbGh0dHBfZ2V0X3VwZ3JhZGUAEwxsbGh0dHBfcmVzZXQAFA5sbGh0dHBfZXhlY3V0ZQAVFGxsaHR0cF9zZXR0aW5nc19pbml0ABYNbGxodHRwX2ZpbmlzaAAXDGxsaHR0cF9wYXVzZQAYDWxsaHR0cF9yZXN1bWUAGRtsbGh0dHBfcmVzdW1lX2FmdGVyX3VwZ3JhZGUAGhBsbGh0dHBfZ2V0X2Vycm5vABsXbGxodHRwX2dldF9lcnJvcl9yZWFzb24AHBdsbGh0dHBfc2V0X2Vycm9yX3JlYXNvbgAdFGxsaHR0cF9nZXRfZXJyb3JfcG9zAB4RbGxodHRwX2Vycm5vX25hbWUAHxJsbGh0dHBfbWV0aG9kX25hbWUAIBJs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IAH9CwMAIABBMGogAf0LAwAgAEEgaiAB/QsDACAAQd0BNgIcQQALewEBfwJAIAAoAgwiAw0AAkAgACgCBEUNACAAIAE2AgQLAkAgACABIAIQxICAgAAiAw0AIAAoAgwPCyAAIAM2AhxBACEDIAAoAgQiAUUNACAAIAEgAiAAKAIIEYGAgIAAACIBRQ0AIAAgAjYCFCAAIAE2AgwgASEDCyADC+TzAQMOfwN+BH8jgICAgABBEGsiAySAgICAACABIQQgASEFIAEhBiABIQcgASEIIAEhCSABIQogASELIAEhDCABIQ0gASEOIAEhDwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIcIhBBf2oO3QHaAQHZAQIDBAUGBwgJCgsMDQ7YAQ8Q1wEREtYBExQVFhcYGRob4AHfARwdHtUBHyAhIiMkJdQBJicoKSorLNMB0gEtLtEB0AEvMDEyMzQ1Njc4OTo7PD0+P0BBQkNERUbbAUdISUrPAc4BS80BTMwBTU5PUFFSU1RVVldYWVpbXF1eX2BhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ent8fX5/gAGBAYIBgwGEAYUBhgGHAYgBiQGKAYsBjAGNAY4BjwGQAZEB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QAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIBAOxwEAAQID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YWNrIGVycm9yAGBvbl9jaHVua19leHRlbnNpb25fdmFsdWVgIGNhbGxiYWNrIGVycm9yAGBvbl9zdGF0dXNfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl92ZXJzaW9uX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fdXJsX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGVgIGNhbGxiYWNrIGVycm9yAGBvbl9tZXNzYWdlX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fbWV0aG9kX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlYCBjYWxsYmFjayBlcnJvcgBgb25fY2h1bmtfZXh0ZW5zaW9uX25hbWVgIGNhbGxiYWNrIGVycm9yAFVuZXhwZWN0ZWQgY2hhciBpbiB1cmwgc2VydmVyAEludmFsaWQgaGVhZGVyIHZhbHVlIGNoYXIASW52YWxpZCBoZWFkZXIgZmllbGQgY2hhcgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3ZlcnNpb24ASW52YWxpZCBtaW5vciB2ZXJzaW9uAEludmFsaWQgbWFqb3IgdmVyc2lvbgBFeHBlY3RlZCBzcGFjZSBhZnRlciB2ZXJzaW9uAEV4cGVjdGVkIENSTEYgYWZ0ZXIgdmVyc2lvbgBJbnZhbGlkIEhUVFAgdmVyc2lvbgBJbnZhbGlkIGhlYWRlciB0b2tlbgBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX3VybABJbnZhbGlkIGNoYXJhY3RlcnMgaW4gdXJsAFVuZXhwZWN0ZWQgc3RhcnQgY2hhciBpbiB1cmwARG91YmxlIEAgaW4gdXJsAEVtcHR5IENvbnRlbnQtTGVuZ3RoAEludmFsaWQgY2hhcmFjdGVyIGluIENvbnRlbnQtTGVuZ3RoAER1cGxpY2F0ZSBDb250ZW50LUxlbmd0aABJbnZhbGlkIGNoYXIgaW4gdXJsIHBhdGgAQ29udGVudC1MZW5ndGggY2FuJ3QgYmUgcHJlc2VudCB3aXRoIFRyYW5zZmVyLUVuY29kaW5nAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIHNpemUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfdmFsdWUAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9jaHVua19leHRlbnNpb25fdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyB2YWx1ZQBNaXNzaW5nIGV4cGVjdGVkIExGIGFmdGVyIGhlYWRlciB2YWx1ZQBJbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AgaGVhZGVyIHZhbHVlAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgcXVvdGUgdmFsdWUASW52YWxpZCBjaGFyYWN0ZXIgaW4gY2h1bmsgZXh0ZW5zaW9ucyBxdW90ZWQgdmFsdWUAUGF1c2VkIGJ5IG9uX2hlYWRlcnNfY29tcGxldGUASW52YWxpZCBFT0Ygc3RhdGUAb25fcmVzZXQgcGF1c2UAb25fY2h1bmtfaGVhZGVyIHBhdXNlAG9uX21lc3NhZ2VfYmVnaW4gcGF1c2UAb25fY2h1bmtfZXh0ZW5zaW9uX3ZhbHVlIHBhdXNlAG9uX3N0YXR1c19jb21wbGV0ZSBwYXVzZQBvbl92ZXJzaW9uX2NvbXBsZXRlIHBhdXNlAG9uX3VybF9jb21wbGV0ZSBwYXVzZQBvbl9jaHVua19jb21wbGV0ZSBwYXVzZQBvbl9oZWFkZXJfdmFsdWVfY29tcGxldGUgcGF1c2UAb25fbWVzc2FnZV9jb21wbGV0ZSBwYXVzZQBvbl9tZXRob2RfY29tcGxldGUgcGF1c2UAb25faGVhZGVyX2ZpZWxkX2NvbXBsZXRlIHBhdXNlAG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lIHBhdXNlAFVuZXhwZWN0ZWQgc3BhY2UgYWZ0ZXIgc3RhcnQgbGluZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX2NodW5rX2V4dGVuc2lvbl9uYW1lAEludmFsaWQgY2hhcmFjdGVyIGluIGNodW5rIGV4dGVuc2lvbnMgbmFtZQBQYXVzZSBvbiBDT05ORUNUL1VwZ3JhZGUAUGF1c2Ugb24gUFJJL1VwZ3JhZGUARXhwZWN0ZWQgSFRUUC8yIENvbm5lY3Rpb24gUHJlZmFjZQBTcGFuIGNhbGxiYWNrIGVycm9yIGluIG9uX21ldGhvZABFeHBlY3RlZCBzcGFjZSBhZnRlciBtZXRob2QAU3BhbiBjYWxsYmFjayBlcnJvciBpbiBvbl9oZWFkZXJfZmllbGQAUGF1c2VkAEludmFsaWQgd29yZCBlbmNvdW50ZXJlZABJbnZhbGlkIG1ldGhvZCBlbmNvdW50ZXJlZABVbmV4cGVjdGVkIGNoYXIgaW4gdXJsIHNjaGVtYQBSZXF1ZXN0IGhhcyBpbnZhbGlkIGBUcmFuc2Zlci1FbmNvZGluZ2AAU1dJVENIX1BST1hZAFVTRV9QUk9YWQBNS0FDVElWSVRZAFVOUFJPQ0VTU0FCTEVfRU5USVRZAENPUFkATU9WRURfUEVSTUFORU5UTFkAVE9PX0VBUkxZAE5PVElGWQBGQUlMRURfREVQRU5ERU5DWQBCQURfR0FURVdBWQBQTEFZAFBVVABDSEVDS09VVABHQVRFV0FZX1RJTUVPVVQAUkVRVUVTVF9USU1FT1VUAE5FVFdPUktfQ09OTkVDVF9USU1FT1VUAENPTk5FQ1RJT05fVElNRU9VVABMT0dJTl9USU1FT1VUAE5FVFdPUktfUkVBRF9USU1FT1VUAFBPU1QATUlTRElSRUNURURfUkVRVUVTVABDTElFTlRfQ0xPU0VEX1JFUVVFU1QAQ0xJRU5UX0NMT1NFRF9MT0FEX0JBTEFOQ0VEX1JFUVVFU1QAQkFEX1JFUVVFU1QASFRUUF9SRVFVRVNUX1NFTlRfVE9fSFRUUFNfUE9SVABSRVBPUlQASU1fQV9URUFQT1QAUkVTRVRfQ09OVEVOVABOT19DT05URU5UAFBBUlRJQUxfQ09OVEVOVABIUEVfSU5WQUxJRF9DT05TVEFOVABIUEVfQ0JfUkVTRVQAR0VUAEhQRV9TVFJJQ1QAQ09ORkxJQ1QAVEVNUE9SQVJZX1JFRElSRUNUAFBFUk1BTkVOVF9SRURJUkVDVABDT05ORUNUAE1VTFRJX1NUQVRVUwBIUEVfSU5WQUxJRF9TVEFUVVMAVE9PX01BTllfUkVRVUVTVFMARUFSTFlfSElOVFMAVU5BVkFJTEFCTEVfRk9SX0xFR0FMX1JFQVNPTlMAT1BUSU9OUwBTV0lUQ0hJTkdfUFJPVE9DT0xTAFZBUklBTlRfQUxTT19ORUdPVElBVEVTAE1VTFRJUExFX0NIT0lDRVMASU5URVJOQUxfU0VSVkVSX0VSUk9SAFdFQl9TRVJWRVJfVU5LTk9XTl9FUlJPUgBSQUlMR1VOX0VSUk9SAElERU5USVRZX1BST1ZJREVSX0FVVEhFTlRJQ0FUSU9OX0VSUk9SAFNTTF9DRVJUSUZJQ0FURV9FUlJPUgBJTlZBTElEX1hfRk9SV0FSREVEX0ZPUgBTRVRfUEFSQU1FVEVSAEdFVF9QQVJBTUVURVIASFBFX1VTRVIAU0VFX09USEVSAEhQRV9DQl9DSFVOS19IRUFERVIATUtDQUxFTkRBUgBTRVRVUABXRUJfU0VSVkVSX0lTX0RPV04AVEVBUkRPV04ASFBFX0NMT1NFRF9DT05ORUNUSU9OAEhFVVJJU1RJQ19FWFBJUkFUSU9OAERJU0NPTk5FQ1RFRF9PUEVSQVRJT04ATk9OX0FVVEhPUklUQVRJVkVfSU5GT1JNQVRJT04ASFBFX0lOVkFMSURfVkVSU0lPTgBIUEVfQ0JfTUVTU0FHRV9CRUdJTgBTSVRFX0lTX0ZST1pFTgBIUEVfSU5WQUxJRF9IRUFERVJfVE9LRU4ASU5WQUxJRF9UT0tFTgBGT1JCSURERU4ARU5IQU5DRV9ZT1VSX0NBTE0ASFBFX0lOVkFMSURfVVJMAEJMT0NLRURfQllfUEFSRU5UQUxfQ09OVFJPTABNS0NPTABBQ0wASFBFX0lOVEVSTkFMAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0VfVU5PRkZJQ0lBTABIUEVfT0sAVU5MSU5LAFVOTE9DSwBQUkkAUkVUUllfV0lUSABIUEVfSU5WQUxJRF9DT05URU5UX0xFTkdUSABIUEVfVU5FWFBFQ1RFRF9DT05URU5UX0xFTkdUSABGTFVTSABQUk9QUEFUQ0gATS1TRUFSQ0gAVVJJX1RPT19MT05HAFBST0NFU1NJTkcATUlTQ0VMTEFORU9VU19QRVJTSVNURU5UX1dBUk5JTkcATUlTQ0VMTEFORU9VU19XQVJOSU5HAEhQRV9JTlZBTElEX1RSQU5TRkVSX0VOQ09ESU5HAEV4cGVjdGVkIENSTEYASFBFX0lOVkFMSURfQ0hVTktfU0laRQBNT1ZFAENPTlRJTlVFAEhQRV9DQl9TVEFUVVNfQ09NUExFVEUASFBFX0NCX0hFQURFUlNfQ09NUExFVEUASFBFX0NCX1ZFUlNJT05fQ09NUExFVEUASFBFX0NCX1VSTF9DT01QTEVURQBIUEVfQ0JfQ0hVTktfQ09NUExFVEUASFBFX0NCX0hFQURFUl9WQUxVRV9DT01QTEVURQBIUEVfQ0JfQ0hVTktfRVhURU5TSU9OX1ZBTFVFX0NPTVBMRVRFAEhQRV9DQl9DSFVOS19FWFRFTlNJT05fTkFNRV9DT01QTEVURQBIUEVfQ0JfTUVTU0FHRV9DT01QTEVURQBIUEVfQ0JfTUVUSE9EX0NPTVBMRVRFAEhQRV9DQl9IRUFERVJfRklFTERfQ09NUExFVEUAREVMRVRFAEhQRV9JTlZBTElEX0VPRl9TVEFURQBJTlZBTElEX1NTTF9DRVJUSUZJQ0FURQBQQVVTRQBOT19SRVNQT05TRQBVTlNVUFBPUlRFRF9NRURJQV9UWVBFAEdPTkUATk9UX0FDQ0VQVEFCTEUAU0VSVklDRV9VTkFWQUlMQUJMRQBSQU5HRV9OT1RfU0FUSVNGSUFCTEUAT1JJR0lOX0lTX1VOUkVBQ0hBQkxFAFJFU1BPTlNFX0lTX1NUQUxFAFBVUkdFAE1FUkdFAFJFUVVFU1RfSEVBREVSX0ZJRUxEU19UT09fTEFSR0UAUkVRVUVTVF9IRUFERVJfVE9PX0xBUkdFAFBBWUxPQURfVE9PX0xBUkdFAElOU1VGRklDSUVOVF9TVE9SQUdFAEhQRV9QQVVTRURfVVBHUkFERQBIUEVfUEFVU0VEX0gyX1VQR1JBREUAU09VUkNFAEFOTk9VTkNFAFRSQUNFAEhQRV9VTkVYUEVDVEVEX1NQQUNFAERFU0NSSUJFAFVOU1VCU0NSSUJFAFJFQ09SRABIUEVfSU5WQUxJRF9NRVRIT0QATk9UX0ZPVU5EAFBST1BGSU5EAFVOQklORABSRUJJTkQAVU5BVVRIT1JJWkVEAE1FVEhPRF9OT1RfQUxMT1dFRABIVFRQX1ZFUlNJT05fTk9UX1NVUFBPUlRFRABBTFJFQURZX1JFUE9SVEVEAEFDQ0VQVEVEAE5PVF9JTVBMRU1FTlRFRABMT09QX0RFVEVDVEVEAEhQRV9DUl9FWFBFQ1RFRABIUEVfTEZfRVhQRUNURUQAQ1JFQVRFRABJTV9VU0VEAEhQRV9QQVVTRUQAVElNRU9VVF9PQ0NVUkVEAFBBWU1FTlRfUkVRVUlSRUQAUFJFQ09ORElUSU9OX1JFUVVJUkVEAFBST1hZX0FVVEhFTlRJQ0FUSU9OX1JFUVVJUkVEAE5FVFdPUktfQVVUSEVOVElDQVRJT05fUkVRVUlSRUQATEVOR1RIX1JFUVVJUkVEAFNTTF9DRVJUSUZJQ0FURV9SRVFVSVJFRABVUEdSQURFX1JFUVVJUkVEAFBBR0VfRVhQSVJFRABQUkVDT05ESVRJT05fRkFJTEVEAEVYUEVDVEFUSU9OX0ZBSUxFRABSRVZBTElEQVRJT05fRkFJTEVEAFNTTF9IQU5EU0hBS0VfRkFJTEVEAExPQ0tFRABUUkFOU0ZPUk1BVElPTl9BUFBMSUVEAE5PVF9NT0RJRklFRABOT1RfRVhURU5ERUQAQkFORFdJRFRIX0xJTUlUX0VYQ0VFREVEAFNJVEVfSVNfT1ZFUkxPQURFRABIRUFEAEV4cGVjdGVkIEhUVFAvAABeEwAAJhMAADAQAADwFwAAnRMAABUSAAA5FwAA8BIAAAoQAAB1EgAArRIAAIITAABPFAAAfxAAAKAVAAAjFAAAiRIAAIsUAABNFQAA1BEAAM8UAAAQGAAAyRYAANwWAADBEQAA4BcAALsUAAB0FAAAfBUAAOUUAAAIFwAAHxAAAGUVAACjFAAAKBUAAAIVAACZFQAALBAAAIsZAABPDwAA1A4AAGoQAADOEAAAAhcAAIkOAABuEwAAHBMAAGYUAABWFwAAwRMAAM0TAABsEwAAaBcAAGYXAABfFwAAIhMAAM4PAABpDgAA2A4AAGMWAADLEwAAqg4AACgXAAAmFwAAxRMAAF0WAADoEQAAZxMAAGUTAADyFgAAcxMAAB0XAAD5FgAA8xEAAM8OAADOFQAADBIAALMRAAClEQAAYRAAADIXAAC7EwAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAgMCAgICAgAAAgIAAgIAAgICAgICAgICAgAEAAAAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgAAAAICAgICAgICAgICAgICAgICAgICAgICAgICAgICAAIAAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAIAAgICAgIAAAICAAICAAICAgICAgICAgIAAwAEAAAAAgICAgICAgICAgICAgICAgICAgICAgICAgIAAAACAgICAgICAgICAgICAgICAgICAgICAgICAgICAgACAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABsb3NlZWVwLWFsaXZlAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQEBAQEBAQEBAQEBAgEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQFjaHVua2VkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAQABAQEBAQAAAQEAAQEAAQEBAQEBAQEBAQAAAAAAAAABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGVjdGlvbmVudC1sZW5ndGhvbnJveHktY29ubmVjdGlvbgAAAAAAAAAAAAAAAAAAAHJhbnNmZXItZW5jb2RpbmdwZ3JhZGUNCg0KDQpTTQ0KDQpUVFAvQ0UvVFNQLwAAAAAAAAAAAAAAAAECAAEDAAAAAAAAAAAAAAAAAAAAAAAABAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAAAAAAAAAAABAgABAwAAAAAAAAAAAAAAAAAAAAAAAAQBAQUBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAQEAAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQABAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQAAAAAAAAAAAAABAAACAAAAAAAAAAAAAAAAAAAAAAAAAwQAAAQEBAQEBAQEBAQEBQQEBAQEBAQEBAQEBAAEAAYHBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEAAQABAAEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAQAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAEAAAAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAgAAAAACAAAAAAAAAAAAAAAAAAAAAAADAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwAAAAAAAAMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE5PVU5DRUVDS09VVE5FQ1RFVEVDUklCRUxVU0hFVEVBRFNFQVJDSFJHRUNUSVZJVFlMRU5EQVJWRU9USUZZUFRJT05TQ0hTRUFZU1RBVENIR0VPUkRJUkVDVE9SVFJDSFBBUkFNRVRFUlVSQ0VCU0NSSUJFQVJET1dOQUNFSU5ETktDS1VCU0NSSUJFSFRUUC9BRFRQLw=='\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.enumToMap = void 0;\nfunction enumToMap(obj) {\n const res = {};\n Object.keys(obj).forEach((key) => {\n const value = obj[key];\n if (typeof value === 'number') {\n res[key] = value;\n }\n });\n return res;\n}\nexports.enumToMap = enumToMap;\n//# sourceMappingURL=utils.js.map","'use strict'\n\nconst { kClients } = require('../core/symbols')\nconst Agent = require('../agent')\nconst {\n kAgent,\n kMockAgentSet,\n kMockAgentGet,\n kDispatches,\n kIsMockActive,\n kNetConnect,\n kGetNetConnect,\n kOptions,\n kFactory\n} = require('./mock-symbols')\nconst MockClient = require('./mock-client')\nconst MockPool = require('./mock-pool')\nconst { matchValue, buildMockOptions } = require('./mock-utils')\nconst { InvalidArgumentError, UndiciError } = require('../core/errors')\nconst Dispatcher = require('../dispatcher')\nconst Pluralizer = require('./pluralizer')\nconst PendingInterceptorsFormatter = require('./pending-interceptors-formatter')\n\nclass FakeWeakRef {\n constructor (value) {\n this.value = value\n }\n\n deref () {\n return this.value\n }\n}\n\nclass MockAgent extends Dispatcher {\n constructor (opts) {\n super(opts)\n\n this[kNetConnect] = true\n this[kIsMockActive] = true\n\n // Instantiate Agent and encapsulate\n if ((opts && opts.agent && typeof opts.agent.dispatch !== 'function')) {\n throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n }\n const agent = opts && opts.agent ? opts.agent : new Agent(opts)\n this[kAgent] = agent\n\n this[kClients] = agent[kClients]\n this[kOptions] = buildMockOptions(opts)\n }\n\n get (origin) {\n let dispatcher = this[kMockAgentGet](origin)\n\n if (!dispatcher) {\n dispatcher = this[kFactory](origin)\n this[kMockAgentSet](origin, dispatcher)\n }\n return dispatcher\n }\n\n dispatch (opts, handler) {\n // Call MockAgent.get to perform additional setup before dispatching as normal\n this.get(opts.origin)\n return this[kAgent].dispatch(opts, handler)\n }\n\n async close () {\n await this[kAgent].close()\n this[kClients].clear()\n }\n\n deactivate () {\n this[kIsMockActive] = false\n }\n\n activate () {\n this[kIsMockActive] = true\n }\n\n enableNetConnect (matcher) {\n if (typeof matcher === 'string' || typeof matcher === 'function' || matcher instanceof RegExp) {\n if (Array.isArray(this[kNetConnect])) {\n this[kNetConnect].push(matcher)\n } else {\n this[kNetConnect] = [matcher]\n }\n } else if (typeof matcher === 'undefined') {\n this[kNetConnect] = true\n } else {\n throw new InvalidArgumentError('Unsupported matcher. Must be one of String|Function|RegExp.')\n }\n }\n\n disableNetConnect () {\n this[kNetConnect] = false\n }\n\n // This is required to bypass issues caused by using global symbols - see:\n // https://github.com/nodejs/undici/issues/1447\n get isMockActive () {\n return this[kIsMockActive]\n }\n\n [kMockAgentSet] (origin, dispatcher) {\n this[kClients].set(origin, new FakeWeakRef(dispatcher))\n }\n\n [kFactory] (origin) {\n const mockOptions = Object.assign({ agent: this }, this[kOptions])\n return this[kOptions] && this[kOptions].connections === 1\n ? new MockClient(origin, mockOptions)\n : new MockPool(origin, mockOptions)\n }\n\n [kMockAgentGet] (origin) {\n // First check if we can immediately find it\n const ref = this[kClients].get(origin)\n if (ref) {\n return ref.deref()\n }\n\n // If the origin is not a string create a dummy parent pool and return to user\n if (typeof origin !== 'string') {\n const dispatcher = this[kFactory]('http://localhost:9999')\n this[kMockAgentSet](origin, dispatcher)\n return dispatcher\n }\n\n // If we match, create a pool and assign the same dispatches\n for (const [keyMatcher, nonExplicitRef] of Array.from(this[kClients])) {\n const nonExplicitDispatcher = nonExplicitRef.deref()\n if (nonExplicitDispatcher && typeof keyMatcher !== 'string' && matchValue(keyMatcher, origin)) {\n const dispatcher = this[kFactory](origin)\n this[kMockAgentSet](origin, dispatcher)\n dispatcher[kDispatches] = nonExplicitDispatcher[kDispatches]\n return dispatcher\n }\n }\n }\n\n [kGetNetConnect] () {\n return this[kNetConnect]\n }\n\n pendingInterceptors () {\n const mockAgentClients = this[kClients]\n\n return Array.from(mockAgentClients.entries())\n .flatMap(([origin, scope]) => scope.deref()[kDispatches].map(dispatch => ({ ...dispatch, origin })))\n .filter(({ pending }) => pending)\n }\n\n assertNoPendingInterceptors ({ pendingInterceptorsFormatter = new PendingInterceptorsFormatter() } = {}) {\n const pending = this.pendingInterceptors()\n\n if (pending.length === 0) {\n return\n }\n\n const pluralizer = new Pluralizer('interceptor', 'interceptors').pluralize(pending.length)\n\n throw new UndiciError(`\n${pluralizer.count} ${pluralizer.noun} ${pluralizer.is} pending:\n\n${pendingInterceptorsFormatter.format(pending)}\n`.trim())\n }\n}\n\nmodule.exports = MockAgent\n","'use strict'\n\nconst { promisify } = require('util')\nconst Client = require('../client')\nconst { buildMockDispatch } = require('./mock-utils')\nconst {\n kDispatches,\n kMockAgent,\n kClose,\n kOriginalClose,\n kOrigin,\n kOriginalDispatch,\n kConnected\n} = require('./mock-symbols')\nconst { MockInterceptor } = require('./mock-interceptor')\nconst Symbols = require('../core/symbols')\nconst { InvalidArgumentError } = require('../core/errors')\n\n/**\n * MockClient provides an API that extends the Client to influence the mockDispatches.\n */\nclass MockClient extends Client {\n constructor (origin, opts) {\n super(origin, opts)\n\n if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') {\n throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n }\n\n this[kMockAgent] = opts.agent\n this[kOrigin] = origin\n this[kDispatches] = []\n this[kConnected] = 1\n this[kOriginalDispatch] = this.dispatch\n this[kOriginalClose] = this.close.bind(this)\n\n this.dispatch = buildMockDispatch.call(this)\n this.close = this[kClose]\n }\n\n get [Symbols.kConnected] () {\n return this[kConnected]\n }\n\n /**\n * Sets up the base interceptor for mocking replies from undici.\n */\n intercept (opts) {\n return new MockInterceptor(opts, this[kDispatches])\n }\n\n async [kClose] () {\n await promisify(this[kOriginalClose])()\n this[kConnected] = 0\n this[kMockAgent][Symbols.kClients].delete(this[kOrigin])\n }\n}\n\nmodule.exports = MockClient\n","'use strict'\n\nconst { UndiciError } = require('../core/errors')\n\nclass MockNotMatchedError extends UndiciError {\n constructor (message) {\n super(message)\n Error.captureStackTrace(this, MockNotMatchedError)\n this.name = 'MockNotMatchedError'\n this.message = message || 'The request does not match any registered mock dispatches'\n this.code = 'UND_MOCK_ERR_MOCK_NOT_MATCHED'\n }\n}\n\nmodule.exports = {\n MockNotMatchedError\n}\n","'use strict'\n\nconst { getResponseData, buildKey, addMockDispatch } = require('./mock-utils')\nconst {\n kDispatches,\n kDispatchKey,\n kDefaultHeaders,\n kDefaultTrailers,\n kContentLength,\n kMockDispatch\n} = require('./mock-symbols')\nconst { InvalidArgumentError } = require('../core/errors')\nconst { buildURL } = require('../core/util')\n\n/**\n * Defines the scope API for an interceptor reply\n */\nclass MockScope {\n constructor (mockDispatch) {\n this[kMockDispatch] = mockDispatch\n }\n\n /**\n * Delay a reply by a set amount in ms.\n */\n delay (waitInMs) {\n if (typeof waitInMs !== 'number' || !Number.isInteger(waitInMs) || waitInMs <= 0) {\n throw new InvalidArgumentError('waitInMs must be a valid integer > 0')\n }\n\n this[kMockDispatch].delay = waitInMs\n return this\n }\n\n /**\n * For a defined reply, never mark as consumed.\n */\n persist () {\n this[kMockDispatch].persist = true\n return this\n }\n\n /**\n * Allow one to define a reply for a set amount of matching requests.\n */\n times (repeatTimes) {\n if (typeof repeatTimes !== 'number' || !Number.isInteger(repeatTimes) || repeatTimes <= 0) {\n throw new InvalidArgumentError('repeatTimes must be a valid integer > 0')\n }\n\n this[kMockDispatch].times = repeatTimes\n return this\n }\n}\n\n/**\n * Defines an interceptor for a Mock\n */\nclass MockInterceptor {\n constructor (opts, mockDispatches) {\n if (typeof opts !== 'object') {\n throw new InvalidArgumentError('opts must be an object')\n }\n if (typeof opts.path === 'undefined') {\n throw new InvalidArgumentError('opts.path must be defined')\n }\n if (typeof opts.method === 'undefined') {\n opts.method = 'GET'\n }\n // See https://github.com/nodejs/undici/issues/1245\n // As per RFC 3986, clients are not supposed to send URI\n // fragments to servers when they retrieve a document,\n if (typeof opts.path === 'string') {\n if (opts.query) {\n opts.path = buildURL(opts.path, opts.query)\n } else {\n // Matches https://github.com/nodejs/undici/blob/main/lib/fetch/index.js#L1811\n const parsedURL = new URL(opts.path, 'data://')\n opts.path = parsedURL.pathname + parsedURL.search\n }\n }\n if (typeof opts.method === 'string') {\n opts.method = opts.method.toUpperCase()\n }\n\n this[kDispatchKey] = buildKey(opts)\n this[kDispatches] = mockDispatches\n this[kDefaultHeaders] = {}\n this[kDefaultTrailers] = {}\n this[kContentLength] = false\n }\n\n createMockScopeDispatchData (statusCode, data, responseOptions = {}) {\n const responseData = getResponseData(data)\n const contentLength = this[kContentLength] ? { 'content-length': responseData.length } : {}\n const headers = { ...this[kDefaultHeaders], ...contentLength, ...responseOptions.headers }\n const trailers = { ...this[kDefaultTrailers], ...responseOptions.trailers }\n\n return { statusCode, data, headers, trailers }\n }\n\n validateReplyParameters (statusCode, data, responseOptions) {\n if (typeof statusCode === 'undefined') {\n throw new InvalidArgumentError('statusCode must be defined')\n }\n if (typeof data === 'undefined') {\n throw new InvalidArgumentError('data must be defined')\n }\n if (typeof responseOptions !== 'object') {\n throw new InvalidArgumentError('responseOptions must be an object')\n }\n }\n\n /**\n * Mock an undici request with a defined reply.\n */\n reply (replyData) {\n // Values of reply aren't available right now as they\n // can only be available when the reply callback is invoked.\n if (typeof replyData === 'function') {\n // We'll first wrap the provided callback in another function,\n // this function will properly resolve the data from the callback\n // when invoked.\n const wrappedDefaultsCallback = (opts) => {\n // Our reply options callback contains the parameter for statusCode, data and options.\n const resolvedData = replyData(opts)\n\n // Check if it is in the right format\n if (typeof resolvedData !== 'object') {\n throw new InvalidArgumentError('reply options callback must return an object')\n }\n\n const { statusCode, data = '', responseOptions = {} } = resolvedData\n this.validateReplyParameters(statusCode, data, responseOptions)\n // Since the values can be obtained immediately we return them\n // from this higher order function that will be resolved later.\n return {\n ...this.createMockScopeDispatchData(statusCode, data, responseOptions)\n }\n }\n\n // Add usual dispatch data, but this time set the data parameter to function that will eventually provide data.\n const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], wrappedDefaultsCallback)\n return new MockScope(newMockDispatch)\n }\n\n // We can have either one or three parameters, if we get here,\n // we should have 1-3 parameters. So we spread the arguments of\n // this function to obtain the parameters, since replyData will always\n // just be the statusCode.\n const [statusCode, data = '', responseOptions = {}] = [...arguments]\n this.validateReplyParameters(statusCode, data, responseOptions)\n\n // Send in-already provided data like usual\n const dispatchData = this.createMockScopeDispatchData(statusCode, data, responseOptions)\n const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], dispatchData)\n return new MockScope(newMockDispatch)\n }\n\n /**\n * Mock an undici request with a defined error.\n */\n replyWithError (error) {\n if (typeof error === 'undefined') {\n throw new InvalidArgumentError('error must be defined')\n }\n\n const newMockDispatch = addMockDispatch(this[kDispatches], this[kDispatchKey], { error })\n return new MockScope(newMockDispatch)\n }\n\n /**\n * Set default reply headers on the interceptor for subsequent replies\n */\n defaultReplyHeaders (headers) {\n if (typeof headers === 'undefined') {\n throw new InvalidArgumentError('headers must be defined')\n }\n\n this[kDefaultHeaders] = headers\n return this\n }\n\n /**\n * Set default reply trailers on the interceptor for subsequent replies\n */\n defaultReplyTrailers (trailers) {\n if (typeof trailers === 'undefined') {\n throw new InvalidArgumentError('trailers must be defined')\n }\n\n this[kDefaultTrailers] = trailers\n return this\n }\n\n /**\n * Set reply content length header for replies on the interceptor\n */\n replyContentLength () {\n this[kContentLength] = true\n return this\n }\n}\n\nmodule.exports.MockInterceptor = MockInterceptor\nmodule.exports.MockScope = MockScope\n","'use strict'\n\nconst { promisify } = require('util')\nconst Pool = require('../pool')\nconst { buildMockDispatch } = require('./mock-utils')\nconst {\n kDispatches,\n kMockAgent,\n kClose,\n kOriginalClose,\n kOrigin,\n kOriginalDispatch,\n kConnected\n} = require('./mock-symbols')\nconst { MockInterceptor } = require('./mock-interceptor')\nconst Symbols = require('../core/symbols')\nconst { InvalidArgumentError } = require('../core/errors')\n\n/**\n * MockPool provides an API that extends the Pool to influence the mockDispatches.\n */\nclass MockPool extends Pool {\n constructor (origin, opts) {\n super(origin, opts)\n\n if (!opts || !opts.agent || typeof opts.agent.dispatch !== 'function') {\n throw new InvalidArgumentError('Argument opts.agent must implement Agent')\n }\n\n this[kMockAgent] = opts.agent\n this[kOrigin] = origin\n this[kDispatches] = []\n this[kConnected] = 1\n this[kOriginalDispatch] = this.dispatch\n this[kOriginalClose] = this.close.bind(this)\n\n this.dispatch = buildMockDispatch.call(this)\n this.close = this[kClose]\n }\n\n get [Symbols.kConnected] () {\n return this[kConnected]\n }\n\n /**\n * Sets up the base interceptor for mocking replies from undici.\n */\n intercept (opts) {\n return new MockInterceptor(opts, this[kDispatches])\n }\n\n async [kClose] () {\n await promisify(this[kOriginalClose])()\n this[kConnected] = 0\n this[kMockAgent][Symbols.kClients].delete(this[kOrigin])\n }\n}\n\nmodule.exports = MockPool\n","'use strict'\n\nmodule.exports = {\n kAgent: Symbol('agent'),\n kOptions: Symbol('options'),\n kFactory: Symbol('factory'),\n kDispatches: Symbol('dispatches'),\n kDispatchKey: Symbol('dispatch key'),\n kDefaultHeaders: Symbol('default headers'),\n kDefaultTrailers: Symbol('default trailers'),\n kContentLength: Symbol('content length'),\n kMockAgent: Symbol('mock agent'),\n kMockAgentSet: Symbol('mock agent set'),\n kMockAgentGet: Symbol('mock agent get'),\n kMockDispatch: Symbol('mock dispatch'),\n kClose: Symbol('close'),\n kOriginalClose: Symbol('original agent close'),\n kOrigin: Symbol('origin'),\n kIsMockActive: Symbol('is mock active'),\n kNetConnect: Symbol('net connect'),\n kGetNetConnect: Symbol('get net connect'),\n kConnected: Symbol('connected')\n}\n","'use strict'\n\nconst { MockNotMatchedError } = require('./mock-errors')\nconst {\n kDispatches,\n kMockAgent,\n kOriginalDispatch,\n kOrigin,\n kGetNetConnect\n} = require('./mock-symbols')\nconst { buildURL, nop } = require('../core/util')\nconst { STATUS_CODES } = require('http')\nconst {\n types: {\n isPromise\n }\n} = require('util')\n\nfunction matchValue (match, value) {\n if (typeof match === 'string') {\n return match === value\n }\n if (match instanceof RegExp) {\n return match.test(value)\n }\n if (typeof match === 'function') {\n return match(value) === true\n }\n return false\n}\n\nfunction lowerCaseEntries (headers) {\n return Object.fromEntries(\n Object.entries(headers).map(([headerName, headerValue]) => {\n return [headerName.toLocaleLowerCase(), headerValue]\n })\n )\n}\n\n/**\n * @param {import('../../index').Headers|string[]|Record} headers\n * @param {string} key\n */\nfunction getHeaderByName (headers, key) {\n if (Array.isArray(headers)) {\n for (let i = 0; i < headers.length; i += 2) {\n if (headers[i].toLocaleLowerCase() === key.toLocaleLowerCase()) {\n return headers[i + 1]\n }\n }\n\n return undefined\n } else if (typeof headers.get === 'function') {\n return headers.get(key)\n } else {\n return lowerCaseEntries(headers)[key.toLocaleLowerCase()]\n }\n}\n\n/** @param {string[]} headers */\nfunction buildHeadersFromArray (headers) { // fetch HeadersList\n const clone = headers.slice()\n const entries = []\n for (let index = 0; index < clone.length; index += 2) {\n entries.push([clone[index], clone[index + 1]])\n }\n return Object.fromEntries(entries)\n}\n\nfunction matchHeaders (mockDispatch, headers) {\n if (typeof mockDispatch.headers === 'function') {\n if (Array.isArray(headers)) { // fetch HeadersList\n headers = buildHeadersFromArray(headers)\n }\n return mockDispatch.headers(headers ? lowerCaseEntries(headers) : {})\n }\n if (typeof mockDispatch.headers === 'undefined') {\n return true\n }\n if (typeof headers !== 'object' || typeof mockDispatch.headers !== 'object') {\n return false\n }\n\n for (const [matchHeaderName, matchHeaderValue] of Object.entries(mockDispatch.headers)) {\n const headerValue = getHeaderByName(headers, matchHeaderName)\n\n if (!matchValue(matchHeaderValue, headerValue)) {\n return false\n }\n }\n return true\n}\n\nfunction safeUrl (path) {\n if (typeof path !== 'string') {\n return path\n }\n\n const pathSegments = path.split('?')\n\n if (pathSegments.length !== 2) {\n return path\n }\n\n const qp = new URLSearchParams(pathSegments.pop())\n qp.sort()\n return [...pathSegments, qp.toString()].join('?')\n}\n\nfunction matchKey (mockDispatch, { path, method, body, headers }) {\n const pathMatch = matchValue(mockDispatch.path, path)\n const methodMatch = matchValue(mockDispatch.method, method)\n const bodyMatch = typeof mockDispatch.body !== 'undefined' ? matchValue(mockDispatch.body, body) : true\n const headersMatch = matchHeaders(mockDispatch, headers)\n return pathMatch && methodMatch && bodyMatch && headersMatch\n}\n\nfunction getResponseData (data) {\n if (Buffer.isBuffer(data)) {\n return data\n } else if (typeof data === 'object') {\n return JSON.stringify(data)\n } else {\n return data.toString()\n }\n}\n\nfunction getMockDispatch (mockDispatches, key) {\n const basePath = key.query ? buildURL(key.path, key.query) : key.path\n const resolvedPath = typeof basePath === 'string' ? safeUrl(basePath) : basePath\n\n // Match path\n let matchedMockDispatches = mockDispatches.filter(({ consumed }) => !consumed).filter(({ path }) => matchValue(safeUrl(path), resolvedPath))\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for path '${resolvedPath}'`)\n }\n\n // Match method\n matchedMockDispatches = matchedMockDispatches.filter(({ method }) => matchValue(method, key.method))\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for method '${key.method}'`)\n }\n\n // Match body\n matchedMockDispatches = matchedMockDispatches.filter(({ body }) => typeof body !== 'undefined' ? matchValue(body, key.body) : true)\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for body '${key.body}'`)\n }\n\n // Match headers\n matchedMockDispatches = matchedMockDispatches.filter((mockDispatch) => matchHeaders(mockDispatch, key.headers))\n if (matchedMockDispatches.length === 0) {\n throw new MockNotMatchedError(`Mock dispatch not matched for headers '${typeof key.headers === 'object' ? JSON.stringify(key.headers) : key.headers}'`)\n }\n\n return matchedMockDispatches[0]\n}\n\nfunction addMockDispatch (mockDispatches, key, data) {\n const baseData = { timesInvoked: 0, times: 1, persist: false, consumed: false }\n const replyData = typeof data === 'function' ? { callback: data } : { ...data }\n const newMockDispatch = { ...baseData, ...key, pending: true, data: { error: null, ...replyData } }\n mockDispatches.push(newMockDispatch)\n return newMockDispatch\n}\n\nfunction deleteMockDispatch (mockDispatches, key) {\n const index = mockDispatches.findIndex(dispatch => {\n if (!dispatch.consumed) {\n return false\n }\n return matchKey(dispatch, key)\n })\n if (index !== -1) {\n mockDispatches.splice(index, 1)\n }\n}\n\nfunction buildKey (opts) {\n const { path, method, body, headers, query } = opts\n return {\n path,\n method,\n body,\n headers,\n query\n }\n}\n\nfunction generateKeyValues (data) {\n return Object.entries(data).reduce((keyValuePairs, [key, value]) => [\n ...keyValuePairs,\n Buffer.from(`${key}`),\n Array.isArray(value) ? value.map(x => Buffer.from(`${x}`)) : Buffer.from(`${value}`)\n ], [])\n}\n\n/**\n * @see https://developer.mozilla.org/en-US/docs/Web/HTTP/Status\n * @param {number} statusCode\n */\nfunction getStatusText (statusCode) {\n return STATUS_CODES[statusCode] || 'unknown'\n}\n\nasync function getResponse (body) {\n const buffers = []\n for await (const data of body) {\n buffers.push(data)\n }\n return Buffer.concat(buffers).toString('utf8')\n}\n\n/**\n * Mock dispatch function used to simulate undici dispatches\n */\nfunction mockDispatch (opts, handler) {\n // Get mock dispatch from built key\n const key = buildKey(opts)\n const mockDispatch = getMockDispatch(this[kDispatches], key)\n\n mockDispatch.timesInvoked++\n\n // Here's where we resolve a callback if a callback is present for the dispatch data.\n if (mockDispatch.data.callback) {\n mockDispatch.data = { ...mockDispatch.data, ...mockDispatch.data.callback(opts) }\n }\n\n // Parse mockDispatch data\n const { data: { statusCode, data, headers, trailers, error }, delay, persist } = mockDispatch\n const { timesInvoked, times } = mockDispatch\n\n // If it's used up and not persistent, mark as consumed\n mockDispatch.consumed = !persist && timesInvoked >= times\n mockDispatch.pending = timesInvoked < times\n\n // If specified, trigger dispatch error\n if (error !== null) {\n deleteMockDispatch(this[kDispatches], key)\n handler.onError(error)\n return true\n }\n\n // Handle the request with a delay if necessary\n if (typeof delay === 'number' && delay > 0) {\n setTimeout(() => {\n handleReply(this[kDispatches])\n }, delay)\n } else {\n handleReply(this[kDispatches])\n }\n\n function handleReply (mockDispatches, _data = data) {\n // fetch's HeadersList is a 1D string array\n const optsHeaders = Array.isArray(opts.headers)\n ? buildHeadersFromArray(opts.headers)\n : opts.headers\n const body = typeof _data === 'function'\n ? _data({ ...opts, headers: optsHeaders })\n : _data\n\n // util.types.isPromise is likely needed for jest.\n if (isPromise(body)) {\n // If handleReply is asynchronous, throwing an error\n // in the callback will reject the promise, rather than\n // synchronously throw the error, which breaks some tests.\n // Rather, we wait for the callback to resolve if it is a\n // promise, and then re-run handleReply with the new body.\n body.then((newData) => handleReply(mockDispatches, newData))\n return\n }\n\n const responseData = getResponseData(body)\n const responseHeaders = generateKeyValues(headers)\n const responseTrailers = generateKeyValues(trailers)\n\n handler.abort = nop\n handler.onHeaders(statusCode, responseHeaders, resume, getStatusText(statusCode))\n handler.onData(Buffer.from(responseData))\n handler.onComplete(responseTrailers)\n deleteMockDispatch(mockDispatches, key)\n }\n\n function resume () {}\n\n return true\n}\n\nfunction buildMockDispatch () {\n const agent = this[kMockAgent]\n const origin = this[kOrigin]\n const originalDispatch = this[kOriginalDispatch]\n\n return function dispatch (opts, handler) {\n if (agent.isMockActive) {\n try {\n mockDispatch.call(this, opts, handler)\n } catch (error) {\n if (error instanceof MockNotMatchedError) {\n const netConnect = agent[kGetNetConnect]()\n if (netConnect === false) {\n throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect disabled)`)\n }\n if (checkNetConnect(netConnect, origin)) {\n originalDispatch.call(this, opts, handler)\n } else {\n throw new MockNotMatchedError(`${error.message}: subsequent request to origin ${origin} was not allowed (net.connect is not enabled for this origin)`)\n }\n } else {\n throw error\n }\n }\n } else {\n originalDispatch.call(this, opts, handler)\n }\n }\n}\n\nfunction checkNetConnect (netConnect, origin) {\n const url = new URL(origin)\n if (netConnect === true) {\n return true\n } else if (Array.isArray(netConnect) && netConnect.some((matcher) => matchValue(matcher, url.host))) {\n return true\n }\n return false\n}\n\nfunction buildMockOptions (opts) {\n if (opts) {\n const { agent, ...mockOptions } = opts\n return mockOptions\n }\n}\n\nmodule.exports = {\n getResponseData,\n getMockDispatch,\n addMockDispatch,\n deleteMockDispatch,\n buildKey,\n generateKeyValues,\n matchValue,\n getResponse,\n getStatusText,\n mockDispatch,\n buildMockDispatch,\n checkNetConnect,\n buildMockOptions,\n getHeaderByName\n}\n","'use strict'\n\nconst { Transform } = require('stream')\nconst { Console } = require('console')\n\n/**\n * Gets the output of `console.table(…)` as a string.\n */\nmodule.exports = class PendingInterceptorsFormatter {\n constructor ({ disableColors } = {}) {\n this.transform = new Transform({\n transform (chunk, _enc, cb) {\n cb(null, chunk)\n }\n })\n\n this.logger = new Console({\n stdout: this.transform,\n inspectOptions: {\n colors: !disableColors && !process.env.CI\n }\n })\n }\n\n format (pendingInterceptors) {\n const withPrettyHeaders = pendingInterceptors.map(\n ({ method, path, data: { statusCode }, persist, times, timesInvoked, origin }) => ({\n Method: method,\n Origin: origin,\n Path: path,\n 'Status code': statusCode,\n Persistent: persist ? '✅' : '❌',\n Invocations: timesInvoked,\n Remaining: persist ? Infinity : times - timesInvoked\n }))\n\n this.logger.table(withPrettyHeaders)\n return this.transform.read().toString()\n }\n}\n","'use strict'\n\nconst singulars = {\n pronoun: 'it',\n is: 'is',\n was: 'was',\n this: 'this'\n}\n\nconst plurals = {\n pronoun: 'they',\n is: 'are',\n was: 'were',\n this: 'these'\n}\n\nmodule.exports = class Pluralizer {\n constructor (singular, plural) {\n this.singular = singular\n this.plural = plural\n }\n\n pluralize (count) {\n const one = count === 1\n const keys = one ? singulars : plurals\n const noun = one ? this.singular : this.plural\n return { ...keys, count, noun }\n }\n}\n","/* eslint-disable */\n\n'use strict'\n\n// Extracted from node/lib/internal/fixed_queue.js\n\n// Currently optimal queue size, tested on V8 6.0 - 6.6. Must be power of two.\nconst kSize = 2048;\nconst kMask = kSize - 1;\n\n// The FixedQueue is implemented as a singly-linked list of fixed-size\n// circular buffers. It looks something like this:\n//\n// head tail\n// | |\n// v v\n// +-----------+ <-----\\ +-----------+ <------\\ +-----------+\n// | [null] | \\----- | next | \\------- | next |\n// +-----------+ +-----------+ +-----------+\n// | item | <-- bottom | item | <-- bottom | [empty] |\n// | item | | item | | [empty] |\n// | item | | item | | [empty] |\n// | item | | item | | [empty] |\n// | item | | item | bottom --> | item |\n// | item | | item | | item |\n// | ... | | ... | | ... |\n// | item | | item | | item |\n// | item | | item | | item |\n// | [empty] | <-- top | item | | item |\n// | [empty] | | item | | item |\n// | [empty] | | [empty] | <-- top top --> | [empty] |\n// +-----------+ +-----------+ +-----------+\n//\n// Or, if there is only one circular buffer, it looks something\n// like either of these:\n//\n// head tail head tail\n// | | | |\n// v v v v\n// +-----------+ +-----------+\n// | [null] | | [null] |\n// +-----------+ +-----------+\n// | [empty] | | item |\n// | [empty] | | item |\n// | item | <-- bottom top --> | [empty] |\n// | item | | [empty] |\n// | [empty] | <-- top bottom --> | item |\n// | [empty] | | item |\n// +-----------+ +-----------+\n//\n// Adding a value means moving `top` forward by one, removing means\n// moving `bottom` forward by one. After reaching the end, the queue\n// wraps around.\n//\n// When `top === bottom` the current queue is empty and when\n// `top + 1 === bottom` it's full. This wastes a single space of storage\n// but allows much quicker checks.\n\nclass FixedCircularBuffer {\n constructor() {\n this.bottom = 0;\n this.top = 0;\n this.list = new Array(kSize);\n this.next = null;\n }\n\n isEmpty() {\n return this.top === this.bottom;\n }\n\n isFull() {\n return ((this.top + 1) & kMask) === this.bottom;\n }\n\n push(data) {\n this.list[this.top] = data;\n this.top = (this.top + 1) & kMask;\n }\n\n shift() {\n const nextItem = this.list[this.bottom];\n if (nextItem === undefined)\n return null;\n this.list[this.bottom] = undefined;\n this.bottom = (this.bottom + 1) & kMask;\n return nextItem;\n }\n}\n\nmodule.exports = class FixedQueue {\n constructor() {\n this.head = this.tail = new FixedCircularBuffer();\n }\n\n isEmpty() {\n return this.head.isEmpty();\n }\n\n push(data) {\n if (this.head.isFull()) {\n // Head is full: Creates a new queue, sets the old queue's `.next` to it,\n // and sets it as the new main queue.\n this.head = this.head.next = new FixedCircularBuffer();\n }\n this.head.push(data);\n }\n\n shift() {\n const tail = this.tail;\n const next = tail.shift();\n if (tail.isEmpty() && tail.next !== null) {\n // If there is another queue, it forms the new tail.\n this.tail = tail.next;\n }\n return next;\n }\n};\n","'use strict'\n\nconst DispatcherBase = require('./dispatcher-base')\nconst FixedQueue = require('./node/fixed-queue')\nconst { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require('./core/symbols')\nconst PoolStats = require('./pool-stats')\n\nconst kClients = Symbol('clients')\nconst kNeedDrain = Symbol('needDrain')\nconst kQueue = Symbol('queue')\nconst kClosedResolve = Symbol('closed resolve')\nconst kOnDrain = Symbol('onDrain')\nconst kOnConnect = Symbol('onConnect')\nconst kOnDisconnect = Symbol('onDisconnect')\nconst kOnConnectionError = Symbol('onConnectionError')\nconst kGetDispatcher = Symbol('get dispatcher')\nconst kAddClient = Symbol('add client')\nconst kRemoveClient = Symbol('remove client')\nconst kStats = Symbol('stats')\n\nclass PoolBase extends DispatcherBase {\n constructor () {\n super()\n\n this[kQueue] = new FixedQueue()\n this[kClients] = []\n this[kQueued] = 0\n\n const pool = this\n\n this[kOnDrain] = function onDrain (origin, targets) {\n const queue = pool[kQueue]\n\n let needDrain = false\n\n while (!needDrain) {\n const item = queue.shift()\n if (!item) {\n break\n }\n pool[kQueued]--\n needDrain = !this.dispatch(item.opts, item.handler)\n }\n\n this[kNeedDrain] = needDrain\n\n if (!this[kNeedDrain] && pool[kNeedDrain]) {\n pool[kNeedDrain] = false\n pool.emit('drain', origin, [pool, ...targets])\n }\n\n if (pool[kClosedResolve] && queue.isEmpty()) {\n Promise\n .all(pool[kClients].map(c => c.close()))\n .then(pool[kClosedResolve])\n }\n }\n\n this[kOnConnect] = (origin, targets) => {\n pool.emit('connect', origin, [pool, ...targets])\n }\n\n this[kOnDisconnect] = (origin, targets, err) => {\n pool.emit('disconnect', origin, [pool, ...targets], err)\n }\n\n this[kOnConnectionError] = (origin, targets, err) => {\n pool.emit('connectionError', origin, [pool, ...targets], err)\n }\n\n this[kStats] = new PoolStats(this)\n }\n\n get [kBusy] () {\n return this[kNeedDrain]\n }\n\n get [kConnected] () {\n return this[kClients].filter(client => client[kConnected]).length\n }\n\n get [kFree] () {\n return this[kClients].filter(client => client[kConnected] && !client[kNeedDrain]).length\n }\n\n get [kPending] () {\n let ret = this[kQueued]\n for (const { [kPending]: pending } of this[kClients]) {\n ret += pending\n }\n return ret\n }\n\n get [kRunning] () {\n let ret = 0\n for (const { [kRunning]: running } of this[kClients]) {\n ret += running\n }\n return ret\n }\n\n get [kSize] () {\n let ret = this[kQueued]\n for (const { [kSize]: size } of this[kClients]) {\n ret += size\n }\n return ret\n }\n\n get stats () {\n return this[kStats]\n }\n\n async [kClose] () {\n if (this[kQueue].isEmpty()) {\n return Promise.all(this[kClients].map(c => c.close()))\n } else {\n return new Promise((resolve) => {\n this[kClosedResolve] = resolve\n })\n }\n }\n\n async [kDestroy] (err) {\n while (true) {\n const item = this[kQueue].shift()\n if (!item) {\n break\n }\n item.handler.onError(err)\n }\n\n return Promise.all(this[kClients].map(c => c.destroy(err)))\n }\n\n [kDispatch] (opts, handler) {\n const dispatcher = this[kGetDispatcher]()\n\n if (!dispatcher) {\n this[kNeedDrain] = true\n this[kQueue].push({ opts, handler })\n this[kQueued]++\n } else if (!dispatcher.dispatch(opts, handler)) {\n dispatcher[kNeedDrain] = true\n this[kNeedDrain] = !this[kGetDispatcher]()\n }\n\n return !this[kNeedDrain]\n }\n\n [kAddClient] (client) {\n client\n .on('drain', this[kOnDrain])\n .on('connect', this[kOnConnect])\n .on('disconnect', this[kOnDisconnect])\n .on('connectionError', this[kOnConnectionError])\n\n this[kClients].push(client)\n\n if (this[kNeedDrain]) {\n process.nextTick(() => {\n if (this[kNeedDrain]) {\n this[kOnDrain](client[kUrl], [this, client])\n }\n })\n }\n\n return this\n }\n\n [kRemoveClient] (client) {\n client.close(() => {\n const idx = this[kClients].indexOf(client)\n if (idx !== -1) {\n this[kClients].splice(idx, 1)\n }\n })\n\n this[kNeedDrain] = this[kClients].some(dispatcher => (\n !dispatcher[kNeedDrain] &&\n dispatcher.closed !== true &&\n dispatcher.destroyed !== true\n ))\n }\n}\n\nmodule.exports = {\n PoolBase,\n kClients,\n kNeedDrain,\n kAddClient,\n kRemoveClient,\n kGetDispatcher\n}\n","const { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require('./core/symbols')\nconst kPool = Symbol('pool')\n\nclass PoolStats {\n constructor (pool) {\n this[kPool] = pool\n }\n\n get connected () {\n return this[kPool][kConnected]\n }\n\n get free () {\n return this[kPool][kFree]\n }\n\n get pending () {\n return this[kPool][kPending]\n }\n\n get queued () {\n return this[kPool][kQueued]\n }\n\n get running () {\n return this[kPool][kRunning]\n }\n\n get size () {\n return this[kPool][kSize]\n }\n}\n\nmodule.exports = PoolStats\n","'use strict'\n\nconst {\n PoolBase,\n kClients,\n kNeedDrain,\n kAddClient,\n kGetDispatcher\n} = require('./pool-base')\nconst Client = require('./client')\nconst {\n InvalidArgumentError\n} = require('./core/errors')\nconst util = require('./core/util')\nconst { kUrl, kInterceptors } = require('./core/symbols')\nconst buildConnector = require('./core/connect')\n\nconst kOptions = Symbol('options')\nconst kConnections = Symbol('connections')\nconst kFactory = Symbol('factory')\n\nfunction defaultFactory (origin, opts) {\n return new Client(origin, opts)\n}\n\nclass Pool extends PoolBase {\n constructor (origin, {\n connections,\n factory = defaultFactory,\n connect,\n connectTimeout,\n tls,\n maxCachedSessions,\n socketPath,\n autoSelectFamily,\n autoSelectFamilyAttemptTimeout,\n allowH2,\n ...options\n } = {}) {\n super()\n\n if (connections != null && (!Number.isFinite(connections) || connections < 0)) {\n throw new InvalidArgumentError('invalid connections')\n }\n\n if (typeof factory !== 'function') {\n throw new InvalidArgumentError('factory must be a function.')\n }\n\n if (connect != null && typeof connect !== 'function' && typeof connect !== 'object') {\n throw new InvalidArgumentError('connect must be a function or an object')\n }\n\n if (typeof connect !== 'function') {\n connect = buildConnector({\n ...tls,\n maxCachedSessions,\n allowH2,\n socketPath,\n timeout: connectTimeout,\n ...(util.nodeHasAutoSelectFamily && autoSelectFamily ? { autoSelectFamily, autoSelectFamilyAttemptTimeout } : undefined),\n ...connect\n })\n }\n\n this[kInterceptors] = options.interceptors && options.interceptors.Pool && Array.isArray(options.interceptors.Pool)\n ? options.interceptors.Pool\n : []\n this[kConnections] = connections || null\n this[kUrl] = util.parseOrigin(origin)\n this[kOptions] = { ...util.deepClone(options), connect, allowH2 }\n this[kOptions].interceptors = options.interceptors\n ? { ...options.interceptors }\n : undefined\n this[kFactory] = factory\n }\n\n [kGetDispatcher] () {\n let dispatcher = this[kClients].find(dispatcher => !dispatcher[kNeedDrain])\n\n if (dispatcher) {\n return dispatcher\n }\n\n if (!this[kConnections] || this[kClients].length < this[kConnections]) {\n dispatcher = this[kFactory](this[kUrl], this[kOptions])\n this[kAddClient](dispatcher)\n }\n\n return dispatcher\n }\n}\n\nmodule.exports = Pool\n","'use strict'\n\nconst { kProxy, kClose, kDestroy, kInterceptors } = require('./core/symbols')\nconst { URL } = require('url')\nconst Agent = require('./agent')\nconst Pool = require('./pool')\nconst DispatcherBase = require('./dispatcher-base')\nconst { InvalidArgumentError, RequestAbortedError } = require('./core/errors')\nconst buildConnector = require('./core/connect')\n\nconst kAgent = Symbol('proxy agent')\nconst kClient = Symbol('proxy client')\nconst kProxyHeaders = Symbol('proxy headers')\nconst kRequestTls = Symbol('request tls settings')\nconst kProxyTls = Symbol('proxy tls settings')\nconst kConnectEndpoint = Symbol('connect endpoint function')\n\nfunction defaultProtocolPort (protocol) {\n return protocol === 'https:' ? 443 : 80\n}\n\nfunction buildProxyOptions (opts) {\n if (typeof opts === 'string') {\n opts = { uri: opts }\n }\n\n if (!opts || !opts.uri) {\n throw new InvalidArgumentError('Proxy opts.uri is mandatory')\n }\n\n return {\n uri: opts.uri,\n protocol: opts.protocol || 'https'\n }\n}\n\nfunction defaultFactory (origin, opts) {\n return new Pool(origin, opts)\n}\n\nclass ProxyAgent extends DispatcherBase {\n constructor (opts) {\n super(opts)\n this[kProxy] = buildProxyOptions(opts)\n this[kAgent] = new Agent(opts)\n this[kInterceptors] = opts.interceptors && opts.interceptors.ProxyAgent && Array.isArray(opts.interceptors.ProxyAgent)\n ? opts.interceptors.ProxyAgent\n : []\n\n if (typeof opts === 'string') {\n opts = { uri: opts }\n }\n\n if (!opts || !opts.uri) {\n throw new InvalidArgumentError('Proxy opts.uri is mandatory')\n }\n\n const { clientFactory = defaultFactory } = opts\n\n if (typeof clientFactory !== 'function') {\n throw new InvalidArgumentError('Proxy opts.clientFactory must be a function.')\n }\n\n this[kRequestTls] = opts.requestTls\n this[kProxyTls] = opts.proxyTls\n this[kProxyHeaders] = opts.headers || {}\n\n const resolvedUrl = new URL(opts.uri)\n const { origin, port, host, username, password } = resolvedUrl\n\n if (opts.auth && opts.token) {\n throw new InvalidArgumentError('opts.auth cannot be used in combination with opts.token')\n } else if (opts.auth) {\n /* @deprecated in favour of opts.token */\n this[kProxyHeaders]['proxy-authorization'] = `Basic ${opts.auth}`\n } else if (opts.token) {\n this[kProxyHeaders]['proxy-authorization'] = opts.token\n } else if (username && password) {\n this[kProxyHeaders]['proxy-authorization'] = `Basic ${Buffer.from(`${decodeURIComponent(username)}:${decodeURIComponent(password)}`).toString('base64')}`\n }\n\n const connect = buildConnector({ ...opts.proxyTls })\n this[kConnectEndpoint] = buildConnector({ ...opts.requestTls })\n this[kClient] = clientFactory(resolvedUrl, { connect })\n this[kAgent] = new Agent({\n ...opts,\n connect: async (opts, callback) => {\n let requestedHost = opts.host\n if (!opts.port) {\n requestedHost += `:${defaultProtocolPort(opts.protocol)}`\n }\n try {\n const { socket, statusCode } = await this[kClient].connect({\n origin,\n port,\n path: requestedHost,\n signal: opts.signal,\n headers: {\n ...this[kProxyHeaders],\n host\n }\n })\n if (statusCode !== 200) {\n socket.on('error', () => {}).destroy()\n callback(new RequestAbortedError(`Proxy response (${statusCode}) !== 200 when HTTP Tunneling`))\n }\n if (opts.protocol !== 'https:') {\n callback(null, socket)\n return\n }\n let servername\n if (this[kRequestTls]) {\n servername = this[kRequestTls].servername\n } else {\n servername = opts.servername\n }\n this[kConnectEndpoint]({ ...opts, servername, httpSocket: socket }, callback)\n } catch (err) {\n callback(err)\n }\n }\n })\n }\n\n dispatch (opts, handler) {\n const { host } = new URL(opts.origin)\n const headers = buildHeaders(opts.headers)\n throwIfProxyAuthIsSent(headers)\n return this[kAgent].dispatch(\n {\n ...opts,\n headers: {\n ...headers,\n host\n }\n },\n handler\n )\n }\n\n async [kClose] () {\n await this[kAgent].close()\n await this[kClient].close()\n }\n\n async [kDestroy] () {\n await this[kAgent].destroy()\n await this[kClient].destroy()\n }\n}\n\n/**\n * @param {string[] | Record} headers\n * @returns {Record}\n */\nfunction buildHeaders (headers) {\n // When using undici.fetch, the headers list is stored\n // as an array.\n if (Array.isArray(headers)) {\n /** @type {Record} */\n const headersPair = {}\n\n for (let i = 0; i < headers.length; i += 2) {\n headersPair[headers[i]] = headers[i + 1]\n }\n\n return headersPair\n }\n\n return headers\n}\n\n/**\n * @param {Record} headers\n *\n * Previous versions of ProxyAgent suggests the Proxy-Authorization in request headers\n * Nevertheless, it was changed and to avoid a security vulnerability by end users\n * this check was created.\n * It should be removed in the next major version for performance reasons\n */\nfunction throwIfProxyAuthIsSent (headers) {\n const existProxyAuth = headers && Object.keys(headers)\n .find((key) => key.toLowerCase() === 'proxy-authorization')\n if (existProxyAuth) {\n throw new InvalidArgumentError('Proxy-Authorization should be sent in ProxyAgent constructor')\n }\n}\n\nmodule.exports = ProxyAgent\n","'use strict'\n\nlet fastNow = Date.now()\nlet fastNowTimeout\n\nconst fastTimers = []\n\nfunction onTimeout () {\n fastNow = Date.now()\n\n let len = fastTimers.length\n let idx = 0\n while (idx < len) {\n const timer = fastTimers[idx]\n\n if (timer.state === 0) {\n timer.state = fastNow + timer.delay\n } else if (timer.state > 0 && fastNow >= timer.state) {\n timer.state = -1\n timer.callback(timer.opaque)\n }\n\n if (timer.state === -1) {\n timer.state = -2\n if (idx !== len - 1) {\n fastTimers[idx] = fastTimers.pop()\n } else {\n fastTimers.pop()\n }\n len -= 1\n } else {\n idx += 1\n }\n }\n\n if (fastTimers.length > 0) {\n refreshTimeout()\n }\n}\n\nfunction refreshTimeout () {\n if (fastNowTimeout && fastNowTimeout.refresh) {\n fastNowTimeout.refresh()\n } else {\n clearTimeout(fastNowTimeout)\n fastNowTimeout = setTimeout(onTimeout, 1e3)\n if (fastNowTimeout.unref) {\n fastNowTimeout.unref()\n }\n }\n}\n\nclass Timeout {\n constructor (callback, delay, opaque) {\n this.callback = callback\n this.delay = delay\n this.opaque = opaque\n\n // -2 not in timer list\n // -1 in timer list but inactive\n // 0 in timer list waiting for time\n // > 0 in timer list waiting for time to expire\n this.state = -2\n\n this.refresh()\n }\n\n refresh () {\n if (this.state === -2) {\n fastTimers.push(this)\n if (!fastNowTimeout || fastTimers.length === 1) {\n refreshTimeout()\n }\n }\n\n this.state = 0\n }\n\n clear () {\n this.state = -1\n }\n}\n\nmodule.exports = {\n setTimeout (callback, delay, opaque) {\n return delay < 1e3\n ? setTimeout(callback, delay, opaque)\n : new Timeout(callback, delay, opaque)\n },\n clearTimeout (timeout) {\n if (timeout instanceof Timeout) {\n timeout.clear()\n } else {\n clearTimeout(timeout)\n }\n }\n}\n","'use strict'\n\nconst diagnosticsChannel = require('diagnostics_channel')\nconst { uid, states } = require('./constants')\nconst {\n kReadyState,\n kSentClose,\n kByteParser,\n kReceivedClose\n} = require('./symbols')\nconst { fireEvent, failWebsocketConnection } = require('./util')\nconst { CloseEvent } = require('./events')\nconst { makeRequest } = require('../fetch/request')\nconst { fetching } = require('../fetch/index')\nconst { Headers } = require('../fetch/headers')\nconst { getGlobalDispatcher } = require('../global')\nconst { kHeadersList } = require('../core/symbols')\n\nconst channels = {}\nchannels.open = diagnosticsChannel.channel('undici:websocket:open')\nchannels.close = diagnosticsChannel.channel('undici:websocket:close')\nchannels.socketError = diagnosticsChannel.channel('undici:websocket:socket_error')\n\n/** @type {import('crypto')} */\nlet crypto\ntry {\n crypto = require('crypto')\n} catch {\n\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#concept-websocket-establish\n * @param {URL} url\n * @param {string|string[]} protocols\n * @param {import('./websocket').WebSocket} ws\n * @param {(response: any) => void} onEstablish\n * @param {Partial} options\n */\nfunction establishWebSocketConnection (url, protocols, ws, onEstablish, options) {\n // 1. Let requestURL be a copy of url, with its scheme set to \"http\", if url’s\n // scheme is \"ws\", and to \"https\" otherwise.\n const requestURL = url\n\n requestURL.protocol = url.protocol === 'ws:' ? 'http:' : 'https:'\n\n // 2. Let request be a new request, whose URL is requestURL, client is client,\n // service-workers mode is \"none\", referrer is \"no-referrer\", mode is\n // \"websocket\", credentials mode is \"include\", cache mode is \"no-store\" ,\n // and redirect mode is \"error\".\n const request = makeRequest({\n urlList: [requestURL],\n serviceWorkers: 'none',\n referrer: 'no-referrer',\n mode: 'websocket',\n credentials: 'include',\n cache: 'no-store',\n redirect: 'error'\n })\n\n // Note: undici extension, allow setting custom headers.\n if (options.headers) {\n const headersList = new Headers(options.headers)[kHeadersList]\n\n request.headersList = headersList\n }\n\n // 3. Append (`Upgrade`, `websocket`) to request’s header list.\n // 4. Append (`Connection`, `Upgrade`) to request’s header list.\n // Note: both of these are handled by undici currently.\n // https://github.com/nodejs/undici/blob/68c269c4144c446f3f1220951338daef4a6b5ec4/lib/client.js#L1397\n\n // 5. Let keyValue be a nonce consisting of a randomly selected\n // 16-byte value that has been forgiving-base64-encoded and\n // isomorphic encoded.\n const keyValue = crypto.randomBytes(16).toString('base64')\n\n // 6. Append (`Sec-WebSocket-Key`, keyValue) to request’s\n // header list.\n request.headersList.append('sec-websocket-key', keyValue)\n\n // 7. Append (`Sec-WebSocket-Version`, `13`) to request’s\n // header list.\n request.headersList.append('sec-websocket-version', '13')\n\n // 8. For each protocol in protocols, combine\n // (`Sec-WebSocket-Protocol`, protocol) in request’s header\n // list.\n for (const protocol of protocols) {\n request.headersList.append('sec-websocket-protocol', protocol)\n }\n\n // 9. Let permessageDeflate be a user-agent defined\n // \"permessage-deflate\" extension header value.\n // https://github.com/mozilla/gecko-dev/blob/ce78234f5e653a5d3916813ff990f053510227bc/netwerk/protocol/websocket/WebSocketChannel.cpp#L2673\n // TODO: enable once permessage-deflate is supported\n const permessageDeflate = '' // 'permessage-deflate; 15'\n\n // 10. Append (`Sec-WebSocket-Extensions`, permessageDeflate) to\n // request’s header list.\n // request.headersList.append('sec-websocket-extensions', permessageDeflate)\n\n // 11. Fetch request with useParallelQueue set to true, and\n // processResponse given response being these steps:\n const controller = fetching({\n request,\n useParallelQueue: true,\n dispatcher: options.dispatcher ?? getGlobalDispatcher(),\n processResponse (response) {\n // 1. If response is a network error or its status is not 101,\n // fail the WebSocket connection.\n if (response.type === 'error' || response.status !== 101) {\n failWebsocketConnection(ws, 'Received network error or non-101 status code.')\n return\n }\n\n // 2. If protocols is not the empty list and extracting header\n // list values given `Sec-WebSocket-Protocol` and response’s\n // header list results in null, failure, or the empty byte\n // sequence, then fail the WebSocket connection.\n if (protocols.length !== 0 && !response.headersList.get('Sec-WebSocket-Protocol')) {\n failWebsocketConnection(ws, 'Server did not respond with sent protocols.')\n return\n }\n\n // 3. Follow the requirements stated step 2 to step 6, inclusive,\n // of the last set of steps in section 4.1 of The WebSocket\n // Protocol to validate response. This either results in fail\n // the WebSocket connection or the WebSocket connection is\n // established.\n\n // 2. If the response lacks an |Upgrade| header field or the |Upgrade|\n // header field contains a value that is not an ASCII case-\n // insensitive match for the value \"websocket\", the client MUST\n // _Fail the WebSocket Connection_.\n if (response.headersList.get('Upgrade')?.toLowerCase() !== 'websocket') {\n failWebsocketConnection(ws, 'Server did not set Upgrade header to \"websocket\".')\n return\n }\n\n // 3. If the response lacks a |Connection| header field or the\n // |Connection| header field doesn't contain a token that is an\n // ASCII case-insensitive match for the value \"Upgrade\", the client\n // MUST _Fail the WebSocket Connection_.\n if (response.headersList.get('Connection')?.toLowerCase() !== 'upgrade') {\n failWebsocketConnection(ws, 'Server did not set Connection header to \"upgrade\".')\n return\n }\n\n // 4. If the response lacks a |Sec-WebSocket-Accept| header field or\n // the |Sec-WebSocket-Accept| contains a value other than the\n // base64-encoded SHA-1 of the concatenation of the |Sec-WebSocket-\n // Key| (as a string, not base64-decoded) with the string \"258EAFA5-\n // E914-47DA-95CA-C5AB0DC85B11\" but ignoring any leading and\n // trailing whitespace, the client MUST _Fail the WebSocket\n // Connection_.\n const secWSAccept = response.headersList.get('Sec-WebSocket-Accept')\n const digest = crypto.createHash('sha1').update(keyValue + uid).digest('base64')\n if (secWSAccept !== digest) {\n failWebsocketConnection(ws, 'Incorrect hash received in Sec-WebSocket-Accept header.')\n return\n }\n\n // 5. If the response includes a |Sec-WebSocket-Extensions| header\n // field and this header field indicates the use of an extension\n // that was not present in the client's handshake (the server has\n // indicated an extension not requested by the client), the client\n // MUST _Fail the WebSocket Connection_. (The parsing of this\n // header field to determine which extensions are requested is\n // discussed in Section 9.1.)\n const secExtension = response.headersList.get('Sec-WebSocket-Extensions')\n\n if (secExtension !== null && secExtension !== permessageDeflate) {\n failWebsocketConnection(ws, 'Received different permessage-deflate than the one set.')\n return\n }\n\n // 6. If the response includes a |Sec-WebSocket-Protocol| header field\n // and this header field indicates the use of a subprotocol that was\n // not present in the client's handshake (the server has indicated a\n // subprotocol not requested by the client), the client MUST _Fail\n // the WebSocket Connection_.\n const secProtocol = response.headersList.get('Sec-WebSocket-Protocol')\n\n if (secProtocol !== null && secProtocol !== request.headersList.get('Sec-WebSocket-Protocol')) {\n failWebsocketConnection(ws, 'Protocol was not set in the opening handshake.')\n return\n }\n\n response.socket.on('data', onSocketData)\n response.socket.on('close', onSocketClose)\n response.socket.on('error', onSocketError)\n\n if (channels.open.hasSubscribers) {\n channels.open.publish({\n address: response.socket.address(),\n protocol: secProtocol,\n extensions: secExtension\n })\n }\n\n onEstablish(response)\n }\n })\n\n return controller\n}\n\n/**\n * @param {Buffer} chunk\n */\nfunction onSocketData (chunk) {\n if (!this.ws[kByteParser].write(chunk)) {\n this.pause()\n }\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.4\n */\nfunction onSocketClose () {\n const { ws } = this\n\n // If the TCP connection was closed after the\n // WebSocket closing handshake was completed, the WebSocket connection\n // is said to have been closed _cleanly_.\n const wasClean = ws[kSentClose] && ws[kReceivedClose]\n\n let code = 1005\n let reason = ''\n\n const result = ws[kByteParser].closingInfo\n\n if (result) {\n code = result.code ?? 1005\n reason = result.reason\n } else if (!ws[kSentClose]) {\n // If _The WebSocket\n // Connection is Closed_ and no Close control frame was received by the\n // endpoint (such as could occur if the underlying transport connection\n // is lost), _The WebSocket Connection Close Code_ is considered to be\n // 1006.\n code = 1006\n }\n\n // 1. Change the ready state to CLOSED (3).\n ws[kReadyState] = states.CLOSED\n\n // 2. If the user agent was required to fail the WebSocket\n // connection, or if the WebSocket connection was closed\n // after being flagged as full, fire an event named error\n // at the WebSocket object.\n // TODO\n\n // 3. Fire an event named close at the WebSocket object,\n // using CloseEvent, with the wasClean attribute\n // initialized to true if the connection closed cleanly\n // and false otherwise, the code attribute initialized to\n // the WebSocket connection close code, and the reason\n // attribute initialized to the result of applying UTF-8\n // decode without BOM to the WebSocket connection close\n // reason.\n fireEvent('close', ws, CloseEvent, {\n wasClean, code, reason\n })\n\n if (channels.close.hasSubscribers) {\n channels.close.publish({\n websocket: ws,\n code,\n reason\n })\n }\n}\n\nfunction onSocketError (error) {\n const { ws } = this\n\n ws[kReadyState] = states.CLOSING\n\n if (channels.socketError.hasSubscribers) {\n channels.socketError.publish(error)\n }\n\n this.destroy()\n}\n\nmodule.exports = {\n establishWebSocketConnection\n}\n","'use strict'\n\n// This is a Globally Unique Identifier unique used\n// to validate that the endpoint accepts websocket\n// connections.\n// See https://www.rfc-editor.org/rfc/rfc6455.html#section-1.3\nconst uid = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'\n\n/** @type {PropertyDescriptor} */\nconst staticPropertyDescriptors = {\n enumerable: true,\n writable: false,\n configurable: false\n}\n\nconst states = {\n CONNECTING: 0,\n OPEN: 1,\n CLOSING: 2,\n CLOSED: 3\n}\n\nconst opcodes = {\n CONTINUATION: 0x0,\n TEXT: 0x1,\n BINARY: 0x2,\n CLOSE: 0x8,\n PING: 0x9,\n PONG: 0xA\n}\n\nconst maxUnsigned16Bit = 2 ** 16 - 1 // 65535\n\nconst parserStates = {\n INFO: 0,\n PAYLOADLENGTH_16: 2,\n PAYLOADLENGTH_64: 3,\n READ_DATA: 4\n}\n\nconst emptyBuffer = Buffer.allocUnsafe(0)\n\nmodule.exports = {\n uid,\n staticPropertyDescriptors,\n states,\n opcodes,\n maxUnsigned16Bit,\n parserStates,\n emptyBuffer\n}\n","'use strict'\n\nconst { webidl } = require('../fetch/webidl')\nconst { kEnumerableProperty } = require('../core/util')\nconst { MessagePort } = require('worker_threads')\n\n/**\n * @see https://html.spec.whatwg.org/multipage/comms.html#messageevent\n */\nclass MessageEvent extends Event {\n #eventInit\n\n constructor (type, eventInitDict = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent constructor' })\n\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.MessageEventInit(eventInitDict)\n\n super(type, eventInitDict)\n\n this.#eventInit = eventInitDict\n }\n\n get data () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.data\n }\n\n get origin () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.origin\n }\n\n get lastEventId () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.lastEventId\n }\n\n get source () {\n webidl.brandCheck(this, MessageEvent)\n\n return this.#eventInit.source\n }\n\n get ports () {\n webidl.brandCheck(this, MessageEvent)\n\n if (!Object.isFrozen(this.#eventInit.ports)) {\n Object.freeze(this.#eventInit.ports)\n }\n\n return this.#eventInit.ports\n }\n\n initMessageEvent (\n type,\n bubbles = false,\n cancelable = false,\n data = null,\n origin = '',\n lastEventId = '',\n source = null,\n ports = []\n ) {\n webidl.brandCheck(this, MessageEvent)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'MessageEvent.initMessageEvent' })\n\n return new MessageEvent(type, {\n bubbles, cancelable, data, origin, lastEventId, source, ports\n })\n }\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#the-closeevent-interface\n */\nclass CloseEvent extends Event {\n #eventInit\n\n constructor (type, eventInitDict = {}) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'CloseEvent constructor' })\n\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.CloseEventInit(eventInitDict)\n\n super(type, eventInitDict)\n\n this.#eventInit = eventInitDict\n }\n\n get wasClean () {\n webidl.brandCheck(this, CloseEvent)\n\n return this.#eventInit.wasClean\n }\n\n get code () {\n webidl.brandCheck(this, CloseEvent)\n\n return this.#eventInit.code\n }\n\n get reason () {\n webidl.brandCheck(this, CloseEvent)\n\n return this.#eventInit.reason\n }\n}\n\n// https://html.spec.whatwg.org/multipage/webappapis.html#the-errorevent-interface\nclass ErrorEvent extends Event {\n #eventInit\n\n constructor (type, eventInitDict) {\n webidl.argumentLengthCheck(arguments, 1, { header: 'ErrorEvent constructor' })\n\n super(type, eventInitDict)\n\n type = webidl.converters.DOMString(type)\n eventInitDict = webidl.converters.ErrorEventInit(eventInitDict ?? {})\n\n this.#eventInit = eventInitDict\n }\n\n get message () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.message\n }\n\n get filename () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.filename\n }\n\n get lineno () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.lineno\n }\n\n get colno () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.colno\n }\n\n get error () {\n webidl.brandCheck(this, ErrorEvent)\n\n return this.#eventInit.error\n }\n}\n\nObject.defineProperties(MessageEvent.prototype, {\n [Symbol.toStringTag]: {\n value: 'MessageEvent',\n configurable: true\n },\n data: kEnumerableProperty,\n origin: kEnumerableProperty,\n lastEventId: kEnumerableProperty,\n source: kEnumerableProperty,\n ports: kEnumerableProperty,\n initMessageEvent: kEnumerableProperty\n})\n\nObject.defineProperties(CloseEvent.prototype, {\n [Symbol.toStringTag]: {\n value: 'CloseEvent',\n configurable: true\n },\n reason: kEnumerableProperty,\n code: kEnumerableProperty,\n wasClean: kEnumerableProperty\n})\n\nObject.defineProperties(ErrorEvent.prototype, {\n [Symbol.toStringTag]: {\n value: 'ErrorEvent',\n configurable: true\n },\n message: kEnumerableProperty,\n filename: kEnumerableProperty,\n lineno: kEnumerableProperty,\n colno: kEnumerableProperty,\n error: kEnumerableProperty\n})\n\nwebidl.converters.MessagePort = webidl.interfaceConverter(MessagePort)\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.MessagePort\n)\n\nconst eventInit = [\n {\n key: 'bubbles',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'cancelable',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'composed',\n converter: webidl.converters.boolean,\n defaultValue: false\n }\n]\n\nwebidl.converters.MessageEventInit = webidl.dictionaryConverter([\n ...eventInit,\n {\n key: 'data',\n converter: webidl.converters.any,\n defaultValue: null\n },\n {\n key: 'origin',\n converter: webidl.converters.USVString,\n defaultValue: ''\n },\n {\n key: 'lastEventId',\n converter: webidl.converters.DOMString,\n defaultValue: ''\n },\n {\n key: 'source',\n // Node doesn't implement WindowProxy or ServiceWorker, so the only\n // valid value for source is a MessagePort.\n converter: webidl.nullableConverter(webidl.converters.MessagePort),\n defaultValue: null\n },\n {\n key: 'ports',\n converter: webidl.converters['sequence'],\n get defaultValue () {\n return []\n }\n }\n])\n\nwebidl.converters.CloseEventInit = webidl.dictionaryConverter([\n ...eventInit,\n {\n key: 'wasClean',\n converter: webidl.converters.boolean,\n defaultValue: false\n },\n {\n key: 'code',\n converter: webidl.converters['unsigned short'],\n defaultValue: 0\n },\n {\n key: 'reason',\n converter: webidl.converters.USVString,\n defaultValue: ''\n }\n])\n\nwebidl.converters.ErrorEventInit = webidl.dictionaryConverter([\n ...eventInit,\n {\n key: 'message',\n converter: webidl.converters.DOMString,\n defaultValue: ''\n },\n {\n key: 'filename',\n converter: webidl.converters.USVString,\n defaultValue: ''\n },\n {\n key: 'lineno',\n converter: webidl.converters['unsigned long'],\n defaultValue: 0\n },\n {\n key: 'colno',\n converter: webidl.converters['unsigned long'],\n defaultValue: 0\n },\n {\n key: 'error',\n converter: webidl.converters.any\n }\n])\n\nmodule.exports = {\n MessageEvent,\n CloseEvent,\n ErrorEvent\n}\n","'use strict'\n\nconst { maxUnsigned16Bit } = require('./constants')\n\n/** @type {import('crypto')} */\nlet crypto\ntry {\n crypto = require('crypto')\n} catch {\n\n}\n\nclass WebsocketFrameSend {\n /**\n * @param {Buffer|undefined} data\n */\n constructor (data) {\n this.frameData = data\n this.maskKey = crypto.randomBytes(4)\n }\n\n createFrame (opcode) {\n const bodyLength = this.frameData?.byteLength ?? 0\n\n /** @type {number} */\n let payloadLength = bodyLength // 0-125\n let offset = 6\n\n if (bodyLength > maxUnsigned16Bit) {\n offset += 8 // payload length is next 8 bytes\n payloadLength = 127\n } else if (bodyLength > 125) {\n offset += 2 // payload length is next 2 bytes\n payloadLength = 126\n }\n\n const buffer = Buffer.allocUnsafe(bodyLength + offset)\n\n // Clear first 2 bytes, everything else is overwritten\n buffer[0] = buffer[1] = 0\n buffer[0] |= 0x80 // FIN\n buffer[0] = (buffer[0] & 0xF0) + opcode // opcode\n\n /*! ws. MIT License. Einar Otto Stangvik */\n buffer[offset - 4] = this.maskKey[0]\n buffer[offset - 3] = this.maskKey[1]\n buffer[offset - 2] = this.maskKey[2]\n buffer[offset - 1] = this.maskKey[3]\n\n buffer[1] = payloadLength\n\n if (payloadLength === 126) {\n buffer.writeUInt16BE(bodyLength, 2)\n } else if (payloadLength === 127) {\n // Clear extended payload length\n buffer[2] = buffer[3] = 0\n buffer.writeUIntBE(bodyLength, 4, 6)\n }\n\n buffer[1] |= 0x80 // MASK\n\n // mask body\n for (let i = 0; i < bodyLength; i++) {\n buffer[offset + i] = this.frameData[i] ^ this.maskKey[i % 4]\n }\n\n return buffer\n }\n}\n\nmodule.exports = {\n WebsocketFrameSend\n}\n","'use strict'\n\nconst { Writable } = require('stream')\nconst diagnosticsChannel = require('diagnostics_channel')\nconst { parserStates, opcodes, states, emptyBuffer } = require('./constants')\nconst { kReadyState, kSentClose, kResponse, kReceivedClose } = require('./symbols')\nconst { isValidStatusCode, failWebsocketConnection, websocketMessageReceived } = require('./util')\nconst { WebsocketFrameSend } = require('./frame')\n\n// This code was influenced by ws released under the MIT license.\n// Copyright (c) 2011 Einar Otto Stangvik \n// Copyright (c) 2013 Arnout Kazemier and contributors\n// Copyright (c) 2016 Luigi Pinca and contributors\n\nconst channels = {}\nchannels.ping = diagnosticsChannel.channel('undici:websocket:ping')\nchannels.pong = diagnosticsChannel.channel('undici:websocket:pong')\n\nclass ByteParser extends Writable {\n #buffers = []\n #byteOffset = 0\n\n #state = parserStates.INFO\n\n #info = {}\n #fragments = []\n\n constructor (ws) {\n super()\n\n this.ws = ws\n }\n\n /**\n * @param {Buffer} chunk\n * @param {() => void} callback\n */\n _write (chunk, _, callback) {\n this.#buffers.push(chunk)\n this.#byteOffset += chunk.length\n\n this.run(callback)\n }\n\n /**\n * Runs whenever a new chunk is received.\n * Callback is called whenever there are no more chunks buffering,\n * or not enough bytes are buffered to parse.\n */\n run (callback) {\n while (true) {\n if (this.#state === parserStates.INFO) {\n // If there aren't enough bytes to parse the payload length, etc.\n if (this.#byteOffset < 2) {\n return callback()\n }\n\n const buffer = this.consume(2)\n\n this.#info.fin = (buffer[0] & 0x80) !== 0\n this.#info.opcode = buffer[0] & 0x0F\n\n // If we receive a fragmented message, we use the type of the first\n // frame to parse the full message as binary/text, when it's terminated\n this.#info.originalOpcode ??= this.#info.opcode\n\n this.#info.fragmented = !this.#info.fin && this.#info.opcode !== opcodes.CONTINUATION\n\n if (this.#info.fragmented && this.#info.opcode !== opcodes.BINARY && this.#info.opcode !== opcodes.TEXT) {\n // Only text and binary frames can be fragmented\n failWebsocketConnection(this.ws, 'Invalid frame type was fragmented.')\n return\n }\n\n const payloadLength = buffer[1] & 0x7F\n\n if (payloadLength <= 125) {\n this.#info.payloadLength = payloadLength\n this.#state = parserStates.READ_DATA\n } else if (payloadLength === 126) {\n this.#state = parserStates.PAYLOADLENGTH_16\n } else if (payloadLength === 127) {\n this.#state = parserStates.PAYLOADLENGTH_64\n }\n\n if (this.#info.fragmented && payloadLength > 125) {\n // A fragmented frame can't be fragmented itself\n failWebsocketConnection(this.ws, 'Fragmented frame exceeded 125 bytes.')\n return\n } else if (\n (this.#info.opcode === opcodes.PING ||\n this.#info.opcode === opcodes.PONG ||\n this.#info.opcode === opcodes.CLOSE) &&\n payloadLength > 125\n ) {\n // Control frames can have a payload length of 125 bytes MAX\n failWebsocketConnection(this.ws, 'Payload length for control frame exceeded 125 bytes.')\n return\n } else if (this.#info.opcode === opcodes.CLOSE) {\n if (payloadLength === 1) {\n failWebsocketConnection(this.ws, 'Received close frame with a 1-byte body.')\n return\n }\n\n const body = this.consume(payloadLength)\n\n this.#info.closeInfo = this.parseCloseBody(false, body)\n\n if (!this.ws[kSentClose]) {\n // If an endpoint receives a Close frame and did not previously send a\n // Close frame, the endpoint MUST send a Close frame in response. (When\n // sending a Close frame in response, the endpoint typically echos the\n // status code it received.)\n const body = Buffer.allocUnsafe(2)\n body.writeUInt16BE(this.#info.closeInfo.code, 0)\n const closeFrame = new WebsocketFrameSend(body)\n\n this.ws[kResponse].socket.write(\n closeFrame.createFrame(opcodes.CLOSE),\n (err) => {\n if (!err) {\n this.ws[kSentClose] = true\n }\n }\n )\n }\n\n // Upon either sending or receiving a Close control frame, it is said\n // that _The WebSocket Closing Handshake is Started_ and that the\n // WebSocket connection is in the CLOSING state.\n this.ws[kReadyState] = states.CLOSING\n this.ws[kReceivedClose] = true\n\n this.end()\n\n return\n } else if (this.#info.opcode === opcodes.PING) {\n // Upon receipt of a Ping frame, an endpoint MUST send a Pong frame in\n // response, unless it already received a Close frame.\n // A Pong frame sent in response to a Ping frame must have identical\n // \"Application data\"\n\n const body = this.consume(payloadLength)\n\n if (!this.ws[kReceivedClose]) {\n const frame = new WebsocketFrameSend(body)\n\n this.ws[kResponse].socket.write(frame.createFrame(opcodes.PONG))\n\n if (channels.ping.hasSubscribers) {\n channels.ping.publish({\n payload: body\n })\n }\n }\n\n this.#state = parserStates.INFO\n\n if (this.#byteOffset > 0) {\n continue\n } else {\n callback()\n return\n }\n } else if (this.#info.opcode === opcodes.PONG) {\n // A Pong frame MAY be sent unsolicited. This serves as a\n // unidirectional heartbeat. A response to an unsolicited Pong frame is\n // not expected.\n\n const body = this.consume(payloadLength)\n\n if (channels.pong.hasSubscribers) {\n channels.pong.publish({\n payload: body\n })\n }\n\n if (this.#byteOffset > 0) {\n continue\n } else {\n callback()\n return\n }\n }\n } else if (this.#state === parserStates.PAYLOADLENGTH_16) {\n if (this.#byteOffset < 2) {\n return callback()\n }\n\n const buffer = this.consume(2)\n\n this.#info.payloadLength = buffer.readUInt16BE(0)\n this.#state = parserStates.READ_DATA\n } else if (this.#state === parserStates.PAYLOADLENGTH_64) {\n if (this.#byteOffset < 8) {\n return callback()\n }\n\n const buffer = this.consume(8)\n const upper = buffer.readUInt32BE(0)\n\n // 2^31 is the maxinimum bytes an arraybuffer can contain\n // on 32-bit systems. Although, on 64-bit systems, this is\n // 2^53-1 bytes.\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Invalid_array_length\n // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/common/globals.h;drc=1946212ac0100668f14eb9e2843bdd846e510a1e;bpv=1;bpt=1;l=1275\n // https://source.chromium.org/chromium/chromium/src/+/main:v8/src/objects/js-array-buffer.h;l=34;drc=1946212ac0100668f14eb9e2843bdd846e510a1e\n if (upper > 2 ** 31 - 1) {\n failWebsocketConnection(this.ws, 'Received payload length > 2^31 bytes.')\n return\n }\n\n const lower = buffer.readUInt32BE(4)\n\n this.#info.payloadLength = (upper << 8) + lower\n this.#state = parserStates.READ_DATA\n } else if (this.#state === parserStates.READ_DATA) {\n if (this.#byteOffset < this.#info.payloadLength) {\n // If there is still more data in this chunk that needs to be read\n return callback()\n } else if (this.#byteOffset >= this.#info.payloadLength) {\n // If the server sent multiple frames in a single chunk\n\n const body = this.consume(this.#info.payloadLength)\n\n this.#fragments.push(body)\n\n // If the frame is unfragmented, or a fragmented frame was terminated,\n // a message was received\n if (!this.#info.fragmented || (this.#info.fin && this.#info.opcode === opcodes.CONTINUATION)) {\n const fullMessage = Buffer.concat(this.#fragments)\n\n websocketMessageReceived(this.ws, this.#info.originalOpcode, fullMessage)\n\n this.#info = {}\n this.#fragments.length = 0\n }\n\n this.#state = parserStates.INFO\n }\n }\n\n if (this.#byteOffset > 0) {\n continue\n } else {\n callback()\n break\n }\n }\n }\n\n /**\n * Take n bytes from the buffered Buffers\n * @param {number} n\n * @returns {Buffer|null}\n */\n consume (n) {\n if (n > this.#byteOffset) {\n return null\n } else if (n === 0) {\n return emptyBuffer\n }\n\n if (this.#buffers[0].length === n) {\n this.#byteOffset -= this.#buffers[0].length\n return this.#buffers.shift()\n }\n\n const buffer = Buffer.allocUnsafe(n)\n let offset = 0\n\n while (offset !== n) {\n const next = this.#buffers[0]\n const { length } = next\n\n if (length + offset === n) {\n buffer.set(this.#buffers.shift(), offset)\n break\n } else if (length + offset > n) {\n buffer.set(next.subarray(0, n - offset), offset)\n this.#buffers[0] = next.subarray(n - offset)\n break\n } else {\n buffer.set(this.#buffers.shift(), offset)\n offset += next.length\n }\n }\n\n this.#byteOffset -= n\n\n return buffer\n }\n\n parseCloseBody (onlyCode, data) {\n // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.5\n /** @type {number|undefined} */\n let code\n\n if (data.length >= 2) {\n // _The WebSocket Connection Close Code_ is\n // defined as the status code (Section 7.4) contained in the first Close\n // control frame received by the application\n code = data.readUInt16BE(0)\n }\n\n if (onlyCode) {\n if (!isValidStatusCode(code)) {\n return null\n }\n\n return { code }\n }\n\n // https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.6\n /** @type {Buffer} */\n let reason = data.subarray(2)\n\n // Remove BOM\n if (reason[0] === 0xEF && reason[1] === 0xBB && reason[2] === 0xBF) {\n reason = reason.subarray(3)\n }\n\n if (code !== undefined && !isValidStatusCode(code)) {\n return null\n }\n\n try {\n // TODO: optimize this\n reason = new TextDecoder('utf-8', { fatal: true }).decode(reason)\n } catch {\n return null\n }\n\n return { code, reason }\n }\n\n get closingInfo () {\n return this.#info.closeInfo\n }\n}\n\nmodule.exports = {\n ByteParser\n}\n","'use strict'\n\nmodule.exports = {\n kWebSocketURL: Symbol('url'),\n kReadyState: Symbol('ready state'),\n kController: Symbol('controller'),\n kResponse: Symbol('response'),\n kBinaryType: Symbol('binary type'),\n kSentClose: Symbol('sent close'),\n kReceivedClose: Symbol('received close'),\n kByteParser: Symbol('byte parser')\n}\n","'use strict'\n\nconst { kReadyState, kController, kResponse, kBinaryType, kWebSocketURL } = require('./symbols')\nconst { states, opcodes } = require('./constants')\nconst { MessageEvent, ErrorEvent } = require('./events')\n\n/* globals Blob */\n\n/**\n * @param {import('./websocket').WebSocket} ws\n */\nfunction isEstablished (ws) {\n // If the server's response is validated as provided for above, it is\n // said that _The WebSocket Connection is Established_ and that the\n // WebSocket Connection is in the OPEN state.\n return ws[kReadyState] === states.OPEN\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n */\nfunction isClosing (ws) {\n // Upon either sending or receiving a Close control frame, it is said\n // that _The WebSocket Closing Handshake is Started_ and that the\n // WebSocket connection is in the CLOSING state.\n return ws[kReadyState] === states.CLOSING\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n */\nfunction isClosed (ws) {\n return ws[kReadyState] === states.CLOSED\n}\n\n/**\n * @see https://dom.spec.whatwg.org/#concept-event-fire\n * @param {string} e\n * @param {EventTarget} target\n * @param {EventInit | undefined} eventInitDict\n */\nfunction fireEvent (e, target, eventConstructor = Event, eventInitDict) {\n // 1. If eventConstructor is not given, then let eventConstructor be Event.\n\n // 2. Let event be the result of creating an event given eventConstructor,\n // in the relevant realm of target.\n // 3. Initialize event’s type attribute to e.\n const event = new eventConstructor(e, eventInitDict) // eslint-disable-line new-cap\n\n // 4. Initialize any other IDL attributes of event as described in the\n // invocation of this algorithm.\n\n // 5. Return the result of dispatching event at target, with legacy target\n // override flag set if set.\n target.dispatchEvent(event)\n}\n\n/**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n * @param {import('./websocket').WebSocket} ws\n * @param {number} type Opcode\n * @param {Buffer} data application data\n */\nfunction websocketMessageReceived (ws, type, data) {\n // 1. If ready state is not OPEN (1), then return.\n if (ws[kReadyState] !== states.OPEN) {\n return\n }\n\n // 2. Let dataForEvent be determined by switching on type and binary type:\n let dataForEvent\n\n if (type === opcodes.TEXT) {\n // -> type indicates that the data is Text\n // a new DOMString containing data\n try {\n dataForEvent = new TextDecoder('utf-8', { fatal: true }).decode(data)\n } catch {\n failWebsocketConnection(ws, 'Received invalid UTF-8 in text frame.')\n return\n }\n } else if (type === opcodes.BINARY) {\n if (ws[kBinaryType] === 'blob') {\n // -> type indicates that the data is Binary and binary type is \"blob\"\n // a new Blob object, created in the relevant Realm of the WebSocket\n // object, that represents data as its raw data\n dataForEvent = new Blob([data])\n } else {\n // -> type indicates that the data is Binary and binary type is \"arraybuffer\"\n // a new ArrayBuffer object, created in the relevant Realm of the\n // WebSocket object, whose contents are data\n dataForEvent = new Uint8Array(data).buffer\n }\n }\n\n // 3. Fire an event named message at the WebSocket object, using MessageEvent,\n // with the origin attribute initialized to the serialization of the WebSocket\n // object’s url's origin, and the data attribute initialized to dataForEvent.\n fireEvent('message', ws, MessageEvent, {\n origin: ws[kWebSocketURL].origin,\n data: dataForEvent\n })\n}\n\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc6455\n * @see https://datatracker.ietf.org/doc/html/rfc2616\n * @see https://bugs.chromium.org/p/chromium/issues/detail?id=398407\n * @param {string} protocol\n */\nfunction isValidSubprotocol (protocol) {\n // If present, this value indicates one\n // or more comma-separated subprotocol the client wishes to speak,\n // ordered by preference. The elements that comprise this value\n // MUST be non-empty strings with characters in the range U+0021 to\n // U+007E not including separator characters as defined in\n // [RFC2616] and MUST all be unique strings.\n if (protocol.length === 0) {\n return false\n }\n\n for (const char of protocol) {\n const code = char.charCodeAt(0)\n\n if (\n code < 0x21 ||\n code > 0x7E ||\n char === '(' ||\n char === ')' ||\n char === '<' ||\n char === '>' ||\n char === '@' ||\n char === ',' ||\n char === ';' ||\n char === ':' ||\n char === '\\\\' ||\n char === '\"' ||\n char === '/' ||\n char === '[' ||\n char === ']' ||\n char === '?' ||\n char === '=' ||\n char === '{' ||\n char === '}' ||\n code === 32 || // SP\n code === 9 // HT\n ) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * @see https://datatracker.ietf.org/doc/html/rfc6455#section-7-4\n * @param {number} code\n */\nfunction isValidStatusCode (code) {\n if (code >= 1000 && code < 1015) {\n return (\n code !== 1004 && // reserved\n code !== 1005 && // \"MUST NOT be set as a status code\"\n code !== 1006 // \"MUST NOT be set as a status code\"\n )\n }\n\n return code >= 3000 && code <= 4999\n}\n\n/**\n * @param {import('./websocket').WebSocket} ws\n * @param {string|undefined} reason\n */\nfunction failWebsocketConnection (ws, reason) {\n const { [kController]: controller, [kResponse]: response } = ws\n\n controller.abort()\n\n if (response?.socket && !response.socket.destroyed) {\n response.socket.destroy()\n }\n\n if (reason) {\n fireEvent('error', ws, ErrorEvent, {\n error: new Error(reason)\n })\n }\n}\n\nmodule.exports = {\n isEstablished,\n isClosing,\n isClosed,\n fireEvent,\n isValidSubprotocol,\n isValidStatusCode,\n failWebsocketConnection,\n websocketMessageReceived\n}\n","'use strict'\n\nconst { webidl } = require('../fetch/webidl')\nconst { DOMException } = require('../fetch/constants')\nconst { URLSerializer } = require('../fetch/dataURL')\nconst { getGlobalOrigin } = require('../fetch/global')\nconst { staticPropertyDescriptors, states, opcodes, emptyBuffer } = require('./constants')\nconst {\n kWebSocketURL,\n kReadyState,\n kController,\n kBinaryType,\n kResponse,\n kSentClose,\n kByteParser\n} = require('./symbols')\nconst { isEstablished, isClosing, isValidSubprotocol, failWebsocketConnection, fireEvent } = require('./util')\nconst { establishWebSocketConnection } = require('./connection')\nconst { WebsocketFrameSend } = require('./frame')\nconst { ByteParser } = require('./receiver')\nconst { kEnumerableProperty, isBlobLike } = require('../core/util')\nconst { getGlobalDispatcher } = require('../global')\nconst { types } = require('util')\n\nlet experimentalWarned = false\n\n// https://websockets.spec.whatwg.org/#interface-definition\nclass WebSocket extends EventTarget {\n #events = {\n open: null,\n error: null,\n close: null,\n message: null\n }\n\n #bufferedAmount = 0\n #protocol = ''\n #extensions = ''\n\n /**\n * @param {string} url\n * @param {string|string[]} protocols\n */\n constructor (url, protocols = []) {\n super()\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket constructor' })\n\n if (!experimentalWarned) {\n experimentalWarned = true\n process.emitWarning('WebSockets are experimental, expect them to change at any time.', {\n code: 'UNDICI-WS'\n })\n }\n\n const options = webidl.converters['DOMString or sequence or WebSocketInit'](protocols)\n\n url = webidl.converters.USVString(url)\n protocols = options.protocols\n\n // 1. Let baseURL be this's relevant settings object's API base URL.\n const baseURL = getGlobalOrigin()\n\n // 1. Let urlRecord be the result of applying the URL parser to url with baseURL.\n let urlRecord\n\n try {\n urlRecord = new URL(url, baseURL)\n } catch (e) {\n // 3. If urlRecord is failure, then throw a \"SyntaxError\" DOMException.\n throw new DOMException(e, 'SyntaxError')\n }\n\n // 4. If urlRecord’s scheme is \"http\", then set urlRecord’s scheme to \"ws\".\n if (urlRecord.protocol === 'http:') {\n urlRecord.protocol = 'ws:'\n } else if (urlRecord.protocol === 'https:') {\n // 5. Otherwise, if urlRecord’s scheme is \"https\", set urlRecord’s scheme to \"wss\".\n urlRecord.protocol = 'wss:'\n }\n\n // 6. If urlRecord’s scheme is not \"ws\" or \"wss\", then throw a \"SyntaxError\" DOMException.\n if (urlRecord.protocol !== 'ws:' && urlRecord.protocol !== 'wss:') {\n throw new DOMException(\n `Expected a ws: or wss: protocol, got ${urlRecord.protocol}`,\n 'SyntaxError'\n )\n }\n\n // 7. If urlRecord’s fragment is non-null, then throw a \"SyntaxError\"\n // DOMException.\n if (urlRecord.hash || urlRecord.href.endsWith('#')) {\n throw new DOMException('Got fragment', 'SyntaxError')\n }\n\n // 8. If protocols is a string, set protocols to a sequence consisting\n // of just that string.\n if (typeof protocols === 'string') {\n protocols = [protocols]\n }\n\n // 9. If any of the values in protocols occur more than once or otherwise\n // fail to match the requirements for elements that comprise the value\n // of `Sec-WebSocket-Protocol` fields as defined by The WebSocket\n // protocol, then throw a \"SyntaxError\" DOMException.\n if (protocols.length !== new Set(protocols.map(p => p.toLowerCase())).size) {\n throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')\n }\n\n if (protocols.length > 0 && !protocols.every(p => isValidSubprotocol(p))) {\n throw new DOMException('Invalid Sec-WebSocket-Protocol value', 'SyntaxError')\n }\n\n // 10. Set this's url to urlRecord.\n this[kWebSocketURL] = new URL(urlRecord.href)\n\n // 11. Let client be this's relevant settings object.\n\n // 12. Run this step in parallel:\n\n // 1. Establish a WebSocket connection given urlRecord, protocols,\n // and client.\n this[kController] = establishWebSocketConnection(\n urlRecord,\n protocols,\n this,\n (response) => this.#onConnectionEstablished(response),\n options\n )\n\n // Each WebSocket object has an associated ready state, which is a\n // number representing the state of the connection. Initially it must\n // be CONNECTING (0).\n this[kReadyState] = WebSocket.CONNECTING\n\n // The extensions attribute must initially return the empty string.\n\n // The protocol attribute must initially return the empty string.\n\n // Each WebSocket object has an associated binary type, which is a\n // BinaryType. Initially it must be \"blob\".\n this[kBinaryType] = 'blob'\n }\n\n /**\n * @see https://websockets.spec.whatwg.org/#dom-websocket-close\n * @param {number|undefined} code\n * @param {string|undefined} reason\n */\n close (code = undefined, reason = undefined) {\n webidl.brandCheck(this, WebSocket)\n\n if (code !== undefined) {\n code = webidl.converters['unsigned short'](code, { clamp: true })\n }\n\n if (reason !== undefined) {\n reason = webidl.converters.USVString(reason)\n }\n\n // 1. If code is present, but is neither an integer equal to 1000 nor an\n // integer in the range 3000 to 4999, inclusive, throw an\n // \"InvalidAccessError\" DOMException.\n if (code !== undefined) {\n if (code !== 1000 && (code < 3000 || code > 4999)) {\n throw new DOMException('invalid code', 'InvalidAccessError')\n }\n }\n\n let reasonByteLength = 0\n\n // 2. If reason is present, then run these substeps:\n if (reason !== undefined) {\n // 1. Let reasonBytes be the result of encoding reason.\n // 2. If reasonBytes is longer than 123 bytes, then throw a\n // \"SyntaxError\" DOMException.\n reasonByteLength = Buffer.byteLength(reason)\n\n if (reasonByteLength > 123) {\n throw new DOMException(\n `Reason must be less than 123 bytes; received ${reasonByteLength}`,\n 'SyntaxError'\n )\n }\n }\n\n // 3. Run the first matching steps from the following list:\n if (this[kReadyState] === WebSocket.CLOSING || this[kReadyState] === WebSocket.CLOSED) {\n // If this's ready state is CLOSING (2) or CLOSED (3)\n // Do nothing.\n } else if (!isEstablished(this)) {\n // If the WebSocket connection is not yet established\n // Fail the WebSocket connection and set this's ready state\n // to CLOSING (2).\n failWebsocketConnection(this, 'Connection was closed before it was established.')\n this[kReadyState] = WebSocket.CLOSING\n } else if (!isClosing(this)) {\n // If the WebSocket closing handshake has not yet been started\n // Start the WebSocket closing handshake and set this's ready\n // state to CLOSING (2).\n // - If neither code nor reason is present, the WebSocket Close\n // message must not have a body.\n // - If code is present, then the status code to use in the\n // WebSocket Close message must be the integer given by code.\n // - If reason is also present, then reasonBytes must be\n // provided in the Close message after the status code.\n\n const frame = new WebsocketFrameSend()\n\n // If neither code nor reason is present, the WebSocket Close\n // message must not have a body.\n\n // If code is present, then the status code to use in the\n // WebSocket Close message must be the integer given by code.\n if (code !== undefined && reason === undefined) {\n frame.frameData = Buffer.allocUnsafe(2)\n frame.frameData.writeUInt16BE(code, 0)\n } else if (code !== undefined && reason !== undefined) {\n // If reason is also present, then reasonBytes must be\n // provided in the Close message after the status code.\n frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength)\n frame.frameData.writeUInt16BE(code, 0)\n // the body MAY contain UTF-8-encoded data with value /reason/\n frame.frameData.write(reason, 2, 'utf-8')\n } else {\n frame.frameData = emptyBuffer\n }\n\n /** @type {import('stream').Duplex} */\n const socket = this[kResponse].socket\n\n socket.write(frame.createFrame(opcodes.CLOSE), (err) => {\n if (!err) {\n this[kSentClose] = true\n }\n })\n\n // Upon either sending or receiving a Close control frame, it is said\n // that _The WebSocket Closing Handshake is Started_ and that the\n // WebSocket connection is in the CLOSING state.\n this[kReadyState] = states.CLOSING\n } else {\n // Otherwise\n // Set this's ready state to CLOSING (2).\n this[kReadyState] = WebSocket.CLOSING\n }\n }\n\n /**\n * @see https://websockets.spec.whatwg.org/#dom-websocket-send\n * @param {NodeJS.TypedArray|ArrayBuffer|Blob|string} data\n */\n send (data) {\n webidl.brandCheck(this, WebSocket)\n\n webidl.argumentLengthCheck(arguments, 1, { header: 'WebSocket.send' })\n\n data = webidl.converters.WebSocketSendData(data)\n\n // 1. If this's ready state is CONNECTING, then throw an\n // \"InvalidStateError\" DOMException.\n if (this[kReadyState] === WebSocket.CONNECTING) {\n throw new DOMException('Sent before connected.', 'InvalidStateError')\n }\n\n // 2. Run the appropriate set of steps from the following list:\n // https://datatracker.ietf.org/doc/html/rfc6455#section-6.1\n // https://datatracker.ietf.org/doc/html/rfc6455#section-5.2\n\n if (!isEstablished(this) || isClosing(this)) {\n return\n }\n\n /** @type {import('stream').Duplex} */\n const socket = this[kResponse].socket\n\n // If data is a string\n if (typeof data === 'string') {\n // If the WebSocket connection is established and the WebSocket\n // closing handshake has not yet started, then the user agent\n // must send a WebSocket Message comprised of the data argument\n // using a text frame opcode; if the data cannot be sent, e.g.\n // because it would need to be buffered but the buffer is full,\n // the user agent must flag the WebSocket as full and then close\n // the WebSocket connection. Any invocation of this method with a\n // string argument that does not throw an exception must increase\n // the bufferedAmount attribute by the number of bytes needed to\n // express the argument as UTF-8.\n\n const value = Buffer.from(data)\n const frame = new WebsocketFrameSend(value)\n const buffer = frame.createFrame(opcodes.TEXT)\n\n this.#bufferedAmount += value.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= value.byteLength\n })\n } else if (types.isArrayBuffer(data)) {\n // If the WebSocket connection is established, and the WebSocket\n // closing handshake has not yet started, then the user agent must\n // send a WebSocket Message comprised of data using a binary frame\n // opcode; if the data cannot be sent, e.g. because it would need\n // to be buffered but the buffer is full, the user agent must flag\n // the WebSocket as full and then close the WebSocket connection.\n // The data to be sent is the data stored in the buffer described\n // by the ArrayBuffer object. Any invocation of this method with an\n // ArrayBuffer argument that does not throw an exception must\n // increase the bufferedAmount attribute by the length of the\n // ArrayBuffer in bytes.\n\n const value = Buffer.from(data)\n const frame = new WebsocketFrameSend(value)\n const buffer = frame.createFrame(opcodes.BINARY)\n\n this.#bufferedAmount += value.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= value.byteLength\n })\n } else if (ArrayBuffer.isView(data)) {\n // If the WebSocket connection is established, and the WebSocket\n // closing handshake has not yet started, then the user agent must\n // send a WebSocket Message comprised of data using a binary frame\n // opcode; if the data cannot be sent, e.g. because it would need to\n // be buffered but the buffer is full, the user agent must flag the\n // WebSocket as full and then close the WebSocket connection. The\n // data to be sent is the data stored in the section of the buffer\n // described by the ArrayBuffer object that data references. Any\n // invocation of this method with this kind of argument that does\n // not throw an exception must increase the bufferedAmount attribute\n // by the length of data’s buffer in bytes.\n\n const ab = Buffer.from(data, data.byteOffset, data.byteLength)\n\n const frame = new WebsocketFrameSend(ab)\n const buffer = frame.createFrame(opcodes.BINARY)\n\n this.#bufferedAmount += ab.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= ab.byteLength\n })\n } else if (isBlobLike(data)) {\n // If the WebSocket connection is established, and the WebSocket\n // closing handshake has not yet started, then the user agent must\n // send a WebSocket Message comprised of data using a binary frame\n // opcode; if the data cannot be sent, e.g. because it would need to\n // be buffered but the buffer is full, the user agent must flag the\n // WebSocket as full and then close the WebSocket connection. The data\n // to be sent is the raw data represented by the Blob object. Any\n // invocation of this method with a Blob argument that does not throw\n // an exception must increase the bufferedAmount attribute by the size\n // of the Blob object’s raw data, in bytes.\n\n const frame = new WebsocketFrameSend()\n\n data.arrayBuffer().then((ab) => {\n const value = Buffer.from(ab)\n frame.frameData = value\n const buffer = frame.createFrame(opcodes.BINARY)\n\n this.#bufferedAmount += value.byteLength\n socket.write(buffer, () => {\n this.#bufferedAmount -= value.byteLength\n })\n })\n }\n }\n\n get readyState () {\n webidl.brandCheck(this, WebSocket)\n\n // The readyState getter steps are to return this's ready state.\n return this[kReadyState]\n }\n\n get bufferedAmount () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#bufferedAmount\n }\n\n get url () {\n webidl.brandCheck(this, WebSocket)\n\n // The url getter steps are to return this's url, serialized.\n return URLSerializer(this[kWebSocketURL])\n }\n\n get extensions () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#extensions\n }\n\n get protocol () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#protocol\n }\n\n get onopen () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.open\n }\n\n set onopen (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.open) {\n this.removeEventListener('open', this.#events.open)\n }\n\n if (typeof fn === 'function') {\n this.#events.open = fn\n this.addEventListener('open', fn)\n } else {\n this.#events.open = null\n }\n }\n\n get onerror () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.error\n }\n\n set onerror (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.error) {\n this.removeEventListener('error', this.#events.error)\n }\n\n if (typeof fn === 'function') {\n this.#events.error = fn\n this.addEventListener('error', fn)\n } else {\n this.#events.error = null\n }\n }\n\n get onclose () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.close\n }\n\n set onclose (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.close) {\n this.removeEventListener('close', this.#events.close)\n }\n\n if (typeof fn === 'function') {\n this.#events.close = fn\n this.addEventListener('close', fn)\n } else {\n this.#events.close = null\n }\n }\n\n get onmessage () {\n webidl.brandCheck(this, WebSocket)\n\n return this.#events.message\n }\n\n set onmessage (fn) {\n webidl.brandCheck(this, WebSocket)\n\n if (this.#events.message) {\n this.removeEventListener('message', this.#events.message)\n }\n\n if (typeof fn === 'function') {\n this.#events.message = fn\n this.addEventListener('message', fn)\n } else {\n this.#events.message = null\n }\n }\n\n get binaryType () {\n webidl.brandCheck(this, WebSocket)\n\n return this[kBinaryType]\n }\n\n set binaryType (type) {\n webidl.brandCheck(this, WebSocket)\n\n if (type !== 'blob' && type !== 'arraybuffer') {\n this[kBinaryType] = 'blob'\n } else {\n this[kBinaryType] = type\n }\n }\n\n /**\n * @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol\n */\n #onConnectionEstablished (response) {\n // processResponse is called when the \"response’s header list has been received and initialized.\"\n // once this happens, the connection is open\n this[kResponse] = response\n\n const parser = new ByteParser(this)\n parser.on('drain', function onParserDrain () {\n this.ws[kResponse].socket.resume()\n })\n\n response.socket.ws = this\n this[kByteParser] = parser\n\n // 1. Change the ready state to OPEN (1).\n this[kReadyState] = states.OPEN\n\n // 2. Change the extensions attribute’s value to the extensions in use, if\n // it is not the null value.\n // https://datatracker.ietf.org/doc/html/rfc6455#section-9.1\n const extensions = response.headersList.get('sec-websocket-extensions')\n\n if (extensions !== null) {\n this.#extensions = extensions\n }\n\n // 3. Change the protocol attribute’s value to the subprotocol in use, if\n // it is not the null value.\n // https://datatracker.ietf.org/doc/html/rfc6455#section-1.9\n const protocol = response.headersList.get('sec-websocket-protocol')\n\n if (protocol !== null) {\n this.#protocol = protocol\n }\n\n // 4. Fire an event named open at the WebSocket object.\n fireEvent('open', this)\n }\n}\n\n// https://websockets.spec.whatwg.org/#dom-websocket-connecting\nWebSocket.CONNECTING = WebSocket.prototype.CONNECTING = states.CONNECTING\n// https://websockets.spec.whatwg.org/#dom-websocket-open\nWebSocket.OPEN = WebSocket.prototype.OPEN = states.OPEN\n// https://websockets.spec.whatwg.org/#dom-websocket-closing\nWebSocket.CLOSING = WebSocket.prototype.CLOSING = states.CLOSING\n// https://websockets.spec.whatwg.org/#dom-websocket-closed\nWebSocket.CLOSED = WebSocket.prototype.CLOSED = states.CLOSED\n\nObject.defineProperties(WebSocket.prototype, {\n CONNECTING: staticPropertyDescriptors,\n OPEN: staticPropertyDescriptors,\n CLOSING: staticPropertyDescriptors,\n CLOSED: staticPropertyDescriptors,\n url: kEnumerableProperty,\n readyState: kEnumerableProperty,\n bufferedAmount: kEnumerableProperty,\n onopen: kEnumerableProperty,\n onerror: kEnumerableProperty,\n onclose: kEnumerableProperty,\n close: kEnumerableProperty,\n onmessage: kEnumerableProperty,\n binaryType: kEnumerableProperty,\n send: kEnumerableProperty,\n extensions: kEnumerableProperty,\n protocol: kEnumerableProperty,\n [Symbol.toStringTag]: {\n value: 'WebSocket',\n writable: false,\n enumerable: false,\n configurable: true\n }\n})\n\nObject.defineProperties(WebSocket, {\n CONNECTING: staticPropertyDescriptors,\n OPEN: staticPropertyDescriptors,\n CLOSING: staticPropertyDescriptors,\n CLOSED: staticPropertyDescriptors\n})\n\nwebidl.converters['sequence'] = webidl.sequenceConverter(\n webidl.converters.DOMString\n)\n\nwebidl.converters['DOMString or sequence'] = function (V) {\n if (webidl.util.Type(V) === 'Object' && Symbol.iterator in V) {\n return webidl.converters['sequence'](V)\n }\n\n return webidl.converters.DOMString(V)\n}\n\n// This implements the propsal made in https://github.com/whatwg/websockets/issues/42\nwebidl.converters.WebSocketInit = webidl.dictionaryConverter([\n {\n key: 'protocols',\n converter: webidl.converters['DOMString or sequence'],\n get defaultValue () {\n return []\n }\n },\n {\n key: 'dispatcher',\n converter: (V) => V,\n get defaultValue () {\n return getGlobalDispatcher()\n }\n },\n {\n key: 'headers',\n converter: webidl.nullableConverter(webidl.converters.HeadersInit)\n }\n])\n\nwebidl.converters['DOMString or sequence or WebSocketInit'] = function (V) {\n if (webidl.util.Type(V) === 'Object' && !(Symbol.iterator in V)) {\n return webidl.converters.WebSocketInit(V)\n }\n\n return { protocols: webidl.converters['DOMString or sequence'](V) }\n}\n\nwebidl.converters.WebSocketSendData = function (V) {\n if (webidl.util.Type(V) === 'Object') {\n if (isBlobLike(V)) {\n return webidl.converters.Blob(V, { strict: false })\n }\n\n if (ArrayBuffer.isView(V) || types.isAnyArrayBuffer(V)) {\n return webidl.converters.BufferSource(V)\n }\n }\n\n return webidl.converters.USVString(V)\n}\n\nmodule.exports = {\n WebSocket\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction getUserAgent() {\n if (typeof navigator === \"object\" && \"userAgent\" in navigator) {\n return navigator.userAgent;\n }\n\n if (typeof process === \"object\" && process.version !== undefined) {\n return `Node.js/${process.version.substr(1)} (${process.platform}; ${process.arch})`;\n }\n\n return \"\";\n}\n\nexports.getUserAgent = getUserAgent;\n//# sourceMappingURL=index.js.map\n","'use strict'\n\nexports.fromCallback = function (fn) {\n return Object.defineProperty(function (...args) {\n if (typeof args[args.length - 1] === 'function') fn.apply(this, args)\n else {\n return new Promise((resolve, reject) => {\n args.push((err, res) => (err != null) ? reject(err) : resolve(res))\n fn.apply(this, args)\n })\n }\n }, 'name', { value: fn.name })\n}\n\nexports.fromPromise = function (fn) {\n return Object.defineProperty(function (...args) {\n const cb = args[args.length - 1]\n if (typeof cb !== 'function') return fn.apply(this, args)\n else {\n args.pop()\n fn.apply(this, args).then(r => cb(null, r), cb)\n }\n }, 'name', { value: fn.name })\n}\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function () {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function () {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function () {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function () {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function () {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function () {\n return _version.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function () {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function () {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function () {\n return _parse.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction md5(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('md5').update(bytes).digest();\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst rnds8Pool = new Uint8Array(256); // # of random values to pre-allocate\n\nlet poolPtr = rnds8Pool.length;\n\nfunction rng() {\n if (poolPtr > rnds8Pool.length - 16) {\n _crypto.default.randomFillSync(rnds8Pool);\n\n poolPtr = 0;\n }\n\n return rnds8Pool.slice(poolPtr, poolPtr += 16);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _crypto = _interopRequireDefault(require(\"crypto\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction sha1(bytes) {\n if (Array.isArray(bytes)) {\n bytes = Buffer.from(bytes);\n } else if (typeof bytes === 'string') {\n bytes = Buffer.from(bytes, 'utf8');\n }\n\n return _crypto.default.createHash('sha1').update(bytes).digest();\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).substr(1));\n}\n\nfunction stringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n const uuid = (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase(); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.default)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _default;\nexports.URL = exports.DNS = void 0;\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction _default(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (namespace.length !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.default)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.default)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.substr(14, 1), 16);\n}\n\nvar _default = version;\nexports.default = _default;","// Returns a wrapper function that returns a wrapped callback\n// The wrapper function should do some stuff, and return a\n// presumably different callback function.\n// This makes sure that own properties are retained, so that\n// decorations and such are not lost along the way.\nmodule.exports = wrappy\nfunction wrappy (fn, cb) {\n if (fn && cb) return wrappy(fn)(cb)\n\n if (typeof fn !== 'function')\n throw new TypeError('need wrapper function')\n\n Object.keys(fn).forEach(function (k) {\n wrapper[k] = fn[k]\n })\n\n return wrapper\n\n function wrapper() {\n var args = new Array(arguments.length)\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i]\n }\n var ret = fn.apply(this, args)\n var cb = args[args.length-1]\n if (typeof ret === 'function' && ret !== cb) {\n Object.keys(cb).forEach(function (k) {\n ret[k] = cb[k]\n })\n }\n return ret\n }\n}\n","module.exports = require(\"assert\");","module.exports = require(\"async_hooks\");","module.exports = require(\"buffer\");","module.exports = require(\"child_process\");","module.exports = require(\"console\");","module.exports = require(\"constants\");","module.exports = require(\"crypto\");","module.exports = require(\"diagnostics_channel\");","module.exports = require(\"events\");","module.exports = require(\"fs\");","module.exports = require(\"fs/promises\");","module.exports = require(\"http\");","module.exports = require(\"http2\");","module.exports = require(\"https\");","module.exports = require(\"net\");","module.exports = require(\"node:events\");","module.exports = require(\"node:fs\");","module.exports = require(\"node:path\");","module.exports = require(\"node:stream\");","module.exports = require(\"node:util\");","module.exports = require(\"node:zlib\");","module.exports = require(\"os\");","module.exports = require(\"path\");","module.exports = require(\"perf_hooks\");","module.exports = require(\"process\");","module.exports = require(\"querystring\");","module.exports = require(\"stream\");","module.exports = require(\"stream/web\");","module.exports = require(\"string_decoder\");","module.exports = require(\"tls\");","module.exports = require(\"tty\");","module.exports = require(\"url\");","module.exports = require(\"util\");","module.exports = require(\"util/types\");","module.exports = require(\"worker_threads\");","module.exports = require(\"zlib\");","'use strict'\n\nconst WritableStream = require('node:stream').Writable\nconst inherits = require('node:util').inherits\n\nconst StreamSearch = require('../../streamsearch/sbmh')\n\nconst PartStream = require('./PartStream')\nconst HeaderParser = require('./HeaderParser')\n\nconst DASH = 45\nconst B_ONEDASH = Buffer.from('-')\nconst B_CRLF = Buffer.from('\\r\\n')\nconst EMPTY_FN = function () {}\n\nfunction Dicer (cfg) {\n if (!(this instanceof Dicer)) { return new Dicer(cfg) }\n WritableStream.call(this, cfg)\n\n if (!cfg || (!cfg.headerFirst && typeof cfg.boundary !== 'string')) { throw new TypeError('Boundary required') }\n\n if (typeof cfg.boundary === 'string') { this.setBoundary(cfg.boundary) } else { this._bparser = undefined }\n\n this._headerFirst = cfg.headerFirst\n\n this._dashes = 0\n this._parts = 0\n this._finished = false\n this._realFinish = false\n this._isPreamble = true\n this._justMatched = false\n this._firstWrite = true\n this._inHeader = true\n this._part = undefined\n this._cb = undefined\n this._ignoreData = false\n this._partOpts = { highWaterMark: cfg.partHwm }\n this._pause = false\n\n const self = this\n this._hparser = new HeaderParser(cfg)\n this._hparser.on('header', function (header) {\n self._inHeader = false\n self._part.emit('header', header)\n })\n}\ninherits(Dicer, WritableStream)\n\nDicer.prototype.emit = function (ev) {\n if (ev === 'finish' && !this._realFinish) {\n if (!this._finished) {\n const self = this\n process.nextTick(function () {\n self.emit('error', new Error('Unexpected end of multipart data'))\n if (self._part && !self._ignoreData) {\n const type = (self._isPreamble ? 'Preamble' : 'Part')\n self._part.emit('error', new Error(type + ' terminated early due to unexpected end of multipart data'))\n self._part.push(null)\n process.nextTick(function () {\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n })\n return\n }\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n })\n }\n } else { WritableStream.prototype.emit.apply(this, arguments) }\n}\n\nDicer.prototype._write = function (data, encoding, cb) {\n // ignore unexpected data (e.g. extra trailer data after finished)\n if (!this._hparser && !this._bparser) { return cb() }\n\n if (this._headerFirst && this._isPreamble) {\n if (!this._part) {\n this._part = new PartStream(this._partOpts)\n if (this.listenerCount('preamble') !== 0) { this.emit('preamble', this._part) } else { this._ignore() }\n }\n const r = this._hparser.push(data)\n if (!this._inHeader && r !== undefined && r < data.length) { data = data.slice(r) } else { return cb() }\n }\n\n // allows for \"easier\" testing\n if (this._firstWrite) {\n this._bparser.push(B_CRLF)\n this._firstWrite = false\n }\n\n this._bparser.push(data)\n\n if (this._pause) { this._cb = cb } else { cb() }\n}\n\nDicer.prototype.reset = function () {\n this._part = undefined\n this._bparser = undefined\n this._hparser = undefined\n}\n\nDicer.prototype.setBoundary = function (boundary) {\n const self = this\n this._bparser = new StreamSearch('\\r\\n--' + boundary)\n this._bparser.on('info', function (isMatch, data, start, end) {\n self._oninfo(isMatch, data, start, end)\n })\n}\n\nDicer.prototype._ignore = function () {\n if (this._part && !this._ignoreData) {\n this._ignoreData = true\n this._part.on('error', EMPTY_FN)\n // we must perform some kind of read on the stream even though we are\n // ignoring the data, otherwise node's Readable stream will not emit 'end'\n // after pushing null to the stream\n this._part.resume()\n }\n}\n\nDicer.prototype._oninfo = function (isMatch, data, start, end) {\n let buf; const self = this; let i = 0; let r; let shouldWriteMore = true\n\n if (!this._part && this._justMatched && data) {\n while (this._dashes < 2 && (start + i) < end) {\n if (data[start + i] === DASH) {\n ++i\n ++this._dashes\n } else {\n if (this._dashes) { buf = B_ONEDASH }\n this._dashes = 0\n break\n }\n }\n if (this._dashes === 2) {\n if ((start + i) < end && this.listenerCount('trailer') !== 0) { this.emit('trailer', data.slice(start + i, end)) }\n this.reset()\n this._finished = true\n // no more parts will be added\n if (self._parts === 0) {\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n }\n }\n if (this._dashes) { return }\n }\n if (this._justMatched) { this._justMatched = false }\n if (!this._part) {\n this._part = new PartStream(this._partOpts)\n this._part._read = function (n) {\n self._unpause()\n }\n if (this._isPreamble && this.listenerCount('preamble') !== 0) {\n this.emit('preamble', this._part)\n } else if (this._isPreamble !== true && this.listenerCount('part') !== 0) {\n this.emit('part', this._part)\n } else {\n this._ignore()\n }\n if (!this._isPreamble) { this._inHeader = true }\n }\n if (data && start < end && !this._ignoreData) {\n if (this._isPreamble || !this._inHeader) {\n if (buf) { shouldWriteMore = this._part.push(buf) }\n shouldWriteMore = this._part.push(data.slice(start, end))\n if (!shouldWriteMore) { this._pause = true }\n } else if (!this._isPreamble && this._inHeader) {\n if (buf) { this._hparser.push(buf) }\n r = this._hparser.push(data.slice(start, end))\n if (!this._inHeader && r !== undefined && r < end) { this._oninfo(false, data, start + r, end) }\n }\n }\n if (isMatch) {\n this._hparser.reset()\n if (this._isPreamble) { this._isPreamble = false } else {\n if (start !== end) {\n ++this._parts\n this._part.on('end', function () {\n if (--self._parts === 0) {\n if (self._finished) {\n self._realFinish = true\n self.emit('finish')\n self._realFinish = false\n } else {\n self._unpause()\n }\n }\n })\n }\n }\n this._part.push(null)\n this._part = undefined\n this._ignoreData = false\n this._justMatched = true\n this._dashes = 0\n }\n}\n\nDicer.prototype._unpause = function () {\n if (!this._pause) { return }\n\n this._pause = false\n if (this._cb) {\n const cb = this._cb\n this._cb = undefined\n cb()\n }\n}\n\nmodule.exports = Dicer\n","'use strict'\n\nconst EventEmitter = require('node:events').EventEmitter\nconst inherits = require('node:util').inherits\nconst getLimit = require('../../../lib/utils/getLimit')\n\nconst StreamSearch = require('../../streamsearch/sbmh')\n\nconst B_DCRLF = Buffer.from('\\r\\n\\r\\n')\nconst RE_CRLF = /\\r\\n/g\nconst RE_HDR = /^([^:]+):[ \\t]?([\\x00-\\xFF]+)?$/ // eslint-disable-line no-control-regex\n\nfunction HeaderParser (cfg) {\n EventEmitter.call(this)\n\n cfg = cfg || {}\n const self = this\n this.nread = 0\n this.maxed = false\n this.npairs = 0\n this.maxHeaderPairs = getLimit(cfg, 'maxHeaderPairs', 2000)\n this.maxHeaderSize = getLimit(cfg, 'maxHeaderSize', 80 * 1024)\n this.buffer = ''\n this.header = {}\n this.finished = false\n this.ss = new StreamSearch(B_DCRLF)\n this.ss.on('info', function (isMatch, data, start, end) {\n if (data && !self.maxed) {\n if (self.nread + end - start >= self.maxHeaderSize) {\n end = self.maxHeaderSize - self.nread + start\n self.nread = self.maxHeaderSize\n self.maxed = true\n } else { self.nread += (end - start) }\n\n self.buffer += data.toString('binary', start, end)\n }\n if (isMatch) { self._finish() }\n })\n}\ninherits(HeaderParser, EventEmitter)\n\nHeaderParser.prototype.push = function (data) {\n const r = this.ss.push(data)\n if (this.finished) { return r }\n}\n\nHeaderParser.prototype.reset = function () {\n this.finished = false\n this.buffer = ''\n this.header = {}\n this.ss.reset()\n}\n\nHeaderParser.prototype._finish = function () {\n if (this.buffer) { this._parseHeader() }\n this.ss.matches = this.ss.maxMatches\n const header = this.header\n this.header = {}\n this.buffer = ''\n this.finished = true\n this.nread = this.npairs = 0\n this.maxed = false\n this.emit('header', header)\n}\n\nHeaderParser.prototype._parseHeader = function () {\n if (this.npairs === this.maxHeaderPairs) { return }\n\n const lines = this.buffer.split(RE_CRLF)\n const len = lines.length\n let m, h\n\n for (var i = 0; i < len; ++i) { // eslint-disable-line no-var\n if (lines[i].length === 0) { continue }\n if (lines[i][0] === '\\t' || lines[i][0] === ' ') {\n // folded header content\n // RFC2822 says to just remove the CRLF and not the whitespace following\n // it, so we follow the RFC and include the leading whitespace ...\n if (h) {\n this.header[h][this.header[h].length - 1] += lines[i]\n continue\n }\n }\n\n const posColon = lines[i].indexOf(':')\n if (\n posColon === -1 ||\n posColon === 0\n ) {\n return\n }\n m = RE_HDR.exec(lines[i])\n h = m[1].toLowerCase()\n this.header[h] = this.header[h] || []\n this.header[h].push((m[2] || ''))\n if (++this.npairs === this.maxHeaderPairs) { break }\n }\n}\n\nmodule.exports = HeaderParser\n","'use strict'\n\nconst inherits = require('node:util').inherits\nconst ReadableStream = require('node:stream').Readable\n\nfunction PartStream (opts) {\n ReadableStream.call(this, opts)\n}\ninherits(PartStream, ReadableStream)\n\nPartStream.prototype._read = function (n) {}\n\nmodule.exports = PartStream\n","'use strict'\n\n/**\n * Copyright Brian White. All rights reserved.\n *\n * @see https://github.com/mscdex/streamsearch\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n *\n * Based heavily on the Streaming Boyer-Moore-Horspool C++ implementation\n * by Hongli Lai at: https://github.com/FooBarWidget/boyer-moore-horspool\n */\nconst EventEmitter = require('node:events').EventEmitter\nconst inherits = require('node:util').inherits\n\nfunction SBMH (needle) {\n if (typeof needle === 'string') {\n needle = Buffer.from(needle)\n }\n\n if (!Buffer.isBuffer(needle)) {\n throw new TypeError('The needle has to be a String or a Buffer.')\n }\n\n const needleLength = needle.length\n\n if (needleLength === 0) {\n throw new Error('The needle cannot be an empty String/Buffer.')\n }\n\n if (needleLength > 256) {\n throw new Error('The needle cannot have a length bigger than 256.')\n }\n\n this.maxMatches = Infinity\n this.matches = 0\n\n this._occ = new Array(256)\n .fill(needleLength) // Initialize occurrence table.\n this._lookbehind_size = 0\n this._needle = needle\n this._bufpos = 0\n\n this._lookbehind = Buffer.alloc(needleLength)\n\n // Populate occurrence table with analysis of the needle,\n // ignoring last letter.\n for (var i = 0; i < needleLength - 1; ++i) { // eslint-disable-line no-var\n this._occ[needle[i]] = needleLength - 1 - i\n }\n}\ninherits(SBMH, EventEmitter)\n\nSBMH.prototype.reset = function () {\n this._lookbehind_size = 0\n this.matches = 0\n this._bufpos = 0\n}\n\nSBMH.prototype.push = function (chunk, pos) {\n if (!Buffer.isBuffer(chunk)) {\n chunk = Buffer.from(chunk, 'binary')\n }\n const chlen = chunk.length\n this._bufpos = pos || 0\n let r\n while (r !== chlen && this.matches < this.maxMatches) { r = this._sbmh_feed(chunk) }\n return r\n}\n\nSBMH.prototype._sbmh_feed = function (data) {\n const len = data.length\n const needle = this._needle\n const needleLength = needle.length\n const lastNeedleChar = needle[needleLength - 1]\n\n // Positive: points to a position in `data`\n // pos == 3 points to data[3]\n // Negative: points to a position in the lookbehind buffer\n // pos == -2 points to lookbehind[lookbehind_size - 2]\n let pos = -this._lookbehind_size\n let ch\n\n if (pos < 0) {\n // Lookbehind buffer is not empty. Perform Boyer-Moore-Horspool\n // search with character lookup code that considers both the\n // lookbehind buffer and the current round's haystack data.\n //\n // Loop until\n // there is a match.\n // or until\n // we've moved past the position that requires the\n // lookbehind buffer. In this case we switch to the\n // optimized loop.\n // or until\n // the character to look at lies outside the haystack.\n while (pos < 0 && pos <= len - needleLength) {\n ch = this._sbmh_lookup_char(data, pos + needleLength - 1)\n\n if (\n ch === lastNeedleChar &&\n this._sbmh_memcmp(data, pos, needleLength - 1)\n ) {\n this._lookbehind_size = 0\n ++this.matches\n this.emit('info', true)\n\n return (this._bufpos = pos + needleLength)\n }\n pos += this._occ[ch]\n }\n\n // No match.\n\n if (pos < 0) {\n // There's too few data for Boyer-Moore-Horspool to run,\n // so let's use a different algorithm to skip as much as\n // we can.\n // Forward pos until\n // the trailing part of lookbehind + data\n // looks like the beginning of the needle\n // or until\n // pos == 0\n while (pos < 0 && !this._sbmh_memcmp(data, pos, len - pos)) { ++pos }\n }\n\n if (pos >= 0) {\n // Discard lookbehind buffer.\n this.emit('info', false, this._lookbehind, 0, this._lookbehind_size)\n this._lookbehind_size = 0\n } else {\n // Cut off part of the lookbehind buffer that has\n // been processed and append the entire haystack\n // into it.\n const bytesToCutOff = this._lookbehind_size + pos\n if (bytesToCutOff > 0) {\n // The cut off data is guaranteed not to contain the needle.\n this.emit('info', false, this._lookbehind, 0, bytesToCutOff)\n }\n\n this._lookbehind.copy(this._lookbehind, 0, bytesToCutOff,\n this._lookbehind_size - bytesToCutOff)\n this._lookbehind_size -= bytesToCutOff\n\n data.copy(this._lookbehind, this._lookbehind_size)\n this._lookbehind_size += len\n\n this._bufpos = len\n return len\n }\n }\n\n pos += (pos >= 0) * this._bufpos\n\n // Lookbehind buffer is now empty. We only need to check if the\n // needle is in the haystack.\n if (data.indexOf(needle, pos) !== -1) {\n pos = data.indexOf(needle, pos)\n ++this.matches\n if (pos > 0) { this.emit('info', true, data, this._bufpos, pos) } else { this.emit('info', true) }\n\n return (this._bufpos = pos + needleLength)\n } else {\n pos = len - needleLength\n }\n\n // There was no match. If there's trailing haystack data that we cannot\n // match yet using the Boyer-Moore-Horspool algorithm (because the trailing\n // data is less than the needle size) then match using a modified\n // algorithm that starts matching from the beginning instead of the end.\n // Whatever trailing data is left after running this algorithm is added to\n // the lookbehind buffer.\n while (\n pos < len &&\n (\n data[pos] !== needle[0] ||\n (\n (Buffer.compare(\n data.subarray(pos, pos + len - pos),\n needle.subarray(0, len - pos)\n ) !== 0)\n )\n )\n ) {\n ++pos\n }\n if (pos < len) {\n data.copy(this._lookbehind, 0, pos, pos + (len - pos))\n this._lookbehind_size = len - pos\n }\n\n // Everything until pos is guaranteed not to contain needle data.\n if (pos > 0) { this.emit('info', false, data, this._bufpos, pos < len ? pos : len) }\n\n this._bufpos = len\n return len\n}\n\nSBMH.prototype._sbmh_lookup_char = function (data, pos) {\n return (pos < 0)\n ? this._lookbehind[this._lookbehind_size + pos]\n : data[pos]\n}\n\nSBMH.prototype._sbmh_memcmp = function (data, pos, len) {\n for (var i = 0; i < len; ++i) { // eslint-disable-line no-var\n if (this._sbmh_lookup_char(data, pos + i) !== this._needle[i]) { return false }\n }\n return true\n}\n\nmodule.exports = SBMH\n","'use strict'\n\nconst WritableStream = require('node:stream').Writable\nconst { inherits } = require('node:util')\nconst Dicer = require('../deps/dicer/lib/Dicer')\n\nconst MultipartParser = require('./types/multipart')\nconst UrlencodedParser = require('./types/urlencoded')\nconst parseParams = require('./utils/parseParams')\n\nfunction Busboy (opts) {\n if (!(this instanceof Busboy)) { return new Busboy(opts) }\n\n if (typeof opts !== 'object') {\n throw new TypeError('Busboy expected an options-Object.')\n }\n if (typeof opts.headers !== 'object') {\n throw new TypeError('Busboy expected an options-Object with headers-attribute.')\n }\n if (typeof opts.headers['content-type'] !== 'string') {\n throw new TypeError('Missing Content-Type-header.')\n }\n\n const {\n headers,\n ...streamOptions\n } = opts\n\n this.opts = {\n autoDestroy: false,\n ...streamOptions\n }\n WritableStream.call(this, this.opts)\n\n this._done = false\n this._parser = this.getParserByHeaders(headers)\n this._finished = false\n}\ninherits(Busboy, WritableStream)\n\nBusboy.prototype.emit = function (ev) {\n if (ev === 'finish') {\n if (!this._done) {\n this._parser?.end()\n return\n } else if (this._finished) {\n return\n }\n this._finished = true\n }\n WritableStream.prototype.emit.apply(this, arguments)\n}\n\nBusboy.prototype.getParserByHeaders = function (headers) {\n const parsed = parseParams(headers['content-type'])\n\n const cfg = {\n defCharset: this.opts.defCharset,\n fileHwm: this.opts.fileHwm,\n headers,\n highWaterMark: this.opts.highWaterMark,\n isPartAFile: this.opts.isPartAFile,\n limits: this.opts.limits,\n parsedConType: parsed,\n preservePath: this.opts.preservePath\n }\n\n if (MultipartParser.detect.test(parsed[0])) {\n return new MultipartParser(this, cfg)\n }\n if (UrlencodedParser.detect.test(parsed[0])) {\n return new UrlencodedParser(this, cfg)\n }\n throw new Error('Unsupported Content-Type.')\n}\n\nBusboy.prototype._write = function (chunk, encoding, cb) {\n this._parser.write(chunk, cb)\n}\n\nmodule.exports = Busboy\nmodule.exports.default = Busboy\nmodule.exports.Busboy = Busboy\n\nmodule.exports.Dicer = Dicer\n","'use strict'\n\n// TODO:\n// * support 1 nested multipart level\n// (see second multipart example here:\n// http://www.w3.org/TR/html401/interact/forms.html#didx-multipartform-data)\n// * support limits.fieldNameSize\n// -- this will require modifications to utils.parseParams\n\nconst { Readable } = require('node:stream')\nconst { inherits } = require('node:util')\n\nconst Dicer = require('../../deps/dicer/lib/Dicer')\n\nconst parseParams = require('../utils/parseParams')\nconst decodeText = require('../utils/decodeText')\nconst basename = require('../utils/basename')\nconst getLimit = require('../utils/getLimit')\n\nconst RE_BOUNDARY = /^boundary$/i\nconst RE_FIELD = /^form-data$/i\nconst RE_CHARSET = /^charset$/i\nconst RE_FILENAME = /^filename$/i\nconst RE_NAME = /^name$/i\n\nMultipart.detect = /^multipart\\/form-data/i\nfunction Multipart (boy, cfg) {\n let i\n let len\n const self = this\n let boundary\n const limits = cfg.limits\n const isPartAFile = cfg.isPartAFile || ((fieldName, contentType, fileName) => (contentType === 'application/octet-stream' || fileName !== undefined))\n const parsedConType = cfg.parsedConType || []\n const defCharset = cfg.defCharset || 'utf8'\n const preservePath = cfg.preservePath\n const fileOpts = { highWaterMark: cfg.fileHwm }\n\n for (i = 0, len = parsedConType.length; i < len; ++i) {\n if (Array.isArray(parsedConType[i]) &&\n RE_BOUNDARY.test(parsedConType[i][0])) {\n boundary = parsedConType[i][1]\n break\n }\n }\n\n function checkFinished () {\n if (nends === 0 && finished && !boy._done) {\n finished = false\n self.end()\n }\n }\n\n if (typeof boundary !== 'string') { throw new Error('Multipart: Boundary not found') }\n\n const fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024)\n const fileSizeLimit = getLimit(limits, 'fileSize', Infinity)\n const filesLimit = getLimit(limits, 'files', Infinity)\n const fieldsLimit = getLimit(limits, 'fields', Infinity)\n const partsLimit = getLimit(limits, 'parts', Infinity)\n const headerPairsLimit = getLimit(limits, 'headerPairs', 2000)\n const headerSizeLimit = getLimit(limits, 'headerSize', 80 * 1024)\n\n let nfiles = 0\n let nfields = 0\n let nends = 0\n let curFile\n let curField\n let finished = false\n\n this._needDrain = false\n this._pause = false\n this._cb = undefined\n this._nparts = 0\n this._boy = boy\n\n const parserCfg = {\n boundary,\n maxHeaderPairs: headerPairsLimit,\n maxHeaderSize: headerSizeLimit,\n partHwm: fileOpts.highWaterMark,\n highWaterMark: cfg.highWaterMark\n }\n\n this.parser = new Dicer(parserCfg)\n this.parser.on('drain', function () {\n self._needDrain = false\n if (self._cb && !self._pause) {\n const cb = self._cb\n self._cb = undefined\n cb()\n }\n }).on('part', function onPart (part) {\n if (++self._nparts > partsLimit) {\n self.parser.removeListener('part', onPart)\n self.parser.on('part', skipPart)\n boy.hitPartsLimit = true\n boy.emit('partsLimit')\n return skipPart(part)\n }\n\n // hack because streams2 _always_ doesn't emit 'end' until nextTick, so let\n // us emit 'end' early since we know the part has ended if we are already\n // seeing the next part\n if (curField) {\n const field = curField\n field.emit('end')\n field.removeAllListeners('end')\n }\n\n part.on('header', function (header) {\n let contype\n let fieldname\n let parsed\n let charset\n let encoding\n let filename\n let nsize = 0\n\n if (header['content-type']) {\n parsed = parseParams(header['content-type'][0])\n if (parsed[0]) {\n contype = parsed[0].toLowerCase()\n for (i = 0, len = parsed.length; i < len; ++i) {\n if (RE_CHARSET.test(parsed[i][0])) {\n charset = parsed[i][1].toLowerCase()\n break\n }\n }\n }\n }\n\n if (contype === undefined) { contype = 'text/plain' }\n if (charset === undefined) { charset = defCharset }\n\n if (header['content-disposition']) {\n parsed = parseParams(header['content-disposition'][0])\n if (!RE_FIELD.test(parsed[0])) { return skipPart(part) }\n for (i = 0, len = parsed.length; i < len; ++i) {\n if (RE_NAME.test(parsed[i][0])) {\n fieldname = parsed[i][1]\n } else if (RE_FILENAME.test(parsed[i][0])) {\n filename = parsed[i][1]\n if (!preservePath) { filename = basename(filename) }\n }\n }\n } else { return skipPart(part) }\n\n if (header['content-transfer-encoding']) { encoding = header['content-transfer-encoding'][0].toLowerCase() } else { encoding = '7bit' }\n\n let onData,\n onEnd\n\n if (isPartAFile(fieldname, contype, filename)) {\n // file/binary field\n if (nfiles === filesLimit) {\n if (!boy.hitFilesLimit) {\n boy.hitFilesLimit = true\n boy.emit('filesLimit')\n }\n return skipPart(part)\n }\n\n ++nfiles\n\n if (boy.listenerCount('file') === 0) {\n self.parser._ignore()\n return\n }\n\n ++nends\n const file = new FileStream(fileOpts)\n curFile = file\n file.on('end', function () {\n --nends\n self._pause = false\n checkFinished()\n if (self._cb && !self._needDrain) {\n const cb = self._cb\n self._cb = undefined\n cb()\n }\n })\n file._read = function (n) {\n if (!self._pause) { return }\n self._pause = false\n if (self._cb && !self._needDrain) {\n const cb = self._cb\n self._cb = undefined\n cb()\n }\n }\n boy.emit('file', fieldname, file, filename, encoding, contype)\n\n onData = function (data) {\n if ((nsize += data.length) > fileSizeLimit) {\n const extralen = fileSizeLimit - nsize + data.length\n if (extralen > 0) { file.push(data.slice(0, extralen)) }\n file.truncated = true\n file.bytesRead = fileSizeLimit\n part.removeAllListeners('data')\n file.emit('limit')\n return\n } else if (!file.push(data)) { self._pause = true }\n\n file.bytesRead = nsize\n }\n\n onEnd = function () {\n curFile = undefined\n file.push(null)\n }\n } else {\n // non-file field\n if (nfields === fieldsLimit) {\n if (!boy.hitFieldsLimit) {\n boy.hitFieldsLimit = true\n boy.emit('fieldsLimit')\n }\n return skipPart(part)\n }\n\n ++nfields\n ++nends\n let buffer = ''\n let truncated = false\n curField = part\n\n onData = function (data) {\n if ((nsize += data.length) > fieldSizeLimit) {\n const extralen = (fieldSizeLimit - (nsize - data.length))\n buffer += data.toString('binary', 0, extralen)\n truncated = true\n part.removeAllListeners('data')\n } else { buffer += data.toString('binary') }\n }\n\n onEnd = function () {\n curField = undefined\n if (buffer.length) { buffer = decodeText(buffer, 'binary', charset) }\n boy.emit('field', fieldname, buffer, false, truncated, encoding, contype)\n --nends\n checkFinished()\n }\n }\n\n /* As of node@2efe4ab761666 (v0.10.29+/v0.11.14+), busboy had become\n broken. Streams2/streams3 is a huge black box of confusion, but\n somehow overriding the sync state seems to fix things again (and still\n seems to work for previous node versions).\n */\n part._readableState.sync = false\n\n part.on('data', onData)\n part.on('end', onEnd)\n }).on('error', function (err) {\n if (curFile) { curFile.emit('error', err) }\n })\n }).on('error', function (err) {\n boy.emit('error', err)\n }).on('finish', function () {\n finished = true\n checkFinished()\n })\n}\n\nMultipart.prototype.write = function (chunk, cb) {\n const r = this.parser.write(chunk)\n if (r && !this._pause) {\n cb()\n } else {\n this._needDrain = !r\n this._cb = cb\n }\n}\n\nMultipart.prototype.end = function () {\n const self = this\n\n if (self.parser.writable) {\n self.parser.end()\n } else if (!self._boy._done) {\n process.nextTick(function () {\n self._boy._done = true\n self._boy.emit('finish')\n })\n }\n}\n\nfunction skipPart (part) {\n part.resume()\n}\n\nfunction FileStream (opts) {\n Readable.call(this, opts)\n\n this.bytesRead = 0\n\n this.truncated = false\n}\n\ninherits(FileStream, Readable)\n\nFileStream.prototype._read = function (n) {}\n\nmodule.exports = Multipart\n","'use strict'\n\nconst Decoder = require('../utils/Decoder')\nconst decodeText = require('../utils/decodeText')\nconst getLimit = require('../utils/getLimit')\n\nconst RE_CHARSET = /^charset$/i\n\nUrlEncoded.detect = /^application\\/x-www-form-urlencoded/i\nfunction UrlEncoded (boy, cfg) {\n const limits = cfg.limits\n const parsedConType = cfg.parsedConType\n this.boy = boy\n\n this.fieldSizeLimit = getLimit(limits, 'fieldSize', 1 * 1024 * 1024)\n this.fieldNameSizeLimit = getLimit(limits, 'fieldNameSize', 100)\n this.fieldsLimit = getLimit(limits, 'fields', Infinity)\n\n let charset\n for (var i = 0, len = parsedConType.length; i < len; ++i) { // eslint-disable-line no-var\n if (Array.isArray(parsedConType[i]) &&\n RE_CHARSET.test(parsedConType[i][0])) {\n charset = parsedConType[i][1].toLowerCase()\n break\n }\n }\n\n if (charset === undefined) { charset = cfg.defCharset || 'utf8' }\n\n this.decoder = new Decoder()\n this.charset = charset\n this._fields = 0\n this._state = 'key'\n this._checkingBytes = true\n this._bytesKey = 0\n this._bytesVal = 0\n this._key = ''\n this._val = ''\n this._keyTrunc = false\n this._valTrunc = false\n this._hitLimit = false\n}\n\nUrlEncoded.prototype.write = function (data, cb) {\n if (this._fields === this.fieldsLimit) {\n if (!this.boy.hitFieldsLimit) {\n this.boy.hitFieldsLimit = true\n this.boy.emit('fieldsLimit')\n }\n return cb()\n }\n\n let idxeq; let idxamp; let i; let p = 0; const len = data.length\n\n while (p < len) {\n if (this._state === 'key') {\n idxeq = idxamp = undefined\n for (i = p; i < len; ++i) {\n if (!this._checkingBytes) { ++p }\n if (data[i] === 0x3D/* = */) {\n idxeq = i\n break\n } else if (data[i] === 0x26/* & */) {\n idxamp = i\n break\n }\n if (this._checkingBytes && this._bytesKey === this.fieldNameSizeLimit) {\n this._hitLimit = true\n break\n } else if (this._checkingBytes) { ++this._bytesKey }\n }\n\n if (idxeq !== undefined) {\n // key with assignment\n if (idxeq > p) { this._key += this.decoder.write(data.toString('binary', p, idxeq)) }\n this._state = 'val'\n\n this._hitLimit = false\n this._checkingBytes = true\n this._val = ''\n this._bytesVal = 0\n this._valTrunc = false\n this.decoder.reset()\n\n p = idxeq + 1\n } else if (idxamp !== undefined) {\n // key with no assignment\n ++this._fields\n let key; const keyTrunc = this._keyTrunc\n if (idxamp > p) { key = (this._key += this.decoder.write(data.toString('binary', p, idxamp))) } else { key = this._key }\n\n this._hitLimit = false\n this._checkingBytes = true\n this._key = ''\n this._bytesKey = 0\n this._keyTrunc = false\n this.decoder.reset()\n\n if (key.length) {\n this.boy.emit('field', decodeText(key, 'binary', this.charset),\n '',\n keyTrunc,\n false)\n }\n\n p = idxamp + 1\n if (this._fields === this.fieldsLimit) { return cb() }\n } else if (this._hitLimit) {\n // we may not have hit the actual limit if there are encoded bytes...\n if (i > p) { this._key += this.decoder.write(data.toString('binary', p, i)) }\n p = i\n if ((this._bytesKey = this._key.length) === this.fieldNameSizeLimit) {\n // yep, we actually did hit the limit\n this._checkingBytes = false\n this._keyTrunc = true\n }\n } else {\n if (p < len) { this._key += this.decoder.write(data.toString('binary', p)) }\n p = len\n }\n } else {\n idxamp = undefined\n for (i = p; i < len; ++i) {\n if (!this._checkingBytes) { ++p }\n if (data[i] === 0x26/* & */) {\n idxamp = i\n break\n }\n if (this._checkingBytes && this._bytesVal === this.fieldSizeLimit) {\n this._hitLimit = true\n break\n } else if (this._checkingBytes) { ++this._bytesVal }\n }\n\n if (idxamp !== undefined) {\n ++this._fields\n if (idxamp > p) { this._val += this.decoder.write(data.toString('binary', p, idxamp)) }\n this.boy.emit('field', decodeText(this._key, 'binary', this.charset),\n decodeText(this._val, 'binary', this.charset),\n this._keyTrunc,\n this._valTrunc)\n this._state = 'key'\n\n this._hitLimit = false\n this._checkingBytes = true\n this._key = ''\n this._bytesKey = 0\n this._keyTrunc = false\n this.decoder.reset()\n\n p = idxamp + 1\n if (this._fields === this.fieldsLimit) { return cb() }\n } else if (this._hitLimit) {\n // we may not have hit the actual limit if there are encoded bytes...\n if (i > p) { this._val += this.decoder.write(data.toString('binary', p, i)) }\n p = i\n if ((this._val === '' && this.fieldSizeLimit === 0) ||\n (this._bytesVal = this._val.length) === this.fieldSizeLimit) {\n // yep, we actually did hit the limit\n this._checkingBytes = false\n this._valTrunc = true\n }\n } else {\n if (p < len) { this._val += this.decoder.write(data.toString('binary', p)) }\n p = len\n }\n }\n }\n cb()\n}\n\nUrlEncoded.prototype.end = function () {\n if (this.boy._done) { return }\n\n if (this._state === 'key' && this._key.length > 0) {\n this.boy.emit('field', decodeText(this._key, 'binary', this.charset),\n '',\n this._keyTrunc,\n false)\n } else if (this._state === 'val') {\n this.boy.emit('field', decodeText(this._key, 'binary', this.charset),\n decodeText(this._val, 'binary', this.charset),\n this._keyTrunc,\n this._valTrunc)\n }\n this.boy._done = true\n this.boy.emit('finish')\n}\n\nmodule.exports = UrlEncoded\n","'use strict'\n\nconst RE_PLUS = /\\+/g\n\nconst HEX = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,\n 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0\n]\n\nfunction Decoder () {\n this.buffer = undefined\n}\nDecoder.prototype.write = function (str) {\n // Replace '+' with ' ' before decoding\n str = str.replace(RE_PLUS, ' ')\n let res = ''\n let i = 0; let p = 0; const len = str.length\n for (; i < len; ++i) {\n if (this.buffer !== undefined) {\n if (!HEX[str.charCodeAt(i)]) {\n res += '%' + this.buffer\n this.buffer = undefined\n --i // retry character\n } else {\n this.buffer += str[i]\n ++p\n if (this.buffer.length === 2) {\n res += String.fromCharCode(parseInt(this.buffer, 16))\n this.buffer = undefined\n }\n }\n } else if (str[i] === '%') {\n if (i > p) {\n res += str.substring(p, i)\n p = i\n }\n this.buffer = ''\n ++p\n }\n }\n if (p < len && this.buffer === undefined) { res += str.substring(p) }\n return res\n}\nDecoder.prototype.reset = function () {\n this.buffer = undefined\n}\n\nmodule.exports = Decoder\n","'use strict'\n\nmodule.exports = function basename (path) {\n if (typeof path !== 'string') { return '' }\n for (var i = path.length - 1; i >= 0; --i) { // eslint-disable-line no-var\n switch (path.charCodeAt(i)) {\n case 0x2F: // '/'\n case 0x5C: // '\\'\n path = path.slice(i + 1)\n return (path === '..' || path === '.' ? '' : path)\n }\n }\n return (path === '..' || path === '.' ? '' : path)\n}\n","'use strict'\n\n// Node has always utf-8\nconst utf8Decoder = new TextDecoder('utf-8')\nconst textDecoders = new Map([\n ['utf-8', utf8Decoder],\n ['utf8', utf8Decoder]\n])\n\nfunction getDecoder (charset) {\n let lc\n while (true) {\n switch (charset) {\n case 'utf-8':\n case 'utf8':\n return decoders.utf8\n case 'latin1':\n case 'ascii': // TODO: Make these a separate, strict decoder?\n case 'us-ascii':\n case 'iso-8859-1':\n case 'iso8859-1':\n case 'iso88591':\n case 'iso_8859-1':\n case 'windows-1252':\n case 'iso_8859-1:1987':\n case 'cp1252':\n case 'x-cp1252':\n return decoders.latin1\n case 'utf16le':\n case 'utf-16le':\n case 'ucs2':\n case 'ucs-2':\n return decoders.utf16le\n case 'base64':\n return decoders.base64\n default:\n if (lc === undefined) {\n lc = true\n charset = charset.toLowerCase()\n continue\n }\n return decoders.other.bind(charset)\n }\n }\n}\n\nconst decoders = {\n utf8: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n return data.utf8Slice(0, data.length)\n },\n\n latin1: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n return data\n }\n return data.latin1Slice(0, data.length)\n },\n\n utf16le: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n return data.ucs2Slice(0, data.length)\n },\n\n base64: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n return data.base64Slice(0, data.length)\n },\n\n other: (data, sourceEncoding) => {\n if (data.length === 0) {\n return ''\n }\n if (typeof data === 'string') {\n data = Buffer.from(data, sourceEncoding)\n }\n\n if (textDecoders.has(this.toString())) {\n try {\n return textDecoders.get(this).decode(data)\n } catch {}\n }\n return typeof data === 'string'\n ? data\n : data.toString()\n }\n}\n\nfunction decodeText (text, sourceEncoding, destEncoding) {\n if (text) {\n return getDecoder(destEncoding)(text, sourceEncoding)\n }\n return text\n}\n\nmodule.exports = decodeText\n","'use strict'\n\nmodule.exports = function getLimit (limits, name, defaultLimit) {\n if (\n !limits ||\n limits[name] === undefined ||\n limits[name] === null\n ) { return defaultLimit }\n\n if (\n typeof limits[name] !== 'number' ||\n isNaN(limits[name])\n ) { throw new TypeError('Limit ' + name + ' is not a valid number') }\n\n return limits[name]\n}\n","/* eslint-disable object-property-newline */\n'use strict'\n\nconst decodeText = require('./decodeText')\n\nconst RE_ENCODED = /%[a-fA-F0-9][a-fA-F0-9]/g\n\nconst EncodedLookup = {\n '%00': '\\x00', '%01': '\\x01', '%02': '\\x02', '%03': '\\x03', '%04': '\\x04',\n '%05': '\\x05', '%06': '\\x06', '%07': '\\x07', '%08': '\\x08', '%09': '\\x09',\n '%0a': '\\x0a', '%0A': '\\x0a', '%0b': '\\x0b', '%0B': '\\x0b', '%0c': '\\x0c',\n '%0C': '\\x0c', '%0d': '\\x0d', '%0D': '\\x0d', '%0e': '\\x0e', '%0E': '\\x0e',\n '%0f': '\\x0f', '%0F': '\\x0f', '%10': '\\x10', '%11': '\\x11', '%12': '\\x12',\n '%13': '\\x13', '%14': '\\x14', '%15': '\\x15', '%16': '\\x16', '%17': '\\x17',\n '%18': '\\x18', '%19': '\\x19', '%1a': '\\x1a', '%1A': '\\x1a', '%1b': '\\x1b',\n '%1B': '\\x1b', '%1c': '\\x1c', '%1C': '\\x1c', '%1d': '\\x1d', '%1D': '\\x1d',\n '%1e': '\\x1e', '%1E': '\\x1e', '%1f': '\\x1f', '%1F': '\\x1f', '%20': '\\x20',\n '%21': '\\x21', '%22': '\\x22', '%23': '\\x23', '%24': '\\x24', '%25': '\\x25',\n '%26': '\\x26', '%27': '\\x27', '%28': '\\x28', '%29': '\\x29', '%2a': '\\x2a',\n '%2A': '\\x2a', '%2b': '\\x2b', '%2B': '\\x2b', '%2c': '\\x2c', '%2C': '\\x2c',\n '%2d': '\\x2d', '%2D': '\\x2d', '%2e': '\\x2e', '%2E': '\\x2e', '%2f': '\\x2f',\n '%2F': '\\x2f', '%30': '\\x30', '%31': '\\x31', '%32': '\\x32', '%33': '\\x33',\n '%34': '\\x34', '%35': '\\x35', '%36': '\\x36', '%37': '\\x37', '%38': '\\x38',\n '%39': '\\x39', '%3a': '\\x3a', '%3A': '\\x3a', '%3b': '\\x3b', '%3B': '\\x3b',\n '%3c': '\\x3c', '%3C': '\\x3c', '%3d': '\\x3d', '%3D': '\\x3d', '%3e': '\\x3e',\n '%3E': '\\x3e', '%3f': '\\x3f', '%3F': '\\x3f', '%40': '\\x40', '%41': '\\x41',\n '%42': '\\x42', '%43': '\\x43', '%44': '\\x44', '%45': '\\x45', '%46': '\\x46',\n '%47': '\\x47', '%48': '\\x48', '%49': '\\x49', '%4a': '\\x4a', '%4A': '\\x4a',\n '%4b': '\\x4b', '%4B': '\\x4b', '%4c': '\\x4c', '%4C': '\\x4c', '%4d': '\\x4d',\n '%4D': '\\x4d', '%4e': '\\x4e', '%4E': '\\x4e', '%4f': '\\x4f', '%4F': '\\x4f',\n '%50': '\\x50', '%51': '\\x51', '%52': '\\x52', '%53': '\\x53', '%54': '\\x54',\n '%55': '\\x55', '%56': '\\x56', '%57': '\\x57', '%58': '\\x58', '%59': '\\x59',\n '%5a': '\\x5a', '%5A': '\\x5a', '%5b': '\\x5b', '%5B': '\\x5b', '%5c': '\\x5c',\n '%5C': '\\x5c', '%5d': '\\x5d', '%5D': '\\x5d', '%5e': '\\x5e', '%5E': '\\x5e',\n '%5f': '\\x5f', '%5F': '\\x5f', '%60': '\\x60', '%61': '\\x61', '%62': '\\x62',\n '%63': '\\x63', '%64': '\\x64', '%65': '\\x65', '%66': '\\x66', '%67': '\\x67',\n '%68': '\\x68', '%69': '\\x69', '%6a': '\\x6a', '%6A': '\\x6a', '%6b': '\\x6b',\n '%6B': '\\x6b', '%6c': '\\x6c', '%6C': '\\x6c', '%6d': '\\x6d', '%6D': '\\x6d',\n '%6e': '\\x6e', '%6E': '\\x6e', '%6f': '\\x6f', '%6F': '\\x6f', '%70': '\\x70',\n '%71': '\\x71', '%72': '\\x72', '%73': '\\x73', '%74': '\\x74', '%75': '\\x75',\n '%76': '\\x76', '%77': '\\x77', '%78': '\\x78', '%79': '\\x79', '%7a': '\\x7a',\n '%7A': '\\x7a', '%7b': '\\x7b', '%7B': '\\x7b', '%7c': '\\x7c', '%7C': '\\x7c',\n '%7d': '\\x7d', '%7D': '\\x7d', '%7e': '\\x7e', '%7E': '\\x7e', '%7f': '\\x7f',\n '%7F': '\\x7f', '%80': '\\x80', '%81': '\\x81', '%82': '\\x82', '%83': '\\x83',\n '%84': '\\x84', '%85': '\\x85', '%86': '\\x86', '%87': '\\x87', '%88': '\\x88',\n '%89': '\\x89', '%8a': '\\x8a', '%8A': '\\x8a', '%8b': '\\x8b', '%8B': '\\x8b',\n '%8c': '\\x8c', '%8C': '\\x8c', '%8d': '\\x8d', '%8D': '\\x8d', '%8e': '\\x8e',\n '%8E': '\\x8e', '%8f': '\\x8f', '%8F': '\\x8f', '%90': '\\x90', '%91': '\\x91',\n '%92': '\\x92', '%93': '\\x93', '%94': '\\x94', '%95': '\\x95', '%96': '\\x96',\n '%97': '\\x97', '%98': '\\x98', '%99': '\\x99', '%9a': '\\x9a', '%9A': '\\x9a',\n '%9b': '\\x9b', '%9B': '\\x9b', '%9c': '\\x9c', '%9C': '\\x9c', '%9d': '\\x9d',\n '%9D': '\\x9d', '%9e': '\\x9e', '%9E': '\\x9e', '%9f': '\\x9f', '%9F': '\\x9f',\n '%a0': '\\xa0', '%A0': '\\xa0', '%a1': '\\xa1', '%A1': '\\xa1', '%a2': '\\xa2',\n '%A2': '\\xa2', '%a3': '\\xa3', '%A3': '\\xa3', '%a4': '\\xa4', '%A4': '\\xa4',\n '%a5': '\\xa5', '%A5': '\\xa5', '%a6': '\\xa6', '%A6': '\\xa6', '%a7': '\\xa7',\n '%A7': '\\xa7', '%a8': '\\xa8', '%A8': '\\xa8', '%a9': '\\xa9', '%A9': '\\xa9',\n '%aa': '\\xaa', '%Aa': '\\xaa', '%aA': '\\xaa', '%AA': '\\xaa', '%ab': '\\xab',\n '%Ab': '\\xab', '%aB': '\\xab', '%AB': '\\xab', '%ac': '\\xac', '%Ac': '\\xac',\n '%aC': '\\xac', '%AC': '\\xac', '%ad': '\\xad', '%Ad': '\\xad', '%aD': '\\xad',\n '%AD': '\\xad', '%ae': '\\xae', '%Ae': '\\xae', '%aE': '\\xae', '%AE': '\\xae',\n '%af': '\\xaf', '%Af': '\\xaf', '%aF': '\\xaf', '%AF': '\\xaf', '%b0': '\\xb0',\n '%B0': '\\xb0', '%b1': '\\xb1', '%B1': '\\xb1', '%b2': '\\xb2', '%B2': '\\xb2',\n '%b3': '\\xb3', '%B3': '\\xb3', '%b4': '\\xb4', '%B4': '\\xb4', '%b5': '\\xb5',\n '%B5': '\\xb5', '%b6': '\\xb6', '%B6': '\\xb6', '%b7': '\\xb7', '%B7': '\\xb7',\n '%b8': '\\xb8', '%B8': '\\xb8', '%b9': '\\xb9', '%B9': '\\xb9', '%ba': '\\xba',\n '%Ba': '\\xba', '%bA': '\\xba', '%BA': '\\xba', '%bb': '\\xbb', '%Bb': '\\xbb',\n '%bB': '\\xbb', '%BB': '\\xbb', '%bc': '\\xbc', '%Bc': '\\xbc', '%bC': '\\xbc',\n '%BC': '\\xbc', '%bd': '\\xbd', '%Bd': '\\xbd', '%bD': '\\xbd', '%BD': '\\xbd',\n '%be': '\\xbe', '%Be': '\\xbe', '%bE': '\\xbe', '%BE': '\\xbe', '%bf': '\\xbf',\n '%Bf': '\\xbf', '%bF': '\\xbf', '%BF': '\\xbf', '%c0': '\\xc0', '%C0': '\\xc0',\n '%c1': '\\xc1', '%C1': '\\xc1', '%c2': '\\xc2', '%C2': '\\xc2', '%c3': '\\xc3',\n '%C3': '\\xc3', '%c4': '\\xc4', '%C4': '\\xc4', '%c5': '\\xc5', '%C5': '\\xc5',\n '%c6': '\\xc6', '%C6': '\\xc6', '%c7': '\\xc7', '%C7': '\\xc7', '%c8': '\\xc8',\n '%C8': '\\xc8', '%c9': '\\xc9', '%C9': '\\xc9', '%ca': '\\xca', '%Ca': '\\xca',\n '%cA': '\\xca', '%CA': '\\xca', '%cb': '\\xcb', '%Cb': '\\xcb', '%cB': '\\xcb',\n '%CB': '\\xcb', '%cc': '\\xcc', '%Cc': '\\xcc', '%cC': '\\xcc', '%CC': '\\xcc',\n '%cd': '\\xcd', '%Cd': '\\xcd', '%cD': '\\xcd', '%CD': '\\xcd', '%ce': '\\xce',\n '%Ce': '\\xce', '%cE': '\\xce', '%CE': '\\xce', '%cf': '\\xcf', '%Cf': '\\xcf',\n '%cF': '\\xcf', '%CF': '\\xcf', '%d0': '\\xd0', '%D0': '\\xd0', '%d1': '\\xd1',\n '%D1': '\\xd1', '%d2': '\\xd2', '%D2': '\\xd2', '%d3': '\\xd3', '%D3': '\\xd3',\n '%d4': '\\xd4', '%D4': '\\xd4', '%d5': '\\xd5', '%D5': '\\xd5', '%d6': '\\xd6',\n '%D6': '\\xd6', '%d7': '\\xd7', '%D7': '\\xd7', '%d8': '\\xd8', '%D8': '\\xd8',\n '%d9': '\\xd9', '%D9': '\\xd9', '%da': '\\xda', '%Da': '\\xda', '%dA': '\\xda',\n '%DA': '\\xda', '%db': '\\xdb', '%Db': '\\xdb', '%dB': '\\xdb', '%DB': '\\xdb',\n '%dc': '\\xdc', '%Dc': '\\xdc', '%dC': '\\xdc', '%DC': '\\xdc', '%dd': '\\xdd',\n '%Dd': '\\xdd', '%dD': '\\xdd', '%DD': '\\xdd', '%de': '\\xde', '%De': '\\xde',\n '%dE': '\\xde', '%DE': '\\xde', '%df': '\\xdf', '%Df': '\\xdf', '%dF': '\\xdf',\n '%DF': '\\xdf', '%e0': '\\xe0', '%E0': '\\xe0', '%e1': '\\xe1', '%E1': '\\xe1',\n '%e2': '\\xe2', '%E2': '\\xe2', '%e3': '\\xe3', '%E3': '\\xe3', '%e4': '\\xe4',\n '%E4': '\\xe4', '%e5': '\\xe5', '%E5': '\\xe5', '%e6': '\\xe6', '%E6': '\\xe6',\n '%e7': '\\xe7', '%E7': '\\xe7', '%e8': '\\xe8', '%E8': '\\xe8', '%e9': '\\xe9',\n '%E9': '\\xe9', '%ea': '\\xea', '%Ea': '\\xea', '%eA': '\\xea', '%EA': '\\xea',\n '%eb': '\\xeb', '%Eb': '\\xeb', '%eB': '\\xeb', '%EB': '\\xeb', '%ec': '\\xec',\n '%Ec': '\\xec', '%eC': '\\xec', '%EC': '\\xec', '%ed': '\\xed', '%Ed': '\\xed',\n '%eD': '\\xed', '%ED': '\\xed', '%ee': '\\xee', '%Ee': '\\xee', '%eE': '\\xee',\n '%EE': '\\xee', '%ef': '\\xef', '%Ef': '\\xef', '%eF': '\\xef', '%EF': '\\xef',\n '%f0': '\\xf0', '%F0': '\\xf0', '%f1': '\\xf1', '%F1': '\\xf1', '%f2': '\\xf2',\n '%F2': '\\xf2', '%f3': '\\xf3', '%F3': '\\xf3', '%f4': '\\xf4', '%F4': '\\xf4',\n '%f5': '\\xf5', '%F5': '\\xf5', '%f6': '\\xf6', '%F6': '\\xf6', '%f7': '\\xf7',\n '%F7': '\\xf7', '%f8': '\\xf8', '%F8': '\\xf8', '%f9': '\\xf9', '%F9': '\\xf9',\n '%fa': '\\xfa', '%Fa': '\\xfa', '%fA': '\\xfa', '%FA': '\\xfa', '%fb': '\\xfb',\n '%Fb': '\\xfb', '%fB': '\\xfb', '%FB': '\\xfb', '%fc': '\\xfc', '%Fc': '\\xfc',\n '%fC': '\\xfc', '%FC': '\\xfc', '%fd': '\\xfd', '%Fd': '\\xfd', '%fD': '\\xfd',\n '%FD': '\\xfd', '%fe': '\\xfe', '%Fe': '\\xfe', '%fE': '\\xfe', '%FE': '\\xfe',\n '%ff': '\\xff', '%Ff': '\\xff', '%fF': '\\xff', '%FF': '\\xff'\n}\n\nfunction encodedReplacer (match) {\n return EncodedLookup[match]\n}\n\nconst STATE_KEY = 0\nconst STATE_VALUE = 1\nconst STATE_CHARSET = 2\nconst STATE_LANG = 3\n\nfunction parseParams (str) {\n const res = []\n let state = STATE_KEY\n let charset = ''\n let inquote = false\n let escaping = false\n let p = 0\n let tmp = ''\n const len = str.length\n\n for (var i = 0; i < len; ++i) { // eslint-disable-line no-var\n const char = str[i]\n if (char === '\\\\' && inquote) {\n if (escaping) { escaping = false } else {\n escaping = true\n continue\n }\n } else if (char === '\"') {\n if (!escaping) {\n if (inquote) {\n inquote = false\n state = STATE_KEY\n } else { inquote = true }\n continue\n } else { escaping = false }\n } else {\n if (escaping && inquote) { tmp += '\\\\' }\n escaping = false\n if ((state === STATE_CHARSET || state === STATE_LANG) && char === \"'\") {\n if (state === STATE_CHARSET) {\n state = STATE_LANG\n charset = tmp.substring(1)\n } else { state = STATE_VALUE }\n tmp = ''\n continue\n } else if (state === STATE_KEY &&\n (char === '*' || char === '=') &&\n res.length) {\n state = char === '*'\n ? STATE_CHARSET\n : STATE_VALUE\n res[p] = [tmp, undefined]\n tmp = ''\n continue\n } else if (!inquote && char === ';') {\n state = STATE_KEY\n if (charset) {\n if (tmp.length) {\n tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer),\n 'binary',\n charset)\n }\n charset = ''\n } else if (tmp.length) {\n tmp = decodeText(tmp, 'binary', 'utf8')\n }\n if (res[p] === undefined) { res[p] = tmp } else { res[p][1] = tmp }\n tmp = ''\n ++p\n continue\n } else if (!inquote && (char === ' ' || char === '\\t')) { continue }\n }\n tmp += char\n }\n if (charset && tmp.length) {\n tmp = decodeText(tmp.replace(RE_ENCODED, encodedReplacer),\n 'binary',\n charset)\n } else if (tmp) {\n tmp = decodeText(tmp, 'binary', 'utf8')\n }\n\n if (res[p] === undefined) {\n if (tmp) { res[p] = tmp }\n } else { res[p][1] = tmp }\n\n return res\n}\n\nmodule.exports = parseParams\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\tvar threw = true;\n\ttry {\n\t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\t\tthrew = false;\n\t} finally {\n\t\tif(threw) delete __webpack_module_cache__[moduleId];\n\t}\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","\nif (typeof __webpack_require__ !== 'undefined') __webpack_require__.ab = __dirname + \"/\";","","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(94822);\n",""],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/package.json b/package.json index 18a6f7e..97dfd9d 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "@typescript-eslint/parser": "^6", "@vercel/ncc": "^0.38.1", "action-docs": "^1.2.0", - "aws-sdk": "^2.1608.0", + "aws-sdk": "^2.1613.0", "aws-sdk-client-mock": "^3.1.0", "constructs": "^10.0.0", "eslint": "^8", @@ -61,11 +61,11 @@ "@actions/github": "^6.0.0", "@actions/io": "^1.1.3", "@actions/tool-cache": "^2.0.0", - "@aws-cdk/cloud-assembly-schema": "2.139.0", - "@aws-cdk/cloudformation-diff": "2.139.0", - "@aws-sdk/client-cloudformation": "^3.564.0", - "@aws-sdk/client-sts": "^3.556.0", - "@aws-sdk/credential-providers": "^3.564.0", + "@aws-cdk/cloud-assembly-schema": "2.140.0", + "@aws-cdk/cloudformation-diff": "2.140.0", + "@aws-sdk/client-cloudformation": "^3.569.0", + "@aws-sdk/client-sts": "^3.569.0", + "@aws-sdk/credential-providers": "^3.569.0", "@octokit/webhooks-definitions": "^3.67.3", "@smithy/types": "^2.12.0", "chalk": "^4", diff --git a/yarn.lock b/yarn.lock index 88c02b9..b4df49f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -60,39 +60,46 @@ "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.24" -"@aws-cdk/aws-service-spec@^0.0.64": - version "0.0.64" - resolved "https://registry.yarnpkg.com/@aws-cdk/aws-service-spec/-/aws-service-spec-0.0.64.tgz#40a0eedd08b7c67d65c011ae343788528068d793" - integrity sha512-HkDYdnuegCfA4cBNjNExgrpNzbkHjbdb5nhq4Aw2NasAgECcGh0OsEoCgINqh6X4FHdCscJlwHm2cUbfHBx04Q== +"@aws-cdk/aws-service-spec@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@aws-cdk/aws-service-spec/-/aws-service-spec-0.1.1.tgz#76f264792696adcd63f4852527fd81220e1e3b70" + integrity sha512-1+GbqfWISM1jy1ILNe1/XuS/ytZ6rG3nkI1FfDe+JmGiwiA+VgseDa0v6pPf2DBUx7W2bwWpE7nRiZiM1hWWyQ== dependencies: - "@aws-cdk/service-spec-types" "^0.0.64" + "@aws-cdk/service-spec-types" "^0.0.69" "@cdklabs/tskb" "^0.0.3" -"@aws-cdk/cloud-assembly-schema@2.139.0": - version "2.139.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-2.139.0.tgz#5991e38d93672feb9e516487b4e579b3e03503e6" - integrity sha512-K3dS1zWbI45AdLR/38IOYzpHl/upfJAqE+4qUQrZuWIBu6neITTESPPX+uw5a1VVDOCrrHJ4HI419UgWRiVq7Q== +"@aws-cdk/cloud-assembly-schema@2.140.0": + version "2.140.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/cloud-assembly-schema/-/cloud-assembly-schema-2.140.0.tgz#015a03a811a0356fb57933d9e2ed07b5a8d00df2" + integrity sha512-omQoaeSInZOAcjQDH9a0iErXtig651URVxFgjCkQawh7tv2nCgFYnzvylqbPLtTDVEKlVJ1w0ezxChwZz4069A== dependencies: jsonschema "^1.4.1" semver "^7.6.0" -"@aws-cdk/cloudformation-diff@2.139.0": - version "2.139.0" - resolved "https://registry.yarnpkg.com/@aws-cdk/cloudformation-diff/-/cloudformation-diff-2.139.0.tgz#8c41da52bdaf296ab1d9810daa10fca9576f9fff" - integrity sha512-48ILTU7Zy6cX4HLhIHD4ZqE0l5aeyX1CtOeLlZLVJE8v5H2njG0KsxCt3SAWmNoeYpSZrMkt7DZ2KOce7+YbTg== +"@aws-cdk/cloudformation-diff@2.140.0": + version "2.140.0" + resolved "https://registry.yarnpkg.com/@aws-cdk/cloudformation-diff/-/cloudformation-diff-2.140.0.tgz#08cca59a13f9f98c87ca75ffc2be99b19fcc6a96" + integrity sha512-7i81vF4IQIv4FDJuTd/W/eNXIoieewdeeffmWXJ7bVJ7z+npzgRTO6kPA1VN/P+PBiO0KaNwzRo0D+pib9ALJQ== dependencies: - "@aws-cdk/aws-service-spec" "^0.0.64" - "@aws-cdk/service-spec-types" "^0.0.64" + "@aws-cdk/aws-service-spec" "^0.1.0" + "@aws-cdk/service-spec-types" "^0.0.68" chalk "^4" diff "^5.2.0" fast-deep-equal "^3.1.3" string-width "^4.2.3" table "^6.8.2" -"@aws-cdk/service-spec-types@^0.0.64": - version "0.0.64" - resolved "https://registry.yarnpkg.com/@aws-cdk/service-spec-types/-/service-spec-types-0.0.64.tgz#c8be9e9099b8c3eb538b4ca3656777edb50b0128" - integrity sha512-YHu/KekOAmptELaruTfggwLHIxWKP/I+JY+z/YNG5Vww/hiqLAUnHKa2AesmxEv9q8fiKb1UGtdLd5aO+iXOCw== +"@aws-cdk/service-spec-types@^0.0.68": + version "0.0.68" + resolved "https://registry.yarnpkg.com/@aws-cdk/service-spec-types/-/service-spec-types-0.0.68.tgz#47928f4863f37a8b1ac8af5fef83ffb370e863b3" + integrity sha512-3dmOwwoWenNF6rcLWMnWVqx0mG+f26Tkyurc8lzFIaBecNzQCoNlw8O/TXg4OsdOfiRiNt1U6UJ7C1ZaSEd/rA== + dependencies: + "@cdklabs/tskb" "^0.0.3" + +"@aws-cdk/service-spec-types@^0.0.69": + version "0.0.69" + resolved "https://registry.yarnpkg.com/@aws-cdk/service-spec-types/-/service-spec-types-0.0.69.tgz#1e8ae6764369ee23b808269445c33c618fa34982" + integrity sha512-bYCdtU5ZGfYJyKsh25ILzdtXyC4poB64k9oQ1p8EeRngnh6TlxObO/J+sI1CDvOpGoa+BUzCdAhewIkdMjzl5A== dependencies: "@cdklabs/tskb" "^0.0.3" @@ -142,24 +149,26 @@ "@aws-sdk/util-utf8-browser" "^3.0.0" tslib "^1.11.1" -"@aws-sdk/client-cloudformation@^3.564.0": - version "3.564.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-cloudformation/-/client-cloudformation-3.564.0.tgz#326680dce9759fae2c8f6003a2d49b40ae98f819" - integrity sha512-yO2Ac78rkMgTpF3OboHWklX9Ju4ut2EFEOOQqPb8DAgg5unhkh7063x6GPHPNJrmRWkJTr0HbVb8tdK5nExmJQ== +"@aws-sdk/client-cloudformation@^3.569.0": + version "3.569.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-cloudformation/-/client-cloudformation-3.569.0.tgz#8a3dee9905dee04cb4be12ab844558323d9e2781" + integrity sha512-fO/CaiCZdvVCEWeBCa2EvefLveyFf/Cl3AT28vdpGh19ER9qqs4K63V2twgOGA7BKaVl/cX9zHz0tHoO4Fb83Q== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/core" "3.556.0" - "@aws-sdk/credential-provider-node" "3.564.0" - "@aws-sdk/middleware-host-header" "3.535.0" - "@aws-sdk/middleware-logger" "3.535.0" - "@aws-sdk/middleware-recursion-detection" "3.535.0" - "@aws-sdk/middleware-user-agent" "3.540.0" - "@aws-sdk/region-config-resolver" "3.535.0" - "@aws-sdk/types" "3.535.0" - "@aws-sdk/util-endpoints" "3.540.0" - "@aws-sdk/util-user-agent-browser" "3.535.0" - "@aws-sdk/util-user-agent-node" "3.535.0" + "@aws-sdk/client-sso-oidc" "3.569.0" + "@aws-sdk/client-sts" "3.569.0" + "@aws-sdk/core" "3.567.0" + "@aws-sdk/credential-provider-node" "3.569.0" + "@aws-sdk/middleware-host-header" "3.567.0" + "@aws-sdk/middleware-logger" "3.568.0" + "@aws-sdk/middleware-recursion-detection" "3.567.0" + "@aws-sdk/middleware-user-agent" "3.567.0" + "@aws-sdk/region-config-resolver" "3.567.0" + "@aws-sdk/types" "3.567.0" + "@aws-sdk/util-endpoints" "3.567.0" + "@aws-sdk/util-user-agent-browser" "3.567.0" + "@aws-sdk/util-user-agent-node" "3.568.0" "@smithy/config-resolver" "^2.2.0" "@smithy/core" "^1.4.2" "@smithy/fetch-http-handler" "^2.5.0" @@ -189,24 +198,26 @@ tslib "^2.6.2" uuid "^9.0.1" -"@aws-sdk/client-cognito-identity@3.564.0": - version "3.564.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.564.0.tgz#9f2f8846096cd66941e5bd2a461fcff13dbc1799" - integrity sha512-AJGd0RXAyycNqb8RBySVkIrzNOd8JzI4sVVC/7pA41t4EeUGM6b2tcsOlt1eVqcNxR1hvn2ZbwnNI8e3OlEnhQ== +"@aws-sdk/client-cognito-identity@3.569.0": + version "3.569.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.569.0.tgz#de124c28b9d25551a07b6d66469d88953016a308" + integrity sha512-cD1HcdJNpUZgrATWCAQs2amQKI69pG+jF4b5ySq9KJkVi6gv2PWsD6QGDG8H12lMWaIKYlOpKbpnYTpcuvqUcg== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/core" "3.556.0" - "@aws-sdk/credential-provider-node" "3.564.0" - "@aws-sdk/middleware-host-header" "3.535.0" - "@aws-sdk/middleware-logger" "3.535.0" - "@aws-sdk/middleware-recursion-detection" "3.535.0" - "@aws-sdk/middleware-user-agent" "3.540.0" - "@aws-sdk/region-config-resolver" "3.535.0" - "@aws-sdk/types" "3.535.0" - "@aws-sdk/util-endpoints" "3.540.0" - "@aws-sdk/util-user-agent-browser" "3.535.0" - "@aws-sdk/util-user-agent-node" "3.535.0" + "@aws-sdk/client-sso-oidc" "3.569.0" + "@aws-sdk/client-sts" "3.569.0" + "@aws-sdk/core" "3.567.0" + "@aws-sdk/credential-provider-node" "3.569.0" + "@aws-sdk/middleware-host-header" "3.567.0" + "@aws-sdk/middleware-logger" "3.568.0" + "@aws-sdk/middleware-recursion-detection" "3.567.0" + "@aws-sdk/middleware-user-agent" "3.567.0" + "@aws-sdk/region-config-resolver" "3.567.0" + "@aws-sdk/types" "3.567.0" + "@aws-sdk/util-endpoints" "3.567.0" + "@aws-sdk/util-user-agent-browser" "3.567.0" + "@aws-sdk/util-user-agent-node" "3.568.0" "@smithy/config-resolver" "^2.2.0" "@smithy/core" "^1.4.2" "@smithy/fetch-http-handler" "^2.5.0" @@ -234,23 +245,25 @@ "@smithy/util-utf8" "^2.3.0" tslib "^2.6.2" -"@aws-sdk/client-sso-oidc@3.564.0": - version "3.564.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.564.0.tgz#3625fb013d294aaecd7b227295a1cae3a47add2f" - integrity sha512-LWBXiwA0qlGhpJx3fbFQagVEyVPoecGtJh3+5hoc+CTVnT00J7T0jLe3kgemvEI9kjhIyDW+MFkq1jCttrGNJw== +"@aws-sdk/client-sso-oidc@3.569.0": + version "3.569.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.569.0.tgz#4dc90be9a35119238112455f8d9080b2ccdf0e24" + integrity sha512-u5DEjNEvRvlKKh1QLCDuQ8GIrx+OFvJFLfhorsp4oCxDylvORs+KfyKKnJAw4wYEEHyxyz9GzHD7p6a8+HLVHw== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/core" "3.556.0" - "@aws-sdk/middleware-host-header" "3.535.0" - "@aws-sdk/middleware-logger" "3.535.0" - "@aws-sdk/middleware-recursion-detection" "3.535.0" - "@aws-sdk/middleware-user-agent" "3.540.0" - "@aws-sdk/region-config-resolver" "3.535.0" - "@aws-sdk/types" "3.535.0" - "@aws-sdk/util-endpoints" "3.540.0" - "@aws-sdk/util-user-agent-browser" "3.535.0" - "@aws-sdk/util-user-agent-node" "3.535.0" + "@aws-sdk/client-sts" "3.569.0" + "@aws-sdk/core" "3.567.0" + "@aws-sdk/credential-provider-node" "3.569.0" + "@aws-sdk/middleware-host-header" "3.567.0" + "@aws-sdk/middleware-logger" "3.568.0" + "@aws-sdk/middleware-recursion-detection" "3.567.0" + "@aws-sdk/middleware-user-agent" "3.567.0" + "@aws-sdk/region-config-resolver" "3.567.0" + "@aws-sdk/types" "3.567.0" + "@aws-sdk/util-endpoints" "3.567.0" + "@aws-sdk/util-user-agent-browser" "3.567.0" + "@aws-sdk/util-user-agent-node" "3.568.0" "@smithy/config-resolver" "^2.2.0" "@smithy/core" "^1.4.2" "@smithy/fetch-http-handler" "^2.5.0" @@ -278,23 +291,23 @@ "@smithy/util-utf8" "^2.3.0" tslib "^2.6.2" -"@aws-sdk/client-sso@3.556.0": - version "3.556.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.556.0.tgz#7beeeebb6a437f09680edefc5c998822292a528a" - integrity sha512-unXdWS7uvHqCcOyC1de+Fr8m3F2vMg2m24GPea0bg7rVGTYmiyn9mhUX11VCt+ozydrw+F50FQwL6OqoqPocmw== +"@aws-sdk/client-sso@3.568.0": + version "3.568.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sso/-/client-sso-3.568.0.tgz#4e06fa9c052931641921a0a723f58f81513c673c" + integrity sha512-LSD7k0ZBQNWouTN5dYpUkeestoQ+r5u6cp6o+FATKeiFQET85RNA3xJ4WPnOI5rBC1PETKhQXvF44863P3hCaQ== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/core" "3.556.0" - "@aws-sdk/middleware-host-header" "3.535.0" - "@aws-sdk/middleware-logger" "3.535.0" - "@aws-sdk/middleware-recursion-detection" "3.535.0" - "@aws-sdk/middleware-user-agent" "3.540.0" - "@aws-sdk/region-config-resolver" "3.535.0" - "@aws-sdk/types" "3.535.0" - "@aws-sdk/util-endpoints" "3.540.0" - "@aws-sdk/util-user-agent-browser" "3.535.0" - "@aws-sdk/util-user-agent-node" "3.535.0" + "@aws-sdk/core" "3.567.0" + "@aws-sdk/middleware-host-header" "3.567.0" + "@aws-sdk/middleware-logger" "3.568.0" + "@aws-sdk/middleware-recursion-detection" "3.567.0" + "@aws-sdk/middleware-user-agent" "3.567.0" + "@aws-sdk/region-config-resolver" "3.567.0" + "@aws-sdk/types" "3.567.0" + "@aws-sdk/util-endpoints" "3.567.0" + "@aws-sdk/util-user-agent-browser" "3.567.0" + "@aws-sdk/util-user-agent-node" "3.568.0" "@smithy/config-resolver" "^2.2.0" "@smithy/core" "^1.4.2" "@smithy/fetch-http-handler" "^2.5.0" @@ -322,23 +335,25 @@ "@smithy/util-utf8" "^2.3.0" tslib "^2.6.2" -"@aws-sdk/client-sts@3.556.0", "@aws-sdk/client-sts@^3.556.0": - version "3.556.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.556.0.tgz#3aa20cca462839f1451f11efada2be119dd36a6b" - integrity sha512-TsK3js7Suh9xEmC886aY+bv0KdLLYtzrcmVt6sJ/W6EnDXYQhBuKYFhp03NrN2+vSvMGpqJwR62DyfKe1G0QzQ== +"@aws-sdk/client-sts@3.569.0", "@aws-sdk/client-sts@^3.569.0": + version "3.569.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/client-sts/-/client-sts-3.569.0.tgz#dc2e0e791081c37dede1b58a2057c26488fcddbf" + integrity sha512-3AyipQ2zHszkcTr8n1Sp7CiMUi28aMf1vOhEo0KKi0DWGo1Z1qJEpWeRP363KG0n9/8U3p1IkXGz5FRbpXZxIw== dependencies: "@aws-crypto/sha256-browser" "3.0.0" "@aws-crypto/sha256-js" "3.0.0" - "@aws-sdk/core" "3.556.0" - "@aws-sdk/middleware-host-header" "3.535.0" - "@aws-sdk/middleware-logger" "3.535.0" - "@aws-sdk/middleware-recursion-detection" "3.535.0" - "@aws-sdk/middleware-user-agent" "3.540.0" - "@aws-sdk/region-config-resolver" "3.535.0" - "@aws-sdk/types" "3.535.0" - "@aws-sdk/util-endpoints" "3.540.0" - "@aws-sdk/util-user-agent-browser" "3.535.0" - "@aws-sdk/util-user-agent-node" "3.535.0" + "@aws-sdk/client-sso-oidc" "3.569.0" + "@aws-sdk/core" "3.567.0" + "@aws-sdk/credential-provider-node" "3.569.0" + "@aws-sdk/middleware-host-header" "3.567.0" + "@aws-sdk/middleware-logger" "3.568.0" + "@aws-sdk/middleware-recursion-detection" "3.567.0" + "@aws-sdk/middleware-user-agent" "3.567.0" + "@aws-sdk/region-config-resolver" "3.567.0" + "@aws-sdk/types" "3.567.0" + "@aws-sdk/util-endpoints" "3.567.0" + "@aws-sdk/util-user-agent-browser" "3.567.0" + "@aws-sdk/util-user-agent-node" "3.568.0" "@smithy/config-resolver" "^2.2.0" "@smithy/core" "^1.4.2" "@smithy/fetch-http-handler" "^2.5.0" @@ -366,10 +381,10 @@ "@smithy/util-utf8" "^2.3.0" tslib "^2.6.2" -"@aws-sdk/core@3.556.0": - version "3.556.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.556.0.tgz#d0f4431a72282b71cfbcaedfb803f7f2807cf60b" - integrity sha512-vJaSaHw2kPQlo11j/Rzuz0gk1tEaKdz+2ser0f0qZ5vwFlANjt08m/frU17ctnVKC1s58bxpctO/1P894fHLrA== +"@aws-sdk/core@3.567.0": + version "3.567.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/core/-/core-3.567.0.tgz#f0b93ba1541dcc179438fb8d80b2a80ec865b623" + integrity sha512-zUDEQhC7blOx6sxhHdT75x98+SXQVdUIMu8z8AjqMWiYK2v4WkOS8i6dOS4E5OjL5J1Ac+ruy8op/Bk4AFqSIw== dependencies: "@smithy/core" "^1.4.2" "@smithy/protocol-http" "^3.3.0" @@ -379,33 +394,33 @@ fast-xml-parser "4.2.5" tslib "^2.6.2" -"@aws-sdk/credential-provider-cognito-identity@3.564.0": - version "3.564.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.564.0.tgz#06895c4db4dde88b89a719b76d62eb7beaab2d7d" - integrity sha512-rjpj+VR9NbF9hg2H0gfuhbQL+6WlRVEBBxI8rweSsSm5r5exENqP+xmEdL6mmFCyM/EjDQswNs0td2tVSc/onw== +"@aws-sdk/credential-provider-cognito-identity@3.569.0": + version "3.569.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.569.0.tgz#1d3083490a76fbd948025b7a4e39698256516585" + integrity sha512-CHS0Zyuazh5cYLaJr2/I9up0xAu8Y+um/h0o4xNf00cKGT0Sdhoby5vyelHjVTeZt+OeOMTBt6IdqGwVbVG9gQ== dependencies: - "@aws-sdk/client-cognito-identity" "3.564.0" - "@aws-sdk/types" "3.535.0" + "@aws-sdk/client-cognito-identity" "3.569.0" + "@aws-sdk/types" "3.567.0" "@smithy/property-provider" "^2.2.0" "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-env@3.535.0": - version "3.535.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.535.0.tgz#26248e263a8107953d5496cb3760d4e7c877abcf" - integrity sha512-XppwO8c0GCGSAvdzyJOhbtktSEaShg14VJKg8mpMa1XcgqzmcqqHQjtDWbx5rZheY1VdpXZhpEzJkB6LpQejpA== +"@aws-sdk/credential-provider-env@3.568.0": + version "3.568.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-env/-/credential-provider-env-3.568.0.tgz#fc7fda0bc48bbc75065a9084e41d429037e0e1c5" + integrity sha512-MVTQoZwPnP1Ev5A7LG+KzeU6sCB8BcGkZeDT1z1V5Wt7GPq0MgFQTSSjhImnB9jqRSZkl1079Bt3PbO6lfIS8g== dependencies: - "@aws-sdk/types" "3.535.0" + "@aws-sdk/types" "3.567.0" "@smithy/property-provider" "^2.2.0" "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-http@3.552.0": - version "3.552.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.552.0.tgz#ecc88d02cba95621887e6b85b2583e756ad29eb6" - integrity sha512-vsmu7Cz1i45pFEqzVb4JcFmAmVnWFNLsGheZc8SCptlqCO5voETrZZILHYIl4cjKkSDk3pblBOf0PhyjqWW6WQ== +"@aws-sdk/credential-provider-http@3.568.0": + version "3.568.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-http/-/credential-provider-http-3.568.0.tgz#7f7239bed7c23db7356ebeae5f3b3bda9f751b08" + integrity sha512-gL0NlyI2eW17hnCrh45hZV+qjtBquB+Bckiip9R6DIVRKqYcoILyiFhuOgf2bXeF23gVh6j18pvUvIoTaFWs5w== dependencies: - "@aws-sdk/types" "3.535.0" + "@aws-sdk/types" "3.567.0" "@smithy/fetch-http-handler" "^2.5.0" "@smithy/node-http-handler" "^2.5.0" "@smithy/property-provider" "^2.2.0" @@ -415,203 +430,200 @@ "@smithy/util-stream" "^2.2.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-ini@3.564.0": - version "3.564.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.564.0.tgz#03af076338e11517f01aeb92713c354ff67e5e38" - integrity sha512-kiEfBoKRcbX7I/rjhVGJrTUQ0895ANhPu6KE1GRZW7wc1gIGgKGJ+0tvAqRtQjYX0U9pivEDb0dh16OF9PBFFw== - dependencies: - "@aws-sdk/client-sts" "3.556.0" - "@aws-sdk/credential-provider-env" "3.535.0" - "@aws-sdk/credential-provider-process" "3.535.0" - "@aws-sdk/credential-provider-sso" "3.564.0" - "@aws-sdk/credential-provider-web-identity" "3.556.0" - "@aws-sdk/types" "3.535.0" +"@aws-sdk/credential-provider-ini@3.568.0": + version "3.568.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.568.0.tgz#3ed29a48fb2f9f44f614d268f3f5a70daf22ba85" + integrity sha512-m5DUN9mpto5DhEvo6w3+8SS6q932ja37rTNvpPqWJIaWhj7OorAwVirSaJQAQB/M8+XCUIrUonxytphZB28qGQ== + dependencies: + "@aws-sdk/credential-provider-env" "3.568.0" + "@aws-sdk/credential-provider-process" "3.568.0" + "@aws-sdk/credential-provider-sso" "3.568.0" + "@aws-sdk/credential-provider-web-identity" "3.568.0" + "@aws-sdk/types" "3.567.0" "@smithy/credential-provider-imds" "^2.3.0" "@smithy/property-provider" "^2.2.0" "@smithy/shared-ini-file-loader" "^2.4.0" "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-node@3.564.0": - version "3.564.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.564.0.tgz#4016f54a18c594f29e4562389ca6d46c59511672" - integrity sha512-HXD5ZCXzfcd6cJ/pW8frh8DuYlKaCd/JKmwzuCRUxgxZwbLEeNmyRYvF+D7osETJJZ4VIwgVbpEw1yLqRz1onw== - dependencies: - "@aws-sdk/credential-provider-env" "3.535.0" - "@aws-sdk/credential-provider-http" "3.552.0" - "@aws-sdk/credential-provider-ini" "3.564.0" - "@aws-sdk/credential-provider-process" "3.535.0" - "@aws-sdk/credential-provider-sso" "3.564.0" - "@aws-sdk/credential-provider-web-identity" "3.556.0" - "@aws-sdk/types" "3.535.0" +"@aws-sdk/credential-provider-node@3.569.0": + version "3.569.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-node/-/credential-provider-node-3.569.0.tgz#714f3c3ccb4cec717f02535edde7c5eeb8bb8828" + integrity sha512-7jH4X2qlPU3PszZP1zvHJorhLARbU1tXvp8ngBe8ArXBrkFpl/dQ2Y/IRAICPm/pyC1IEt8L/CvKp+dz7v/eRw== + dependencies: + "@aws-sdk/credential-provider-env" "3.568.0" + "@aws-sdk/credential-provider-http" "3.568.0" + "@aws-sdk/credential-provider-ini" "3.568.0" + "@aws-sdk/credential-provider-process" "3.568.0" + "@aws-sdk/credential-provider-sso" "3.568.0" + "@aws-sdk/credential-provider-web-identity" "3.568.0" + "@aws-sdk/types" "3.567.0" "@smithy/credential-provider-imds" "^2.3.0" "@smithy/property-provider" "^2.2.0" "@smithy/shared-ini-file-loader" "^2.4.0" "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-process@3.535.0": - version "3.535.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.535.0.tgz#ea1e8a38a32e36bbdc3f75eb03352e6eafa0c659" - integrity sha512-9O1OaprGCnlb/kYl8RwmH7Mlg8JREZctB8r9sa1KhSsWFq/SWO0AuJTyowxD7zL5PkeS4eTvzFFHWCa3OO5epA== +"@aws-sdk/credential-provider-process@3.568.0": + version "3.568.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-process/-/credential-provider-process-3.568.0.tgz#9c6202d64bd9bead77dc10fb6b61b2a64c819749" + integrity sha512-r01zbXbanP17D+bQUb7mD8Iu2SuayrrYZ0Slgvx32qgz47msocV9EPCSwI4Hkw2ZtEPCeLQR4XCqFJB1D9P50w== dependencies: - "@aws-sdk/types" "3.535.0" + "@aws-sdk/types" "3.567.0" "@smithy/property-provider" "^2.2.0" "@smithy/shared-ini-file-loader" "^2.4.0" "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-sso@3.564.0": - version "3.564.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.564.0.tgz#9989d198b1eee9586b370e5a40ad4295cbda7376" - integrity sha512-Wv0NV8tDwtydEpsp/kVZ22Z+40bsSBDYgYZ1Uxx+KR8a1PvT6B5FnEtccWTJ371sQG/uqLum7dXSbJq1Qqze1w== +"@aws-sdk/credential-provider-sso@3.568.0": + version "3.568.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.568.0.tgz#7120d27181daeb7a2ca809e7f2c86b71a0595ed2" + integrity sha512-+TA77NWOEXMUcfLoOuim6xiyXFg1GqHj55ggI1goTKGVvdHYZ+rhxZbwjI29+ewzPt/qcItDJcvhrjOrg9lCag== dependencies: - "@aws-sdk/client-sso" "3.556.0" - "@aws-sdk/token-providers" "3.564.0" - "@aws-sdk/types" "3.535.0" + "@aws-sdk/client-sso" "3.568.0" + "@aws-sdk/token-providers" "3.568.0" + "@aws-sdk/types" "3.567.0" "@smithy/property-provider" "^2.2.0" "@smithy/shared-ini-file-loader" "^2.4.0" "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/credential-provider-web-identity@3.556.0": - version "3.556.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.556.0.tgz#94cd55eaee6ca96354237569102dfaf6774544f4" - integrity sha512-R/YAL8Uh8i+dzVjzMnbcWLIGeeRi2mioHVGnVF+minmaIkCiQMZg2HPrdlKm49El+RljT28Nl5YHRuiqzEIwMA== +"@aws-sdk/credential-provider-web-identity@3.568.0": + version "3.568.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.568.0.tgz#b4e7958dc92a6cbbf5e9fd065cecd76573d4b70f" + integrity sha512-ZJSmTmoIdg6WqAULjYzaJ3XcbgBzVy36lir6Y0UBMRGaxDgos1AARuX6EcYzXOl+ksLvxt/xMQ+3aYh1LWfKSw== dependencies: - "@aws-sdk/client-sts" "3.556.0" - "@aws-sdk/types" "3.535.0" + "@aws-sdk/types" "3.567.0" "@smithy/property-provider" "^2.2.0" "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/credential-providers@^3.564.0": - version "3.564.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/credential-providers/-/credential-providers-3.564.0.tgz#228161ef6fad9b16cf834d61412612ec2609bd8d" - integrity sha512-QQrVTPuRRK37IEtCqzGpStfvr5fZMqxlCQFNJ6mDpHOkL1oyrYIrBpWCB4N95dJyoyLsogleDoFZelfjM9HIzQ== - dependencies: - "@aws-sdk/client-cognito-identity" "3.564.0" - "@aws-sdk/client-sso" "3.556.0" - "@aws-sdk/client-sts" "3.556.0" - "@aws-sdk/credential-provider-cognito-identity" "3.564.0" - "@aws-sdk/credential-provider-env" "3.535.0" - "@aws-sdk/credential-provider-http" "3.552.0" - "@aws-sdk/credential-provider-ini" "3.564.0" - "@aws-sdk/credential-provider-node" "3.564.0" - "@aws-sdk/credential-provider-process" "3.535.0" - "@aws-sdk/credential-provider-sso" "3.564.0" - "@aws-sdk/credential-provider-web-identity" "3.556.0" - "@aws-sdk/types" "3.535.0" +"@aws-sdk/credential-providers@^3.569.0": + version "3.569.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/credential-providers/-/credential-providers-3.569.0.tgz#6aa235b59e27323c503c4c4cc0bacc293f49762c" + integrity sha512-UL7EewaM1Xk6e4XLsxrCBv/owVSDI6Katnok6uMfqA8dA0x3ELjO7W35DW4wpWejQHErN5Gp1zloV9y3t34FMQ== + dependencies: + "@aws-sdk/client-cognito-identity" "3.569.0" + "@aws-sdk/client-sso" "3.568.0" + "@aws-sdk/client-sts" "3.569.0" + "@aws-sdk/credential-provider-cognito-identity" "3.569.0" + "@aws-sdk/credential-provider-env" "3.568.0" + "@aws-sdk/credential-provider-http" "3.568.0" + "@aws-sdk/credential-provider-ini" "3.568.0" + "@aws-sdk/credential-provider-node" "3.569.0" + "@aws-sdk/credential-provider-process" "3.568.0" + "@aws-sdk/credential-provider-sso" "3.568.0" + "@aws-sdk/credential-provider-web-identity" "3.568.0" + "@aws-sdk/types" "3.567.0" "@smithy/credential-provider-imds" "^2.3.0" "@smithy/property-provider" "^2.2.0" "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/middleware-host-header@3.535.0": - version "3.535.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.535.0.tgz#d5264f813592f5e77df25e5a14bbb0e6441812db" - integrity sha512-0h6TWjBWtDaYwHMQJI9ulafeS4lLaw1vIxRjbpH0svFRt6Eve+Sy8NlVhECfTU2hNz/fLubvrUxsXoThaLBIew== +"@aws-sdk/middleware-host-header@3.567.0": + version "3.567.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-host-header/-/middleware-host-header-3.567.0.tgz#52f278234458ec3035e9534fee582c95a8fec4f7" + integrity sha512-zQHHj2N3in9duKghH7AuRNrOMLnKhW6lnmb7dznou068DJtDr76w475sHp2TF0XELsOGENbbBsOlN/S5QBFBVQ== dependencies: - "@aws-sdk/types" "3.535.0" + "@aws-sdk/types" "3.567.0" "@smithy/protocol-http" "^3.3.0" "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/middleware-logger@3.535.0": - version "3.535.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.535.0.tgz#1a8ffd6c368edd6cb32e1edf7b1dced95c1820ee" - integrity sha512-huNHpONOrEDrdRTvSQr1cJiRMNf0S52NDXtaPzdxiubTkP+vni2MohmZANMOai/qT0olmEVX01LhZ0ZAOgmg6A== +"@aws-sdk/middleware-logger@3.568.0": + version "3.568.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-logger/-/middleware-logger-3.568.0.tgz#aeb85cc8f7da431442d0f5914f3a3e262eb55a09" + integrity sha512-BinH72RG7K3DHHC1/tCulocFv+ZlQ9SrPF9zYT0T1OT95JXuHhB7fH8gEABrc6DAtOdJJh2fgxQjPy5tzPtsrA== dependencies: - "@aws-sdk/types" "3.535.0" + "@aws-sdk/types" "3.567.0" "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/middleware-recursion-detection@3.535.0": - version "3.535.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.535.0.tgz#6aa1e1bd1e84730d58a73021b745e20d4341a92d" - integrity sha512-am2qgGs+gwqmR4wHLWpzlZ8PWhm4ktj5bYSgDrsOfjhdBlWNxvPoID9/pDAz5RWL48+oH7I6SQzMqxXsFDikrw== +"@aws-sdk/middleware-recursion-detection@3.567.0": + version "3.567.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.567.0.tgz#95d91f071b57fb5245d522db70df1652275f06ac" + integrity sha512-rFk3QhdT4IL6O/UWHmNdjJiURutBCy+ogGqaNHf/RELxgXH3KmYorLwCe0eFb5hq8f6vr3zl4/iH7YtsUOuo1w== dependencies: - "@aws-sdk/types" "3.535.0" + "@aws-sdk/types" "3.567.0" "@smithy/protocol-http" "^3.3.0" "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/middleware-user-agent@3.540.0": - version "3.540.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.540.0.tgz#4981c64c1eeb6b5c453bce02d060b8c71d44994d" - integrity sha512-8Rd6wPeXDnOYzWj1XCmOKcx/Q87L0K1/EHqOBocGjLVbN3gmRxBvpmR1pRTjf7IsWfnnzN5btqtcAkfDPYQUMQ== +"@aws-sdk/middleware-user-agent@3.567.0": + version "3.567.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.567.0.tgz#0dbedb18b33a7f490948f8b153301bd4bc7e825d" + integrity sha512-a7DBGMRBLWJU3BqrQjOtKS4/RcCh/BhhKqwjCE0FEhhm6A/GGuAs/DcBGOl6Y8Wfsby3vejSlppTLH/qtV1E9w== dependencies: - "@aws-sdk/types" "3.535.0" - "@aws-sdk/util-endpoints" "3.540.0" + "@aws-sdk/types" "3.567.0" + "@aws-sdk/util-endpoints" "3.567.0" "@smithy/protocol-http" "^3.3.0" "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/region-config-resolver@3.535.0": - version "3.535.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.535.0.tgz#20a30fb5fbbe27ab70f2ed16327bae7e367b5cec" - integrity sha512-IXOznDiaItBjsQy4Fil0kzX/J3HxIOknEphqHbOfUf+LpA5ugcsxuQQONrbEQusCBnfJyymrldBvBhFmtlU9Wg== +"@aws-sdk/region-config-resolver@3.567.0": + version "3.567.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/region-config-resolver/-/region-config-resolver-3.567.0.tgz#c3ad943d3debcfb0c50ce3556ed183195f8590f9" + integrity sha512-VMDyYi5Dh2NydDiIARZ19DwMfbyq0llS736cp47qopmO6wzdeul7WRTx8NKfEYN0/AwEaqmTW0ohx58jSB1lYg== dependencies: - "@aws-sdk/types" "3.535.0" + "@aws-sdk/types" "3.567.0" "@smithy/node-config-provider" "^2.3.0" "@smithy/types" "^2.12.0" "@smithy/util-config-provider" "^2.3.0" "@smithy/util-middleware" "^2.2.0" tslib "^2.6.2" -"@aws-sdk/token-providers@3.564.0": - version "3.564.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.564.0.tgz#bd12dd63db108b86a04add9684d0b6aef5a1c211" - integrity sha512-Kk5ixcl9HjqwzfBJZGQAtsqwKa7Z8P7Mdug837BG8zCJbhf7wwNsmItzXTiAlpVrDZyT8P1yWIxsLOS1YUtmow== +"@aws-sdk/token-providers@3.568.0": + version "3.568.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/token-providers/-/token-providers-3.568.0.tgz#8efe5a3d97e5346dd8cb473accdcbfec466f9cba" + integrity sha512-mCQElYzY5N2JlXB7LyjOoLvRN/JiSV+E9szLwhYN3dleTUCMbGqWb7RiAR2V3fO+mz8f9kR7DThTExKJbKogKw== dependencies: - "@aws-sdk/client-sso-oidc" "3.564.0" - "@aws-sdk/types" "3.535.0" + "@aws-sdk/types" "3.567.0" "@smithy/property-provider" "^2.2.0" "@smithy/shared-ini-file-loader" "^2.4.0" "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/types@3.535.0", "@aws-sdk/types@^3.222.0": - version "3.535.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.535.0.tgz#5e6479f31299dd9df170e63f4d10fe739008cf04" - integrity sha512-aY4MYfduNj+sRR37U7XxYR8wemfbKP6lx00ze2M2uubn7mZotuVrWYAafbMSXrdEMSToE5JDhr28vArSOoLcSg== +"@aws-sdk/types@3.567.0", "@aws-sdk/types@^3.222.0": + version "3.567.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/types/-/types-3.567.0.tgz#b2dc88e154140b1ff87e94f63c97447bdb1c1738" + integrity sha512-JBznu45cdgQb8+T/Zab7WpBmfEAh77gsk99xuF4biIb2Sw1mdseONdoGDjEJX57a25TzIv/WUJ2oABWumckz1A== dependencies: "@smithy/types" "^2.12.0" tslib "^2.6.2" -"@aws-sdk/util-endpoints@3.540.0": - version "3.540.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.540.0.tgz#a7fea1d2a5e64623353aaa6ee32dbb86ab9cd3f8" - integrity sha512-1kMyQFAWx6f8alaI6UT65/5YW/7pDWAKAdNwL6vuJLea03KrZRX3PMoONOSJpAS5m3Ot7HlWZvf3wZDNTLELZw== +"@aws-sdk/util-endpoints@3.567.0": + version "3.567.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-endpoints/-/util-endpoints-3.567.0.tgz#c536ad8b9acf99ad762ab949fe0fed943c6f5a12" + integrity sha512-WVhot3qmi0BKL9ZKnUqsvCd++4RF2DsJIG32NlRaml1FT9KaqSzNv0RXeA6k/kYwiiNT7y3YWu3Lbzy7c6vG9g== dependencies: - "@aws-sdk/types" "3.535.0" + "@aws-sdk/types" "3.567.0" "@smithy/types" "^2.12.0" "@smithy/util-endpoints" "^1.2.0" tslib "^2.6.2" "@aws-sdk/util-locate-window@^3.0.0": - version "3.535.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.535.0.tgz#0200a336fddd47dd6567ce15d01f62be50a315d7" - integrity sha512-PHJ3SL6d2jpcgbqdgiPxkXpu7Drc2PYViwxSIqvvMKhDwzSB1W3mMvtpzwKM4IE7zLFodZo0GKjJ9AsoXndXhA== + version "3.568.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-locate-window/-/util-locate-window-3.568.0.tgz#2acc4b2236af0d7494f7e517401ba6b3c4af11ff" + integrity sha512-3nh4TINkXYr+H41QaPelCceEB2FXP3fxp93YZXB/kqJvX0U9j0N0Uk45gvsjmEPzG8XxkPEeLIfT2I1M7A6Lig== dependencies: tslib "^2.6.2" -"@aws-sdk/util-user-agent-browser@3.535.0": - version "3.535.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.535.0.tgz#d67d72e8b933051620f18ddb1c2be225f79f588f" - integrity sha512-RWMcF/xV5n+nhaA/Ff5P3yNP3Kur/I+VNZngog4TEs92oB/nwOdAg/2JL8bVAhUbMrjTjpwm7PItziYFQoqyig== +"@aws-sdk/util-user-agent-browser@3.567.0": + version "3.567.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.567.0.tgz#1ef37a87b28155274d62e31c1ac5c1c043dcd0b3" + integrity sha512-cqP0uXtZ7m7hRysf3fRyJwcY1jCgQTpJy7BHB5VpsE7DXlXHD5+Ur5L42CY7UrRPrB6lc6YGFqaAOs5ghMcLyA== dependencies: - "@aws-sdk/types" "3.535.0" + "@aws-sdk/types" "3.567.0" "@smithy/types" "^2.12.0" bowser "^2.11.0" tslib "^2.6.2" -"@aws-sdk/util-user-agent-node@3.535.0": - version "3.535.0" - resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.535.0.tgz#f5c26fb6f3f561d3cf35f96f303b1775afad0a5b" - integrity sha512-dRek0zUuIT25wOWJlsRm97nTkUlh1NDcLsQZIN2Y8KxhwoXXWtJs5vaDPT+qAg+OpcNj80i1zLR/CirqlFg/TQ== +"@aws-sdk/util-user-agent-node@3.568.0": + version "3.568.0" + resolved "https://registry.yarnpkg.com/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.568.0.tgz#8bfb81b23d4947462f1e49c70187b85e7cd3837a" + integrity sha512-NVoZoLnKF+eXPBvXg+KqixgJkPSrerR6Gqmbjwqbv14Ini+0KNKB0/MXas1mDGvvEgtNkHI/Cb9zlJ3KXpti2A== dependencies: - "@aws-sdk/types" "3.535.0" + "@aws-sdk/types" "3.567.0" "@smithy/node-config-provider" "^2.3.0" "@smithy/types" "^2.12.0" tslib "^2.6.2" @@ -623,7 +635,7 @@ dependencies: tslib "^2.3.1" -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.1", "@babel/code-frame@^7.24.2": +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.23.5", "@babel/code-frame@^7.24.2": version "7.24.2" resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.24.2.tgz#718b4b19841809a58b29b68cde80bc5e1aa6d9ae" integrity sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ== @@ -637,32 +649,32 @@ integrity sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ== "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.23.9": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.4.tgz#1f758428e88e0d8c563874741bc4ffc4f71a4717" - integrity sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg== + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.24.5.tgz#15ab5b98e101972d171aeef92ac70d8d6718f06a" + integrity sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA== dependencies: "@ampproject/remapping" "^2.2.0" "@babel/code-frame" "^7.24.2" - "@babel/generator" "^7.24.4" + "@babel/generator" "^7.24.5" "@babel/helper-compilation-targets" "^7.23.6" - "@babel/helper-module-transforms" "^7.23.3" - "@babel/helpers" "^7.24.4" - "@babel/parser" "^7.24.4" + "@babel/helper-module-transforms" "^7.24.5" + "@babel/helpers" "^7.24.5" + "@babel/parser" "^7.24.5" "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.1" - "@babel/types" "^7.24.0" + "@babel/traverse" "^7.24.5" + "@babel/types" "^7.24.5" convert-source-map "^2.0.0" debug "^4.1.0" gensync "^1.0.0-beta.2" json5 "^2.2.3" semver "^6.3.1" -"@babel/generator@^7.24.1", "@babel/generator@^7.24.4", "@babel/generator@^7.7.2": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.4.tgz#1fc55532b88adf952025d5d2d1e71f946cb1c498" - integrity sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw== +"@babel/generator@^7.24.5", "@babel/generator@^7.7.2": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.24.5.tgz#e5afc068f932f05616b66713e28d0f04e99daeb3" + integrity sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA== dependencies: - "@babel/types" "^7.24.0" + "@babel/types" "^7.24.5" "@jridgewell/gen-mapping" "^0.3.5" "@jridgewell/trace-mapping" "^0.3.25" jsesc "^2.5.1" @@ -698,81 +710,81 @@ dependencies: "@babel/types" "^7.22.5" -"@babel/helper-module-imports@^7.22.15": +"@babel/helper-module-imports@^7.24.3": version "7.24.3" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz#6ac476e6d168c7c23ff3ba3cf4f7841d46ac8128" integrity sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg== dependencies: "@babel/types" "^7.24.0" -"@babel/helper-module-transforms@^7.23.3": - version "7.23.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz#d7d12c3c5d30af5b3c0fcab2a6d5217773e2d0f1" - integrity sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ== +"@babel/helper-module-transforms@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.24.5.tgz#ea6c5e33f7b262a0ae762fd5986355c45f54a545" + integrity sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A== dependencies: "@babel/helper-environment-visitor" "^7.22.20" - "@babel/helper-module-imports" "^7.22.15" - "@babel/helper-simple-access" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-module-imports" "^7.24.3" + "@babel/helper-simple-access" "^7.24.5" + "@babel/helper-split-export-declaration" "^7.24.5" + "@babel/helper-validator-identifier" "^7.24.5" "@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.24.0", "@babel/helper-plugin-utils@^7.8.0": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz#945681931a52f15ce879fd5b86ce2dae6d3d7f2a" - integrity sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w== + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.5.tgz#a924607dd254a65695e5bd209b98b902b3b2f11a" + integrity sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ== -"@babel/helper-simple-access@^7.22.5": - version "7.22.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz#4938357dc7d782b80ed6dbb03a0fba3d22b1d5de" - integrity sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w== +"@babel/helper-simple-access@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.24.5.tgz#50da5b72f58c16b07fbd992810be6049478e85ba" + integrity sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.24.5" -"@babel/helper-split-export-declaration@^7.22.6": - version "7.22.6" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz#322c61b7310c0997fe4c323955667f18fcefb91c" - integrity sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g== +"@babel/helper-split-export-declaration@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.5.tgz#b9a67f06a46b0b339323617c8c6213b9055a78b6" + integrity sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q== dependencies: - "@babel/types" "^7.22.5" + "@babel/types" "^7.24.5" -"@babel/helper-string-parser@^7.23.4": +"@babel/helper-string-parser@^7.24.1": version "7.24.1" resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz#f99c36d3593db9540705d0739a1f10b5e20c696e" integrity sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ== -"@babel/helper-validator-identifier@^7.22.20": - version "7.22.20" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz#c4ae002c61d2879e724581d96665583dbc1dc0e0" - integrity sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A== +"@babel/helper-validator-identifier@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.5.tgz#918b1a7fa23056603506370089bd990d8720db62" + integrity sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA== "@babel/helper-validator-option@^7.23.5": version "7.23.5" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz#907a3fbd4523426285365d1206c423c4c5520307" integrity sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw== -"@babel/helpers@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.4.tgz#dc00907fd0d95da74563c142ef4cd21f2cb856b6" - integrity sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw== +"@babel/helpers@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.24.5.tgz#fedeb87eeafa62b621160402181ad8585a22a40a" + integrity sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q== dependencies: "@babel/template" "^7.24.0" - "@babel/traverse" "^7.24.1" - "@babel/types" "^7.24.0" + "@babel/traverse" "^7.24.5" + "@babel/types" "^7.24.5" "@babel/highlight@^7.24.2": - version "7.24.2" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.2.tgz#3f539503efc83d3c59080a10e6634306e0370d26" - integrity sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA== + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.24.5.tgz#bc0613f98e1dd0720e99b2a9ee3760194a704b6e" + integrity sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw== dependencies: - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-validator-identifier" "^7.24.5" chalk "^2.4.2" js-tokens "^4.0.0" picocolors "^1.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.0", "@babel/parser@^7.24.1", "@babel/parser@^7.24.4": - version "7.24.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.4.tgz#234487a110d89ad5a3ed4a8a566c36b9453e8c88" - integrity sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg== +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.20.7", "@babel/parser@^7.23.9", "@babel/parser@^7.24.0", "@babel/parser@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.5.tgz#4a4d5ab4315579e5398a82dcf636ca80c3392790" + integrity sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -881,29 +893,29 @@ "@babel/parser" "^7.24.0" "@babel/types" "^7.24.0" -"@babel/traverse@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.1.tgz#d65c36ac9dd17282175d1e4a3c49d5b7988f530c" - integrity sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ== +"@babel/traverse@^7.24.5": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.5.tgz#972aa0bc45f16983bf64aa1f877b2dd0eea7e6f8" + integrity sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA== dependencies: - "@babel/code-frame" "^7.24.1" - "@babel/generator" "^7.24.1" + "@babel/code-frame" "^7.24.2" + "@babel/generator" "^7.24.5" "@babel/helper-environment-visitor" "^7.22.20" "@babel/helper-function-name" "^7.23.0" "@babel/helper-hoist-variables" "^7.22.5" - "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.24.1" - "@babel/types" "^7.24.0" + "@babel/helper-split-export-declaration" "^7.24.5" + "@babel/parser" "^7.24.5" + "@babel/types" "^7.24.5" debug "^4.3.1" globals "^11.1.0" -"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.3.3": - version "7.24.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" - integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== +"@babel/types@^7.0.0", "@babel/types@^7.20.7", "@babel/types@^7.22.5", "@babel/types@^7.23.0", "@babel/types@^7.24.0", "@babel/types@^7.24.5", "@babel/types@^7.3.3": + version "7.24.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.5.tgz#7661930afc638a5383eb0c4aee59b74f38db84d7" + integrity sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ== dependencies: - "@babel/helper-string-parser" "^7.23.4" - "@babel/helper-validator-identifier" "^7.22.20" + "@babel/helper-string-parser" "^7.24.1" + "@babel/helper-validator-identifier" "^7.24.5" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -1395,10 +1407,10 @@ resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-20.0.0.tgz#9ec2daa0090eeb865ee147636e0c00f73790c6e5" integrity sha512-EtqRBEjp1dL/15V7WiX5LJMIxxkdiGJnabzYx5Apx4FkQIFgAfKumXeYAqqJCj1s+BMX4cPFIFC4OLCR6stlnA== -"@octokit/openapi-types@^22.1.0": - version "22.1.0" - resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-22.1.0.tgz#6aa72f35fb29318064e4ab60972f40429857eb2e" - integrity sha512-pGUdSP+eEPfZiQHNkZI0U01HLipxncisdJQB4G//OAmfeO8sqTQ9KRa0KF03TUPCziNsoXUrTg4B2Q1EX++T0Q== +"@octokit/openapi-types@^22.2.0": + version "22.2.0" + resolved "https://registry.yarnpkg.com/@octokit/openapi-types/-/openapi-types-22.2.0.tgz#75aa7dcd440821d99def6a60b5f014207ae4968e" + integrity sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg== "@octokit/plugin-paginate-rest@^9.0.0": version "9.2.1" @@ -1441,11 +1453,11 @@ "@octokit/openapi-types" "^20.0.0" "@octokit/types@^13.0.0", "@octokit/types@^13.1.0": - version "13.4.1" - resolved "https://registry.yarnpkg.com/@octokit/types/-/types-13.4.1.tgz#ad3574488cce6792e5d981a1bdf4b694e1ca349f" - integrity sha512-Y73oOAzRBAUzR/iRAbGULzpNkX8vaxKCqEtg6K74Ff3w9f5apFnWtE/2nade7dMWWW3bS5Kkd6DJS4HF04xreg== + version "13.5.0" + resolved "https://registry.yarnpkg.com/@octokit/types/-/types-13.5.0.tgz#4796e56b7b267ebc7c921dcec262b3d5bfb18883" + integrity sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ== dependencies: - "@octokit/openapi-types" "^22.1.0" + "@octokit/openapi-types" "^22.2.0" "@octokit/webhooks-definitions@^3.67.3": version "3.67.3" @@ -2209,9 +2221,9 @@ "@types/node" "*" "@types/node@*": - version "20.12.7" - resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.7.tgz#04080362fa3dd6c5822061aa3124f5c152cff384" - integrity sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg== + version "20.12.8" + resolved "https://registry.yarnpkg.com/@types/node/-/node-20.12.8.tgz#35897bf2bfe3469847ab04634636de09552e8256" + integrity sha512-NU0rJLJnshZWdE/097cdCBbyW1h4hEg0xpovcoAQYHl8dnEyp/NAOiE45pvc+Bd1Dt+2r94v2eGFpQJ4R7g+2w== dependencies: undici-types "~5.26.4" @@ -2439,14 +2451,14 @@ ajv@^6.12.4: uri-js "^4.2.2" ajv@^8.0.1: - version "8.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.12.0.tgz#d1a0527323e22f53562c567c00991577dfbe19d1" - integrity sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA== + version "8.13.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.13.0.tgz#a3939eaec9fb80d217ddf0c3376948c023f28c91" + integrity sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA== dependencies: - fast-deep-equal "^3.1.1" + fast-deep-equal "^3.1.3" json-schema-traverse "^1.0.0" require-from-string "^2.0.2" - uri-js "^4.2.2" + uri-js "^4.4.1" ansi-align@^3.0.1: version "3.0.1" @@ -2641,10 +2653,10 @@ aws-sdk-client-mock@^3.1.0: sinon "^16.1.3" tslib "^2.1.0" -aws-sdk@^2.1608.0: - version "2.1608.0" - resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1608.0.tgz#8d5936f65c75aa729ee566eaa9af4c50c273a2f4" - integrity sha512-qqmKS6PRNTRO+O3ZVp9+tvB6asy5uRYDpR6AhSrnhu46JtDpI47aB/O9vyykqQf3JsFu0loinDJjl2hxQoal9A== +aws-sdk@^2.1613.0: + version "2.1613.0" + resolved "https://registry.yarnpkg.com/aws-sdk/-/aws-sdk-2.1613.0.tgz#242a4aa73bbd4312153f5ec0d9435ea13a2879db" + integrity sha512-NCBSOa7i/VewoAy6fZIcxJxjKqySREy+bqAG2tKESZo2/DCm0i9XFW0R78LDtxKvjz+mqjmqviAm3r7LBsF0dg== dependencies: buffer "4.9.2" events "1.1.1" @@ -2919,9 +2931,9 @@ camelcase@^7.0.1: integrity sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw== caniuse-lite@^1.0.30001587: - version "1.0.30001614" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001614.tgz#f894b4209376a0bf923d67d9c361d96b1dfebe39" - integrity sha512-jmZQ1VpmlRwHgdP1/uiKzgiAuGOfLEJsYFP4+GBou/QQ4U6IOJCB4NP1c+1p9RGLpwObcT94jA5/uO+F1vBbog== + version "1.0.30001616" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001616.tgz#4342712750d35f71ebba9fcac65e2cf8870013c3" + integrity sha512-RHVYKov7IcdNjVHJFNY/78RdG4oGVjbayxv8u5IO74Wv7Hlq4PnJE6mo/OjFijjVFNy5ijnCt6H3IIo4t+wfEw== case@^1.6.3: version "1.6.3" @@ -3426,7 +3438,7 @@ define-data-property@^1.0.1, define-data-property@^1.1.4: es-errors "^1.3.0" gopd "^1.0.1" -define-properties@^1.1.3, define-properties@^1.2.0, define-properties@^1.2.1: +define-properties@^1.2.0, define-properties@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== @@ -3519,9 +3531,9 @@ eastasianwidth@^0.2.0: integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA== electron-to-chromium@^1.4.668: - version "1.4.750" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.750.tgz#d278a619af727ed069de1317115187282b1131ee" - integrity sha512-9ItEpeu15hW5m8jKdriL+BQrgwDTXEL9pn4SkillWFu73ZNNNQ2BKKLS+ZHv2vC9UkNhosAeyfxOf/5OSeTCPA== + version "1.4.756" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.4.756.tgz#7b872ed8c8c5bee571be771730225d6d2a37fe45" + integrity sha512-RJKZ9+vEBMeiPAvKNWyZjuYyUqMndcP1f335oHqn3BEQbs2NFtVrnK5+6Xg5wSM9TknNNpWghGDUCKGYF+xWXw== emittery@^0.13.1: version "0.13.1" @@ -3666,7 +3678,7 @@ es-to-primitive@^1.2.1: is-date-object "^1.0.1" is-symbol "^1.0.2" -escalade@^3.1.1: +escalade@^3.1.1, escalade@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.2.tgz#54076e9ab29ea5bf3d8f1ed62acffbb88272df27" integrity sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA== @@ -4262,11 +4274,12 @@ globals@^13.19.0: type-fest "^0.20.2" globalthis@^1.0.3: - version "1.0.3" - resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.3.tgz#5852882a52b80dc301b0660273e1ed082f0b6ccf" - integrity sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA== + version "1.0.4" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== dependencies: - define-properties "^1.1.3" + define-properties "^1.2.1" + gopd "^1.0.1" globby@^11.0.4, globby@^11.1.0: version "11.1.0" @@ -4488,9 +4501,9 @@ ieee754@^1.1.4: integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== ignore-walk@^6.0.0: - version "6.0.4" - resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-6.0.4.tgz#89950be94b4f522225eb63a13c56badb639190e9" - integrity sha512-t7sv42WkwFkyKbivUCglsQW5YWMskWtbEf4MNKX5u/CCWHKSPzN4FtBQGsQZgCLbxOzpVlcbWVK5KB3auIOjSw== + version "6.0.5" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-6.0.5.tgz#ef8d61eab7da169078723d1f82833b36e200b0dd" + integrity sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A== dependencies: minimatch "^9.0.0" @@ -5299,9 +5312,9 @@ json-parse-even-better-errors@^2.3.0: integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== json-parse-even-better-errors@^3.0.0: - version "3.0.1" - resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.1.tgz#02bb29fb5da90b5444581749c22cedd3597c6cb0" - integrity sha512-aatBvbL26wVUCLmbWdCpeu9iF5wOyWpagiKkInA+kfws3sWdBrTnsvN2CKcyCYyUrc7rebNBlK6+kteg7ksecg== + version "3.0.2" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz#b43d35e89c0f3be6b5fbbe9dc6c82467b30c28da" + integrity sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ== json-parse-helpfulerror@^1.0.3: version "1.0.3" @@ -5710,9 +5723,9 @@ minipass-fetch@^2.0.3: encoding "^0.1.13" minipass-fetch@^3.0.0: - version "3.0.4" - resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.4.tgz#4d4d9b9f34053af6c6e597a64be8e66e42bf45b7" - integrity sha512-jHAqnA728uUpIaFm7NWsCnqKT6UqZz7GcI/bDpPATuwYyKwJwW0remxSCxUlKiEty+eopHGa3oc8WxgQ1FFJqg== + version "3.0.5" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-3.0.5.tgz#f0f97e40580affc4a35cc4a1349f05ae36cb1e4c" + integrity sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg== dependencies: minipass "^7.0.3" minipass-sized "^1.0.3" @@ -5762,9 +5775,9 @@ minipass@^5.0.0: integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== "minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.3, minipass@^7.0.4: - version "7.0.4" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.0.4.tgz#dbce03740f50a4786ba994c1fb908844d27b038c" - integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ== + version "7.1.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-7.1.0.tgz#b545f84af94e567386770159302ca113469c80b8" + integrity sha512-oGZRv2OT1lO2UF1zUcwdTb3wqUwI0kBGTgt/T7OdSj6M6N5m3o5uPf0AIW6lVxGGoiWUR7e2AwTE+xiwK8WQig== minizlib@^2.1.1, minizlib@^2.1.2: version "2.1.2" @@ -6985,9 +6998,9 @@ sprintf-js@~1.0.2: integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== ssri@^10.0.0: - version "10.0.5" - resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.5.tgz#e49efcd6e36385196cb515d3a2ad6c3f0265ef8c" - integrity sha512-bSf16tAFkGeRlUNDjXu8FzaMQt6g2HZJrun7mtMbIPOddxt3GLMSz5VWUWcqTJUPfLEaDIepGxv+bYQW49596A== + version "10.0.6" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-10.0.6.tgz#a8aade2de60ba2bce8688e3fa349bad05c7dc1e5" + integrity sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ== dependencies: minipass "^7.0.3" @@ -7543,11 +7556,11 @@ untildify@^4.0.0: integrity sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw== update-browserslist-db@^1.0.13: - version "1.0.13" - resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz#3c5e4f5c083661bd38ef64b6328c26ed6c8248c4" - integrity sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg== + version "1.0.15" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.0.15.tgz#60ed9f8cba4a728b7ecf7356f641a31e3a691d97" + integrity sha512-K9HWH62x3/EalU1U6sjSZiylm9C8tgq2mSvshZpqc7QE69RaA2qjhkW2HlNA0tFpEbtyFz7HTqbSdN4MSwUodA== dependencies: - escalade "^3.1.1" + escalade "^3.1.2" picocolors "^1.0.0" update-notifier@^6.0.2: @@ -7570,7 +7583,7 @@ update-notifier@^6.0.2: semver-diff "^4.0.0" xdg-basedir "^5.1.0" -uri-js@^4.2.2: +uri-js@^4.2.2, uri-js@^4.4.1: version "4.4.1" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" integrity 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�Rnd|>|Gg@69zAEUCQSe95T?5-J% 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

SXjV` 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≥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�mAN4_xw12q|L?&_xL=ozvRpg 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 NMO{*2mp7-G!L`%(3^z^i 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 H#p0M> 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 z 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 delta 1723530 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̝asF;3!ZeB14Am9Gj;V4B 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