@magic-xpa/gui 4.1100.0-dev4110.252 → 4.1100.0-dev4110.256
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/src/Commands.mjs +1 -1
- package/esm2022/src/Events.mjs +1 -1
- package/esm2022/src/EventsProcessor.mjs +1 -1
- package/esm2022/src/FocusManager.mjs +1 -1
- package/esm2022/src/Manager.mjs +1 -1
- package/esm2022/src/UIBridge.mjs +1 -1
- package/esm2022/src/gui/GuiMgControl.mjs +1 -1
- package/esm2022/src/gui/KeyboardItem.mjs +1 -1
- package/esm2022/src/gui/low/GuiCommand.mjs +1 -1
- package/esm2022/src/gui/low/GuiCommandQueue.mjs +1 -1
- package/esm2022/src/gui/low/GuiInteractive.mjs +1 -1
- package/esm2022/src/management/RuntimeContextBase.mjs +1 -1
- package/esm2022/src/management/data/BlobType.mjs +1 -1
- package/esm2022/src/management/data/DcValues.mjs +1 -1
- package/esm2022/src/management/data/DcValuesBuilderBase.mjs +1 -1
- package/esm2022/src/management/data/FieldDef.mjs +1 -1
- package/esm2022/src/management/data/FieldsTable.mjs +1 -1
- package/esm2022/src/management/data/GuiDataViewBase.mjs +1 -1
- package/esm2022/src/management/data/GuiFieldBase.mjs +1 -1
- package/esm2022/src/management/data/NUM_TYPE.mjs +1 -1
- package/esm2022/src/management/data/ObjectReferenceBase.mjs +1 -1
- package/esm2022/src/management/data/ObjectReferencesCollection.mjs +1 -1
- package/esm2022/src/management/data/RecordUtils.mjs +1 -1
- package/esm2022/src/management/data/VectorType.mjs +1 -1
- package/esm2022/src/management/data/VectorTypeBase.mjs +1 -1
- package/esm2022/src/management/exp/GuiExpressionEvaluator.mjs +1 -1
- package/esm2022/src/management/gui/ControlTable.mjs +1 -1
- package/esm2022/src/management/gui/DisplayConvertor.mjs +1 -1
- package/esm2022/src/management/gui/FieldValidator.mjs +1 -1
- package/esm2022/src/management/gui/HebrewDate.mjs +1 -1
- package/esm2022/src/management/gui/Helps.mjs +1 -1
- package/esm2022/src/management/gui/MgControlBase.mjs +1 -1
- package/esm2022/src/management/gui/MgFormBase.mjs +1 -1
- package/esm2022/src/management/gui/PIC.mjs +1 -1
- package/esm2022/src/management/gui/PropDefaults.mjs +1 -1
- package/esm2022/src/management/gui/PropTable.mjs +1 -1
- package/esm2022/src/management/gui/Property.mjs +1 -1
- package/esm2022/src/management/gui/ValidationDetails.mjs +1 -1
- package/esm2022/src/management/gui/ValidationDetailsBase.mjs +1 -1
- package/esm2022/src/management/gui/WrongFormatException.mjs +1 -1
- package/esm2022/src/management/tasks/GuiTaskBase.mjs +1 -1
- package/esm2022/src/management/tasks/TaskDefinitionIdTableSaxHandler.mjs +1 -1
- package/esm2022/src/util/MemoryUtil.mjs +1 -1
- package/esm2022/src/util/ObjectReference.mjs +1 -1
- package/esm2022/src/util/UsernamePasswordCredentials.mjs +1 -1
- package/fesm2022/magic-xpa-gui.mjs.map +1 -1
- package/package.json +2 -2
package/esm2022/src/Commands.mjs
CHANGED
|
@@ -181,4 +181,4 @@ export class Commands {
|
|
|
181
181
|
constructor() {
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tbWFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL0NvbW1hbmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUUxQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDdkMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQVVoRCxNQUFNLE9BQU8sUUFBUTtJQUdYLE1BQU0sQ0FBRSxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBS3ZDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlO1FBQ3ZDLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO0lBQ3pDLENBQUM7SUFLRCxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQWM7UUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBU0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBYSxFQUFFLEdBQVcsRUFBRSxLQUFhO1FBQy9ELElBQUksY0FBYyxHQUFtQixJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQzFELElBQUksV0FBbUIsQ0FBQztRQUV4QixNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pDLGNBQWMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUvQyxDQUFDLENBQUMsQ0FBQyxJ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LENBQUMsQ0FBQztRQUMvRCxVQUFVLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQztRQUN2QixlQUFlLENBQUMsV0FBVyxFQUFFLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFLRCxNQUFNLENBQUMsV0FBVztRQUNoQixlQUFlLENBQUMsV0FBVyxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDOUMsQ0FBQztJQUtELE1BQU0sQ0FBQyxNQUFNO1FBQ1gsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO0lBQ3pDLENBQUM7SUFFRDtJQUNBLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0xpc3R9IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuaW1wb3J0IHtHdWlNZ0Zvcm19IGZyb20gJy4vZ3VpL0d1aU1nRm9ybSc7XHJcbmltcG9ydCB7R3VpSW50ZXJhY3RpdmV9IGZyb20gJy4vZ3VpL2xvdy9HdWlJbnRlcmFjdGl2ZSc7XHJcbmltcG9ydCB7R3VpTWdDb250cm9sfSBmcm9tICcuL2d1aS9HdWlNZ0NvbnRyb2wnO1xyXG5pbXBvcnQge0NvbW1hbmRUeXBlfSBmcm9tICcuL0d1aUVudW1zJztcclxuaW1wb3J0IHtHdWlDb21tYW5kUXVldWV9IGZyb20gJy4vZ3VpL2xvdy9HdWlDb21tYW5kUXVldWUnO1xyXG5pbXBvcnQge0d1aUNvbW1hbmR9IGZyb20gJy4vZ3VpL2xvdy9HdWlDb21tYW5kJztcclxuXHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyAgIENvbW1hbmRzIHRvIHRoZSBHVUkgdGhyZWFkLlxyXG4vLy8gICBUaGVyZeKAmXJlIHR3byB0eXBlcyBvZiBjb21tYW5kcyAoZ3JvdXBlZCBpbiAjcmVnaW9ucyk6XHJcbi8vLyAgICAgIDEuXHRDb21tYW5kcyB0aGF0IGFyZSBleGVjdXRlZCBpbW1lZGlhdGVseS5cclxuLy8vICAgICAgMi5cdENvbW1hbmRzIHRoYXQgYXJlIHF1ZXVlZCAob3ZlcmxvYWRlZCBtZXRob2RzIOKAmGFkZEFzeW5j4oCZKSBhbmQgdGhlbiBleGVjdXRlZCxcclxuLy8vICAgICAgICAgZWl0aGVyIHN5bmNocm9ub3VzbHkgKG1ldGhvZCDigJhpbnZva2XigJkpIG9yIGFzeW5jaHJvbm91c2x5IChtZXRob2Qg4oCYYmVnaW5JbnZva2XigJkpLlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgQ29tbWFuZHMge1xyXG5cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgIHJlc29sdmVDYWxsYmFjayA9IG51bGw7IC8vIGNhbGxiYWNrIHRvIHJlc29sdmUgdGhlIHByb21pc2VcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBzYXZlIHRoZSBjYWxsYmFja1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIFNldFJlc29sdmVDYWxsYmFjayhyZXNvbHZlQ2FsbGJhY2spIHtcclxuICAgIHRoaXMucmVzb2x2ZUNhbGxiYWNrID0gcmVzb2x2ZUNhbGxiYWNrO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyByZXNvbHZlIHByb21pc2VcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBSZXNvbHZlUHJvbWlzZShyZXN1bHQ6IG51bWJlcikge1xyXG4gICAgdGhpcy5yZXNvbHZlQ2FsbGJhY2socmVzdWx0KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBTeW5jIGNhbGwgdG8gZGlzcGxheSBtZXNzYWdlIGJveFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ0aXRsZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJtc2dcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3R5bGVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIGFzeW5jIG1lc3NhZ2VCb3godGl0bGU6IHN0cmluZywgbXNnOiBzdHJpbmcsIHN0eWxlOiBudW1iZXIpOiBQcm9taXNlPG51bWJlcj4ge1xyXG4gICAgbGV0IGd1aUludGVyYWN0aXZlOiBHdWlJbnRlcmFjdGl2ZSA9IG5ldyBHdWlJbnRlcmFjdGl2ZSgpO1xyXG4gICAgbGV0IHJldHVyblZhbHVlOiBudW1iZXI7XHJcblxyXG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgdGhpcy5TZXRSZXNvbHZlQ2FsbGJhY2socmVzb2x2ZSk7XHJcbiAgICAgIGd1aUludGVyYWN0aXZlLm1lc3NhZ2VCb3godGl0bGUsIG1zZywgc3R5bGUpO1xyXG4gICAgIC8vIHNhdmUgdGhlIHJlc29sdmUgY2FsbGJhY2sgb24gRXZlbnRzTWFuYWdlciwgc28gdGhhdCBpdCBjYW4gYmUgcmVzb2x2ZWQgb24gY2xvc2luZyBtb2RhbCB3aW5kb3dcclxuICAgIH0pLnRoZW4oKHJlczogbnVtYmVyKT0+e3JldHVyblZhbHVlID0gcmVzO30pO1xyXG4gICAgcmV0dXJuIHJldHVyblZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBQcm9taXNlIHdhaXRzIHRpbGwgdGhlIG92ZXJsYXkgd2luZG93IGdldHMgT3BlbmVkIHRocm91Z2ggZ3VpSW50ZXJhY3RpdmUgY29tbWFuZC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBhc3luYyBvcGVuT3ZlcmxheUZvcm0ob2JqOiBPYmplY3QsIGZvcm1OYW1lOiBzdHJpbmcsIGhhbmRsZXJUYXNrVGFnOiBzdHJpbmcsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWRUYXNrVGFnOiBzdHJpbmcsIGlucHV0Q29udHJvbHM6IHN0cmluZywgaXNEaWFsb2c6IGJvb2xlYW4pOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGxldCBndWlJbnRlcmFjdGl2ZTogR3VpSW50ZXJhY3RpdmUgPSBuZXcgR3VpSW50ZXJhY3RpdmUoKTtcclxuXHJcbiAgICBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4ge1xyXG4gICAgICB0aGlzLlNldFJlc29sdmVDYWxsYmFjayhyZXNvbHZlKTtcclxuICAgICAgZ3VpSW50ZXJhY3RpdmUuRXhlY3V0ZU9wZW5PdmVybGF5Rm9ybShvYmosIGZvcm1OYW1lLCBoYW5kbGVyVGFza1RhZyxcclxuICAgICAgICBjYWxsZWRUYXNrVGFnLCBpbnB1dENvbnRyb2xzLCBpc0RpYWxvZyk7XHJcbiAgICB9KS50aGVuKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRpdGxlIHRvIGJyb3dzZXJcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidG9wTW9zdEZvcm1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGl0bGVcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBzZXRUaXRsZSh0b3BNb3N0Rm9ybTogR3VpTWdGb3JtLCB0aXRsZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgZ3VpSW50ZXJhY3RpdmU6IEd1aUludGVyYWN0aXZlID0gbmV3IEd1aUludGVyYWN0aXZlKCk7XHJcbiAgICBndWlJbnRlcmFjdGl2ZS5zZXRUaXRsZSh0b3BNb3N0Rm9ybSwgdGl0bGUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFN5bmMgY2FsbC4gVGhpcyBtZXRob2RlIGlzIHNldCBUUlVFXFxGQUxTRSB0aGF0IEd1aVV0aWxlc1xcR2V0VmFsdWUoKSBtZXRob2Qgd2lsbCBiZSB1c2VcclxuICAvLy8gICB0aGlzIGZhbGcgc2F5IGlmIHRvIHJldHVybiB0aGUgOiAodHJ1ZSkgc3VnZ2VzdGVkIHZhbHVlIG9yIChmYWxzZSl0aGUgcmVhbCB2YWx1ZVxyXG4gIC8vLyAgIHRoaXMgbWV0aG9kIGlzIHVzZSBmb3IgTUdfQUNUX0NUUkxfTU9ESUZZXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImN0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicmV0U3VnZ2VzdGVkVmFsdWVcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBzZXRHZXRTdWdnZXN0ZWRWYWx1ZU9mQ2hvaWNlQ29udHJvbE9uVGFnRGF0YShjdHJsOiBHdWlNZ0NvbnRyb2wsIGxpbmU6IG51bWJlciwgcmV0U3VnZ2VzdGVkVmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGxldCBndWlJbnRlcmFjdGl2ZTogR3VpSW50ZXJhY3RpdmUgPSBuZXcgR3VpSW50ZXJhY3RpdmUoKTtcclxuICAgIGd1aUludGVyYWN0aXZlLnNldEdldFN1Z2dlc3RlZFZhbHVlT2ZDaG9pY2VDb250cm9sT25UYWdEYXRhKGN0cmwsIGxpbmUsIHJldFN1Z2dlc3RlZFZhbHVlKTtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgU3luYyBjYWxsIHRvIGdldCB2YWx1ZSBvZiB0aGUgY29udHJvbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJvYmpcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibWdWYWx1ZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJsaW5lXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgZ2V0VmFsdWUob2JqOiBhbnksIGxpbmU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgZ3VpSW50ZXJhY3RpdmU6IEd1aUludGVyYWN0aXZlID0gbmV3IEd1aUludGVyYWN0aXZlKCk7XHJcbiAgICByZXR1cm4gZ3VpSW50ZXJhY3RpdmUuZ2V0VmFsdWUob2JqLCBsaW5lKTtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgU3luYyBjYWxsIHRvIGdldCB0YWJsZSB0b3AgaW5kZXhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGFibGVjb250cm9sXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBnZXRUb3BJbmRleCh0YWJsZWNvbnRyb2w6IEd1aU1nQ29udHJvbCk6IG51bWJlciB7XHJcbiAgICBsZXQgZ3VpSW50ZXJhY3RpdmU6IEd1aUludGVyYWN0aXZlID0gbmV3IEd1aUludGVyYWN0aXZlKCk7XHJcbiAgICByZXR1cm4gZ3VpSW50ZXJhY3RpdmUuZ2V0VG9wSW5kZXgodGFibGVjb250cm9sKTtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgU3luYyBjYWxsIHRvIGdldCBpcyByb3cgZWRpdGluZyBvbiByb3cgaW5kZXhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGFibGVjb250cm9sXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBnZXRJc1Jvd0VkaXRpbmcodGFibGVjb250cm9sOiBhbnksIHJvd0luZGV4OiBudW1iZXIsIGlzTGluZU1vZGU6IGJvb2xlYW4pOiBib29sZWFuIHtcclxuICAgIGxldCBndWlJbnRlcmFjdGl2ZTogR3VpSW50ZXJhY3RpdmUgPSBuZXcgR3VpSW50ZXJhY3RpdmUoKTtcclxuICAgIHJldHVybiBndWlJbnRlcmFjdGl2ZS5nZXRJc1Jvd0VkaXRpbmcodGFibGVjb250cm9sLCByb3dJbmRleCwgaXNMaW5lTW9kZSk7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBTeW5jIGNhbGwgdG8gc2V0IHRoZSB0ZXh0IHRvIHRoZSB0aGUgY29udHJvbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjb250cm9sXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImxpbmVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGV4dFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgc2V0RWRpdFRleHQoY29udHJvbDogR3VpTWdDb250cm9sLCBsaW5lOiBudW1iZXIsIHRleHQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGd1aUludGVyYWN0aXZlOiBHdWlJbnRlcmFjdGl2ZSA9IG5ldyBHdWlJbnRlcmFjdGl2ZSgpO1xyXG4gICAgcmV0dXJuIGd1aUludGVyYWN0aXZlLnNldEVkaXRUZXh0KGNvbnRyb2wsIGxpbmUsIHRleHQpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEluc2VydCB0ZXh0IHRvIGEgdGV4dCBjb250cm9sIGF0IGEgZ2l2ZW4gcG9zaXRpb25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY29udHJvbFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJsaW5lXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0YXJ0UG9zaXRpb25cIj53aGVyZSB0byBhZGQgdGhlIHRleHQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGV4dFRvSW5zZXJ0XCI+dGhlIHRleHQgdG8gYWRkPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBpbnNlcnRFZGl0VGV4dChjb250cm9sOiBHdWlNZ0NvbnRyb2wsIGxpbmU6IG51bWJlciwgc3RhcnRQb3NpdGlvbjogbnVtYmVyLCB0ZXh0VG9JbnNlcnQ6IHN0cmluZyk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGd1aUludGVyYWN0aXZlOiBHdWlJbnRlcmFjdGl2ZSA9IG5ldyBHdWlJbnRlcmFjdGl2ZSgpO1xyXG4gICAgcmV0dXJuIGd1aUludGVyYWN0aXZlLmluc2VydEVkaXRUZXh0KGNvbnRyb2wsIGxpbmUsIHN0YXJ0UG9zaXRpb24sIHRleHRUb0luc2VydCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFN5bmMgY2FsbCB0byBnZXQgdGhlIHBvc2l0aW9uIG9mIHRoZSBjYXJldCBvbiB0aGUgY29udHJvbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjb250cm9sXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImxpbmVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibWdWYWx1ZVwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIGNhcmV0UG9zR2V0KGNvbnRyb2w6IEd1aU1nQ29udHJvbCwgbGluZTogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGxldCBndWlJbnRlcmFjdGl2ZTogR3VpSW50ZXJhY3RpdmUgPSBuZXcgR3VpSW50ZXJhY3RpdmUoKTtcclxuICAgIHJldHVybiBndWlJbnRlcmFjdGl2ZS5jYXJldFBvc0dldChjb250cm9sLCBsaW5lKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBhZGRSZWZyZXNoUGFnZShuYXZpZ2F0ZVRvUm9vdFJvdXRlIDogYm9vbGVhbiwgaW5pdGlhbFVybDogc3RyaW5nKSB7XHJcbiAgICBsZXQgZ3VpSW50ZXJhY3RpdmU6IEd1aUludGVyYWN0aXZlID0gbmV3IEd1aUludGVyYWN0aXZlKCk7XHJcblxyXG4gICAgZ3VpSW50ZXJhY3RpdmUuUmVmcmVzaFBhZ2UobmF2aWdhdGVUb1Jvb3RSb3V0ZSwgaW5pdGlhbFVybCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgU3luYyBjYWxsIHRvIGdldCBudW1iZXIgb2Ygcm93cyBpbiB0aGUgdGFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY29udHJvbFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgZ2V0Um93c0luUGFnZShjb250cm9sOiBHdWlNZ0NvbnRyb2wpOiBudW1iZXIge1xyXG4gICAgbGV0IGd1aUludGVyYWN0aXZlOiBHdWlJbnRlcmFjdGl2ZSA9IG5ldyBHdWlJbnRlcmFjdGl2ZSgpO1xyXG4gICAgbGV0IHJvd3NJblBhZ2UgPSBndWlJbnRlcmFjdGl2ZS5nZXRSb3dzSW5QYWdlKGNvbnRyb2wpO1xyXG4gICAgcmV0dXJuIChyb3dzSW5QYWdlID09PSAwID8gMSA6IHJvd3NJblBhZ2UpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHZXQgbWF4IG5vIG9mIHJvd3MgaW4gcGFnaW5hdGVkIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImNvbnRyb2xcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIGdldE1heFJvd3NJblBhZ2luYXRlZFRhYmxlKGNvbnRyb2w6IEd1aU1nQ29udHJvbCk6IG51bWJlciB7XHJcbiAgICBsZXQgZ3VpSW50ZXJhY3RpdmU6IEd1aUludGVyYWN0aXZlID0gbmV3IEd1aUludGVyYWN0aXZlKCk7XHJcbiAgICBsZXQgbWF4Um93cyA9IGd1aUludGVyYWN0aXZlLmdldE1heFJvd3NJblBhZ2luYXRlZFRhYmxlKGNvbnRyb2wpO1xyXG4gICAgcmV0dXJuIChtYXhSb3dzKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gR2V0IHRoZSBsYXN0IHJvdXRlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgZ2V0TGFzdFJvdXRlKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgZ3VpSW50ZXJhY3RpdmU6IEd1aUludGVyYWN0aXZlID0gbmV3IEd1aUludGVyYWN0aXZlKCk7XHJcbiAgICByZXR1cm4gZ3VpSW50ZXJhY3RpdmUuZ2V0TGFzdFJvdXRlKCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYWRkQm9vbFdpdGhMaW5lKGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZSwgb2JqOiBhbnksIGxpbmU6IG51bWJlciwgYm9vbDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgbGV0IGd1aUNvbW1hbmQ6IEd1aUNvbW1hbmQgPSBuZXcgR3VpQ29tbWFuZChvYmosIGNvbW1hbmRUeXBlKTtcclxuICAgIGd1aUNvbW1hbmQuQm9vbDEgPSBib29sO1xyXG4gICAgZ3VpQ29tbWFuZC5saW5lID0gbGluZTtcclxuICAgIEd1aUNvbW1hbmRRdWV1ZS5nZXRJbnN0YW5jZSgpLmFkZENvbW1hbmQoZ3VpQ29tbWFuZCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYWRkTm9QYXJhbWV0ZXJzKGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZSwgb2JqOiBhbnkpOiB2b2lkIHtcclxuICAgIGxldCBndWlDb21tYW5kOiBHdWlDb21tYW5kID0gbmV3IEd1aUNvbW1hbmQob2JqLCBjb21tYW5kVHlwZSk7XHJcbiAgICBHdWlDb21tYW5kUXVldWUuZ2V0SW5zdGFuY2UoKS5hZGRDb21tYW5kKGd1aUNvbW1hbmQpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFkZFdpdGhOdW1iZXIoY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLCBvYmo6IGFueSwgbnVtOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGxldCBndWlDb21tYW5kOiBHdWlDb21tYW5kID0gbmV3IEd1aUNvbW1hbmQob2JqLCBjb21tYW5kVHlwZSk7XHJcbiAgICBndWlDb21tYW5kLm51bWJlciA9IG51bTtcclxuICAgIEd1aUNvbW1hbmRRdWV1ZS5nZXRJbnN0YW5jZSgpLmFkZENvbW1hbmQoZ3VpQ29tbWFuZCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYWRkVmFsdWVXaXRoTGluZShjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUsIG9iajogYW55LCBsaW5lOiBudW1iZXIsIHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGxldCBndWlDb21tYW5kOiBHdWlDb21tYW5kID0gbmV3IEd1aUNvbW1hbmQob2JqLCBjb21tYW5kVHlwZSk7XHJcbiAgICBndWlDb21tYW5kLnZhbHVlID0gdmFsdWU7XHJcbiAgICBndWlDb21tYW5kLmxpbmUgPSBsaW5lO1xyXG4gICAgaWYgKGNvbW1hbmRUeXBlID09PSBDb21tYW5kVHlwZS5TRVRfVkFMVUUpXHJcbiAgICB7XHJcbiAgICAgIGlmIChvYmogaW5zdGFuY2VvZiAgR3VpTWdDb250cm9sICYmIG9iai5pc0Nob2ljZUNvbnRyb2woKSlcclxuICAgICAge1xyXG4gICAgICAgIGlmKHZhbHVlIDwgMClcclxuICAgICAgICAgICAgLy9UT0RPOiBIYW5kbGluZyBkb25lIGZvciBidWcgIyAzMjA4MyBmb3IgY29tYm9ib3ggb25seS4gVG8gYmUgZG9uZSBmb3IgYWxsIHR5cGVzIG9mIGNob2ljZSBjb250cm9sc1xyXG4gICAgICAgICAgaWYgKG9iai5pc0NvbWJvQm94KCkpXHJcbiAgICAgICAgICAgIGd1aUNvbW1hbmQudmFsdWUgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGd1aUNvbW1hbmQudmFsdWUgPSAnJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgR3VpQ29tbWFuZFF1ZXVlLmdldEluc3RhbmNlKCkuYWRkQ29tbWFuZChndWlDb21tYW5kKTtcclxuICB9XHJcblxyXG5cclxuICBzdGF0aWMgYWRkT3BlcmF0aW9uV2l0aExpbmUoY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLCBvYmo6IGFueSwgbGluZTogbnVtYmVyLCBvcGVyYXRpb246IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgbGV0IGd1aUNvbW1hbmQ6IEd1aUNvbW1hbmQgPSBuZXcgR3VpQ29tbWFuZChvYmosIGNvbW1hbmRUeXBlKTtcclxuICAgIGd1aUNvbW1hbmQub2JqMSA9IHZhbHVlO1xyXG4gICAgZ3VpQ29tbWFuZC5saW5lID0gbGluZTtcclxuICAgIGd1aUNvbW1hbmQuT3BlcmF0aW9uID0gb3BlcmF0aW9uO1xyXG4gICAgR3VpQ29tbWFuZFF1ZXVlLmdldEluc3RhbmNlKCkuYWRkQ29tbWFuZChndWlDb21tYW5kKTtcclxuICB9XHJcblxyXG5cclxuICBzdGF0aWMgYWRkT3BlbnN1YmZvcm0oY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLCBvYmo6IE9iamVjdCwgY2FsbGVkVGFza1RhZzogc3RyaW5nLCBzdWJmb3JtQ29udHJvbE5hbWU6IHN0cmluZywgZm9ybU5hbWU6IHN0cmluZywgaW5wdXRDb250cm9sczogc3RyaW5nLCByb3V0ZXJQYXRoOiBzdHJpbmcsIHJvdXRlclBhcmFtczogTGlzdDxhbnk+LCBpbkRlZmF1bHRSb3V0ZXJPdXRsZXQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGxldCBndWlDb21tYW5kOiBHdWlDb21tYW5kID0gbmV3IEd1aUNvbW1hbmQob2JqLCBjb21tYW5kVHlwZSk7XHJcbiAgICBndWlDb21tYW5kLnN0ciA9IGNhbGxlZFRhc2tUYWc7XHJcbiAgICBndWlDb21tYW5kLm9iajEgPSBzdWJmb3JtQ29udHJvbE5hbWU7XHJcbiAgICBndWlDb21tYW5kLnVzZXJEcm9wRm9ybWF0ID0gZm9ybU5hbWU7XHJcbiAgICBndWlDb21tYW5kLmZpbGVOYW1lID0gaW5wdXRDb250cm9scztcclxuICAgIGd1aUNvbW1hbmQuQm9vbDEgPSBpbkRlZmF1bHRSb3V0ZXJPdXRsZXQ7XHJcbiAgICBndWlDb21tYW5kLmNvbnRleHRJRCA9IHJvdXRlclBhdGg7XHJcbiAgICBndWlDb21tYW5kLnBhcmFtcyA9IHJvdXRlclBhcmFtcztcclxuICAgIEd1aUNvbW1hbmRRdWV1ZS5nZXRJbnN0YW5jZSgpLmFkZENvbW1hbmQoZ3VpQ29tbWFuZCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYWRkQ2xvc2VzdWJmb3JtKGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZSwgb2JqOiBPYmplY3QsIGNhbGxlZFRhc2tUYWc6IHN0cmluZywgc3ViZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmcsIGZvcm1OYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBndWlDb21tYW5kOiBHdWlDb21tYW5kID0gbmV3IEd1aUNvbW1hbmQob2JqLCBjb21tYW5kVHlwZSk7XHJcbiAgICBndWlDb21tYW5kLnN0ciA9IGNhbGxlZFRhc2tUYWc7XHJcbiAgICBndWlDb21tYW5kLm9iajEgPSBzdWJmb3JtQ29udHJvbE5hbWU7XHJcbiAgICBndWlDb21tYW5kLnVzZXJEcm9wRm9ybWF0ID0gZm9ybU5hbWU7XHJcbiAgICBHdWlDb21tYW5kUXVldWUuZ2V0SW5zdGFuY2UoKS5hZGRDb21tYW5kKGd1aUNvbW1hbmQpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFkZE9wZW5Gb3JtKG9iajogT2JqZWN0LCBmb3JtTmFtZTogc3RyaW5nLCBoYW5kbGVyVGFza1RhZzogc3RyaW5nLCBjYWxsZWRUYXNrVGFnOiBzdHJpbmcsIGlucHV0Q29udHJvbHM6IHN0cmluZywgaXNEaWFsb2c6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGxldCBndWlDb21tYW5kOiBHdWlDb21tYW5kID0gbmV3IEd1aUNvbW1hbmQob2JqLCBDb21tYW5kVHlwZS5PUEVOX0ZPUk0pO1xyXG4gICAgZ3VpQ29tbWFuZC5UYXNrVGFnID0gaGFuZGxlclRhc2tUYWc7XHJcbiAgICBndWlDb21tYW5kLnN0ciA9IGZvcm1OYW1lO1xyXG4gICAgZ3VpQ29tbWFuZC5zdHJpbmdMaXN0ID0gbmV3IExpc3Q8c3RyaW5nPigpO1xyXG4gICAgZ3VpQ29tbWFuZC5zdHJpbmdMaXN0LnB1c2goY2FsbGVkVGFza1RhZyk7XHJcbiAgICBndWlDb21tYW5kLnN0cmluZ0xpc3QucHVzaChpbnB1dENvbnRyb2xzKTtcclxuICAgIGd1aUNvbW1hbmQuQm9vbDEgPSBpc0RpYWxvZztcclxuICAgIEd1aUNvbW1hbmRRdWV1ZS5nZXRJbnN0YW5jZSgpLmFkZENvbW1hbmQoZ3VpQ29tbWFuZCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYWRkQ2xvc2VGb3JtKG9iajogT2JqZWN0LCBoYW5kbGVyVGFza1RhZzogc3RyaW5nLCBjYWxsZWRUYXNrVGFnOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBndWlDb21tYW5kOiBHdWlDb21tYW5kID0gbmV3IEd1aUNvbW1hbmQob2JqLCBDb21tYW5kVHlwZS5DTE9TRV9GT1JNKTtcclxuICAgIGd1aUNvbW1hbmQuVGFza1RhZyA9IGhhbmRsZXJUYXNrVGFnO1xyXG4gICAgZ3VpQ29tbWFuZC5zdHIgPSBjYWxsZWRUYXNrVGFnO1xyXG4gICAgR3VpQ29tbWFuZFF1ZXVlLmdldEluc3RhbmNlKCkuYWRkQ29tbWFuZChndWlDb21tYW5kKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBhZGRDYWxsSlMoZm9ybSA6IGFueSwgZm9ybU5hbWU6IHN0cmluZywgbmFtZTogc3RyaW5nLCBhcmdzOiBBcnJheTxhbnk+KTogc3RyaW5nIHtcclxuICAgIGxldCBndWlJbnRlcmFjdGl2ZTogR3VpSW50ZXJhY3RpdmUgPSBuZXcgR3VpSW50ZXJhY3RpdmUoKTtcclxuICAgIHJldHVybiBndWlJbnRlcmFjdGl2ZS5FeGVjdXRlQ2FsbEpTKGZvcm0gLCBmb3JtTmFtZSwgIG5hbWUsIGFyZ3MpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFkZElzTG9nZ2VkSW4oc2V0Qm9vbDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgbGV0IGd1aUNvbW1hbmQ6IEd1aUNvbW1hbmQgPSBuZXcgR3VpQ29tbWFuZChudWxsLCBDb21tYW5kVHlwZS5TRVRfSVNfTE9HR0VEX0lOKTtcclxuICAgIGd1aUNvbW1hbmQuQm9vbDEgPSBzZXRCb29sO1xyXG4gICAgR3VpQ29tbWFuZFF1ZXVlLmdldEluc3RhbmNlKCkuYWRkQ29tbWFuZChndWlDb21tYW5kKTtcclxuICB9XHJcblxyXG4gIC8vIGFkZHMgYSBjb21tYW5kIHRvIHNob3cgb3IgaGlkZSB0aGUgc3Bpbm5lclxyXG4gIHN0YXRpYyBhZGRTaG93U3Bpbm5lcihzaG93OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBsZXQgZ3VpQ29tbWFuZDogR3VpQ29tbWFuZCA9IG5ldyBHdWlDb21tYW5kKG51bGwsIENvbW1hbmRUeXBlLlNIT1dfU1BJTk5FUik7XHJcbiAgICBndWlDb21tYW5kLkJvb2wxID0gc2hvdztcclxuICAgIEd1aUNvbW1hbmRRdWV1ZS5nZXRJbnN0YW5jZSgpLmFkZENvbW1hbmQoZ3VpQ29tbWFuZCk7XHJcbiAgfVxyXG5cclxuICAvLyBhZGRzIGEgY29tbWFuZCB3aGljaCBpcyBub3QgcmVsYXRlZCB0byBhIHNwZWNpZmljIHRhc2tcclxuICBzdGF0aWMgYWRkR2xvYmFsQ29tbWFuZChjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUpOiB2b2lkIHtcclxuICAgIGxldCBndWlDb21tYW5kOiBHdWlDb21tYW5kID0gbmV3IEd1aUNvbW1hbmQobnVsbCwgY29tbWFuZFR5cGUpO1xyXG4gICAgR3VpQ29tbWFuZFF1ZXVlLmdldEluc3RhbmNlKCkuYWRkQ29tbWFuZChndWlDb21tYW5kKTtcclxuICB9XHJcblxyXG4gIC8vIGFkZHMgYSBjb21tYW5kIHRvIGRpc3BsYXkgdGhlIEhUTUwgZXJyb3IgcmVjZWl2ZWQgZnJvbSB0aGUgcmVxdWVzZXJcclxuICBzdGF0aWMgYWRkU2hvd0hUTUxFcnJvcihjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUsIGVycm9yOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBndWlDb21tYW5kOiBHdWlDb21tYW5kID0gbmV3IEd1aUNvbW1hbmQobnVsbCwgY29tbWFuZFR5cGUpO1xyXG4gICAgZ3VpQ29tbWFuZC5zdHIgPSBlcnJvcjtcclxuICAgIEd1aUNvbW1hbmRRdWV1ZS5nZXRJbnN0YW5jZSgpLmFkZENvbW1hbmQoZ3VpQ29tbWFuZCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZXhlY3V0ZSBhbGwgcGVuZGluZyBjb21tYW5kcywgYXN5bmNocm9ub3VzbHlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBiZWdpbkludm9rZSgpOiB2b2lkIHtcclxuICAgIEd1aUNvbW1hbmRRdWV1ZS5nZXRJbnN0YW5jZSgpLmJlZ2luSW52b2tlKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgZXhlY3V0ZSBhbGwgcGVuZGluZyBjb21tYW5kcywgc3luY2hyb25vdXNseVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIGludm9rZSgpOiB2b2lkIHtcclxuICAgIEd1aUNvbW1hbmRRdWV1ZS5nZXRJbnN0YW5jZSgpLmludm9rZSgpO1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
184
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ29tbWFuZHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9ndWkvc3JjL0NvbW1hbmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxJQUFJLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUUxQyxPQUFPLEVBQUMsY0FBYyxFQUFDLE1BQU0sMEJBQTBCLENBQUM7QUFDeEQsT0FBTyxFQUFDLFlBQVksRUFBQyxNQUFNLG9CQUFvQixDQUFDO0FBQ2hELE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxZQUFZLENBQUM7QUFDdkMsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLDJCQUEyQixDQUFDO0FBQzFELE9BQU8sRUFBQyxVQUFVLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQVVoRCxNQUFNLE9BQU8sUUFBUTtJQUdYLE1BQU0sQ0FBRSxlQUFlLEdBQUcsSUFBSSxDQUFDO0lBS3ZDLE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxlQUFlO1FBQ3ZDLElBQUksQ0FBQyxlQUFlLEdBQUcsZUFBZSxDQUFDO0lBQ3pDLENBQUM7SUFLRCxNQUFNLENBQUMsY0FBYyxDQUFDLE1BQWM7UUFDbEMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBU0QsTUFBTSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsS0FBYSxFQUFFLEdBQVcsRUFBRSxLQUFhO1FBQy9ELElBQUksY0FBYyxHQUFtQixJQUFJLGNBQWMsRUFBRSxDQUFDO1FBQzFELElBQUksV0FBbUIsQ0FBQztRQUV4QixNQUFNLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7WUFDNUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2pDLGNBQWMsQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUUvQyxDQUFDLENBQUMsQ0FBQyxJ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VSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7UUFDdkIsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUN2RCxDQUFDO0lBS0QsTUFBTSxDQUFDLFdBQVc7UUFDaEIsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO0lBQzlDLENBQUM7SUFLRCxNQUFNLENBQUMsTUFBTTtRQUNYLGVBQWUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN6QyxDQUFDO0lBRUQ7SUFDQSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtMaXN0fSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcbmltcG9ydCB7R3VpTWdGb3JtfSBmcm9tICcuL2d1aS9HdWlNZ0Zvcm0nO1xyXG5pbXBvcnQge0d1aUludGVyYWN0aXZlfSBmcm9tICcuL2d1aS9sb3cvR3VpSW50ZXJhY3RpdmUnO1xyXG5pbXBvcnQge0d1aU1nQ29udHJvbH0gZnJvbSAnLi9ndWkvR3VpTWdDb250cm9sJztcclxuaW1wb3J0IHtDb21tYW5kVHlwZX0gZnJvbSAnLi9HdWlFbnVtcyc7XHJcbmltcG9ydCB7R3VpQ29tbWFuZFF1ZXVlfSBmcm9tICcuL2d1aS9sb3cvR3VpQ29tbWFuZFF1ZXVlJztcclxuaW1wb3J0IHtHdWlDb21tYW5kfSBmcm9tICcuL2d1aS9sb3cvR3VpQ29tbWFuZCc7XHJcblxyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICBDb21tYW5kcyB0byB0aGUgR1VJIHRocmVhZC5cclxuLy8vICAgVGhlcmXigJlyZSB0d28gdHlwZXMgb2YgY29tbWFuZHMgKGdyb3VwZWQgaW4gI3JlZ2lvbnMpOlxyXG4vLy8gICAgICAxLlx0Q29tbWFuZHMgdGhhdCBhcmUgZXhlY3V0ZWQgaW1tZWRpYXRlbHkuXHJcbi8vLyAgICAgIDIuXHRDb21tYW5kcyB0aGF0IGFyZSBxdWV1ZWQgKG92ZXJsb2FkZWQgbWV0aG9kcyDigJhhZGRBc3luY+KAmSkgYW5kIHRoZW4gZXhlY3V0ZWQsXHJcbi8vLyAgICAgICAgIGVpdGhlciBzeW5jaHJvbm91c2x5IChtZXRob2Qg4oCYaW52b2tl4oCZKSBvciBhc3luY2hyb25vdXNseSAobWV0aG9kIOKAmGJlZ2luSW52b2tl4oCZKS5cclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIENvbW1hbmRzIHtcclxuXHJcblxyXG4gIHByaXZhdGUgc3RhdGljICByZXNvbHZlQ2FsbGJhY2sgPSBudWxsOyAvLyBjYWxsYmFjayB0byByZXNvbHZlIHRoZSBwcm9taXNlXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gc2F2ZSB0aGUgY2FsbGJhY2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBTZXRSZXNvbHZlQ2FsbGJhY2socmVzb2x2ZUNhbGxiYWNrKSB7XHJcbiAgICB0aGlzLnJlc29sdmVDYWxsYmFjayA9IHJlc29sdmVDYWxsYmFjaztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gcmVzb2x2ZSBwcm9taXNlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgUmVzb2x2ZVByb21pc2UocmVzdWx0OiBudW1iZXIpIHtcclxuICAgIHRoaXMucmVzb2x2ZUNhbGxiYWNrKHJlc3VsdCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgU3luYyBjYWxsIHRvIGRpc3BsYXkgbWVzc2FnZSBib3hcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidGl0bGVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibXNnXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0eWxlXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBhc3luYyBtZXNzYWdlQm94KHRpdGxlOiBzdHJpbmcsIG1zZzogc3RyaW5nLCBzdHlsZTogbnVtYmVyKTogUHJvbWlzZTxudW1iZXI+IHtcclxuICAgIGxldCBndWlJbnRlcmFjdGl2ZTogR3VpSW50ZXJhY3RpdmUgPSBuZXcgR3VpSW50ZXJhY3RpdmUoKTtcclxuICAgIGxldCByZXR1cm5WYWx1ZTogbnVtYmVyO1xyXG5cclxuICAgIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIHRoaXMuU2V0UmVzb2x2ZUNhbGxiYWNrKHJlc29sdmUpO1xyXG4gICAgICBndWlJbnRlcmFjdGl2ZS5tZXNzYWdlQm94KHRpdGxlLCBtc2csIHN0eWxlKTtcclxuICAgICAvLyBzYXZlIHRoZSByZXNvbHZlIGNhbGxiYWNrIG9uIEV2ZW50c01hbmFnZXIsIHNvIHRoYXQgaXQgY2FuIGJlIHJlc29sdmVkIG9uIGNsb3NpbmcgbW9kYWwgd2luZG93XHJcbiAgICB9KS50aGVuKChyZXM6IG51bWJlcik9PntyZXR1cm5WYWx1ZSA9IHJlczt9KTtcclxuICAgIHJldHVybiByZXR1cm5WYWx1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUHJvbWlzZSB3YWl0cyB0aWxsIHRoZSBvdmVybGF5IHdpbmRvdyBnZXRzIE9wZW5lZCB0aHJvdWdoIGd1aUludGVyYWN0aXZlIGNvbW1hbmQuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgYXN5bmMgb3Blbk92ZXJsYXlGb3JtKG9iajogT2JqZWN0LCBmb3JtTmFtZTogc3RyaW5nLCBoYW5kbGVyVGFza1RhZzogc3RyaW5nLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVkVGFza1RhZzogc3RyaW5nLCBpbnB1dENvbnRyb2xzOiBzdHJpbmcsIGlzRGlhbG9nOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBsZXQgZ3VpSW50ZXJhY3RpdmU6IEd1aUludGVyYWN0aXZlID0gbmV3IEd1aUludGVyYWN0aXZlKCk7XHJcblxyXG4gICAgYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcclxuICAgICAgdGhpcy5TZXRSZXNvbHZlQ2FsbGJhY2socmVzb2x2ZSk7XHJcbiAgICAgIGd1aUludGVyYWN0aXZlLkV4ZWN1dGVPcGVuT3ZlcmxheUZvcm0ob2JqLCBmb3JtTmFtZSwgaGFuZGxlclRhc2tUYWcsXHJcbiAgICAgICAgY2FsbGVkVGFza1RhZywgaW5wdXRDb250cm9scywgaXNEaWFsb2cpO1xyXG4gICAgfSkudGhlbigpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0aXRsZSB0byBicm93c2VyXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRvcE1vc3RGb3JtXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRpdGxlXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgc2V0VGl0bGUodG9wTW9zdEZvcm06IEd1aU1nRm9ybSwgdGl0bGU6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgbGV0IGd1aUludGVyYWN0aXZlOiBHdWlJbnRlcmFjdGl2ZSA9IG5ldyBHdWlJbnRlcmFjdGl2ZSgpO1xyXG4gICAgZ3VpSW50ZXJhY3RpdmUuc2V0VGl0bGUodG9wTW9zdEZvcm0sIHRpdGxlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBTeW5jIGNhbGwuIFRoaXMgbWV0aG9kZSBpcyBzZXQgVFJVRVxcRkFMU0UgdGhhdCBHdWlVdGlsZXNcXEdldFZhbHVlKCkgbWV0aG9kIHdpbGwgYmUgdXNlXHJcbiAgLy8vICAgdGhpcyBmYWxnIHNheSBpZiB0byByZXR1cm4gdGhlIDogKHRydWUpIHN1Z2dlc3RlZCB2YWx1ZSBvciAoZmFsc2UpdGhlIHJlYWwgdmFsdWVcclxuICAvLy8gICB0aGlzIG1ldGhvZCBpcyB1c2UgZm9yIE1HX0FDVF9DVFJMX01PRElGWVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInJldFN1Z2dlc3RlZFZhbHVlXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgc2V0R2V0U3VnZ2VzdGVkVmFsdWVPZkNob2ljZUNvbnRyb2xPblRhZ0RhdGEoY3RybDogR3VpTWdDb250cm9sLCBsaW5lOiBudW1iZXIsIHJldFN1Z2dlc3RlZFZhbHVlOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBsZXQgZ3VpSW50ZXJhY3RpdmU6IEd1aUludGVyYWN0aXZlID0gbmV3IEd1aUludGVyYWN0aXZlKCk7XHJcbiAgICBndWlJbnRlcmFjdGl2ZS5zZXRHZXRTdWdnZXN0ZWRWYWx1ZU9mQ2hvaWNlQ29udHJvbE9uVGFnRGF0YShjdHJsLCBsaW5lLCByZXRTdWdnZXN0ZWRWYWx1ZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFN5bmMgY2FsbCB0byBnZXQgdmFsdWUgb2YgdGhlIGNvbnRyb2xcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwib2JqXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1nVmFsdWVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibGluZVwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIGdldFZhbHVlKG9iajogYW55LCBsaW5lOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IGd1aUludGVyYWN0aXZlOiBHdWlJbnRlcmFjdGl2ZSA9IG5ldyBHdWlJbnRlcmFjdGl2ZSgpO1xyXG4gICAgcmV0dXJuIGd1aUludGVyYWN0aXZlLmdldFZhbHVlKG9iaiwgbGluZSk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFN5bmMgY2FsbCB0byBnZXQgdGFibGUgdG9wIGluZGV4XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRhYmxlY29udHJvbFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgZ2V0VG9wSW5kZXgodGFibGVjb250cm9sOiBHdWlNZ0NvbnRyb2wpOiBudW1iZXIge1xyXG4gICAgbGV0IGd1aUludGVyYWN0aXZlOiBHdWlJbnRlcmFjdGl2ZSA9IG5ldyBHdWlJbnRlcmFjdGl2ZSgpO1xyXG4gICAgcmV0dXJuIGd1aUludGVyYWN0aXZlLmdldFRvcEluZGV4KHRhYmxlY29udHJvbCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFN5bmMgY2FsbCB0byBnZXQgaXMgcm93IGVkaXRpbmcgb24gcm93IGluZGV4XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRhYmxlY29udHJvbFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgZ2V0SXNSb3dFZGl0aW5nKHRhYmxlY29udHJvbDogYW55LCByb3dJbmRleDogbnVtYmVyLCBpc0xpbmVNb2RlOiBib29sZWFuKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgZ3VpSW50ZXJhY3RpdmU6IEd1aUludGVyYWN0aXZlID0gbmV3IEd1aUludGVyYWN0aXZlKCk7XHJcbiAgICByZXR1cm4gZ3VpSW50ZXJhY3RpdmUuZ2V0SXNSb3dFZGl0aW5nKHRhYmxlY29udHJvbCwgcm93SW5kZXgsIGlzTGluZU1vZGUpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgU3luYyBjYWxsIHRvIHNldCB0aGUgdGV4dCB0byB0aGUgdGhlIGNvbnRyb2xcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY29udHJvbFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJsaW5lXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRleHRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIHNldEVkaXRUZXh0KGNvbnRyb2w6IEd1aU1nQ29udHJvbCwgbGluZTogbnVtYmVyLCB0ZXh0OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGxldCBndWlJbnRlcmFjdGl2ZTogR3VpSW50ZXJhY3RpdmUgPSBuZXcgR3VpSW50ZXJhY3RpdmUoKTtcclxuICAgIHJldHVybiBndWlJbnRlcmFjdGl2ZS5zZXRFZGl0VGV4dChjb250cm9sLCBsaW5lLCB0ZXh0KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBJbnNlcnQgdGV4dCB0byBhIHRleHQgY29udHJvbCBhdCBhIGdpdmVuIHBvc2l0aW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImNvbnRyb2xcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibGluZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdGFydFBvc2l0aW9uXCI+d2hlcmUgdG8gYWRkIHRoZSB0ZXh0PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInRleHRUb0luc2VydFwiPnRoZSB0ZXh0IHRvIGFkZDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgaW5zZXJ0RWRpdFRleHQoY29udHJvbDogR3VpTWdDb250cm9sLCBsaW5lOiBudW1iZXIsIHN0YXJ0UG9zaXRpb246IG51bWJlciwgdGV4dFRvSW5zZXJ0OiBzdHJpbmcpOiBib29sZWFuIHtcclxuICAgIGxldCBndWlJbnRlcmFjdGl2ZTogR3VpSW50ZXJhY3RpdmUgPSBuZXcgR3VpSW50ZXJhY3RpdmUoKTtcclxuICAgIHJldHVybiBndWlJbnRlcmFjdGl2ZS5pbnNlcnRFZGl0VGV4dChjb250cm9sLCBsaW5lLCBzdGFydFBvc2l0aW9uLCB0ZXh0VG9JbnNlcnQpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBTeW5jIGNhbGwgdG8gZ2V0IHRoZSBwb3NpdGlvbiBvZiB0aGUgY2FyZXQgb24gdGhlIGNvbnRyb2xcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY29udHJvbFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJsaW5lXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1nVmFsdWVcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBjYXJldFBvc0dldChjb250cm9sOiBHdWlNZ0NvbnRyb2wsIGxpbmU6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBsZXQgZ3VpSW50ZXJhY3RpdmU6IEd1aUludGVyYWN0aXZlID0gbmV3IEd1aUludGVyYWN0aXZlKCk7XHJcbiAgICByZXR1cm4gZ3VpSW50ZXJhY3RpdmUuY2FyZXRQb3NHZXQoY29udHJvbCwgbGluZSk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYWRkUmVmcmVzaFBhZ2UobmF2aWdhdGVUb1Jvb3RSb3V0ZSA6IGJvb2xlYW4sIGluaXRpYWxVcmw6IHN0cmluZykge1xyXG4gICAgbGV0IGd1aUludGVyYWN0aXZlOiBHdWlJbnRlcmFjdGl2ZSA9IG5ldyBHdWlJbnRlcmFjdGl2ZSgpO1xyXG5cclxuICAgIGd1aUludGVyYWN0aXZlLlJlZnJlc2hQYWdlKG5hdmlnYXRlVG9Sb290Um91dGUsIGluaXRpYWxVcmwpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFN5bmMgY2FsbCB0byBnZXQgbnVtYmVyIG9mIHJvd3MgaW4gdGhlIHRhYmxlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImNvbnRyb2xcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIGdldFJvd3NJblBhZ2UoY29udHJvbDogR3VpTWdDb250cm9sKTogbnVtYmVyIHtcclxuICAgIGxldCBndWlJbnRlcmFjdGl2ZTogR3VpSW50ZXJhY3RpdmUgPSBuZXcgR3VpSW50ZXJhY3RpdmUoKTtcclxuICAgIGxldCByb3dzSW5QYWdlID0gZ3VpSW50ZXJhY3RpdmUuZ2V0Um93c0luUGFnZShjb250cm9sKTtcclxuICAgIHJldHVybiAocm93c0luUGFnZSA9PT0gMCA/IDEgOiByb3dzSW5QYWdlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gR2V0IG1heCBubyBvZiByb3dzIGluIHBhZ2luYXRlZCB0YWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjb250cm9sXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBnZXRNYXhSb3dzSW5QYWdpbmF0ZWRUYWJsZShjb250cm9sOiBHdWlNZ0NvbnRyb2wpOiBudW1iZXIge1xyXG4gICAgbGV0IGd1aUludGVyYWN0aXZlOiBHdWlJbnRlcmFjdGl2ZSA9IG5ldyBHdWlJbnRlcmFjdGl2ZSgpO1xyXG4gICAgbGV0IG1heFJvd3MgPSBndWlJbnRlcmFjdGl2ZS5nZXRNYXhSb3dzSW5QYWdpbmF0ZWRUYWJsZShjb250cm9sKTtcclxuICAgIHJldHVybiAobWF4Um93cyk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEdldCB0aGUgbGFzdCByb3V0ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIGdldExhc3RSb3V0ZSgpOiBzdHJpbmcge1xyXG4gICAgbGV0IGd1aUludGVyYWN0aXZlOiBHdWlJbnRlcmFjdGl2ZSA9IG5ldyBHdWlJbnRlcmFjdGl2ZSgpO1xyXG4gICAgcmV0dXJuIGd1aUludGVyYWN0aXZlLmdldExhc3RSb3V0ZSgpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFkZEJvb2xXaXRoTGluZShjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUsIG9iajogYW55LCBsaW5lOiBudW1iZXIsIGJvb2w6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGxldCBndWlDb21tYW5kOiBHdWlDb21tYW5kID0gbmV3IEd1aUNvbW1hbmQob2JqLCBjb21tYW5kVHlwZSk7XHJcbiAgICBndWlDb21tYW5kLkJvb2wxID0gYm9vbDtcclxuICAgIGd1aUNvbW1hbmQubGluZSA9IGxpbmU7XHJcbiAgICBHdWlDb21tYW5kUXVldWUuZ2V0SW5zdGFuY2UoKS5hZGRDb21tYW5kKGd1aUNvbW1hbmQpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFkZE5vUGFyYW1ldGVycyhjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUsIG9iajogYW55KTogdm9pZCB7XHJcbiAgICBsZXQgZ3VpQ29tbWFuZDogR3VpQ29tbWFuZCA9IG5ldyBHdWlDb21tYW5kKG9iaiwgY29tbWFuZFR5cGUpO1xyXG4gICAgR3VpQ29tbWFuZFF1ZXVlLmdldEluc3RhbmNlKCkuYWRkQ29tbWFuZChndWlDb21tYW5kKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBhZGRXaXRoTnVtYmVyKGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZSwgb2JqOiBhbnksIG51bTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBsZXQgZ3VpQ29tbWFuZDogR3VpQ29tbWFuZCA9IG5ldyBHdWlDb21tYW5kKG9iaiwgY29tbWFuZFR5cGUpO1xyXG4gICAgZ3VpQ29tbWFuZC5udW1iZXIgPSBudW07XHJcbiAgICBHdWlDb21tYW5kUXVldWUuZ2V0SW5zdGFuY2UoKS5hZGRDb21tYW5kKGd1aUNvbW1hbmQpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFkZFZhbHVlV2l0aExpbmUoY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLCBvYmo6IGFueSwgbGluZTogbnVtYmVyLCB2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBsZXQgZ3VpQ29tbWFuZDogR3VpQ29tbWFuZCA9IG5ldyBHdWlDb21tYW5kKG9iaiwgY29tbWFuZFR5cGUpO1xyXG4gICAgZ3VpQ29tbWFuZC52YWx1ZSA9IHZhbHVlO1xyXG4gICAgZ3VpQ29tbWFuZC5saW5lID0gbGluZTtcclxuICAgIGlmIChjb21tYW5kVHlwZSA9PT0gQ29tbWFuZFR5cGUuU0VUX1ZBTFVFKVxyXG4gICAge1xyXG4gICAgICBpZiAob2JqIGluc3RhbmNlb2YgIEd1aU1nQ29udHJvbCAmJiBvYmouaXNDaG9pY2VDb250cm9sKCkpXHJcbiAgICAgIHtcclxuICAgICAgICBpZih2YWx1ZSA8IDApXHJcbiAgICAgICAgICAgIC8vVE9ETzogSGFuZGxpbmcgZG9uZSBmb3IgYnVnICMgMzIwODMgZm9yIGNvbWJvYm94IG9ubHkuIFRvIGJlIGRvbmUgZm9yIGFsbCB0eXBlcyBvZiBjaG9pY2UgY29udHJvbHNcclxuICAgICAgICAgIGlmIChvYmouaXNDb21ib0JveCgpKVxyXG4gICAgICAgICAgICBndWlDb21tYW5kLnZhbHVlID0gdW5kZWZpbmVkO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBndWlDb21tYW5kLnZhbHVlID0gJyc7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIEd1aUNvbW1hbmRRdWV1ZS5nZXRJbnN0YW5jZSgpLmFkZENvbW1hbmQoZ3VpQ29tbWFuZCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgc3RhdGljIGFkZE9wZXJhdGlvbldpdGhMaW5lKGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZSwgb2JqOiBhbnksIGxpbmU6IG51bWJlciwgb3BlcmF0aW9uOiBzdHJpbmcsIHZhbHVlOiBhbnkpOiB2b2lkIHtcclxuICAgIGxldCBndWlDb21tYW5kOiBHdWlDb21tYW5kID0gbmV3IEd1aUNvbW1hbmQob2JqLCBjb21tYW5kVHlwZSk7XHJcbiAgICBndWlDb21tYW5kLm9iajEgPSB2YWx1ZTtcclxuICAgIGd1aUNvbW1hbmQubGluZSA9IGxpbmU7XHJcbiAgICBndWlDb21tYW5kLk9wZXJhdGlvbiA9IG9wZXJhdGlvbjtcclxuICAgIEd1aUNvbW1hbmRRdWV1ZS5nZXRJbnN0YW5jZSgpLmFkZENvbW1hbmQoZ3VpQ29tbWFuZCk7XHJcbiAgfVxyXG5cclxuXHJcbiAgc3RhdGljIGFkZE9wZW5zdWJmb3JtKGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZSwgb2JqOiBPYmplY3QsIGNhbGxlZFRhc2tUYWc6IHN0cmluZywgc3ViZm9ybUNvbnRyb2xOYW1lOiBzdHJpbmcsIGZvcm1OYW1lOiBzdHJpbmcsIGlucHV0Q29udHJvbHM6IHN0cmluZywgcm91dGVyUGF0aDogc3RyaW5nLCByb3V0ZXJQYXJhbXM6IExpc3Q8YW55PiwgaW5EZWZhdWx0Um91dGVyT3V0bGV0OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBsZXQgZ3VpQ29tbWFuZDogR3VpQ29tbWFuZCA9IG5ldyBHdWlDb21tYW5kKG9iaiwgY29tbWFuZFR5cGUpO1xyXG4gICAgZ3VpQ29tbWFuZC5zdHIgPSBjYWxsZWRUYXNrVGFnO1xyXG4gICAgZ3VpQ29tbWFuZC5vYmoxID0gc3ViZm9ybUNvbnRyb2xOYW1lO1xyXG4gICAgZ3VpQ29tbWFuZC51c2VyRHJvcEZvcm1hdCA9IGZvcm1OYW1lO1xyXG4gICAgZ3VpQ29tbWFuZC5maWxlTmFtZSA9IGlucHV0Q29udHJvbHM7XHJcbiAgICBndWlDb21tYW5kLkJvb2wxID0gaW5EZWZhdWx0Um91dGVyT3V0bGV0O1xyXG4gICAgZ3VpQ29tbWFuZC5jb250ZXh0SUQgPSByb3V0ZXJQYXRoO1xyXG4gICAgZ3VpQ29tbWFuZC5wYXJhbXMgPSByb3V0ZXJQYXJhbXM7XHJcbiAgICBHdWlDb21tYW5kUXVldWUuZ2V0SW5zdGFuY2UoKS5hZGRDb21tYW5kKGd1aUNvbW1hbmQpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFkZENsb3Nlc3ViZm9ybShjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUsIG9iajogT2JqZWN0LCBjYWxsZWRUYXNrVGFnOiBzdHJpbmcsIHN1YmZvcm1Db250cm9sTmFtZTogc3RyaW5nLCBmb3JtTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgZ3VpQ29tbWFuZDogR3VpQ29tbWFuZCA9IG5ldyBHdWlDb21tYW5kKG9iaiwgY29tbWFuZFR5cGUpO1xyXG4gICAgZ3VpQ29tbWFuZC5zdHIgPSBjYWxsZWRUYXNrVGFnO1xyXG4gICAgZ3VpQ29tbWFuZC5vYmoxID0gc3ViZm9ybUNvbnRyb2xOYW1lO1xyXG4gICAgZ3VpQ29tbWFuZC51c2VyRHJvcEZvcm1hdCA9IGZvcm1OYW1lO1xyXG4gICAgR3VpQ29tbWFuZFF1ZXVlLmdldEluc3RhbmNlKCkuYWRkQ29tbWFuZChndWlDb21tYW5kKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBhZGRPcGVuRm9ybShvYmo6IE9iamVjdCwgZm9ybU5hbWU6IHN0cmluZywgaGFuZGxlclRhc2tUYWc6IHN0cmluZywgY2FsbGVkVGFza1RhZzogc3RyaW5nLCBpbnB1dENvbnRyb2xzOiBzdHJpbmcsIGlzRGlhbG9nOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBsZXQgZ3VpQ29tbWFuZDogR3VpQ29tbWFuZCA9IG5ldyBHdWlDb21tYW5kKG9iaiwgQ29tbWFuZFR5cGUuT1BFTl9GT1JNKTtcclxuICAgIGd1aUNvbW1hbmQuVGFza1RhZyA9IGhhbmRsZXJUYXNrVGFnO1xyXG4gICAgZ3VpQ29tbWFuZC5zdHIgPSBmb3JtTmFtZTtcclxuICAgIGd1aUNvbW1hbmQuc3RyaW5nTGlzdCA9IG5ldyBMaXN0PHN0cmluZz4oKTtcclxuICAgIGd1aUNvbW1hbmQuc3RyaW5nTGlzdC5wdXNoKGNhbGxlZFRhc2tUYWcpO1xyXG4gICAgZ3VpQ29tbWFuZC5zdHJpbmdMaXN0LnB1c2goaW5wdXRDb250cm9scyk7XHJcbiAgICBndWlDb21tYW5kLkJvb2wxID0gaXNEaWFsb2c7XHJcbiAgICBHdWlDb21tYW5kUXVldWUuZ2V0SW5zdGFuY2UoKS5hZGRDb21tYW5kKGd1aUNvbW1hbmQpO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIGFkZENsb3NlRm9ybShvYmo6IE9iamVjdCwgaGFuZGxlclRhc2tUYWc6IHN0cmluZywgY2FsbGVkVGFza1RhZzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgZ3VpQ29tbWFuZDogR3VpQ29tbWFuZCA9IG5ldyBHdWlDb21tYW5kKG9iaiwgQ29tbWFuZFR5cGUuQ0xPU0VfRk9STSk7XHJcbiAgICBndWlDb21tYW5kLlRhc2tUYWcgPSBoYW5kbGVyVGFza1RhZztcclxuICAgIGd1aUNvbW1hbmQuc3RyID0gY2FsbGVkVGFza1RhZztcclxuICAgIEd1aUNvbW1hbmRRdWV1ZS5nZXRJbnN0YW5jZSgpLmFkZENvbW1hbmQoZ3VpQ29tbWFuZCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgYWRkQ2FsbEpTKGZvcm0gOiBhbnksIGZvcm1OYW1lOiBzdHJpbmcsIG5hbWU6IHN0cmluZywgYXJnczogQXJyYXk8YW55Pik6IHN0cmluZyB7XHJcbiAgICBsZXQgZ3VpSW50ZXJhY3RpdmU6IEd1aUludGVyYWN0aXZlID0gbmV3IEd1aUludGVyYWN0aXZlKCk7XHJcbiAgICByZXR1cm4gZ3VpSW50ZXJhY3RpdmUuRXhlY3V0ZUNhbGxKUyhmb3JtICwgZm9ybU5hbWUsICBuYW1lLCBhcmdzKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBhZGRJc0xvZ2dlZEluKHNldEJvb2w6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGxldCBndWlDb21tYW5kOiBHdWlDb21tYW5kID0gbmV3IEd1aUNvbW1hbmQobnVsbCwgQ29tbWFuZFR5cGUuU0VUX0lTX0xPR0dFRF9JTik7XHJcbiAgICBndWlDb21tYW5kLkJvb2wxID0gc2V0Qm9vbDtcclxuICAgIEd1aUNvbW1hbmRRdWV1ZS5nZXRJbnN0YW5jZSgpLmFkZENvbW1hbmQoZ3VpQ29tbWFuZCk7XHJcbiAgfVxyXG5cclxuICAvLyBhZGRzIGEgY29tbWFuZCB0byBzaG93IG9yIGhpZGUgdGhlIHNwaW5uZXJcclxuICBzdGF0aWMgYWRkU2hvd1NwaW5uZXIoc2hvdzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgbGV0IGd1aUNvbW1hbmQ6IEd1aUNvbW1hbmQgPSBuZXcgR3VpQ29tbWFuZChudWxsLCBDb21tYW5kVHlwZS5TSE9XX1NQSU5ORVIpO1xyXG4gICAgZ3VpQ29tbWFuZC5Cb29sMSA9IHNob3c7XHJcbiAgICBHdWlDb21tYW5kUXVldWUuZ2V0SW5zdGFuY2UoKS5hZGRDb21tYW5kKGd1aUNvbW1hbmQpO1xyXG4gIH1cclxuXHJcbiAgLy8gYWRkcyBhIGNvbW1hbmQgd2hpY2ggaXMgbm90IHJlbGF0ZWQgdG8gYSBzcGVjaWZpYyB0YXNrXHJcbiAgc3RhdGljIGFkZEdsb2JhbENvbW1hbmQoY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlKTogdm9pZCB7XHJcbiAgICBsZXQgZ3VpQ29tbWFuZDogR3VpQ29tbWFuZCA9IG5ldyBHdWlDb21tYW5kKG51bGwsIGNvbW1hbmRUeXBlKTtcclxuICAgIEd1aUNvbW1hbmRRdWV1ZS5nZXRJbnN0YW5jZSgpLmFkZENvbW1hbmQoZ3VpQ29tbWFuZCk7XHJcbiAgfVxyXG5cclxuICAvLyBhZGRzIGEgY29tbWFuZCB0byBkaXNwbGF5IHRoZSBIVE1MIGVycm9yIHJlY2VpdmVkIGZyb20gdGhlIHJlcXVlc2VyXHJcbiAgc3RhdGljIGFkZFNob3dIVE1MRXJyb3IoY29tbWFuZFR5cGU6IENvbW1hbmRUeXBlLCBlcnJvcjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgZ3VpQ29tbWFuZDogR3VpQ29tbWFuZCA9IG5ldyBHdWlDb21tYW5kKG51bGwsIGNvbW1hbmRUeXBlKTtcclxuICAgIGd1aUNvbW1hbmQuc3RyID0gZXJyb3I7XHJcbiAgICBHdWlDb21tYW5kUXVldWUuZ2V0SW5zdGFuY2UoKS5hZGRDb21tYW5kKGd1aUNvbW1hbmQpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGV4ZWN1dGUgYWxsIHBlbmRpbmcgY29tbWFuZHMsIGFzeW5jaHJvbm91c2x5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgYmVnaW5JbnZva2UoKTogdm9pZCB7XHJcbiAgICBHdWlDb21tYW5kUXVldWUuZ2V0SW5zdGFuY2UoKS5iZWdpbkludm9rZSgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIGV4ZWN1dGUgYWxsIHBlbmRpbmcgY29tbWFuZHMsIHN5bmNocm9ub3VzbHlcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBpbnZva2UoKTogdm9pZCB7XHJcbiAgICBHdWlDb21tYW5kUXVldWUuZ2V0SW5zdGFuY2UoKS5pbnZva2UoKTtcclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gIH1cclxufVxyXG4iXX0=
|
package/esm2022/src/Events.mjs
CHANGED
|
@@ -422,4 +422,4 @@ export class Events {
|
|
|
422
422
|
constructor() {
|
|
423
423
|
}
|
|
424
424
|
}
|
|
425
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9FdmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFDLEtBQUssRUFBbUIsT0FBTyxFQUFFLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBSXBGLE9BQU8sRUFBbUIsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFXakUsTUFBTSxPQUFPLE1BQU07SUFHakIsTUFBTSxDQUFDLDhCQUE4QixHQUFpQyxJQUFJLENBQUM7SUFLM0UsTUFBTSxDQUFDLGdDQUFnQyxHQUFrQixJQUFJLENBQUM7SUFLOUQsTUFBTSxDQUFDLGNBQWMsR0FBbUMsSUFBSSxDQUFDO0lBVTdELE1BQU0sQ0FBQyxzQkFBc0IsR0FBa0csSUFBSSxDQUFDO0lBTXBJLE1BQU0sQ0FBQywwQkFBMEIsR0FBdUMsSUFBSSxDQUFDO0lBTTdFLE1BQU0sQ0FBQyxjQUFjLEdBQWtDLElBQUksQ0FBQztJQU01RCxNQUFNLENBQUMsdUJBQXVCLEdBQWtDLElBQUksQ0FBQztJQVVyRSxNQUFNLENBQUMscUJBQXFCLEdBQW1HLElBQUksQ0FBQztJQWtCcEksTUFBTSxDQUFDLG9CQUFvQixHQUFpTixJQUFJLENBQUM7SUFNalAsTUFBTSxDQUFDLHFCQUFxQixHQUE4QixJQUFJLENBQUM7SUFNL0QsTUFBTSxDQUFDLHNCQUFzQixHQUE4QixJQUFJLENBQUM7SUFNaEUsTUFBTSxDQUFDLG9CQUFvQixHQUE0QixJQUFJLENBQUM7SUFPNUQsTUFBTSxDQUFDLGFBQWEsR0FBOEMsSUFBSSxDQUFDO0lBSXZFLE1BQU0sQ0FBQyxjQUFjLEdBQWdELElBQUksQ0FBQztJQU8xRSxNQUFNLENBQUMsc0JBQXNCLEdBQThDLElBQUksQ0FBQztJQU9oRixNQUFNLENBQUMsd0JBQXdCLEdBQW1DLElBQUksQ0FBQztJQVl2RSxNQUFNLENBQUMsc0JBQXNCLEdBQW9J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Qyx5QkFBeUI7UUFDOUIsSUFBSSxNQUFNLENBQUMsMEJBQTBCLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDL0MsTUFBTSxDQUFDLDBCQUEwQixFQUFFLENBQUM7UUFDdEMsQ0FBQztJQUNILENBQUM7SUFPRCxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQW9CLEVBQUUsUUFBZ0I7UUFDdEQsSUFBSSxNQUFNLENBQUMsYUFBYSxLQUFLLElBQUksRUFBRSxDQUFDO1lBQ2xDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLENBQUM7SUFDSCxDQUFDO0lBRUQ7SUFDQSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtHdWlNZ0NvbnRyb2x9IGZyb20gXCIuL2d1aS9HdWlNZ0NvbnRyb2xcIjtcclxuaW1wb3J0IHtNZ0Zvcm1CYXNlfSBmcm9tIFwiLi9tYW5hZ2VtZW50L2d1aS9NZ0Zvcm1CYXNlXCI7XHJcbmltcG9ydCB7SVRhc2t9IGZyb20gXCIuL21hbmFnZW1lbnQvdGFza3MvSVRhc2tcIjtcclxuaW1wb3J0IHtNZ0NvbnRyb2xCYXNlfSBmcm9tIFwiLi9tYW5hZ2VtZW50L2d1aS9NZ0NvbnRyb2xCYXNlXCI7XHJcbmltcG9ydCB7UnVudGltZUNvbnRleHRCYXNlfSBmcm9tIFwiLi9tYW5hZ2VtZW50L1J1bnRpbWVDb250ZXh0QmFzZVwiO1xyXG5pbXBvcnQge0d1aU1nRm9ybX0gZnJvbSBcIi4vZ3VpL0d1aU1nRm9ybVwiO1xyXG5pbXBvcnQge0d1aVRhc2tCYXNlfSBmcm9tIFwiLi9tYW5hZ2VtZW50L3Rhc2tzL0d1aVRhc2tCYXNlXCI7XHJcbmltcG9ydCB7RGVidWcsIEV4Y2VwdGlvbiwgTGlzdCwgTlN0cmluZywgU3RyaW5nQnVpbGRlcn0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7TW9kaWZpZXJzfSBmcm9tIFwiLi9HdWlFbnVtc1wiO1xyXG5pbXBvcnQge01nVGltZXJ9IGZyb20gXCIuL21hbmFnZW1lbnQvdGFza3MvTWdUaW1lclwiO1xyXG5pbXBvcnQge0xhc3RGb2N1c2VkVmFsfSBmcm9tIFwiLi9ndWkvTGFzdEZvY3VzZWRWYWxcIjtcclxuaW1wb3J0IHtMb2dnZXJfTG9nTGV2ZWxzLCBPU0Vudmlyb25tZW50fSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQgeyBHdWlDb250cm9sUHJvcGVydHlBZGFwdGVyIH0gZnJvbSBcIi4vbWFuYWdlbWVudC9ndWkvR3VpQ29udHJvbFByb3BlcnR5QWRhcHRlclwiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PmV2ZW50cyByYWlzZWQgYnkgTWdHdWkuZGxsIGFuZCBoYW5kbGVkIGJ5IE1neHBhUklBLmV4ZSBvciBNZ3hwYVJ1bnRpbWUuZXhlLlxyXG4vLy8gSW1wb3J0YW50IG5vdGU6IHRoZXNlIGV2ZW50cyBhcmUgTk9UIHJlbGF0ZWQgdGhlIGV2ZW50cyBoYW5kbGluZyBvZiBNYWdpYyAoUkMgb3IgUlRFKSAtXHJcbi8vLyAgIHRoZSBldmVudHMgZXhwb3NlZCBmcm9tIHRoaXMgY2xhc3MgY29udGFpbiBmdW5jdGlvbmFsaXR5IHRoYXQgdGhlIGN1cnJlbnQgYXNzZW1ibHkgKE1nR3VpLmRsbClcclxuLy8vICAgcmVxdWlyZXMgZnJvbSBlaXRoZXIgTWd4cGFSSUEuZXhlIG9yIE1neHBhUnVudGltZS5leGUuXHJcbi8vLyBUaGlzIGNsYXNzIGNvbnRhaW5zIG9ubHkgdGhlIGRlZmluaXRpb25zIG9mIGFsbCBkZWxlZ2F0ZXMgYW5kIGV2ZW50cy5cclxuLy8vIENsYXNzICdFdmVudHNQcm9jZXNzb3InIGNvbnRhaW5zIGhhbmRsZXJzIGZvciBldmVudHMgdGhhdCBjYW4gYmUgc2VydmVkIGxvY2FsbHkgKGJ5IE1nR3VpLmRsbCksXHJcbi8vLyAgIGFuZCByZWdpc3RlcmVkIGV4dGVybmFsIGhhbmRsZXJzIChpbiBNZ3hwYVJJQS5leGUgb3IgTWd4cGFSdW50aW1lLmV4ZSkgZm9yIGV2ZW50cyB0aGF0IGNhbid0IGJlIHNlcnZlZCBsb2NhbGx5LlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgY2xhc3MgRXZlbnRzIHtcclxuICAvLy8gPHN1bW1hcnk+IGludm9rZXMgdGhlIFZpc2liaWxpdHlDaGFuZ2VkIEV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxcIj5jb250cm9sIHdob3NlIHZpc2liaWxpdHkgaXMgY2hhbmdlZDwvcGFyYW0+XHJcbiAgc3RhdGljIE5vblBhcmthYmxlTGFzdFBhcmtlZEN0cmxFdmVudDogKGN0cmw6IEd1aU1nQ29udHJvbCkgPT4gdm9pZCA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gcmV0dXJucyBUUlVFLCBpZiBCYXRjaCB0YXNrIGlzIHJ1bm5pbmcgaW4gTUFJTiBjb250ZXh0LlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIElzQmF0Y2hSdW5uaW5nSW5NYWluQ29udGV4dEV2ZW50OiAoKSA9PiBib29sZWFuID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5Pk1MUyB0cmFuc2xhdGlvbjwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJmcm9tU3RyaW5nXCI+c291cmNlIHN0cmluZzwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPnRyYW5zbGF0ZWQgc3RyaW5nPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBUcmFuc2xhdGVFdmVudDogKGZyb21TdHJpbmc6IHN0cmluZykgPT4gc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDcmVhdGVzIFByaW50IFByZXZpZXcgRm9ybVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29udGV4dElkXCI+Y29udGV4dCBpZDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaW9QdHJcIj5wb2ludGVyIHRvIGN1cnJlbnQgSU9SVCBvYmplY3Q8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvcGllc1wiPm51bWJlciBvZiBjb3BpZXM8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImVuYWJsZVBEbGdcIj5pbmRpY2F0ZXMgd2hldGhlciB0byBlbmFibGUgUHJpbnQgZGlhbG9nPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJoV25kXCI+SGFuZGxlIG9mIFByaW50IFByZXZpZXcgRm9ybTwvcGFyYW0+XHJcbiAgc3RhdGljIFByaW50UHJldmlld1N0YXJ0RXZlbnQ6IChjb250ZXh0SUQ6IG51bWJlciwgaW9QdHI6IG51bWJlciwgY29waWVzOiBudW1iZXIsIGVuYWJsZVBEbGc6IGJvb2xlYW4sIGhXbmQ6IG51bWJlcikgPT4gdm9pZCA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gU2V0IGN1cnNvciB0byBQcmludCBQcmV2aWV3IGZvcm1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInByblByZXZEYXRhXCI+cHJpbnQgcHJldmlldyBkYXRhPC9wYXJhbT5cclxuICBzdGF0aWMgUHJpbnRQcmV2aWV3U2V0Q3Vyc29yRXZlbnQ6IChwcmludFByZXZpZXdEYXRhOiBudW1iZXIpID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICAvLy88c3VtbWFyeT5cclxuICAvLy8gSGFuZGxlcyBJbnZva2UgVURQIG9wZXJhdGlvbiBmcm9tIEdVSSB0aHJlYWRcclxuICAvLy88L3N1bW1hcnk+XHJcbiAgLy8vPHBhcmFtIG5hbWU9XCJjb250ZXh0SWRcIj5Db250ZXh0IGlkPC9wYXJhbT5cclxuICBzdGF0aWMgSW52b2tlVURQRXZlbnQ6IChjb250ZXh0SWQ6IG51bWJlcikgPT4gbnVtYmVyID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBVcGRhdGUgUHJpbnQgUHJldmlld1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicHJuUHJldkRhdGFcIj5wcmludCBwcmV2aWV3IGRhdGE8L3BhcmFtPlxyXG4gIHN0YXRpYyBQcmludFByZXZpZXdVcGRhdGVFdmVudDogKHByblByZXZEYXRhOiBudW1iZXIpID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIENyZWF0ZSBSaWNoIEVkaXRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbnRleHRJZFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RybFB0clwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicHJtUHRyXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdHlsZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZHdFeFN0eWxlXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgQ3JlYXRlUmljaFdpbmRvd0V2ZW50OiAoY29udGV4dElEOiBudW1iZXIsIGN0cmxQdHI6IG51bWJlciwgcHJtUHRyOiBudW1iZXIsIHN0eWxlOiBudW1iZXIsIGR3RXhTdHlsZTogbnVtYmVyKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vPHN1bW1hcnk+XHJcbiAgLy8vICBDcmVhdGVzIGEgd2luZG93XHJcbiAgLy8vPC9zdW1tYXJ5PlxyXG4gIC8vLzxwYXJhbSBuYW1lPVwiZXhTdHlsZVwiPiEhLjwvcGFyYW0+XHJcbiAgLy8vPHBhcmFtIG5hbWU9XCJjbGFzc05hbWVcIj4hIS48L3BhcmFtPlxyXG4gIC8vLzxwYXJhbSBuYW1lPVwid2luZG93TmFtZVwiPiEhLjwvcGFyYW0+XHJcbiAgLy8vPHBhcmFtIG5hbWU9XCJzdHlsZVwiPiEhLjwvcGFyYW0+XHJcbiAgLy8vPHBhcmFtIG5hbWU9XCJ4XCI+ISEuPC9wYXJhbT5cclxuICAvLy88cGFyYW0gbmFtZT1cInlcIj4hIS48L3BhcmFtPlxyXG4gIC8vLzxwYXJhbSBuYW1lPVwid2lkdGhcIj4hIS48L3BhcmFtPlxyXG4gIC8vLzxwYXJhbSBuYW1lPVwiaGVpZ2h0XCI+ISEuPC9wYXJhbT5cclxuICAvLy88cGFyYW0gbmFtZT1cImh3bmRQYXJlbnRcIj4hIS48L3BhcmFtPlxyXG4gIC8vLzxwYXJhbSBuYW1lPVwiaE1lbnVcIj4hIS48L3BhcmFtPlxyXG4gIC8vLzxwYXJhbSBuYW1lPVwiaEluc3RhbmNlXCI+ISEuPC9wYXJhbT5cclxuICAvLy88cGFyYW0gbmFtZT1cImxQYXJhbVwiPiEhLjwvcGFyYW0+XHJcbiAgLy8vPHJldHVybnM+aGFuZGxlIG9mIHdpbmRvdzwvcmV0dXJucz5cclxuICBzdGF0aWMgQ3JlYXRlR3VpV2luZG93RXZlbnQ6IChleFN0eWxlOiBudW1iZXIsIGNsYXNzTmFtZTogc3RyaW5nLCB3aW5kb3dOYW1lOiBzdHJpbmcsIHN0eWxlOiBudW1iZXIsIHg6IG51bWJlciwgeTogbnVtYmVyLCB3aWR0aDogbnVtYmVyLCBoZWlnaHQ6IG51bWJlciwgaHduZFBhcmVudDogbnVtYmVyLCBoTWVudTogbnVtYmVyLCBoSW5zdGFuY2U6IG51bWJlciwgbFBhcmFtOiBudW1iZXIpID0+IG51bWJlciA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gRGVzdHJveXMgYSB3aW5kb3dcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImhXbmRQdHJcIj5oYW5kbGUgb2Ygd2luZG93PC9wYXJhbT5cclxuICBzdGF0aWMgRGVzdHJveUd1aVdpbmRvd0V2ZW50OiAoaFduZFB0cjogbnVtYmVyKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBPbkNsb3NlIFByaW50IFByZXZpZXdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImhXbmRQdHJcIj5wcmludCBwcmV2aWV3IGRhdGE8L3BhcmFtPlxyXG4gIHN0YXRpYyBQcmludFByZXZpZXdDbG9zZUV2ZW50OiAoaFduZFB0cjogbnVtYmVyKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBTaG93IFByaW50IERpYWxvZ1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3BkXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgU2hvd1ByaW50RGlhbG9nRXZlbnQ6IChncGQ6IG51bWJlcikgPT4gbnVtYmVyID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBTZXRNb2RhbCBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3VyckZvcm1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm9uXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgU2V0TW9kYWxFdmVudDogKG1nRm9ybTogTWdGb3JtQmFzZSwgb246IGJvb2xlYW4pID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+cmFpc2VzIEN0cmxGb2N1c0V2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIEN0cmxGb2N1c0V2ZW50OiAoaVRhc2s6IElUYXNrLCBjdHJsOiBNZ0NvbnRyb2xCYXNlKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHZXRzIHRoZSBSdW50aW1lQ29udGV4dEJhc2UgdGhhdCBiZWxvbmdzIHRvIHRoZSBjb250ZXh0SURcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbnRleHRJRFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0UnVudGltZUNvbnRleHRFdmVudDogKGNvbnRleHRJRDogc3RyaW5nKSA9PiBSdW50aW1lQ29udGV4dEJhc2UgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFNhdmVzIHRoZSBuYW1lIG9mIHRoZSBsYXN0IGNsaWNrZWQgY29udHJvbC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aU1nQ29udHJvbFwiPmd1aU1nQ29udHJvbDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29udHJvbE5hbWVcIj5OYW1lIG9mIHRoZSBjb250cm9sPC9wYXJhbT5cclxuICBzdGF0aWMgU2F2ZUxhc3RDbGlja2VkQ3RybEV2ZW50OiAoIGNvbnRyb2xOYW1lOiBzdHJpbmcpID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFNhdmVzIHRoZSBsYXN0IGNsaWNrZWQgaW5mb3JtYXRpb24uIChpLmUuIENvLW9yZGluYXRlcyBhbmQgY29udHJvbCBuYW1lLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpTWdGb3JtXCI+Z3VpTWdGb3JtPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb250cm9sTmFtZVwiPm5hbWUgb2YgdGhlIGNvbnRyb2w8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInhcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInlcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm9mZnNldFhcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm9mZnNldFlcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxhc3RDbGlja0Nvb3JkaW5hdGVzQXJlSW5QaXhlbHNcIj5jby1vcmRpbmF0ZXMgYXJlIGluIHBpeGVsIG9yIG5vdC48L3BhcmFtPlxyXG4gIHN0YXRpYyBTYXZlTGFzdENsaWNrSW5mb0V2ZW50OiAoY29udHJvbE5hbWU6IHN0cmluZywgeDogbnVtYmVyLCB5OiBudW1iZXIsIG9mZnNldFg6IG51bWJlciwgb2Zmc2V0WTogbnVtYmVyLCBsYXN0Q2xpY2tDb29yZGluYXRlc0FyZUluUGl4ZWxzOiBib29sZWFuKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PndyaXRlIGFuIGVycm9yIG1lc3NhZ2UgdG8gdGhlIGludGVybmFsIGxvZyBmaWxlPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1zZ1wiPjwvcGFyYW0+XHJcbiAgc3RhdGljIFdyaXRlRXJyb3JUb0xvZ0V2ZW50OiAobXNnOiBzdHJpbmcpID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+V3JpdGUgYW4gaW50ZXJuYWwgZXJyb3IgdG8gdGhlIGxvZy4gQWxzbyBwcmludHMgc3RhY2sgdHJhY2UgYWxvbmcgd2l0aCB0aGUgbWVzc2FnZTwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtc2dcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBXcml0ZUV4Y2VwdGlvblRvTG9nRXZlbnQ6IChtc2c6IHN0cmluZykgPT4gdm9pZCA9IG51bGw7XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+d3JpdGUgYSB3YXJuaW5nIG1lc3NhZ2UgdG8gdGhlIGludGVybmFsIGxvZyBmaWxlPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1zZ1wiPjwvcGFyYW0+XHJcbiAgc3RhdGljIFdyaXRlV2FybmluZ1RvTG9nRXZlbnQ6IChtc2c6IHN0cmluZykgPT4gdm9pZCA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy9cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxvZ0xldmVsXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBTaG91bGRMb2dFdmVudDogKGxvZ0xldmVsOiBMb2dnZXJfTG9nTGV2ZWxzKSA9PiBib29sZWFuID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PndyaXRlIGEgR1VJIG1lc3NhZ2UgdG8gdGhlIGludGVybmFsIGxvZyBmaWxlPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1zZ1wiPjwvcGFyYW0+XHJcbiAgc3RhdGljIFdyaXRlR3VpVG9Mb2dFdmVudDogKG1zZzogc3RyaW5nKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PndyaXRlIGEgREVWIG1lc3NhZ2UgdG8gdGhlIGludGVybmFsIGxvZyBmaWxlPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1zZ1wiPjwvcGFyYW0+XHJcbiAgc3RhdGljIFdyaXRlRGV2VG9Mb2dFdmVudDogKG1zZzogc3RyaW5nKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIENhbGxlZCB3aGVuIFdNX0NMRUFSIG1lc3NhZ2UgaXMgcmVjZWl2ZWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBDbGVhckV2ZW50OiAoY3RybDogR3VpTWdDb250cm9sKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDYWxsZWQgd2hlbiBXTV9VTkRPIG1lc3NhZ2UgaXMgcmVjZWl2ZWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBVbmRvRXZlbnQ6IChjdHJsOiBHdWlNZ0NvbnRyb2wpID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFNob3VsZCBFbnRlciBiZSBhZGRlZCBhcyBrZXlib2FyZCBldmVudCA/IFRoaXMgaXMgaW1wb3J0YW50IG1vc3RseSBpbiBkZXRlcm1pbmluZyBpZiBhIGNsaWNrIGV2ZW50XHJcbiAgLy8vIHdpbGwgYmUgcmFpc2VkIGZvciBhIGRlZmF1bHQgYnV0dG9uIG9yIG5vdC5cclxuICAvLy8gQWRkaW5nIEVudGVyIGFzIGEga2V5Ym9hcmQgZXZlbnQgd2lsbCBub3QgcmFpc2UgY2xpY2sgb24gZGVmYXVsdCBidXR0b24uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBTaG91bGRBZGRFbnRlckFzS2V5RXZlbnQ6ICgpID0+IGJvb2xlYW4gPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgU2hvd1Nlc3Npb25TdGF0aXN0aWNzRXZlbnQ6ICgpID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIENhbGxlZCB3aGVuIFdNX0NPUFlEQVRBIG1lc3NhZ2UgaXMgcmVjZWl2ZWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aU1nRm9ybVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29weURhdGFcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBDb3B5RGF0YUV2ZW50OiAoZ3VpTWdGb3JtOiBHdWlNZ0Zvcm0sIGNvcHlEYXRhOiBudW1iZXIpID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+IGludm9rZXMgdGhlIGZvY3VzIGV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxpbmVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImlzUHJvZHVjZUNsaWNrXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgRm9jdXNFdmVudDogKGN0cmw6IEd1aU1nQ29udHJvbCwgbGluZTogbnVtYmVyLCBpc1Byb2R1Y2VDbGljazogYm9vbGVhbiwgb25NdWx0aU1hcms6IGJvb2xlYW4pID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+IGludm9rZXMgdGhlIGZvY3VzIG91dCBldmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgRm9jdXNPbk5vbk1hZ2ljQ29udHJvbEV2ZW50OiAoY3RybDogR3VpTWdDb250cm9sKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBNb3VzZURvd24gRXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpTWdGb3JtXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlNZ0N0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImRvdE5ldEFyZ3NcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxlZnRDbGlja1dhc1ByZXNzZWRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxpbmVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm9uTXVsdGlNYXJrXCI+aW5kaWNhdGVzIHRoYXQgTXVsdGkgTWFyayBjb250aW51ZXM8L3BhcmFtPlxyXG4gIHN0YXRpYyBNb3VzZURvd25FdmVudDogKGd1aU1nRm9ybTogR3VpTWdGb3JtLCBndWlNZ0N0cmw6IEd1aU1nQ29udHJvbCwgZG90TmV0QXJnczogT2JqZWN0W10sIGxlZnRDbGlja1dhc1ByZXNzZWQ6IGJvb2xlYW4sIGxpbmU6IG51bWJlciwgb25NdWx0aU1hcms6IGJvb2xlYW4sIGNhblByb2R1Y2VDbGljazogYm9vbGVhbikgPT4gdm9pZCA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgVGFibGVSZW9yZGVyIEV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInRhYk9yZGVyTGlzdFwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIFRhYmxlUmVvcmRlckV2ZW50OiAoY3RybDogR3VpTWdDb250cm9sLCB0YWJPcmRlckxpc3Q6IExpc3Q8R3VpTWdDb250cm9sPikgPT4gdm9pZCA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgTW91c2VVcCBFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsaW5lXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgTW91c2VVcEV2ZW50OiAoY3RybDogR3VpTWdDb250cm9sLCBsaW5lOiBudW1iZXIpID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+IGludm9rZXMgdGhlIENvbWJvRHJvcHBpbmdEb3duIEV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxpbmVcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBDb21ib0Ryb3BwaW5nRG93bkV2ZW50OiAoY3RybDogR3VpTWdDb250cm9sLCBsaW5lOiBudW1iZXIpID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+IGludm9rZXMgdGhlIFNlbGVjdGlvbiBFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ2YWxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxpbmVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInByb2R1Y2VDbGlja1wiPjwvcGFyYW0+XHJcbiAgc3RhdGljIFNlbGVjdGlvbkV2ZW50OiAodmFsOiBzdHJpbmcsIGN0cmw6IEd1aU1nQ29udHJvbCwgbGluZTogbnVtYmVyLCBwcm9kdWNlQ2xpY2s6IGJvb2xlYW4pID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+IGludm9rZXMgdGhlIERibENsaWNrIEV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxpbmVcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBEYmxDbGlja0V2ZW50OiAoY3RybDogR3VpTWdDb250cm9sLCBsaW5lOiBudW1iZXIpID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+IGludm9rZXMgdGhlIEtleURvd24gRXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZm9ybVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpTWdDdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtb2RpZmllclwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwia2V5Q29kZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RhcnRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImVuZFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidGV4dFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaW1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImlzQWN0Q2hhclwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3VnZ2VzdGVkVmFsdWVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbWJvSXNEcm9wRG93blwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaGFuZGxlZFwiPmJvb2xlYW4gdmFyaWFibGUgZXZlbnQgaXMgaGFuZGxlZCBvciBub3QuIDwvcGFyYW0+XHJcbiAgc3RhdGljIEtleURvd25FdmVudDogKGZvcm06IEd1aU1nRm9ybSwgZ3VpTWdDdHJsOiBHdWlNZ0NvbnRyb2wsIG1vZGlmaWVyOiBNb2RpZmllcnMsIGtleUNvZGU6IG51bWJlciwgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIHRleHQ6IHN0cmluZywgaXNBY3RDaGFyOiBib29sZWFuLCBzdWdnZXN0ZWRWYWx1ZTogc3RyaW5nLCBjb21ib0lzRHJvcERvd246IGJvb2xlYW4sIGhhbmRsZWQ6IGJvb2xlYW4pID0+IGJvb2xlYW4gPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGRlbGVnYXRlIGZvciB0aGUgTXVsdGlNYXJrIGhpdCBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpTWdDdHJsXCI+IGNvbnRyb2wgPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJyb3dcIj4gdGFibGUgcm93IDwvcGFyYW0+XHJcbiAgc3RhdGljIE11bHRpbWFya0hpdEV2ZW50OiAoZ3VpTWdDdHJsOiBHdWlNZ0NvbnRyb2wsIHJvdzogbnVtYmVyLCBtb2RpZmllcjogTW9kaWZpZXJzKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBDbG9zZSBFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJmb3JtXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+dHJ1ZSBpZiBldmVudCBpcyBDTFIgaGFuZGxlZChjbG9zaW5nIG9mIHRoZSBmb3JtIHdpbGwgYmUgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBDTFIgYW5kIG5vIGNvbW1hbmRzIHdpbGwgYmUgcHV0XHJcbiAgLy8vIGluIHRvIGNsb3NlIHRoZSBmb3JtKSBlbHNlIGZhbHNlLjwvcmV0dXJucz5cclxuICBzdGF0aWMgQ2xvc2VGb3JtRXZlbnQ6IChmb3JtOiBHdWlNZ0Zvcm0pID0+IGJvb2xlYW4gPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+IGludm9rZXMgdGhlIERpc3Bvc2UgRXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZm9ybVwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIERpc3Bvc2VFdmVudDogKGZvcm06IEd1aU1nRm9ybSkgPT4gdm9pZCA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgVGltZXIgRXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibWdUaW1lclwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIFRpbWVyRXZlbnQ6IChtZ1RpbWVyOiBNZ1RpbWVyKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgUmVzaXplIEV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm5ld1Jvd3NJblBhZ2VcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBUYWJsZVJlc2l6ZUV2ZW50OiAoY3RybDogR3VpTWdDb250cm9sLCBuZXdSb3dzSW5QYWdlOiBudW1iZXIpID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+IGludm9rZXMgdGhlIEdldFJvd3NEYXRhIEV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImRlc2lyZWRUb3BJbmRleFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic2VuZEFsbFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGFzdEZvY3VzZWRWYWxcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBHZXRSb3dzRGF0YUV2ZW50OiAoY3RybDogR3VpTWdDb250cm9sLCBkZXNpcmVkVG9wSW5kZXg6IG51bWJlciwgc2VuZEFsbDogYm9vbGVhbiwgbGFzdEZvY3VzZWRWYWw6IExhc3RGb2N1c2VkVmFsKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBFbmFibGVDdXRDb3B5IEV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImVuYWJsZVwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIEVuYWJsZUN1dENvcHlFdmVudDogKGN0cmw6IEd1aU1nQ29udHJvbCwgZW5hYmxlOiBib29sZWFuKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBFbmFibGVQYXN0ZSBFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJlbmFibGVcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBFbmFibGVQYXN0ZUV2ZW50OiAoY3RybDogR3VpTWdDb250cm9sLCBlbmFibGU6IGJvb2xlYW4pID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+IGludm9rZXMgdGhlIENvbHVtbkNsaWNrIEV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbHVtbkN0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImRpcmVjdGlvblwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29sdW1uSGVhZGVyXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgQ29sdW1uQ2xpY2tFdmVudDogKGNvbHVtbkN0cmw6IEd1aU1nQ29udHJvbCwgZGlyZWN0aW9uOiBudW1iZXIsIGNvbHVtbkhlYWRlcjogc3RyaW5nKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+aW52b2tlcyByZWZyZXNoVGFibGVzIGRlbGVnYXRlPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBSZWZyZXNoVGFibGVzRXZlbnQ6ICgpID0+IHZvaWQgPSBudWxsO1xyXG5cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5PbkhlbHBDbG9zZTwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJhY3RpdmVGb3JtXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgSGVscENsb3NlRXZlbnQ6IChhY3RpdmVGb3JtOiBHdWlNZ0Zvcm0pID0+IHZvaWQgPSBudWxsO1xyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBkaXNwbGF5U2Vzc2lvblN0YXRpc3RpY3MgPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBEaXNwbGF5U2Vzc2lvblN0YXRpc3RpY3NFdmVudDogKCkgPT4gdm9pZCA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gcmV0dXJucyB0cnVlIGZvciBub24gaW50ZXJhY3RpdmUgdGFzayBmb3IgYWxsIGNvbnRyb2xzIGV4Y2VwdCBhIGJ1dHRvbiBjb250cm9sXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+Y2xpY2tlZCBjb250cm9sPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBTaG91bGRCbG9ja01vdXNlRXZlbnRzRXZlbnQ6IChjdHJsOiBHdWlNZ0NvbnRyb2wpID0+IGJvb2xlYW4gPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+cGVla0VuZE9mV29yazwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBQZWVrRW5kT2ZXb3JrRXZlbnQ6ICgpID0+IGJvb2xlYW4gPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+aW52b2tlcyB0aGUgR2V0RXZlbnRUaW1lIGRlbGVnYXRlPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIEdldEV2ZW50VGltZUV2ZW50OiAoKSA9PiBudW1iZXIgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGludm9rZXMgdGhlIFNjcm9sbFRhYmxlIEV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlNZ09iamVjdFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGluZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicm93c1RvU2Nyb2xsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpc1BhZ2VTY3JvbGxcIj5uZXh0L3ByZXYgcGFnZT88L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImlzVGFibGVTY3JvbGxcIj5CZWdpbi9FbmQgVGFibGU/PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpc1JhaXNlZEJ5TW91c2VXaGVlbFwiPmluZGljYXRlcyB3aGV0aGVyIGV2ZW50IGlzIHJhaXNlZCBieSBtb3VzZXdoZWVsIG9yIG5vdC48L3BhcmFtPlxyXG4gIHN0YXRpYyBTY3JvbGxUYWJsZUV2ZW50OiAoZ3VpTWdPYmplY3Q6IGFueSwgbGluZTogbnVtYmVyLCByb3dzVG9TY3JvbGw6IG51bWJlciwgaXNQYWdlU2Nyb2xsOiBib29sZWFuLCBpc1RhYmxlU2Nyb2xsOiBib29sZWFuLCBpc1JhaXNlZEJ5TW91c2VXaGVlbDogYm9vbGVhbikgPT4gYm9vbGVhbiA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gR2V0cyB0aGUgdXNlciBkZWZpbmVkIERyb3AgZm9ybWF0c1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0RHJvcFVzZXJGb3JtYXRzRXZlbnQ6ICgpID0+IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gR2V0IHRoZSBjb250ZXh0IGlkIGZyb20gR3VpTWdGb3JtXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlNZ0Zvcm1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIEdldENvbnRleHRJREV2ZW50OiAoZ3VpTWdGb3JtOiBHdWlNZ0Zvcm0pID0+IG51bWJlciA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aU1nRm9ybVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgU2hvd0Zvcm1FdmVudDogKGd1aU1nRm9ybTogR3VpTWdGb3JtKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBpbnZva2VzIE9uRm9ybUFjdGl2YXRlRXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBPbkZvcm1BY3RpdmF0ZUV2ZW50OiAoZ3VpTWdGb3JtOiBHdWlNZ0Zvcm0pID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGludm9rZXMgT25OQ0FjdGl2YXRlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgT25OQ0FjdGl2YXRlRXZlbnQ6IChndWlNZ0Zvcm06IEd1aU1nRm9ybSkgPT4gdm9pZCA9IG51bGw7XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEhhbmRsZSBXTV9LRVlVUCAtIChyZXF1aXJlZCBvbmx5IGZvciBBQ1RfTkVYVF9SVF9XSU5ET1csIEFDVF9QUkVWX1JUX1dJTkRPVyBmb3Igc29ydGluZyB3aW5kb3dsaXN0XHJcbiAgLy8vIHdoZW4gdGhlIGtleSBhc3NvY2lhdGVkIHdpdGggdGhlIGFjdGlvbiBpcyByZWxlYXNlZClcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aU1nRm9ybVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwia2V5Q29kZVwiPmtleWNvZGUgb2YgYSBrZXkgd2hpY2ggaXMganVzdCByZWxlYXNlZDwvcGFyYW0+XHJcbiAgc3RhdGljIEhhbmRsZUtleVVwTWVzc2FnZUV2ZW50OiAoZ3VpTWdGb3JtOiBHdWlNZ0Zvcm0sIGtleUNvZGU6IG51bWJlcikgPT4gdm9pZCA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gY2hlY2tzIHdoZXRoZXIgd2Ugc2hvdWxkIHNob3cgTG9nb24gd2luZG93IGluIFJUT0wgZm9ybWF0IG9yIG5vdC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIE9uSXNMb2dvblJUTEV2ZW50OiAoKSA9PiBib29sZWFuID0gbnVsbDtcclxuXHJcblxyXG4gIHN0YXRpYyBPbklzU3BlY2lhbEVuZ0xvZ29uRXZlbnQ6ICgpID0+IGJvb2xlYW4gPSBudWxsO1xyXG5cclxuXHJcbiAgc3RhdGljIE9uSXNTcGVjaWFsSWdub3JlQnV0dG9uRm9ybWF0RXZlbnQ6ICgpID0+IGJvb2xlYW4gPSBudWxsO1xyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBnZXRNYWluUHJvZ3JhbSBFdmVudCA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29udGV4dElEXCI+YWN0aXZlL3RhcmdldCBjb250ZXh0PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdGxJZHhcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIEdldE1haW5Qcm9ncmFtRXZlbnQ6IChjb250ZXh0SUQ6IG51bWJlciwgY3RsSWR4OiBudW1iZXIpID0+IEd1aVRhc2tCYXNlID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBMb2dpY2FsIG5hbWUgdHJhbnNsYXRpb25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImZyb21TdHJpbmdcIj5zb3VyY2Ugc3RyaW5nPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+dHJhbnNsYXRlZCBzdHJpbmc8L3JldHVybnM+XHJcbiAgc3RhdGljIFRyYW5zbGF0ZUxvZ2ljYWxOYW1lRXZlbnQ6IChmcm9tU3RyaW5nOiBzdHJpbmcpID0+IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gSW52b2tlcyB0aGUgR2V0QXNzZXRzVVJMIGV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgR2V0QXNzZXRzVVJMRXZlbnQ6ICgpID0+IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5pbnZva2VzIGdldE1lc3NhZ2VTdHJpbmcgRXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibXNnSWRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIEdldE1lc3NhZ2VTdHJpbmdFdmVudDogKG1zZ0lkOiBzdHJpbmcpID0+IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgZm9jdXMgZXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGluZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaXNQcm9kdWNlQ2xpY2tcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBPbkZvY3VzKGN0cmw6IEd1aU1nQ29udHJvbCwgbGluZTogbnVtYmVyLCBpc1Byb2R1Y2VDbGljazogYm9vbGVhbiwgb25NdWx0aU1hcms6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIERlYnVnLkFzc2VydChFdmVudHMuRm9jdXNFdmVudCAhPT0gbnVsbCk7XHJcbiAgICBFdmVudHMuRm9jdXNFdmVudChjdHJsLCBsaW5lLCBpc1Byb2R1Y2VDbGljaywgb25NdWx0aU1hcmspO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBmb2N1cyBldmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsIHJlY2VpdmluZyBsb3N0Rm9jdXNcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBPbkZvY3VzT25Ob25NYWdpY0NvbnRyb2woY3RybDogR3VpTWdDb250cm9sKTogdm9pZCB7XHJcbiAgICBEZWJ1Zy5Bc3NlcnQoRXZlbnRzLkZvY3VzT25Ob25NYWdpY0NvbnRyb2xFdmVudCAhPT0gbnVsbCk7XHJcbiAgICBFdmVudHMuRm9jdXNPbk5vbk1hZ2ljQ29udHJvbEV2ZW50KGN0cmwpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgTW91c2VEb3duIEV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aU1nRm9ybVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpTWdDdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJkb3ROZXRBcmdzXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsZWZ0Q2xpY2tXYXNQcmVzc2VkXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsaW5lXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJvbk11bHRpTWFya1wiPmluZGljYXRlcyB0aGF0IE11bHRpIE1hcmsgY29udGludWVzPC9wYXJhbT5cclxuICBzdGF0aWMgT25Nb3VzZURvd24oZ3VpTWdGb3JtOiBHdWlNZ0Zvcm0sIGd1aU1nQ3RybDogR3VpTWdDb250cm9sLCBkb3ROZXRBcmdzOiBhbnlbXSwgbGVmdENsaWNrV2FzUHJlc3NlZDogYm9vbGVhbiwgbGluZTogbnVtYmVyLCBvbk11bHRpTWFyazogYm9vbGVhbiwgY2FuUHJvZHVjZUNsaWNrOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBEZWJ1Zy5Bc3NlcnQoRXZlbnRzLk1vdXNlRG93bkV2ZW50ICE9PSBudWxsKTtcclxuICAgIEV2ZW50cy5Nb3VzZURvd25FdmVudChndWlNZ0Zvcm0sIGd1aU1nQ3RybCwgZG90TmV0QXJncywgbGVmdENsaWNrV2FzUHJlc3NlZCwgbGluZSwgb25NdWx0aU1hcmssIGNhblByb2R1Y2VDbGljayk7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBWaXNpYmlsaXR5Q2hhbmdlZCBFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+Y29udHJvbCB3aG9zZSB2aXNpYmlsaXR5IGlzIGNoYW5nZWQ8L3BhcmFtPlxyXG4gIHN0YXRpYyBPbk5vblBhcmthYmxlTGFzdFBhcmtlZEN0cmwoY3RybDogR3VpTWdDb250cm9sKTogdm9pZCB7XHJcbiAgICBpZiAoRXZlbnRzLk5vblBhcmthYmxlTGFzdFBhcmtlZEN0cmxFdmVudCAhPT0gbnVsbCkge1xyXG4gICAgICBFdmVudHMuTm9uUGFya2FibGVMYXN0UGFya2VkQ3RybEV2ZW50KGN0cmwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBUYWJsZVJlb3JkZXIgRXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidGFiT3JkZXJMaXN0XCI+PC9wYXJhbT5cclxuICBzdGF0aWMgT25UYWJsZVJlb3JkZXIoY3RybDogR3VpTWdDb250cm9sLCB0YWJPcmRlckxpc3Q6IExpc3Q8R3VpTWdDb250cm9sPik6IHZvaWQge1xyXG4gICAgaWYgKEV2ZW50cy5UYWJsZVJlb3JkZXJFdmVudCAhPT0gbnVsbCkge1xyXG4gICAgICBFdmVudHMuVGFibGVSZW9yZGVyRXZlbnQoY3RybCwgdGFiT3JkZXJMaXN0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgTW91c2VVcCBFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsaW5lXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgT25Nb3VzZVVwKGN0cmw6IEd1aU1nQ29udHJvbCwgbGluZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoRXZlbnRzLk1vdXNlVXBFdmVudCAhPT0gbnVsbCkge1xyXG4gICAgICBFdmVudHMuTW91c2VVcEV2ZW50KGN0cmwsIGxpbmUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBDb21ib0Ryb3BwaW5nRG93biBFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsaW5lXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgT25Db21ib0Ryb3BwaW5nRG93bihjdHJsOiBHdWlNZ0NvbnRyb2wsIGxpbmU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgRGVidWcuQXNzZXJ0KEV2ZW50cy5Db21ib0Ryb3BwaW5nRG93bkV2ZW50ICE9PSBudWxsKTtcclxuICAgIEV2ZW50cy5Db21ib0Ryb3BwaW5nRG93bkV2ZW50KGN0cmwsIGxpbmUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBTZWxlY3Rpb24gRXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmFsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsaW5lXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJwcm9kdWNlQ2xpY2tcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBPblNlbGVjdGlvbih2YWw6IHN0cmluZywgY3RybDogR3VpTWdDb250cm9sLCBsaW5lOiBudW1iZXIsIHByb2R1Y2VDbGljazogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgRGVidWcuQXNzZXJ0KEV2ZW50cy5TZWxlY3Rpb25FdmVudCAhPT0gbnVsbCk7XHJcbiAgICBFdmVudHMuU2VsZWN0aW9uRXZlbnQodmFsLCBjdHJsLCBsaW5lLCBwcm9kdWNlQ2xpY2spO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBEYmxDbGljayBFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsaW5lXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgT25EYmxDbGljayhjdHJsOiBHdWlNZ0NvbnRyb2wsIGxpbmU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgRGVidWcuQXNzZXJ0KEV2ZW50cy5EYmxDbGlja0V2ZW50ICE9PSBudWxsKTtcclxuICAgIEV2ZW50cy5EYmxDbGlja0V2ZW50KGN0cmwsIGxpbmUpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgS2V5RG93biBFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJmb3JtXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlNZ0N0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1vZGlmaWVyXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJrZXlDb2RlXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdGFydFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZW5kXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0ZXh0XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpbVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaXNBY3RDaGFyXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdWdnZXN0ZWRWYWx1ZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29tYm9Jc0Ryb3BEb3duXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJoYW5kbGVkXCI+Ym9vbGVhbiB2YXJpYWJsZSBldmVudCBpcyBoYW5kbGVkIG9yIG5vdC4gPC9wYXJhbT5cclxuICBzdGF0aWMgT25LZXlEb3duKGZvcm06IEd1aU1nRm9ybSwgZ3VpTWdDdHJsOiBHdWlNZ0NvbnRyb2wsIG1vZGlmaWVyOiBNb2RpZmllcnMsIGtleUNvZGU6IG51bWJlciwgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIHRleHQ6IHN0cmluZywgaXNBY3RDaGFyOiBib29sZWFuLCBzdWdnZXN0ZWRWYWx1ZTogc3RyaW5nLCBjb21ib0lzRHJvcERvd246IGJvb2xlYW4sIGhhbmRsZWQ6IGJvb2xlYW4pOiB2b2lkO1xyXG4gIHN0YXRpYyBPbktleURvd24oZm9ybTogR3VpTWdGb3JtLCBjdHJsOiBHdWlNZ0NvbnRyb2wsIG1vZGlmaWVyOiBNb2RpZmllcnMsIGtleUNvZGU6IG51bWJlciwgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIHRleHQ6IHN0cmluZywgaXNBY3RDaGFyOiBib29sZWFuLCBzdWdnZXN0ZWRWYWx1ZTogc3RyaW5nLCBoYW5kbGVkOiBib29sZWFuKTogdm9pZDtcclxuICBzdGF0aWMgT25LZXlEb3duKGZvcm06IEd1aU1nRm9ybSwgY3RybDogR3VpTWdDb250cm9sLCBtb2RpZmllcjogTW9kaWZpZXJzLCBrZXlDb2RlOiBudW1iZXIsIHN1Z2dlc3RlZFZhbHVlOiBzdHJpbmcsIGNvbWJvSXNEcm9wRG93bjogYm9vbGVhbiwgaGFuZGxlZDogYm9vbGVhbik6IHZvaWQ7XHJcbiAgc3RhdGljIE9uS2V5RG93bihmb3JtOiBHdWlNZ0Zvcm0sIGd1aU1nQ3RybE9yQ3RybDogR3VpTWdDb250cm9sLCBtb2RpZmllcjogTW9kaWZpZXJzLCBrZXlDb2RlOiBudW1iZXIsIHN0YXJ0T3JTdWdnZXN0ZWRWYWx1ZTogYW55LCBlbmRPckNvbWJvSXNEcm9wRG93bjogYW55LCB0ZXh0T3JIYW5kbGVkOiBhbnksIGlzQWN0Q2hhcj86IGJvb2xlYW4sIHN1Z2dlc3RlZFZhbHVlPzogc3RyaW5nLCBjb21ib0lzRHJvcERvd25PckhhbmRsZWQ/OiBib29sZWFuLCBoYW5kbGVkPzogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDExKVxyXG4gICAgICBFdmVudHMuT25LZXlEb3duXzAoZm9ybSwgZ3VpTWdDdHJsT3JDdHJsLCBtb2RpZmllciwga2V5Q29kZSwgc3RhcnRPclN1Z2dlc3RlZFZhbHVlLCBlbmRPckNvbWJvSXNEcm9wRG93biwgdGV4dE9ySGFuZGxlZCwgaXNBY3RDaGFyLCBzdWdnZXN0ZWRWYWx1ZSwgY29tYm9Jc0Ryb3BEb3duT3JIYW5kbGVkLCBoYW5kbGVkKTtcclxuXHJcbiAgICBlbHNlIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxMClcclxuICAgICAgRXZlbnRzLk9uS2V5RG93bl8xKGZvcm0sIGd1aU1nQ3RybE9yQ3RybCwgbW9kaWZpZXIsIGtleUNvZGUsIHN0YXJ0T3JTdWdnZXN0ZWRWYWx1ZSwgZW5kT3JDb21ib0lzRHJvcERvd24sIHRleHRPckhhbmRsZWQsIGlzQWN0Q2hhciwgc3VnZ2VzdGVkVmFsdWUsIGNvbWJvSXNEcm9wRG93bk9ySGFuZGxlZCk7XHJcbiAgICBlbHNlXHJcbiAgICAgIEV2ZW50cy5PbktleURvd25fMihmb3JtLCBndWlNZ0N0cmxPckN0cmwsIG1vZGlmaWVyLCBrZXlDb2RlLCBzdGFydE9yU3VnZ2VzdGVkVmFsdWUsIGVuZE9yQ29tYm9Jc0Ryb3BEb3duLCB0ZXh0T3JIYW5kbGVkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIE9uS2V5RG93bl8wKGZvcm06IEd1aU1nRm9ybSwgZ3VpTWdDdHJsOiBHdWlNZ0NvbnRyb2wsIG1vZGlmaWVyOiBNb2RpZmllcnMsIGtleUNvZGU6IG51bWJlciwgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIHRleHQ6IHN0cmluZywgaXNBY3RDaGFyOiBib29sZWFuLCBzdWdnZXN0ZWRWYWx1ZTogc3RyaW5nLCBjb21ib0lzRHJvcERvd246IGJvb2xlYW4sIGhhbmRsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIERlYnVnLkFzc2VydChFdmVudHMuS2V5RG93bkV2ZW50ICE9PSBudWxsKTtcclxuICAgIEV2ZW50cy5LZXlEb3duRXZlbnQoZm9ybSwgZ3VpTWdDdHJsLCBtb2RpZmllciwga2V5Q29kZSwgc3RhcnQsIGVuZCwgdGV4dCwgaXNBY3RDaGFyLCBzdWdnZXN0ZWRWYWx1ZSwgY29tYm9Jc0Ryb3BEb3duLCBoYW5kbGVkKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBPbk11bHRpTWFya0hpdChjdHJsOiBHdWlNZ0NvbnRyb2wsIHJvdzogbnVtYmVyLCBtb2RpZmllcjogTW9kaWZpZXJzKTogdm9pZCB7XHJcbiAgICBEZWJ1Zy5Bc3NlcnQoRXZlbnRzLk11bHRpbWFya0hpdEV2ZW50ICE9PSBudWxsKTtcclxuICAgIEV2ZW50cy5NdWx0aW1hcmtIaXRFdmVudChjdHJsLCByb3csIG1vZGlmaWVyKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIE9uS2V5RG93bl8xKGZvcm06IEd1aU1nRm9ybSwgY3RybDogR3VpTWdDb250cm9sLCBtb2RpZmllcjogTW9kaWZpZXJzLCBrZXlDb2RlOiBudW1iZXIsIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcsIGlzQWN0Q2hhcjogYm9vbGVhbiwgc3VnZ2VzdGVkVmFsdWU6IHN0cmluZywgaGFuZGxlZDogYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgRGVidWcuQXNzZXJ0KEV2ZW50cy5LZXlEb3duRXZlbnQgIT09IG51bGwpO1xyXG4gICAgcmV0dXJuIEV2ZW50cy5LZXlEb3duRXZlbnQoZm9ybSwgY3RybCwgbW9kaWZpZXIsIGtleUNvZGUsIHN0YXJ0LCBlbmQsIHRleHQsIGlzQWN0Q2hhciwgc3VnZ2VzdGVkVmFsdWUsIGZhbHNlLCBoYW5kbGVkKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIE9uS2V5RG93bl8yKGZvcm06IEd1aU1nRm9ybSwgY3RybDogR3VpTWdDb250cm9sLCBtb2RpZmllcjogTW9kaWZpZXJzLCBrZXlDb2RlOiBudW1iZXIsIHN1Z2dlc3RlZFZhbHVlOiBzdHJpbmcsIGNvbWJvSXNEcm9wRG93bjogYm9vbGVhbiwgaGFuZGxlZDogYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgRGVidWcuQXNzZXJ0KEV2ZW50cy5LZXlEb3duRXZlbnQgIT09IG51bGwpO1xyXG4gICAgcmV0dXJuIEV2ZW50cy5LZXlEb3duRXZlbnQoZm9ybSwgY3RybCwgbW9kaWZpZXIsIGtleUNvZGUsIDAsIDAsIG51bGwsIGZhbHNlLCBzdWdnZXN0ZWRWYWx1ZSwgY29tYm9Jc0Ryb3BEb3duLCBoYW5kbGVkKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgQ2xvc2UgRXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZm9ybVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPnRydWUgaWYgZXZlbnQgaXMgQ0xSIGhhbmRsZWQoY2xvc2luZyBvZiB0aGUgZm9ybSB3aWxsIGJlIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgQ0xSIGFuZCBubyBjb21tYW5kcyB3aWxsIGJlIHB1dFxyXG4gIC8vLyBpbiB0byBjbG9zZSB0aGUgZm9ybSkgZWxzZSBmYWxzZS48L3JldHVybnM+XHJcbiAgc3RhdGljIE9uRm9ybUNsb3NlKGZvcm06IEd1aU1nRm9ybSk6IGJvb2xlYW4ge1xyXG4gICAgRGVidWcuQXNzZXJ0KEV2ZW50cy5DbG9zZUZvcm1FdmVudCAhPT0gbnVsbCk7XHJcbiAgICByZXR1cm4gRXZlbnRzLkNsb3NlRm9ybUV2ZW50KGZvcm0pO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBEaXNwb3NlIEV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImZvcm1cIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBPbkRpc3Bvc2UoZm9ybTogR3VpTWdGb3JtKTogdm9pZCB7XHJcbiAgICBEZWJ1Zy5Bc3NlcnQoRXZlbnRzLkRpc3Bvc2VFdmVudCAhPT0gbnVsbCk7XHJcbiAgICBFdmVudHMuRGlzcG9zZUV2ZW50KGZvcm0pO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBUaW1lciBFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtZ1RpbWVyXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgT25UaW1lcihtZ1RpbWVyOiBNZ1RpbWVyKTogdm9pZCB7XHJcbiAgICBEZWJ1Zy5Bc3NlcnQoRXZlbnRzLlRpbWVyRXZlbnQgIT09IG51bGwpO1xyXG4gICAgRXZlbnRzLlRpbWVyRXZlbnQobWdUaW1lcik7XHJcbiAgfVxyXG5cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgUmVzaXplIEV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm5ld1Jvd3NJblBhZ2VcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBPblRhYmxlUmVzaXplKGN0cmw6IEd1aU1nQ29udHJvbCwgbmV3Um93c0luUGFnZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoRXZlbnRzLlRhYmxlUmVzaXplRXZlbnQgIT09IG51bGwpIHtcclxuICAgICAgRXZlbnRzLlRhYmxlUmVzaXplRXZlbnQoY3RybCwgbmV3Um93c0luUGFnZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IGludm9rZXMgdGhlIEdldFJvd3NEYXRhIEV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImRlc2lyZWRUb3BJbmRleFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic2VuZEFsbFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGFzdEZvY3VzZWRWYWxcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBPbkdldFJvd3NEYXRhKGN0cmw6IEd1aU1nQ29udHJvbCwgZGVzaXJlZFRvcEluZGV4OiBudW1iZXIsIHNlbmRBbGw6IGJvb2xlYW4sIGxhc3RGb2N1c2VkVmFsOiBMYXN0Rm9jdXNlZFZhbCk6IHZvaWQge1xyXG4gICAgICBpZiAoRXZlbnRzLkdldFJvd3NEYXRhRXZlbnQgIT09IG51bGwpIHtcclxuICAgICAgICAgIEV2ZW50cy5HZXRSb3dzRGF0YUV2ZW50KGN0cmwsIGRlc2lyZWRUb3BJbmRleCwgc2VuZEFsbCwgbGFzdEZvY3VzZWRWYWwpO1xyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBDb2x1bW5DbGljayBFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb2x1bW5DdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJkaXJlY3Rpb25cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbHVtbkhlYWRlclwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIE9uQ29sdW1uQ2xpY2soY29sdW1uQ3RybDogR3VpTWdDb250cm9sLCBkaXJlY3Rpb246IG51bWJlciwgY29sdW1uSGVhZGVyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIERlYnVnLkFzc2VydChFdmVudHMuQ29sdW1uQ2xpY2tFdmVudCAhPT0gbnVsbCk7XHJcbiAgICBFdmVudHMuQ29sdW1uQ2xpY2tFdmVudChjb2x1bW5DdHJsLCBkaXJlY3Rpb24sIGNvbHVtbkhlYWRlcik7XHJcbiAgfVxyXG5cclxuXHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+aW52b2tlcyByZWZyZXNoVGFibGVzIGRlbGVnYXRlPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBSZWZyZXNoVGFibGVzKCk6IHZvaWQge1xyXG4gICAgaWYgKEV2ZW50cy5SZWZyZXNoVGFibGVzRXZlbnQgIT09IG51bGwpIHtcclxuICAgICAgRXZlbnRzLlJlZnJlc2hUYWJsZXNFdmVudCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5PbkhlbHBDbG9zZTwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJhY3RpdmVGb3JtXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgT25DbG9zZUhlbHAoYWN0aXZlRm9ybTogR3VpTWdGb3JtKTogdm9pZCB7XHJcbiAgICBpZiAoRXZlbnRzLkhlbHBDbG9zZUV2ZW50ICE9PSBudWxsKSB7XHJcbiAgICAgIEV2ZW50cy5IZWxwQ2xvc2VFdmVudChhY3RpdmVGb3JtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHJldHVybnMgVFJVRSwgaWYgQmF0Y2ggdGFzayBpcyBydW5uaW5nIGluIE1BSU4gY29udGV4dC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBJc0JhdGNoUnVubmluZ0luTWFpbkNvbnRleHQoKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgcmV0VmFsdWU6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGlmIChFdmVudHMuSXNCYXRjaFJ1bm5pbmdJbk1haW5Db250ZXh0RXZlbnQgIT09IG51bGwpIHtcclxuICAgICAgcmV0VmFsdWUgPSBFdmVudHMuSXNCYXRjaFJ1bm5pbmdJbk1haW5Db250ZXh0RXZlbnQoKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXRWYWx1ZTtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+TUxTIHRyYW5zbGF0aW9uPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImZyb21TdHJpbmdcIj5zb3VyY2Ugc3RyaW5nPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+dHJhbnNsYXRlZCBzdHJpbmc8L3JldHVybnM+XHJcbiAgc3RhdGljIFRyYW5zbGF0ZShmcm9tU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgRGVidWcuQXNzZXJ0KEV2ZW50cy5UcmFuc2xhdGVFdmVudCAhPT0gbnVsbCk7XHJcbiAgICByZXR1cm4gKGZyb21TdHJpbmcgIT09IG51bGwgJiYgZnJvbVN0cmluZy5sZW5ndGggPiAwKSA/IEV2ZW50cy5UcmFuc2xhdGVFdmVudChmcm9tU3RyaW5nKSA6IGZyb21TdHJpbmc7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIENyZWF0ZXMgUHJpbnQgUHJldmlldyBGb3JtXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb250ZXh0SWRcIj5jb250ZXh0IGlkPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpb1B0clwiPnBvaW50ZXIgdG8gY3VycmVudCBJT1JUIG9iamVjdDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29waWVzXCI+bnVtYmVyIG9mIGNvcGllczwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZW5hYmxlUERsZ1wiPmluZGljYXRlcyB3aGV0aGVyIHRvIGVuYWJsZSBQcmludCBkaWFsb2c8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImhXbmRcIj5IYW5kbGUgb2YgUHJpbnQgUHJldmlldyBGb3JtPC9wYXJhbT5cclxuICBzdGF0aWMgT25QcmludFByZXZpZXdTdGFydChjb250ZXh0SUQ6IG51bWJlciwgaW9QdHI6IG51bWJlciwgY29waWVzOiBudW1iZXIsIGVuYWJsZVBEbGc6IGJvb2xlYW4sIGhXbmQ6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKEV2ZW50cy5QcmludFByZXZpZXdTdGFydEV2ZW50ICE9PSBudWxsKSB7XHJcbiAgICAgIEV2ZW50cy5QcmludFByZXZpZXdTdGFydEV2ZW50KGNvbnRleHRJRCwgaW9QdHIsIGNvcGllcywgZW5hYmxlUERsZywgaFduZCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFNldCBjdXJzb3IgdG8gUHJpbnQgUHJldmlldyBmb3JtXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJwcm5QcmV2RGF0YVwiPnByaW50IHByZXZpZXcgZGF0YTwvcGFyYW0+XHJcbiAgc3RhdGljIE9uUHJpbnRQcmV2aWV3U2V0Q3Vyc29yKHByaW50UHJldmlld0RhdGE6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKEV2ZW50cy5QcmludFByZXZpZXdTZXRDdXJzb3JFdmVudCAhPT0gbnVsbCkge1xyXG4gICAgICBFdmVudHMuUHJpbnRQcmV2aWV3U2V0Q3Vyc29yRXZlbnQocHJpbnRQcmV2aWV3RGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy88c3VtbWFyeT5cclxuICAvLy8gSGFuZGxlcyBJbnZva2UgVURQIG9wZXJhdGlvbiBmcm9tIEdVSSB0aHJlYWRcclxuICAvLy88L3N1bW1hcnk+XHJcbiAgLy8vPHBhcmFtIG5hbWU9XCJjb250ZXh0SWRcIj5Db250ZXh0IGlkPC9wYXJhbT5cclxuICBzdGF0aWMgSW52b2tlVURQKGNvbnRleHRJZDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGxldCByZXQ6IG51bWJlciA9IDA7XHJcbiAgICBpZiAoRXZlbnRzLkludm9rZVVEUEV2ZW50ICE9PSBudWxsKSB7XHJcbiAgICAgIHJldCA9IEV2ZW50cy5JbnZva2VVRFBFdmVudChjb250ZXh0SWQpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gVXBkYXRlIFByaW50IFByZXZpZXdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInByblByZXZEYXRhXCI+cHJpbnQgcHJldmlldyBkYXRhPC9wYXJhbT5cclxuICBzdGF0aWMgT25QcmludFByZXZpZXdVcGRhdGUocHJuUHJldkRhdGE6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKEV2ZW50cy5QcmludFByZXZpZXdVcGRhdGVFdmVudCAhPT0gbnVsbCkge1xyXG4gICAgICBFdmVudHMuUHJpbnRQcmV2aWV3VXBkYXRlRXZlbnQocHJuUHJldkRhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDcmVhdGUgUmljaCBFZGl0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb250ZXh0SWRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxQdHJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInBybVB0clwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3R5bGVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImR3RXhTdHlsZVwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIE9uQ3JlYXRlUmljaFdpbmRvdyhjb250ZXh0SUQ6IG51bWJlciwgY3RybFB0cjogbnVtYmVyLCBwcm1QdHI6IG51bWJlciwgc3R5bGU6IG51bWJlciwgZHdFeFN0eWxlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChFdmVudHMuQ3JlYXRlUmljaFdpbmRvd0V2ZW50ICE9PSBudWxsKSB7XHJcbiAgICAgIEV2ZW50cy5DcmVhdGVSaWNoV2luZG93RXZlbnQoY29udGV4dElELCBjdHJsUHRyLCBwcm1QdHIsIHN0eWxlLCBkd0V4U3R5bGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vPHN1bW1hcnk+XHJcbiAgLy8vICBDcmVhdGVzIGEgd2luZG93XHJcbiAgLy8vPC9zdW1tYXJ5PlxyXG4gIC8vLzxwYXJhbSBuYW1lPVwiZXhTdHlsZVwiPiEhLjwvcGFyYW0+XHJcbiAgLy8vPHBhcmFtIG5hbWU9XCJjbGFzc05hbWVcIj4hIS48L3BhcmFtPlxyXG4gIC8vLzxwYXJhbSBuYW1lPVwid2luZG93TmFtZVwiPiEhLjwvcGFyYW0+XHJcbiAgLy8vPHBhcmFtIG5hbWU9XCJzdHlsZVwiPiEhLjwvcGFyYW0+XHJcbiAgLy8vPHBhcmFtIG5hbWU9XCJ4XCI+ISEuPC9wYXJhbT5cclxuICAvLy88cGFyYW0gbmFtZT1cInlcIj4hIS48L3BhcmFtPlxyXG4gIC8vLzxwYXJhbSBuYW1lPVwid2lkdGhcIj4hIS48L3BhcmFtPlxyXG4gIC8vLzxwYXJhbSBuYW1lPVwiaGVpZ2h0XCI+ISEuPC9wYXJhbT5cclxuICAvLy88cGFyYW0gbmFtZT1cImh3bmRQYXJlbnRcIj4hIS48L3BhcmFtPlxyXG4gIC8vLzxwYXJhbSBuYW1lPVwiaE1lbnVcIj4hIS48L3BhcmFtPlxyXG4gIC8vLzxwYXJhbSBuYW1lPVwiaEluc3RhbmNlXCI+ISEuPC9wYXJhbT5cclxuICAvLy88cGFyYW0gbmFtZT1cImxQYXJhbVwiPiEhLjwvcGFyYW0+XHJcbiAgLy8vPHJldHVybnM+aGFuZGxlIG9mIHdpbmRvdzwvcmV0dXJucz5cclxuICBzdGF0aWMgT25DcmVhdGVHdWlXaW5kb3coZXhTdHlsZTogbnVtYmVyLCBjbGFzc05hbWU6IHN0cmluZywgd2luZG93TmFtZTogc3RyaW5nLCBzdHlsZTogbnVtYmVyLCB4OiBudW1iZXIsIHk6IG51bWJlciwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIGh3bmRQYXJlbnQ6IG51bWJlciwgaE1lbnU6IG51bWJlciwgaEluc3RhbmNlOiBudW1iZXIsIGxQYXJhbTogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGxldCByZXRWYWx1ZTogbnVtYmVyID0gMDtcclxuICAgIGlmIChFdmVudHMuQ3JlYXRlR3VpV2luZG93RXZlbnQgIT09IG51bGwpIHtcclxuICAgICAgcmV0VmFsdWUgPSBFdmVudHMuQ3JlYXRlR3VpV2luZG93RXZlbnQoZXhTdHlsZSwgY2xhc3NOYW1lLCB3aW5kb3dOYW1lLCBzdHlsZSwgeCwgeSwgd2lkdGgsIGhlaWdodCwgaHduZFBhcmVudCwgaE1lbnUsIGhJbnN0YW5jZSwgbFBhcmFtKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXRWYWx1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gRGVzdHJveXMgYSB3aW5kb3dcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImhXbmRQdHJcIj5oYW5kbGUgb2Ygd2luZG93PC9wYXJhbT5cclxuICBzdGF0aWMgT25EZXN0cm95R3VpV2luZG93KGhXbmRQdHI6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKEV2ZW50cy5EZXN0cm95R3VpV2luZG93RXZlbnQgIT09IG51bGwpIHtcclxuICAgICAgRXZlbnRzLkRlc3Ryb3lHdWlXaW5kb3dFdmVudChoV25kUHRyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gT25DbG9zZSBQcmludCBQcmV2aWV3XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJoV25kUHRyXCI+cHJpbnQgcHJldmlldyBkYXRhPC9wYXJhbT5cclxuICBzdGF0aWMgT25QcmludFByZXZpZXdDbG9zZShwcmludFByZXZpZXdEYXRhUHRyOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChFdmVudHMuUHJpbnRQcmV2aWV3Q2xvc2VFdmVudCAhPT0gbnVsbCkge1xyXG4gICAgICBFdmVudHMuUHJpbnRQcmV2aWV3Q2xvc2VFdmVudChwcmludFByZXZpZXdEYXRhUHRyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gU2hvdyBQcmludCBEaWFsb2dcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImdwZFwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIE9uU2hvd1ByaW50RGlhbG9nKGdwZDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgIGxldCByZXRWYWx1ZTogbnVtYmVyID0gMDtcclxuICAgIGlmIChFdmVudHMuU2hvd1ByaW50RGlhbG9nRXZlbnQgIT09IG51bGwpIHtcclxuICAgICAgcmV0VmFsdWUgPSBFdmVudHMuU2hvd1ByaW50RGlhbG9nRXZlbnQoZ3BkKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXRWYWx1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gZGlzcGxheVNlc3Npb25TdGF0aXN0aWNzIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgRGlzcGxheVNlc3Npb25TdGF0aXN0aWNzKCk6IHZvaWQge1xyXG4gICAgaWYgKEV2ZW50cy5EaXNwbGF5U2Vzc2lvblN0YXRpc3RpY3NFdmVudCAhPT0gbnVsbCkge1xyXG4gICAgICBFdmVudHMuRGlzcGxheVNlc3Npb25TdGF0aXN0aWNzRXZlbnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gcmV0dXJucyB0cnVlIGZvciBub24gaW50ZXJhY3RpdmUgdGFzayBmb3IgYWxsIGNvbnRyb2xzIGV4Y2VwdCBhIGJ1dHRvbiBjb250cm9sXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+Y2xpY2tlZCBjb250cm9sPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBTaG91bGRCbG9ja01vdXNlRXZlbnRzKGN0cmw6IEd1aU1nQ29udHJvbCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIEV2ZW50cy5TaG91bGRCbG9ja01vdXNlRXZlbnRzRXZlbnQgIT09IG51bGwgJiYgRXZlbnRzLlNob3VsZEJsb2NrTW91c2VFdmVudHNFdmVudChjdHJsKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5wZWVrRW5kT2ZXb3JrPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIFBlZWtFbmRPZldvcmsoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gRXZlbnRzLlBlZWtFbmRPZldvcmtFdmVudCAhPT0gbnVsbCAmJiBFdmVudHMuUGVla0VuZE9mV29ya0V2ZW50KCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+aW52b2tlcyB0aGUgR2V0RXZlbnRUaW1lIGRlbGVnYXRlPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIEdldEV2ZW50VGltZSgpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIChFdmVudHMuR2V0RXZlbnRUaW1lRXZlbnQgIT09IG51bGwpID8gRXZlbnRzLkdldEV2ZW50VGltZUV2ZW50KCkgOiAwO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBpbnZva2VzIHRoZSBTY3JvbGxUYWJsZSBFdmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpTWdPYmplY3RcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxpbmVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJvd3NUb1Njcm9sbFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaXNQYWdlU2Nyb2xsXCI+bmV4dC9wcmV2IHBhZ2U/PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpc1RhYmxlU2Nyb2xsXCI+QmVnaW4vRW5kIFRhYmxlPzwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaXNSYWlzZWRCeU1vdXNlV2hlZWxcIj5pbmRpY2F0ZXMgd2hldGhlciBldmVudCBpcyByYWlzZWQgYnkgbW91c2V3aGVlbCBvciBub3QuPC9wYXJhbT5cclxuICBzdGF0aWMgT25TY3JvbGxUYWJsZShndWlNZ09iamVjdDogYW55LCBsaW5lOiBudW1iZXIsIHJvd3NUb1Njcm9sbDogbnVtYmVyLCBpc1BhZ2VTY3JvbGw6IGJvb2xlYW4sIGlzVGFibGVTY3JvbGw6IGJvb2xlYW4sIGlzUmFpc2VkQnlNb3VzZVdoZWVsOiBib29sZWFuKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgaGFuZGxlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgaWYgKEV2ZW50cy5TY3JvbGxUYWJsZUV2ZW50ICE9PSBudWxsKSB7XHJcbiAgICAgIGhhbmRsZWQgPSBFdmVudHMuU2Nyb2xsVGFibGVFdmVudChndWlNZ09iamVjdCwgbGluZSwgcm93c1RvU2Nyb2xsLCBpc1BhZ2VTY3JvbGwsIGlzVGFibGVTY3JvbGwsIGlzUmFpc2VkQnlNb3VzZVdoZWVsKTtcclxuICAgIH1cclxuICAgIHJldHVybiBoYW5kbGVkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHZXRzIHRoZSB1c2VyIGRlZmluZWQgRHJvcCBmb3JtYXRzXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXREcm9wVXNlckZvcm1hdHMoKTogc3RyaW5nIHtcclxuICAgIERlYnVnLkFzc2VydChFdmVudHMuR2V0RHJvcFVzZXJGb3JtYXRzRXZlbnQgIT09IG51bGwpO1xyXG4gICAgcmV0dXJuIEV2ZW50cy5HZXREcm9wVXNlckZvcm1hdHNFdmVudCgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHZXQgdGhlIGNvbnRleHQgaWQgZnJvbSBHdWlNZ0Zvcm1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aU1nRm9ybVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0Q29udGV4dElEKGd1aU1nRm9ybTogR3VpTWdGb3JtKTogbnVtYmVyIHtcclxuICAgIGxldCBjb250ZXh0SUQ6IG51bWJlciA9IC0xO1xyXG4gICAgRGVidWcuQXNzZXJ0KGd1aU1nRm9ybSAhPT0gbnVsbCk7XHJcbiAgICBpZiAoRXZlbnRzLkdldENvbnRleHRJREV2ZW50ICE9PSBudWxsKSB7XHJcbiAgICAgIGNvbnRleHRJRCA9IEV2ZW50cy5HZXRDb250ZXh0SURFdmVudChndWlNZ0Zvcm0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvbnRleHRJRDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gU2V0TW9kYWwgZXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN1cnJGb3JtXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJvblwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIFNldE1vZGFsKG1nRm9ybTogTWdGb3JtQmFzZSwgb246IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmIChFdmVudHMuU2V0TW9kYWxFdmVudCAhPT0gbnVsbCkge1xyXG4gICAgICBFdmVudHMuU2V0TW9kYWxFdmVudChtZ0Zvcm0sIG9uKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aU1nRm9ybVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgT25TaG93Rm9ybShndWlNZ0Zvcm06IEd1aU1nRm9ybSk6IHZvaWQge1xyXG4gICAgaWYgKEV2ZW50cy5TaG93Rm9ybUV2ZW50ICE9PSBudWxsKSB7XHJcbiAgICAgIEV2ZW50cy5TaG93Rm9ybUV2ZW50KGd1aU1nRm9ybSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGludm9rZXMgT25Gb3JtQWN0aXZhdGVFdmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIE9uRm9ybUFjdGl2YXRlKGd1aU1nRm9ybTogR3VpTWdGb3JtKTogdm9pZCB7XHJcbiAgICBpZiAoRXZlbnRzLk9uRm9ybUFjdGl2YXRlRXZlbnQgIT09IG51bGwpIHtcclxuICAgICAgRXZlbnRzLk9uRm9ybUFjdGl2YXRlRXZlbnQoZ3VpTWdGb3JtKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gaW52b2tlcyBPbk5DQWN0aXZhdGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBPbk5DQWN0aXZhdGUoZ3VpTWdGb3JtOiBHdWlNZ0Zvcm0pOiB2b2lkIHtcclxuICAgIGlmIChFdmVudHMuT25OQ0FjdGl2YXRlRXZlbnQgIT09IG51bGwpIHtcclxuICAgICAgRXZlbnRzLk9uTkNBY3RpdmF0ZUV2ZW50KGd1aU1nRm9ybSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBIYW5kbGUgV01fS0VZVVAgLSAocmVxdWlyZWQgb25seSBmb3IgQUNUX05FWFRfUlRfV0lORE9XLCBBQ1RfUFJFVl9SVF9XSU5ET1cgZm9yIHNvcnRpbmcgd2luZG93bGlzdFxyXG4gIC8vLyB3aGVuIHRoZSBrZXkgYXNzb2NpYXRlZCB3aXRoIHRoZSBhY3Rpb24gaXMgcmVsZWFzZWQpXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlNZ0Zvcm1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImtleUNvZGVcIj5rZXljb2RlIG9mIGEga2V5IHdoaWNoIGlzIGp1c3QgcmVsZWFzZWQ8L3BhcmFtPlxyXG4gIHN0YXRpYyBIYW5kbGVLZXlVcE1lc3NhZ2UoZ3VpTWdGb3JtOiBHdWlNZ0Zvcm0sIGtleUNvZGU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKEV2ZW50cy5IYW5kbGVLZXlVcE1lc3NhZ2VFdmVudCAhPT0gbnVsbCkge1xyXG4gICAgICBFdmVudHMuSGFuZGxlS2V5VXBNZXNzYWdlRXZlbnQoZ3VpTWdGb3JtLCBrZXlDb2RlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gY2hlY2tzIHdoZXRoZXIgd2Ugc2hvdWxkIHNob3cgTG9nb24gd2luZG93IGluIFJUT0wgZm9ybWF0IG9yIG5vdC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIElzTG9nb25SVEwoKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgaXNSVEw6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGlmIChFdmVudHMuT25Jc0xvZ29uUlRMRXZlbnQgIT09IG51bGwpIHtcclxuICAgICAgaXNSVEwgPSBFdmVudHMuT25Jc0xvZ29uUlRMRXZlbnQoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBpc1JUTDtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBJc1NwZWNpYWxFbmdMb2dvbigpOiBib29sZWFuIHtcclxuICAgIGxldCBpc0VuZ0xvZ29uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBpZiAoRXZlbnRzLk9uSXNTcGVjaWFsRW5nTG9nb25FdmVudCAhPT0gbnVsbCkge1xyXG4gICAgICBpc0VuZ0xvZ29uID0gRXZlbnRzLk9uSXNTcGVjaWFsRW5nTG9nb25FdmVudCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzRW5nTG9nb247XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgSXNTcGVjaWFsSWdub3JlQnV0dG9uRm9ybWF0KCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGlzSWdub3JlQnV0dG9uRm9ybWF0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBpZiAoRXZlbnRzLk9uSXNTcGVjaWFsSWdub3JlQnV0dG9uRm9ybWF0RXZlbnQgIT09IG51bGwpIHtcclxuICAgICAgaXNJZ25vcmVCdXR0b25Gb3JtYXQgPSBFdmVudHMuT25Jc1NwZWNpYWxJZ25vcmVCdXR0b25Gb3JtYXRFdmVudCgpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzSWdub3JlQnV0dG9uRm9ybWF0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBnZXRNYWluUHJvZ3JhbSBFdmVudCA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29udGV4dElEXCI+YWN0aXZlL3RhcmdldCBjb250ZXh0PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdGxJZHhcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIEdldE1haW5Qcm9ncmFtKGNvbnRleHRJRDogbnVtYmVyLCBjdGxJZHg6IG51bWJlcik6IEd1aVRhc2tCYXNlIHtcclxuICAgIERlYnVnLkFzc2VydChFdmVudHMuR2V0TWFpblByb2dyYW1FdmVudCAhPT0gbnVsbCk7XHJcbiAgICByZXR1cm4gRXZlbnRzLkdldE1haW5Qcm9ncmFtRXZlbnQoY29udGV4dElELCBjdGxJZHgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBMb2dpY2FsIG5hbWUgdHJhbnNsYXRpb25cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImZyb21TdHJpbmdcIj5zb3VyY2Ugc3RyaW5nPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+dHJhbnNsYXRlZCBzdHJpbmc8L3JldHVybnM+XHJcbiAgc3RhdGljIFRyYW5zbGF0ZUxvZ2ljYWxOYW1lKGZyb21TdHJpbmc6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBEZWJ1Zy5Bc3NlcnQoRXZlbnRzLlRyYW5zbGF0ZUxvZ2ljYWxOYW1lRXZlbnQgIT09IG51bGwpO1xyXG4gICAgcmV0dXJuIEV2ZW50cy5UcmFuc2xhdGVMb2dpY2FsTmFtZUV2ZW50KGZyb21TdHJpbmcpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBSZXR1cm5zIEFzc2VydFVSTCBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIEdldEFzc2V0c1VSTCgpOiBzdHJpbmcge1xyXG4gICAgRGVidWcuQXNzZXJ0KEV2ZW50cy5HZXRBc3NldHNVUkxFdmVudCAhPT0gbnVsbCk7XHJcbiAgICByZXR1cm4gRXZlbnRzLkdldEFzc2V0c1VSTEV2ZW50KCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+aW52b2tlcyBnZXRNZXNzYWdlU3RyaW5nIEV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1zZ0lkXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXRNZXNzYWdlU3RyaW5nKG1zZ0lkOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgRGVidWcuQXNzZXJ0KEV2ZW50cy5HZXRNZXNzYWdlU3RyaW5nRXZlbnQgIT09IG51bGwpO1xyXG4gICAgbGV0IGZyb21TdHJpbmc6IHN0cmluZyA9IEV2ZW50cy5HZXRNZXNzYWdlU3RyaW5nRXZlbnQobXNnSWQpO1xyXG4gICAgbGV0IHRleHQ6IHN0cmluZyA9IEV2ZW50cy5UcmFuc2xhdGUoZnJvbVN0cmluZyk7XHJcbiAgICBpZiAodGV4dCAhPT0gbnVsbCAmJiB0ZXh0LmVuZHNXaXRoKFwiOlwiKSkge1xyXG4gICAgICBsZXQgc3RyOiBTdHJpbmdCdWlsZGVyO1xyXG4gICAgICBzdHIgPSBuZXcgU3RyaW5nQnVpbGRlcih0ZXh0KTtcclxuICAgICAgc3RyLkluc2VydCh0ZXh0Lmxlbmd0aCwgXCIgXCIpO1xyXG4gICAgICB0ZXh0ID0gc3RyLlRvU3RyaW5nKCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdGV4dDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5yYWlzZXMgQ3RybEZvY3VzRXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgT25DdHJsRm9jdXMoaVRhc2s6IElUYXNrLCBjdHJsOiBHdWlDb250cm9sUHJvcGVydHlBZGFwdGVyKTogdm9pZCB7XHJcbiAgICBpZiAoRXZlbnRzLkN0cmxGb2N1c0V2ZW50ICE9PSBudWxsKSB7XHJcbiAgICAgIEV2ZW50cy5DdHJsRm9jdXNFdmVudChpVGFzaywgPE1nQ29udHJvbEJhc2U+Y3RybCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEdldHMgdGhlIFJ1bnRpbWVDb250ZXh0QmFzZSB0aGF0IGJlbG9uZ3MgdG8gdGhlIGNvbnRleHRJRFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29udGV4dElEXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXRSdW50aW1lQ29udGV4dChjb250ZXh0SUQ6IHN0cmluZyk6IFJ1bnRpbWVDb250ZXh0QmFzZSB7XHJcbiAgICBEZWJ1Zy5Bc3NlcnQoRXZlbnRzLkdldFJ1bnRpbWVDb250ZXh0RXZlbnQgIT09IG51bGwpO1xyXG4gICAgcmV0dXJuIEV2ZW50cy5HZXRSdW50aW1lQ29udGV4dEV2ZW50KGNvbnRleHRJRCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFNhdmVzIHRoZSBuYW1lIG9mIHRoZSBsYXN0IGNsaWNrZWQgY29udHJvbC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aU1nQ29udHJvbFwiPmd1aU1nQ29udHJvbDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29udHJvbE5hbWVcIj5OYW1lIG9mIHRoZSBjb250cm9sPC9wYXJhbT5cclxuICBzdGF0aWMgU2F2ZUxhc3RDbGlja2VkQ3RybE5hbWUoZ3VpTWdDb250cm9sOiBHdWlNZ0NvbnRyb2wsIGNvbnRyb2xOYW1lOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGlmIChFdmVudHMuU2F2ZUxhc3RDbGlja2VkQ3RybEV2ZW50ICE9PSBudWxsKSB7XHJcbiAgICAgIEV2ZW50cy5TYXZlTGFzdENsaWNrZWRDdHJsRXZlbnQoIGNvbnRyb2xOYW1lKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gU2F2ZXMgdGhlIGxhc3QgY2xpY2tlZCBpbmZvcm1hdGlvbi4gKGkuZS4gQ28tb3JkaW5hdGVzIGFuZCBjb250cm9sIG5hbWUuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlNZ0Zvcm1cIj5ndWlNZ0Zvcm08L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbnRyb2xOYW1lXCI+bmFtZSBvZiB0aGUgY29udHJvbDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwieFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwieVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwib2Zmc2V0WFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwib2Zmc2V0WVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGFzdENsaWNrQ29vcmRpbmF0ZXNBcmVJblBpeGVsc1wiPmNvLW9yZGluYXRlcyBhcmUgaW4gcGl4ZWwgb3Igbm90LjwvcGFyYW0+XHJcbiAgc3RhdGljIFNhdmVMYXN0Q2xpY2tJbmZvKGd1aU1nRm9ybTogR3VpTWdGb3JtLCBjb250cm9sTmFtZTogc3RyaW5nLCB4OiBudW1iZXIsIHk6IG51bWJlciwgb2Zmc2V0WDogbnVtYmVyLCBvZmZzZXRZOiBudW1iZXIsIGxhc3RDbGlja0Nvb3JkaW5hdGVzQXJlSW5QaXhlbHM6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmIChFdmVudHMuU2F2ZUxhc3RDbGlja0luZm9FdmVudCAhPT0gbnVsbCkge1xyXG4gICAgICBFdmVudHMuU2F2ZUxhc3RDbGlja0luZm9FdmVudCggY29udHJvbE5hbWUsIHgsIHksIG9mZnNldFgsIG9mZnNldFksIGxhc3RDbGlja0Nvb3JkaW5hdGVzQXJlSW5QaXhlbHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PndyaXRlIGFuIGVycm9yIG1lc3NhZ2UgdG8gdGhlIGludGVybmFsIGxvZyBmaWxlPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1zZ1wiPjwvcGFyYW0+XHJcbiAgc3RhdGljIFdyaXRlRXJyb3JUb0xvZyhtc2c6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgRGVidWcuQXNzZXJ0KEV2ZW50cy5Xcml0ZUVycm9yVG9Mb2dFdmVudCAhPT0gbnVsbCk7XHJcbiAgICBFdmVudHMuV3JpdGVFcnJvclRvTG9nRXZlbnQobXNnKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBXcml0ZUV4Y2VwdGlvblRvTG9nKG1zZzogc3RyaW5nKTogdm9pZDtcclxuICBzdGF0aWMgV3JpdGVFeGNlcHRpb25Ub0xvZyhleDogRXhjZXB0aW9uKTogdm9pZDtcclxuICBzdGF0aWMgV3JpdGVFeGNlcHRpb25Ub0xvZyhtc2dPckV4OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmIChtc2dPckV4ID09PSBudWxsIHx8IG1zZ09yRXguY29uc3RydWN0b3IgPT09IFN0cmluZykpIHtcclxuICAgICAgRXZlbnRzLldyaXRlRXhjZXB0aW9uVG9Mb2dfMChtc2dPckV4KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgRXZlbnRzLldyaXRlRXhjZXB0aW9uVG9Mb2dfMShtc2dPckV4KTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIFdyaXRlRXhjZXB0aW9uVG9Mb2dfMChtc2c6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgRGVidWcuQXNzZXJ0KEV2ZW50cy5Xcml0ZUVycm9yVG9Mb2dFdmVudCAhPT0gbnVsbCk7XHJcbiAgICBFdmVudHMuV3JpdGVFcnJvclRvTG9nRXZlbnQobXNnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIFdyaXRlRXhjZXB0aW9uVG9Mb2dfMShleDogRXhjZXB0aW9uKTogdm9pZCB7XHJcbiAgICBFdmVudHMuV3JpdGVFeGNlcHRpb25Ub0xvZyhOU3RyaW5nLkZvcm1hdChcInswfSA6IHsxfXsyfXszfXs0fVwiLCBbXHJcbiAgICAgIGV4LkdldFR5cGUoKSwgT1NFbnZpcm9ubWVudC5Fb2xTZXEsIGV4LlN0YWNrVHJhY2UsIE9TRW52aXJvbm1lbnQuRW9sU2VxLCBleC5NZXNzYWdlXHJcbiAgICBdKSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+d3JpdGUgYSB3YXJuaW5nIG1lc3NhZ2UgdG8gdGhlIGludGVybmFsIGxvZyBmaWxlPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1zZ1wiPjwvcGFyYW0+XHJcbiAgc3RhdGljIFdyaXRlV2FybmluZ1RvTG9nKG1zZzogc3RyaW5nKTogdm9pZDtcclxuICBzdGF0aWMgV3JpdGVXYXJuaW5nVG9Mb2coZXg6IEV4Y2VwdGlvbik6IHZvaWQ7XHJcbiAgc3RhdGljIFdyaXRlV2FybmluZ1RvTG9nKG1zZ09yRXg6IGFueSk6IHZvaWQge1xyXG4gICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDEgJiYgKG1zZ09yRXggPT09IG51bGwgfHwgbXNnT3JFeC5jb25zdHJ1Y3RvciA9PT0gU3RyaW5nKSkge1xyXG4gICAgICBFdmVudHMuV3JpdGVXYXJuaW5nVG9Mb2dfMChtc2dPckV4KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgRXZlbnRzLldyaXRlV2FybmluZ1RvTG9nXzEobXNnT3JFeCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBXcml0ZVdhcm5pbmdUb0xvZ18wKG1zZzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBEZWJ1Zy5Bc3NlcnQoRXZlbnRzLldyaXRlV2FybmluZ1RvTG9nRXZlbnQgIT09IG51bGwpO1xyXG4gICAgRXZlbnRzLldyaXRlV2FybmluZ1RvTG9nRXZlbnQobXNnKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgc3RhdGljIFdyaXRlV2FybmluZ1RvTG9nXzEoZXg6IEV4Y2VwdGlvbik6IHZvaWQge1xyXG4gICAgRXZlbnRzLldyaXRlV2FybmluZ1RvTG9nKGV4LkdldFR5cGUoKSArIFwiIDogXCIgKyBPU0Vudmlyb25tZW50LkVvbFNlcSArIGV4LlN0YWNrVHJhY2UgKyBPU0Vudmlyb25tZW50LkVvbFNlcSArIGV4Lk1lc3NhZ2UpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vL1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibG9nTGV2ZWxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIFNob3VsZExvZyhsb2dMZXZlbDogTG9nZ2VyX0xvZ0xldmVscyk6IGJvb2xlYW4ge1xyXG4gICAgRGVidWcuQXNzZXJ0KEV2ZW50cy5TaG91bGRMb2dFdmVudCAhPT0gbnVsbCk7XHJcbiAgICByZXR1cm4gRXZlbnRzLlNob3VsZExvZ0V2ZW50KGxvZ0xldmVsKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT53cml0ZSBhIEdVSSBtZXNzYWdlIHRvIHRoZSBpbnRlcm5hbCBsb2cgZmlsZTwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtc2dcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBXcml0ZUd1aVRvTG9nKG1zZzogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBEZWJ1Zy5Bc3NlcnQoRXZlbnRzLldyaXRlR3VpVG9Mb2dFdmVudCAhPT0gbnVsbCk7XHJcbiAgICBFdmVudHMuV3JpdGVHdWlUb0xvZ0V2ZW50KFwiR1VJOiBcIiArIG1zZyk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+d3JpdGUgYSBERVYgbWVzc2FnZSB0byB0aGUgaW50ZXJuYWwgbG9nIGZpbGU8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibXNnXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgV3JpdGVEZXZUb0xvZyhtc2c6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgRGVidWcuQXNzZXJ0KEV2ZW50cy5Xcml0ZURldlRvTG9nRXZlbnQgIT09IG51bGwpO1xyXG4gICAgRXZlbnRzLldyaXRlRGV2VG9Mb2dFdmVudChtc2cpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDYWxsZWQgd2hlbiBXTV9DTEVBUiBtZXNzYWdlIGlzIHJlY2VpdmVkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgT25DbGVhcihjdHJsOiBHdWlNZ0NvbnRyb2wpOiB2b2lkIHtcclxuICAgICAgaWYgKEV2ZW50cy5DbGVhckV2ZW50ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBFdmVudHMuQ2xlYXJFdmVudChjdHJsKTtcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDYWxsZWQgd2hlbiBXTV9VTkRPIG1lc3NhZ2UgaXMgcmVjZWl2ZWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBPblVuZG8oY3RybDogR3VpTWdDb250cm9sKTogdm9pZCB7XHJcbiAgICAgIGlmIChFdmVudHMuVW5kb0V2ZW50ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBFdmVudHMuVW5kb0V2ZW50KGN0cmwpO1xyXG4gICAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFNob3VsZCBFbnRlciBiZSBhZGRlZCBhcyBrZXlib2FyZCBldmVudCA/IFRoaXMgaXMgaW1wb3J0YW50IG1vc3RseSBpbiBkZXRlcm1pbmluZyBpZiBhIGNsaWNrIGV2ZW50XHJcbiAgLy8vIHdpbGwgYmUgcmFpc2VkIGZvciBhIGRlZmF1bHQgYnV0dG9uIG9yIG5vdC5cclxuICAvLy8gQWRkaW5nIEVudGVyIGFzIGEga2V5Ym9hcmQgZXZlbnQgd2lsbCBub3QgcmFpc2UgY2xpY2sgb24gZGVmYXVsdCBidXR0b24uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBBZGRFbnRlckFzS2V5RXZlbnQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gRXZlbnRzLlNob3VsZEFkZEVudGVyQXNLZXlFdmVudCAhPT0gbnVsbCAmJiBFdmVudHMuU2hvdWxkQWRkRW50ZXJBc0tleUV2ZW50KCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgU2hvd1Nlc3Npb25TdGF0aXN0aWNzRm9ybSgpOiB2b2lkIHtcclxuICAgIGlmIChFdmVudHMuU2hvd1Nlc3Npb25TdGF0aXN0aWNzRXZlbnQgIT09IG51bGwpIHtcclxuICAgICAgRXZlbnRzLlNob3dTZXNzaW9uU3RhdGlzdGljc0V2ZW50KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIENhbGxlZCB3aGVuIFdNX0NPUFlEQVRBIG1lc3NhZ2UgaXMgcmVjZWl2ZWRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aU1nRm9ybVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29weURhdGFcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBPbkNvcHlEYXRhKGd1aU1nRm9ybTogR3VpTWdGb3JtLCBjb3B5RGF0YTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoRXZlbnRzLkNvcHlEYXRhRXZlbnQgIT09IG51bGwpIHtcclxuICAgICAgRXZlbnRzLkNvcHlEYXRhRXZlbnQoZ3VpTWdGb3JtLCBjb3B5RGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcigpIHtcclxuICB9XHJcbn1cclxuIl19
|
|
425
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9FdmVudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFDLEtBQUssRUFBbUIsT0FBTyxFQUFFLGFBQWEsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBSXBGLE9BQU8sRUFBbUIsYUFBYSxFQUFDLE1BQU0sa0JBQWtCLENBQUM7QUFXakUsTUFBTSxPQUFPLE1BQU07SUFHakIsTUFBTSxDQUFDLDhCQUE4QixHQUFpQyxJQUFJLENBQUM7SUFLM0UsTUFBTSxDQUFDLGdDQUFnQyxHQUFrQixJQUFJLENBQUM7SUFLOUQsTUFBTSxDQUFDLGNBQWMsR0FBbUMsSUFBSSxDQUFDO0lBVTdELE1BQU0sQ0FBQyxzQkFBc0IsR0FBa0csSUFBSSxDQUFDO0lBTXBJLE1BQU0sQ0FBQywwQkFBMEIsR0FBdUMsSUFBSSxDQUFDO0lBTTdFLE1BQU0sQ0FBQyxjQUFjLEdBQWtDLElBQUksQ0FBQztJQU01RCxNQUFNLENBQUMsdUJBQXVCLEdBQWtDLElBQUksQ0FBQztJQVVyRSxNQUFNLENBQUMscUJBQXFCLEdBQW1HLElBQUksQ0FBQztJQWtCcEksTUFBTSxDQUFDLG9CQUFvQixHQUFpTixJQUFJLENBQUM7SUFNalAsTUFBTSxDQUFDLHFCQUFxQixHQUE4QixJQUFJLENBQUM7SUFNL0QsTUFBTSxDQUFDLHNCQUFzQixHQUE4QixJQUFJLENBQUM7SUFNaEUsTUFBTSxDQUFDLG9CQUFvQixHQUE0QixJQUFJLENBQUM7SUFPNUQsTUFBTSxDQUFDLGFBQWEsR0FBOEMsSUFBSSxDQUFDO0lBSXZFLE1BQU0sQ0FBQyxjQUFjLEdBQWdELElBQUksQ0FBQztJQU8xRSxNQUFNLENBQUMsc0JBQXNCLEdBQThDLElBQUksQ0FBQztJQU9oRixNQUFNLENBQUMsd0JBQXdCLEdBQW1DLElBQUksQ0FBQztJQVl2RSxNQUFNLENBQUMsc0JBQXNCLEdBQW9J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QUMsQ0FBQztJQUMzQyxDQUFDO0lBSUQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxHQUFXO1FBQzlCLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGtCQUFrQixLQUFLLElBQUksQ0FBQyxDQUFDO1FBQ2pELE1BQU0sQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNqQyxDQUFDO0lBTUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxJQUFrQjtRQUM3QixJQUFJLE1BQU0sQ0FBQyxVQUFVLEtBQUssSUFBSSxFQUFFO1lBQzVCLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDM0I7SUFDTCxDQUFDO0lBTUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFrQjtRQUM1QixJQUFJLE1BQU0sQ0FBQyxTQUFTLEtBQUssSUFBSSxFQUFFO1lBQzNCLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDMUI7SUFDTCxDQUFDO0lBUUQsTUFBTSxDQUFDLGtCQUFrQjtRQUN2QixPQUFPLE1BQU0sQ0FBQyx3QkFBd0IsS0FBSyxJQUFJLElBQUksTUFBTSxDQUFDLHdCQUF3QixFQUFFLENBQUM7SUFDdkYsQ0FBQztJQUlELE1BQU0sQ0FBQyx5QkFBeUI7UUFDOUIsSUFBSSxNQUFNLENBQUMsMEJBQTBCLEtBQUssSUFBSSxFQUFFO1lBQzlDLE1BQU0sQ0FBQywwQkFBMEIsRUFBRSxDQUFDO1NBQ3JDO0lBQ0gsQ0FBQztJQU9ELE1BQU0sQ0FBQyxVQUFVLENBQUMsU0FBb0IsRUFBRSxRQUFnQjtRQUN0RCxJQUFJLE1BQU0sQ0FBQyxhQUFhLEtBQUssSUFBSSxFQUFFO1lBQ2pDLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1NBQzNDO0lBQ0gsQ0FBQztJQUVEO0lBQ0EsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7R3VpTWdDb250cm9sfSBmcm9tIFwiLi9ndWkvR3VpTWdDb250cm9sXCI7XHJcbmltcG9ydCB7TWdGb3JtQmFzZX0gZnJvbSBcIi4vbWFuYWdlbWVudC9ndWkvTWdGb3JtQmFzZVwiO1xyXG5pbXBvcnQge0lUYXNrfSBmcm9tIFwiLi9tYW5hZ2VtZW50L3Rhc2tzL0lUYXNrXCI7XHJcbmltcG9ydCB7TWdDb250cm9sQmFzZX0gZnJvbSBcIi4vbWFuYWdlbWVudC9ndWkvTWdDb250cm9sQmFzZVwiO1xyXG5pbXBvcnQge1J1bnRpbWVDb250ZXh0QmFzZX0gZnJvbSBcIi4vbWFuYWdlbWVudC9SdW50aW1lQ29udGV4dEJhc2VcIjtcclxuaW1wb3J0IHtHdWlNZ0Zvcm19IGZyb20gXCIuL2d1aS9HdWlNZ0Zvcm1cIjtcclxuaW1wb3J0IHtHdWlUYXNrQmFzZX0gZnJvbSBcIi4vbWFuYWdlbWVudC90YXNrcy9HdWlUYXNrQmFzZVwiO1xyXG5pbXBvcnQge0RlYnVnLCBFeGNlcHRpb24sIExpc3QsIE5TdHJpbmcsIFN0cmluZ0J1aWxkZXJ9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge01vZGlmaWVyc30gZnJvbSBcIi4vR3VpRW51bXNcIjtcclxuaW1wb3J0IHtNZ1RpbWVyfSBmcm9tIFwiLi9tYW5hZ2VtZW50L3Rhc2tzL01nVGltZXJcIjtcclxuaW1wb3J0IHtMYXN0Rm9jdXNlZFZhbH0gZnJvbSBcIi4vZ3VpL0xhc3RGb2N1c2VkVmFsXCI7XHJcbmltcG9ydCB7TG9nZ2VyX0xvZ0xldmVscywgT1NFbnZpcm9ubWVudH0gZnJvbSBcIkBtYWdpYy14cGEvdXRpbHNcIjtcclxuaW1wb3J0IHsgR3VpQ29udHJvbFByb3BlcnR5QWRhcHRlciB9IGZyb20gXCIuL21hbmFnZW1lbnQvZ3VpL0d1aUNvbnRyb2xQcm9wZXJ0eUFkYXB0ZXJcIjtcclxuXHJcbi8vLyA8c3VtbWFyeT5ldmVudHMgcmFpc2VkIGJ5IE1nR3VpLmRsbCBhbmQgaGFuZGxlZCBieSBNZ3hwYVJJQS5leGUgb3IgTWd4cGFSdW50aW1lLmV4ZS5cclxuLy8vIEltcG9ydGFudCBub3RlOiB0aGVzZSBldmVudHMgYXJlIE5PVCByZWxhdGVkIHRoZSBldmVudHMgaGFuZGxpbmcgb2YgTWFnaWMgKFJDIG9yIFJURSkgLVxyXG4vLy8gICB0aGUgZXZlbnRzIGV4cG9zZWQgZnJvbSB0aGlzIGNsYXNzIGNvbnRhaW4gZnVuY3Rpb25hbGl0eSB0aGF0IHRoZSBjdXJyZW50IGFzc2VtYmx5IChNZ0d1aS5kbGwpXHJcbi8vLyAgIHJlcXVpcmVzIGZyb20gZWl0aGVyIE1neHBhUklBLmV4ZSBvciBNZ3hwYVJ1bnRpbWUuZXhlLlxyXG4vLy8gVGhpcyBjbGFzcyBjb250YWlucyBvbmx5IHRoZSBkZWZpbml0aW9ucyBvZiBhbGwgZGVsZWdhdGVzIGFuZCBldmVudHMuXHJcbi8vLyBDbGFzcyAnRXZlbnRzUHJvY2Vzc29yJyBjb250YWlucyBoYW5kbGVycyBmb3IgZXZlbnRzIHRoYXQgY2FuIGJlIHNlcnZlZCBsb2NhbGx5IChieSBNZ0d1aS5kbGwpLFxyXG4vLy8gICBhbmQgcmVnaXN0ZXJlZCBleHRlcm5hbCBoYW5kbGVycyAoaW4gTWd4cGFSSUEuZXhlIG9yIE1neHBhUnVudGltZS5leGUpIGZvciBldmVudHMgdGhhdCBjYW4ndCBiZSBzZXJ2ZWQgbG9jYWxseS5cclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0IGNsYXNzIEV2ZW50cyB7XHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBWaXNpYmlsaXR5Q2hhbmdlZCBFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+Y29udHJvbCB3aG9zZSB2aXNpYmlsaXR5IGlzIGNoYW5nZWQ8L3BhcmFtPlxyXG4gIHN0YXRpYyBOb25QYXJrYWJsZUxhc3RQYXJrZWRDdHJsRXZlbnQ6IChjdHJsOiBHdWlNZ0NvbnRyb2wpID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHJldHVybnMgVFJVRSwgaWYgQmF0Y2ggdGFzayBpcyBydW5uaW5nIGluIE1BSU4gY29udGV4dC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBJc0JhdGNoUnVubmluZ0luTWFpbkNvbnRleHRFdmVudDogKCkgPT4gYm9vbGVhbiA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5NTFMgdHJhbnNsYXRpb248L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZnJvbVN0cmluZ1wiPnNvdXJjZSBzdHJpbmc8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz50cmFuc2xhdGVkIHN0cmluZzwvcmV0dXJucz5cclxuICBzdGF0aWMgVHJhbnNsYXRlRXZlbnQ6IChmcm9tU3RyaW5nOiBzdHJpbmcpID0+IHN0cmluZyA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ3JlYXRlcyBQcmludCBQcmV2aWV3IEZvcm1cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbnRleHRJZFwiPmNvbnRleHQgaWQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImlvUHRyXCI+cG9pbnRlciB0byBjdXJyZW50IElPUlQgb2JqZWN0PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb3BpZXNcIj5udW1iZXIgb2YgY29waWVzPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJlbmFibGVQRGxnXCI+aW5kaWNhdGVzIHdoZXRoZXIgdG8gZW5hYmxlIFByaW50IGRpYWxvZzwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaFduZFwiPkhhbmRsZSBvZiBQcmludCBQcmV2aWV3IEZvcm08L3BhcmFtPlxyXG4gIHN0YXRpYyBQcmludFByZXZpZXdTdGFydEV2ZW50OiAoY29udGV4dElEOiBudW1iZXIsIGlvUHRyOiBudW1iZXIsIGNvcGllczogbnVtYmVyLCBlbmFibGVQRGxnOiBib29sZWFuLCBoV25kOiBudW1iZXIpID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFNldCBjdXJzb3IgdG8gUHJpbnQgUHJldmlldyBmb3JtXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJwcm5QcmV2RGF0YVwiPnByaW50IHByZXZpZXcgZGF0YTwvcGFyYW0+XHJcbiAgc3RhdGljIFByaW50UHJldmlld1NldEN1cnNvckV2ZW50OiAocHJpbnRQcmV2aWV3RGF0YTogbnVtYmVyKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vPHN1bW1hcnk+XHJcbiAgLy8vIEhhbmRsZXMgSW52b2tlIFVEUCBvcGVyYXRpb24gZnJvbSBHVUkgdGhyZWFkXHJcbiAgLy8vPC9zdW1tYXJ5PlxyXG4gIC8vLzxwYXJhbSBuYW1lPVwiY29udGV4dElkXCI+Q29udGV4dCBpZDwvcGFyYW0+XHJcbiAgc3RhdGljIEludm9rZVVEUEV2ZW50OiAoY29udGV4dElkOiBudW1iZXIpID0+IG51bWJlciA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gVXBkYXRlIFByaW50IFByZXZpZXdcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInByblByZXZEYXRhXCI+cHJpbnQgcHJldmlldyBkYXRhPC9wYXJhbT5cclxuICBzdGF0aWMgUHJpbnRQcmV2aWV3VXBkYXRlRXZlbnQ6IChwcm5QcmV2RGF0YTogbnVtYmVyKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDcmVhdGUgUmljaCBFZGl0XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb250ZXh0SWRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxQdHJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInBybVB0clwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3R5bGVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImR3RXhTdHlsZVwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIENyZWF0ZVJpY2hXaW5kb3dFdmVudDogKGNvbnRleHRJRDogbnVtYmVyLCBjdHJsUHRyOiBudW1iZXIsIHBybVB0cjogbnVtYmVyLCBzdHlsZTogbnVtYmVyLCBkd0V4U3R5bGU6IG51bWJlcikgPT4gdm9pZCA9IG51bGw7XHJcblxyXG4gIC8vLzxzdW1tYXJ5PlxyXG4gIC8vLyAgQ3JlYXRlcyBhIHdpbmRvd1xyXG4gIC8vLzwvc3VtbWFyeT5cclxuICAvLy88cGFyYW0gbmFtZT1cImV4U3R5bGVcIj4hIS48L3BhcmFtPlxyXG4gIC8vLzxwYXJhbSBuYW1lPVwiY2xhc3NOYW1lXCI+ISEuPC9wYXJhbT5cclxuICAvLy88cGFyYW0gbmFtZT1cIndpbmRvd05hbWVcIj4hIS48L3BhcmFtPlxyXG4gIC8vLzxwYXJhbSBuYW1lPVwic3R5bGVcIj4hIS48L3BhcmFtPlxyXG4gIC8vLzxwYXJhbSBuYW1lPVwieFwiPiEhLjwvcGFyYW0+XHJcbiAgLy8vPHBhcmFtIG5hbWU9XCJ5XCI+ISEuPC9wYXJhbT5cclxuICAvLy88cGFyYW0gbmFtZT1cIndpZHRoXCI+ISEuPC9wYXJhbT5cclxuICAvLy88cGFyYW0gbmFtZT1cImhlaWdodFwiPiEhLjwvcGFyYW0+XHJcbiAgLy8vPHBhcmFtIG5hbWU9XCJod25kUGFyZW50XCI+ISEuPC9wYXJhbT5cclxuICAvLy88cGFyYW0gbmFtZT1cImhNZW51XCI+ISEuPC9wYXJhbT5cclxuICAvLy88cGFyYW0gbmFtZT1cImhJbnN0YW5jZVwiPiEhLjwvcGFyYW0+XHJcbiAgLy8vPHBhcmFtIG5hbWU9XCJsUGFyYW1cIj4hIS48L3BhcmFtPlxyXG4gIC8vLzxyZXR1cm5zPmhhbmRsZSBvZiB3aW5kb3c8L3JldHVybnM+XHJcbiAgc3RhdGljIENyZWF0ZUd1aVdpbmRvd0V2ZW50OiAoZXhTdHlsZTogbnVtYmVyLCBjbGFzc05hbWU6IHN0cmluZywgd2luZG93TmFtZTogc3RyaW5nLCBzdHlsZTogbnVtYmVyLCB4OiBudW1iZXIsIHk6IG51bWJlciwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIsIGh3bmRQYXJlbnQ6IG51bWJlciwgaE1lbnU6IG51bWJlciwgaEluc3RhbmNlOiBudW1iZXIsIGxQYXJhbTogbnVtYmVyKSA9PiBudW1iZXIgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIERlc3Ryb3lzIGEgd2luZG93XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJoV25kUHRyXCI+aGFuZGxlIG9mIHdpbmRvdzwvcGFyYW0+XHJcbiAgc3RhdGljIERlc3Ryb3lHdWlXaW5kb3dFdmVudDogKGhXbmRQdHI6IG51bWJlcikgPT4gdm9pZCA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gT25DbG9zZSBQcmludCBQcmV2aWV3XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJoV25kUHRyXCI+cHJpbnQgcHJldmlldyBkYXRhPC9wYXJhbT5cclxuICBzdGF0aWMgUHJpbnRQcmV2aWV3Q2xvc2VFdmVudDogKGhXbmRQdHI6IG51bWJlcikgPT4gdm9pZCA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gU2hvdyBQcmludCBEaWFsb2dcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImdwZFwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIFNob3dQcmludERpYWxvZ0V2ZW50OiAoZ3BkOiBudW1iZXIpID0+IG51bWJlciA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gU2V0TW9kYWwgZXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN1cnJGb3JtXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJvblwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIFNldE1vZGFsRXZlbnQ6IChtZ0Zvcm06IE1nRm9ybUJhc2UsIG9uOiBib29sZWFuKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PnJhaXNlcyBDdHJsRm9jdXNFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBDdHJsRm9jdXNFdmVudDogKGlUYXNrOiBJVGFzaywgY3RybDogTWdDb250cm9sQmFzZSkgPT4gdm9pZCA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gR2V0cyB0aGUgUnVudGltZUNvbnRleHRCYXNlIHRoYXQgYmVsb25ncyB0byB0aGUgY29udGV4dElEXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb250ZXh0SURcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIEdldFJ1bnRpbWVDb250ZXh0RXZlbnQ6IChjb250ZXh0SUQ6IHN0cmluZykgPT4gUnVudGltZUNvbnRleHRCYXNlID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBTYXZlcyB0aGUgbmFtZSBvZiB0aGUgbGFzdCBjbGlja2VkIGNvbnRyb2wuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlNZ0NvbnRyb2xcIj5ndWlNZ0NvbnRyb2w8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbnRyb2xOYW1lXCI+TmFtZSBvZiB0aGUgY29udHJvbDwvcGFyYW0+XHJcbiAgc3RhdGljIFNhdmVMYXN0Q2xpY2tlZEN0cmxFdmVudDogKCBjb250cm9sTmFtZTogc3RyaW5nKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBTYXZlcyB0aGUgbGFzdCBjbGlja2VkIGluZm9ybWF0aW9uLiAoaS5lLiBDby1vcmRpbmF0ZXMgYW5kIGNvbnRyb2wgbmFtZS5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aU1nRm9ybVwiPmd1aU1nRm9ybTwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29udHJvbE5hbWVcIj5uYW1lIG9mIHRoZSBjb250cm9sPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ4XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ5XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJvZmZzZXRYXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJvZmZzZXRZXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsYXN0Q2xpY2tDb29yZGluYXRlc0FyZUluUGl4ZWxzXCI+Y28tb3JkaW5hdGVzIGFyZSBpbiBwaXhlbCBvciBub3QuPC9wYXJhbT5cclxuICBzdGF0aWMgU2F2ZUxhc3RDbGlja0luZm9FdmVudDogKGNvbnRyb2xOYW1lOiBzdHJpbmcsIHg6IG51bWJlciwgeTogbnVtYmVyLCBvZmZzZXRYOiBudW1iZXIsIG9mZnNldFk6IG51bWJlciwgbGFzdENsaWNrQ29vcmRpbmF0ZXNBcmVJblBpeGVsczogYm9vbGVhbikgPT4gdm9pZCA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT53cml0ZSBhbiBlcnJvciBtZXNzYWdlIHRvIHRoZSBpbnRlcm5hbCBsb2cgZmlsZTwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtc2dcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBXcml0ZUVycm9yVG9Mb2dFdmVudDogKG1zZzogc3RyaW5nKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PldyaXRlIGFuIGludGVybmFsIGVycm9yIHRvIHRoZSBsb2cuIEFsc28gcHJpbnRzIHN0YWNrIHRyYWNlIGFsb25nIHdpdGggdGhlIG1lc3NhZ2U8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibXNnXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgV3JpdGVFeGNlcHRpb25Ub0xvZ0V2ZW50OiAobXNnOiBzdHJpbmcpID0+IHZvaWQgPSBudWxsO1xyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PndyaXRlIGEgd2FybmluZyBtZXNzYWdlIHRvIHRoZSBpbnRlcm5hbCBsb2cgZmlsZTwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtc2dcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBXcml0ZVdhcm5pbmdUb0xvZ0V2ZW50OiAobXNnOiBzdHJpbmcpID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsb2dMZXZlbFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgU2hvdWxkTG9nRXZlbnQ6IChsb2dMZXZlbDogTG9nZ2VyX0xvZ0xldmVscykgPT4gYm9vbGVhbiA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT53cml0ZSBhIEdVSSBtZXNzYWdlIHRvIHRoZSBpbnRlcm5hbCBsb2cgZmlsZTwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtc2dcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBXcml0ZUd1aVRvTG9nRXZlbnQ6IChtc2c6IHN0cmluZykgPT4gdm9pZCA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT53cml0ZSBhIERFViBtZXNzYWdlIHRvIHRoZSBpbnRlcm5hbCBsb2cgZmlsZTwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtc2dcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBXcml0ZURldlRvTG9nRXZlbnQ6IChtc2c6IHN0cmluZykgPT4gdm9pZCA9IG51bGw7XHJcblxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDYWxsZWQgd2hlbiBXTV9DTEVBUiBtZXNzYWdlIGlzIHJlY2VpdmVkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgQ2xlYXJFdmVudDogKGN0cmw6IEd1aU1nQ29udHJvbCkgPT4gdm9pZCA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ2FsbGVkIHdoZW4gV01fVU5ETyBtZXNzYWdlIGlzIHJlY2VpdmVkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgVW5kb0V2ZW50OiAoY3RybDogR3VpTWdDb250cm9sKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBTaG91bGQgRW50ZXIgYmUgYWRkZWQgYXMga2V5Ym9hcmQgZXZlbnQgPyBUaGlzIGlzIGltcG9ydGFudCBtb3N0bHkgaW4gZGV0ZXJtaW5pbmcgaWYgYSBjbGljayBldmVudFxyXG4gIC8vLyB3aWxsIGJlIHJhaXNlZCBmb3IgYSBkZWZhdWx0IGJ1dHRvbiBvciBub3QuXHJcbiAgLy8vIEFkZGluZyBFbnRlciBhcyBhIGtleWJvYXJkIGV2ZW50IHdpbGwgbm90IHJhaXNlIGNsaWNrIG9uIGRlZmF1bHQgYnV0dG9uLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgU2hvdWxkQWRkRW50ZXJBc0tleUV2ZW50OiAoKSA9PiBib29sZWFuID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIFNob3dTZXNzaW9uU3RhdGlzdGljc0V2ZW50OiAoKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDYWxsZWQgd2hlbiBXTV9DT1BZREFUQSBtZXNzYWdlIGlzIHJlY2VpdmVkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlNZ0Zvcm1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvcHlEYXRhXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgQ29weURhdGFFdmVudDogKGd1aU1nRm9ybTogR3VpTWdGb3JtLCBjb3B5RGF0YTogbnVtYmVyKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBmb2N1cyBldmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsaW5lXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpc1Byb2R1Y2VDbGlja1wiPjwvcGFyYW0+XHJcbiAgc3RhdGljIEZvY3VzRXZlbnQ6IChjdHJsOiBHdWlNZ0NvbnRyb2wsIGxpbmU6IG51bWJlciwgaXNQcm9kdWNlQ2xpY2s6IGJvb2xlYW4sIG9uTXVsdGlNYXJrOiBib29sZWFuKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBmb2N1cyBvdXQgZXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RybFwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIEZvY3VzT25Ob25NYWdpY0NvbnRyb2xFdmVudDogKGN0cmw6IEd1aU1nQ29udHJvbCkgPT4gdm9pZCA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgTW91c2VEb3duIEV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aU1nRm9ybVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpTWdDdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJkb3ROZXRBcmdzXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsZWZ0Q2xpY2tXYXNQcmVzc2VkXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsaW5lXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJvbk11bHRpTWFya1wiPmluZGljYXRlcyB0aGF0IE11bHRpIE1hcmsgY29udGludWVzPC9wYXJhbT5cclxuICBzdGF0aWMgTW91c2VEb3duRXZlbnQ6IChndWlNZ0Zvcm06IEd1aU1nRm9ybSwgZ3VpTWdDdHJsOiBHdWlNZ0NvbnRyb2wsIGRvdE5ldEFyZ3M6IE9iamVjdFtdLCBsZWZ0Q2xpY2tXYXNQcmVzc2VkOiBib29sZWFuLCBsaW5lOiBudW1iZXIsIG9uTXVsdGlNYXJrOiBib29sZWFuLCBjYW5Qcm9kdWNlQ2xpY2s6IGJvb2xlYW4pID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+IGludm9rZXMgdGhlIFRhYmxlUmVvcmRlciBFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0YWJPcmRlckxpc3RcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBUYWJsZVJlb3JkZXJFdmVudDogKGN0cmw6IEd1aU1nQ29udHJvbCwgdGFiT3JkZXJMaXN0OiBMaXN0PEd1aU1nQ29udHJvbD4pID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+IGludm9rZXMgdGhlIE1vdXNlVXAgRXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGluZVwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIE1vdXNlVXBFdmVudDogKGN0cmw6IEd1aU1nQ29udHJvbCwgbGluZTogbnVtYmVyKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBDb21ib0Ryb3BwaW5nRG93biBFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsaW5lXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgQ29tYm9Ecm9wcGluZ0Rvd25FdmVudDogKGN0cmw6IEd1aU1nQ29udHJvbCwgbGluZTogbnVtYmVyKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBTZWxlY3Rpb24gRXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidmFsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsaW5lXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJwcm9kdWNlQ2xpY2tcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBTZWxlY3Rpb25FdmVudDogKHZhbDogc3RyaW5nLCBjdHJsOiBHdWlNZ0NvbnRyb2wsIGxpbmU6IG51bWJlciwgcHJvZHVjZUNsaWNrOiBib29sZWFuKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBEYmxDbGljayBFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsaW5lXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgRGJsQ2xpY2tFdmVudDogKGN0cmw6IEd1aU1nQ29udHJvbCwgbGluZTogbnVtYmVyKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBLZXlEb3duIEV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImZvcm1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aU1nQ3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibW9kaWZpZXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImtleUNvZGVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0YXJ0XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJlbmRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInRleHRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImltXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpc0FjdENoYXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN1Z2dlc3RlZFZhbHVlXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb21ib0lzRHJvcERvd25cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImhhbmRsZWRcIj5ib29sZWFuIHZhcmlhYmxlIGV2ZW50IGlzIGhhbmRsZWQgb3Igbm90LiA8L3BhcmFtPlxyXG4gIHN0YXRpYyBLZXlEb3duRXZlbnQ6IChmb3JtOiBHdWlNZ0Zvcm0sIGd1aU1nQ3RybDogR3VpTWdDb250cm9sLCBtb2RpZmllcjogTW9kaWZpZXJzLCBrZXlDb2RlOiBudW1iZXIsIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcsIGlzQWN0Q2hhcjogYm9vbGVhbiwgc3VnZ2VzdGVkVmFsdWU6IHN0cmluZywgY29tYm9Jc0Ryb3BEb3duOiBib29sZWFuLCBoYW5kbGVkOiBib29sZWFuKSA9PiBib29sZWFuID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBkZWxlZ2F0ZSBmb3IgdGhlIE11bHRpTWFyayBoaXQgZXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aU1nQ3RybFwiPiBjb250cm9sIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicm93XCI+IHRhYmxlIHJvdyA8L3BhcmFtPlxyXG4gIHN0YXRpYyBNdWx0aW1hcmtIaXRFdmVudDogKGd1aU1nQ3RybDogR3VpTWdDb250cm9sLCByb3c6IG51bWJlciwgbW9kaWZpZXI6IE1vZGlmaWVycykgPT4gdm9pZCA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgQ2xvc2UgRXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZm9ybVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPnRydWUgaWYgZXZlbnQgaXMgQ0xSIGhhbmRsZWQoY2xvc2luZyBvZiB0aGUgZm9ybSB3aWxsIGJlIHRoZSByZXNwb25zaWJpbGl0eSBvZiB0aGUgQ0xSIGFuZCBubyBjb21tYW5kcyB3aWxsIGJlIHB1dFxyXG4gIC8vLyBpbiB0byBjbG9zZSB0aGUgZm9ybSkgZWxzZSBmYWxzZS48L3JldHVybnM+XHJcbiAgc3RhdGljIENsb3NlRm9ybUV2ZW50OiAoZm9ybTogR3VpTWdGb3JtKSA9PiBib29sZWFuID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBEaXNwb3NlIEV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImZvcm1cIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBEaXNwb3NlRXZlbnQ6IChmb3JtOiBHdWlNZ0Zvcm0pID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+IGludm9rZXMgdGhlIFRpbWVyIEV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1nVGltZXJcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBUaW1lckV2ZW50OiAobWdUaW1lcjogTWdUaW1lcikgPT4gdm9pZCA9IG51bGw7XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+IGludm9rZXMgdGhlIFJlc2l6ZSBFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJuZXdSb3dzSW5QYWdlXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgVGFibGVSZXNpemVFdmVudDogKGN0cmw6IEd1aU1nQ29udHJvbCwgbmV3Um93c0luUGFnZTogbnVtYmVyKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBHZXRSb3dzRGF0YSBFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJkZXNpcmVkVG9wSW5kZXhcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInNlbmRBbGxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxhc3RGb2N1c2VkVmFsXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgR2V0Um93c0RhdGFFdmVudDogKGN0cmw6IEd1aU1nQ29udHJvbCwgZGVzaXJlZFRvcEluZGV4OiBudW1iZXIsIHNlbmRBbGw6IGJvb2xlYW4sIGxhc3RGb2N1c2VkVmFsOiBMYXN0Rm9jdXNlZFZhbCkgPT4gdm9pZCA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgRW5hYmxlQ3V0Q29weSBFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJlbmFibGVcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBFbmFibGVDdXRDb3B5RXZlbnQ6IChjdHJsOiBHdWlNZ0NvbnRyb2wsIGVuYWJsZTogYm9vbGVhbikgPT4gdm9pZCA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgRW5hYmxlUGFzdGUgRXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZW5hYmxlXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgRW5hYmxlUGFzdGVFdmVudDogKGN0cmw6IEd1aU1nQ29udHJvbCwgZW5hYmxlOiBib29sZWFuKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBDb2x1bW5DbGljayBFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb2x1bW5DdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJkaXJlY3Rpb25cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbHVtbkhlYWRlclwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIENvbHVtbkNsaWNrRXZlbnQ6IChjb2x1bW5DdHJsOiBHdWlNZ0NvbnRyb2wsIGRpcmVjdGlvbjogbnVtYmVyLCBjb2x1bW5IZWFkZXI6IHN0cmluZykgPT4gdm9pZCA9IG51bGw7XHJcblxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5Pmludm9rZXMgcmVmcmVzaFRhYmxlcyBkZWxlZ2F0ZTwvc3VtbWFyeT5cclxuICBzdGF0aWMgUmVmcmVzaFRhYmxlc0V2ZW50OiAoKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+T25IZWxwQ2xvc2U8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiYWN0aXZlRm9ybVwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIEhlbHBDbG9zZUV2ZW50OiAoYWN0aXZlRm9ybTogR3VpTWdGb3JtKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gZGlzcGxheVNlc3Npb25TdGF0aXN0aWNzIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgRGlzcGxheVNlc3Npb25TdGF0aXN0aWNzRXZlbnQ6ICgpID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHJldHVybnMgdHJ1ZSBmb3Igbm9uIGludGVyYWN0aXZlIHRhc2sgZm9yIGFsbCBjb250cm9scyBleGNlcHQgYSBidXR0b24gY29udHJvbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RybFwiPmNsaWNrZWQgY29udHJvbDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgU2hvdWxkQmxvY2tNb3VzZUV2ZW50c0V2ZW50OiAoY3RybDogR3VpTWdDb250cm9sKSA9PiBib29sZWFuID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PnBlZWtFbmRPZldvcms8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgUGVla0VuZE9mV29ya0V2ZW50OiAoKSA9PiBib29sZWFuID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5Pmludm9rZXMgdGhlIEdldEV2ZW50VGltZSBkZWxlZ2F0ZTwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXRFdmVudFRpbWVFdmVudDogKCkgPT4gbnVtYmVyID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBpbnZva2VzIHRoZSBTY3JvbGxUYWJsZSBFdmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpTWdPYmplY3RcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxpbmVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInJvd3NUb1Njcm9sbFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaXNQYWdlU2Nyb2xsXCI+bmV4dC9wcmV2IHBhZ2U/PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpc1RhYmxlU2Nyb2xsXCI+QmVnaW4vRW5kIFRhYmxlPzwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaXNSYWlzZWRCeU1vdXNlV2hlZWxcIj5pbmRpY2F0ZXMgd2hldGhlciBldmVudCBpcyByYWlzZWQgYnkgbW91c2V3aGVlbCBvciBub3QuPC9wYXJhbT5cclxuICBzdGF0aWMgU2Nyb2xsVGFibGVFdmVudDogKGd1aU1nT2JqZWN0OiBhbnksIGxpbmU6IG51bWJlciwgcm93c1RvU2Nyb2xsOiBudW1iZXIsIGlzUGFnZVNjcm9sbDogYm9vbGVhbiwgaXNUYWJsZVNjcm9sbDogYm9vbGVhbiwgaXNSYWlzZWRCeU1vdXNlV2hlZWw6IGJvb2xlYW4pID0+IGJvb2xlYW4gPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEdldHMgdGhlIHVzZXIgZGVmaW5lZCBEcm9wIGZvcm1hdHNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIEdldERyb3BVc2VyRm9ybWF0c0V2ZW50OiAoKSA9PiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEdldCB0aGUgY29udGV4dCBpZCBmcm9tIEd1aU1nRm9ybVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpTWdGb3JtXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXRDb250ZXh0SURFdmVudDogKGd1aU1nRm9ybTogR3VpTWdGb3JtKSA9PiBudW1iZXIgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+IDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlNZ0Zvcm1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIFNob3dGb3JtRXZlbnQ6IChndWlNZ0Zvcm06IEd1aU1nRm9ybSkgPT4gdm9pZCA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gaW52b2tlcyBPbkZvcm1BY3RpdmF0ZUV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgT25Gb3JtQWN0aXZhdGVFdmVudDogKGd1aU1nRm9ybTogR3VpTWdGb3JtKSA9PiB2b2lkID0gbnVsbDtcclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBpbnZva2VzIE9uTkNBY3RpdmF0ZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIE9uTkNBY3RpdmF0ZUV2ZW50OiAoZ3VpTWdGb3JtOiBHdWlNZ0Zvcm0pID0+IHZvaWQgPSBudWxsO1xyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBIYW5kbGUgV01fS0VZVVAgLSAocmVxdWlyZWQgb25seSBmb3IgQUNUX05FWFRfUlRfV0lORE9XLCBBQ1RfUFJFVl9SVF9XSU5ET1cgZm9yIHNvcnRpbmcgd2luZG93bGlzdFxyXG4gIC8vLyB3aGVuIHRoZSBrZXkgYXNzb2NpYXRlZCB3aXRoIHRoZSBhY3Rpb24gaXMgcmVsZWFzZWQpXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlNZ0Zvcm1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImtleUNvZGVcIj5rZXljb2RlIG9mIGEga2V5IHdoaWNoIGlzIGp1c3QgcmVsZWFzZWQ8L3BhcmFtPlxyXG4gIHN0YXRpYyBIYW5kbGVLZXlVcE1lc3NhZ2VFdmVudDogKGd1aU1nRm9ybTogR3VpTWdGb3JtLCBrZXlDb2RlOiBudW1iZXIpID0+IHZvaWQgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGNoZWNrcyB3aGV0aGVyIHdlIHNob3VsZCBzaG93IExvZ29uIHdpbmRvdyBpbiBSVE9MIGZvcm1hdCBvciBub3QuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBPbklzTG9nb25SVExFdmVudDogKCkgPT4gYm9vbGVhbiA9IG51bGw7XHJcblxyXG5cclxuICBzdGF0aWMgT25Jc1NwZWNpYWxFbmdMb2dvbkV2ZW50OiAoKSA9PiBib29sZWFuID0gbnVsbDtcclxuXHJcblxyXG4gIHN0YXRpYyBPbklzU3BlY2lhbElnbm9yZUJ1dHRvbkZvcm1hdEV2ZW50OiAoKSA9PiBib29sZWFuID0gbnVsbDtcclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgZ2V0TWFpblByb2dyYW0gRXZlbnQgPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbnRleHRJRFwiPmFjdGl2ZS90YXJnZXQgY29udGV4dDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RsSWR4XCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXRNYWluUHJvZ3JhbUV2ZW50OiAoY29udGV4dElEOiBudW1iZXIsIGN0bElkeDogbnVtYmVyKSA9PiBHdWlUYXNrQmFzZSA9IG51bGw7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gTG9naWNhbCBuYW1lIHRyYW5zbGF0aW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJmcm9tU3RyaW5nXCI+c291cmNlIHN0cmluZzwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPnRyYW5zbGF0ZWQgc3RyaW5nPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBUcmFuc2xhdGVMb2dpY2FsTmFtZUV2ZW50OiAoZnJvbVN0cmluZzogc3RyaW5nKSA9PiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIEludm9rZXMgdGhlIEdldEFzc2V0c1VSTCBldmVudFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIEdldEFzc2V0c1VSTEV2ZW50OiAoKSA9PiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+aW52b2tlcyBnZXRNZXNzYWdlU3RyaW5nIEV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1zZ0lkXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXRNZXNzYWdlU3RyaW5nRXZlbnQ6IChtc2dJZDogc3RyaW5nKSA9PiBzdHJpbmcgPSBudWxsO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+IGludm9rZXMgdGhlIGZvY3VzIGV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxpbmVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImlzUHJvZHVjZUNsaWNrXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgT25Gb2N1cyhjdHJsOiBHdWlNZ0NvbnRyb2wsIGxpbmU6IG51bWJlciwgaXNQcm9kdWNlQ2xpY2s6IGJvb2xlYW4sIG9uTXVsdGlNYXJrOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBEZWJ1Zy5Bc3NlcnQoRXZlbnRzLkZvY3VzRXZlbnQgIT09IG51bGwpO1xyXG4gICAgRXZlbnRzLkZvY3VzRXZlbnQoY3RybCwgbGluZSwgaXNQcm9kdWNlQ2xpY2ssIG9uTXVsdGlNYXJrKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgZm9jdXMgZXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RybCByZWNlaXZpbmcgbG9zdEZvY3VzXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgT25Gb2N1c09uTm9uTWFnaWNDb250cm9sKGN0cmw6IEd1aU1nQ29udHJvbCk6IHZvaWQge1xyXG4gICAgRGVidWcuQXNzZXJ0KEV2ZW50cy5Gb2N1c09uTm9uTWFnaWNDb250cm9sRXZlbnQgIT09IG51bGwpO1xyXG4gICAgRXZlbnRzLkZvY3VzT25Ob25NYWdpY0NvbnRyb2xFdmVudChjdHJsKTtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+IGludm9rZXMgdGhlIE1vdXNlRG93biBFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlNZ0Zvcm1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aU1nQ3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZG90TmV0QXJnc1wiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGVmdENsaWNrV2FzUHJlc3NlZFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGluZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwib25NdWx0aU1hcmtcIj5pbmRpY2F0ZXMgdGhhdCBNdWx0aSBNYXJrIGNvbnRpbnVlczwvcGFyYW0+XHJcbiAgc3RhdGljIE9uTW91c2VEb3duKGd1aU1nRm9ybTogR3VpTWdGb3JtLCBndWlNZ0N0cmw6IEd1aU1nQ29udHJvbCwgZG90TmV0QXJnczogYW55W10sIGxlZnRDbGlja1dhc1ByZXNzZWQ6IGJvb2xlYW4sIGxpbmU6IG51bWJlciwgb25NdWx0aU1hcms6IGJvb2xlYW4sIGNhblByb2R1Y2VDbGljazogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgRGVidWcuQXNzZXJ0KEV2ZW50cy5Nb3VzZURvd25FdmVudCAhPT0gbnVsbCk7XHJcbiAgICBFdmVudHMuTW91c2VEb3duRXZlbnQoZ3VpTWdGb3JtLCBndWlNZ0N0cmwsIGRvdE5ldEFyZ3MsIGxlZnRDbGlja1dhc1ByZXNzZWQsIGxpbmUsIG9uTXVsdGlNYXJrLCBjYW5Qcm9kdWNlQ2xpY2spO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgVmlzaWJpbGl0eUNoYW5nZWQgRXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RybFwiPmNvbnRyb2wgd2hvc2UgdmlzaWJpbGl0eSBpcyBjaGFuZ2VkPC9wYXJhbT5cclxuICBzdGF0aWMgT25Ob25QYXJrYWJsZUxhc3RQYXJrZWRDdHJsKGN0cmw6IEd1aU1nQ29udHJvbCk6IHZvaWQge1xyXG4gICAgaWYgKEV2ZW50cy5Ob25QYXJrYWJsZUxhc3RQYXJrZWRDdHJsRXZlbnQgIT09IG51bGwpIHtcclxuICAgICAgRXZlbnRzLk5vblBhcmthYmxlTGFzdFBhcmtlZEN0cmxFdmVudChjdHJsKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgVGFibGVSZW9yZGVyIEV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImN0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInRhYk9yZGVyTGlzdFwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIE9uVGFibGVSZW9yZGVyKGN0cmw6IEd1aU1nQ29udHJvbCwgdGFiT3JkZXJMaXN0OiBMaXN0PEd1aU1nQ29udHJvbD4pOiB2b2lkIHtcclxuICAgIGlmIChFdmVudHMuVGFibGVSZW9yZGVyRXZlbnQgIT09IG51bGwpIHtcclxuICAgICAgRXZlbnRzLlRhYmxlUmVvcmRlckV2ZW50KGN0cmwsIHRhYk9yZGVyTGlzdCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IGludm9rZXMgdGhlIE1vdXNlVXAgRXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGluZVwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIE9uTW91c2VVcChjdHJsOiBHdWlNZ0NvbnRyb2wsIGxpbmU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKEV2ZW50cy5Nb3VzZVVwRXZlbnQgIT09IG51bGwpIHtcclxuICAgICAgRXZlbnRzLk1vdXNlVXBFdmVudChjdHJsLCBsaW5lKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgQ29tYm9Ecm9wcGluZ0Rvd24gRXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGluZVwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIE9uQ29tYm9Ecm9wcGluZ0Rvd24oY3RybDogR3VpTWdDb250cm9sLCBsaW5lOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIERlYnVnLkFzc2VydChFdmVudHMuQ29tYm9Ecm9wcGluZ0Rvd25FdmVudCAhPT0gbnVsbCk7XHJcbiAgICBFdmVudHMuQ29tYm9Ecm9wcGluZ0Rvd25FdmVudChjdHJsLCBsaW5lKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgU2VsZWN0aW9uIEV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInZhbFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGluZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicHJvZHVjZUNsaWNrXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgT25TZWxlY3Rpb24odmFsOiBzdHJpbmcsIGN0cmw6IEd1aU1nQ29udHJvbCwgbGluZTogbnVtYmVyLCBwcm9kdWNlQ2xpY2s6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIERlYnVnLkFzc2VydChFdmVudHMuU2VsZWN0aW9uRXZlbnQgIT09IG51bGwpO1xyXG4gICAgRXZlbnRzLlNlbGVjdGlvbkV2ZW50KHZhbCwgY3RybCwgbGluZSwgcHJvZHVjZUNsaWNrKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgRGJsQ2xpY2sgRXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibGluZVwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIE9uRGJsQ2xpY2soY3RybDogR3VpTWdDb250cm9sLCBsaW5lOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIERlYnVnLkFzc2VydChFdmVudHMuRGJsQ2xpY2tFdmVudCAhPT0gbnVsbCk7XHJcbiAgICBFdmVudHMuRGJsQ2xpY2tFdmVudChjdHJsLCBsaW5lKTtcclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+IGludm9rZXMgdGhlIEtleURvd24gRXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZm9ybVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpTWdDdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtb2RpZmllclwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwia2V5Q29kZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3RhcnRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImVuZFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidGV4dFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaW1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImlzQWN0Q2hhclwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3VnZ2VzdGVkVmFsdWVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbWJvSXNEcm9wRG93blwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaGFuZGxlZFwiPmJvb2xlYW4gdmFyaWFibGUgZXZlbnQgaXMgaGFuZGxlZCBvciBub3QuIDwvcGFyYW0+XHJcbiAgc3RhdGljIE9uS2V5RG93bihmb3JtOiBHdWlNZ0Zvcm0sIGd1aU1nQ3RybDogR3VpTWdDb250cm9sLCBtb2RpZmllcjogTW9kaWZpZXJzLCBrZXlDb2RlOiBudW1iZXIsIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcsIGlzQWN0Q2hhcjogYm9vbGVhbiwgc3VnZ2VzdGVkVmFsdWU6IHN0cmluZywgY29tYm9Jc0Ryb3BEb3duOiBib29sZWFuLCBoYW5kbGVkOiBib29sZWFuKTogdm9pZDtcclxuICBzdGF0aWMgT25LZXlEb3duKGZvcm06IEd1aU1nRm9ybSwgY3RybDogR3VpTWdDb250cm9sLCBtb2RpZmllcjogTW9kaWZpZXJzLCBrZXlDb2RlOiBudW1iZXIsIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcsIGlzQWN0Q2hhcjogYm9vbGVhbiwgc3VnZ2VzdGVkVmFsdWU6IHN0cmluZywgaGFuZGxlZDogYm9vbGVhbik6IHZvaWQ7XHJcbiAgc3RhdGljIE9uS2V5RG93bihmb3JtOiBHdWlNZ0Zvcm0sIGN0cmw6IEd1aU1nQ29udHJvbCwgbW9kaWZpZXI6IE1vZGlmaWVycywga2V5Q29kZTogbnVtYmVyLCBzdWdnZXN0ZWRWYWx1ZTogc3RyaW5nLCBjb21ib0lzRHJvcERvd246IGJvb2xlYW4sIGhhbmRsZWQ6IGJvb2xlYW4pOiB2b2lkO1xyXG4gIHN0YXRpYyBPbktleURvd24oZm9ybTogR3VpTWdGb3JtLCBndWlNZ0N0cmxPckN0cmw6IEd1aU1nQ29udHJvbCwgbW9kaWZpZXI6IE1vZGlmaWVycywga2V5Q29kZTogbnVtYmVyLCBzdGFydE9yU3VnZ2VzdGVkVmFsdWU6IGFueSwgZW5kT3JDb21ib0lzRHJvcERvd246IGFueSwgdGV4dE9ySGFuZGxlZDogYW55LCBpc0FjdENoYXI/OiBib29sZWFuLCBzdWdnZXN0ZWRWYWx1ZT86IHN0cmluZywgY29tYm9Jc0Ryb3BEb3duT3JIYW5kbGVkPzogYm9vbGVhbiwgaGFuZGxlZD86IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxMSlcclxuICAgICAgRXZlbnRzLk9uS2V5RG93bl8wKGZvcm0sIGd1aU1nQ3RybE9yQ3RybCwgbW9kaWZpZXIsIGtleUNvZGUsIHN0YXJ0T3JTdWdnZXN0ZWRWYWx1ZSwgZW5kT3JDb21ib0lzRHJvcERvd24sIHRleHRPckhhbmRsZWQsIGlzQWN0Q2hhciwgc3VnZ2VzdGVkVmFsdWUsIGNvbWJvSXNEcm9wRG93bk9ySGFuZGxlZCwgaGFuZGxlZCk7XHJcblxyXG4gICAgZWxzZSBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMTApXHJcbiAgICAgIEV2ZW50cy5PbktleURvd25fMShmb3JtLCBndWlNZ0N0cmxPckN0cmwsIG1vZGlmaWVyLCBrZXlDb2RlLCBzdGFydE9yU3VnZ2VzdGVkVmFsdWUsIGVuZE9yQ29tYm9Jc0Ryb3BEb3duLCB0ZXh0T3JIYW5kbGVkLCBpc0FjdENoYXIsIHN1Z2dlc3RlZFZhbHVlLCBjb21ib0lzRHJvcERvd25PckhhbmRsZWQpO1xyXG4gICAgZWxzZVxyXG4gICAgICBFdmVudHMuT25LZXlEb3duXzIoZm9ybSwgZ3VpTWdDdHJsT3JDdHJsLCBtb2RpZmllciwga2V5Q29kZSwgc3RhcnRPclN1Z2dlc3RlZFZhbHVlLCBlbmRPckNvbWJvSXNEcm9wRG93biwgdGV4dE9ySGFuZGxlZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBPbktleURvd25fMChmb3JtOiBHdWlNZ0Zvcm0sIGd1aU1nQ3RybDogR3VpTWdDb250cm9sLCBtb2RpZmllcjogTW9kaWZpZXJzLCBrZXlDb2RlOiBudW1iZXIsIHN0YXJ0OiBudW1iZXIsIGVuZDogbnVtYmVyLCB0ZXh0OiBzdHJpbmcsIGlzQWN0Q2hhcjogYm9vbGVhbiwgc3VnZ2VzdGVkVmFsdWU6IHN0cmluZywgY29tYm9Jc0Ryb3BEb3duOiBib29sZWFuLCBoYW5kbGVkOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBEZWJ1Zy5Bc3NlcnQoRXZlbnRzLktleURvd25FdmVudCAhPT0gbnVsbCk7XHJcbiAgICBFdmVudHMuS2V5RG93bkV2ZW50KGZvcm0sIGd1aU1nQ3RybCwgbW9kaWZpZXIsIGtleUNvZGUsIHN0YXJ0LCBlbmQsIHRleHQsIGlzQWN0Q2hhciwgc3VnZ2VzdGVkVmFsdWUsIGNvbWJvSXNEcm9wRG93biwgaGFuZGxlZCk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgT25NdWx0aU1hcmtIaXQoY3RybDogR3VpTWdDb250cm9sLCByb3c6IG51bWJlciwgbW9kaWZpZXI6IE1vZGlmaWVycyk6IHZvaWQge1xyXG4gICAgRGVidWcuQXNzZXJ0KEV2ZW50cy5NdWx0aW1hcmtIaXRFdmVudCAhPT0gbnVsbCk7XHJcbiAgICBFdmVudHMuTXVsdGltYXJrSGl0RXZlbnQoY3RybCwgcm93LCBtb2RpZmllcik7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBPbktleURvd25fMShmb3JtOiBHdWlNZ0Zvcm0sIGN0cmw6IEd1aU1nQ29udHJvbCwgbW9kaWZpZXI6IE1vZGlmaWVycywga2V5Q29kZTogbnVtYmVyLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciwgdGV4dDogc3RyaW5nLCBpc0FjdENoYXI6IGJvb2xlYW4sIHN1Z2dlc3RlZFZhbHVlOiBzdHJpbmcsIGhhbmRsZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcclxuICAgIERlYnVnLkFzc2VydChFdmVudHMuS2V5RG93bkV2ZW50ICE9PSBudWxsKTtcclxuICAgIHJldHVybiBFdmVudHMuS2V5RG93bkV2ZW50KGZvcm0sIGN0cmwsIG1vZGlmaWVyLCBrZXlDb2RlLCBzdGFydCwgZW5kLCB0ZXh0LCBpc0FjdENoYXIsIHN1Z2dlc3RlZFZhbHVlLCBmYWxzZSwgaGFuZGxlZCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBPbktleURvd25fMihmb3JtOiBHdWlNZ0Zvcm0sIGN0cmw6IEd1aU1nQ29udHJvbCwgbW9kaWZpZXI6IE1vZGlmaWVycywga2V5Q29kZTogbnVtYmVyLCBzdWdnZXN0ZWRWYWx1ZTogc3RyaW5nLCBjb21ib0lzRHJvcERvd246IGJvb2xlYW4sIGhhbmRsZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcclxuICAgIERlYnVnLkFzc2VydChFdmVudHMuS2V5RG93bkV2ZW50ICE9PSBudWxsKTtcclxuICAgIHJldHVybiBFdmVudHMuS2V5RG93bkV2ZW50KGZvcm0sIGN0cmwsIG1vZGlmaWVyLCBrZXlDb2RlLCAwLCAwLCBudWxsLCBmYWxzZSwgc3VnZ2VzdGVkVmFsdWUsIGNvbWJvSXNEcm9wRG93biwgaGFuZGxlZCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IGludm9rZXMgdGhlIENsb3NlIEV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImZvcm1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz50cnVlIGlmIGV2ZW50IGlzIENMUiBoYW5kbGVkKGNsb3Npbmcgb2YgdGhlIGZvcm0gd2lsbCBiZSB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIENMUiBhbmQgbm8gY29tbWFuZHMgd2lsbCBiZSBwdXRcclxuICAvLy8gaW4gdG8gY2xvc2UgdGhlIGZvcm0pIGVsc2UgZmFsc2UuPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBPbkZvcm1DbG9zZShmb3JtOiBHdWlNZ0Zvcm0pOiBib29sZWFuIHtcclxuICAgIERlYnVnLkFzc2VydChFdmVudHMuQ2xvc2VGb3JtRXZlbnQgIT09IG51bGwpO1xyXG4gICAgcmV0dXJuIEV2ZW50cy5DbG9zZUZvcm1FdmVudChmb3JtKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgRGlzcG9zZSBFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJmb3JtXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgT25EaXNwb3NlKGZvcm06IEd1aU1nRm9ybSk6IHZvaWQge1xyXG4gICAgRGVidWcuQXNzZXJ0KEV2ZW50cy5EaXNwb3NlRXZlbnQgIT09IG51bGwpO1xyXG4gICAgRXZlbnRzLkRpc3Bvc2VFdmVudChmb3JtKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgVGltZXIgRXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibWdUaW1lclwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIE9uVGltZXIobWdUaW1lcjogTWdUaW1lcik6IHZvaWQge1xyXG4gICAgRGVidWcuQXNzZXJ0KEV2ZW50cy5UaW1lckV2ZW50ICE9PSBudWxsKTtcclxuICAgIEV2ZW50cy5UaW1lckV2ZW50KG1nVGltZXIpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+IGludm9rZXMgdGhlIFJlc2l6ZSBFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJuZXdSb3dzSW5QYWdlXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgT25UYWJsZVJlc2l6ZShjdHJsOiBHdWlNZ0NvbnRyb2wsIG5ld1Jvd3NJblBhZ2U6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKEV2ZW50cy5UYWJsZVJlc2l6ZUV2ZW50ICE9PSBudWxsKSB7XHJcbiAgICAgIEV2ZW50cy5UYWJsZVJlc2l6ZUV2ZW50KGN0cmwsIG5ld1Jvd3NJblBhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBpbnZva2VzIHRoZSBHZXRSb3dzRGF0YSBFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJkZXNpcmVkVG9wSW5kZXhcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInNlbmRBbGxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxhc3RGb2N1c2VkVmFsXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgT25HZXRSb3dzRGF0YShjdHJsOiBHdWlNZ0NvbnRyb2wsIGRlc2lyZWRUb3BJbmRleDogbnVtYmVyLCBzZW5kQWxsOiBib29sZWFuLCBsYXN0Rm9jdXNlZFZhbDogTGFzdEZvY3VzZWRWYWwpOiB2b2lkIHtcclxuICAgICAgaWYgKEV2ZW50cy5HZXRSb3dzRGF0YUV2ZW50ICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBFdmVudHMuR2V0Um93c0RhdGFFdmVudChjdHJsLCBkZXNpcmVkVG9wSW5kZXgsIHNlbmRBbGwsIGxhc3RGb2N1c2VkVmFsKTtcclxuICAgICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgQ29sdW1uQ2xpY2sgRXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29sdW1uQ3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZGlyZWN0aW9uXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb2x1bW5IZWFkZXJcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBPbkNvbHVtbkNsaWNrKGNvbHVtbkN0cmw6IEd1aU1nQ29udHJvbCwgZGlyZWN0aW9uOiBudW1iZXIsIGNvbHVtbkhlYWRlcjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBEZWJ1Zy5Bc3NlcnQoRXZlbnRzLkNvbHVtbkNsaWNrRXZlbnQgIT09IG51bGwpO1xyXG4gICAgRXZlbnRzLkNvbHVtbkNsaWNrRXZlbnQoY29sdW1uQ3RybCwgZGlyZWN0aW9uLCBjb2x1bW5IZWFkZXIpO1xyXG4gIH1cclxuXHJcblxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5Pmludm9rZXMgcmVmcmVzaFRhYmxlcyBkZWxlZ2F0ZTwvc3VtbWFyeT5cclxuICBzdGF0aWMgUmVmcmVzaFRhYmxlcygpOiB2b2lkIHtcclxuICAgIGlmIChFdmVudHMuUmVmcmVzaFRhYmxlc0V2ZW50ICE9PSBudWxsKSB7XHJcbiAgICAgIEV2ZW50cy5SZWZyZXNoVGFibGVzRXZlbnQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+T25IZWxwQ2xvc2U8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiYWN0aXZlRm9ybVwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIE9uQ2xvc2VIZWxwKGFjdGl2ZUZvcm06IEd1aU1nRm9ybSk6IHZvaWQge1xyXG4gICAgaWYgKEV2ZW50cy5IZWxwQ2xvc2VFdmVudCAhPT0gbnVsbCkge1xyXG4gICAgICBFdmVudHMuSGVscENsb3NlRXZlbnQoYWN0aXZlRm9ybSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyByZXR1cm5zIFRSVUUsIGlmIEJhdGNoIHRhc2sgaXMgcnVubmluZyBpbiBNQUlOIGNvbnRleHQuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgSXNCYXRjaFJ1bm5pbmdJbk1haW5Db250ZXh0KCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJldFZhbHVlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBpZiAoRXZlbnRzLklzQmF0Y2hSdW5uaW5nSW5NYWluQ29udGV4dEV2ZW50ICE9PSBudWxsKSB7XHJcbiAgICAgIHJldFZhbHVlID0gRXZlbnRzLklzQmF0Y2hSdW5uaW5nSW5NYWluQ29udGV4dEV2ZW50KCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0VmFsdWU7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5Pk1MUyB0cmFuc2xhdGlvbjwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJmcm9tU3RyaW5nXCI+c291cmNlIHN0cmluZzwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPnRyYW5zbGF0ZWQgc3RyaW5nPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBUcmFuc2xhdGUoZnJvbVN0cmluZzogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIERlYnVnLkFzc2VydChFdmVudHMuVHJhbnNsYXRlRXZlbnQgIT09IG51bGwpO1xyXG4gICAgcmV0dXJuIChmcm9tU3RyaW5nICE9PSBudWxsICYmIGZyb21TdHJpbmcubGVuZ3RoID4gMCkgPyBFdmVudHMuVHJhbnNsYXRlRXZlbnQoZnJvbVN0cmluZykgOiBmcm9tU3RyaW5nO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDcmVhdGVzIFByaW50IFByZXZpZXcgRm9ybVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29udGV4dElkXCI+Y29udGV4dCBpZDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaW9QdHJcIj5wb2ludGVyIHRvIGN1cnJlbnQgSU9SVCBvYmplY3Q8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvcGllc1wiPm51bWJlciBvZiBjb3BpZXM8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImVuYWJsZVBEbGdcIj5pbmRpY2F0ZXMgd2hldGhlciB0byBlbmFibGUgUHJpbnQgZGlhbG9nPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJoV25kXCI+SGFuZGxlIG9mIFByaW50IFByZXZpZXcgRm9ybTwvcGFyYW0+XHJcbiAgc3RhdGljIE9uUHJpbnRQcmV2aWV3U3RhcnQoY29udGV4dElEOiBudW1iZXIsIGlvUHRyOiBudW1iZXIsIGNvcGllczogbnVtYmVyLCBlbmFibGVQRGxnOiBib29sZWFuLCBoV25kOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChFdmVudHMuUHJpbnRQcmV2aWV3U3RhcnRFdmVudCAhPT0gbnVsbCkge1xyXG4gICAgICBFdmVudHMuUHJpbnRQcmV2aWV3U3RhcnRFdmVudChjb250ZXh0SUQsIGlvUHRyLCBjb3BpZXMsIGVuYWJsZVBEbGcsIGhXbmQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBTZXQgY3Vyc29yIHRvIFByaW50IFByZXZpZXcgZm9ybVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwicHJuUHJldkRhdGFcIj5wcmludCBwcmV2aWV3IGRhdGE8L3BhcmFtPlxyXG4gIHN0YXRpYyBPblByaW50UHJldmlld1NldEN1cnNvcihwcmludFByZXZpZXdEYXRhOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChFdmVudHMuUHJpbnRQcmV2aWV3U2V0Q3Vyc29yRXZlbnQgIT09IG51bGwpIHtcclxuICAgICAgRXZlbnRzLlByaW50UHJldmlld1NldEN1cnNvckV2ZW50KHByaW50UHJldmlld0RhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vPHN1bW1hcnk+XHJcbiAgLy8vIEhhbmRsZXMgSW52b2tlIFVEUCBvcGVyYXRpb24gZnJvbSBHVUkgdGhyZWFkXHJcbiAgLy8vPC9zdW1tYXJ5PlxyXG4gIC8vLzxwYXJhbSBuYW1lPVwiY29udGV4dElkXCI+Q29udGV4dCBpZDwvcGFyYW0+XHJcbiAgc3RhdGljIEludm9rZVVEUChjb250ZXh0SWQ6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBsZXQgcmV0OiBudW1iZXIgPSAwO1xyXG4gICAgaWYgKEV2ZW50cy5JbnZva2VVRFBFdmVudCAhPT0gbnVsbCkge1xyXG4gICAgICByZXQgPSBFdmVudHMuSW52b2tlVURQRXZlbnQoY29udGV4dElkKTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFVwZGF0ZSBQcmludCBQcmV2aWV3XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJwcm5QcmV2RGF0YVwiPnByaW50IHByZXZpZXcgZGF0YTwvcGFyYW0+XHJcbiAgc3RhdGljIE9uUHJpbnRQcmV2aWV3VXBkYXRlKHByblByZXZEYXRhOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChFdmVudHMuUHJpbnRQcmV2aWV3VXBkYXRlRXZlbnQgIT09IG51bGwpIHtcclxuICAgICAgRXZlbnRzLlByaW50UHJldmlld1VwZGF0ZUV2ZW50KHByblByZXZEYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ3JlYXRlIFJpY2ggRWRpdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY29udGV4dElkXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsUHRyXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJwcm1QdHJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0eWxlXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJkd0V4U3R5bGVcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBPbkNyZWF0ZVJpY2hXaW5kb3coY29udGV4dElEOiBudW1iZXIsIGN0cmxQdHI6IG51bWJlciwgcHJtUHRyOiBudW1iZXIsIHN0eWxlOiBudW1iZXIsIGR3RXhTdHlsZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoRXZlbnRzLkNyZWF0ZVJpY2hXaW5kb3dFdmVudCAhPT0gbnVsbCkge1xyXG4gICAgICBFdmVudHMuQ3JlYXRlUmljaFdpbmRvd0V2ZW50KGNvbnRleHRJRCwgY3RybFB0ciwgcHJtUHRyLCBzdHlsZSwgZHdFeFN0eWxlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLzxzdW1tYXJ5PlxyXG4gIC8vLyAgQ3JlYXRlcyBhIHdpbmRvd1xyXG4gIC8vLzwvc3VtbWFyeT5cclxuICAvLy88cGFyYW0gbmFtZT1cImV4U3R5bGVcIj4hIS48L3BhcmFtPlxyXG4gIC8vLzxwYXJhbSBuYW1lPVwiY2xhc3NOYW1lXCI+ISEuPC9wYXJhbT5cclxuICAvLy88cGFyYW0gbmFtZT1cIndpbmRvd05hbWVcIj4hIS48L3BhcmFtPlxyXG4gIC8vLzxwYXJhbSBuYW1lPVwic3R5bGVcIj4hIS48L3BhcmFtPlxyXG4gIC8vLzxwYXJhbSBuYW1lPVwieFwiPiEhLjwvcGFyYW0+XHJcbiAgLy8vPHBhcmFtIG5hbWU9XCJ5XCI+ISEuPC9wYXJhbT5cclxuICAvLy88cGFyYW0gbmFtZT1cIndpZHRoXCI+ISEuPC9wYXJhbT5cclxuICAvLy88cGFyYW0gbmFtZT1cImhlaWdodFwiPiEhLjwvcGFyYW0+XHJcbiAgLy8vPHBhcmFtIG5hbWU9XCJod25kUGFyZW50XCI+ISEuPC9wYXJhbT5cclxuICAvLy88cGFyYW0gbmFtZT1cImhNZW51XCI+ISEuPC9wYXJhbT5cclxuICAvLy88cGFyYW0gbmFtZT1cImhJbnN0YW5jZVwiPiEhLjwvcGFyYW0+XHJcbiAgLy8vPHBhcmFtIG5hbWU9XCJsUGFyYW1cIj4hIS48L3BhcmFtPlxyXG4gIC8vLzxyZXR1cm5zPmhhbmRsZSBvZiB3aW5kb3c8L3JldHVybnM+XHJcbiAgc3RhdGljIE9uQ3JlYXRlR3VpV2luZG93KGV4U3R5bGU6IG51bWJlciwgY2xhc3NOYW1lOiBzdHJpbmcsIHdpbmRvd05hbWU6IHN0cmluZywgc3R5bGU6IG51bWJlciwgeDogbnVtYmVyLCB5OiBudW1iZXIsIHdpZHRoOiBudW1iZXIsIGhlaWdodDogbnVtYmVyLCBod25kUGFyZW50OiBudW1iZXIsIGhNZW51OiBudW1iZXIsIGhJbnN0YW5jZTogbnVtYmVyLCBsUGFyYW06IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBsZXQgcmV0VmFsdWU6IG51bWJlciA9IDA7XHJcbiAgICBpZiAoRXZlbnRzLkNyZWF0ZUd1aVdpbmRvd0V2ZW50ICE9PSBudWxsKSB7XHJcbiAgICAgIHJldFZhbHVlID0gRXZlbnRzLkNyZWF0ZUd1aVdpbmRvd0V2ZW50KGV4U3R5bGUsIGNsYXNzTmFtZSwgd2luZG93TmFtZSwgc3R5bGUsIHgsIHksIHdpZHRoLCBoZWlnaHQsIGh3bmRQYXJlbnQsIGhNZW51LCBoSW5zdGFuY2UsIGxQYXJhbSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0VmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIERlc3Ryb3lzIGEgd2luZG93XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJoV25kUHRyXCI+aGFuZGxlIG9mIHdpbmRvdzwvcGFyYW0+XHJcbiAgc3RhdGljIE9uRGVzdHJveUd1aVdpbmRvdyhoV25kUHRyOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChFdmVudHMuRGVzdHJveUd1aVdpbmRvd0V2ZW50ICE9PSBudWxsKSB7XHJcbiAgICAgIEV2ZW50cy5EZXN0cm95R3VpV2luZG93RXZlbnQoaFduZFB0cik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIE9uQ2xvc2UgUHJpbnQgUHJldmlld1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaFduZFB0clwiPnByaW50IHByZXZpZXcgZGF0YTwvcGFyYW0+XHJcbiAgc3RhdGljIE9uUHJpbnRQcmV2aWV3Q2xvc2UocHJpbnRQcmV2aWV3RGF0YVB0cjogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBpZiAoRXZlbnRzLlByaW50UHJldmlld0Nsb3NlRXZlbnQgIT09IG51bGwpIHtcclxuICAgICAgRXZlbnRzLlByaW50UHJldmlld0Nsb3NlRXZlbnQocHJpbnRQcmV2aWV3RGF0YVB0cik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFNob3cgUHJpbnQgRGlhbG9nXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJncGRcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBPblNob3dQcmludERpYWxvZyhncGQ6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICBsZXQgcmV0VmFsdWU6IG51bWJlciA9IDA7XHJcbiAgICBpZiAoRXZlbnRzLlNob3dQcmludERpYWxvZ0V2ZW50ICE9PSBudWxsKSB7XHJcbiAgICAgIHJldFZhbHVlID0gRXZlbnRzLlNob3dQcmludERpYWxvZ0V2ZW50KGdwZCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmV0VmFsdWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IGRpc3BsYXlTZXNzaW9uU3RhdGlzdGljcyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIERpc3BsYXlTZXNzaW9uU3RhdGlzdGljcygpOiB2b2lkIHtcclxuICAgIGlmIChFdmVudHMuRGlzcGxheVNlc3Npb25TdGF0aXN0aWNzRXZlbnQgIT09IG51bGwpIHtcclxuICAgICAgRXZlbnRzLkRpc3BsYXlTZXNzaW9uU3RhdGlzdGljc0V2ZW50KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIHJldHVybnMgdHJ1ZSBmb3Igbm9uIGludGVyYWN0aXZlIHRhc2sgZm9yIGFsbCBjb250cm9scyBleGNlcHQgYSBidXR0b24gY29udHJvbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RybFwiPmNsaWNrZWQgY29udHJvbDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgU2hvdWxkQmxvY2tNb3VzZUV2ZW50cyhjdHJsOiBHdWlNZ0NvbnRyb2wpOiBib29sZWFuIHtcclxuICAgIHJldHVybiBFdmVudHMuU2hvdWxkQmxvY2tNb3VzZUV2ZW50c0V2ZW50ICE9PSBudWxsICYmIEV2ZW50cy5TaG91bGRCbG9ja01vdXNlRXZlbnRzRXZlbnQoY3RybCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cGVla0VuZE9mV29yazwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBQZWVrRW5kT2ZXb3JrKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIEV2ZW50cy5QZWVrRW5kT2ZXb3JrRXZlbnQgIT09IG51bGwgJiYgRXZlbnRzLlBlZWtFbmRPZldvcmtFdmVudCgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5Pmludm9rZXMgdGhlIEdldEV2ZW50VGltZSBkZWxlZ2F0ZTwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXRFdmVudFRpbWUoKTogbnVtYmVyIHtcclxuICAgIHJldHVybiAoRXZlbnRzLkdldEV2ZW50VGltZUV2ZW50ICE9PSBudWxsKSA/IEV2ZW50cy5HZXRFdmVudFRpbWVFdmVudCgpIDogMDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gaW52b2tlcyB0aGUgU2Nyb2xsVGFibGUgRXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aU1nT2JqZWN0XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJsaW5lXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJyb3dzVG9TY3JvbGxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImlzUGFnZVNjcm9sbFwiPm5leHQvcHJldiBwYWdlPzwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaXNUYWJsZVNjcm9sbFwiPkJlZ2luL0VuZCBUYWJsZT88L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImlzUmFpc2VkQnlNb3VzZVdoZWVsXCI+aW5kaWNhdGVzIHdoZXRoZXIgZXZlbnQgaXMgcmFpc2VkIGJ5IG1vdXNld2hlZWwgb3Igbm90LjwvcGFyYW0+XHJcbiAgc3RhdGljIE9uU2Nyb2xsVGFibGUoZ3VpTWdPYmplY3Q6IGFueSwgbGluZTogbnVtYmVyLCByb3dzVG9TY3JvbGw6IG51bWJlciwgaXNQYWdlU2Nyb2xsOiBib29sZWFuLCBpc1RhYmxlU2Nyb2xsOiBib29sZWFuLCBpc1JhaXNlZEJ5TW91c2VXaGVlbDogYm9vbGVhbik6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGhhbmRsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGlmIChFdmVudHMuU2Nyb2xsVGFibGVFdmVudCAhPT0gbnVsbCkge1xyXG4gICAgICBoYW5kbGVkID0gRXZlbnRzLlNjcm9sbFRhYmxlRXZlbnQoZ3VpTWdPYmplY3QsIGxpbmUsIHJvd3NUb1Njcm9sbCwgaXNQYWdlU2Nyb2xsLCBpc1RhYmxlU2Nyb2xsLCBpc1JhaXNlZEJ5TW91c2VXaGVlbCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaGFuZGxlZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gR2V0cyB0aGUgdXNlciBkZWZpbmVkIERyb3AgZm9ybWF0c1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0RHJvcFVzZXJGb3JtYXRzKCk6IHN0cmluZyB7XHJcbiAgICBEZWJ1Zy5Bc3NlcnQoRXZlbnRzLkdldERyb3BVc2VyRm9ybWF0c0V2ZW50ICE9PSBudWxsKTtcclxuICAgIHJldHVybiBFdmVudHMuR2V0RHJvcFVzZXJGb3JtYXRzRXZlbnQoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gR2V0IHRoZSBjb250ZXh0IGlkIGZyb20gR3VpTWdGb3JtXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlNZ0Zvcm1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIEdldENvbnRleHRJRChndWlNZ0Zvcm06IEd1aU1nRm9ybSk6IG51bWJlciB7XHJcbiAgICBsZXQgY29udGV4dElEOiBudW1iZXIgPSAtMTtcclxuICAgIERlYnVnLkFzc2VydChndWlNZ0Zvcm0gIT09IG51bGwpO1xyXG4gICAgaWYgKEV2ZW50cy5HZXRDb250ZXh0SURFdmVudCAhPT0gbnVsbCkge1xyXG4gICAgICBjb250ZXh0SUQgPSBFdmVudHMuR2V0Q29udGV4dElERXZlbnQoZ3VpTWdGb3JtKTtcclxuICAgIH1cclxuICAgIHJldHVybiBjb250ZXh0SUQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFNldE1vZGFsIGV2ZW50XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdXJyRm9ybVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwib25cIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBTZXRNb2RhbChtZ0Zvcm06IE1nRm9ybUJhc2UsIG9uOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAoRXZlbnRzLlNldE1vZGFsRXZlbnQgIT09IG51bGwpIHtcclxuICAgICAgRXZlbnRzLlNldE1vZGFsRXZlbnQobWdGb3JtLCBvbik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlNZ0Zvcm1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIE9uU2hvd0Zvcm0oZ3VpTWdGb3JtOiBHdWlNZ0Zvcm0pOiB2b2lkIHtcclxuICAgIGlmIChFdmVudHMuU2hvd0Zvcm1FdmVudCAhPT0gbnVsbCkge1xyXG4gICAgICBFdmVudHMuU2hvd0Zvcm1FdmVudChndWlNZ0Zvcm0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBpbnZva2VzIE9uRm9ybUFjdGl2YXRlRXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBPbkZvcm1BY3RpdmF0ZShndWlNZ0Zvcm06IEd1aU1nRm9ybSk6IHZvaWQge1xyXG4gICAgaWYgKEV2ZW50cy5PbkZvcm1BY3RpdmF0ZUV2ZW50ICE9PSBudWxsKSB7XHJcbiAgICAgIEV2ZW50cy5PbkZvcm1BY3RpdmF0ZUV2ZW50KGd1aU1nRm9ybSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGludm9rZXMgT25OQ0FjdGl2YXRlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgT25OQ0FjdGl2YXRlKGd1aU1nRm9ybTogR3VpTWdGb3JtKTogdm9pZCB7XHJcbiAgICBpZiAoRXZlbnRzLk9uTkNBY3RpdmF0ZUV2ZW50ICE9PSBudWxsKSB7XHJcbiAgICAgIEV2ZW50cy5Pbk5DQWN0aXZhdGVFdmVudChndWlNZ0Zvcm0pO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gSGFuZGxlIFdNX0tFWVVQIC0gKHJlcXVpcmVkIG9ubHkgZm9yIEFDVF9ORVhUX1JUX1dJTkRPVywgQUNUX1BSRVZfUlRfV0lORE9XIGZvciBzb3J0aW5nIHdpbmRvd2xpc3RcclxuICAvLy8gd2hlbiB0aGUga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGUgYWN0aW9uIGlzIHJlbGVhc2VkKVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpTWdGb3JtXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJrZXlDb2RlXCI+a2V5Y29kZSBvZiBhIGtleSB3aGljaCBpcyBqdXN0IHJlbGVhc2VkPC9wYXJhbT5cclxuICBzdGF0aWMgSGFuZGxlS2V5VXBNZXNzYWdlKGd1aU1nRm9ybTogR3VpTWdGb3JtLCBrZXlDb2RlOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGlmIChFdmVudHMuSGFuZGxlS2V5VXBNZXNzYWdlRXZlbnQgIT09IG51bGwpIHtcclxuICAgICAgRXZlbnRzLkhhbmRsZUtleVVwTWVzc2FnZUV2ZW50KGd1aU1nRm9ybSwga2V5Q29kZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIGNoZWNrcyB3aGV0aGVyIHdlIHNob3VsZCBzaG93IExvZ29uIHdpbmRvdyBpbiBSVE9MIGZvcm1hdCBvciBub3QuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBJc0xvZ29uUlRMKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGlzUlRMOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBpZiAoRXZlbnRzLk9uSXNMb2dvblJUTEV2ZW50ICE9PSBudWxsKSB7XHJcbiAgICAgIGlzUlRMID0gRXZlbnRzLk9uSXNMb2dvblJUTEV2ZW50KCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXNSVEw7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgSXNTcGVjaWFsRW5nTG9nb24oKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgaXNFbmdMb2dvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgaWYgKEV2ZW50cy5PbklzU3BlY2lhbEVuZ0xvZ29uRXZlbnQgIT09IG51bGwpIHtcclxuICAgICAgaXNFbmdMb2dvbiA9IEV2ZW50cy5PbklzU3BlY2lhbEVuZ0xvZ29uRXZlbnQoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBpc0VuZ0xvZ29uO1xyXG4gIH1cclxuXHJcbiAgc3RhdGljIElzU3BlY2lhbElnbm9yZUJ1dHRvbkZvcm1hdCgpOiBib29sZWFuIHtcclxuICAgIGxldCBpc0lnbm9yZUJ1dHRvbkZvcm1hdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgaWYgKEV2ZW50cy5PbklzU3BlY2lhbElnbm9yZUJ1dHRvbkZvcm1hdEV2ZW50ICE9PSBudWxsKSB7XHJcbiAgICAgIGlzSWdub3JlQnV0dG9uRm9ybWF0ID0gRXZlbnRzLk9uSXNTcGVjaWFsSWdub3JlQnV0dG9uRm9ybWF0RXZlbnQoKTtcclxuICAgIH1cclxuICAgIHJldHVybiBpc0lnbm9yZUJ1dHRvbkZvcm1hdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gaW52b2tlcyB0aGUgZ2V0TWFpblByb2dyYW0gRXZlbnQgPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbnRleHRJRFwiPmFjdGl2ZS90YXJnZXQgY29udGV4dDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RsSWR4XCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBHZXRNYWluUHJvZ3JhbShjb250ZXh0SUQ6IG51bWJlciwgY3RsSWR4OiBudW1iZXIpOiBHdWlUYXNrQmFzZSB7XHJcbiAgICBEZWJ1Zy5Bc3NlcnQoRXZlbnRzLkdldE1haW5Qcm9ncmFtRXZlbnQgIT09IG51bGwpO1xyXG4gICAgcmV0dXJuIEV2ZW50cy5HZXRNYWluUHJvZ3JhbUV2ZW50KGNvbnRleHRJRCwgY3RsSWR4KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gTG9naWNhbCBuYW1lIHRyYW5zbGF0aW9uXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJmcm9tU3RyaW5nXCI+c291cmNlIHN0cmluZzwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPnRyYW5zbGF0ZWQgc3RyaW5nPC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBUcmFuc2xhdGVMb2dpY2FsTmFtZShmcm9tU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgRGVidWcuQXNzZXJ0KEV2ZW50cy5UcmFuc2xhdGVMb2dpY2FsTmFtZUV2ZW50ICE9PSBudWxsKTtcclxuICAgIHJldHVybiBFdmVudHMuVHJhbnNsYXRlTG9naWNhbE5hbWVFdmVudChmcm9tU3RyaW5nKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gUmV0dXJucyBBc3NlcnRVUkwgZXZlbnRcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyBHZXRBc3NldHNVUkwoKTogc3RyaW5nIHtcclxuICAgIERlYnVnLkFzc2VydChFdmVudHMuR2V0QXNzZXRzVVJMRXZlbnQgIT09IG51bGwpO1xyXG4gICAgcmV0dXJuIEV2ZW50cy5HZXRBc3NldHNVUkxFdmVudCgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5Pmludm9rZXMgZ2V0TWVzc2FnZVN0cmluZyBFdmVudDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtc2dJZFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0TWVzc2FnZVN0cmluZyhtc2dJZDogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIERlYnVnLkFzc2VydChFdmVudHMuR2V0TWVzc2FnZVN0cmluZ0V2ZW50ICE9PSBudWxsKTtcclxuICAgIGxldCBmcm9tU3RyaW5nOiBzdHJpbmcgPSBFdmVudHMuR2V0TWVzc2FnZVN0cmluZ0V2ZW50KG1zZ0lkKTtcclxuICAgIGxldCB0ZXh0OiBzdHJpbmcgPSBFdmVudHMuVHJhbnNsYXRlKGZyb21TdHJpbmcpO1xyXG4gICAgaWYgKHRleHQgIT09IG51bGwgJiYgdGV4dC5lbmRzV2l0aChcIjpcIikpIHtcclxuICAgICAgbGV0IHN0cjogU3RyaW5nQnVpbGRlcjtcclxuICAgICAgc3RyID0gbmV3IFN0cmluZ0J1aWxkZXIodGV4dCk7XHJcbiAgICAgIHN0ci5JbnNlcnQodGV4dC5sZW5ndGgsIFwiIFwiKTtcclxuICAgICAgdGV4dCA9IHN0ci5Ub1N0cmluZygpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRleHQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cmFpc2VzIEN0cmxGb2N1c0V2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgc3RhdGljIE9uQ3RybEZvY3VzKGlUYXNrOiBJVGFzaywgY3RybDogR3VpQ29udHJvbFByb3BlcnR5QWRhcHRlcik6IHZvaWQge1xyXG4gICAgaWYgKEV2ZW50cy5DdHJsRm9jdXNFdmVudCAhPT0gbnVsbCkge1xyXG4gICAgICBFdmVudHMuQ3RybEZvY3VzRXZlbnQoaVRhc2ssIDxNZ0NvbnRyb2xCYXNlPmN0cmwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBHZXRzIHRoZSBSdW50aW1lQ29udGV4dEJhc2UgdGhhdCBiZWxvbmdzIHRvIHRoZSBjb250ZXh0SURcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbnRleHRJRFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgR2V0UnVudGltZUNvbnRleHQoY29udGV4dElEOiBzdHJpbmcpOiBSdW50aW1lQ29udGV4dEJhc2Uge1xyXG4gICAgRGVidWcuQXNzZXJ0KEV2ZW50cy5HZXRSdW50aW1lQ29udGV4dEV2ZW50ICE9PSBudWxsKTtcclxuICAgIHJldHVybiBFdmVudHMuR2V0UnVudGltZUNvbnRleHRFdmVudChjb250ZXh0SUQpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBTYXZlcyB0aGUgbmFtZSBvZiB0aGUgbGFzdCBjbGlja2VkIGNvbnRyb2wuXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlNZ0NvbnRyb2xcIj5ndWlNZ0NvbnRyb2w8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbnRyb2xOYW1lXCI+TmFtZSBvZiB0aGUgY29udHJvbDwvcGFyYW0+XHJcbiAgc3RhdGljIFNhdmVMYXN0Q2xpY2tlZEN0cmxOYW1lKGd1aU1nQ29udHJvbDogR3VpTWdDb250cm9sLCBjb250cm9sTmFtZTogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBpZiAoRXZlbnRzLlNhdmVMYXN0Q2xpY2tlZEN0cmxFdmVudCAhPT0gbnVsbCkge1xyXG4gICAgICBFdmVudHMuU2F2ZUxhc3RDbGlja2VkQ3RybEV2ZW50KCBjb250cm9sTmFtZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIFNhdmVzIHRoZSBsYXN0IGNsaWNrZWQgaW5mb3JtYXRpb24uIChpLmUuIENvLW9yZGluYXRlcyBhbmQgY29udHJvbCBuYW1lLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpTWdGb3JtXCI+Z3VpTWdGb3JtPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb250cm9sTmFtZVwiPm5hbWUgb2YgdGhlIGNvbnRyb2w8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInhcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInlcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm9mZnNldFhcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm9mZnNldFlcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxhc3RDbGlja0Nvb3JkaW5hdGVzQXJlSW5QaXhlbHNcIj5jby1vcmRpbmF0ZXMgYXJlIGluIHBpeGVsIG9yIG5vdC48L3BhcmFtPlxyXG4gIHN0YXRpYyBTYXZlTGFzdENsaWNrSW5mbyhndWlNZ0Zvcm06IEd1aU1nRm9ybSwgY29udHJvbE5hbWU6IHN0cmluZywgeDogbnVtYmVyLCB5OiBudW1iZXIsIG9mZnNldFg6IG51bWJlciwgb2Zmc2V0WTogbnVtYmVyLCBsYXN0Q2xpY2tDb29yZGluYXRlc0FyZUluUGl4ZWxzOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICBpZiAoRXZlbnRzLlNhdmVMYXN0Q2xpY2tJbmZvRXZlbnQgIT09IG51bGwpIHtcclxuICAgICAgRXZlbnRzLlNhdmVMYXN0Q2xpY2tJbmZvRXZlbnQoIGNvbnRyb2xOYW1lLCB4LCB5LCBvZmZzZXRYLCBvZmZzZXRZLCBsYXN0Q2xpY2tDb29yZGluYXRlc0FyZUluUGl4ZWxzKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT53cml0ZSBhbiBlcnJvciBtZXNzYWdlIHRvIHRoZSBpbnRlcm5hbCBsb2cgZmlsZTwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtc2dcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBXcml0ZUVycm9yVG9Mb2cobXNnOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIERlYnVnLkFzc2VydChFdmVudHMuV3JpdGVFcnJvclRvTG9nRXZlbnQgIT09IG51bGwpO1xyXG4gICAgRXZlbnRzLldyaXRlRXJyb3JUb0xvZ0V2ZW50KG1zZyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgV3JpdGVFeGNlcHRpb25Ub0xvZyhtc2c6IHN0cmluZyk6IHZvaWQ7XHJcbiAgc3RhdGljIFdyaXRlRXhjZXB0aW9uVG9Mb2coZXg6IEV4Y2VwdGlvbik6IHZvaWQ7XHJcbiAgc3RhdGljIFdyaXRlRXhjZXB0aW9uVG9Mb2cobXNnT3JFeDogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSAmJiAobXNnT3JFeCA9PT0gbnVsbCB8fCBtc2dPckV4LmNvbnN0cnVjdG9yID09PSBTdHJpbmcpKSB7XHJcbiAgICAgIEV2ZW50cy5Xcml0ZUV4Y2VwdGlvblRvTG9nXzAobXNnT3JFeCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIEV2ZW50cy5Xcml0ZUV4Y2VwdGlvblRvTG9nXzEobXNnT3JFeCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBXcml0ZUV4Y2VwdGlvblRvTG9nXzAobXNnOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIERlYnVnLkFzc2VydChFdmVudHMuV3JpdGVFcnJvclRvTG9nRXZlbnQgIT09IG51bGwpO1xyXG4gICAgRXZlbnRzLldyaXRlRXJyb3JUb0xvZ0V2ZW50KG1zZyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBXcml0ZUV4Y2VwdGlvblRvTG9nXzEoZXg6IEV4Y2VwdGlvbik6IHZvaWQge1xyXG4gICAgRXZlbnRzLldyaXRlRXhjZXB0aW9uVG9Mb2coTlN0cmluZy5Gb3JtYXQoXCJ7MH0gOiB7MX17Mn17M317NH1cIiwgW1xyXG4gICAgICBleC5HZXRUeXBlKCksIE9TRW52aXJvbm1lbnQuRW9sU2VxLCBleC5TdGFja1RyYWNlLCBPU0Vudmlyb25tZW50LkVvbFNlcSwgZXguTWVzc2FnZVxyXG4gICAgXSkpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PndyaXRlIGEgd2FybmluZyBtZXNzYWdlIHRvIHRoZSBpbnRlcm5hbCBsb2cgZmlsZTwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtc2dcIj48L3BhcmFtPlxyXG4gIHN0YXRpYyBXcml0ZVdhcm5pbmdUb0xvZyhtc2c6IHN0cmluZyk6IHZvaWQ7XHJcbiAgc3RhdGljIFdyaXRlV2FybmluZ1RvTG9nKGV4OiBFeGNlcHRpb24pOiB2b2lkO1xyXG4gIHN0YXRpYyBXcml0ZVdhcm5pbmdUb0xvZyhtc2dPckV4OiBhbnkpOiB2b2lkIHtcclxuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID09PSAxICYmIChtc2dPckV4ID09PSBudWxsIHx8IG1zZ09yRXguY29uc3RydWN0b3IgPT09IFN0cmluZykpIHtcclxuICAgICAgRXZlbnRzLldyaXRlV2FybmluZ1RvTG9nXzAobXNnT3JFeCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIEV2ZW50cy5Xcml0ZVdhcm5pbmdUb0xvZ18xKG1zZ09yRXgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBzdGF0aWMgV3JpdGVXYXJuaW5nVG9Mb2dfMChtc2c6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgRGVidWcuQXNzZXJ0KEV2ZW50cy5Xcml0ZVdhcm5pbmdUb0xvZ0V2ZW50ICE9PSBudWxsKTtcclxuICAgIEV2ZW50cy5Xcml0ZVdhcm5pbmdUb0xvZ0V2ZW50KG1zZyk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHN0YXRpYyBXcml0ZVdhcm5pbmdUb0xvZ18xKGV4OiBFeGNlcHRpb24pOiB2b2lkIHtcclxuICAgIEV2ZW50cy5Xcml0ZVdhcm5pbmdUb0xvZyhleC5HZXRUeXBlKCkgKyBcIiA6IFwiICsgT1NFbnZpcm9ubWVudC5Fb2xTZXEgKyBleC5TdGFja1RyYWNlICsgT1NFbnZpcm9ubWVudC5Fb2xTZXEgKyBleC5NZXNzYWdlKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy9cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImxvZ0xldmVsXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIHN0YXRpYyBTaG91bGRMb2cobG9nTGV2ZWw6IExvZ2dlcl9Mb2dMZXZlbHMpOiBib29sZWFuIHtcclxuICAgIERlYnVnLkFzc2VydChFdmVudHMuU2hvdWxkTG9nRXZlbnQgIT09IG51bGwpO1xyXG4gICAgcmV0dXJuIEV2ZW50cy5TaG91bGRMb2dFdmVudChsb2dMZXZlbCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+d3JpdGUgYSBHVUkgbWVzc2FnZSB0byB0aGUgaW50ZXJuYWwgbG9nIGZpbGU8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibXNnXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgV3JpdGVHdWlUb0xvZyhtc2c6IHN0cmluZyk6IHZvaWQge1xyXG4gICAgRGVidWcuQXNzZXJ0KEV2ZW50cy5Xcml0ZUd1aVRvTG9nRXZlbnQgIT09IG51bGwpO1xyXG4gICAgRXZlbnRzLldyaXRlR3VpVG9Mb2dFdmVudChcIkdVSTogXCIgKyBtc2cpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PndyaXRlIGEgREVWIG1lc3NhZ2UgdG8gdGhlIGludGVybmFsIGxvZyBmaWxlPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1zZ1wiPjwvcGFyYW0+XHJcbiAgc3RhdGljIFdyaXRlRGV2VG9Mb2cobXNnOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIERlYnVnLkFzc2VydChFdmVudHMuV3JpdGVEZXZUb0xvZ0V2ZW50ICE9PSBudWxsKTtcclxuICAgIEV2ZW50cy5Xcml0ZURldlRvTG9nRXZlbnQobXNnKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ2FsbGVkIHdoZW4gV01fQ0xFQVIgbWVzc2FnZSBpcyByZWNlaXZlZFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiY3RybFwiPjwvcGFyYW0+XHJcbiAgc3RhdGljIE9uQ2xlYXIoY3RybDogR3VpTWdDb250cm9sKTogdm9pZCB7XHJcbiAgICAgIGlmIChFdmVudHMuQ2xlYXJFdmVudCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgRXZlbnRzLkNsZWFyRXZlbnQoY3RybCk7XHJcbiAgICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ2FsbGVkIHdoZW4gV01fVU5ETyBtZXNzYWdlIGlzIHJlY2VpdmVkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjdHJsXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgT25VbmRvKGN0cmw6IEd1aU1nQ29udHJvbCk6IHZvaWQge1xyXG4gICAgICBpZiAoRXZlbnRzLlVuZG9FdmVudCAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgRXZlbnRzLlVuZG9FdmVudChjdHJsKTtcclxuICAgICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBTaG91bGQgRW50ZXIgYmUgYWRkZWQgYXMga2V5Ym9hcmQgZXZlbnQgPyBUaGlzIGlzIGltcG9ydGFudCBtb3N0bHkgaW4gZGV0ZXJtaW5pbmcgaWYgYSBjbGljayBldmVudFxyXG4gIC8vLyB3aWxsIGJlIHJhaXNlZCBmb3IgYSBkZWZhdWx0IGJ1dHRvbiBvciBub3QuXHJcbiAgLy8vIEFkZGluZyBFbnRlciBhcyBhIGtleWJvYXJkIGV2ZW50IHdpbGwgbm90IHJhaXNlIGNsaWNrIG9uIGRlZmF1bHQgYnV0dG9uLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBzdGF0aWMgQWRkRW50ZXJBc0tleUV2ZW50KCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIEV2ZW50cy5TaG91bGRBZGRFbnRlckFzS2V5RXZlbnQgIT09IG51bGwgJiYgRXZlbnRzLlNob3VsZEFkZEVudGVyQXNLZXlFdmVudCgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIFNob3dTZXNzaW9uU3RhdGlzdGljc0Zvcm0oKTogdm9pZCB7XHJcbiAgICBpZiAoRXZlbnRzLlNob3dTZXNzaW9uU3RhdGlzdGljc0V2ZW50ICE9PSBudWxsKSB7XHJcbiAgICAgIEV2ZW50cy5TaG93U2Vzc2lvblN0YXRpc3RpY3NFdmVudCgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBDYWxsZWQgd2hlbiBXTV9DT1BZREFUQSBtZXNzYWdlIGlzIHJlY2VpdmVkXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlNZ0Zvcm1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvcHlEYXRhXCI+PC9wYXJhbT5cclxuICBzdGF0aWMgT25Db3B5RGF0YShndWlNZ0Zvcm06IEd1aU1nRm9ybSwgY29weURhdGE6IG51bWJlcik6IHZvaWQge1xyXG4gICAgaWYgKEV2ZW50cy5Db3B5RGF0YUV2ZW50ICE9PSBudWxsKSB7XHJcbiAgICAgIEV2ZW50cy5Db3B5RGF0YUV2ZW50KGd1aU1nRm9ybSwgY29weURhdGEpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgfVxyXG59XHJcbiJdfQ==
|
|
@@ -64,4 +64,4 @@ export class EventsProcessor {
|
|
|
64
64
|
Manager.EventsManager.AddColumnClickEvent(mgColumnControl, direction, columnHeader);
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRzUHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9FdmVudHNQcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVsRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBR2hDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFFbEMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQU03RCxNQUFNLE9BQWlCLGVBQWU7SUFDcEM7UUFDRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBR08sZ0JBQWdCO1FBQ3RCLE1BQU0sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckQsTUFBTSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDOUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBRTlDLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDcEQsQ0FBQztJQXFCRCxjQUFjLENBQUMsU0FBb0IsRUFBRSxTQUF1QixFQUFFLFFBQW1CLEVBQUUsT0FBZSxFQUFFLEtBQWEsRUFBRSxHQUFXLEVBQUUsSUFBWSxFQUFFLFNBQWtCLEVBQUUsY0FBc0IsRUFBRSxPQUFnQjtRQUN4TSxJQUFJLFlBQVksR0FBWSxPQUFPLENBQUM7UUFFcEMsSUFBSSxhQUFhLEdBQWlDLFNBQVMsQ0FBQztRQUM1RCxJQUFJLFVBQVUsR0FBMkIsU0FBUyxDQUFDO1FBRW5ELE9BQU8sQ0FBQyxhQUFhLENBQUMsZ0JBQWdCLENBQUMsVUFBVSxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxjQUFjLEVBQUUsaUJBQWlCLENBQUMsbUJBQW1CLENBQUMsQ0FBQztRQUV6SyxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBUUQsZ0JBQWdCLENBQUMsU0FBb0I7UUFDbkMsSUFBSSxlQUFlLEdBQVksS0FBSyxDQUFDO1FBQ3JDLElBQUksVUFBVSxHQUEyQixTQUFTLENBQUM7UUFFbkQsSUFBSSxVQUFVLENBQUMsdUJBQXVCLEVBQUU7WUFDdEMsT0FBTyxDQUFDLGFBQWEsQ0FBQywwQ0FBMEMsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdkgsT0FBTyxDQUFDLGFBQWEsQ0FBQyxtQ0FBbUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsaUJBQWlCLENBQUMsWUFBWSxDQUFDLENBQUM7UUFFaEgsT0FBTyxlQUFlLENBQUM7SUFDekIsQ0FBQztJQVVPLGdCQUFnQixDQUFDLFNBQW9CLEVBQUUsU0FBdUIsRUFBRSxVQUFpQixFQUFFLG1CQUE0QixFQUFFLElBQVksRUFBRSxXQUFvQixFQUFFLGVBQXdCO1FBQ25MLElBQUksU0FBUyxHQUFpQyxTQUFTLENBQUM7UUFFeEQsSUFBSSxTQUFTLEtBQUssSUFBSSxFQUFFLENBQUM7WUFDdkIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLENBQUM7WUFFakMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxpREFBaUQsQ0FBYyxTQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsaUJBQWlCLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDM0ksQ0FBQzthQUNJLENBQUM7WUFDSixJQUFJLFNBQVMsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDO2dCQUMxQixTQUFTLENBQUMsY0FBYyxFQUFFLENBQUM7WUFDN0IsQ0FBQztpQkFDSSxDQUFDO2dCQUNKLElBQUksU0FBUyxDQUFDLDBCQUEwQixDQUFDLG1CQUFtQixDQUFDLEVBQUUsQ0FBQztvQkFDOUQsT0FBTyxDQUFDLGFBQWEsQ0FBQywwQ0FBMEMsQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxDQUFDO2dCQUN2SCxDQUFDO2dCQUNELElBQUksbUJBQW1CLElBQUksZUFBZSxFQUFFLENBQUM7b0JBTTNDLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsZ0JBQWdCLElBQUksU0FBUyxDQUFDLElBQUksS0FBSyxhQUFhLENBQUMsa0JBQWtCLEVBQUUsQ0FBQzt3QkFDN0csT0FBTyxDQUFDLGFBQWEsQ0FBQywwQ0FBMEMsQ0FBQyxTQUFTLEVBQUUsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLENBQUM7b0JBQ3hILENBQUM7Z0JBQ0gsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQztJQUtPLGVBQWUsQ0FBQyxTQUF1QixFQUFFLElBQVk7UUFDM0QsSUFBSSxTQUFTLEdBQWlDLFNBQVMsQ0FBQztRQUN4RCxJQUFJLENBQUMsU0FBUyxDQUFDLDBCQUEwQixDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDO1lBQ3BGLE9BQU87UUFRVCxPQUFPLENBQUMsYUFBYSxDQUFDLDBDQUEwQyxDQUFDLFNBQVMsRUFBRSxpQkFBaUIsQ0FBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM1SCxDQUFDO0lBTU8sa0JBQWtCLENBQUMsYUFBMkIsRUFBRSxTQUFpQixFQUFFLFlBQW9CO1FBQzdGLElBQUksZUFBZSxHQUFpQyxhQUFhLENBQUM7UUFDbEUsT0FBTyxDQUFDLGFBQWEsQ0FBQyxtQkFBbUIsQ0FBQyxlQUFlLEVBQUUsU0FBUyxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3RGLENBQUM7Q0FHRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RGVidWd9IGZyb20gJ0BtYWdpYy14cGEvbXNjb3JlbGliJztcclxuaW1wb3J0IHtJbnRlcm5hbEludGVyZmFjZSwgTWdDb250cm9sVHlwZX0gZnJvbSAnQG1hZ2ljLXhwYS91dGlscyc7XHJcbmltcG9ydCB7R3VpTWdGb3JtfSBmcm9tICcuL2d1aS9HdWlNZ0Zvcm0nO1xyXG5pbXBvcnQge0V2ZW50c30gZnJvbSAnLi9FdmVudHMnO1xyXG5pbXBvcnQge0d1aU1nQ29udHJvbH0gZnJvbSAnLi9ndWkvR3VpTWdDb250cm9sJztcclxuaW1wb3J0IHtNZ0NvbnRyb2xCYXNlfSBmcm9tICcuL21hbmFnZW1lbnQvZ3VpL01nQ29udHJvbEJhc2UnO1xyXG5pbXBvcnQge01hbmFnZXJ9IGZyb20gJy4vTWFuYWdlcic7XHJcbmltcG9ydCB7TW9kaWZpZXJzfSBmcm9tICcuL0d1aUVudW1zJztcclxuaW1wb3J0IHtNZ0Zvcm1CYXNlfSBmcm9tICcuL21hbmFnZW1lbnQvZ3VpL01nRm9ybUJhc2UnO1xyXG5pbXBvcnQge1Byb3BJbnRlcmZhY2V9IGZyb20gJy4vbWFuYWdlbWVudC9ndWkvUHJvcEludGVyZmFjZSc7XHJcblxyXG4vLy8gPHN1bW1hcnk+XHJcbi8vLyAoMSkgcmVnaXN0ZXJzIGFuZCBpbXBsZW1lbnRzIGhhbmRsZXJzIGZvciBldmVudHMgdGhhdCBjYW4gYmUgc2VydmVkIGxvY2FsbHkgYnkgTWdHdWkuZGxsLlxyXG4vLy8gKDIpIHJlcXVlc3RzIHN1YmNsYXNzZXMgdG8gcmVnaXN0ZXIgdGhlaXIgaGFuZGxlcnMgKCdUZW1wbGF0ZSBNZXRob2QnIGRlc2lnbiBwYXR0ZXJuKS5cclxuLy8vIDwvc3VtbWFyeT5cclxuZXhwb3J0ICBhYnN0cmFjdCBjbGFzcyBFdmVudHNQcm9jZXNzb3Ige1xyXG4gIGNvbnN0cnVjdG9yKCkge1xyXG4gICAgdGhpcy5SZWdpc3RlckhhbmRsZXJzKCk7XHJcbiAgICB0aGlzLlJlZ2lzdGVyU3ViY2xhc3NIYW5kbGVycygpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PnJlZ2lzdGVyIGFuZCBpbXBsZW1lbnQgaGFuZGxlcnMgZm9yIGV2ZW50cyB0aGF0IGNhbiBiZSBzZXJ2ZWQgbG9jYWxseSBieSBNZ0d1aS5kbGwuPC9zdW1tYXJ5PlxyXG4gIHByaXZhdGUgUmVnaXN0ZXJIYW5kbGVycygpOiB2b2lkIHtcclxuICAgIEV2ZW50cy5LZXlEb3duRXZlbnQgPSB0aGlzLnByb2Nlc3NLZXlEb3duLmJpbmQodGhpcyk7XHJcblxyXG4gICAgRXZlbnRzLk1vdXNlRG93bkV2ZW50ID0gdGhpcy5wcm9jZXNzTW91c2VEb3duO1xyXG4gICAgRXZlbnRzLkRibENsaWNrRXZlbnQgPSB0aGlzLnByb2Nlc3NEYmxDbGljaztcclxuICAgIEV2ZW50cy5DbG9zZUZvcm1FdmVudCA9IHRoaXMucHJvY2Vzc0Zvcm1DbG9zZTtcclxuXHJcbiAgICBFdmVudHMuQ29sdW1uQ2xpY2tFdmVudCA9IHRoaXMuUHJvY2Vzc0NvbHVtbkNsaWNrO1xyXG4gIH1cclxuXHJcbiAgLy8gcmVxdWVzdCBzdWJjbGFzc2VzIHRvIHJlZ2lzdGVyIGhhbmRsZXJzIHRoYXQgdGhleSB3aWxsIGltcGxlbWVudCAoJ1RlbXBsYXRlIE1ldGhvZCcgZGVzaWduIHBhdHRlcm4pLlxyXG4gIGFic3RyYWN0IFJlZ2lzdGVyU3ViY2xhc3NIYW5kbGVycygpO1xyXG5cclxuICAvLy8gPHN1bW1hcnk+UGFzcyBrZXljb2RlIGFuZCBtb2RpZmllciB0byBicmlkZ2UsIGJyaWRnZSB0aGVuIGNvbnZlcnRzIGl0IHRvIGtleWJvYXJkIGFjdGlvbiBhbmQgYWRkcyBpbiBNZ0NvcmUuZGxsXHJcbiAgLy8vIGV2ZW50cyBxdWV1ZTwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJmb3JtXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlNZ0N0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIm1vZGlmaWVyXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJrZXlDb2RlXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdGFydFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZW5kXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjYXJldFBvc1wiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwidGV4dFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaW1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImlzQWN0Q2hhclwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwic3VnZ2VzdGVkVmFsdWVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cIkNvbWJvSXNEcm9wRG93blwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaGFuZGxlZFwiPmJvb2xlYW4gdmFyaWFibGUgZXZlbnQgaXMgaGFuZGxlZCBvciBub3QuPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHRydWUgb25seSBpZiB3ZSBoYXZlIGhhbmRsZWQgdGhlIEtleURvd24gZXZlbnQgKG90aGVyd2lzZSB0aGUgQ0xSIHNob3VsZCBoYW5kbGUpLiBJZiB0cnVlIG1hZ2ljIHdpbGwgaGFuZGxlIGVsc2UgQ0xSIHdpbGwgaGFuZGxlLjwvcmV0dXJucz5cclxuICBwcm9jZXNzS2V5RG93bihndWlNZ0Zvcm06IEd1aU1nRm9ybSwgZ3VpTWdDdHJsOiBHdWlNZ0NvbnRyb2wsIG1vZGlmaWVyOiBNb2RpZmllcnMsIGtleUNvZGU6IG51bWJlciwgc3RhcnQ6IG51bWJlciwgZW5kOiBudW1iZXIsIHRleHQ6IHN0cmluZywgaXNBY3RDaGFyOiBib29sZWFuLCBzdWdnZXN0ZWRWYWx1ZTogc3RyaW5nLCBoYW5kbGVkOiBib29sZWFuKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgZXZlbnRIYW5kbGVkOiBib29sZWFuID0gaGFuZGxlZDtcclxuXHJcbiAgICBsZXQgbWdDb250cm9sQmFzZTogTWdDb250cm9sQmFzZSA9IDxNZ0NvbnRyb2xCYXNlPmd1aU1nQ3RybDtcclxuICAgIGxldCBtZ0Zvcm1CYXNlOiBNZ0Zvcm1CYXNlID0gPE1nRm9ybUJhc2U+Z3VpTWdGb3JtO1xyXG5cclxuICAgIE1hbmFnZXIuRXZlbnRzTWFuYWdlci5BZGRLZXlib2FyZEV2ZW50KG1nRm9ybUJhc2UsIG1nQ29udHJvbEJhc2UsIG1vZGlmaWVyLCBrZXlDb2RlLCBzdGFydCwgZW5kLCB0ZXh0LCBpc0FjdENoYXIsIHN1Z2dlc3RlZFZhbHVlLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9LRVlET1dOKTtcclxuXHJcbiAgICByZXR1cm4gZXZlbnRIYW5kbGVkO1xyXG4gIH1cclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gRnVuY3Rpb24gaGFuZGxpbmcgZm9ybSBjbG9zZSBldmVudC5cclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aU1nRm9ybVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPnRydWUgaWYgZXZlbnQgaXMgQ0xSIGhhbmRsZWQgZWxzZSBmYWxzZS48L3JldHVybnM+XHJcbiAgcHJvY2Vzc0Zvcm1DbG9zZShndWlNZ0Zvcm06IEd1aU1nRm9ybSk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGNsckhhbmRsZWRFdmVudDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgbGV0IG1nRm9ybUJhc2U6IE1nRm9ybUJhc2UgPSA8TWdGb3JtQmFzZT5ndWlNZ0Zvcm07XHJcblxyXG4gICAgaWYgKE1nRm9ybUJhc2UuU2hvdWxkUHV0QWN0T25Gb3JtQ2xvc2UoKSlcclxuICAgICAgTWFuYWdlci5FdmVudHNNYW5hZ2VyLmFkZEd1aVRyaWdnZXJlZEV2ZW50VGFza0FuZENvZGVBbmRSYWlzZWRCeShtZ0Zvcm1CYXNlLmdldFRhc2soKSwgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0hJVCk7XHJcbiAgICBNYW5hZ2VyLkV2ZW50c01hbmFnZXIuYWRkR3VpVHJpZ2dlcmVkRXZlbnRXaXRoVGFza0FuZENvZGUobWdGb3JtQmFzZS5nZXRUYXNrKCksIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DTE9TRSk7XHJcblxyXG4gICAgcmV0dXJuIGNsckhhbmRsZWRFdmVudDtcclxuICB9XHJcblxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5Pjwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImd1aU1nRm9ybVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJndWlNZ0N0cmxcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZG90TmV0QXJnc1wiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJsZWZ0Q2xpY2tXYXNQcmVzc2VkXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImxpbmVcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgcHJvY2Vzc01vdXNlRG93bihndWlNZ0Zvcm06IEd1aU1nRm9ybSwgZ3VpTWdDdHJsOiBHdWlNZ0NvbnRyb2wsIGRvdE5ldEFyZ3M6IGFueVtdLCBsZWZ0Q2xpY2tXYXNQcmVzc2VkOiBib29sZWFuLCBsaW5lOiBudW1iZXIsIG9uTXVsdGlNYXJrOiBib29sZWFuLCBjYW5Qcm9kdWNlQ2xpY2s6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgIGxldCBtZ0NvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSA8TWdDb250cm9sQmFzZT5ndWlNZ0N0cmw7XHJcblxyXG4gICAgaWYgKG1nQ29udHJvbCA9PT0gbnVsbCkge1xyXG4gICAgICBEZWJ1Zy5Bc3NlcnQoZ3VpTWdGb3JtICE9PSBudWxsKTtcclxuICAgICAgLy8gQXMgaW4gb25saW5lLiBjbGlja2luZyBvbiBhIGZvcm0gcmVzdWx0cyBpbiBBQ1RfSElUXHJcbiAgICAgIE1hbmFnZXIuRXZlbnRzTWFuYWdlci5hZGRHdWlUcmlnZ2VyZWRFdmVudFdpdGhUYXNrQW5kQ29kZUFuZE9uTXVsdGlNYXJrKCg8TWdGb3JtQmFzZT5ndWlNZ0Zvcm0pLmdldFRhc2soKSwgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0hJVCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgaWYgKG1nQ29udHJvbC5pc1N1YmZvcm0oKSkge1xyXG4gICAgICAgIG1nQ29udHJvbC5PblN1YmZvcm1DbGljaygpO1xyXG4gICAgICB9XHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIGlmIChtZ0NvbnRyb2wuUmFpc2VDb250cm9sSGl0T25Nb3VzZURvd24obGVmdENsaWNrV2FzUHJlc3NlZCkpIHtcclxuICAgICAgICAgIE1hbmFnZXIuRXZlbnRzTWFuYWdlci5hZGRHdWlUcmlnZ2VyZWRFdmVudFdpdGhDdHJsQW5kQ29kZUFuZExpbmUobWdDb250cm9sLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfQ1RSTF9ISVQsIGxpbmUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobGVmdENsaWNrV2FzUHJlc3NlZCAmJiBjYW5Qcm9kdWNlQ2xpY2spIHtcclxuICAgICAgICAgIC8vIGZpeGVkIGJ1ZyM5Mjc5NDJcclxuICAgICAgICAgIC8vIHdlIG5ldmVyIGdldCB0byB0aGlzIG1ldGhvZCB3aXRoIHRoZSBjb250cm9sIHR5cGUgYnV0dG9uICYgY2hlY2tib3guXHJcbiAgICAgICAgICAvLyBmb3IgYnV0dG9uICYgY2hlY2tib3gsIHdlIHNlbnQgdGhlIHRyaWdnZXIgTUdfQUNUX1dFQl9DTElDSyBpbiBFdmVudHNNYW5hZ2VyLmhhbmRsZU1vdXNlVXAoKSB0aGF0IGNhbGxcclxuICAgICAgICAgIC8vIGZyb20gc2ltdWxhdGVTZWxlY3Rpb24oKVxyXG4gICAgICAgICAgLy8gdGhlIFwiaWZcIiBpcyBvbmx5IGZvciBtYWtlIHN1cmUgdGhhdCBpZiB3ZSB3aWxsIGdldCBpdCAoaW4gdGhlIGZldHVyZSkgd2Ugd2lsbCBub3QgYmUgc2VudCB0aGUgc2FtZSB0cmlnZ2VyIHR3aWNlXHJcbiAgICAgICAgICBpZiAobWdDb250cm9sLlR5cGUgIT09IE1nQ29udHJvbFR5cGUuQ1RSTF9UWVBFX0JVVFRPTiAmJiBtZ0NvbnRyb2wuVHlwZSAhPT0gTWdDb250cm9sVHlwZS5DVFJMX1RZUEVfQ0hFQ0tCT1gpIHtcclxuICAgICAgICAgICAgTWFuYWdlci5FdmVudHNNYW5hZ2VyLmFkZEd1aVRyaWdnZXJlZEV2ZW50V2l0aEN0cmxBbmRDb2RlQW5kTGluZShtZ0NvbnRyb2wsIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9XRUJfQ0xJQ0ssIGxpbmUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PnByb2Nlc3MgXCJkYmxjbGlja1wiIGV2ZW50PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZ3VpTWdDdHJsXCI+dGhlIGNvbnRyb2wgPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImxpbmVcIj4gdGhlIGxpbmUgb2YgdGhlIG11bHRpbGluZSBjb250cm9sIDwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBwcm9jZXNzRGJsQ2xpY2soZ3VpTWdDdHJsOiBHdWlNZ0NvbnRyb2wsIGxpbmU6IG51bWJlcik6IHZvaWQge1xyXG4gICAgbGV0IG1nQ29udHJvbDogTWdDb250cm9sQmFzZSA9IDxNZ0NvbnRyb2xCYXNlPmd1aU1nQ3RybDtcclxuICAgIGlmICghbWdDb250cm9sLkdldENvbXB1dGVkQm9vbGVhblByb3BlcnR5KFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0VOQUJMRUQsIHRydWUsIGxpbmUpKVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgLy8gcmFpc2luZyB0aGUgaW50ZXJuYWwgZXZlbnRzIDogTUdfQUNUX1NFTEVDVCBhbmQgTUdfQUNUX1pPT00gd2FzIG1vdmVkIHRvIGNvbW1vbkhhbmRsZXIgdW5kZXIgdGhlXHJcbiAgICAvLyBNR19BQ1RfV0VCX09OX0RCTElDSyBjYXNlLlxyXG4gICAgLy8gVGhpcyBpcyBkaWZmZXJlbnQgdGhlbiB0aGUgYmVoYXZpb3Igb2Ygb25saW5lIGJlY2F1c2Ugd2UgZml4ZWQgUUNSICM5OTA4MzYgb25seSBpbiByaWNoLlxyXG4gICAgLy8gSW4gcmljaCwgMXN0IGRiY2xpY2sgaXMgcmFpc2VkLiBUaGVuIGlmIHRoZXJlIGlzIGEgaGFuZGxlciBvbiBpdCB3aXRoIHByb3BvZ2F0ZSA9J1lFUycsIG9ubHkgdGhlbiB0aGUgem9vbS9zZWxlY3RcclxuICAgIC8vIHdpbGwgYmUgcmFpc2VkLiBBIFByb3BhZ2F0ZSAnTk8nIHdpbGwgYmxvY2sgdGhlbS5cclxuXHJcbiAgICBNYW5hZ2VyLkV2ZW50c01hbmFnZXIuYWRkR3VpVHJpZ2dlcmVkRXZlbnRXaXRoQ3RybEFuZENvZGVBbmRMaW5lKG1nQ29udHJvbCwgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1dFQl9PTl9EQkxJQ0ssIGxpbmUpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBoYW5kbGUgQ29sdW1uIENsaWNrIGV2ZW50IG9uIENvbHVtbiA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpQ29sdW1uQ3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZGlyZWN0aW9uXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJjb2x1bW5IZWFkZXJcIj48L3BhcmFtPlxyXG4gIHByaXZhdGUgUHJvY2Vzc0NvbHVtbkNsaWNrKGd1aUNvbHVtbkN0cmw6IEd1aU1nQ29udHJvbCwgZGlyZWN0aW9uOiBudW1iZXIsIGNvbHVtbkhlYWRlcjogc3RyaW5nKTogdm9pZCB7XHJcbiAgICBsZXQgbWdDb2x1bW5Db250cm9sOiBNZ0NvbnRyb2xCYXNlID0gPE1nQ29udHJvbEJhc2U+Z3VpQ29sdW1uQ3RybDtcclxuICAgIE1hbmFnZXIuRXZlbnRzTWFuYWdlci5BZGRDb2x1bW5DbGlja0V2ZW50KG1nQ29sdW1uQ29udHJvbCwgZGlyZWN0aW9uLCBjb2x1bW5IZWFkZXIpO1xyXG4gIH1cclxuXHJcblxyXG59XHJcbiJdfQ==
|
|
67
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXZlbnRzUHJvY2Vzc29yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZ3VpL3NyYy9FdmVudHNQcm9jZXNzb3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLEtBQUssRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQzNDLE9BQU8sRUFBQyxpQkFBaUIsRUFBRSxhQUFhLEVBQUMsTUFBTSxrQkFBa0IsQ0FBQztBQUVsRSxPQUFPLEVBQUMsTUFBTSxFQUFDLE1BQU0sVUFBVSxDQUFDO0FBR2hDLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxXQUFXLENBQUM7QUFFbEMsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLDZCQUE2QixDQUFDO0FBQ3ZELE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQU03RCxNQUFNLE9BQWlCLGVBQWU7SUFDcEM7UUFDRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztRQUN4QixJQUFJLENBQUMsd0JBQXdCLEVBQUUsQ0FBQztJQUNsQyxDQUFDO0lBR08sZ0JBQWdCO1FBQ3RCLE1BQU0sQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFckQsTUFBTSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDOUMsTUFBTSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDO1FBQzVDLE1BQU0sQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDO1FBRTlDLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUM7SUFDcEQsQ0FBQztJQXFCRCxjQUFjLENBQUMsU0FBb0IsRUFBRSxTQUF1QixFQUFFLFFBQW1CLEVBQUUsT0FBZSxFQUFFLEtBQWEsRUFBRSxHQUFXLEVBQUUsSUFBWSxFQUFFLFNBQWtCLEVBQUUs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QUFDLENBQUM7SUFDdEYsQ0FBQztDQUdGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEZWJ1Z30gZnJvbSAnQG1hZ2ljLXhwYS9tc2NvcmVsaWInO1xyXG5pbXBvcnQge0ludGVybmFsSW50ZXJmYWNlLCBNZ0NvbnRyb2xUeXBlfSBmcm9tICdAbWFnaWMteHBhL3V0aWxzJztcclxuaW1wb3J0IHtHdWlNZ0Zvcm19IGZyb20gJy4vZ3VpL0d1aU1nRm9ybSc7XHJcbmltcG9ydCB7RXZlbnRzfSBmcm9tICcuL0V2ZW50cyc7XHJcbmltcG9ydCB7R3VpTWdDb250cm9sfSBmcm9tICcuL2d1aS9HdWlNZ0NvbnRyb2wnO1xyXG5pbXBvcnQge01nQ29udHJvbEJhc2V9IGZyb20gJy4vbWFuYWdlbWVudC9ndWkvTWdDb250cm9sQmFzZSc7XHJcbmltcG9ydCB7TWFuYWdlcn0gZnJvbSAnLi9NYW5hZ2VyJztcclxuaW1wb3J0IHtNb2RpZmllcnN9IGZyb20gJy4vR3VpRW51bXMnO1xyXG5pbXBvcnQge01nRm9ybUJhc2V9IGZyb20gJy4vbWFuYWdlbWVudC9ndWkvTWdGb3JtQmFzZSc7XHJcbmltcG9ydCB7UHJvcEludGVyZmFjZX0gZnJvbSAnLi9tYW5hZ2VtZW50L2d1aS9Qcm9wSW50ZXJmYWNlJztcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vICgxKSByZWdpc3RlcnMgYW5kIGltcGxlbWVudHMgaGFuZGxlcnMgZm9yIGV2ZW50cyB0aGF0IGNhbiBiZSBzZXJ2ZWQgbG9jYWxseSBieSBNZ0d1aS5kbGwuXHJcbi8vLyAoMikgcmVxdWVzdHMgc3ViY2xhc3NlcyB0byByZWdpc3RlciB0aGVpciBoYW5kbGVycyAoJ1RlbXBsYXRlIE1ldGhvZCcgZGVzaWduIHBhdHRlcm4pLlxyXG4vLy8gPC9zdW1tYXJ5PlxyXG5leHBvcnQgIGFic3RyYWN0IGNsYXNzIEV2ZW50c1Byb2Nlc3NvciB7XHJcbiAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB0aGlzLlJlZ2lzdGVySGFuZGxlcnMoKTtcclxuICAgIHRoaXMuUmVnaXN0ZXJTdWJjbGFzc0hhbmRsZXJzKCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cmVnaXN0ZXIgYW5kIGltcGxlbWVudCBoYW5kbGVycyBmb3IgZXZlbnRzIHRoYXQgY2FuIGJlIHNlcnZlZCBsb2NhbGx5IGJ5IE1nR3VpLmRsbC48L3N1bW1hcnk+XHJcbiAgcHJpdmF0ZSBSZWdpc3RlckhhbmRsZXJzKCk6IHZvaWQge1xyXG4gICAgRXZlbnRzLktleURvd25FdmVudCA9IHRoaXMucHJvY2Vzc0tleURvd24uYmluZCh0aGlzKTtcclxuXHJcbiAgICBFdmVudHMuTW91c2VEb3duRXZlbnQgPSB0aGlzLnByb2Nlc3NNb3VzZURvd247XHJcbiAgICBFdmVudHMuRGJsQ2xpY2tFdmVudCA9IHRoaXMucHJvY2Vzc0RibENsaWNrO1xyXG4gICAgRXZlbnRzLkNsb3NlRm9ybUV2ZW50ID0gdGhpcy5wcm9jZXNzRm9ybUNsb3NlO1xyXG5cclxuICAgIEV2ZW50cy5Db2x1bW5DbGlja0V2ZW50ID0gdGhpcy5Qcm9jZXNzQ29sdW1uQ2xpY2s7XHJcbiAgfVxyXG5cclxuICAvLyByZXF1ZXN0IHN1YmNsYXNzZXMgdG8gcmVnaXN0ZXIgaGFuZGxlcnMgdGhhdCB0aGV5IHdpbGwgaW1wbGVtZW50ICgnVGVtcGxhdGUgTWV0aG9kJyBkZXNpZ24gcGF0dGVybikuXHJcbiAgYWJzdHJhY3QgUmVnaXN0ZXJTdWJjbGFzc0hhbmRsZXJzKCk7XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5QYXNzIGtleWNvZGUgYW5kIG1vZGlmaWVyIHRvIGJyaWRnZSwgYnJpZGdlIHRoZW4gY29udmVydHMgaXQgdG8ga2V5Ym9hcmQgYWN0aW9uIGFuZCBhZGRzIGluIE1nQ29yZS5kbGxcclxuICAvLy8gZXZlbnRzIHF1ZXVlPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImZvcm1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImd1aU1nQ3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwibW9kaWZpZXJcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImtleUNvZGVcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cInN0YXJ0XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJlbmRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNhcmV0UG9zXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJ0ZXh0XCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJpbVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiaXNBY3RDaGFyXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJzdWdnZXN0ZWRWYWx1ZVwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiQ29tYm9Jc0Ryb3BEb3duXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJoYW5kbGVkXCI+Ym9vbGVhbiB2YXJpYWJsZSBldmVudCBpcyBoYW5kbGVkIG9yIG5vdC48L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gdHJ1ZSBvbmx5IGlmIHdlIGhhdmUgaGFuZGxlZCB0aGUgS2V5RG93biBldmVudCAob3RoZXJ3aXNlIHRoZSBDTFIgc2hvdWxkIGhhbmRsZSkuIElmIHRydWUgbWFnaWMgd2lsbCBoYW5kbGUgZWxzZSBDTFIgd2lsbCBoYW5kbGUuPC9yZXR1cm5zPlxyXG4gIHByb2Nlc3NLZXlEb3duKGd1aU1nRm9ybTogR3VpTWdGb3JtLCBndWlNZ0N0cmw6IEd1aU1nQ29udHJvbCwgbW9kaWZpZXI6IE1vZGlmaWVycywga2V5Q29kZTogbnVtYmVyLCBzdGFydDogbnVtYmVyLCBlbmQ6IG51bWJlciwgdGV4dDogc3RyaW5nLCBpc0FjdENoYXI6IGJvb2xlYW4sIHN1Z2dlc3RlZFZhbHVlOiBzdHJpbmcsIGhhbmRsZWQ6IGJvb2xlYW4pOiBib29sZWFuIHtcclxuICAgIGxldCBldmVudEhhbmRsZWQ6IGJvb2xlYW4gPSBoYW5kbGVkO1xyXG5cclxuICAgIGxldCBtZ0NvbnRyb2xCYXNlOiBNZ0NvbnRyb2xCYXNlID0gPE1nQ29udHJvbEJhc2U+Z3VpTWdDdHJsO1xyXG4gICAgbGV0IG1nRm9ybUJhc2U6IE1nRm9ybUJhc2UgPSA8TWdGb3JtQmFzZT5ndWlNZ0Zvcm07XHJcblxyXG4gICAgTWFuYWdlci5FdmVudHNNYW5hZ2VyLkFkZEtleWJvYXJkRXZlbnQobWdGb3JtQmFzZSwgbWdDb250cm9sQmFzZSwgbW9kaWZpZXIsIGtleUNvZGUsIHN0YXJ0LCBlbmQsIHRleHQsIGlzQWN0Q2hhciwgc3VnZ2VzdGVkVmFsdWUsIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX0tFWURPV04pO1xyXG5cclxuICAgIHJldHVybiBldmVudEhhbmRsZWQ7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBGdW5jdGlvbiBoYW5kbGluZyBmb3JtIGNsb3NlIGV2ZW50LlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lPVwiZ3VpTWdGb3JtXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+dHJ1ZSBpZiBldmVudCBpcyBDTFIgaGFuZGxlZCBlbHNlIGZhbHNlLjwvcmV0dXJucz5cclxuICBwcm9jZXNzRm9ybUNsb3NlKGd1aU1nRm9ybTogR3VpTWdGb3JtKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgY2xySGFuZGxlZEV2ZW50OiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsZXQgbWdGb3JtQmFzZTogTWdGb3JtQmFzZSA9IDxNZ0Zvcm1CYXNlPmd1aU1nRm9ybTtcclxuXHJcbiAgICBpZiAoTWdGb3JtQmFzZS5TaG91bGRQdXRBY3RPbkZvcm1DbG9zZSgpKVxyXG4gICAgICBNYW5hZ2VyLkV2ZW50c01hbmFnZXIuYWRkR3VpVHJpZ2dlcmVkRXZlbnRUYXNrQW5kQ29kZUFuZFJhaXNlZEJ5KG1nRm9ybUJhc2UuZ2V0VGFzaygpLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSElUKTtcclxuICAgIE1hbmFnZXIuRXZlbnRzTWFuYWdlci5hZGRHdWlUcmlnZ2VyZWRFdmVudFdpdGhUYXNrQW5kQ29kZShtZ0Zvcm1CYXNlLmdldFRhc2soKSwgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX0NMT1NFKTtcclxuXHJcbiAgICByZXR1cm4gY2xySGFuZGxlZEV2ZW50O1xyXG4gIH1cclxuXHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+PC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZ3VpTWdGb3JtXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImd1aU1nQ3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJkb3ROZXRBcmdzXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcImxlZnRDbGlja1dhc1ByZXNzZWRcIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibGluZVwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBwcm9jZXNzTW91c2VEb3duKGd1aU1nRm9ybTogR3VpTWdGb3JtLCBndWlNZ0N0cmw6IEd1aU1nQ29udHJvbCwgZG90TmV0QXJnczogYW55W10sIGxlZnRDbGlja1dhc1ByZXNzZWQ6IGJvb2xlYW4sIGxpbmU6IG51bWJlciwgb25NdWx0aU1hcms6IGJvb2xlYW4sIGNhblByb2R1Y2VDbGljazogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgbGV0IG1nQ29udHJvbDogTWdDb250cm9sQmFzZSA9IDxNZ0NvbnRyb2xCYXNlPmd1aU1nQ3RybDtcclxuXHJcbiAgICBpZiAobWdDb250cm9sID09PSBudWxsKSB7XHJcbiAgICAgIERlYnVnLkFzc2VydChndWlNZ0Zvcm0gIT09IG51bGwpO1xyXG4gICAgICAvLyBBcyBpbiBvbmxpbmUuIGNsaWNraW5nIG9uIGEgZm9ybSByZXN1bHRzIGluIEFDVF9ISVRcclxuICAgICAgTWFuYWdlci5FdmVudHNNYW5hZ2VyLmFkZEd1aVRyaWdnZXJlZEV2ZW50V2l0aFRhc2tBbmRDb2RlQW5kT25NdWx0aU1hcmsoKDxNZ0Zvcm1CYXNlPmd1aU1nRm9ybSkuZ2V0VGFzaygpLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfSElUKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICBpZiAobWdDb250cm9sLmlzU3ViZm9ybSgpKSB7XHJcbiAgICAgICAgbWdDb250cm9sLk9uU3ViZm9ybUNsaWNrKCk7XHJcbiAgICAgIH1cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKG1nQ29udHJvbC5SYWlzZUNvbnRyb2xIaXRPbk1vdXNlRG93bihsZWZ0Q2xpY2tXYXNQcmVzc2VkKSkge1xyXG4gICAgICAgICAgTWFuYWdlci5FdmVudHNNYW5hZ2VyLmFkZEd1aVRyaWdnZXJlZEV2ZW50V2l0aEN0cmxBbmRDb2RlQW5kTGluZShtZ0NvbnRyb2wsIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX0hJVCwgbGluZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChsZWZ0Q2xpY2tXYXNQcmVzc2VkICYmIGNhblByb2R1Y2VDbGljaykge1xyXG4gICAgICAgICAgLy8gZml4ZWQgYnVnIzkyNzk0MlxyXG4gICAgICAgICAgLy8gd2UgbmV2ZXIgZ2V0IHRvIHRoaXMgbWV0aG9kIHdpdGggdGhlIGNvbnRyb2wgdHlwZSBidXR0b24gJiBjaGVja2JveC5cclxuICAgICAgICAgIC8vIGZvciBidXR0b24gJiBjaGVja2JveCwgd2Ugc2VudCB0aGUgdHJpZ2dlciBNR19BQ1RfV0VCX0NMSUNLIGluIEV2ZW50c01hbmFnZXIuaGFuZGxlTW91c2VVcCgpIHRoYXQgY2FsbFxyXG4gICAgICAgICAgLy8gZnJvbSBzaW11bGF0ZVNlbGVjdGlvbigpXHJcbiAgICAgICAgICAvLyB0aGUgXCJpZlwiIGlzIG9ubHkgZm9yIG1ha2Ugc3VyZSB0aGF0IGlmIHdlIHdpbGwgZ2V0IGl0IChpbiB0aGUgZmV0dXJlKSB3ZSB3aWxsIG5vdCBiZSBzZW50IHRoZSBzYW1lIHRyaWdnZXIgdHdpY2VcclxuICAgICAgICAgIGlmIChtZ0NvbnRyb2wuVHlwZSAhPT0gTWdDb250cm9sVHlwZS5DVFJMX1RZUEVfQlVUVE9OICYmIG1nQ29udHJvbC5UeXBlICE9PSBNZ0NvbnRyb2xUeXBlLkNUUkxfVFlQRV9DSEVDS0JPWCkge1xyXG4gICAgICAgICAgICBNYW5hZ2VyLkV2ZW50c01hbmFnZXIuYWRkR3VpVHJpZ2dlcmVkRXZlbnRXaXRoQ3RybEFuZENvZGVBbmRMaW5lKG1nQ29udHJvbCwgSW50ZXJuYWxJbnRlcmZhY2UuTUdfQUNUX1dFQl9DTElDSywgbGluZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+cHJvY2VzcyBcImRibGNsaWNrXCIgZXZlbnQ8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJndWlNZ0N0cmxcIj50aGUgY29udHJvbCA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwibGluZVwiPiB0aGUgbGluZSBvZiB0aGUgbXVsdGlsaW5lIGNvbnRyb2wgPC9wYXJhbT5cclxuICBwcml2YXRlIHByb2Nlc3NEYmxDbGljayhndWlNZ0N0cmw6IEd1aU1nQ29udHJvbCwgbGluZTogbnVtYmVyKTogdm9pZCB7XHJcbiAgICBsZXQgbWdDb250cm9sOiBNZ0NvbnRyb2xCYXNlID0gPE1nQ29udHJvbEJhc2U+Z3VpTWdDdHJsO1xyXG4gICAgaWYgKCFtZ0NvbnRyb2wuR2V0Q29tcHV0ZWRCb29sZWFuUHJvcGVydHkoUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfRU5BQkxFRCwgdHJ1ZSwgbGluZSkpXHJcbiAgICAgIHJldHVybjtcclxuXHJcbiAgICAvLyByYWlzaW5nIHRoZSBpbnRlcm5hbCBldmVudHMgOiBNR19BQ1RfU0VMRUNUIGFuZCBNR19BQ1RfWk9PTSB3YXMgbW92ZWQgdG8gY29tbW9uSGFuZGxlciB1bmRlciB0aGVcclxuICAgIC8vIE1HX0FDVF9XRUJfT05fREJMSUNLIGNhc2UuXHJcbiAgICAvLyBUaGlzIGlzIGRpZmZlcmVudCB0aGVuIHRoZSBiZWhhdmlvciBvZiBvbmxpbmUgYmVjYXVzZSB3ZSBmaXhlZCBRQ1IgIzk5MDgzNiBvbmx5IGluIHJpY2guXHJcbiAgICAvLyBJbiByaWNoLCAxc3QgZGJjbGljayBpcyByYWlzZWQuIFRoZW4gaWYgdGhlcmUgaXMgYSBoYW5kbGVyIG9uIGl0IHdpdGggcHJvcG9nYXRlID0nWUVTJywgb25seSB0aGVuIHRoZSB6b29tL3NlbGVjdFxyXG4gICAgLy8gd2lsbCBiZSByYWlzZWQuIEEgUHJvcGFnYXRlICdOTycgd2lsbCBibG9jayB0aGVtLlxyXG5cclxuICAgIE1hbmFnZXIuRXZlbnRzTWFuYWdlci5hZGRHdWlUcmlnZ2VyZWRFdmVudFdpdGhDdHJsQW5kQ29kZUFuZExpbmUobWdDb250cm9sLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfV0VCX09OX0RCTElDSywgbGluZSk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IGhhbmRsZSBDb2x1bW4gQ2xpY2sgZXZlbnQgb24gQ29sdW1uIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJndWlDb2x1bW5DdHJsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJkaXJlY3Rpb25cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImNvbHVtbkhlYWRlclwiPjwvcGFyYW0+XHJcbiAgcHJpdmF0ZSBQcm9jZXNzQ29sdW1uQ2xpY2soZ3VpQ29sdW1uQ3RybDogR3VpTWdDb250cm9sLCBkaXJlY3Rpb246IG51bWJlciwgY29sdW1uSGVhZGVyOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIGxldCBtZ0NvbHVtbkNvbnRyb2w6IE1nQ29udHJvbEJhc2UgPSA8TWdDb250cm9sQmFzZT5ndWlDb2x1bW5DdHJsO1xyXG4gICAgTWFuYWdlci5FdmVudHNNYW5hZ2VyLkFkZENvbHVtbkNsaWNrRXZlbnQobWdDb2x1bW5Db250cm9sLCBkaXJlY3Rpb24sIGNvbHVtbkhlYWRlcik7XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIl19
|